]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
flow-bits: remove flow locks
authorJason Ish <ish@unx.ca>
Fri, 15 Jul 2016 14:13:16 +0000 (08:13 -0600)
committerVictor Julien <victor@inliniac.net>
Mon, 19 Sep 2016 11:47:52 +0000 (13:47 +0200)
Code is now entered under flow lock.

src/detect-flowbits.c
src/flow-bit.c
src/flow-bit.h

index 80494b07fe48d6efe95fd1dd74836a34df0a9bb8..6745bda54d8b034a206946f34b354941b30ffd73 100644 (file)
@@ -70,39 +70,33 @@ void DetectFlowbitsRegister (void)
 }
 
 
-static int DetectFlowbitMatchToggle (Packet *p, const DetectFlowbitsData *fd, const int flow_locked)
+static int DetectFlowbitMatchToggle (Packet *p, const DetectFlowbitsData *fd)
 {
     if (p->flow == NULL)
         return 0;
 
-    if (flow_locked)
-        FlowBitToggleNoLock(p->flow,fd->idx);
-    else
-        FlowBitToggle(p->flow,fd->idx);
+    FlowBitToggle(p->flow,fd->idx);
+
     return 1;
 }
 
-static int DetectFlowbitMatchUnset (Packet *p, const DetectFlowbitsData *fd, const int flow_locked)
+static int DetectFlowbitMatchUnset (Packet *p, const DetectFlowbitsData *fd)
 {
     if (p->flow == NULL)
         return 0;
 
-    if (flow_locked)
-        FlowBitUnsetNoLock(p->flow,fd->idx);
-    else
-        FlowBitUnset(p->flow,fd->idx);
+    FlowBitUnset(p->flow,fd->idx);
+
     return 1;
 }
 
-static int DetectFlowbitMatchSet (Packet *p, const DetectFlowbitsData *fd, const int flow_locked)
+static int DetectFlowbitMatchSet (Packet *p, const DetectFlowbitsData *fd)
 {
     if (p->flow == NULL)
         return 0;
 
-    if (flow_locked)
-        FlowBitSetNoLock(p->flow,fd->idx);
-    else
-        FlowBitSet(p->flow,fd->idx);
+    FlowBitSet(p->flow,fd->idx);
+
     return 1;
 }
 
@@ -133,7 +127,6 @@ int DetectFlowbitMatch (ThreadVars *t, DetectEngineThreadCtx *det_ctx, Packet *p
     const DetectFlowbitsData *fd = (const DetectFlowbitsData *)ctx;
     if (fd == NULL)
         return 0;
-    const int flow_locked = det_ctx->flow_locked;
 
     switch (fd->cmd) {
         case DETECT_FLOWBITS_CMD_ISSET:
@@ -141,11 +134,11 @@ int DetectFlowbitMatch (ThreadVars *t, DetectEngineThreadCtx *det_ctx, Packet *p
         case DETECT_FLOWBITS_CMD_ISNOTSET:
             return DetectFlowbitMatchIsnotset(p,fd);
         case DETECT_FLOWBITS_CMD_SET:
-            return DetectFlowbitMatchSet(p,fd,flow_locked);
+            return DetectFlowbitMatchSet(p,fd);
         case DETECT_FLOWBITS_CMD_UNSET:
-            return DetectFlowbitMatchUnset(p,fd,flow_locked);
+            return DetectFlowbitMatchUnset(p,fd);
         case DETECT_FLOWBITS_CMD_TOGGLE:
-            return DetectFlowbitMatchToggle(p,fd,flow_locked);
+            return DetectFlowbitMatchToggle(p,fd);
         default:
             SCLogError(SC_ERR_UNKNOWN_VALUE, "unknown cmd %" PRIu32 "", fd->cmd);
             return 0;
index 02c7fc474158dab13d93a450e3d38430267a55a4..533bef5cc9df9454c0b4b97334e12aeb0657f736 100644 (file)
@@ -81,31 +81,17 @@ static void FlowBitRemove(Flow *f, uint16_t idx)
     FlowBitFree(fb);
 }
 
-void FlowBitSetNoLock(Flow *f, uint16_t idx)
-{
-    FlowBitAdd(f, idx);
-}
-
 void FlowBitSet(Flow *f, uint16_t idx)
 {
-    FLOWLOCK_WRLOCK(f);
     FlowBitAdd(f, idx);
-    FLOWLOCK_UNLOCK(f);
-}
-
-void FlowBitUnsetNoLock(Flow *f, uint16_t idx)
-{
-    FlowBitRemove(f, idx);
 }
 
 void FlowBitUnset(Flow *f, uint16_t idx)
 {
-    FLOWLOCK_WRLOCK(f);
     FlowBitRemove(f, idx);
-    FLOWLOCK_UNLOCK(f);
 }
 
-void FlowBitToggleNoLock(Flow *f, uint16_t idx)
+void FlowBitToggle(Flow *f, uint16_t idx)
 {
     FlowBit *fb = FlowBitGet(f, idx);
     if (fb != NULL) {
@@ -115,13 +101,6 @@ void FlowBitToggleNoLock(Flow *f, uint16_t idx)
     }
 }
 
-void FlowBitToggle(Flow *f, uint16_t idx)
-{
-    FLOWLOCK_WRLOCK(f);
-    FlowBitToggleNoLock(f, idx);
-    FLOWLOCK_UNLOCK(f);
-}
-
 int FlowBitIsset(Flow *f, uint16_t idx)
 {
     int r = 0;
index 1b966a007198695ff53e5797ef1b3668c7c05ae7..633b5ee3d9a9b160c2ef41cc95e94fa42465909e 100644 (file)
@@ -38,11 +38,8 @@ typedef struct FlowBit_ {
 void FlowBitFree(FlowBit *);
 void FlowBitRegisterTests(void);
 
-void FlowBitSetNoLock(Flow *, uint16_t);
 void FlowBitSet(Flow *, uint16_t);
-void FlowBitUnsetNoLock(Flow *, uint16_t);
 void FlowBitUnset(Flow *, uint16_t);
-void FlowBitToggleNoLock(Flow *, uint16_t);
 void FlowBitToggle(Flow *, uint16_t);
 int FlowBitIsset(Flow *, uint16_t);
 int FlowBitIsnotset(Flow *, uint16_t);