suricata
ippair.h File Reference
#include "decode.h"
#include "util-storage.h"
Include dependency graph for ippair.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  IPPair_
 
struct  IPPairHashRow_
 
struct  IPPairConfig_
 

Macros

#define HRLOCK_MUTEX
 
#define HRLOCK_TYPE   SCMutex
 
#define HRLOCK_INIT(fb)   SCMutexInit(&(fb)->lock, NULL)
 
#define HRLOCK_DESTROY(fb)   SCMutexDestroy(&(fb)->lock)
 
#define HRLOCK_LOCK(fb)   SCMutexLock(&(fb)->lock)
 
#define HRLOCK_TRYLOCK(fb)   SCMutexTrylock(&(fb)->lock)
 
#define HRLOCK_UNLOCK(fb)   SCMutexUnlock(&(fb)->lock)
 
#define IPPAIR_VERBOSE   0
 
#define IPPAIR_QUIET   1
 
#define IPPAIR_CHECK_MEMCAP(size)   ((((uint64_t)SC_ATOMIC_GET(ippair_memuse) + (uint64_t)(size)) <= SC_ATOMIC_GET(ippair_config.memcap)))
 check if a memory alloc would fit in the memcap More...
 
#define IPPairIncrUsecnt(h)   (void)SC_ATOMIC_ADD((h)->use_cnt, 1)
 
#define IPPairDecrUsecnt(h)   (void)SC_ATOMIC_SUB((h)->use_cnt, 1)
 
#define IPPairReference(dst_h_ptr, h)
 
#define IPPairDeReference(src_h_ptr)
 

Typedefs

typedef struct IPPair_ IPPair
 
typedef struct IPPairConfig_ IPPairConfig
 

Functions

struct IPPairHashRow_ __attribute__ ((aligned(CLS))) IPPairHashRow
 
 SC_ATOMIC_EXTERN (uint64_t, ippair_memuse)
 
 SC_ATOMIC_EXTERN (uint32_t, ippair_counter)
 
 SC_ATOMIC_EXTERN (uint32_t, ippair_prune_idx)
 
void IPPairInitConfig (char quiet)
 initialize the configuration More...
 
void IPPairShutdown (void)
 shutdown the flow engine More...
 
void IPPairCleanup (void)
 Cleanup the ippair engine. More...
 
IPPairIPPairLookupIPPairFromHash (Address *, Address *)
 look up a ippair in the hash More...
 
IPPairIPPairGetIPPairFromHash (Address *, Address *)
 
void IPPairRelease (IPPair *)
 
void IPPairLock (IPPair *)
 
void IPPairClearMemory (IPPair *)
 
void IPPairMoveToSpare (IPPair *)
 
uint32_t IPPairSpareQueueGetSize (void)
 
void IPPairPrintStats (void)
 print some ippair stats More...
 
void IPPairRegisterUnittests (void)
 
IPPairIPPairAlloc (void)
 
void IPPairFree (IPPair *)
 
void IPPairUnlock (IPPair *)
 
int IPPairSetMemcap (uint64_t size)
 Update memcap value. More...
 
uint64_t IPPairGetMemcap (void)
 Return memcap value. More...
 
uint64_t IPPairGetMemuse (void)
 Return memuse value. More...
 

Variables

HRLOCK_TYPE lock
 
IPPairhead
 
IPPairtail
 
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

Definition in file ippair.h.

Macro Definition Documentation

◆ HRLOCK_DESTROY

#define HRLOCK_DESTROY (   fb)    SCMutexDestroy(&(fb)->lock)

Definition at line 50 of file ippair.h.

◆ HRLOCK_INIT

#define HRLOCK_INIT (   fb)    SCMutexInit(&(fb)->lock, NULL)

Definition at line 49 of file ippair.h.

◆ HRLOCK_LOCK

#define HRLOCK_LOCK (   fb)    SCMutexLock(&(fb)->lock)

Definition at line 51 of file ippair.h.

◆ HRLOCK_MUTEX

#define HRLOCK_MUTEX

Spinlocks or Mutex for the flow buckets.

Definition at line 32 of file ippair.h.

◆ HRLOCK_TRYLOCK

#define HRLOCK_TRYLOCK (   fb)    SCMutexTrylock(&(fb)->lock)

Definition at line 52 of file ippair.h.

◆ HRLOCK_TYPE

#define HRLOCK_TYPE   SCMutex

Definition at line 48 of file ippair.h.

◆ HRLOCK_UNLOCK

#define HRLOCK_UNLOCK (   fb)    SCMutexUnlock(&(fb)->lock)

Definition at line 53 of file ippair.h.

◆ IPPAIR_CHECK_MEMCAP

#define IPPAIR_CHECK_MEMCAP (   size)    ((((uint64_t)SC_ATOMIC_GET(ippair_memuse) + (uint64_t)(size)) <= SC_ATOMIC_GET(ippair_config.memcap)))

check if a memory alloc would fit in the memcap

Parameters
sizememory allocation size to check
Return values
1it fits
0no fit

Definition at line 106 of file ippair.h.

◆ IPPAIR_QUIET

#define IPPAIR_QUIET   1

Definition at line 90 of file ippair.h.

◆ IPPAIR_VERBOSE

#define IPPAIR_VERBOSE   0

Definition at line 89 of file ippair.h.

◆ IPPairDecrUsecnt

#define IPPairDecrUsecnt (   h)    (void)SC_ATOMIC_SUB((h)->use_cnt, 1)

Definition at line 111 of file ippair.h.

◆ IPPairDeReference

#define IPPairDeReference (   src_h_ptr)
Value:
do { \
if (*(src_h_ptr) != NULL) { \
IPPairDecrUsecnt(*(src_h_ptr)); \
*(src_h_ptr) = NULL; \
} \
} while (0)

Definition at line 121 of file ippair.h.

◆ IPPairIncrUsecnt

#define IPPairIncrUsecnt (   h)    (void)SC_ATOMIC_ADD((h)->use_cnt, 1)

Definition at line 109 of file ippair.h.

◆ IPPairReference

#define IPPairReference (   dst_h_ptr,
 
)
Value:
do { \
if ((h) != NULL) { \
IPPairIncrUsecnt((h)); \
*(dst_h_ptr) = h; \
} \
} while (0)

Definition at line 114 of file ippair.h.

Typedef Documentation

◆ IPPair

typedef struct IPPair_ IPPair

◆ IPPairConfig

typedef struct IPPairConfig_ IPPairConfig

Function Documentation

◆ __attribute__()

struct IPPairHashRow_ __attribute__ ( (aligned(CLS))  )

◆ IPPairAlloc()

IPPair* IPPairAlloc ( void  )

Definition at line 108 of file ippair.c.

References IPPAIR_CHECK_MEMCAP.

◆ IPPairCleanup()

void IPPairCleanup ( void  )

Cleanup the ippair engine.

Cleanup the ippair engine from tag and threshold.

Definition at line 346 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 )

Definition at line 158 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 )

Definition at line 130 of file ippair.c.

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

Here is the call graph for this function:

◆ IPPairGetIPPairFromHash()

IPPair* IPPairGetIPPairFromHash ( Address ,
Address  
)

Definition at line 550 of file ippair.c.

◆ IPPairGetMemcap()

uint64_t IPPairGetMemcap ( void  )

Return memcap value.

Return values
memcapvalue

Definition at line 80 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 91 of file ippair.c.

References SC_ATOMIC_GET.

◆ IPPairInitConfig()

void IPPairInitConfig ( char  quiet)

initialize the configuration

Warning
Not thread safe

set config values for memcap, prealloc and hash_size

Definition at line 170 of file ippair.c.

References IPPairStorageSize(), and SCLogDebug.

Referenced by PreRunInit(), and StreamTcpUTInit().

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

◆ IPPairLock()

void IPPairLock ( IPPair )

Definition at line 532 of file ippair.c.

References IPPair_::m, and SCMutexLock.

◆ 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 649 of file ippair.c.

◆ IPPairMoveToSpare()

void IPPairMoveToSpare ( IPPair )

Definition at line 102 of file ippair.c.

References IPPairEnqueue().

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 289 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 781 of file ippair.c.

References RegisterIPPairStorageTests().

Here is the call graph for this function:

◆ IPPairRelease()

void IPPairRelease ( IPPair )

Definition at line 526 of file ippair.c.

References IPPairDecrUsecnt, IPPair_::m, and SCMutexUnlock.

◆ IPPairSetMemcap()

int IPPairSetMemcap ( uint64_t  size)

Update memcap value.

Parameters
sizenew memcap value

Definition at line 65 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 302 of file ippair.c.

References IPPairDequeue(), and IPPairPrintStats().

Here is the call graph for this function:

◆ IPPairSpareQueueGetSize()

uint32_t IPPairSpareQueueGetSize ( void  )

Definition at line 97 of file ippair.c.

References IPPairQueueLen().

Referenced by IPPairGetSpareCount().

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

◆ IPPairUnlock()

void IPPairUnlock ( IPPair )

Definition at line 537 of file ippair.c.

References IPPair_::m, and SCMutexUnlock.

◆ SC_ATOMIC_EXTERN() [1/3]

SC_ATOMIC_EXTERN ( uint32_t  ,
ippair_counter   
)

◆ SC_ATOMIC_EXTERN() [2/3]

SC_ATOMIC_EXTERN ( uint32_t  ,
ippair_prune_idx   
)

◆ SC_ATOMIC_EXTERN() [3/3]

SC_ATOMIC_EXTERN ( uint64_t  ,
ippair_memuse   
)

Variable Documentation

◆ head

IPPair* head

Definition at line 3 of file ippair.h.

◆ ippair_config

IPPairConfig ippair_config

◆ ippair_hash

IPPairHashRow* ippair_hash

ippair hash table

Definition at line 48 of file ippair.c.

Referenced by IPPairCleanup(), and IPPairTimeoutHash().

◆ lock

Definition at line 2 of file ippair.h.

◆ tail

IPPair* tail

Definition at line 4 of file ippair.h.