suricata
ippair.c File Reference
#include "suricata-common.h"
#include "conf.h"
#include "util-debug.h"
#include "ippair.h"
#include "ippair-storage.h"
#include "util-random.h"
#include "util-misc.h"
#include "util-byte.h"
#include "util-validate.h"
#include "ippair-queue.h"
#include "detect-tag.h"
#include "detect-engine-tag.h"
#include "detect-engine-threshold.h"
#include "util-hash-lookup3.h"
Include dependency graph for ippair.c:

Go to the source code of this file.

Macros

#define IPPAIR_DEFAULT_HASHSIZE   4096
 
#define IPPAIR_DEFAULT_MEMCAP   16777216
 
#define IPPAIR_DEFAULT_PREALLOC   1000
 

Functions

 SC_ATOMIC_DECLARE (uint64_t, ippair_memuse)
 
 SC_ATOMIC_DECLARE (uint32_t, ippair_counter)
 
 SC_ATOMIC_DECLARE (uint32_t, ippair_prune_idx)
 
int IPPairSetMemcap (uint64_t size)
 Update memcap value.
 
uint64_t IPPairGetMemcap (void)
 Return memcap value.
 
uint64_t IPPairGetMemuse (void)
 Return memuse value.
 
void IPPairMoveToSpare (IPPair *h)
 
IPPairIPPairAlloc (void)
 
void IPPairFree (IPPair *h)
 
void IPPairClearMemory (IPPair *h)
 
void IPPairInitConfig (bool quiet)
 initialize the configuration
 
void IPPairPrintStats (void)
 print some ippair stats
 
void IPPairShutdown (void)
 shutdown the flow engine
 
void IPPairCleanup (void)
 Cleanup the ippair engine.
 
void IPPairRelease (IPPair *h)
 
void IPPairUnlock (IPPair *h)
 
IPPairIPPairGetIPPairFromHash (Address *a, Address *b)
 
IPPairIPPairLookupIPPairFromHash (Address *a, Address *b)
 look up a ippair in the hash
 
void IPPairRegisterUnittests (void)
 

Variables

IPPairHashRow * ippair_hash
 
IPPairConfig ippair_config
 

Detailed Description

Author
Victor Julien victo.nosp@m.r@in.nosp@m.linia.nosp@m.c.ne.nosp@m.t

Information about ippairs.

Definition in file ippair.c.

Macro Definition Documentation

◆ IPPAIR_DEFAULT_HASHSIZE

#define IPPAIR_DEFAULT_HASHSIZE   4096

Definition at line 156 of file ippair.c.

◆ IPPAIR_DEFAULT_MEMCAP

#define IPPAIR_DEFAULT_MEMCAP   16777216

Definition at line 157 of file ippair.c.

◆ IPPAIR_DEFAULT_PREALLOC

#define IPPAIR_DEFAULT_PREALLOC   1000

Definition at line 158 of file ippair.c.

Function Documentation

◆ IPPairAlloc()

IPPair * IPPairAlloc ( void  )

Definition at line 104 of file ippair.c.

References IPPAIR_CHECK_MEMCAP, IPPair_::m, SC_ATOMIC_ADD, SC_ATOMIC_INIT, SCCalloc, SCMutexInit, and unlikely.

Referenced by IPPairInitConfig().

Here is the caller graph for this function:

◆ IPPairCleanup()

void IPPairCleanup ( void  )

Cleanup the ippair engine.

Cleanup the ippair engine from tag and threshold.

Definition at line 327 of file ippair.c.

References IPPairConfig_::hash_size, IPPair_::hnext, IPPair_::hprev, HRLOCK_LOCK, HRLOCK_UNLOCK, ippair_config, ippair_hash, IPPairClearMemory(), IPPairFreeStorage(), IPPairMoveToSpare(), and SC_ATOMIC_GET.

Here is the call graph for this function:

◆ IPPairClearMemory()

void IPPairClearMemory ( IPPair h)

Definition at line 150 of file ippair.c.

References IPPairFreeStorage(), and IPPairStorageSize().

Referenced by IPPairCleanup(), and IPPairFree().

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

◆ IPPairFree()

void IPPairFree ( IPPair h)

Definition at line 124 of file ippair.c.

References IPPairClearMemory(), IPPair_::m, SC_ATOMIC_SUB, SCFree, and SCMutexDestroy.

Referenced by IPPairShutdown().

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

◆ IPPairGetIPPairFromHash()

IPPair * IPPairGetIPPairFromHash ( Address a,
Address b 
)

Definition at line 521 of file ippair.c.

References IPPair_::hnext, IPPair_::hprev, HRLOCK_LOCK, HRLOCK_UNLOCK, ippair_hash, IPPairIncrUsecnt, IPPair_::m, and SCMutexLock.

Referenced by AppLayerExpectationCreate().

Here is the caller graph for this function:

◆ IPPairGetMemcap()

uint64_t IPPairGetMemcap ( void  )

Return memcap value.

Return values
memcapvalue

Definition at line 81 of file ippair.c.

References ippair_config, and SC_ATOMIC_GET.

◆ IPPairGetMemuse()

uint64_t IPPairGetMemuse ( void  )

Return memuse value.

Return values
memusevalue

Definition at line 92 of file ippair.c.

References SC_ATOMIC_GET.

Referenced by AppLayerRegisterGlobalCounters().

Here is the caller graph for this function:

◆ IPPairInitConfig()

void IPPairInitConfig ( bool  quiet)

◆ IPPairLookupIPPairFromHash()

IPPair * IPPairLookupIPPairFromHash ( Address a,
Address b 
)

look up a ippair in the hash

Parameters
aaddress to look up
Return values
hLOCKED ippair or NULL

Definition at line 620 of file ippair.c.

References IPPair_::hnext, IPPair_::hprev, HRLOCK_LOCK, HRLOCK_UNLOCK, ippair_hash, IPPairIncrUsecnt, IPPair_::m, and SCMutexLock.

◆ IPPairMoveToSpare()

void IPPairMoveToSpare ( IPPair h)

Definition at line 98 of file ippair.c.

References IPPairEnqueue(), and SC_ATOMIC_SUB.

Referenced by IPPairCleanup().

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

◆ IPPairPrintStats()

void IPPairPrintStats ( void  )

print some ippair stats

Warning
Not thread safe

Definition at line 278 of file ippair.c.

References ippair_config, SC_ATOMIC_GET, and SCLogPerf.

Referenced by IPPairShutdown().

Here is the caller graph for this function:

◆ IPPairRegisterUnittests()

void IPPairRegisterUnittests ( void  )

Definition at line 752 of file ippair.c.

References RegisterIPPairStorageTests().

Here is the call graph for this function:

◆ IPPairRelease()

void IPPairRelease ( IPPair h)

Definition at line 502 of file ippair.c.

References IPPairDecrUsecnt, IPPair_::m, and SCMutexUnlock.

Referenced by AppLayerExpectationClean(), AppLayerExpectationCreate(), and AppLayerExpectationHandle().

Here is the caller graph for this function:

◆ IPPairSetMemcap()

int IPPairSetMemcap ( uint64_t  size)

Update memcap value.

Parameters
sizenew memcap value

Definition at line 66 of file ippair.c.

References ippair_config, SC_ATOMIC_GET, and SC_ATOMIC_SET.

◆ IPPairShutdown()

void IPPairShutdown ( void  )

shutdown the flow engine

Warning
Not thread safe

Definition at line 290 of file ippair.c.

References BUG_ON, IPPairConfig_::hash_size, IPPair_::hnext, HRLOCK_DESTROY, ippair_config, ippair_hash, IPPairDequeue(), IPPairFree(), IPPairPrintStats(), IPPairQueueDestroy(), SC_ATOMIC_GET, SC_ATOMIC_SUB, and SCFreeAligned.

Referenced by PostRunDeinit().

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

◆ IPPairUnlock()

void IPPairUnlock ( IPPair h)

Definition at line 508 of file ippair.c.

References IPPair_::m, and SCMutexUnlock.

Referenced by AppLayerExpectationCreate().

Here is the caller graph for this function:

◆ SC_ATOMIC_DECLARE() [1/3]

SC_ATOMIC_DECLARE ( uint32_t  ,
ippair_counter   
)

◆ SC_ATOMIC_DECLARE() [2/3]

SC_ATOMIC_DECLARE ( uint32_t  ,
ippair_prune_idx   
)

◆ SC_ATOMIC_DECLARE() [3/3]

SC_ATOMIC_DECLARE ( uint64_t  ,
ippair_memuse   
)

Variable Documentation

◆ ippair_config

◆ ippair_hash

IPPairHashRow* ippair_hash