sd-dhcp6-client: introduce sd_dhcp6_lease_has_pd_prefix() and friend

No functional change, just refactoring.
This commit is contained in:
Yu Watanabe
2023-09-21 03:59:00 +09:00
parent 7c52d5236a
commit fb70992d39
8 changed files with 20 additions and 23 deletions
+8
View File
@@ -243,6 +243,10 @@ void sd_dhcp6_lease_reset_address_iter(sd_dhcp6_lease *lease) {
lease->addr_iter = lease->ia_na ? lease->ia_na->addresses : NULL;
}
int sd_dhcp6_lease_has_address(sd_dhcp6_lease *lease) {
return lease && lease->ia_na;
}
int sd_dhcp6_lease_get_pd(
sd_dhcp6_lease *lease,
struct in6_addr *ret_prefix,
@@ -273,6 +277,10 @@ void sd_dhcp6_lease_reset_pd_prefix_iter(sd_dhcp6_lease *lease) {
lease->prefix_iter = lease->ia_pd ? lease->ia_pd->addresses : NULL;
}
int sd_dhcp6_lease_has_pd_prefix(sd_dhcp6_lease *lease) {
return lease && lease->ia_pd;
}
int dhcp6_lease_add_dns(sd_dhcp6_lease *lease, const uint8_t *optval, size_t optlen) {
assert(lease);
assert(optval || optlen == 0);
@@ -902,6 +902,9 @@ static void test_lease_managed(sd_dhcp6_client *client) {
assert_se(dhcp6_lease_get_serverid(lease, &id, &len) >= 0);
assert_se(memcmp_nn(id, len, server_id, sizeof(server_id)) == 0);
assert_se(sd_dhcp6_lease_has_address(lease));
assert_se(sd_dhcp6_lease_has_pd_prefix(lease));
sd_dhcp6_lease_reset_address_iter(lease);
assert_se(sd_dhcp6_lease_get_address(lease, &addr, &lt_pref, &lt_valid) >= 0);
assert_se(in6_addr_equal(&addr, &ia_na_address1));
+1 -17
View File
@@ -51,19 +51,6 @@ bool dhcp_pd_is_uplink(Link *link, Link *target, bool accept_auto) {
return accept_auto;
}
bool dhcp6_lease_has_pd_prefix(sd_dhcp6_lease *lease) {
uint32_t lifetime_preferred_sec, lifetime_valid_sec;
struct in6_addr pd_prefix;
uint8_t pd_prefix_len;
if (!lease)
return false;
sd_dhcp6_lease_reset_pd_prefix_iter(lease);
return sd_dhcp6_lease_get_pd(lease, &pd_prefix, &pd_prefix_len, &lifetime_preferred_sec, &lifetime_valid_sec) >= 0;
}
static void link_remove_dhcp_pd_subnet_prefix(Link *link, const struct in6_addr *prefix) {
void *key;
@@ -1154,10 +1141,7 @@ static bool dhcp6_pd_uplink_is_ready(Link *link) {
if (sd_dhcp6_client_is_running(link->dhcp6_client) <= 0)
return false;
if (!link->dhcp6_lease)
return false;
return dhcp6_lease_has_pd_prefix(link->dhcp6_lease);
return sd_dhcp6_lease_has_pd_prefix(link->dhcp6_lease);
}
int dhcp_pd_find_uplink(Link *link, Link **ret) {
@@ -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 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);
int dhcp4_pd_prefix_acquired(Link *uplink);
+3 -3
View File
@@ -317,11 +317,11 @@ static int dhcp6_lease_ip_acquired(sd_dhcp6_client *client, Link *link) {
if (r < 0)
return r;
if (dhcp6_lease_has_pd_prefix(lease)) {
if (sd_dhcp6_lease_has_pd_prefix(lease)) {
r = dhcp6_pd_prefix_acquired(link);
if (r < 0)
return r;
} else if (dhcp6_lease_has_pd_prefix(lease_old))
} else if (sd_dhcp6_lease_has_pd_prefix(lease_old))
/* When we had PD prefixes but not now, we need to remove them. */
dhcp_pd_prefix_lost(link);
@@ -353,7 +353,7 @@ static int dhcp6_lease_lost(Link *link) {
log_link_info(link, "DHCPv6 lease lost");
if (dhcp6_lease_has_pd_prefix(link->dhcp6_lease))
if (sd_dhcp6_lease_has_pd_prefix(link->dhcp6_lease))
dhcp_pd_prefix_lost(link);
link->dhcp6_lease = sd_dhcp6_lease_unref(link->dhcp6_lease);
+2 -1
View File
@@ -1084,7 +1084,8 @@ static int dhcp6_client_pd_append_json(Link *link, JsonVariant **v) {
assert(link->network);
assert(v);
if (!link->network->dhcp6_use_pd_prefix || !link->dhcp6_lease || !dhcp6_lease_has_pd_prefix(link->dhcp6_lease))
if (!link->network->dhcp6_use_pd_prefix ||
!sd_dhcp6_lease_has_pd_prefix(link->dhcp6_lease))
return 0;
sd_dhcp6_lease_reset_pd_prefix_iter(link->dhcp6_lease);
+1 -1
View File
@@ -485,7 +485,7 @@ void link_check_ready(Link *link) {
}
if (link_dhcp6_enabled(link) && link->network->dhcp6_use_pd_prefix &&
link->dhcp6_lease && dhcp6_lease_has_pd_prefix(link->dhcp6_lease)) {
sd_dhcp6_lease_has_pd_prefix(link->dhcp6_lease)) {
if (!dhcp6_ready)
return (void) log_link_debug(link, "%s(): DHCPv6 IA_PD prefix is assigned, but DHCPv6 protocol is not finished yet.", __func__);
if (!dhcp_pd_ready)
+2
View File
@@ -37,11 +37,13 @@ int sd_dhcp6_lease_get_address(sd_dhcp6_lease *lease,
struct in6_addr *addr,
uint32_t *lifetime_preferred,
uint32_t *lifetime_valid);
int sd_dhcp6_lease_has_address(sd_dhcp6_lease *lease);
void sd_dhcp6_lease_reset_pd_prefix_iter(sd_dhcp6_lease *lease);
int sd_dhcp6_lease_get_pd(sd_dhcp6_lease *lease, struct in6_addr *prefix,
uint8_t *prefix_len,
uint32_t *lifetime_preferred,
uint32_t *lifetime_valid);
int sd_dhcp6_lease_has_pd_prefix(sd_dhcp6_lease *lease);
int sd_dhcp6_lease_get_dns(sd_dhcp6_lease *lease, const struct in6_addr **ret);
int sd_dhcp6_lease_get_domains(sd_dhcp6_lease *lease, char ***ret);