From: Yu Watanabe Date: Fri, 10 Nov 2023 17:39:33 +0000 (+0900) Subject: network/dhcp-pd: use correct flag when DHCPv4 6rd is enabled X-Git-Tag: v255-rc2~50^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=706cd859370b118c3267643e73890c416ff91d9f;p=thirdparty%2Fsystemd.git network/dhcp-pd: use correct flag when DHCPv4 6rd is enabled Previously, Link.dhcp6_configured flag was unconditionally used even if the route is configured based on the DHCPv4 protocol. Follow-up for a27588d4e7f780243a1828e2af56562f9d779412 and e49bad0179cb670edeac12ef062887af0ac4c8c5. --- diff --git a/src/network/networkd-dhcp-prefix-delegation.c b/src/network/networkd-dhcp-prefix-delegation.c index 56bbc4acc54..af2fe9efcd7 100644 --- a/src/network/networkd-dhcp-prefix-delegation.c +++ b/src/network/networkd-dhcp-prefix-delegation.c @@ -665,7 +665,8 @@ static int dhcp_request_unreachable_route( NetworkConfigSource source, const union in_addr_union *server_address, unsigned *counter, - route_netlink_handler_t callback) { + route_netlink_handler_t callback, + bool *configured) { _cleanup_(route_freep) Route *route = NULL; Route *existing; @@ -677,6 +678,7 @@ static int dhcp_request_unreachable_route( assert(server_address); assert(counter); assert(callback); + assert(configured); if (prefixlen >= 64) { log_link_debug(link, "Not adding a blocking route for DHCP delegated prefix %s since the prefix has length >= 64.", @@ -699,7 +701,7 @@ static int dhcp_request_unreachable_route( route->lifetime_usec = lifetime_usec; if (route_get(link->manager, NULL, route, &existing) < 0) - link->dhcp6_configured = false; + *configured = false; else route_unmark(existing); @@ -720,7 +722,8 @@ static int dhcp4_request_unreachable_route( return dhcp_request_unreachable_route(link, addr, prefixlen, lifetime_usec, NETWORK_CONFIG_SOURCE_DHCP4, server_address, - &link->dhcp4_messages, dhcp4_unreachable_route_handler); + &link->dhcp4_messages, dhcp4_unreachable_route_handler, + &link->dhcp4_configured); } static int dhcp6_request_unreachable_route( @@ -732,7 +735,8 @@ static int dhcp6_request_unreachable_route( return dhcp_request_unreachable_route(link, addr, prefixlen, lifetime_usec, NETWORK_CONFIG_SOURCE_DHCP6, server_address, - &link->dhcp6_messages, dhcp6_unreachable_route_handler); + &link->dhcp6_messages, dhcp6_unreachable_route_handler, + &link->dhcp6_configured); } static int dhcp_pd_prefix_add(Link *link, const struct in6_addr *prefix, uint8_t prefixlen) { diff --git a/src/network/networkd-link.h b/src/network/networkd-link.h index 8bbbc4ec85c..938bbf482ec 100644 --- a/src/network/networkd-link.h +++ b/src/network/networkd-link.h @@ -127,7 +127,7 @@ typedef struct Link { sd_dhcp_lease *dhcp_lease; char *lease_file; unsigned dhcp4_messages; - bool dhcp4_configured:1; + bool dhcp4_configured; char *dhcp4_6rd_tunnel_name; Hashmap *ipv4acd_by_address;