SC_ATOMIC_EXTERN(unsigned int, flow_flags);
+
+typedef FlowProtoTimeout *FlowProtoTimeoutPtr;
+SC_ATOMIC_DECLARE(FlowProtoTimeoutPtr, flow_timeouts);
+
+void FlowTimeoutsInit(void)
+{
+ SC_ATOMIC_SET(flow_timeouts, flow_timeouts_normal);
+}
+
+void FlowTimeoutsEmergency(void)
+{
+ SC_ATOMIC_SET(flow_timeouts, flow_timeouts_emerg);
+}
+
/* 1 seconds */
#define FLOW_NORMAL_MODE_UPDATE_DELAY_SEC 1
#define FLOW_NORMAL_MODE_UPDATE_DELAY_NSEC 0
*
* \param f flow
* \param state flow state
- * \param emergency bool indicating emergency mode 1 yes, 0 no
*
* \retval timeout timeout in seconds
*/
-static inline uint32_t FlowGetFlowTimeout(const Flow *f, int state, int emergency)
+static inline uint32_t FlowGetFlowTimeout(const Flow *f, int state)
{
uint32_t timeout;
-
- if (emergency) {
- switch(state) {
- default:
- case FLOW_STATE_NEW:
- timeout = flow_proto[f->protomap].emerg_new_timeout;
- break;
- case FLOW_STATE_ESTABLISHED:
- timeout = flow_proto[f->protomap].emerg_est_timeout;
- break;
- case FLOW_STATE_CLOSED:
- timeout = flow_proto[f->protomap].emerg_closed_timeout;
- break;
- }
- } else { /* implies no emergency */
- switch(state) {
- default:
- case FLOW_STATE_NEW:
- timeout = flow_proto[f->protomap].new_timeout;
- break;
- case FLOW_STATE_ESTABLISHED:
- timeout = flow_proto[f->protomap].est_timeout;
- break;
- case FLOW_STATE_CLOSED:
- timeout = flow_proto[f->protomap].closed_timeout;
- break;
- }
+ FlowProtoTimeoutPtr flow_timeouts = SC_ATOMIC_GET(flow_timeouts);
+ switch(state) {
+ default:
+ case FLOW_STATE_NEW:
+ timeout = flow_timeouts[f->protomap].new_timeout;
+ break;
+ case FLOW_STATE_ESTABLISHED:
+ timeout = flow_timeouts[f->protomap].est_timeout;
+ break;
+ case FLOW_STATE_CLOSED:
+ timeout = flow_timeouts[f->protomap].closed_timeout;
+ break;
}
-
return timeout;
}
*
* \param f flow
* \param ts timestamp
- * \param emergency bool indicating emergency mode
*
* \retval 0 not timed out
* \retval 1 timed out
*/
-static int FlowManagerFlowTimeout(const Flow *f, int state, struct timeval *ts, int emergency)
+static int FlowManagerFlowTimeout(const Flow *f, int state, struct timeval *ts)
{
/* set the timeout value according to the flow operating mode,
* flow's state and protocol.*/
- uint32_t timeout = FlowGetFlowTimeout(f, state, emergency);
+ uint32_t timeout = FlowGetFlowTimeout(f, state);
/* do the timeout check */
if ((int32_t)(f->lastts.tv_sec + timeout) >= ts->tv_sec) {
*
* \param f flow
* \param ts timestamp
- * \param emergency bool indicating emergency mode
*
* \retval 0 not timed out just yet
* \retval 1 fully timed out, lets kill it
int state = SC_ATOMIC_GET(f->flow_state);
/* timeout logic goes here */
- if (FlowManagerFlowTimeout(f, state, ts, emergency) == 0) {
+ if (FlowManagerFlowTimeout(f, state, ts) == 0) {
f = f->hprev;
continue;
}
if (len * 100 / flow_config.prealloc > flow_config.emergency_recovery) {
SC_ATOMIC_AND(flow_flags, ~FLOW_EMERGENCY);
+ FlowTimeoutsReset();
+
emerg = FALSE;
prev_emerg = FALSE;
SCLogDebug("%s registered", tmm_modules[TMM_FLOWMANAGER].name);
SC_ATOMIC_INIT(flowmgr_cnt);
+ SC_ATOMIC_INIT(flow_timeouts);
}
void TmModuleFlowRecyclerRegister (void)
f.proto = IPPROTO_TCP;
int state = SC_ATOMIC_GET(f.flow_state);
- if (FlowManagerFlowTimeout(&f, state, &ts, 0) != 1 && FlowManagerFlowTimedOut(&f, &ts) != 1) {
+ if (FlowManagerFlowTimeout(&f, state, &ts) != 1 && FlowManagerFlowTimedOut(&f, &ts) != 1) {
FBLOCK_DESTROY(&fb);
FLOW_DESTROY(&f);
FlowQueueDestroy(&flow_spare_q);
f.proto = IPPROTO_TCP;
int state = SC_ATOMIC_GET(f.flow_state);
- if (FlowManagerFlowTimeout(&f, state, &ts, 0) != 1 && FlowManagerFlowTimedOut(&f, &ts) != 1) {
+ if (FlowManagerFlowTimeout(&f, state, &ts) != 1 && FlowManagerFlowTimedOut(&f, &ts) != 1) {
FBLOCK_DESTROY(&fb);
FLOW_DESTROY(&f);
FlowQueueDestroy(&flow_spare_q);
f.flags |= FLOW_EMERGENCY;
int state = SC_ATOMIC_GET(f.flow_state);
- if (FlowManagerFlowTimeout(&f, state, &ts, 0) != 1 && FlowManagerFlowTimedOut(&f, &ts) != 1) {
+ if (FlowManagerFlowTimeout(&f, state, &ts) != 1 && FlowManagerFlowTimedOut(&f, &ts) != 1) {
FBLOCK_DESTROY(&fb);
FLOW_DESTROY(&f);
FlowQueueDestroy(&flow_spare_q);
f.flags |= FLOW_EMERGENCY;
int state = SC_ATOMIC_GET(f.flow_state);
- if (FlowManagerFlowTimeout(&f, state, &ts, 0) != 1 && FlowManagerFlowTimedOut(&f, &ts) != 1) {
+ if (FlowManagerFlowTimeout(&f, state, &ts) != 1 && FlowManagerFlowTimedOut(&f, &ts) != 1) {
FBLOCK_DESTROY(&fb);
FLOW_DESTROY(&f);
FlowQueueDestroy(&flow_spare_q);
void FlowInitFlowProto(void)
{
- /*Default*/
- flow_proto[FLOW_PROTO_DEFAULT].new_timeout = FLOW_DEFAULT_NEW_TIMEOUT;
- flow_proto[FLOW_PROTO_DEFAULT].est_timeout = FLOW_DEFAULT_EST_TIMEOUT;
- flow_proto[FLOW_PROTO_DEFAULT].closed_timeout =
- FLOW_DEFAULT_CLOSED_TIMEOUT;
- flow_proto[FLOW_PROTO_DEFAULT].emerg_new_timeout =
- FLOW_DEFAULT_EMERG_NEW_TIMEOUT;
- flow_proto[FLOW_PROTO_DEFAULT].emerg_est_timeout =
- FLOW_DEFAULT_EMERG_EST_TIMEOUT;
- flow_proto[FLOW_PROTO_DEFAULT].emerg_closed_timeout =
- FLOW_DEFAULT_EMERG_CLOSED_TIMEOUT;
- flow_proto[FLOW_PROTO_DEFAULT].Freefunc = NULL;
- /*TCP*/
- flow_proto[FLOW_PROTO_TCP].new_timeout = FLOW_IPPROTO_TCP_NEW_TIMEOUT;
- flow_proto[FLOW_PROTO_TCP].est_timeout = FLOW_IPPROTO_TCP_EST_TIMEOUT;
- flow_proto[FLOW_PROTO_TCP].closed_timeout = FLOW_DEFAULT_CLOSED_TIMEOUT;
- flow_proto[FLOW_PROTO_TCP].emerg_new_timeout =
- FLOW_IPPROTO_TCP_EMERG_NEW_TIMEOUT;
- flow_proto[FLOW_PROTO_TCP].emerg_est_timeout =
- FLOW_IPPROTO_TCP_EMERG_EST_TIMEOUT;
- flow_proto[FLOW_PROTO_TCP].emerg_closed_timeout =
- FLOW_DEFAULT_EMERG_CLOSED_TIMEOUT;
- flow_proto[FLOW_PROTO_TCP].Freefunc = NULL;
- /*UDP*/
- flow_proto[FLOW_PROTO_UDP].new_timeout = FLOW_IPPROTO_UDP_NEW_TIMEOUT;
- flow_proto[FLOW_PROTO_UDP].est_timeout = FLOW_IPPROTO_UDP_EST_TIMEOUT;
- flow_proto[FLOW_PROTO_UDP].closed_timeout = FLOW_DEFAULT_CLOSED_TIMEOUT;
- flow_proto[FLOW_PROTO_UDP].emerg_new_timeout =
- FLOW_IPPROTO_UDP_EMERG_NEW_TIMEOUT;
- flow_proto[FLOW_PROTO_UDP].emerg_est_timeout =
- FLOW_IPPROTO_UDP_EMERG_EST_TIMEOUT;
- flow_proto[FLOW_PROTO_UDP].emerg_closed_timeout =
- FLOW_DEFAULT_EMERG_CLOSED_TIMEOUT;
- flow_proto[FLOW_PROTO_UDP].Freefunc = NULL;
- /*ICMP*/
- flow_proto[FLOW_PROTO_ICMP].new_timeout = FLOW_IPPROTO_ICMP_NEW_TIMEOUT;
- flow_proto[FLOW_PROTO_ICMP].est_timeout = FLOW_IPPROTO_ICMP_EST_TIMEOUT;
- flow_proto[FLOW_PROTO_ICMP].closed_timeout = FLOW_DEFAULT_CLOSED_TIMEOUT;
- flow_proto[FLOW_PROTO_ICMP].emerg_new_timeout =
- FLOW_IPPROTO_ICMP_EMERG_NEW_TIMEOUT;
- flow_proto[FLOW_PROTO_ICMP].emerg_est_timeout =
- FLOW_IPPROTO_ICMP_EMERG_EST_TIMEOUT;
- flow_proto[FLOW_PROTO_ICMP].emerg_closed_timeout =
- FLOW_DEFAULT_EMERG_CLOSED_TIMEOUT;
- flow_proto[FLOW_PROTO_ICMP].Freefunc = NULL;
+ FlowTimeoutsInit();
+
+#define SET_DEFAULTS(p, n, e, c, ne, ee, ce) \
+ flow_timeouts_normal[(p)].new_timeout = (n); \
+ flow_timeouts_normal[(p)].est_timeout = (e); \
+ flow_timeouts_normal[(p)].closed_timeout = (c); \
+ flow_timeouts_emerg[(p)].new_timeout = (ne); \
+ flow_timeouts_emerg[(p)].est_timeout = (ee); \
+ flow_timeouts_emerg[(p)].closed_timeout = (ce);
+
+ SET_DEFAULTS(FLOW_PROTO_DEFAULT,
+ FLOW_DEFAULT_NEW_TIMEOUT, FLOW_DEFAULT_EST_TIMEOUT,
+ FLOW_DEFAULT_CLOSED_TIMEOUT,
+ FLOW_DEFAULT_EMERG_NEW_TIMEOUT, FLOW_DEFAULT_EMERG_EST_TIMEOUT,
+ FLOW_DEFAULT_EMERG_CLOSED_TIMEOUT);
+ SET_DEFAULTS(FLOW_PROTO_TCP,
+ FLOW_IPPROTO_TCP_NEW_TIMEOUT, FLOW_IPPROTO_TCP_EST_TIMEOUT,
+ FLOW_DEFAULT_CLOSED_TIMEOUT,
+ FLOW_IPPROTO_TCP_EMERG_NEW_TIMEOUT, FLOW_IPPROTO_TCP_EMERG_EST_TIMEOUT,
+ FLOW_DEFAULT_EMERG_CLOSED_TIMEOUT);
+ SET_DEFAULTS(FLOW_PROTO_UDP,
+ FLOW_IPPROTO_UDP_NEW_TIMEOUT, FLOW_IPPROTO_UDP_EST_TIMEOUT,
+ FLOW_DEFAULT_CLOSED_TIMEOUT,
+ FLOW_IPPROTO_UDP_EMERG_NEW_TIMEOUT, FLOW_IPPROTO_UDP_EMERG_EST_TIMEOUT,
+ FLOW_DEFAULT_EMERG_CLOSED_TIMEOUT);
+ SET_DEFAULTS(FLOW_PROTO_ICMP,
+ FLOW_IPPROTO_ICMP_NEW_TIMEOUT, FLOW_IPPROTO_ICMP_EST_TIMEOUT,
+ FLOW_DEFAULT_CLOSED_TIMEOUT,
+ FLOW_IPPROTO_ICMP_EMERG_NEW_TIMEOUT, FLOW_IPPROTO_ICMP_EMERG_EST_TIMEOUT,
+ FLOW_DEFAULT_EMERG_CLOSED_TIMEOUT);
+
+ flow_freefuncs[FLOW_PROTO_DEFAULT].Freefunc = NULL;
+ flow_freefuncs[FLOW_PROTO_TCP].Freefunc = NULL;
+ flow_freefuncs[FLOW_PROTO_UDP].Freefunc = NULL;
+ flow_freefuncs[FLOW_PROTO_ICMP].Freefunc = NULL;
/* Let's see if we have custom timeouts defined from config */
const char *new = NULL;
if (new != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(new), new) > 0) {
- flow_proto[FLOW_PROTO_DEFAULT].new_timeout = configval;
+ flow_timeouts_normal[FLOW_PROTO_DEFAULT].new_timeout = configval;
}
if (established != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(established),
established) > 0) {
- flow_proto[FLOW_PROTO_DEFAULT].est_timeout = configval;
+ flow_timeouts_normal[FLOW_PROTO_DEFAULT].est_timeout = configval;
}
if (closed != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(closed),
closed) > 0) {
- flow_proto[FLOW_PROTO_DEFAULT].closed_timeout = configval;
+ flow_timeouts_normal[FLOW_PROTO_DEFAULT].closed_timeout = configval;
}
if (emergency_new != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(emergency_new),
emergency_new) > 0) {
- flow_proto[FLOW_PROTO_DEFAULT].emerg_new_timeout = configval;
+ flow_timeouts_emerg[FLOW_PROTO_DEFAULT].new_timeout = configval;
}
if (emergency_established != NULL &&
ByteExtractStringUint32(&configval, 10,
strlen(emergency_established),
emergency_established) > 0) {
- flow_proto[FLOW_PROTO_DEFAULT].emerg_est_timeout= configval;
+ flow_timeouts_emerg[FLOW_PROTO_DEFAULT].est_timeout= configval;
}
if (emergency_closed != NULL &&
ByteExtractStringUint32(&configval, 10,
strlen(emergency_closed),
emergency_closed) > 0) {
- flow_proto[FLOW_PROTO_DEFAULT].emerg_closed_timeout = configval;
+ flow_timeouts_emerg[FLOW_PROTO_DEFAULT].closed_timeout = configval;
}
}
if (new != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(new), new) > 0) {
- flow_proto[FLOW_PROTO_TCP].new_timeout = configval;
+ flow_timeouts_normal[FLOW_PROTO_TCP].new_timeout = configval;
}
if (established != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(established),
established) > 0) {
- flow_proto[FLOW_PROTO_TCP].est_timeout = configval;
+ flow_timeouts_normal[FLOW_PROTO_TCP].est_timeout = configval;
}
if (closed != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(closed),
closed) > 0) {
- flow_proto[FLOW_PROTO_TCP].closed_timeout = configval;
+ flow_timeouts_normal[FLOW_PROTO_TCP].closed_timeout = configval;
}
if (emergency_new != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(emergency_new),
emergency_new) > 0) {
- flow_proto[FLOW_PROTO_TCP].emerg_new_timeout = configval;
+ flow_timeouts_emerg[FLOW_PROTO_TCP].new_timeout = configval;
}
if (emergency_established != NULL &&
ByteExtractStringUint32(&configval, 10,
strlen(emergency_established),
emergency_established) > 0) {
- flow_proto[FLOW_PROTO_TCP].emerg_est_timeout = configval;
+ flow_timeouts_emerg[FLOW_PROTO_TCP].est_timeout = configval;
}
if (emergency_closed != NULL &&
ByteExtractStringUint32(&configval, 10,
strlen(emergency_closed),
emergency_closed) > 0) {
- flow_proto[FLOW_PROTO_TCP].emerg_closed_timeout = configval;
+ flow_timeouts_emerg[FLOW_PROTO_TCP].closed_timeout = configval;
}
}
if (new != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(new), new) > 0) {
- flow_proto[FLOW_PROTO_UDP].new_timeout = configval;
+ flow_timeouts_normal[FLOW_PROTO_UDP].new_timeout = configval;
}
if (established != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(established),
established) > 0) {
- flow_proto[FLOW_PROTO_UDP].est_timeout = configval;
+ flow_timeouts_normal[FLOW_PROTO_UDP].est_timeout = configval;
}
if (emergency_new != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(emergency_new),
emergency_new) > 0) {
- flow_proto[FLOW_PROTO_UDP].emerg_new_timeout = configval;
+ flow_timeouts_emerg[FLOW_PROTO_UDP].new_timeout = configval;
}
if (emergency_established != NULL &&
ByteExtractStringUint32(&configval, 10,
strlen(emergency_established),
emergency_established) > 0) {
- flow_proto[FLOW_PROTO_UDP].emerg_est_timeout = configval;
+ flow_timeouts_emerg[FLOW_PROTO_UDP].est_timeout = configval;
}
}
if (new != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(new), new) > 0) {
- flow_proto[FLOW_PROTO_ICMP].new_timeout = configval;
+ flow_timeouts_normal[FLOW_PROTO_ICMP].new_timeout = configval;
}
if (established != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(established),
established) > 0) {
- flow_proto[FLOW_PROTO_ICMP].est_timeout = configval;
+ flow_timeouts_normal[FLOW_PROTO_ICMP].est_timeout = configval;
}
if (emergency_new != NULL &&
ByteExtractStringUint32(&configval, 10, strlen(emergency_new),
emergency_new) > 0) {
- flow_proto[FLOW_PROTO_ICMP].emerg_new_timeout = configval;
+ flow_timeouts_emerg[FLOW_PROTO_ICMP].new_timeout = configval;
}
if (emergency_established != NULL &&
ByteExtractStringUint32(&configval, 10,
strlen(emergency_established),
emergency_established) > 0) {
- flow_proto[FLOW_PROTO_ICMP].emerg_est_timeout = configval;
+ flow_timeouts_emerg[FLOW_PROTO_ICMP].est_timeout = configval;
}
}
}
SCEnter();
/* call the protocol specific free function if we have one */
- if (flow_proto[proto_map].Freefunc != NULL) {
- flow_proto[proto_map].Freefunc(f->protoctx);
+ if (flow_freefuncs[proto_map].Freefunc != NULL) {
+ flow_freefuncs[proto_map].Freefunc(f->protoctx);
}
FlowFreeStorage(f);
uint8_t proto_map;
proto_map = FlowGetProtoMapping(proto);
- flow_proto[proto_map].Freefunc = Free;
+ flow_freefuncs[proto_map].Freefunc = Free;
return 1;
}
FlowInitFlowProto();
proto_map = FlowGetProtoMapping(IPPROTO_TCP);
-
- if ((flow_proto[proto_map].new_timeout != FLOW_IPPROTO_TCP_NEW_TIMEOUT) && (flow_proto[proto_map].est_timeout != FLOW_IPPROTO_TCP_EST_TIMEOUT)
- && (flow_proto[proto_map].emerg_new_timeout != FLOW_IPPROTO_TCP_EMERG_NEW_TIMEOUT) && (flow_proto[proto_map].emerg_est_timeout != FLOW_IPPROTO_TCP_EMERG_EST_TIMEOUT)){
- printf ("failed in setting TCP flow timeout");
- return 0;
- }
+ FAIL_IF(flow_timeouts_normal[proto_map].new_timeout != FLOW_IPPROTO_TCP_NEW_TIMEOUT);
+ FAIL_IF(flow_timeouts_normal[proto_map].est_timeout != FLOW_IPPROTO_TCP_EST_TIMEOUT);
+ FAIL_IF(flow_timeouts_emerg[proto_map].new_timeout != FLOW_IPPROTO_TCP_EMERG_NEW_TIMEOUT);
+ FAIL_IF(flow_timeouts_emerg[proto_map].est_timeout != FLOW_IPPROTO_TCP_EMERG_EST_TIMEOUT);
proto_map = FlowGetProtoMapping(IPPROTO_UDP);
- if ((flow_proto[proto_map].new_timeout != FLOW_IPPROTO_UDP_NEW_TIMEOUT) && (flow_proto[proto_map].est_timeout != FLOW_IPPROTO_UDP_EST_TIMEOUT)
- && (flow_proto[proto_map].emerg_new_timeout != FLOW_IPPROTO_UDP_EMERG_NEW_TIMEOUT) && (flow_proto[proto_map].emerg_est_timeout != FLOW_IPPROTO_UDP_EMERG_EST_TIMEOUT)){
- printf ("failed in setting UDP flow timeout");
- return 0;
- }
+ FAIL_IF(flow_timeouts_normal[proto_map].new_timeout != FLOW_IPPROTO_UDP_NEW_TIMEOUT);
+ FAIL_IF(flow_timeouts_normal[proto_map].est_timeout != FLOW_IPPROTO_UDP_EST_TIMEOUT);
+ FAIL_IF(flow_timeouts_emerg[proto_map].new_timeout != FLOW_IPPROTO_UDP_EMERG_NEW_TIMEOUT);
+ FAIL_IF(flow_timeouts_emerg[proto_map].est_timeout != FLOW_IPPROTO_UDP_EMERG_EST_TIMEOUT);
proto_map = FlowGetProtoMapping(IPPROTO_ICMP);
- if ((flow_proto[proto_map].new_timeout != FLOW_IPPROTO_ICMP_NEW_TIMEOUT) && (flow_proto[proto_map].est_timeout != FLOW_IPPROTO_ICMP_EST_TIMEOUT)
- && (flow_proto[proto_map].emerg_new_timeout != FLOW_IPPROTO_ICMP_EMERG_NEW_TIMEOUT) && (flow_proto[proto_map].emerg_est_timeout != FLOW_IPPROTO_ICMP_EMERG_EST_TIMEOUT)){
- printf ("failed in setting ICMP flow timeout");
- return 0;
- }
+ FAIL_IF(flow_timeouts_normal[proto_map].new_timeout != FLOW_IPPROTO_ICMP_NEW_TIMEOUT);
+ FAIL_IF(flow_timeouts_normal[proto_map].est_timeout != FLOW_IPPROTO_ICMP_EST_TIMEOUT);
+ FAIL_IF(flow_timeouts_emerg[proto_map].new_timeout != FLOW_IPPROTO_ICMP_EMERG_NEW_TIMEOUT);
+ FAIL_IF(flow_timeouts_emerg[proto_map].est_timeout != FLOW_IPPROTO_ICMP_EMERG_EST_TIMEOUT);
proto_map = FlowGetProtoMapping(IPPROTO_DCCP);
- if ((flow_proto[proto_map].new_timeout != FLOW_DEFAULT_NEW_TIMEOUT) && (flow_proto[proto_map].est_timeout != FLOW_DEFAULT_EST_TIMEOUT)
- && (flow_proto[proto_map].emerg_new_timeout != FLOW_DEFAULT_EMERG_NEW_TIMEOUT) && (flow_proto[proto_map].emerg_est_timeout != FLOW_DEFAULT_EMERG_EST_TIMEOUT)){
- printf ("failed in setting default flow timeout");
- return 0;
- }
+ FAIL_IF(flow_timeouts_normal[proto_map].new_timeout != FLOW_DEFAULT_NEW_TIMEOUT);
+ FAIL_IF(flow_timeouts_normal[proto_map].est_timeout != FLOW_DEFAULT_EST_TIMEOUT);
+ FAIL_IF(flow_timeouts_emerg[proto_map].new_timeout != FLOW_DEFAULT_EMERG_NEW_TIMEOUT);
+ FAIL_IF(flow_timeouts_emerg[proto_map].est_timeout != FLOW_DEFAULT_EMERG_EST_TIMEOUT);
- return 1;
+ PASS;
}
/*Test function for the unit test FlowTest02*/
-void test(void *f) {}
+static void test(void *f) {}
/**
* \test Test the setting of the per protocol free function to free the
FlowSetProtoFreeFunc(IPPROTO_UDP, test);
FlowSetProtoFreeFunc(IPPROTO_ICMP, test);
- if (flow_proto[FLOW_PROTO_DEFAULT].Freefunc != test) {
- printf("Failed in setting default free function\n");
- return 0;
- }
- if (flow_proto[FLOW_PROTO_TCP].Freefunc != test) {
- printf("Failed in setting TCP free function\n");
- return 0;
- }
- if (flow_proto[FLOW_PROTO_UDP].Freefunc != test) {
- printf("Failed in setting UDP free function\n");
- return 0;
- }
- if (flow_proto[FLOW_PROTO_ICMP].Freefunc != test) {
- printf("Failed in setting ICMP free function\n");
- return 0;
- }
- return 1;
+ FAIL_IF(flow_freefuncs[FLOW_PROTO_DEFAULT].Freefunc != test);
+ FAIL_IF(flow_freefuncs[FLOW_PROTO_TCP].Freefunc != test);
+ FAIL_IF(flow_freefuncs[FLOW_PROTO_UDP].Freefunc != test);
+ FAIL_IF(flow_freefuncs[FLOW_PROTO_ICMP].Freefunc != test);
+
+ PASS;
}
/**