]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-network: add new API sd_network_link_get_dns_default_route()
authorLennart Poettering <lennart@poettering.net>
Tue, 4 Dec 2018 12:47:53 +0000 (13:47 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 21 Dec 2018 11:10:07 +0000 (12:10 +0100)
This simply reads from networkd's state files whether a link shall be
used as DNS default route.

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

index 4b66a92203ada24c4bf3a4eb09ef07c61ab943f5..d4b5e248cca595da331619b99e18c001b958c2ee 100644 (file)
@@ -204,6 +204,25 @@ _public_ int sd_network_link_get_route_domains(int ifindex, char ***ret) {
         return network_link_get_strv(ifindex, "ROUTE_DOMAINS", ret);
 }
 
+_public_ int sd_network_link_get_dns_default_route(int ifindex) {
+        char path[STRLEN("/run/systemd/netif/links/") + DECIMAL_STR_MAX(ifindex) + 1];
+        _cleanup_free_ char *s = NULL;
+        int r;
+
+        assert_return(ifindex > 0, -EINVAL);
+
+        xsprintf(path, "/run/systemd/netif/links/%i", ifindex);
+
+        r = parse_env_file(NULL, path, "DNS_DEFAULT_ROUTE", &s);
+        if (r == -ENOENT)
+                return -ENODATA;
+        if (r < 0)
+                return r;
+        if (isempty(s))
+                return -ENODATA;
+        return parse_boolean(s);
+}
+
 static int network_link_get_ifindexes(int ifindex, const char *key, int **ret) {
         char path[STRLEN("/run/systemd/netif/links/") + DECIMAL_STR_MAX(ifindex) + 1];
         _cleanup_free_ int *ifis = NULL;
index c8b7226bcafd35c686bd6683002d620ee8026bcb..cc6bca9f5ee60abd72c9561364072bb491d6ed3c 100644 (file)
@@ -151,6 +151,9 @@ int sd_network_link_get_search_domains(int ifindex, char ***domains);
 /* Get the route DNS domain names for a given link. */
 int sd_network_link_get_route_domains(int ifindex, char ***domains);
 
+/* Get whether this link shall be used as 'default route' for DNS queries */
+int sd_network_link_get_dns_default_route(int ifindex);
+
 /* Get the carrier interface indexes to which current link is bound to. */
 int sd_network_link_get_carrier_bound_to(int ifindex, int **ifindexes);