chiark / gitweb /
networkd: remove "*" from domains list
[elogind.git] / src / network / networkd-link.c
index d929a8012919ea69a6a854fcb1b89d8b5961bf98..76e642758d5b14e7d532e26e17cf5651b7d0f5e7 100644 (file)
@@ -380,7 +380,8 @@ void link_client_handler(Link *link) {
                 if (!link->dhcp4_configured)
                         return;
 
-        link_enter_configured(link);
+        if (link->state != LINK_STATE_CONFIGURED)
+                link_enter_configured(link);
 
         return;
 }
@@ -1721,6 +1722,7 @@ int link_save(Link *link) {
 
         if (link->network) {
                 char **address;
+                char **domain;
 
                 fputs("DNS=", f);
 
@@ -1762,6 +1764,29 @@ int link_save(Link *link) {
 
                 fputs("\n", f);
 
+                fprintf(f, "DOMAINS=");
+
+                if (link->network->dhcp_domains &&
+                    link->dhcp_lease) {
+                        const char *domainname;
+
+                        r = sd_dhcp_lease_get_domainname(link->dhcp_lease, &domainname);
+                        if (r >= 0) {
+                                fputs(domainname, f);
+                                if (link->network->domains)
+                                        fputs(" ", f);
+                        }
+                }
+
+                STRV_FOREACH(domain, link->network->domains)
+                        fprintf(f, "%s%s", *domain,
+                                (domain + 1 ? " " : ""));
+
+                fputs("\n", f);
+
+                fprintf(f, "WILDCARD_DOMAIN=%s\n",
+                        yes_no(link->network->wildcard_domain));
+
                 fprintf(f, "LLMNR=%s\n",
                         llmnr_support_to_string(link->network->llmnr));
         }