]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
packet pool: init pool for autofp workers as well
authorVictor Julien <victor@inliniac.net>
Wed, 22 Apr 2015 10:38:52 +0000 (12:38 +0200)
committerVictor Julien <victor@inliniac.net>
Fri, 24 Apr 2015 10:34:47 +0000 (12:34 +0200)
Introduce a new 'PacketPoolInitEmpty' as these pools will not often
need packets.

Also, don't double 'destroy' in the main thread.

src/suricata.c
src/tm-threads.c
src/tmqh-packetpool.c
src/tmqh-packetpool.h

index 5918708b8a5e89c6432064253e29215bc45c8b54..08f84cdc5e21fdd225f1e640b9efd26ce3c24fb4 100644 (file)
@@ -2474,7 +2474,6 @@ int main(int argc, char **argv)
     if (suri.run_mode != RUNMODE_UNIX_SOCKET) {
         DefragDestroy();
     }
-    PacketPoolDestroy();
     MagicDeinit();
     TmqhCleanup();
     TmModuleRunDeInit();
index f7f2f2382e2e325f16d3ff1d9cfc7e6819aa38ff..181d04a0b62efb74ac2b72b24724a5b0970d8e37 100644 (file)
@@ -402,6 +402,8 @@ void *TmThreadsSlotVar(void *td)
     char run = 1;
     TmEcode r = TM_ECODE_OK;
 
+    PacketPoolInitEmpty();
+
     /* Set the thread name */
     if (SCSetThreadName(tv->name) < 0) {
         SCLogWarning(SC_ERR_THREAD_INIT, "Unable to set thread name");
@@ -524,6 +526,8 @@ void *TmThreadsSlotVar(void *td)
     TmThreadsSetFlag(tv, THV_RUNNING_DONE);
     TmThreadWaitForFlag(tv, THV_DEINIT);
 
+    PacketPoolDestroy();
+
     s = (TmSlot *)tv->tm_slots;
 
     for ( ; s != NULL; s = s->slot_next) {
index 5ea5c426d355c844782a0d54f2bc922a17fbe8cd..79103a4a01d927a92c3dc3658fe412f82f49ba13 100644 (file)
@@ -279,6 +279,19 @@ void PacketPoolReturnPacket(Packet *p)
     }
 }
 
+void PacketPoolInitEmpty(void)
+{
+#ifndef TLS
+    TmqhPacketPoolInit();
+#endif
+
+    PktPool *my_pool = GetThreadPacketPool();
+
+    SCMutexInit(&my_pool->return_stack.mutex, NULL);
+    SCCondInit(&my_pool->return_stack.cond, NULL);
+    SC_ATOMIC_INIT(my_pool->return_stack.sync_now);
+}
+
 void PacketPoolInit(void)
 {
     extern intmax_t max_pending_packets;
index f7c8b9fc1e571c96423358b73478fb9b3ce8a27b..6da6fc6aa8555bfc4b4d2b21ef9527da7dc0dbb0 100644 (file)
@@ -71,6 +71,7 @@ Packet *PacketPoolGetPacket(void);
 void PacketPoolWait(void);
 void PacketPoolReturnPacket(Packet *p);
 void PacketPoolInit(void);
+void PacketPoolInitEmpty(void);
 void PacketPoolDestroy(void);
 
 #endif /* __TMQH_PACKETPOOL_H__ */