From 3ab7ed3f12c7aaad9ded66a64b8a9ac20b0e9793 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 7 Jun 2019 15:04:11 +0900 Subject: [PATCH] network: ignore callback calls when link is in failed state --- src/network/networkd-dhcp4.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index 0ca5872..ce1e774 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -21,10 +21,14 @@ static int dhcp4_route_handler(sd_netlink *rtnl, sd_netlink_message *m, Link *li link->dhcp4_messages--; + if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER)) + return 1; + r = sd_netlink_message_get_errno(m); if (r < 0 && r != -EEXIST) { log_link_error_errno(link, r, "Could not set DHCPv4 route: %m"); link_enter_failed(link); + return 1; } if (link->dhcp4_messages == 0) { @@ -379,12 +383,17 @@ static int dhcp4_address_handler(sd_netlink *rtnl, sd_netlink_message *m, Link * assert(link); + if (IN_SET(link->state, LINK_STATE_FAILED, LINK_STATE_LINGER)) + return 1; + r = sd_netlink_message_get_errno(m); if (r < 0 && r != -EEXIST) { log_link_error_errno(link, r, "Could not set DHCPv4 address: %m"); link_enter_failed(link); - } else if (r >= 0) - manager_rtnl_process_address(rtnl, m, link->manager); + return 1; + } + + manager_rtnl_process_address(rtnl, m, link->manager); r = link_set_dhcp_routes(link); if (r < 0) { -- 2.7.4