]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-dhcp-client: introduce sd_dhcp_lease_has_6rd() helper function 29091/head
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 4 Sep 2023 18:04:01 +0000 (03:04 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 5 Sep 2023 17:02:21 +0000 (02:02 +0900)
No functional change, just refactoring.

src/libsystemd-network/sd-dhcp-lease.c
src/network/networkd-dhcp-prefix-delegation.c
src/network/networkd-dhcp-prefix-delegation.h
src/network/networkd-dhcp4.c
src/network/networkd-json.c
src/network/networkd-link.c
src/systemd/sd-dhcp-lease.h

index 97985c74c72ca74641b43ceb22e21a40813144b3..b8be34a9f43047c1d039ddc1bc5b4c0088defb31 100644 (file)
@@ -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);
index 284e6a20ad0c2362d89ad772c01bb9d4ea874f33..c6e6857aa41c1f838fde0c86c80e609d81dc76bf 100644 (file)
@@ -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) {
index d67f919ba73f0cc1c1d576b20e229ae89054c8c3..b12e985bec65eaf032ef32d4e3eaae023fcbcce1 100644 (file)
@@ -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);
index 01fdba208d03666b7d5027e2888dfc99006532f5..a3f28035d7608653ea4b5c26f859df809be3174c 100644 (file)
@@ -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");
index f7a0c9215c9824fa0a715a6436b4fdb3ca1b860a..1e425fcb298bafc9a42f5629321da2585bae6255 100644 (file)
@@ -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);
index d4a72e2ec5e18a92d805541340de37d0d07fd6eb..eea47f6c8c8c7cf08962ab7918223baec6b6c5d9 100644 (file)
@@ -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)
index 8c2d0fb7f96b8a08231e5cb6326282547f9f73d4..1ef53ccf1ea83a10ecae933aae026ddb8c9943c6 100644 (file)
@@ -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);