From: Hans Dedecker Date: Mon, 10 Mar 2014 15:27:53 +0000 (+0100) Subject: netifd: Set interface state in teardown state before launching an interface event X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=commitdiff_plain;h=b114b86c70766f67f503077ad1de013c17fbf366 netifd: Set interface state in teardown state before launching an interface event Interface state needs to be set in teardown state before launching an interface event otherwise the up state will be reported as true in the ubus interface notify message Signed-off-by: Hans Dedecker --- diff --git a/interface.c b/interface.c index 43ba773..39460e4 100644 --- a/interface.c +++ b/interface.c @@ -222,11 +222,14 @@ mark_interface_down(struct interface *iface) void __interface_set_down(struct interface *iface, bool force) { - switch (iface->state) { + enum interface_state state = iface->state; + switch (state) { case IFS_UP: - interface_event(iface, IFEV_DOWN); case IFS_SETUP: iface->state = IFS_TEARDOWN; + if (state == IFS_UP) + interface_event(iface, IFEV_DOWN); + interface_proto_event(iface->proto, PROTO_CMD_TEARDOWN, force); if (force) interface_flush_state(iface);