nterface-ip: remove superfluous iface check in interface_ip_set_enabled()
[project/netifd.git] / interface.c
index f150f7d..2a23984 100644 (file)
@@ -241,6 +241,7 @@ interface_event(struct interface *iface, enum interface_event ev)
                adev = iface->l3_dev.dev;
                /* fall through */
        case IFEV_DOWN:
+       case IFEV_UP_FAILED:
                alias_notify_device(iface->name, adev);
                break;
        default:
@@ -266,8 +267,16 @@ mark_interface_down(struct interface *iface)
 
        iface->link_up_event = false;
        iface->state = IFS_DOWN;
-       if (state == IFS_UP)
+       switch (state) {
+       case IFS_UP:
                interface_event(iface, IFEV_DOWN);
+               break;
+       case IFS_SETUP:
+               interface_event(iface, IFEV_UP_FAILED);
+               break;
+       default:
+               break;
+       }
        interface_ip_set_enabled(&iface->config_ip, false);
        interface_ip_set_enabled(&iface->proto_ip, false);
        interface_ip_flush(&iface->proto_ip);
@@ -557,6 +566,7 @@ interface_alias_cb(struct interface_user *dep, struct interface *iface, enum int
                interface_set_available(alias, true);
                break;
        case IFEV_DOWN:
+       case IFEV_UP_FAILED:
                interface_set_available(alias, false);
                interface_set_main_dev(alias, NULL);
                break;
@@ -1076,6 +1086,15 @@ interface_set_down(struct interface *iface)
        return 0;
 }
 
+int
+interface_renew(struct interface *iface)
+{
+       if (iface->state == IFS_TEARDOWN || iface->state == IFS_DOWN)
+               return -1;
+
+       return interface_proto_event(iface->proto, PROTO_CMD_RENEW, false);
+}
+
 void
 interface_start_pending(void)
 {