]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: introduce link_set_default_route
authorRonan Pigott <ronan@rjp.ie>
Wed, 21 Aug 2024 16:41:35 +0000 (09:41 -0700)
committerRonan Pigott <ronan@rjp.ie>
Wed, 21 Aug 2024 16:51:42 +0000 (09:51 -0700)
src/resolve/resolved-link.c
src/resolve/resolved-link.h

index bb43a73de42dcf65afb92f0029e8562361264aff..01fa5878a68cf223b376386e5c0faff556f62613 100644 (file)
@@ -766,6 +766,20 @@ void link_next_dns_server(Link *l, DnsServer *if_current) {
         link_set_dns_server(l, l->dns_servers);
 }
 
+void link_set_default_route(Link *l, bool b) {
+        assert(l);
+
+        if (l->default_route == b)
+                return;
+
+        l->default_route = b;
+
+        /* If we are currently using the fallback servers, changing a link to be default-route means
+         * we should reconsider whether or not the fallback servers are necessary. */
+        if (b && dns_server_is_fallback(l->manager->current_dns_server))
+                manager_set_dns_server(l->manager, NULL);
+}
+
 DnsOverTlsMode link_get_dns_over_tls_mode(Link *l) {
         assert(l);
 
index 0695a6ff838b9c0fcf5e0663efbc9398260baa31..482a4b4148ce10cec5f25ae65fd796b87b739f64 100644 (file)
@@ -99,6 +99,7 @@ void link_allocate_scopes(Link *l);
 DnsServer* link_set_dns_server(Link *l, DnsServer *s);
 DnsServer* link_get_dns_server(Link *l);
 void link_next_dns_server(Link *l, DnsServer *if_current);
+void link_set_default_route(Link *l, bool b);
 
 DnssecMode link_get_dnssec_mode(Link *l);
 bool link_dnssec_supported(Link *l);