From f3016c40e39c358d703fa11ae53822a60d0b42c6 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 29 Nov 2022 10:58:08 +0900 Subject: [PATCH 1/3] network: add missing assertion --- src/network/networkd-util.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/network/networkd-util.h b/src/network/networkd-util.h index e8c390196e..31ff4bc425 100644 --- a/src/network/networkd-util.h +++ b/src/network/networkd-util.h @@ -91,6 +91,7 @@ int network_config_state_to_string_alloc(NetworkConfigState s, char **ret); 0); \ } \ static inline bool name##_is_requesting(type *t) { \ + assert(t); \ return FLAGS_SET(t->state, NETWORK_CONFIG_STATE_REQUESTING); \ } \ static inline void name##_enter_configuring(type *t) { \ From aaad20e0e1066ae9efa51251ecfa1c30a14dd323 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 30 Nov 2022 10:21:50 +0900 Subject: [PATCH 2/3] network: address: always update link state when an address is removed The removed address might be in the tentative state. --- src/network/networkd-address.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 107f19fd15..e6db72f4f4 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -504,13 +504,11 @@ static int address_update(Address *address) { static int address_drop(Address *address) { Link *link; - bool ready; int r; assert(address); assert(address->link); - ready = address_is_ready(address); link = address->link; r = address_set_masquerade(address, false); @@ -522,11 +520,8 @@ static int address_drop(Address *address) { if (address->state == 0) address_free(address); - link_update_operstate(link, true); - - if (link && !ready) - link_check_ready(link); - + link_update_operstate(link, /* also_update_master = */ true); + link_check_ready(link); return 0; } From 4bbe559b5c06387a56cb765076790a4bd47d0e82 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Wed, 30 Nov 2022 10:22:39 +0900 Subject: [PATCH 3/3] network: address: use ASSERT_PTR() --- src/network/networkd-address.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index e6db72f4f4..eae374323e 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -462,14 +462,9 @@ static int address_add(Link *link, Address *address) { } static int address_update(Address *address) { - Link *link; + Link *link = ASSERT_PTR(ASSERT_PTR(address)->link); int r; - assert(address); - assert(address->link); - - link = address->link; - if (address_is_ready(address) && address->family == AF_INET6 && in6_addr_is_link_local(&address->in_addr.in6) && @@ -485,7 +480,7 @@ static int address_update(Address *address) { if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER)) return 0; - r = address_set_masquerade(address, true); + r = address_set_masquerade(address, /* add = */ true); if (r < 0) return log_link_warning_errno(link, r, "Could not enable IP masquerading: %m"); @@ -497,21 +492,16 @@ static int address_update(Address *address) { return r; } - link_update_operstate(link, true); + link_update_operstate(link, /* also_update_master = */ true); link_check_ready(link); return 0; } static int address_drop(Address *address) { - Link *link; + Link *link = ASSERT_PTR(ASSERT_PTR(address)->link); int r; - assert(address); - assert(address->link); - - link = address->link; - - r = address_set_masquerade(address, false); + r = address_set_masquerade(address, /* add = */ false); if (r < 0) log_link_warning_errno(link, r, "Failed to disable IP masquerading, ignoring: %m");