tun2proxy/src/ios.rs

39 lines
1,018 B
Rust
Raw Normal View History

2024-02-01 19:15:32 +08:00
#![cfg(target_os = "ios")]
use crate::{
args::{ArgDns, ArgProxy},
ArgVerbosity, Args,
};
use std::os::raw::{c_char, c_int, c_ushort};
2024-02-01 19:15:32 +08:00
/// # Safety
///
/// Run the tun2proxy component with some arguments.
#[no_mangle]
2024-02-12 21:36:18 +08:00
pub unsafe extern "C" fn tun2proxy_run_with_fd(
2024-02-01 19:15:32 +08:00
proxy_url: *const c_char,
tun_fd: c_int,
tun_mtu: c_ushort,
2024-02-07 23:32:51 +08:00
dns_strategy: ArgDns,
verbosity: ArgVerbosity,
2024-02-01 19:15:32 +08:00
) -> c_int {
2024-02-07 23:32:51 +08:00
log::set_max_level(verbosity.into());
2024-02-01 19:15:32 +08:00
log::set_boxed_logger(Box::<crate::dump_logger::DumpLogger>::default()).unwrap();
let proxy_url = std::ffi::CStr::from_ptr(proxy_url).to_str().unwrap();
let proxy = ArgProxy::from_url(proxy_url).unwrap();
2024-02-12 21:36:18 +08:00
let mut args = Args::default();
args.proxy(proxy).tun_fd(Some(tun_fd)).dns(dns_strategy).verbosity(verbosity);
2024-02-01 19:15:32 +08:00
crate::api::tun2proxy_internal_run(args, tun_mtu)
2024-02-01 19:15:32 +08:00
}
/// # Safety
///
/// Shutdown the tun2proxy component.
#[no_mangle]
pub unsafe extern "C" fn tun2proxy_stop() -> c_int {
crate::api::tun2proxy_internal_stop()
}