diff --git a/man/systemd.network.xml b/man/systemd.network.xml index 68e54932049..5ad9a846f03 100644 --- a/man/systemd.network.xml +++ b/man/systemd.network.xml @@ -1866,6 +1866,14 @@ IPv6Token=prefixstable:2002:da8:1:: DHCP= setting described above, or invoked by the IPv6 Router Advertisement: + + UseAddress= + + When true (the default), the IP addresses provided by the DHCPv6 server will be + assigned. + + + UseDNS= UseNTP= diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c index 51a34693c2d..89b22c35e36 100644 --- a/src/network/networkd-dhcp6.c +++ b/src/network/networkd-dhcp6.c @@ -1078,8 +1078,12 @@ static int dhcp6_address_acquired(Link *link) { int r; assert(link); + assert(link->network); assert(link->dhcp6_lease); + if (!link->network->dhcp6_use_address) + return 0; + for (sd_dhcp6_lease_reset_address_iter(link->dhcp6_lease);;) { uint32_t lifetime_preferred, lifetime_valid; struct in6_addr ip6_addr; diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf index 8b15548f6ff..afa97a6da44 100644 --- a/src/network/networkd-network-gperf.gperf +++ b/src/network/networkd-network-gperf.gperf @@ -221,6 +221,7 @@ DHCPv4.SendOption, config_parse_dhcp_send_option, DHCPv4.SendVendorOption, config_parse_dhcp_send_option, 0, offsetof(Network, dhcp_client_send_vendor_options) DHCPv4.RouteMTUBytes, config_parse_mtu, AF_INET, offsetof(Network, dhcp_route_mtu) DHCPv4.FallbackLeaseLifetimeSec, config_parse_dhcp_fallback_lease_lifetime, 0, 0 +DHCPv6.UseAddress, config_parse_bool, 0, offsetof(Network, dhcp6_use_address) DHCPv6.UseDNS, config_parse_dhcp_use_dns, 0, 0 DHCPv6.UseNTP, config_parse_dhcp_use_ntp, 0, 0 DHCPv6.RapidCommit, config_parse_bool, 0, offsetof(Network, dhcp6_rapid_commit) diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 783f455a9fc..a8d6c58ac4d 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -352,10 +352,11 @@ int network_load_one(Manager *manager, OrderedHashmap **networks, const char *fi .dhcp_use_timezone = false, .dhcp_ip_service_type = -1, + .dhcp6_use_address = true, + .dhcp6_use_dns = true, + .dhcp6_use_ntp = true, .dhcp6_rapid_commit = true, .dhcp6_route_metric = DHCP_ROUTE_METRIC, - .dhcp6_use_ntp = true, - .dhcp6_use_dns = true, .dhcp6_pd = -1, .dhcp6_pd_announce = true, diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h index 2b7dc4e94b3..656bf6c3669 100644 --- a/src/network/networkd-network.h +++ b/src/network/networkd-network.h @@ -146,6 +146,7 @@ struct Network { OrderedHashmap *dhcp_client_send_vendor_options; /* DHCPv6 Client support*/ + bool dhcp6_use_address; bool dhcp6_use_dns; bool dhcp6_use_dns_set; bool dhcp6_use_ntp; diff --git a/test/fuzz/fuzz-network-parser/directives.network b/test/fuzz/fuzz-network-parser/directives.network index 797d81cdf84..3024c65713b 100644 --- a/test/fuzz/fuzz-network-parser/directives.network +++ b/test/fuzz/fuzz-network-parser/directives.network @@ -125,6 +125,7 @@ MUDURL= RouteMTUBytes= FallbackLeaseLifetimeSec= [DHCPv6] +UseAddress= UseNTP= UseDNS= RapidCommit=