chiark / gitweb /
sd-network: add sd_network_linkg_get_domains()
authorTom Gundersen <teg@jklm.no>
Thu, 14 Aug 2014 18:35:37 +0000 (20:35 +0200)
committerTom Gundersen <teg@jklm.no>
Thu, 14 Aug 2014 21:13:14 +0000 (23:13 +0200)
For now this only exposes the domain name (DHCP Option 15), and not
the search string (DHCP Option 119), which will be implemented in
a follow-up patch.

src/libsystemd/sd-network/sd-network.c
src/network/networkd-link.c
src/systemd/sd-network.h

index 97d041a..4d8b7e7 100644 (file)
@@ -206,6 +206,10 @@ _public_ int sd_network_link_get_ntp(int ifindex, char ***ret) {
         return network_get_link_strv("NTP", ifindex, ret);
 }
 
+_public_ int sd_network_link_get_domains(int ifindex, char ***ret) {
+        return network_get_link_strv("DOMAINS", ifindex, ret);
+}
+
 static inline int MONITOR_TO_FD(sd_network_monitor *m) {
         return (int) (unsigned long) m - 1;
 }
index 160f507..6497090 100644 (file)
@@ -1763,6 +1763,15 @@ int link_save(Link *link) {
 
                 fputs("\n", f);
 
+                if (link->network->dhcp_domainname &&
+                    link->dhcp_lease) {
+                        const char *domainname;
+
+                        r = sd_dhcp_lease_get_domainname(link->dhcp_lease, &domainname);
+                        if (r >= 0)
+                                fprintf(f, "DOMAINS=%s\n", domainname);
+                }
+
                 fprintf(f, "LLMNR=%s\n",
                         llmnr_support_to_string(link->network->llmnr));
         }
index 47731c2..db78507 100644 (file)
@@ -104,6 +104,9 @@ int sd_network_link_get_ntp(int ifindex, char ***addr);
  *   -ENODATA: networkd is not aware of the link*/
 int sd_network_link_get_llmnr(int ifindex, char **llmnr);
 
+/* Get the DNS domain names for a given link. */
+int sd_network_link_get_domains(int ifindex, char ***domains);
+
 /* Monitor object */
 typedef struct sd_network_monitor sd_network_monitor;