Use the latest version of tun-rs

This commit is contained in:
lbl
2025-07-19 22:10:53 +08:00
parent 2b2a550a98
commit 22eee048d0
3 changed files with 28 additions and 114 deletions
Generated
+18 -107
View File
@@ -88,30 +88,6 @@ version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457"
[[package]]
name = "async-channel"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
dependencies = [
"concurrent-queue",
"event-listener-strategy",
"futures-core",
"pin-project-lite",
]
[[package]]
name = "async-task"
version = "4.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
[[package]]
name = "atomic-waker"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "attohttpc"
version = "0.16.3"
@@ -224,19 +200,6 @@ dependencies = [
"generic-array",
]
[[package]]
name = "blocking"
version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
dependencies = [
"async-channel",
"async-task",
"futures-io",
"futures-lite",
"piper",
]
[[package]]
name = "bumpalo"
version = "3.19.0"
@@ -395,15 +358,6 @@ dependencies = [
"vnt",
]
[[package]]
name = "concurrent-queue"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "console"
version = "0.15.11"
@@ -636,27 +590,6 @@ dependencies = [
"windows-sys 0.60.2",
]
[[package]]
name = "event-listener"
version = "5.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae"
dependencies = [
"concurrent-queue",
"parking",
"pin-project-lite",
]
[[package]]
name = "event-listener-strategy"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
dependencies = [
"event-listener",
"pin-project-lite",
]
[[package]]
name = "fastrand"
version = "2.3.0"
@@ -696,22 +629,6 @@ version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
[[package]]
name = "futures-io"
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
[[package]]
name = "futures-lite"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
dependencies = [
"futures-core",
"pin-project-lite",
]
[[package]]
name = "futures-macro"
version = "0.3.31"
@@ -1082,6 +999,17 @@ dependencies = [
"generic-array",
]
[[package]]
name = "io-uring"
version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013"
dependencies = [
"bitflags",
"cfg-if",
"libc",
]
[[package]]
name = "ipnet"
version = "2.11.0"
@@ -1563,12 +1491,6 @@ dependencies = [
"byteorder",
]
[[package]]
name = "parking"
version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
[[package]]
name = "parking_lot"
version = "0.12.4"
@@ -1625,17 +1547,6 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "piper"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
dependencies = [
"atomic-waker",
"fastrand",
"futures-io",
]
[[package]]
name = "pkcs1"
version = "0.7.5"
@@ -2423,17 +2334,19 @@ dependencies = [
[[package]]
name = "tokio"
version = "1.45.1"
version = "1.46.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779"
checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17"
dependencies = [
"backtrace",
"bytes",
"io-uring",
"libc",
"mio 1.0.4",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
"slab",
"socket2",
"tokio-macros",
"windows-sys 0.52.0",
@@ -2479,12 +2392,11 @@ dependencies = [
[[package]]
name = "tun-rs"
version = "2.4.2"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2ea0d5c871693b7b3129f2d8bb72442ebc0a76fd690faf68c962bc6184c5d81"
checksum = "041ac55a23c02ef3ca62bf41a6a43830119818e07f65805bad27afb93292fc9c"
dependencies = [
"bindgen 0.72.0",
"blocking",
"byteorder",
"bytes",
"c2rust-bitfields",
@@ -2498,7 +2410,6 @@ dependencies = [
"nix 0.30.1",
"route_manager",
"scopeguard",
"tokio",
"widestring",
"windows-sys 0.60.2",
"winreg",
@@ -2704,7 +2615,7 @@ dependencies = [
"tokio",
"tokio-tungstenite",
"tun-rs",
"windows-sys 0.59.0",
"windows-sys 0.60.2",
"winreg",
"zstd",
]
+3 -3
View File
@@ -6,7 +6,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
tun-rs = { version = "2", optional = true, features = ["async"] }
tun-rs = { version = "2.5.0", optional = true, features = ["interruptible"] }
packet = { path = "./packet" }
bytes = "1.5.0"
log = "0.4.17"
@@ -38,7 +38,7 @@ crossbeam-queue = "0.3.11"
anyhow = "1.0.82"
dns-parser = "0.8.0"
tokio = { version = "1.37.0", features = ["full"] }
tokio = { version = "1.46.1", features = ["full"] }
lz4_flex = { version = "0.11", default-features = false, optional = true }
zstd = { version = "0.13.1", optional = true }
@@ -54,7 +54,7 @@ futures-util = "0.3.30"
[target.'cfg(target_os = "windows")'.dependencies]
winreg = "0.55.0"
libloading = "0.8.0"
windows-sys = { version = "0.59.0", features = ["Win32_Foundation",
windows-sys = { version = "0.60.2", features = ["Win32_Foundation",
"Win32_NetworkManagement",
"Win32_NetworkManagement_IpHelper",
"Win32_Networking_WinSock",
+7 -4
View File
@@ -13,7 +13,7 @@ use parking_lot::Mutex;
use std::collections::HashMap;
use std::net::Ipv4Addr;
use std::sync::Arc;
use tun_rs::SyncDevice;
use tun_rs::{InterruptEvent, SyncDevice};
pub(crate) fn start_simple(
stop_manager: StopManager,
@@ -29,10 +29,11 @@ pub(crate) fn start_simple(
device_stop: DeviceStop,
allow_wire_guard: bool,
) -> anyhow::Result<()> {
let event = Arc::new(InterruptEvent::new()?);
let worker = {
let device = device.clone();
let event = event.clone();
stop_manager.add_listener("tun_device".into(), move || {
if let Err(e) = device.shutdown() {
if let Err(e) = event.trigger() {
log::warn!("{:?}", e);
}
})?
@@ -50,6 +51,7 @@ pub(crate) fn start_simple(
if let Err(e) = start_simple0(
context,
device,
event,
current_device,
ip_route,
#[cfg(feature = "ip_proxy")]
@@ -72,6 +74,7 @@ pub(crate) fn start_simple(
fn start_simple0(
context: &ChannelContext,
device: Arc<SyncDevice>,
event: Arc<InterruptEvent>,
current_device: Arc<AtomicCell<CurrentDeviceInfo>>,
ip_route: ExternalRoute,
#[cfg(feature = "ip_proxy")] ip_proxy_map: Option<IpProxyMap>,
@@ -84,7 +87,7 @@ fn start_simple0(
let mut buf = [0; BUFFER_SIZE];
let mut extend = [0; BUFFER_SIZE];
loop {
let len = device.recv(&mut buf[12..])? + 12;
let len = device.recv_intr(&mut buf[12..],&event)? + 12;
// buf是重复利用的,需要重置头部
buf[..12].fill(0);
match crate::handle::tun_tap::tun_handler::handle(