}
TmqhSetup();
-
CIDRInit();
SigParsePrepare();
//PatternMatchPrepare(mpm_ctx, MPM_B2G);
}
#endif /* OS_WIN32 */
- /* pre allocate packets */
- SCLogDebug("preallocating packets... packet size %" PRIuMAX "", (uintmax_t)SIZE_OF_PACKET);
- int i = 0;
- for (i = 0; i < max_pending_packets; i++) {
- /* XXX pkt alloc function */
- Packet *p = SCMalloc(SIZE_OF_PACKET);
- if (p == NULL) {
- SCLogError(SC_ERR_FATAL, "Fatal error encountered while allocating a packet. Exiting...");
- exit(EXIT_FAILURE);
- }
- PACKET_INITIALIZE(p);
-
- PacketPoolStorePacket(p);
- }
- SCLogInfo("preallocated %"PRIiMAX" packets. Total memory %"PRIuMAX"",
- max_pending_packets, (uintmax_t)(max_pending_packets*SIZE_OF_PACKET));
-
+ PacketPoolInit(max_pending_packets);
HostInitConfig(HOST_VERBOSE);
FlowInitConfig(FLOW_VERBOSE);
TimeDeinit();
SCProtoNameDeInit();
DefragDestroy();
- TmqhPacketpoolDestroy();
+ PacketPoolDestroy();
MagicDeinit();
-
+ TmqhCleanup();
TmModuleRunDeInit();
#ifdef PROFILING
TmqhRingBufferRegister();
}
+/** \brief Clean up registration time allocs */
+void TmqhCleanup(void) {
+ TmqhRingBufferDestroy();
+}
+
Tmqh* TmqhGetQueueHandlerByName(char *name) {
int i;
Tmqh tmqh_table[TMQH_SIZE];
void TmqhSetup (void);
+void TmqhCleanup(void);
Tmqh* TmqhGetQueueHandlerByName(char *name);
#endif /* __TM_QUEUEHANDLERS_H__ */
}
void TmqhPacketpoolDestroy (void) {
- if (ringbuffer != NULL) {
- RingBufferDestroy(ringbuffer);
- }
+ /* doing this clean up PacketPoolDestroy now,
+ * where we also clean the packets */
}
int PacketPoolIsEmpty(void) {
return p;
}
+void PacketPoolInit(intmax_t max_pending_packets) {
+ /* pre allocate packets */
+ SCLogDebug("preallocating packets... packet size %" PRIuMAX "", (uintmax_t)SIZE_OF_PACKET);
+ int i = 0;
+ for (i = 0; i < max_pending_packets; i++) {
+ /* XXX pkt alloc function */
+ Packet *p = SCMalloc(SIZE_OF_PACKET);
+ if (p == NULL) {
+ SCLogError(SC_ERR_FATAL, "Fatal error encountered while allocating a packet. Exiting...");
+ exit(EXIT_FAILURE);
+ }
+ PACKET_INITIALIZE(p);
+
+ PacketPoolStorePacket(p);
+ }
+ SCLogInfo("preallocated %"PRIiMAX" packets. Total memory %"PRIuMAX"",
+ max_pending_packets, (uintmax_t)(max_pending_packets*SIZE_OF_PACKET));
+}
+
+void PacketPoolDestroy(void) {
+ if (ringbuffer == NULL) {
+ return;
+ }
+
+ Packet *p = NULL;
+ while ((p = PacketPoolGetPacket()) != NULL) {
+ PACKET_CLEANUP(p);
+ SCFree(p);
+ }
+
+ RingBufferDestroy(ringbuffer);
+ ringbuffer = NULL;
+}
+
Packet *TmqhInputPacketpool(ThreadVars *t)
{
Packet *p = NULL;
void PacketPoolStorePacket(Packet *);
void PacketPoolWait(void);
+void PacketPoolInit(intmax_t max_pending_packets);
+void PacketPoolDestroy(void);
+
#endif /* __TMQH_PACKETPOOL_H__ */
}
}
+void TmqhRingBufferDestroy (void) {
+ int i = 0;
+ for (i = 0; i < 256; i++) {
+ RingBuffer8Destroy(ringbuffers[i]);
+ }
+}
+
void TmqhInputRingBufferShutdownHandler(ThreadVars *tv) {
if (tv == NULL || tv->inq == NULL) {
return;
#define __TMQH_RINGBUFFER_H__
void TmqhRingBufferRegister (void);
+void TmqhRingBufferDestroy (void);
#endif /* __TMQH_RINGBUFFER_H__ */