diff options
Diffstat (limited to 'src/platform')
-rw-r--r-- | src/platform/dummy/tun.rs | 5 | ||||
-rw-r--r-- | src/platform/linux/tun.rs | 5 | ||||
-rw-r--r-- | src/platform/tun.rs | 3 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/platform/dummy/tun.rs b/src/platform/dummy/tun.rs index 6ddf7d5..5d13628 100644 --- a/src/platform/dummy/tun.rs +++ b/src/platform/dummy/tun.rs @@ -150,7 +150,6 @@ impl Status for TunStatus { impl Tun for TunTest { type Writer = TunWriter; type Reader = TunReader; - type Status = TunStatus; type Error = TunError; } @@ -167,7 +166,7 @@ impl TunFakeIO { } impl TunTest { - pub fn create(mtu: usize, store: bool) -> (TunFakeIO, TunReader, TunWriter, TunStatus) { + pub fn create(store: bool) -> (TunFakeIO, TunReader, TunWriter, TunStatus) { let (tx1, rx1) = if store { sync_channel(32) } else { @@ -200,6 +199,8 @@ impl TunTest { } impl PlatformTun for TunTest { + type Status = TunStatus; + fn create(_name: &str) -> Result<(Vec<Self::Reader>, Self::Writer, Self::Status), Self::Error> { Err(TunError::Disconnected) } diff --git a/src/platform/linux/tun.rs b/src/platform/linux/tun.rs index 604fad9..82eb469 100644 --- a/src/platform/linux/tun.rs +++ b/src/platform/linux/tun.rs @@ -87,10 +87,12 @@ impl Reader for LinuxTunReader { type Error = LinuxTunError; fn read(&self, buf: &mut [u8], offset: usize) -> Result<usize, Self::Error> { + /* debug_assert!( offset < buf.len(), "There is no space for the body of the read" ); + */ let n: isize = unsafe { read(self.fd, buf[offset..].as_mut_ptr() as _, buf.len() - offset) }; if n < 0 { @@ -132,10 +134,11 @@ impl Tun for LinuxTun { type Error = LinuxTunError; type Reader = LinuxTunReader; type Writer = LinuxTunWriter; - type Status = LinuxTunStatus; } impl PlatformTun for LinuxTun { + type Status = LinuxTunStatus; + fn create(name: &str) -> Result<(Vec<Self::Reader>, Self::Writer, Self::Status), Self::Error> { // construct request struct let mut req = Ifreq { diff --git a/src/platform/tun.rs b/src/platform/tun.rs index fda17fd..801754e 100644 --- a/src/platform/tun.rs +++ b/src/platform/tun.rs @@ -51,11 +51,12 @@ pub trait Reader: Send + 'static { pub trait Tun: Send + Sync + 'static { type Writer: Writer; type Reader: Reader; - type Status: Status; type Error: Error; } /// On some platforms the application can create the TUN device itself. pub trait PlatformTun: Tun { + type Status: Status; + fn create(name: &str) -> Result<(Vec<Self::Reader>, Self::Writer, Self::Status), Self::Error>; } |