summaryrefslogtreecommitdiffstats
path: root/src/platform
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2019-11-25 13:33:00 +0100
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2019-11-25 13:33:00 +0100
commitf228b6f98b141940a3302d4cd1978f56f5edb13e (patch)
treef0486d26f494ce7f5d507205aa5cd475d05385c1 /src/platform
parentMake IO traits suitable for Tun events (up/down) (diff)
downloadwireguard-rs-f228b6f98b141940a3302d4cd1978f56f5edb13e.tar.xz
wireguard-rs-f228b6f98b141940a3302d4cd1978f56f5edb13e.zip
Enable up/down from configuration interface
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/dummy/tun.rs5
-rw-r--r--src/platform/linux/tun.rs5
-rw-r--r--src/platform/tun.rs3
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>;
}