]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: add link_get_default_route helper
authorNick Rosbrook <enr0n@ubuntu.com>
Thu, 14 Nov 2024 19:31:07 +0000 (14:31 -0500)
committerNick Rosbrook <enr0n@ubuntu.com>
Mon, 27 Jan 2025 14:32:24 +0000 (09:32 -0500)
The dbus property getter for DefaultRoute does not simply check
link->default_route. Instead, if l->default_route is not explicitly
configured, it checks dns_scope_is_default_route(l->unicast_scope).

Add a link_get_default_route() helper with this logic so that it can be
used for consistency.

src/resolve/resolved-link-bus.c
src/resolve/resolved-link.c
src/resolve/resolved-link.h

index 1c26dcbc661d66b57b2e76adca46247d6ce5860f..b0c4b833b5d1e867192ccaf6b57c2427c6747128 100644 (file)
@@ -26,6 +26,7 @@ static BUS_DEFINE_PROPERTY_GET(property_get_dnssec_supported, "b", Link, link_dn
 static BUS_DEFINE_PROPERTY_GET2(property_get_dnssec_mode, "s", Link, link_get_dnssec_mode, dnssec_mode_to_string);
 static BUS_DEFINE_PROPERTY_GET2(property_get_llmnr_support, "s", Link, link_get_llmnr_support, resolve_support_to_string);
 static BUS_DEFINE_PROPERTY_GET2(property_get_mdns_support, "s", Link, link_get_mdns_support, resolve_support_to_string);
+static BUS_DEFINE_PROPERTY_GET(property_get_default_route, "b", Link, link_get_default_route);
 
 static int property_get_dns_over_tls_mode(
                 sd_bus *bus,
@@ -162,30 +163,6 @@ static int property_get_domains(
         return sd_bus_message_close_container(reply);
 }
 
-static int property_get_default_route(
-                sd_bus *bus,
-                const char *path,
-                const char *interface,
-                const char *property,
-                sd_bus_message *reply,
-                void *userdata,
-                sd_bus_error *error) {
-
-        Link *l = ASSERT_PTR(userdata);
-
-        assert(reply);
-
-        /* Return what is configured, if there's something configured */
-        if (l->default_route >= 0)
-                return sd_bus_message_append(reply, "b", l->default_route);
-
-        /* Otherwise report what is in effect */
-        if (l->unicast_scope)
-                return sd_bus_message_append(reply, "b", dns_scope_is_default_route(l->unicast_scope));
-
-        return sd_bus_message_append(reply, "b", false);
-}
-
 static int property_get_scopes_mask(
                 sd_bus *bus,
                 const char *path,
index 1c5ad0878c901145b1a365b9074e6ced04462fc2..df4b5993a3bb6a5e96e3d9e16f9cfc9bd2978e22 100644 (file)
@@ -14,6 +14,7 @@
 #include "mkdir.h"
 #include "netif-util.h"
 #include "parse-util.h"
+#include "resolved-dns-scope.h"
 #include "resolved-link.h"
 #include "resolved-llmnr.h"
 #include "resolved-mdns.h"
@@ -834,6 +835,20 @@ ResolveSupport link_get_mdns_support(Link *link) {
         return MIN(link->mdns_support, link->manager->mdns_support);
 }
 
+bool link_get_default_route(Link *l) {
+        assert(l);
+
+        /* Return what is configured, if there's something configured */
+        if (l->default_route >= 0)
+                return l->default_route;
+
+        /* Otherwise report what is in effect */
+        if (l->unicast_scope)
+                return dns_scope_is_default_route(l->unicast_scope);
+
+        return false;
+}
+
 int link_address_new(Link *l,
                 LinkAddress **ret,
                 int family,
index 482a4b4148ce10cec5f25ae65fd796b87b739f64..712a81d5ee7a6addf2c91f73d93e623921061c27 100644 (file)
@@ -109,6 +109,8 @@ DnsOverTlsMode link_get_dns_over_tls_mode(Link *l);
 ResolveSupport link_get_llmnr_support(Link *link);
 ResolveSupport link_get_mdns_support(Link *link);
 
+bool link_get_default_route(Link *l);
+
 int link_save_user(Link *l);
 int link_load_user(Link *l);
 void link_remove_user(Link *l);