pass interface route metric to routes when adding them
[project/netifd.git] / interface-ip.c
index 1a22980..b681b81 100644 (file)
@@ -337,6 +337,9 @@ interface_update_proto_route(struct vlist_tree *tree,
        if (node_new) {
                bool _enabled = enable_route(ip, route_new);
 
+               if (!(route_new->flags & DEVROUTE_METRIC))
+                       route_new->metric = iface->metric;
+
                if (!(route_new->flags & DEVADDR_EXTERNAL) && !keep && _enabled)
                        system_add_route(dev, route_new);
 
@@ -544,8 +547,10 @@ void interface_ip_set_enabled(struct interface_ip_settings *ip, bool enabled)
 void
 interface_ip_update_start(struct interface_ip_settings *ip)
 {
-       vlist_simple_update(&ip->dns_servers);
-       vlist_simple_update(&ip->dns_search);
+       if (ip != &ip->iface->config_ip) {
+               vlist_simple_update(&ip->dns_servers);
+               vlist_simple_update(&ip->dns_search);
+       }
        vlist_update(&ip->route);
        vlist_update(&ip->addr);
 }