aboutsummaryrefslogtreecommitdiffstats
path: root/src/wireguard/timers.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/wireguard/timers.rs')
-rw-r--r--src/wireguard/timers.rs41
1 files changed, 18 insertions, 23 deletions
diff --git a/src/wireguard/timers.rs b/src/wireguard/timers.rs
index a435e5c..94a95ab 100644
--- a/src/wireguard/timers.rs
+++ b/src/wireguard/timers.rs
@@ -237,25 +237,24 @@ impl Timers {
running: bool, // timers started
) -> Timers {
macro_rules! fetch_peer {
- ( $wg:expr, $pk:expr ) => {
- match $wg.lookup_peer(&$pk) {
+ ( $wg:expr, $pk:expr, $peer:ident) => {
+ let peers = $wg.peers.read();
+ let $peer = match peers.get(&$pk) {
None => {
return;
}
Some(peer) => peer,
- }
+ };
};
}
- macro_rules! fetch_timer {
- ( $peer:expr ) => {{
- let timers = $peer.timers();
- if timers.enabled {
- timers
- } else {
+ macro_rules! fetch_timers {
+ ( $peer:ident, $timers:ident) => {
+ let $timers = $peer.timers();
+ if !$timers.enabled {
return;
}
- }};
+ };
}
let runner = wg.runner.lock();
@@ -272,9 +271,8 @@ impl Timers {
let pk = pk.clone();
runner.timer(move || {
// fetch peer by public key
- let peer = fetch_peer!(wg, pk);
- let timers = fetch_timer!(peer);
- log::trace!("{} : timer fired (retransmit_handshake)", peer);
+ fetch_peer!(wg, pk, peer);
+ fetch_timers!(peer, timers);
// check if handshake attempts remaining
let attempts = timers.handshake_attempts.fetch_add(1, Ordering::SeqCst);
@@ -305,9 +303,8 @@ impl Timers {
let pk = pk.clone();
runner.timer(move || {
// fetch peer by public key
- let peer = fetch_peer!(wg, pk);
- let timers = fetch_timer!(peer);
- log::trace!("{} : timer fired (send_keepalive)", peer);
+ fetch_peer!(wg, pk, peer);
+ fetch_timers!(peer, timers);
// send keepalive and schedule next keepalive
peer.send_keepalive();
@@ -321,9 +318,8 @@ impl Timers {
let pk = pk.clone();
runner.timer(move || {
// fetch peer by public key
- let peer = fetch_peer!(wg, pk);
- let _timers = fetch_timer!(peer);
- log::trace!("{} : timer fired (new_handshake)", peer);
+ fetch_peer!(wg, pk, peer);
+ fetch_timers!(peer, timers);
// clear source and retry
log::debug!(
@@ -340,8 +336,7 @@ impl Timers {
let pk = pk.clone();
runner.timer(move || {
// fetch peer by public key
- let peer = fetch_peer!(wg, pk);
- let _timers = fetch_timer!(peer);
+ fetch_peer!(wg, pk, peer);
log::trace!("{} : timer fired (zero_key_material)", peer);
// null all key-material
@@ -353,8 +348,8 @@ impl Timers {
let pk = pk.clone();
runner.timer(move || {
// fetch peer by public key
- let peer = fetch_peer!(wg, pk);
- let timers = fetch_timer!(peer);
+ fetch_peer!(wg, pk, peer);
+ fetch_timers!(peer, timers);
log::trace!("{} : timer fired (send_persistent_keepalive)", peer);
// send and schedule persistent keepalive