From: Yu Watanabe Date: Mon, 4 Sep 2023 18:04:01 +0000 (+0900) Subject: sd-dhcp-client: introduce sd_dhcp_lease_has_6rd() helper function X-Git-Tag: v255-rc1~574^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F29091%2Fhead;p=thirdparty%2Fsystemd.git sd-dhcp-client: introduce sd_dhcp_lease_has_6rd() helper function No functional change, just refactoring. --- diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c index 97985c74c72..b8be34a9f43 100644 --- a/src/libsystemd-network/sd-dhcp-lease.c +++ b/src/libsystemd-network/sd-dhcp-lease.c @@ -372,6 +372,10 @@ int sd_dhcp_lease_get_6rd( return 0; } +int sd_dhcp_lease_has_6rd(sd_dhcp_lease *lease) { + return lease && lease->sixrd_n_br_addresses > 0; +} + int sd_dhcp_lease_get_vendor_specific(sd_dhcp_lease *lease, const void **data, size_t *data_len) { assert_return(lease, -EINVAL); assert_return(data, -EINVAL); diff --git a/src/network/networkd-dhcp-prefix-delegation.c b/src/network/networkd-dhcp-prefix-delegation.c index 284e6a20ad0..c6e6857aa41 100644 --- a/src/network/networkd-dhcp-prefix-delegation.c +++ b/src/network/networkd-dhcp-prefix-delegation.c @@ -51,13 +51,6 @@ bool dhcp_pd_is_uplink(Link *link, Link *target, bool accept_auto) { return accept_auto; } -bool dhcp4_lease_has_pd_prefix(sd_dhcp_lease *lease) { - if (!lease) - return false; - - return sd_dhcp_lease_get_6rd(lease, NULL, NULL, NULL, NULL, NULL) >= 0; -} - bool dhcp6_lease_has_pd_prefix(sd_dhcp6_lease *lease) { uint32_t lifetime_preferred_sec, lifetime_valid_sec; struct in6_addr pd_prefix; @@ -1140,10 +1133,7 @@ static bool dhcp4_pd_uplink_is_ready(Link *link) { if (sd_dhcp_client_is_running(link->dhcp_client) <= 0) return false; - if (!link->dhcp_lease) - return false; - - return dhcp4_lease_has_pd_prefix(link->dhcp_lease); + return sd_dhcp_lease_has_6rd(link->dhcp_lease); } static bool dhcp6_pd_uplink_is_ready(Link *link) { diff --git a/src/network/networkd-dhcp-prefix-delegation.h b/src/network/networkd-dhcp-prefix-delegation.h index d67f919ba73..b12e985bec6 100644 --- a/src/network/networkd-dhcp-prefix-delegation.h +++ b/src/network/networkd-dhcp-prefix-delegation.h @@ -13,7 +13,6 @@ typedef struct Link Link; bool link_dhcp_pd_is_enabled(Link *link); bool dhcp_pd_is_uplink(Link *link, Link *target, bool accept_auto); int dhcp_pd_find_uplink(Link *link, Link **ret); -bool dhcp4_lease_has_pd_prefix(sd_dhcp_lease *lease); bool dhcp6_lease_has_pd_prefix(sd_dhcp6_lease *lease); int dhcp_pd_remove(Link *link, bool only_marked); int dhcp_request_prefix_delegation(Link *link); diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c index 01fdba208d0..a3f28035d76 100644 --- a/src/network/networkd-dhcp4.c +++ b/src/network/networkd-dhcp4.c @@ -839,7 +839,7 @@ int dhcp4_lease_lost(Link *link) { link->dhcp4_configured = false; if (link->network->dhcp_use_6rd && - dhcp4_lease_has_pd_prefix(link->dhcp_lease)) + sd_dhcp_lease_has_6rd(link->dhcp_lease)) dhcp4_pd_prefix_lost(link); k = dhcp4_remove_address_and_routes(link, /* only_marked = */ false); @@ -1027,11 +1027,11 @@ static int dhcp_lease_renew(sd_dhcp_client *client, Link *link) { link_dirty(link); if (link->network->dhcp_use_6rd) { - if (dhcp4_lease_has_pd_prefix(link->dhcp_lease)) { + if (sd_dhcp_lease_has_6rd(link->dhcp_lease)) { r = dhcp4_pd_prefix_acquired(link); if (r < 0) return log_link_warning_errno(link, r, "Failed to process 6rd option: %m"); - } else if (dhcp4_lease_has_pd_prefix(old_lease)) + } else if (sd_dhcp_lease_has_6rd(old_lease)) dhcp4_pd_prefix_lost(link); } @@ -1101,7 +1101,7 @@ static int dhcp_lease_acquired(sd_dhcp_client *client, Link *link) { } if (link->network->dhcp_use_6rd && - dhcp4_lease_has_pd_prefix(link->dhcp_lease)) { + sd_dhcp_lease_has_6rd(link->dhcp_lease)) { r = dhcp4_pd_prefix_acquired(link); if (r < 0) return log_link_warning_errno(link, r, "Failed to process 6rd option: %m"); diff --git a/src/network/networkd-json.c b/src/network/networkd-json.c index f7a0c9215c9..1e425fcb298 100644 --- a/src/network/networkd-json.c +++ b/src/network/networkd-json.c @@ -1174,7 +1174,7 @@ static int dhcp_client_pd_append_json(Link *link, JsonVariant **v) { assert(link->network); assert(v); - if (!link->network->dhcp_use_6rd || !link->dhcp_lease || !dhcp4_lease_has_pd_prefix(link->dhcp_lease)) + if (!link->network->dhcp_use_6rd || !sd_dhcp_lease_has_6rd(link->dhcp_lease)) return 0; r = sd_dhcp_lease_get_6rd(link->dhcp_lease, &ipv4masklen, &sixrd_prefixlen, &sixrd_prefix, &br_addresses, &n_br_addresses); diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index d4a72e2ec5e..eea47f6c8c8 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -477,7 +477,7 @@ void link_check_ready(Link *link) { /* If the uplink for PD is self, then request the corresponding DHCP protocol is also ready. */ if (dhcp_pd_is_uplink(link, link, /* accept_auto = */ false)) { if (link_dhcp4_enabled(link) && link->network->dhcp_use_6rd && - link->dhcp_lease && dhcp4_lease_has_pd_prefix(link->dhcp_lease)) { + sd_dhcp_lease_has_6rd(link->dhcp_lease)) { if (!dhcp4_ready) return (void) log_link_debug(link, "%s(): DHCPv4 6rd prefix is assigned, but DHCPv4 protocol is not finished yet.", __func__); if (!dhcp_pd_ready) diff --git a/src/systemd/sd-dhcp-lease.h b/src/systemd/sd-dhcp-lease.h index 8c2d0fb7f96..1ef53ccf1ea 100644 --- a/src/systemd/sd-dhcp-lease.h +++ b/src/systemd/sd-dhcp-lease.h @@ -85,6 +85,7 @@ int sd_dhcp_lease_get_6rd( struct in6_addr *ret_prefix, const struct in_addr **ret_br_addresses, size_t *ret_n_br_addresses); +int sd_dhcp_lease_has_6rd(sd_dhcp_lease *lease); int sd_dhcp_route_get_destination(sd_dhcp_route *route, struct in_addr *destination); int sd_dhcp_route_get_destination_prefix_length(sd_dhcp_route *route, uint8_t *length);