diff options
author | Matt Dunwoodie <ncon@noconroy.net> | 2021-04-20 08:55:08 +1000 |
---|---|---|
committer | Matt Dunwoodie <ncon@noconroy.net> | 2021-04-20 10:52:36 +1000 |
commit | 0fa8645fe431c29a8d9371679398bf7839bffec1 (patch) | |
tree | 05b69fe7b654c16dc4c9349d7164fb6e8f8c942b /src/wg_noise.c | |
parent | if_wg: add missing return parens to follow style(9) (diff) | |
download | wireguard-freebsd-0fa8645fe431c29a8d9371679398bf7839bffec1.tar.xz wireguard-freebsd-0fa8645fe431c29a8d9371679398bf7839bffec1.zip |
wg_noise: lookup both keypair and handshake index at once
Signed-off-by: Matt Dunwoodie <ncon@noconroy.net>
Diffstat (limited to '')
-rw-r--r-- | src/wg_noise.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/wg_noise.c b/src/wg_noise.c index 7cf160b..4a1134d 100644 --- a/src/wg_noise.c +++ b/src/wg_noise.c @@ -380,13 +380,19 @@ noise_remote_index_lookup(struct noise_local *l, uint32_t idx0) { struct epoch_tracker et; struct noise_index *i; + struct noise_keypair *kp; struct noise_remote *r, *ret = NULL; uint32_t idx = idx0 & HT_INDEX_MASK; NET_EPOCH_ENTER(et); CK_LIST_FOREACH(i, &l->l_index_hash[idx], i_entry) { - if (i->i_local_index == idx0 && !i->i_is_keypair) { - r = (struct noise_remote *) i; + if (i->i_local_index == idx0) { + if (i->i_is_keypair) { + kp = (struct noise_keypair *) i; + r = kp->kp_remote; + } else { + r = (struct noise_remote *) i; + } if (refcount_acquire_if_not_zero(&r->r_refcnt)) ret = r; break; |