Merge in SNORT/snort3 from ~SHANMS/snort3:tcp_conn_timeout to master
Squashed commit of the following:
commit
43753f773b6dacc772d85766718bb15b4ac0da5a
Author: shanms <shanms@cisco.com>
Date: Thu Jun 22 14:41:06 2023 +0000
tcp: timeout for embryonic and idle session
bool trust_is_deferred()
{ return deferred_trust.is_deferred(); }
+
+ void set_idle_timeout(unsigned timeout)
+ { idle_timeout = timeout; }
public: // FIXIT-M privatize if possible
// fields are organized by initialization and size to minimize
unsigned inspection_policy_id = 0;
unsigned ips_policy_id = 0;
unsigned reload_id = 0;
-
uint32_t tenant = 0;
-
uint32_t default_session_timeout = 0;
-
+ uint32_t idle_timeout = 0;
int32_t client_intf = 0;
int32_t server_intf = 0;
assert(flow);
link_uni(flow);
flow->last_data_seen = timestamp;
+ flow->set_idle_timeout(config.proto[to_utype(flow->key->pkt_type)].nominal_timeout);
+
return flow;
}
if ( flow->expire_time > (uint64_t) thetime )
break;
}
- else if ( flow->last_data_seen + config.proto[to_utype(flow->key->pkt_type)].nominal_timeout > thetime )
+ else if ( flow->last_data_seen + flow->idle_timeout > thetime )
break;
if ( HighAvailabilityManager::in_standby(flow) or
{ "track_only", Parameter::PT_BOOL, nullptr, "false",
"disable reassembly if true" },
+ { "embryonic_timeout", Parameter::PT_INT, "1:max31", "30",
+ "Non-established connection timeout" },
+
+ { "idle_timeout", Parameter::PT_INT, "1:max31", "3600",
+ "session deletion on idle " },
+
{ nullptr, Parameter::PT_MAX, nullptr, nullptr, nullptr }
};
else if ( v.is("session_timeout") )
config->session_timeout = v.get_uint32();
+ else if ( v.is("embryonic_timeout") )
+ config->embryonic_timeout = v.get_uint32();
+
+ else if ( v.is("idle_timeout") )
+ config->idle_timeout = v.get_uint32();
+
else if ( v.is("reassemble_async") )
{
if ( v.get_bool() )
tcp_config = get_tcp_cfg(flow->ssn_server);
flow->set_default_session_timeout(tcp_config->session_timeout, false);
+ flow->set_idle_timeout(tcp_config->embryonic_timeout);
set_os_policy();
SESSION_STATS_ADD(tcpStats)
int hs_timeout = -1;
bool no_ack;
+ uint32_t embryonic_timeout = STREAM_DEFAULT_SSN_TIMEOUT;
+ uint32_t idle_timeout;
};
#endif
{
update_perf_base_state(TcpStreamTracker::TCP_ESTABLISHED);
flow->session_state |= STREAM_STATE_ESTABLISHED;
+ flow->set_idle_timeout(this->tcp_config->idle_timeout);
if (SSNFLAG_ESTABLISHED != (SSNFLAG_ESTABLISHED & flow->get_session_flags()))
{
flow->set_session_flags(SSNFLAG_ESTABLISHED);