No functional change, just refactoring.
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,
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);
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, <_pref, <_valid) >= 0);
assert_se(in6_addr_equal(&addr, &ia_na_address1));
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;
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) {
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);
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);
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);
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);
}
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)
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);