support udp gateway mode

This commit is contained in:
suchao 2024-10-17 13:59:46 +08:00
parent fe32a65291
commit aee8e14a22
6 changed files with 965 additions and 1 deletions

View file

@ -74,6 +74,10 @@ pub struct Args {
#[arg(short, long, value_name = "strategy", value_enum, default_value = "direct")]
pub dns: ArgDns,
/// UDP gateway address
#[arg(long, value_name = "IP:PORT")]
pub udpgw_bind_addr: Option<SocketAddr>,
/// DNS resolver address
#[arg(long, value_name = "IP", default_value = "8.8.8.8")]
pub dns_addr: IpAddr,
@ -136,6 +140,7 @@ impl Default for Args {
admin_command: Vec::new(),
ipv6_enabled: false,
setup,
udpgw_bind_addr: None,
dns: ArgDns::default(),
dns_addr: "8.8.8.8".parse().unwrap(),
bypass: vec![],
@ -171,6 +176,11 @@ impl Args {
self
}
pub fn udpgw(&mut self, udpgw: SocketAddr) -> &mut Self {
self.udpgw_bind_addr = Some(udpgw);
self
}
#[cfg(unix)]
pub fn tun_fd(&mut self, tun_fd: Option<i32>) -> &mut Self {
self.tun_fd = tun_fd;