Implement disable/enable timers

This commit is contained in:
Mathias Hall-Andersen
2019-11-06 13:50:38 +01:00
parent 6ba40f17cb
commit 293914e47b
6 changed files with 138 additions and 88 deletions

View File

@@ -130,6 +130,9 @@ impl<T: Tun, B: Bind> Wireguard<T, B> {
// ensure exclusive access (to avoid race with "up" call)
let peers = self.peers.write();
// avoid tranmission from router
self.router.down();
// set all peers down (stops timers)
for peer in peers.values() {
peer.down();
@@ -142,6 +145,9 @@ impl<T: Tun, B: Bind> Wireguard<T, B> {
// ensure exclusive access (to avoid race with "down" call)
let peers = self.peers.write();
// enable tranmission from router
self.router.up();
// set all peers up (restarts timers)
for peer in peers.values() {
peer.up();
@@ -215,7 +221,6 @@ impl<T: Tun, B: Bind> Wireguard<T, B> {
last_handshake_sent: Mutex::new(self.state.start - TIME_HORIZON),
handshake_queued: AtomicBool::new(false),
queue: Mutex::new(self.state.queue.lock().clone()),
keepalive_interval: AtomicU64::new(0), // disabled
rx_bytes: AtomicU64::new(0),
tx_bytes: AtomicU64::new(0),
timers: RwLock::new(Timers::dummy(&self.runner)),