suricata
queue.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define _Q_INVALIDATE(a)
 
#define _Q_ASSERT(a)
 
#define LIST_HEAD(name, type)
 
#define LIST_HEAD_INITIALIZER(head)   { NULL }
 
#define LIST_ENTRY(type)
 
#define LIST_FIRST(head)   ((head)->lh_first)
 
#define LIST_END(head)   NULL
 
#define LIST_EMPTY(head)   (LIST_FIRST(head) == LIST_END(head))
 
#define LIST_NEXT(elm, field)   ((elm)->field.le_next)
 
#define LIST_FOREACH(var, head, field)
 
#define LIST_INIT(head)
 
#define LIST_INSERT_AFTER(listelm, elm, field)
 
#define LIST_INSERT_BEFORE(listelm, elm, field)
 
#define LIST_INSERT_HEAD(head, elm, field)
 
#define LIST_REMOVE(elm, field)
 
#define LIST_REPLACE(elm, elm2, field)
 
#define SIMPLEQ_HEAD(name, type)
 
#define SIMPLEQ_HEAD_INITIALIZER(head)   { NULL, &(head).sqh_first }
 
#define SIMPLEQ_ENTRY(type)
 
#define SIMPLEQ_FIRST(head)   ((head)->sqh_first)
 
#define SIMPLEQ_END(head)   NULL
 
#define SIMPLEQ_EMPTY(head)   (SIMPLEQ_FIRST(head) == SIMPLEQ_END(head))
 
#define SIMPLEQ_NEXT(elm, field)   ((elm)->field.sqe_next)
 
#define SIMPLEQ_FOREACH(var, head, field)
 
#define SIMPLEQ_INIT(head)
 
#define SIMPLEQ_INSERT_HEAD(head, elm, field)
 
#define SIMPLEQ_INSERT_TAIL(head, elm, field)
 
#define SIMPLEQ_INSERT_AFTER(head, listelm, elm, field)
 
#define SIMPLEQ_REMOVE_HEAD(head, field)
 
#define TAILQ_HEAD(name, type)
 
#define TAILQ_HEAD_INITIALIZER(head)   { NULL, &(head).tqh_first }
 
#define TAILQ_ENTRY(type)
 
#define TAILQ_FIRST(head)   ((head)->tqh_first)
 
#define TAILQ_END(head)   NULL
 
#define TAILQ_NEXT(elm, field)   ((elm)->field.tqe_next)
 
#define TAILQ_LAST(head, headname)   (*(((struct headname *)((head)->tqh_last))->tqh_last))
 
#define TAILQ_PREV(elm, headname, field)   (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
 
#define TAILQ_EMPTY(head)   (TAILQ_FIRST(head) == TAILQ_END(head))
 
#define TAILQ_FOREACH(var, head, field)
 
#define TAILQ_FOREACH_SAFE(var, head, field, tvar)
 
#define TAILQ_FOREACH_REVERSE(var, head, headname, field)
 
#define TAILQ_INIT(head)
 
#define TAILQ_INSERT_HEAD(head, elm, field)
 
#define TAILQ_INSERT_TAIL(head, elm, field)
 
#define TAILQ_INSERT_AFTER(head, listelm, elm, field)
 
#define TAILQ_INSERT_BEFORE(listelm, elm, field)
 
#define TAILQ_REMOVE(head, elm, field)
 
#define TAILQ_REPLACE(head, elm, elm2, field)
 
#define CIRCLEQ_HEAD(name, type)
 
#define CIRCLEQ_HEAD_INITIALIZER(head)   { CIRCLEQ_END(&head), CIRCLEQ_END(&head) }
 
#define CIRCLEQ_ENTRY(type)
 
#define CIRCLEQ_FIRST(head)   ((head)->cqh_first)
 
#define CIRCLEQ_LAST(head)   ((head)->cqh_last)
 
#define CIRCLEQ_END(head)   ((void *)(head))
 
#define CIRCLEQ_NEXT(elm, field)   ((elm)->field.cqe_next)
 
#define CIRCLEQ_PREV(elm, field)   ((elm)->field.cqe_prev)
 
#define CIRCLEQ_EMPTY(head)   (CIRCLEQ_FIRST(head) == CIRCLEQ_END(head))
 
#define CIRCLEQ_FOREACH(var, head, field)
 
#define CIRCLEQ_FOREACH_REVERSE(var, head, field)
 
#define CIRCLEQ_INIT(head)
 
#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field)
 
#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field)
 
#define CIRCLEQ_INSERT_HEAD(head, elm, field)
 
#define CIRCLEQ_INSERT_TAIL(head, elm, field)
 
#define CIRCLEQ_REMOVE(head, elm, field)
 
#define CIRCLEQ_REPLACE(head, elm, elm2, field)
 

Macro Definition Documentation

#define _Q_ASSERT (   a)

Definition at line 94 of file queue.h.

#define _Q_INVALIDATE (   a)

Definition at line 88 of file queue.h.

#define CIRCLEQ_EMPTY (   head)    (CIRCLEQ_FIRST(head) == CIRCLEQ_END(head))

Definition at line 462 of file queue.h.

#define CIRCLEQ_END (   head)    ((void *)(head))

Definition at line 459 of file queue.h.

#define CIRCLEQ_ENTRY (   type)
Value:
struct { \
struct type *cqe_next; /* next element */ \
struct type *cqe_prev; /* previous element */ \
}
uint16_t type

Definition at line 448 of file queue.h.

#define CIRCLEQ_FIRST (   head)    ((head)->cqh_first)

Definition at line 457 of file queue.h.

#define CIRCLEQ_FOREACH (   var,
  head,
  field 
)
Value:
for((var) = CIRCLEQ_FIRST(head); \
(var) != CIRCLEQ_END(head); \
(var) = CIRCLEQ_NEXT(var, field))
#define CIRCLEQ_END(head)
Definition: queue.h:459
Flow * head
Definition: flow-hash.h:102
#define CIRCLEQ_NEXT(elm, field)
Definition: queue.h:460
#define CIRCLEQ_FIRST(head)
Definition: queue.h:457

Definition at line 465 of file queue.h.

#define CIRCLEQ_FOREACH_REVERSE (   var,
  head,
  field 
)
Value:
for((var) = CIRCLEQ_LAST(head); \
(var) != CIRCLEQ_END(head); \
(var) = CIRCLEQ_PREV(var, field))
#define CIRCLEQ_END(head)
Definition: queue.h:459
Flow * head
Definition: flow-hash.h:102
#define CIRCLEQ_LAST(head)
Definition: queue.h:458
#define CIRCLEQ_PREV(elm, field)
Definition: queue.h:461

Definition at line 470 of file queue.h.

#define CIRCLEQ_HEAD (   name,
  type 
)
Value:
struct name { \
struct type *cqh_first; /* first element */ \
struct type *cqh_last; /* last element */ \
}
uint16_t type

Definition at line 439 of file queue.h.

#define CIRCLEQ_HEAD_INITIALIZER (   head)    { CIRCLEQ_END(&head), CIRCLEQ_END(&head) }

Definition at line 445 of file queue.h.

#define CIRCLEQ_INIT (   head)
Value:
do { \
(head)->cqh_first = CIRCLEQ_END(head); \
(head)->cqh_last = CIRCLEQ_END(head); \
} while (0)
#define CIRCLEQ_END(head)
Definition: queue.h:459
Flow * head
Definition: flow-hash.h:102

Definition at line 478 of file queue.h.

#define CIRCLEQ_INSERT_AFTER (   head,
  listelm,
  elm,
  field 
)
Value:
do { \
(elm)->field.cqe_next = (listelm)->field.cqe_next; \
(elm)->field.cqe_prev = (listelm); \
if ((listelm)->field.cqe_next == CIRCLEQ_END(head)) \
(head)->cqh_last = (elm); \
else \
(listelm)->field.cqe_next->field.cqe_prev = (elm); \
(listelm)->field.cqe_next = (elm); \
} while (0)
#define CIRCLEQ_END(head)
Definition: queue.h:459
Flow * head
Definition: flow-hash.h:102

Definition at line 483 of file queue.h.

#define CIRCLEQ_INSERT_BEFORE (   head,
  listelm,
  elm,
  field 
)
Value:
do { \
(elm)->field.cqe_next = (listelm); \
(elm)->field.cqe_prev = (listelm)->field.cqe_prev; \
if ((listelm)->field.cqe_prev == CIRCLEQ_END(head)) \
(head)->cqh_first = (elm); \
else \
(listelm)->field.cqe_prev->field.cqe_next = (elm); \
(listelm)->field.cqe_prev = (elm); \
} while (0)
#define CIRCLEQ_END(head)
Definition: queue.h:459
Flow * head
Definition: flow-hash.h:102

Definition at line 493 of file queue.h.

#define CIRCLEQ_INSERT_HEAD (   head,
  elm,
  field 
)
Value:
do { \
(elm)->field.cqe_next = (head)->cqh_first; \
(elm)->field.cqe_prev = CIRCLEQ_END(head); \
if ((head)->cqh_last == CIRCLEQ_END(head)) \
(head)->cqh_last = (elm); \
else \
(head)->cqh_first->field.cqe_prev = (elm); \
(head)->cqh_first = (elm); \
} while (0)
#define CIRCLEQ_END(head)
Definition: queue.h:459
Flow * head
Definition: flow-hash.h:102

Definition at line 503 of file queue.h.

#define CIRCLEQ_INSERT_TAIL (   head,
  elm,
  field 
)
Value:
do { \
(elm)->field.cqe_next = CIRCLEQ_END(head); \
(elm)->field.cqe_prev = (head)->cqh_last; \
if ((head)->cqh_first == CIRCLEQ_END(head)) \
(head)->cqh_first = (elm); \
else \
(head)->cqh_last->field.cqe_next = (elm); \
(head)->cqh_last = (elm); \
} while (0)
#define CIRCLEQ_END(head)
Definition: queue.h:459
Flow * head
Definition: flow-hash.h:102

Definition at line 513 of file queue.h.

#define CIRCLEQ_LAST (   head)    ((head)->cqh_last)

Definition at line 458 of file queue.h.

#define CIRCLEQ_NEXT (   elm,
  field 
)    ((elm)->field.cqe_next)

Definition at line 460 of file queue.h.

#define CIRCLEQ_PREV (   elm,
  field 
)    ((elm)->field.cqe_prev)

Definition at line 461 of file queue.h.

#define CIRCLEQ_REMOVE (   head,
  elm,
  field 
)
Value:
do { \
if ((elm)->field.cqe_next == CIRCLEQ_END(head)) \
(head)->cqh_last = (elm)->field.cqe_prev; \
else \
(elm)->field.cqe_next->field.cqe_prev = \
(elm)->field.cqe_prev; \
if ((elm)->field.cqe_prev == CIRCLEQ_END(head)) \
(head)->cqh_first = (elm)->field.cqe_next; \
else \
(elm)->field.cqe_prev->field.cqe_next = \
(elm)->field.cqe_next; \
_Q_INVALIDATE((elm)->field.cqe_prev); \
_Q_INVALIDATE((elm)->field.cqe_next); \
} while (0)
#define CIRCLEQ_END(head)
Definition: queue.h:459
Flow * head
Definition: flow-hash.h:102
#define _Q_INVALIDATE(a)
Definition: queue.h:88

Definition at line 523 of file queue.h.

#define CIRCLEQ_REPLACE (   head,
  elm,
  elm2,
  field 
)
Value:
do { \
if (((elm2)->field.cqe_next = (elm)->field.cqe_next) == \
(head).cqh_last = (elm2); \
else \
(elm2)->field.cqe_next->field.cqe_prev = (elm2); \
if (((elm2)->field.cqe_prev = (elm)->field.cqe_prev) == \
(head).cqh_first = (elm2); \
else \
(elm2)->field.cqe_prev->field.cqe_next = (elm2); \
_Q_INVALIDATE((elm)->field.cqe_prev); \
_Q_INVALIDATE((elm)->field.cqe_next); \
} while (0)
#define CIRCLEQ_END(head)
Definition: queue.h:459
Flow * head
Definition: flow-hash.h:102
#define _Q_INVALIDATE(a)
Definition: queue.h:88

Definition at line 538 of file queue.h.

#define LIST_EMPTY (   head)    (LIST_FIRST(head) == LIST_END(head))

Definition at line 201 of file queue.h.

#define LIST_END (   head)    NULL

Definition at line 200 of file queue.h.

#define LIST_ENTRY (   type)
Value:
struct { \
struct type *le_next; /* next element */ \
struct type **le_prev; /* address of previous next element */ \
}
uint16_t type

Definition at line 190 of file queue.h.

#define LIST_FIRST (   head)    ((head)->lh_first)

Definition at line 199 of file queue.h.

#define LIST_FOREACH (   var,
  head,
  field 
)
Value:
for((var) = LIST_FIRST(head); \
(var)!= LIST_END(head); \
(var) = LIST_NEXT(var, field))
#define LIST_END(head)
Definition: queue.h:200
Flow * head
Definition: flow-hash.h:102
#define LIST_FIRST(head)
Definition: queue.h:199
#define LIST_NEXT(elm, field)
Definition: queue.h:202

Definition at line 204 of file queue.h.

#define LIST_HEAD (   name,
  type 
)
Value:
struct name { \
struct type *lh_first; /* first element */ \
}
uint16_t type

Definition at line 182 of file queue.h.

#define LIST_HEAD_INITIALIZER (   head)    { NULL }

Definition at line 187 of file queue.h.

#define LIST_INIT (   head)
Value:
do { \
} while (0)
#define LIST_END(head)
Definition: queue.h:200
Flow * head
Definition: flow-hash.h:102
#define LIST_FIRST(head)
Definition: queue.h:199

Definition at line 212 of file queue.h.

#define LIST_INSERT_AFTER (   listelm,
  elm,
  field 
)
Value:
do { \
if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \
(listelm)->field.le_next->field.le_prev = \
&(elm)->field.le_next; \
(listelm)->field.le_next = (elm); \
(elm)->field.le_prev = &(listelm)->field.le_next; \
} while (0)

Definition at line 216 of file queue.h.

#define LIST_INSERT_BEFORE (   listelm,
  elm,
  field 
)
Value:
do { \
(elm)->field.le_prev = (listelm)->field.le_prev; \
(elm)->field.le_next = (listelm); \
*(listelm)->field.le_prev = (elm); \
(listelm)->field.le_prev = &(elm)->field.le_next; \
} while (0)

Definition at line 224 of file queue.h.

#define LIST_INSERT_HEAD (   head,
  elm,
  field 
)
Value:
do { \
if (((elm)->field.le_next = (head)->lh_first) != NULL) \
(head)->lh_first->field.le_prev = &(elm)->field.le_next;\
(head)->lh_first = (elm); \
(elm)->field.le_prev = &(head)->lh_first; \
} while (0)
Flow * head
Definition: flow-hash.h:102

Definition at line 231 of file queue.h.

#define LIST_NEXT (   elm,
  field 
)    ((elm)->field.le_next)

Definition at line 202 of file queue.h.

#define LIST_REMOVE (   elm,
  field 
)
Value:
do { \
if ((elm)->field.le_next != NULL) \
(elm)->field.le_next->field.le_prev = \
(elm)->field.le_prev; \
*(elm)->field.le_prev = (elm)->field.le_next; \
_Q_INVALIDATE((elm)->field.le_prev); \
_Q_INVALIDATE((elm)->field.le_next); \
} while (0)
#define _Q_INVALIDATE(a)
Definition: queue.h:88

Definition at line 238 of file queue.h.

#define LIST_REPLACE (   elm,
  elm2,
  field 
)
Value:
do { \
if (((elm2)->field.le_next = (elm)->field.le_next) != NULL) \
(elm2)->field.le_next->field.le_prev = \
&(elm2)->field.le_next; \
(elm2)->field.le_prev = (elm)->field.le_prev; \
*(elm2)->field.le_prev = (elm2); \
_Q_INVALIDATE((elm)->field.le_prev); \
_Q_INVALIDATE((elm)->field.le_next); \
} while (0)
#define _Q_INVALIDATE(a)
Definition: queue.h:88

Definition at line 247 of file queue.h.

#define SIMPLEQ_EMPTY (   head)    (SIMPLEQ_FIRST(head) == SIMPLEQ_END(head))

Definition at line 279 of file queue.h.

#define SIMPLEQ_END (   head)    NULL

Definition at line 278 of file queue.h.

#define SIMPLEQ_ENTRY (   type)
Value:
struct { \
struct type *sqe_next; /* next element */ \
}
uint16_t type

Definition at line 269 of file queue.h.

#define SIMPLEQ_FIRST (   head)    ((head)->sqh_first)

Definition at line 277 of file queue.h.

#define SIMPLEQ_FOREACH (   var,
  head,
  field 
)
Value:
for((var) = SIMPLEQ_FIRST(head); \
(var) != SIMPLEQ_END(head); \
(var) = SIMPLEQ_NEXT(var, field))
#define SIMPLEQ_END(head)
Definition: queue.h:278
Flow * head
Definition: flow-hash.h:102
#define SIMPLEQ_NEXT(elm, field)
Definition: queue.h:280
#define SIMPLEQ_FIRST(head)
Definition: queue.h:277

Definition at line 282 of file queue.h.

#define SIMPLEQ_HEAD (   name,
  type 
)
Value:
struct name { \
struct type *sqh_first; /* first element */ \
struct type **sqh_last; /* addr of last next element */ \
}
uint16_t type

Definition at line 260 of file queue.h.

#define SIMPLEQ_HEAD_INITIALIZER (   head)    { NULL, &(head).sqh_first }

Definition at line 266 of file queue.h.

#define SIMPLEQ_INIT (   head)
Value:
do { \
(head)->sqh_first = NULL; \
(head)->sqh_last = &(head)->sqh_first; \
} while (0)
Flow * head
Definition: flow-hash.h:102

Definition at line 290 of file queue.h.

#define SIMPLEQ_INSERT_AFTER (   head,
  listelm,
  elm,
  field 
)
Value:
do { \
if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL)\
(head)->sqh_last = &(elm)->field.sqe_next; \
(listelm)->field.sqe_next = (elm); \
} while (0)
Flow * head
Definition: flow-hash.h:102

Definition at line 307 of file queue.h.

#define SIMPLEQ_INSERT_HEAD (   head,
  elm,
  field 
)
Value:
do { \
if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \
(head)->sqh_last = &(elm)->field.sqe_next; \
(head)->sqh_first = (elm); \
} while (0)
Flow * head
Definition: flow-hash.h:102

Definition at line 295 of file queue.h.

#define SIMPLEQ_INSERT_TAIL (   head,
  elm,
  field 
)
Value:
do { \
(elm)->field.sqe_next = NULL; \
*(head)->sqh_last = (elm); \
(head)->sqh_last = &(elm)->field.sqe_next; \
} while (0)
Flow * head
Definition: flow-hash.h:102

Definition at line 301 of file queue.h.

#define SIMPLEQ_NEXT (   elm,
  field 
)    ((elm)->field.sqe_next)

Definition at line 280 of file queue.h.

#define SIMPLEQ_REMOVE_HEAD (   head,
  field 
)
Value:
do { \
if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL) \
(head)->sqh_last = &(head)->sqh_first; \
} while (0)
Flow * head
Definition: flow-hash.h:102

Definition at line 313 of file queue.h.

#define TAILQ_END (   head)    NULL

Definition at line 340 of file queue.h.

#define TAILQ_ENTRY (   type)
Value:
struct { \
struct type *tqe_next; /* next element */ \
struct type **tqe_prev; /* address of previous next element */ \
}
uint16_t type

Definition at line 330 of file queue.h.

Referenced by TAILQ_HEAD(), and TmModuleDecodeNetmapRegister().

#define TAILQ_FOREACH (   var,
  head,
  field 
)
Value:
for((var) = TAILQ_FIRST(head); \
(var) != TAILQ_END(head); \
(var) = TAILQ_NEXT(var, field))
#define TAILQ_FIRST(head)
Definition: queue.h:339
#define TAILQ_END(head)
Definition: queue.h:340
Flow * head
Definition: flow-hash.h:102
#define TAILQ_NEXT(elm, field)
Definition: queue.h:341

Definition at line 350 of file queue.h.

Referenced by ActionInitConfig(), AddVariableToResolveList(), AffinitySetupLoadFromConfig(), AFPPeersListCheck(), BuildCpusetWithCallback(), ConfFindDeviceConfig(), ConfNodeDump(), ConfNodeLookupChild(), ConfNodeLookupKeyValue(), ConfYamlLoadFileWithPrefix(), DefragPolicyGetHostTimeout(), DefragPolicyLoadFromConfig(), DetectAddressTestConfVars(), DetectDceGetState(), DetectEngineCtxFree(), DetectEngineMultiTenantSetup(), DetectEngineReloadTenantBlocking(), DetectPortTestConfVars(), DNSGetEvents(), DNSGetTx(), DNSStateTransactionFree(), DNSTransactionFindByTxId(), DNSValidateResponseHeader(), FileForceHashParseCfg(), HtpConfigRestoreBackup(), HTPConfigure(), HTPFreeConfig(), LiveBuildDeviceListCustom(), LiveDeviceListClean(), LiveGetDevice(), LiveGetDeviceCount(), LiveGetDeviceName(), NapatechGetStreamConfig(), OutputGetModuleByConfName(), OutputLoggerThreadInit(), OutputNotifyFileRotation(), OutputRegisterFiledataLogger(), PostRunDeinit(), printUUID(), RegisterDCERPCParsers(), RegisterDCERPCUDPParsers(), ROHashInitFinalize(), RunModeInitializeOutputs(), RunModeShutDown(), RunModeUnixSocketGetDefaultMode(), SCHInfoLoadFromConfig(), SCLogLoadConfig(), SigLoadSignatures(), SMTPStateAlloc(), SRepInit(), StatsSetUI64(), and TmModuleDecodeNetmapRegister().

#define TAILQ_FOREACH_REVERSE (   var,
  head,
  headname,
  field 
)
Value:
for((var) = TAILQ_LAST(head, headname); \
(var) != TAILQ_END(head); \
(var) = TAILQ_PREV(var, headname, field))
#define TAILQ_LAST(head, headname)
Definition: queue.h:342
#define TAILQ_END(head)
Definition: queue.h:340
Flow * head
Definition: flow-hash.h:102
#define TAILQ_PREV(elm, headname, field)
Definition: queue.h:345

Definition at line 362 of file queue.h.

#define TAILQ_FOREACH_SAFE (   var,
  head,
  field,
  tvar 
)
Value:
for((var) = TAILQ_FIRST(head), \
(tvar) = TAILQ_FIRST(head) ? TAILQ_NEXT(TAILQ_FIRST(head), field): NULL ; \
(var) != TAILQ_END(head); \
(var = tvar), (tvar) = var ? TAILQ_NEXT(var, field): NULL)
#define TAILQ_FIRST(head)
Definition: queue.h:339
#define TAILQ_END(head)
Definition: queue.h:340
Flow * head
Definition: flow-hash.h:102
#define TAILQ_NEXT(elm, field)
Definition: queue.h:341

Definition at line 356 of file queue.h.

Referenced by DetectEngineCtxInitWithPrefix(), LiveDeviceFinalize(), LiveDeviceListClean(), and TmModuleDecodeNetmapRegister().

#define TAILQ_HEAD (   name,
  type 
)
Value:
struct name { \
struct type *tqh_first; /* first element */ \
struct type **tqh_last; /* addr of last next element */ \
}
uint16_t type

Definition at line 321 of file queue.h.

Referenced by NoWinDivertSupportExit(), and TmModuleDecodeNetmapRegister().

#define TAILQ_HEAD_INITIALIZER (   head)    { NULL, &(head).tqh_first }
#define TAILQ_INSERT_AFTER (   head,
  listelm,
  elm,
  field 
)
Value:
do { \
if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\
(elm)->field.tqe_next->field.tqe_prev = \
&(elm)->field.tqe_next; \
else \
(head)->tqh_last = &(elm)->field.tqe_next; \
(listelm)->field.tqe_next = (elm); \
(elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
} while (0)
Flow * head
Definition: flow-hash.h:102

Definition at line 395 of file queue.h.

Referenced by PcapDetermineDirectoryOrFile().

#define TAILQ_INSERT_BEFORE (   listelm,
  elm,
  field 
)
Value:
do { \
(elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
(elm)->field.tqe_next = (listelm); \
*(listelm)->field.tqe_prev = (elm); \
(listelm)->field.tqe_prev = &(elm)->field.tqe_next; \
} while (0)

Definition at line 405 of file queue.h.

Referenced by PcapDetermineDirectoryOrFile().

#define TAILQ_INSERT_HEAD (   head,
  elm,
  field 
)
Value:
do { \
if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \
(head)->tqh_first->field.tqe_prev = \
&(elm)->field.tqe_next; \
else \
(head)->tqh_last = &(elm)->field.tqe_next; \
(head)->tqh_first = (elm); \
(elm)->field.tqe_prev = &(head)->tqh_first; \
} while (0)
Flow * head
Definition: flow-hash.h:102

Definition at line 375 of file queue.h.

Referenced by printUUID().

#define TAILQ_LAST (   head,
  headname 
)    (*(((struct headname *)((head)->tqh_last))->tqh_last))

Definition at line 342 of file queue.h.

#define TAILQ_PREV (   elm,
  headname,
  field 
)    (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))

Definition at line 345 of file queue.h.

#define TAILQ_REMOVE (   head,
  elm,
  field 
)
Value:
do { \
if (((elm)->field.tqe_next) != NULL) \
(elm)->field.tqe_next->field.tqe_prev = \
(elm)->field.tqe_prev; \
else \
(head)->tqh_last = (elm)->field.tqe_prev; \
*(elm)->field.tqe_prev = (elm)->field.tqe_next; \
_Q_ASSERT((head)->tqh_first != (elm)); \
_Q_INVALIDATE((elm)->field.tqe_prev); \
_Q_INVALIDATE((elm)->field.tqe_next); \
} while (0)
Flow * head
Definition: flow-hash.h:102
#define _Q_INVALIDATE(a)
Definition: queue.h:88
#define _Q_ASSERT(a)
Definition: queue.h:94

Definition at line 412 of file queue.h.

Referenced by AFPPeersListClean(), CleanupPcapFileDirectoryVars(), CleanVariableResolveList(), ConfNodeFree(), ConfNodePrune(), ConfNodeRemove(), DCERPCUuidListFree(), DetectEngineCtxInitWithPrefix(), DNP3FreeObjectPointList(), DNSSetEvent(), DNSStateFree(), DNSStateTransactionFree(), OutputDeregisterAll(), OutputLoggerThreadDeinit(), OutputUnregisterFileRotationFlag(), PcapDetermineDirectoryOrFile(), ROHashInitFinalize(), RunModeRegisterNewRunMode(), RunModeUnixSocketGetDefaultMode(), SMTPStateAlloc(), and SSLVersionToString().

#define TAILQ_REPLACE (   head,
  elm,
  elm2,
  field 
)
Value:
do { \
if (((elm2)->field.tqe_next = (elm)->field.tqe_next) != NULL) \
(elm2)->field.tqe_next->field.tqe_prev = \
&(elm2)->field.tqe_next; \
else \
(head)->tqh_last = &(elm2)->field.tqe_next; \
(elm2)->field.tqe_prev = (elm)->field.tqe_prev; \
*(elm2)->field.tqe_prev = (elm2); \
_Q_INVALIDATE((elm)->field.tqe_prev); \
_Q_INVALIDATE((elm)->field.tqe_next); \
} while (0)
Flow * head
Definition: flow-hash.h:102
#define _Q_INVALIDATE(a)
Definition: queue.h:88

Definition at line 424 of file queue.h.