Set dynamic interface flag after adding them so the version is preserved
[project/netifd.git] / ubus.c
diff --git a/ubus.c b/ubus.c
index 794444e..399d46b 100644 (file)
--- a/ubus.c
+++ b/ubus.c
@@ -140,7 +140,6 @@ netifd_add_dynamic(struct ubus_context *ctx, struct ubus_object *obj,
        if (!iface)
                return UBUS_STATUS_UNKNOWN_ERROR;
 
-       interface_set_dynamic(iface);
        iface->device_config = true;
 
        config = blob_memdup(msg);
@@ -148,6 +147,7 @@ netifd_add_dynamic(struct ubus_context *ctx, struct ubus_object *obj,
                goto error;
 
        interface_add(iface, config);
+       interface_set_dynamic(iface);
 
        // need to look up the interface name again, in case of config update,
        iface = vlist_find(&interfaces, name, iface, node);
@@ -463,6 +463,9 @@ interface_ip_dump_route_list(struct interface_ip_settings *ip, bool enabled)
                if (route->enabled != enabled)
                        continue;
 
+               if ((ip->no_defaultroute == enabled) && !route->mask)
+                       continue;
+
                if ((route->flags & DEVADDR_FAMILY) == DEVADDR_INET4)
                        af = AF_INET;
                else