From 65187c46ef6d43df40f84d0a1bbcf5a61f7c1556 Mon Sep 17 00:00:00 2001 From: Ronan Pigott Date: Mon, 22 Jan 2024 14:37:42 -0700 Subject: [PATCH] network: Serialize ipv6ra DNR Serialize DNR servers acquired by ipv6ra option, same as the V4/V6 DNR DHCP options. --- src/network/networkd-state-file.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/network/networkd-state-file.c b/src/network/networkd-state-file.c index e6c4ec64c0..4cbf6ec92f 100644 --- a/src/network/networkd-state-file.c +++ b/src/network/networkd-state-file.c @@ -172,6 +172,24 @@ static int link_put_dns(Link *link, OrderedSet **s) { } } + if (link_get_use_dnr(link, NETWORK_CONFIG_SOURCE_NDISC)) { + NDiscDNR *a; + + SET_FOREACH(a, link->ndisc_dnr) { + struct in_addr_full **dot_servers = NULL; + size_t n = 0; + CLEANUP_ARRAY(dot_servers, n, in_addr_full_array_free); + + r = dns_resolvers_to_dot_addrs(&a->resolver, 1, &dot_servers, &n); + if (r < 0) + return r; + + r = ordered_set_put_dns_servers(s, link->ifindex, dot_servers, n); + if (r < 0) + return r; + } + } + return 0; } @@ -766,6 +784,12 @@ static int link_save(Link *link) { link->dhcp6_lease, link_get_use_dnr(link, NETWORK_CONFIG_SOURCE_DHCP6)); + if (link_get_use_dnr(link, NETWORK_CONFIG_SOURCE_NDISC)) { + NDiscDNR *dnr; + SET_FOREACH(dnr, link->ndisc_dnr) + serialize_dnr(f, &dnr->resolver, 1, &space); + } + serialize_addresses(f, NULL, &space, NULL, link->dhcp_lease,