From a0fa261a8a9542418072c42cfe73807d8d30cf88 Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Sun, 3 Nov 2019 18:33:49 +0100 Subject: Work on UAPI parser --- src/wireguard/tests.rs | 4 ++-- src/wireguard/wireguard.rs | 22 ++++++++-------------- 2 files changed, 10 insertions(+), 16 deletions(-) (limited to 'src/wireguard') diff --git a/src/wireguard/tests.rs b/src/wireguard/tests.rs index 6a02e1f..83ef594 100644 --- a/src/wireguard/tests.rs +++ b/src/wireguard/tests.rs @@ -120,8 +120,8 @@ fn test_pure_wireguard() { let pk2 = PublicKey::from(&sk2); - wg1.new_peer(pk2); - wg2.new_peer(pk1); + wg1.add_peer(pk2); + wg2.add_peer(pk1); wg1.set_key(Some(sk1)); wg2.set_key(Some(sk2)); diff --git a/src/wireguard/wireguard.rs b/src/wireguard/wireguard.rs index 78f24da..6cdae6c 100644 --- a/src/wireguard/wireguard.rs +++ b/src/wireguard/wireguard.rs @@ -148,16 +148,6 @@ impl PeerInner { self.queue.lock().send(HandshakeJob::New(self.pk)).unwrap(); } } - - pub fn set_persistent_keepalive_interval(&self, interval: usize) { - self.timers().send_persistent_keepalive.stop(); - self.keepalive.store(interval, Ordering::SeqCst); - if interval > 0 { - self.timers() - .send_persistent_keepalive - .start(Duration::from_secs(internal as u64)); - } - } } struct Handshake { @@ -260,7 +250,11 @@ impl Wireguard { self.state.handshake.write().device.set_psk(pk, psk).is_ok() } - pub fn new_peer(&self, pk: PublicKey) { + pub fn add_peer(&self, pk: PublicKey) { + if self.state.peers.read().contains_key(pk.as_bytes()) { + return; + } + let mut rng = OsRng::new().unwrap(); let state = Arc::new(PeerInner { id: rng.gen(), @@ -278,9 +272,6 @@ impl Wireguard { // create a router peer let router = Arc::new(self.state.router.new_peer(state.clone())); - // add to the handshake device - self.state.handshake.write().device.add(pk).unwrap(); // TODO: handle adding of public key for interface - // form WireGuard peer let peer = Peer { router, state }; @@ -295,6 +286,9 @@ impl Wireguard { // finally, add the peer to the wireguard device let mut peers = self.state.peers.write(); peers.entry(*pk.as_bytes()).or_insert(peer); + + // add to the handshake device + self.state.handshake.write().device.add(pk).unwrap(); // TODO: handle adding of public key for interface } /* Begin consuming messages from the reader. -- cgit v1.2.3-59-g8ed1b