diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-03-15 16:14:53 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-03-19 08:10:29 +0900 |
commit | 03677889f0ef42cdc534bf3b31265a054b20a354 (patch) | |
tree | 53caa0977a8afc5d0ee90e038ffd566e9e22451f /src/network/netdev | |
parent | 40f35786b0030f1f7c4b88828776ada1dd74d03e (diff) | |
download | systemd-03677889f0ef42cdc534bf3b31265a054b20a354.tar.gz |
list: declare iterator of LIST_FOREACH() in the loop
Diffstat (limited to 'src/network/netdev')
-rw-r--r-- | src/network/netdev/wireguard.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/network/netdev/wireguard.c b/src/network/netdev/wireguard.c index 3bb496130b..21510282e8 100644 --- a/src/network/netdev/wireguard.c +++ b/src/network/netdev/wireguard.c @@ -147,7 +147,7 @@ cancel: } static int wireguard_set_peer_one(NetDev *netdev, sd_netlink_message *message, const WireguardPeer *peer, uint16_t index, WireguardIPmask **mask_start) { - WireguardIPmask *mask, *start; + WireguardIPmask *start, *last = NULL; uint16_t j = 0; int r; @@ -196,8 +196,10 @@ static int wireguard_set_peer_one(NetDev *netdev, sd_netlink_message *message, c r = wireguard_set_ipmask_one(netdev, message, mask, ++j); if (r < 0) return r; - if (r == 0) + if (r == 0) { + last = mask; break; + } } r = sd_netlink_message_close_container(message); @@ -208,8 +210,8 @@ static int wireguard_set_peer_one(NetDev *netdev, sd_netlink_message *message, c if (r < 0) return log_netdev_error_errno(netdev, r, "Could not add wireguard peer: %m"); - *mask_start = mask; /* Start next cycle from this mask. */ - return !mask; + *mask_start = last; /* Start next cycle from this mask. */ + return !last; cancel: r = sd_netlink_message_cancel_array(message); @@ -222,7 +224,7 @@ cancel: static int wireguard_set_interface(NetDev *netdev) { _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *message = NULL; WireguardIPmask *mask_start = NULL; - WireguardPeer *peer, *peer_start; + WireguardPeer *peer_start; bool sent_once = false; uint32_t serial; Wireguard *w; @@ -267,14 +269,17 @@ static int wireguard_set_interface(NetDev *netdev) { if (r < 0) return log_netdev_error_errno(netdev, r, "Could not append wireguard peer attributes: %m"); + WireguardPeer *peer_last = NULL; LIST_FOREACH(peers, peer, peer_start) { r = wireguard_set_peer_one(netdev, message, peer, ++i, &mask_start); if (r < 0) return r; - if (r == 0) + if (r == 0) { + peer_last = peer; break; + } } - peer_start = peer; /* Start next cycle from this peer. */ + peer_start = peer_last; /* Start next cycle from this peer. */ r = sd_netlink_message_close_container(message); if (r < 0) @@ -424,7 +429,6 @@ static int peer_resolve_endpoint(WireguardPeer *peer) { } static void wireguard_resolve_endpoints(NetDev *netdev) { - WireguardPeer *peer; Wireguard *w; assert(netdev); @@ -1124,7 +1128,6 @@ static int wireguard_peer_verify(WireguardPeer *peer) { } static int wireguard_verify(NetDev *netdev, const char *filename) { - WireguardPeer *peer, *peer_next; Wireguard *w; int r; @@ -1144,8 +1147,6 @@ static int wireguard_verify(NetDev *netdev, const char *filename) { "Ignoring network device.", filename); LIST_FOREACH_SAFE(peers, peer, peer_next, w->peers) { - WireguardIPmask *ipmask; - if (wireguard_peer_verify(peer) < 0) { wireguard_peer_free(peer); continue; |