From 4ff328b7da876fb3305fefd83865553af9c8ab2c Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Mon, 28 Oct 2019 14:48:24 +0100 Subject: First full test of pure WireGuard --- src/platform/dummy/bind.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/platform/dummy/bind.rs') diff --git a/src/platform/dummy/bind.rs b/src/platform/dummy/bind.rs index 984b886..3497656 100644 --- a/src/platform/dummy/bind.rs +++ b/src/platform/dummy/bind.rs @@ -1,7 +1,12 @@ +use hex; use std::error::Error; use std::fmt; use std::marker; +use log::debug; +use rand::rngs::OsRng; +use rand::Rng; + use std::sync::mpsc::{sync_channel, Receiver, SyncSender}; use std::sync::Arc; use std::sync::Mutex; @@ -95,6 +100,7 @@ impl VoidBind { #[derive(Clone)] pub struct PairReader { + id: u32, recv: Arc>>>, _marker: marker::PhantomData, } @@ -110,13 +116,25 @@ impl Reader for PairReader { .map_err(|_| BindError::Disconnected)?; let len = vec.len(); buf[..len].copy_from_slice(&vec[..]); - Ok((vec.len(), UnitEndpoint {})) + debug!( + "dummy({}): read ({}, {})", + self.id, + len, + hex::encode(&buf[..len]) + ); + Ok((len, UnitEndpoint {})) } } impl Writer for PairWriter { type Error = BindError; fn write(&self, buf: &[u8], _dst: &UnitEndpoint) -> Result<(), Self::Error> { + debug!( + "dummy({}): write ({}, {})", + self.id, + buf.len(), + hex::encode(buf) + ); let owned = buf.to_owned(); match self.send.lock().unwrap().send(owned) { Err(_) => Err(BindError::Disconnected), @@ -127,6 +145,7 @@ impl Writer for PairWriter { #[derive(Clone)] pub struct PairWriter { + id: u32, send: Arc>>>, _marker: marker::PhantomData, } @@ -139,25 +158,33 @@ impl PairBind { (PairReader, PairWriter), (PairReader, PairWriter), ) { + let mut rng = OsRng::new().unwrap(); + let id1: u32 = rng.gen(); + let id2: u32 = rng.gen(); + let (tx1, rx1) = sync_channel(128); let (tx2, rx2) = sync_channel(128); ( ( PairReader { + id: id1, recv: Arc::new(Mutex::new(rx1)), _marker: marker::PhantomData, }, PairWriter { + id: id1, send: Arc::new(Mutex::new(tx2)), _marker: marker::PhantomData, }, ), ( PairReader { + id: id2, recv: Arc::new(Mutex::new(rx2)), _marker: marker::PhantomData, }, PairWriter { + id: id2, send: Arc::new(Mutex::new(tx1)), _marker: marker::PhantomData, }, -- cgit v1.2.3-59-g8ed1b