suricata
util-macset.c File Reference
#include "suricata-common.h"
#include "suricata.h"
#include "flow-util.h"
#include "flow-private.h"
#include "flow-storage.h"
#include "util-macset.h"
#include "util-unittest.h"
#include "util-unittest-helper.h"
#include "conf.h"
Include dependency graph for util-macset.c:

Go to the source code of this file.

Data Structures

struct  MacSet_
 

Typedefs

typedef uint8_t MacAddr[6]
 

Enumerations

enum  MacSetState { EMPTY_SET , SINGLE_MAC , MULTI_MAC }
 

Functions

void MacSetRegisterFlowStorage (void)
 
bool MacSetFlowStorageEnabled (void)
 
MacSetMacSetInit (int size)
 
FlowStorageId MacSetGetFlowStorageID (void)
 
void MacSetAddWithCtr (MacSet *ms, const uint8_t *src_addr, const uint8_t *dst_addr, ThreadVars *tv, uint16_t ctr_src, uint16_t ctr_dst)
 
void MacSetAdd (MacSet *ms, const uint8_t *src_addr, const uint8_t *dst_addr)
 
int MacSetForEach (const MacSet *ms, MacSetIteratorFunc IterFunc, void *data)
 
uint8_t * MacSetGetFirst (const MacSet *ms, MacSetSide side)
 
int MacSetSize (const MacSet *ms)
 
void MacSetFree (MacSet *ms)
 
void MacSetRegisterTests (void)
 

Variables

FlowStorageId g_macset_storage_id = { .id = -1 }
 

Detailed Description

Author
Sascha Steinbiss sasch.nosp@m.a.st.nosp@m.einbi.nosp@m.ss@d.nosp@m.cso.d.nosp@m.e

Set-like data store for MAC addresses. Implemented as array for memory locality reasons as the expected number of items is typically low.

Definition in file util-macset.c.

Typedef Documentation

◆ MacAddr

typedef uint8_t MacAddr[6]

Definition at line 38 of file util-macset.c.

Enumeration Type Documentation

◆ MacSetState

Enumerator
EMPTY_SET 
SINGLE_MAC 
MULTI_MAC 

Definition at line 39 of file util-macset.c.

Function Documentation

◆ MacSetAdd()

void MacSetAdd ( MacSet ms,
const uint8_t *  src_addr,
const uint8_t *  dst_addr 
)

Definition at line 191 of file util-macset.c.

References MacSetAddWithCtr().

Here is the call graph for this function:

◆ MacSetAddWithCtr()

void MacSetAddWithCtr ( MacSet ms,
const uint8_t *  src_addr,
const uint8_t *  dst_addr,
ThreadVars tv,
uint16_t  ctr_src,
uint16_t  ctr_dst 
)

Definition at line 182 of file util-macset.c.

References MAC_SET_DST, MAC_SET_SRC, and tv.

Referenced by MacSetAdd().

Here is the caller graph for this function:

◆ MacSetFlowStorageEnabled()

bool MacSetFlowStorageEnabled ( void  )

Definition at line 86 of file util-macset.c.

References g_macset_storage_id, and FlowStorageId::id.

Referenced by FlowInit().

Here is the caller graph for this function:

◆ MacSetForEach()

int MacSetForEach ( const MacSet ms,
MacSetIteratorFunc  IterFunc,
void *  data 
)

Definition at line 221 of file util-macset.c.

References MAC_SET_DST, and MAC_SET_SRC.

◆ MacSetFree()

void MacSetFree ( MacSet ms)

Definition at line 278 of file util-macset.c.

References MacSet_::buf, MAC_SET_DST, MAC_SET_SRC, SC_ATOMIC_SUB, SCFree, and MacSet_::size.

Referenced by MacSetRegisterFlowStorage().

Here is the caller graph for this function:

◆ MacSetGetFirst()

uint8_t * MacSetGetFirst ( const MacSet ms,
MacSetSide  side 
)

Definition at line 234 of file util-macset.c.

References MacSet_::buf, EMPTY_SET, MULTI_MAC, SINGLE_MAC, MacSet_::singles, and MacSet_::state.

◆ MacSetGetFlowStorageID()

FlowStorageId MacSetGetFlowStorageID ( void  )

Definition at line 115 of file util-macset.c.

References g_macset_storage_id.

Referenced by FlowInit().

Here is the caller graph for this function:

◆ MacSetInit()

MacSet * MacSetInit ( int  size)

Definition at line 92 of file util-macset.c.

References EMPTY_SET, FLOW_CHECK_MEMCAP, MacSet_::last, MAC_SET_DST, MAC_SET_SRC, SC_ATOMIC_ADD, SCCalloc, SCLogError, MacSet_::size, MacSet_::state, and unlikely.

Referenced by FlowInit().

Here is the caller graph for this function:

◆ MacSetRegisterFlowStorage()

void MacSetRegisterFlowStorage ( void  )

Definition at line 62 of file util-macset.c.

References FlowStorageRegister(), g_macset_storage_id, MacSetFree(), next, SCConfGetNode(), SCConfNodeLookupChildValue(), SCConfValIsTrue(), TAILQ_FOREACH, and SCConfNode_::val.

Referenced by PostConfLoadedSetup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MacSetRegisterTests()

void MacSetRegisterTests ( void  )

Definition at line 468 of file util-macset.c.

References UtRegisterTest().

Here is the call graph for this function:

◆ MacSetSize()

int MacSetSize ( const MacSet ms)

Variable Documentation

◆ g_macset_storage_id

FlowStorageId g_macset_storage_id = { .id = -1 }