From e849afbda14aae690ab7b2b8c0734aaeba490ec9 Mon Sep 17 00:00:00 2001 From: Juliana Fajardini Date: Wed, 31 May 2023 22:52:48 -0300 Subject: [PATCH] exceptions: extract 'auto' check to function Part of Bug #5825 --- src/util-exception-policy.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/util-exception-policy.c b/src/util-exception-policy.c index 576cfa6250b9..a1fc9d41bf3f 100644 --- a/src/util-exception-policy.c +++ b/src/util-exception-policy.c @@ -184,6 +184,19 @@ static enum ExceptionPolicy ExceptionPolicyConfigValueParse( return policy; } +static enum ExceptionPolicy ExceptionPolicyPickAuto(bool midstream_enabled, bool support_flow) +{ + enum ExceptionPolicy policy = EXCEPTION_POLICY_NOT_SET; + if (!midstream_enabled && EngineModeIsIPS()) { + if (support_flow) { + policy = EXCEPTION_POLICY_DROP_FLOW; + } else { + policy = EXCEPTION_POLICY_DROP_PACKET; + } + } + return policy; +} + static enum ExceptionPolicy ExceptionPolicyMasterParse(const char *value) { enum ExceptionPolicy policy = EXCEPTION_POLICY_NOT_SET; @@ -228,6 +241,9 @@ enum ExceptionPolicy ExceptionPolicyParse(const char *option, bool support_flow) policy = ExceptionPolicyMasterParse(value_str); } else { policy = ExceptionPolicyConfigValueParse(option, value_str); + if (policy == EXCEPTION_POLICY_AUTO) { + policy = ExceptionPolicyPickAuto(false, support_flow); + } if (!support_flow) { policy = PickPacketAction(option, policy); } @@ -247,7 +263,9 @@ enum ExceptionPolicy ExceptionPolicyMidstreamParse(bool midstream_enabled) /* policy was set directly */ if ((ConfGet("stream.midstream-policy", &value_str)) == 1 && value_str != NULL) { policy = ExceptionPolicyConfigValueParse("midstream-policy", value_str); - if (midstream_enabled) { + if (policy == EXCEPTION_POLICY_AUTO) { + policy = ExceptionPolicyPickAuto(midstream_enabled, true); + } else if (midstream_enabled) { if (policy != EXCEPTION_POLICY_NOT_SET && policy != EXCEPTION_POLICY_PASS_FLOW) { FatalErrorOnInit( "Error parsing stream.midstream-policy from config file. \"%s\" is "