stackforge_core/flow/
config.rs1use std::path::PathBuf;
2use std::time::Duration;
3
4#[derive(Debug, Clone)]
9pub struct FlowConfig {
10 pub tcp_established_timeout: Duration,
12 pub tcp_half_open_timeout: Duration,
14 pub tcp_time_wait_timeout: Duration,
16 pub udp_timeout: Duration,
18 pub max_reassembly_buffer: usize,
20 pub max_ooo_fragments: usize,
22 pub eviction_interval: Duration,
24 pub track_max_packet_len: bool,
26 pub track_max_flow_len: bool,
28 pub memory_budget: Option<usize>,
31 pub spill_dir: Option<PathBuf>,
33 pub verbose: bool,
35}
36
37impl Default for FlowConfig {
38 fn default() -> Self {
39 Self {
40 tcp_established_timeout: Duration::from_secs(86_400),
41 tcp_half_open_timeout: Duration::from_secs(5),
42 tcp_time_wait_timeout: Duration::from_secs(120),
43 udp_timeout: Duration::from_secs(120),
44 max_reassembly_buffer: 16 * 1024 * 1024, max_ooo_fragments: 100,
46 eviction_interval: Duration::from_secs(30),
47 track_max_packet_len: false,
48 track_max_flow_len: false,
49 memory_budget: None,
50 spill_dir: None,
51 verbose: false,
52 }
53 }
54}
55
56#[cfg(test)]
57mod tests {
58 use super::*;
59
60 #[test]
61 fn test_default_config() {
62 let config = FlowConfig::default();
63 assert_eq!(config.tcp_established_timeout, Duration::from_secs(86_400));
64 assert_eq!(config.tcp_half_open_timeout, Duration::from_secs(5));
65 assert_eq!(config.tcp_time_wait_timeout, Duration::from_secs(120));
66 assert_eq!(config.udp_timeout, Duration::from_secs(120));
67 assert_eq!(config.max_reassembly_buffer, 16 * 1024 * 1024);
68 assert_eq!(config.max_ooo_fragments, 100);
69 assert_eq!(config.eviction_interval, Duration::from_secs(30));
70 assert!(!config.track_max_packet_len);
71 assert!(!config.track_max_flow_len);
72 }
73}