diff options
| -rw-r--r-- | talpid-core/src/tunnel/tun_provider/mod.rs | 9 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/tun_provider/stub.rs | 6 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/tun_provider/unix.rs | 6 |
3 files changed, 21 insertions, 0 deletions
diff --git a/talpid-core/src/tunnel/tun_provider/mod.rs b/talpid-core/src/tunnel/tun_provider/mod.rs index 63d8800d1f..636a986582 100644 --- a/talpid-core/src/tunnel/tun_provider/mod.rs +++ b/talpid-core/src/tunnel/tun_provider/mod.rs @@ -12,6 +12,15 @@ cfg_if! { #[path = "unix.rs"] mod imp; use self::imp::UnixTunProvider; + + /// Default implementation of `TunProvider` for Unix based operating systems. + /// + /// Android has a different mechanism to obtain tunnel interfaces, so it is not supported + /// here. + pub type PlatformTunProvider = UnixTunProvider; + } else { + /// Default stub implementation of `TunProvider` for Android and Windows. + pub type PlatformTunProvider = StubTunProvider; } } diff --git a/talpid-core/src/tunnel/tun_provider/stub.rs b/talpid-core/src/tunnel/tun_provider/stub.rs index 10f3f2e283..0b94b426bf 100644 --- a/talpid-core/src/tunnel/tun_provider/stub.rs +++ b/talpid-core/src/tunnel/tun_provider/stub.rs @@ -4,6 +4,12 @@ use talpid_types::BoxedError; /// Factory stub of tunnel devices. pub struct StubTunProvider; +impl Default for StubTunProvider { + fn default() -> Self { + StubTunProvider + } +} + impl TunProvider for StubTunProvider { fn create_tun(&self, _: TunConfig) -> Result<Box<dyn Tun>, BoxedError> { unimplemented!(); diff --git a/talpid-core/src/tunnel/tun_provider/unix.rs b/talpid-core/src/tunnel/tun_provider/unix.rs index d0191622bf..c0715a81bd 100644 --- a/talpid-core/src/tunnel/tun_provider/unix.rs +++ b/talpid-core/src/tunnel/tun_provider/unix.rs @@ -22,6 +22,12 @@ pub enum Error { /// Factory of tunnel devices on Unix systems. pub struct UnixTunProvider; +impl Default for UnixTunProvider { + fn default() -> Self { + UnixTunProvider + } +} + impl TunProvider for UnixTunProvider { fn create_tun(&self, config: TunConfig) -> Result<Box<dyn Tun>, BoxedError> { let mut tunnel_device = TunnelDevice::new() |
