style: rustfmt tun general.rs

This commit is contained in:
lbl
2026-08-22 04:05:10 +08:00
parent 3e2274dfe5
commit 453234bf8d
+31 -29
View File
@@ -9,10 +9,10 @@ use std::io;
use std::net::Ipv4Addr; use std::net::Ipv4Addr;
use std::sync::Arc; use std::sync::Arc;
use tokio::sync::mpsc::{Receiver, Sender}; use tokio::sync::mpsc::{Receiver, Sender};
use tun_rs::async_framed::{Decoder, DeviceFramedRead, DeviceFramedWrite, Encoder};
use tun_rs::AsyncDevice; use tun_rs::AsyncDevice;
#[cfg(not(target_os = "android"))] #[cfg(not(target_os = "android"))]
use tun_rs::DeviceBuilder; use tun_rs::DeviceBuilder;
use tun_rs::async_framed::{Decoder, DeviceFramedRead, DeviceFramedWrite, Encoder};
#[derive(Clone)] #[derive(Clone)]
pub struct DeviceIOManager { pub struct DeviceIOManager {
@@ -130,40 +130,42 @@ impl DeviceIOManager {
fn create_tun(config: DeviceConfig) -> anyhow::Result<AsyncDevice> { fn create_tun(config: DeviceConfig) -> anyhow::Result<AsyncDevice> {
#[cfg(target_os = "android")] #[cfg(target_os = "android")]
{ {
let fd = config.tun_fd.context("Android requires a VpnService TUN fd")?; let fd = config
.tun_fd
.context("Android requires a VpnService TUN fd")?;
// SAFETY: The fd comes directly from ParcelFileDescriptor returned by // SAFETY: The fd comes directly from ParcelFileDescriptor returned by
// VpnService.Builder.establish and remains open for the network lifetime. // VpnService.Builder.establish and remains open for the network lifetime.
return unsafe { Ok(AsyncDevice::from_fd(fd)?) }; return unsafe { Ok(AsyncDevice::from_fd(fd)?) };
} }
#[cfg(not(target_os = "android"))] #[cfg(not(target_os = "android"))]
{ {
#[cfg(unix)] #[cfg(unix)]
if let Some(fd) = config.tun_fd { if let Some(fd) = config.tun_fd {
// SAFETY: Caller must ensure fd is a valid, open file descriptor for a TUN device. // SAFETY: Caller must ensure fd is a valid, open file descriptor for a TUN device.
// Using an invalid fd may cause undefined behavior. // Using an invalid fd may cause undefined behavior.
unsafe { return Ok(AsyncDevice::from_fd(fd)?) } unsafe { return Ok(AsyncDevice::from_fd(fd)?) }
} }
let mut builder = DeviceBuilder::new(); let mut builder = DeviceBuilder::new();
if let Some(tun_name) = config.tun_name { if let Some(tun_name) = config.tun_name {
builder = builder.name(tun_name); builder = builder.name(tun_name);
} }
if let Some(mtu) = config.mtu { if let Some(mtu) = config.mtu {
builder = builder.mtu(mtu); builder = builder.mtu(mtu);
} }
#[cfg(windows)] #[cfg(windows)]
{ {
builder = builder.metric(1); builder = builder.metric(1);
} }
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
{ {
builder = builder.offload(true); builder = builder.offload(true);
} }
let dev = builder.build_async().context("创建tun失败")?; let dev = builder.build_async().context("创建tun失败")?;
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
{ {
_ = dev.set_tx_queue_len(1000); _ = dev.set_tx_queue_len(1000);
} }
Ok(dev) Ok(dev)
} }
} }
fn create( fn create(