diff --git a/src/args.rs b/src/args.rs index 1264fc0..309f7d0 100644 --- a/src/args.rs +++ b/src/args.rs @@ -45,6 +45,10 @@ pub struct Args { #[arg(long, value_name = "seconds", default_value = "600")] pub tcp_timeout: u64, + /// UDP timeout in seconds + #[arg(long, value_name = "seconds", default_value = "10")] + pub udp_timeout: u64, + /// Verbosity level #[arg(short, long, value_name = "level", value_enum, default_value = "info")] pub verbosity: ArgVerbosity, @@ -62,6 +66,7 @@ impl Default for Args { dns_addr: "8.8.8.8".parse().unwrap(), bypass: vec![], tcp_timeout: 600, + udp_timeout: 10, verbosity: ArgVerbosity::Info, } } diff --git a/src/lib.rs b/src/lib.rs index 5936440..6a8f699 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -50,7 +50,6 @@ mod virtual_dns; const DNS_PORT: u16 = 53; const MAX_SESSIONS: u64 = 200; -const UDP_TIMEOUT_SEC: u64 = 10; // 10 seconds static TASK_COUNT: std::sync::atomic::AtomicU64 = std::sync::atomic::AtomicU64::new(0); use std::sync::atomic::Ordering::Relaxed; @@ -87,7 +86,7 @@ where let mut ipstack_config = ipstack::IpStackConfig::default(); ipstack_config.mtu(mtu); ipstack_config.tcp_timeout(std::time::Duration::from_secs(args.tcp_timeout)); - ipstack_config.udp_timeout(std::time::Duration::from_secs(UDP_TIMEOUT_SEC)); + ipstack_config.udp_timeout(std::time::Duration::from_secs(args.udp_timeout)); let mut ip_stack = ipstack::IpStack::new(ipstack_config, device);