summaryrefslogtreecommitdiff
path: root/src/network/netdev
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-05-13 20:48:18 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-08-05 21:49:27 +0900
commit4b482e8bf4763320d05aeb4b4e31b21b433b1123 (patch)
tree05b8ea4a86855c544b6e1f9cf7e3a7df28f69da8 /src/network/netdev
parent2fd3908b5c4d716b3eac450b2e529a08455d048e (diff)
downloadsystemd-4b482e8bf4763320d05aeb4b4e31b21b433b1123.tar.gz
network: check link state with link_is_ready_to_configure() before configuring DHCP client or friends
Otherwise, DHCP client or friends may started before link-layer properties, e.g. MAC address, being configured or the link being activated.
Diffstat (limited to 'src/network/netdev')
-rw-r--r--src/network/netdev/l2tp-tunnel.c4
-rw-r--r--src/network/netdev/netdev-util.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/network/netdev/l2tp-tunnel.c b/src/network/netdev/l2tp-tunnel.c
index c38b9dc312..7e7d167928 100644
--- a/src/network/netdev/l2tp-tunnel.c
+++ b/src/network/netdev/l2tp-tunnel.c
@@ -292,7 +292,7 @@ static int l2tp_get_local_address(NetDev *netdev, union in_addr_union *ret) {
if (r < 0)
return r;
- if (!IN_SET(link->state, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED))
+ if (!link_is_ready_to_configure(link, /* allow_unmanaged = */ false))
return -EBUSY;
}
@@ -346,7 +346,7 @@ static int l2tp_get_local_address(NetDev *netdev, union in_addr_union *ret) {
return link_get_l2tp_local_address(link, t, ret);
HASHMAP_FOREACH(link, netdev->manager->links_by_index) {
- if (!IN_SET(link->state, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED))
+ if (!link_is_ready_to_configure(link, /* allow_unmanaged = */ false))
continue;
if (link_get_l2tp_local_address(link, t, ret) >= 0)
diff --git a/src/network/netdev/netdev-util.c b/src/network/netdev/netdev-util.c
index 06028855a8..23506246ce 100644
--- a/src/network/netdev/netdev-util.c
+++ b/src/network/netdev/netdev-util.c
@@ -51,7 +51,7 @@ int link_get_local_address(
assert_not_reached();
}
- if (!IN_SET(link->state, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED))
+ if (!link_is_ready_to_configure(link, /* allow_unmanaged = */ false))
return -EBUSY;
SET_FOREACH(a, link->addresses) {