file: clean up file flags handling

pull/7957/head
Victor Julien 4 years ago
parent 408b64558f
commit 2218a3716e

@ -139,6 +139,9 @@ typedef struct AppLayerParserState_ AppLayerParserState;
#define FLOWFILE_NO_SIZE_TS BIT_U16(10)
#define FLOWFILE_NO_SIZE_TC BIT_U16(11)
/** store all files in the flow */
#define FLOWFILE_STORE BIT_U16(12)
#define FLOWFILE_NONE_TS (FLOWFILE_NO_MAGIC_TS | \
FLOWFILE_NO_STORE_TS | \
FLOWFILE_NO_MD5_TS | \

@ -230,54 +230,65 @@ void FileForceHashParseCfg(ConfNode *conf)
}
}
uint16_t FileFlowToFlags(const Flow *flow, uint8_t direction)
uint16_t FileFlowFlagsToFlags(const uint16_t flow_file_flags, uint8_t direction)
{
uint16_t flags = 0;
if (direction == STREAM_TOSERVER) {
if (flow->file_flags & FLOWFILE_NO_STORE_TS) {
if ((flow_file_flags & (FLOWFILE_NO_STORE_TS | FLOWFILE_STORE)) == FLOWFILE_NO_STORE_TS) {
flags |= FILE_NOSTORE;
}
if (flow->file_flags & FLOWFILE_NO_MAGIC_TS) {
if (flow_file_flags & FLOWFILE_NO_MAGIC_TS) {
flags |= FILE_NOMAGIC;
}
if (flow->file_flags & FLOWFILE_NO_MD5_TS) {
if (flow_file_flags & FLOWFILE_NO_MD5_TS) {
flags |= FILE_NOMD5;
}
if (flow->file_flags & FLOWFILE_NO_SHA1_TS) {
if (flow_file_flags & FLOWFILE_NO_SHA1_TS) {
flags |= FILE_NOSHA1;
}
if (flow->file_flags & FLOWFILE_NO_SHA256_TS) {
if (flow_file_flags & FLOWFILE_NO_SHA256_TS) {
flags |= FILE_NOSHA256;
}
} else {
if (flow->file_flags & FLOWFILE_NO_STORE_TC) {
if ((flow_file_flags & (FLOWFILE_NO_STORE_TC | FLOWFILE_STORE)) == FLOWFILE_NO_STORE_TC) {
flags |= FILE_NOSTORE;
}
if (flow->file_flags & FLOWFILE_NO_MAGIC_TC) {
if (flow_file_flags & FLOWFILE_NO_MAGIC_TC) {
flags |= FILE_NOMAGIC;
}
if (flow->file_flags & FLOWFILE_NO_MD5_TC) {
if (flow_file_flags & FLOWFILE_NO_MD5_TC) {
flags |= FILE_NOMD5;
}
if (flow->file_flags & FLOWFILE_NO_SHA1_TC) {
if (flow_file_flags & FLOWFILE_NO_SHA1_TC) {
flags |= FILE_NOSHA1;
}
if (flow->file_flags & FLOWFILE_NO_SHA256_TC) {
if (flow_file_flags & FLOWFILE_NO_SHA256_TC) {
flags |= FILE_NOSHA256;
}
}
if (flow_file_flags & FLOWFILE_STORE) {
flags |= FILE_STORE;
}
DEBUG_VALIDATE_BUG_ON((flags & (FILE_STORE | FILE_NOSTORE)) == (FILE_STORE | FILE_NOSTORE));
SCLogDebug("direction %02x flags %02x", direction, flags);
return flags;
}
uint16_t FileFlowToFlags(const Flow *flow, uint8_t direction)
{
return FileFlowFlagsToFlags(flow->file_flags, direction);
}
static int FileMagicSize(void)
{
/** \todo make this size configurable */

@ -251,6 +251,7 @@ void FileTruncateAllOpenFiles(FileContainer *);
uint64_t FileDataSize(const File *file);
uint64_t FileTrackedSize(const File *file);
uint16_t FileFlowFlagsToFlags(const uint16_t flow_file_flags, uint8_t direction);
uint16_t FileFlowToFlags(const Flow *flow, uint8_t direction);
#ifdef DEBUG

Loading…
Cancel
Save