From b114b86c70766f67f503077ad1de013c17fbf366 Mon Sep 17 00:00:00 2001 From: Hans Dedecker Date: Mon, 10 Mar 2014 16:27:53 +0100 Subject: 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 --- interface.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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); -- cgit v1.2.3