]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
packet: add 'swap' function to reverse direction
authorVictor Julien <victor@inliniac.net>
Fri, 27 Jul 2018 10:24:20 +0000 (12:24 +0200)
committerVictor Julien <victor@inliniac.net>
Thu, 21 Mar 2019 18:19:04 +0000 (19:19 +0100)
src/decode.c
src/decode.h
src/stream-tcp.h

index dfcd8dacf94527d804e88324b0c7b3a38ce8adf7..b19365d0547675a08b4359a2cf48321bdf221546 100644 (file)
@@ -414,6 +414,28 @@ void PacketBypassCallback(Packet *p)
     }
 }
 
+/** \brief switch direction of a packet */
+void PacketSwap(Packet *p)
+{
+    if (PKT_IS_TOSERVER(p)) {
+        p->flowflags &= ~FLOW_PKT_TOSERVER;
+        p->flowflags |= FLOW_PKT_TOCLIENT;
+
+        if (p->flowflags & FLOW_PKT_TOSERVER_FIRST) {
+            p->flowflags &= ~FLOW_PKT_TOSERVER_FIRST;
+            p->flowflags |= FLOW_PKT_TOCLIENT_FIRST;
+        }
+    } else {
+        p->flowflags &= ~FLOW_PKT_TOCLIENT;
+        p->flowflags |= FLOW_PKT_TOSERVER;
+
+        if (p->flowflags & FLOW_PKT_TOCLIENT_FIRST) {
+            p->flowflags &= ~FLOW_PKT_TOCLIENT_FIRST;
+            p->flowflags |= FLOW_PKT_TOSERVER_FIRST;
+        }
+    }
+}
+
 /* counter name store */
 static HashTable *g_counter_table = NULL;
 static SCMutex g_counter_table_mutex = SCMUTEX_INITIALIZER;
index bbad1bb4b80ce7814f86d471cd5cdd6b35a24f43..ba07c771cc27d2eed08b500ef304275c40876f67 100644 (file)
@@ -917,6 +917,7 @@ int PacketSetData(Packet *p, uint8_t *pktdata, uint32_t pktlen);
 int PacketCopyDataOffset(Packet *p, uint32_t offset, uint8_t *data, uint32_t datalen);
 const char *PktSrcToString(enum PktSrcEnum pkt_src);
 void PacketBypassCallback(Packet *p);
+void PacketSwap(Packet *p);
 
 DecodeThreadVars *DecodeThreadVarsAlloc(ThreadVars *);
 void DecodeThreadVarsFree(ThreadVars *, DecodeThreadVars *);
index bf383ff0f237fb1887a06f0843266661b2f41582..7ad867bdce8957d8a367a091f1573f39b48c0e26 100644 (file)
@@ -176,24 +176,7 @@ static inline int StreamTcpCheckFlowDrops(Packet *p)
 static inline void StreamTcpPacketSwitchDir(TcpSession *ssn, Packet *p)
 {
     SCLogDebug("ssn %p: switching pkt direction", ssn);
-
-    if (PKT_IS_TOSERVER(p)) {
-        p->flowflags &= ~FLOW_PKT_TOSERVER;
-        p->flowflags |= FLOW_PKT_TOCLIENT;
-
-        if (p->flowflags & FLOW_PKT_TOSERVER_FIRST) {
-            p->flowflags &= ~FLOW_PKT_TOSERVER_FIRST;
-            p->flowflags |= FLOW_PKT_TOCLIENT_FIRST;
-        }
-    } else {
-        p->flowflags &= ~FLOW_PKT_TOCLIENT;
-        p->flowflags |= FLOW_PKT_TOSERVER;
-
-        if (p->flowflags & FLOW_PKT_TOCLIENT_FIRST) {
-            p->flowflags &= ~FLOW_PKT_TOCLIENT_FIRST;
-            p->flowflags |= FLOW_PKT_TOSERVER_FIRST;
-        }
-    }
+    PacketSwap(p);
 }
 
 enum {