]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Optimize Packet Ext data freeing
authorVictor Julien <victor@inliniac.net>
Wed, 13 Aug 2014 14:33:50 +0000 (16:33 +0200)
committerVictor Julien <victor@inliniac.net>
Wed, 13 Aug 2014 14:33:50 +0000 (16:33 +0200)
Move the logic of PacketFreeExtData into a macro 'PACKET_FREE_EXTDATA'.
It was called for each packet.

src/decode.c
src/decode.h

index 150d1cb02ad7f8f75b5fd0b464a550b942c6c0a5..ae2041bc71bd304b6d4b139177bfd8c1f5310725 100644 (file)
@@ -85,17 +85,6 @@ int DecodeTunnel(ThreadVars *tv, DecodeThreadVars *dtv, Packet *p,
     return TM_ECODE_OK;
 }
 
-void PacketFreeExtData(Packet *p)
-{
-    /* if p uses extended data, free them */
-    if (p->ext_pkt) {
-        if (!(p->flags & PKT_ZERO_COPY)) {
-            SCFree(p->ext_pkt);
-        }
-        p->ext_pkt = NULL;
-    }
-}
-
 /**
  * \brief Return a malloced packet.
  */
index 69f72da213bd9b2b2f4f8a66b8f5148ee88a69b7..47535ab967573de14b3cb62e165514aa7a3040dd 100644 (file)
@@ -623,7 +623,15 @@ typedef struct DecodeThreadVars_
         (p)->level4_comp_csum = -1;   \
     } while (0)
 
-void PacketFreeExtData(Packet *p);
+/* if p uses extended data, free them */
+#define PACKET_FREE_EXTDATA(p) do {                 \
+        if ((p)->ext_pkt) {                         \
+            if (!((p)->flags & PKT_ZERO_COPY)) {    \
+                SCFree((p)->ext_pkt);               \
+            }                                       \
+            (p)->ext_pkt = NULL;                    \
+        }                                           \
+    } while(0)
 
 /**
  *  \brief Initialize a packet structure for use.
@@ -664,7 +672,7 @@ void PacketFreeExtData(Packet *p);
         (p)->dp = 0;                            \
         (p)->proto = 0;                         \
         (p)->recursion_level = 0;               \
-        PacketFreeExtData(p);                   \
+        PACKET_FREE_EXTDATA((p));               \
         (p)->flags = (p)->flags & PKT_ALLOC;    \
         (p)->flowflags = 0;                     \
         (p)->pkt_src = 0;                       \
@@ -736,7 +744,7 @@ void PacketFreeExtData(Packet *p);
         if ((p)->pktvar != NULL) {              \
             PktVarFree((p)->pktvar);            \
         }                                       \
-        PacketFreeExtData(p);                   \
+        PACKET_FREE_EXTDATA((p));               \
         SCMutexDestroy(&(p)->tunnel_mutex);     \
         AppLayerDecoderEventsFreeEvents(&(p)->app_layer_events); \
         PACKET_PROFILING_RESET((p));            \