aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-12-21 18:03:58 +0100
committerGitHub <noreply@github.com>2018-12-21 18:03:58 +0100
commit44f52cce9ee9976b465841a811a7a9963947bc7d (patch)
tree94a3a8ad8318968490265fd7f1fc9e02f705d240 /src/network
parentMerge pull request #11210 from thom311/dhcp-set-client-id-no-inval (diff)
parentman: document new systemd-resolved.service(8) routing features in more detail (diff)
downloadsystemd-44f52cce9ee9976b465841a811a7a9963947bc7d.tar.gz
systemd-44f52cce9ee9976b465841a811a7a9963947bc7d.tar.bz2
systemd-44f52cce9ee9976b465841a811a7a9963947bc7d.zip
Merge pull request #11050 from poettering/resolved-domain-route
resolved: beef up domain routing
Diffstat (limited to 'src/network')
-rw-r--r--src/network/networkd-link.c2
-rw-r--r--src/network/networkd-network-gperf.gperf1
-rw-r--r--src/network/networkd-network.c14
-rw-r--r--src/network/networkd-network.h9
4 files changed, 14 insertions, 12 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index d73e85cf2..e2851df31 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -3929,6 +3929,8 @@ int link_save(Link *link) {
resolve_support_to_string(link->network->llmnr));
fprintf(f, "MDNS=%s\n",
resolve_support_to_string(link->network->mdns));
+ if (link->network->dns_default_route >= 0)
+ fprintf(f, "DNS_DEFAULT_ROUTE=%s\n", yes_no(link->network->dns_default_route));
if (link->network->dns_over_tls_mode != _DNS_OVER_TLS_MODE_INVALID)
fprintf(f, "DNS_OVER_TLS=%s\n",
diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf
index 48d8ae52f..5d8aede59 100644
--- a/src/network/networkd-network-gperf.gperf
+++ b/src/network/networkd-network-gperf.gperf
@@ -58,6 +58,7 @@ Network.Address, config_parse_address,
Network.Gateway, config_parse_gateway, 0, 0
Network.Domains, config_parse_domains, 0, 0
Network.DNS, config_parse_dns, 0, 0
+Network.DNSDefaultRoute, config_parse_tristate, 0, offsetof(Network, dns_default_route)
Network.LLMNR, config_parse_resolve_support, 0, offsetof(Network, llmnr)
Network.MulticastDNS, config_parse_resolve_support, 0, offsetof(Network, mdns)
Network.DNSOverTLS, config_parse_dns_over_tls_mode, 0, offsetof(Network, dns_over_tls_mode)
diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
index 62dc6a0bf..ccc1c3ce8 100644
--- a/src/network/networkd-network.c
+++ b/src/network/networkd-network.c
@@ -168,6 +168,7 @@ int network_load_one(Manager *manager, const char *filename) {
.lldp_mode = LLDP_MODE_ROUTERS_ONLY,
+ .dns_default_route = -1,
.llmnr = RESOLVE_SUPPORT_YES,
.mdns = RESOLVE_SUPPORT_NO,
.dnssec_mode = _DNSSEC_MODE_INVALID,
@@ -657,7 +658,6 @@ int config_parse_domains(
* routing domain, unconditionally. */
is_route = true;
domain = "."; /* make sure we don't allow empty strings, thus write the root domain as "." */
-
} else {
r = dns_name_normalize(domain, 0, &normalized);
if (r < 0) {
@@ -673,16 +673,12 @@ int config_parse_domains(
}
}
- if (is_route) {
+ if (is_route)
r = strv_extend(&n->route_domains, domain);
- if (r < 0)
- return log_oom();
-
- } else {
+ else
r = strv_extend(&n->search_domains, domain);
- if (r < 0)
- return log_oom();
- }
+ if (r < 0)
+ return log_oom();
}
strv_uniq(n->route_domains);
diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h
index 3a72c5bd9..f6e62cdd7 100644
--- a/src/network/networkd-network.h
+++ b/src/network/networkd-network.h
@@ -260,17 +260,20 @@ struct Network {
Hashmap *prefixes_by_section;
Hashmap *rules_by_section;
+ /* All kinds of DNS configuration */
struct in_addr_data *dns;
unsigned n_dns;
-
- char **search_domains, **route_domains, **ntp, **bind_carrier;
-
+ char **search_domains, **route_domains;
+ int dns_default_route;
ResolveSupport llmnr;
ResolveSupport mdns;
DnssecMode dnssec_mode;
DnsOverTlsMode dns_over_tls_mode;
Set *dnssec_negative_trust_anchors;
+ char **ntp;
+ char **bind_carrier;
+
LIST_FIELDS(Network, networks);
};