summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMarkus Pettersson <markus.pettersson@mullvad.net>2024-12-30 14:22:26 +0100
committerMarkus Pettersson <markus.pettersson@mullvad.net>2025-01-03 10:16:05 +0100
commit5fea427faf237e5f3081d8d52c4044c13f831e42 (patch)
treef7cc06e0d5d9e60f407cd62e336c527a0f8a0bc5
parent3a134c9356b80885127f9a8e061186e506cf3585 (diff)
downloadmullvadvpn-5fea427faf237e5f3081d8d52c4044c13f831e42.tar.xz
mullvadvpn-5fea427faf237e5f3081d8d52c4044c13f831e42.zip
Remove `duct` from `talpid-tunnel`
-rw-r--r--Cargo.lock1
-rw-r--r--talpid-tunnel/Cargo.toml1
-rw-r--r--talpid-tunnel/src/tun_provider/unix.rs37
3 files changed, 15 insertions, 24 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 599621943c..a603834bff 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4526,7 +4526,6 @@ name = "talpid-tunnel"
version = "0.0.0"
dependencies = [
"cfg-if",
- "duct",
"futures",
"ipnetwork",
"jnix",
diff --git a/talpid-tunnel/Cargo.toml b/talpid-tunnel/Cargo.toml
index 8fcd270370..580fe886d2 100644
--- a/talpid-tunnel/Cargo.toml
+++ b/talpid-tunnel/Cargo.toml
@@ -20,7 +20,6 @@ futures = { workspace = true }
tokio = { workspace = true, features = ["process", "rt-multi-thread", "fs"] }
[target.'cfg(all(unix, not(target_os = "android")))'.dependencies]
-duct = "0.13"
nix = "0.23"
[target.'cfg(target_os = "android")'.dependencies]
diff --git a/talpid-tunnel/src/tun_provider/unix.rs b/talpid-tunnel/src/tun_provider/unix.rs
index 1081b3ce44..a1344a4248 100644
--- a/talpid-tunnel/src/tun_provider/unix.rs
+++ b/talpid-tunnel/src/tun_provider/unix.rs
@@ -163,31 +163,24 @@ impl TunnelDevice {
IpAddr::V6(ipv6) => {
#[cfg(target_os = "linux")]
{
- duct::cmd!(
- "ip",
- "-6",
- "addr",
- "add",
- ipv6.to_string(),
- "dev",
- self.dev.name()
- )
- .run()
- .map(|_| ())
- .map_err(Error::SetIpv6)
+ use std::process::Command;
+ // ip -6 addr add <ipv6 address> dev <device>
+ let address = ipv6.to_string();
+ let device = self.dev.name();
+ let mut ip = Command::new("ip");
+ ip.args(["-6", "addr", "add", &address, "dev", device]);
+ ip.output().map_err(Error::SetIpv6)?;
+ Ok(())
}
#[cfg(target_os = "macos")]
{
- duct::cmd!(
- "ifconfig",
- self.dev.name(),
- "inet6",
- ipv6.to_string(),
- "alias"
- )
- .run()
- .map(|_| ())
- .map_err(Error::SetIpv6)
+ // ifconfig <device> inet6 <ipv6 address> alias
+ let address = ipv6.to_string();
+ let device = self.dev.name();
+ let mut ifconfig = Command::new("ifconfig");
+ ifconfig.args([device, "inet6", &address, "alias"]);
+ ifconfig.output().map_err(Error::SetIpv6)?;
+ Ok(())
}
}
}