mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-06-05 06:10:15 +00:00
switch to tun crate instead of tun2
This commit is contained in:
parent
b9cf06da33
commit
3fb02f0fc7
4 changed files with 8 additions and 9 deletions
|
@ -38,7 +38,7 @@ thiserror = "1"
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { version = "1", features = ["full"] }
|
||||||
tokio-util = "0.7"
|
tokio-util = "0.7"
|
||||||
tproxy-config = { version = "6", default-features = false }
|
tproxy-config = { version = "6", default-features = false }
|
||||||
tun2 = { version = "3", features = ["async"] }
|
tun = { version = "0.7", features = ["async"] }
|
||||||
udp-stream = { version = "0.0.12", default-features = false }
|
udp-stream = { version = "0.0.12", default-features = false }
|
||||||
unicase = "2"
|
unicase = "2"
|
||||||
url = "2"
|
url = "2"
|
||||||
|
|
|
@ -30,10 +30,9 @@ pub struct Args {
|
||||||
pub tun_fd: Option<i32>,
|
pub tun_fd: Option<i32>,
|
||||||
|
|
||||||
/// Set whether to close the received raw file descriptor on drop or not.
|
/// Set whether to close the received raw file descriptor on drop or not.
|
||||||
/// This setting is passed to the tun2 crate.
|
/// This setting is dependent on [tun_fd].
|
||||||
/// See [tun2::Configuration::close_fd_on_drop].
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
#[arg(long, value_name = "true or false", conflicts_with = "tun")]
|
#[arg(long, value_name = "true or false", conflicts_with = "tun", requires = "tun_fd")]
|
||||||
pub close_fd_on_drop: Option<bool>,
|
pub close_fd_on_drop: Option<bool>,
|
||||||
|
|
||||||
/// Create a tun interface in a newly created unprivileged namespace
|
/// Create a tun interface in a newly created unprivileged namespace
|
||||||
|
|
|
@ -6,7 +6,7 @@ use crate::{
|
||||||
};
|
};
|
||||||
use std::os::raw::{c_char, c_int};
|
use std::os::raw::{c_char, c_int};
|
||||||
use tproxy_config::{TproxyArgs, TUN_GATEWAY, TUN_IPV4, TUN_NETMASK};
|
use tproxy_config::{TproxyArgs, TUN_GATEWAY, TUN_IPV4, TUN_NETMASK};
|
||||||
use tun2::{AbstractDevice, DEFAULT_MTU as MTU};
|
use tun::{AbstractDevice, DEFAULT_MTU as MTU};
|
||||||
|
|
||||||
static TUN_QUIT: std::sync::Mutex<Option<tokio_util::sync::CancellationToken>> = std::sync::Mutex::new(None);
|
static TUN_QUIT: std::sync::Mutex<Option<tokio_util::sync::CancellationToken>> = std::sync::Mutex::new(None);
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ pub unsafe extern "C" fn tun2proxy_with_name_run(
|
||||||
pub async fn desktop_run_async(args: Args, shutdown_token: tokio_util::sync::CancellationToken) -> std::io::Result<()> {
|
pub async fn desktop_run_async(args: Args, shutdown_token: tokio_util::sync::CancellationToken) -> std::io::Result<()> {
|
||||||
let bypass_ips = args.bypass.clone();
|
let bypass_ips = args.bypass.clone();
|
||||||
|
|
||||||
let mut tun_config = tun2::Configuration::default();
|
let mut tun_config = tun::Configuration::default();
|
||||||
tun_config.address(TUN_IPV4).netmask(TUN_NETMASK).mtu(MTU).up();
|
tun_config.address(TUN_IPV4).netmask(TUN_NETMASK).mtu(MTU).up();
|
||||||
tun_config.destination(TUN_GATEWAY);
|
tun_config.destination(TUN_GATEWAY);
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
|
@ -122,7 +122,7 @@ pub async fn desktop_run_async(args: Args, shutdown_token: tokio_util::sync::Can
|
||||||
#[allow(unused_mut, unused_assignments, unused_variables)]
|
#[allow(unused_mut, unused_assignments, unused_variables)]
|
||||||
let mut setup = true;
|
let mut setup = true;
|
||||||
|
|
||||||
let device = tun2::create_as_async(&tun_config)?;
|
let device = tun::create_as_async(&tun_config)?;
|
||||||
|
|
||||||
if let Ok(tun_name) = device.tun_name() {
|
if let Ok(tun_name) = device.tun_name() {
|
||||||
tproxy_args = tproxy_args.tun_name(&tun_name);
|
tproxy_args = tproxy_args.tun_name(&tun_name);
|
||||||
|
|
|
@ -28,7 +28,7 @@ pub fn mobile_run(args: Args, tun_mtu: u16, _packet_information: bool) -> c_int
|
||||||
}
|
}
|
||||||
|
|
||||||
let block = async move {
|
let block = async move {
|
||||||
let mut config = tun2::Configuration::default();
|
let mut config = tun::Configuration::default();
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
if let Some(fd) = args.tun_fd {
|
if let Some(fd) = args.tun_fd {
|
||||||
|
@ -49,7 +49,7 @@ pub fn mobile_run(args: Args, tun_mtu: u16, _packet_information: bool) -> c_int
|
||||||
config.packet_information(_packet_information);
|
config.packet_information(_packet_information);
|
||||||
});
|
});
|
||||||
|
|
||||||
let device = tun2::create_as_async(&config).map_err(std::io::Error::from)?;
|
let device = tun::create_as_async(&config).map_err(std::io::Error::from)?;
|
||||||
let join_handle = tokio::spawn(crate::run(device, tun_mtu, args, shutdown_token));
|
let join_handle = tokio::spawn(crate::run(device, tun_mtu, args, shutdown_token));
|
||||||
|
|
||||||
join_handle.await.map_err(std::io::Error::from)?
|
join_handle.await.map_err(std::io::Error::from)?
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue