From f228b6f98b141940a3302d4cd1978f56f5edb13e Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Mon, 25 Nov 2019 13:33:00 +0100 Subject: Enable up/down from configuration interface --- src/wireguard/router/tests.rs | 8 ++++---- src/wireguard/tests.rs | 8 ++++---- src/wireguard/wireguard.rs | 12 +++++++----- 3 files changed, 15 insertions(+), 13 deletions(-) (limited to 'src/wireguard') diff --git a/src/wireguard/router/tests.rs b/src/wireguard/router/tests.rs index 2d6bb63..d96dc90 100644 --- a/src/wireguard/router/tests.rs +++ b/src/wireguard/router/tests.rs @@ -139,7 +139,7 @@ mod tests { } // create device - let (_fake, _reader, tun_writer, _mtu) = dummy::TunTest::create(1500, false); + let (_fake, _reader, tun_writer, _mtu) = dummy::TunTest::create(false); let router: Device<_, BencherCallbacks, dummy::TunWriter, dummy::VoidBind> = Device::new(num_cpus::get(), tun_writer); @@ -169,7 +169,7 @@ mod tests { init(); // create device - let (_fake, _reader, tun_writer, _mtu) = dummy::TunTest::create(1500, false); + let (_fake, _reader, tun_writer, _mtu) = dummy::TunTest::create(false); let router: Device<_, TestCallbacks, _, _> = Device::new(1, tun_writer); router.set_outbound_writer(dummy::VoidBind::new()); @@ -315,8 +315,8 @@ mod tests { dummy::PairBind::pair(); // create matching device - let (_fake, _, tun_writer1, _) = dummy::TunTest::create(1500, false); - let (_fake, _, tun_writer2, _) = dummy::TunTest::create(1500, false); + let (_fake, _, tun_writer1, _) = dummy::TunTest::create(false); + let (_fake, _, tun_writer2, _) = dummy::TunTest::create(false); let router1: Device<_, TestCallbacks, _, _> = Device::new(1, tun_writer1); router1.set_outbound_writer(bind_writer1); diff --git a/src/wireguard/tests.rs b/src/wireguard/tests.rs index 8217d72..7a18005 100644 --- a/src/wireguard/tests.rs +++ b/src/wireguard/tests.rs @@ -84,17 +84,17 @@ fn test_pure_wireguard() { // create WG instances for dummy TUN devices - let (fake1, tun_reader1, tun_writer1, _) = dummy::TunTest::create(1500, true); + let (fake1, tun_reader1, tun_writer1, _) = dummy::TunTest::create(true); let wg1: Wireguard = Wireguard::new(vec![tun_reader1], tun_writer1); - wg1.set_mtu(1500); + wg1.up(1500); - let (fake2, tun_reader2, tun_writer2, _) = dummy::TunTest::create(1500, true); + let (fake2, tun_reader2, tun_writer2, _) = dummy::TunTest::create(true); let wg2: Wireguard = Wireguard::new(vec![tun_reader2], tun_writer2); - wg2.set_mtu(1500); + wg2.up(1500); // create pair bind to connect the interfaces "over the internet" diff --git a/src/wireguard/wireguard.rs b/src/wireguard/wireguard.rs index 41f6857..61f6428 100644 --- a/src/wireguard/wireguard.rs +++ b/src/wireguard/wireguard.rs @@ -147,6 +147,9 @@ impl Wireguard { // ensure exclusive access (to avoid race with "up" call) let peers = self.peers.write(); + // set mtu + self.state.mtu.store(0, Ordering::Relaxed); + // avoid tranmission from router self.router.down(); @@ -158,10 +161,13 @@ impl Wireguard { /// Brings the WireGuard device up. /// Usually called when the associated interface is brought up. - pub fn up(&self) { + pub fn up(&self, mtu: usize) { // ensure exclusive access (to avoid race with "down" call) let peers = self.peers.write(); + // set mtu + self.state.mtu.store(mtu, Ordering::Relaxed); + // enable tranmission from router self.router.up(); @@ -338,10 +344,6 @@ impl Wireguard { }); } - pub fn set_mtu(&self, mtu: usize) { - self.mtu.store(mtu, Ordering::Relaxed); - } - pub fn set_writer(&self, writer: B::Writer) { // TODO: Consider unifying these and avoid Clone requirement on writer *self.state.send.write() = Some(writer.clone()); -- cgit v1.2.3-59-g8ed1b