stackforge_core/flow/
config.rs1use std::time::Duration;
2
3#[derive(Debug, Clone)]
8pub struct FlowConfig {
9 pub tcp_established_timeout: Duration,
11 pub tcp_half_open_timeout: Duration,
13 pub tcp_time_wait_timeout: Duration,
15 pub udp_timeout: Duration,
17 pub max_reassembly_buffer: usize,
19 pub max_ooo_fragments: usize,
21 pub eviction_interval: Duration,
23}
24
25impl Default for FlowConfig {
26 fn default() -> Self {
27 Self {
28 tcp_established_timeout: Duration::from_secs(86_400),
29 tcp_half_open_timeout: Duration::from_secs(5),
30 tcp_time_wait_timeout: Duration::from_secs(120),
31 udp_timeout: Duration::from_secs(120),
32 max_reassembly_buffer: 16 * 1024 * 1024, max_ooo_fragments: 100,
34 eviction_interval: Duration::from_secs(30),
35 }
36 }
37}
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 #[test]
44 fn test_default_config() {
45 let config = FlowConfig::default();
46 assert_eq!(config.tcp_established_timeout, Duration::from_secs(86_400));
47 assert_eq!(config.tcp_half_open_timeout, Duration::from_secs(5));
48 assert_eq!(config.tcp_time_wait_timeout, Duration::from_secs(120));
49 assert_eq!(config.udp_timeout, Duration::from_secs(120));
50 assert_eq!(config.max_reassembly_buffer, 16 * 1024 * 1024);
51 assert_eq!(config.max_ooo_fragments, 100);
52 assert_eq!(config.eviction_interval, Duration::from_secs(30));
53 }
54}