]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
network: drop REMOVING flag when a netlink message is sent to kernel
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 22 Nov 2022 04:03:55 +0000 (13:03 +0900)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 6 Dec 2022 15:01:01 +0000 (16:01 +0100)
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.

src/network/networkd-util.h

index 31ff4bc4256adf5df878df078994d25e4716f436..f75fb1f8685c37bf592a71f6a8a826718e3e4b81 100644 (file)
@@ -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) {           \