summaryrefslogtreecommitdiff
path: root/interface.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2012-04-18 00:01:14 +0200
committerFelix Fietkau <nbd@openwrt.org>2012-04-18 00:01:14 +0200
commit10c15e535b04041795e3a85b2fb496bd6d856417 (patch)
treee0d3edc9d6394ffeab04d8b67b6e5ad828d654ef /interface.c
parentbc214ca470015b12a4f905f57ba6f2352c60f5a5 (diff)
downloadnetifd-10c15e535b04041795e3a85b2fb496bd6d856417.tar.gz
fix flushing routes/addresses on connection loss
Diffstat (limited to 'interface.c')
-rw-r--r--interface.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/interface.c b/interface.c
index 6b95a6d..4605a66 100644
--- a/interface.c
+++ b/interface.c
@@ -311,8 +311,8 @@ interface_proto_cb(struct interface_proto_state *state, enum interface_proto_eve
netifd_log_message(L_NOTICE, "Interface '%s' is now down\n", iface->name);
interface_ip_set_enabled(&iface->config_ip, false);
- system_flush_routes();
mark_interface_down(iface);
+ system_flush_routes();
interface_handle_config_change(iface);
break;
case IFPEV_LINK_LOST:
@@ -322,6 +322,8 @@ interface_proto_cb(struct interface_proto_state *state, enum interface_proto_eve
netifd_log_message(L_NOTICE, "Interface '%s' has lost the connection\n", iface->name);
if (iface->state == IFS_UP)
interface_event(iface, IFEV_DOWN);
+ mark_interface_down(iface);
+ system_flush_routes();
iface->state = IFS_SETUP;
break;
}