From e8573f4d006fbd89bda90c232306561d43f7fa4c Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Wed, 29 Jan 2020 13:23:36 +0100 Subject: [PATCH] flow: fix global variable use --- src/flow-hash.c | 1 + src/flow-manager.c | 8 ++++++++ src/flow-manager.h | 8 ++++---- src/flow-private.h | 16 ++++++++-------- src/flow.c | 14 ++++++++++++++ 5 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/flow-hash.c b/src/flow-hash.c index aa434ec69f..26aa7efd74 100644 --- a/src/flow-hash.c +++ b/src/flow-hash.c @@ -49,6 +49,7 @@ #define FLOW_DEFAULT_FLOW_PRUNE 5 +FlowBucket *flow_hash; SC_ATOMIC_EXTERN(unsigned int, flow_prune_idx); SC_ATOMIC_EXTERN(unsigned int, flow_flags); diff --git a/src/flow-manager.c b/src/flow-manager.c index e515332192..e7f683ed98 100644 --- a/src/flow-manager.c +++ b/src/flow-manager.c @@ -71,6 +71,9 @@ /* Run mode selected at suricata.c */ extern int run_mode; +/** queue to pass flows to cleanup/log thread(s) */ +FlowQueue flow_recycle_q; + /* multi flow mananger support */ static uint32_t flowmgr_number = 1; /* atomic counter for flow managers, to assign instance id */ @@ -83,6 +86,11 @@ SC_ATOMIC_DECLARE(uint32_t, flowrec_cnt); SC_ATOMIC_EXTERN(unsigned int, flow_flags); +SCCtrlCondT flow_manager_ctrl_cond; +SCCtrlMutex flow_manager_ctrl_mutex; + +SCCtrlCondT flow_recycler_ctrl_cond; +SCCtrlMutex flow_recycler_ctrl_mutex; typedef FlowProtoTimeout *FlowProtoTimeoutPtr; SC_ATOMIC_DECLARE(FlowProtoTimeoutPtr, flow_timeouts); diff --git a/src/flow-manager.h b/src/flow-manager.h index 117c98df6d..8ce882c591 100644 --- a/src/flow-manager.h +++ b/src/flow-manager.h @@ -29,8 +29,8 @@ void FlowTimeoutsInit(void); void FlowTimeoutsEmergency(void); /** flow manager scheduling condition */ -SCCtrlCondT flow_manager_ctrl_cond; -SCCtrlMutex flow_manager_ctrl_mutex; +extern SCCtrlCondT flow_manager_ctrl_cond; +extern SCCtrlMutex flow_manager_ctrl_mutex; #define FlowWakeupFlowManagerThread() SCCtrlCondSignal(&flow_manager_ctrl_cond) void FlowManagerThreadSpawn(void); @@ -38,8 +38,8 @@ void FlowDisableFlowManagerThread(void); void FlowMgrRegisterTests (void); /** flow recycler scheduling condition */ -SCCtrlCondT flow_recycler_ctrl_cond; -SCCtrlMutex flow_recycler_ctrl_mutex; +extern SCCtrlCondT flow_recycler_ctrl_cond; +extern SCCtrlMutex flow_recycler_ctrl_mutex; #define FlowWakeupFlowRecyclerThread() \ SCCtrlCondSignal(&flow_recycler_ctrl_cond) diff --git a/src/flow-private.h b/src/flow-private.h index 2e712367ec..45315eda9b 100644 --- a/src/flow-private.h +++ b/src/flow-private.h @@ -83,21 +83,21 @@ enum { /** FlowProto specific timeouts and free/state functions */ -FlowProtoTimeout flow_timeouts_normal[FLOW_PROTO_MAX]; -FlowProtoTimeout flow_timeouts_emerg[FLOW_PROTO_MAX]; -FlowProtoFreeFunc flow_freefuncs[FLOW_PROTO_MAX]; +extern FlowProtoTimeout flow_timeouts_normal[FLOW_PROTO_MAX]; +extern FlowProtoTimeout flow_timeouts_emerg[FLOW_PROTO_MAX]; +extern FlowProtoFreeFunc flow_freefuncs[FLOW_PROTO_MAX]; /** spare/unused/prealloced flows live here */ -FlowQueue flow_spare_q; +extern FlowQueue flow_spare_q; /** queue to pass flows to cleanup/log thread(s) */ -FlowQueue flow_recycle_q; +extern FlowQueue flow_recycle_q; -FlowBucket *flow_hash; -FlowConfig flow_config; +extern FlowBucket *flow_hash; +extern FlowConfig flow_config; /** flow memuse counter (atomic), for enforcing memcap limit */ -SC_ATOMIC_DECLARE(uint64_t, flow_memuse); +SC_ATOMIC_EXTERN(uint64_t, flow_memuse); #endif /* __FLOW_PRIVATE_H__ */ diff --git a/src/flow.c b/src/flow.c index adde854642..0d3a187ef4 100644 --- a/src/flow.c +++ b/src/flow.c @@ -83,6 +83,20 @@ SC_ATOMIC_DECLARE(unsigned int, flow_prune_idx); /** atomic flags */ SC_ATOMIC_DECLARE(unsigned int, flow_flags); +/** FlowProto specific timeouts and free/state functions */ + +FlowProtoTimeout flow_timeouts_normal[FLOW_PROTO_MAX]; +FlowProtoTimeout flow_timeouts_emerg[FLOW_PROTO_MAX]; +FlowProtoFreeFunc flow_freefuncs[FLOW_PROTO_MAX]; + +/** spare/unused/prealloced flows live here */ +FlowQueue flow_spare_q; + +FlowConfig flow_config; + +/** flow memuse counter (atomic), for enforcing memcap limit */ +SC_ATOMIC_DECLARE(uint64_t, flow_memuse); + void FlowRegisterTests(void); void FlowInitFlowProto(void); int FlowSetProtoFreeFunc(uint8_t, void (*Free)(void *)); -- 2.47.2