diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-25 16:54:09 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-10-31 17:25:23 +0100 |
commit | bd6692ea74658bc084ba8fa1979549beda104be7 (patch) | |
tree | b810a8685ded8ebf4419249172f6ebdd47b84352 /src/netlink.c | |
parent | c02f8ba156cf4223504edf9c64febeca304831b4 (diff) |
peer: get rid of peer_for_each magic
Since the peer list is protected by the device_update_lock, and since
items are removed from the peer list before putting their final
reference, we don't actually need to take a reference when iterating.
This allows us to simplify the macro considerably.
Suggested-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'src/netlink.c')
-rw-r--r-- | src/netlink.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/netlink.c b/src/netlink.c index 72dfa2b..fed16dc 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -254,13 +254,13 @@ static int get_device_done(struct netlink_callback *cb) static int set_port(struct wireguard_device *wg, u16 port) { - struct wireguard_peer *peer, *temp; + struct wireguard_peer *peer; if (wg->incoming_port == port) return 0; socket_uninit(wg); wg->incoming_port = port; - peer_for_each (wg, peer, temp, false) + list_for_each_entry (peer, &wg->peer_list, peer_list) socket_clear_peer_endpoint_src(peer); if (!netif_running(wg->dev)) return 0; @@ -400,10 +400,10 @@ static int set_device(struct sk_buff *skb, struct genl_info *info) ++wg->device_update_gen; if (info->attrs[WGDEVICE_A_FWMARK]) { - struct wireguard_peer *peer, *temp; + struct wireguard_peer *peer; wg->fwmark = nla_get_u32(info->attrs[WGDEVICE_A_FWMARK]); - peer_for_each (wg, peer, temp, false) + list_for_each_entry (peer, &wg->peer_list, peer_list) socket_clear_peer_endpoint_src(peer); } @@ -428,7 +428,7 @@ static int set_device(struct sk_buff *skb, struct genl_info *info) peer_remove(peer); } noise_set_static_identity_private_key(&wg->static_identity, private_key); - peer_for_each (wg, peer, temp, false) { + list_for_each_entry_safe (peer, temp, &wg->peer_list, peer_list) { if (!noise_precompute_static_static(peer)) peer_remove(peer); } |