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: https://git.librecmc.org/?a=commitdiff_plain;h=b114b86c70766f67f503077ad1de013c17fbf366;p=oweals%2Fnetifd.git 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);