X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-link.c;h=a37561a04ada49267a3a9175821582a172c501be;hb=e0fbf1fcffe014d5af6767b29f9108c2f2444888;hp=d929a8012919ea69a6a854fcb1b89d8b5961bf98;hpb=c6d3b3034acf1faec43b1281d3c7b94c23eb69d1;p=elogind.git diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index d929a8012..a37561a04 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -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,9 +1722,14 @@ int link_save(Link *link) { if (link->network) { char **address; + char **domain; fputs("DNS=", f); + STRV_FOREACH(address, link->network->dns) + fprintf(f, "%s%s", *address, + (address + 1 ? " " : "")); + if (link->network->dhcp_dns && link->dhcp_lease) { const struct in_addr *addresses; @@ -1736,14 +1742,14 @@ int link_save(Link *link) { } } - STRV_FOREACH(address, link->network->dns) - fprintf(f, "%s%s", *address, - (address + 1 ? " " : "")); - fputs("\n", f); fprintf(f, "NTP="); + STRV_FOREACH(address, link->network->ntp) + fprintf(f, "%s%s", *address, + (address + 1 ? " " : "")); + if (link->network->dhcp_ntp && link->dhcp_lease) { const struct in_addr *addresses; @@ -1756,12 +1762,31 @@ int link_save(Link *link) { } } - STRV_FOREACH(address, link->network->ntp) - fprintf(f, "%s%s", *address, - (address + 1 ? " " : "")); + fputs("\n", f); + + fprintf(f, "DOMAINS="); + + STRV_FOREACH(domain, link->network->domains) + fprintf(f, "%s%s", *domain, + (domain + 1 ? " " : "")); + + 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); + } + } 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)); }