summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--talpid-core/src/tunnel/tun_provider/mod.rs9
-rw-r--r--talpid-core/src/tunnel/tun_provider/stub.rs6
-rw-r--r--talpid-core/src/tunnel/tun_provider/unix.rs6
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()