summaryrefslogtreecommitdiff
path: root/src/network
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-11-22 13:03:55 +0900
committerLuca Boccassi <luca.boccassi@gmail.com>2022-12-06 16:01:01 +0100
commitf4ee7b98c434bc9a0f436c29fd32225acd73e183 (patch)
tree453e108baf329bd883708af9fceebd2e525b2dfb /src/network
parent0927ae6a5c65c7c6f3ae11b7d1a2d1ca3e8ca985 (diff)
downloadsystemd-f4ee7b98c434bc9a0f436c29fd32225acd73e183.tar.gz
network: drop REMOVING flag when a netlink message is sent to kernel
When an interface goes to down, the kernel drops several routes automatically, and at the same time networkd requests to remove them, but the kernel sometimes does not respond the requests. Hence, the routes cannot drop the REMOVING flag, and networkd will never try to configure other routes which depend on the previously removed routes even if they are already reconfigured. With this patch, when networkd sends a request to configure a route (or any other network settings), REMOVING flag for the route is dropped without waiting for the reply about the previous remove request, as we can expect it will appear even if it is already removed or under removing. Fixes #24999.
Diffstat (limited to 'src/network')
-rw-r--r--src/network/networkd-util.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/network/networkd-util.h b/src/network/networkd-util.h
index 31ff4bc425..f75fb1f868 100644
--- a/src/network/networkd-util.h
+++ b/src/network/networkd-util.h
@@ -97,7 +97,8 @@ int network_config_state_to_string_alloc(NetworkConfigState s, char **ret);
static inline void name##_enter_configuring(type *t) { \
name##_update_state(t, \
NETWORK_CONFIG_STATE_REQUESTING | \
- NETWORK_CONFIG_STATE_CONFIGURING, \
+ NETWORK_CONFIG_STATE_CONFIGURING | \
+ NETWORK_CONFIG_STATE_REMOVING, \
NETWORK_CONFIG_STATE_CONFIGURING); \
} \
static inline void name##_enter_configured(type *t) { \