From: Jason Ish Date: Fri, 15 Jul 2016 14:13:16 +0000 (-0600) Subject: flow-bits: remove flow locks X-Git-Tag: suricata-3.2beta1~349 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5a783e6854caf308eed9adfa516135101a0539d6;p=thirdparty%2Fsuricata.git flow-bits: remove flow locks Code is now entered under flow lock. --- diff --git a/src/detect-flowbits.c b/src/detect-flowbits.c index 80494b07fe..6745bda54d 100644 --- a/src/detect-flowbits.c +++ b/src/detect-flowbits.c @@ -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; diff --git a/src/flow-bit.c b/src/flow-bit.c index 02c7fc4741..533bef5cc9 100644 --- a/src/flow-bit.c +++ b/src/flow-bit.c @@ -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; diff --git a/src/flow-bit.h b/src/flow-bit.h index 1b966a0071..633b5ee3d9 100644 --- a/src/flow-bit.h +++ b/src/flow-bit.h @@ -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);