X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=interface.c;h=35f20b087fdee2906296cb29cbbf65045a34d9ea;hb=b2dcb02570939d98b92c7c55db1c328693a5d52a;hp=8627d97d652bfd6f6fe3d92df1553059000e950a;hpb=922c169147fc6e4c4ecf94029528192636e917e7;p=project%2Fnetifd.git diff --git a/interface.c b/interface.c index 8627d97..35f20b0 100644 --- a/interface.c +++ b/interface.c @@ -272,11 +272,14 @@ interface_check_state(struct interface *iface) switch (iface->state) { case IFS_UP: if (!iface->enabled || !link_state) { - mark_interface_down(iface); interface_proto_event(iface->proto, PROTO_CMD_TEARDOWN, false); + mark_interface_down(iface); } break; case IFS_DOWN: + if (!iface->available) + return; + if (iface->autostart && iface->enabled && link_state && !config_init) __interface_set_up(iface); break; @@ -527,6 +530,7 @@ interface_cleanup(struct interface *iface) { struct interface_user *dep, *tmp; + uloop_timeout_cancel(&iface->remove_timer); device_remove_user(&iface->ext_dev); if (iface->parent_iface.iface)