pass interface route metric to routes when adding them
[project/netifd.git] / interface-ip.c
index 254e0bb..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);
 
@@ -489,7 +492,8 @@ interface_write_resolv_conf(void)
 
                fprintf(f, "# Interface %s\n", iface->name);
                write_resolv_conf_entries(f, &iface->config_ip);
-               write_resolv_conf_entries(f, &iface->proto_ip);
+               if (!iface->proto_ip.no_dns)
+                       write_resolv_conf_entries(f, &iface->proto_ip);
        }
        fclose(f);
        if (rename(path, resolv_conf) < 0) {
@@ -543,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);
 }