return 0;
}
-int sd_dhcp6_lease_get_next_address(sd_dhcp6_lease *lease,
- struct in6_addr *addr,
- uint32_t *lifetime_preferred,
- uint32_t *lifetime_valid) {
+int sd_dhcp6_lease_get_address(sd_dhcp6_lease *lease, struct in6_addr *addr,
+ uint32_t *lifetime_preferred,
+ uint32_t *lifetime_valid) {
assert_return(lease, -EINVAL);
assert_return(addr, -EINVAL);
assert_return(lifetime_preferred, -EINVAL);
return 0;
}
-int sd_dhcp6_lease_get_first_address(sd_dhcp6_lease *lease,
- struct in6_addr *addr,
- uint32_t *lifetime_preferred,
- uint32_t *lifetime_valid) {
- assert_return(lease, -EINVAL);
- assert_return(addr, -EINVAL);
- assert_return(lifetime_preferred, -EINVAL);
- assert_return(lifetime_valid, -EINVAL);
-
- if (!lease->ia.addresses)
- return -ENOMSG;
-
- lease->addr_iter = lease->ia.addresses;
-
- return sd_dhcp6_lease_get_next_address(lease, addr, lifetime_preferred,
- lifetime_valid);
+void sd_dhcp6_lease_reset_address_iter(sd_dhcp6_lease *lease) {
+ if (lease)
+ lease->addr_iter = lease->ia.addresses;
}
sd_dhcp6_lease *sd_dhcp6_lease_ref(sd_dhcp6_lease *lease) {
assert_se(opt_clientid);
- assert_se(sd_dhcp6_lease_get_first_address(lease, &addr, <_pref,
- <_valid) >= 0);
+ sd_dhcp6_lease_reset_address_iter(lease);
+ assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
+ <_valid) >= 0);
assert_se(!memcmp(&addr, &msg_advertise[42], sizeof(addr)));
assert_se(lt_pref == 150);
assert_se(lt_valid == 180);
- assert_se(sd_dhcp6_lease_get_next_address(lease, &addr, <_pref,
- <_valid) == -ENOMSG);
+ assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
+ <_valid) == -ENOMSG);
- assert_se(sd_dhcp6_lease_get_first_address(lease, &addr, <_pref,
- <_valid) >= 0);
+ sd_dhcp6_lease_reset_address_iter(lease);
+ assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
+ <_valid) >= 0);
assert_se(!memcmp(&addr, &msg_advertise[42], sizeof(addr)));
- assert_se(sd_dhcp6_lease_get_next_address(lease, &addr, <_pref,
- <_valid) == -ENOMSG);
- assert_se(sd_dhcp6_lease_get_next_address(lease, &addr, <_pref,
- <_valid) == -ENOMSG);
- assert_se(sd_dhcp6_lease_get_first_address(lease, &addr, <_pref,
- <_valid) >= 0);
+ assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
+ <_valid) == -ENOMSG);
+ sd_dhcp6_lease_reset_address_iter(lease);
+ assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
+ <_valid) >= 0);
assert_se(!memcmp(&addr, &msg_advertise[42], sizeof(addr)));
- assert_se(sd_dhcp6_lease_get_next_address(lease, &addr, <_pref,
- <_valid) == -ENOMSG);
+ assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
+ <_valid) == -ENOMSG);
assert_se(dhcp6_lease_get_serverid(lease, &opt, &len) >= 0);
assert_se(len == 14);
assert_se(found_clientid && found_iana && found_serverid &&
found_elapsed_time);
- assert_se(sd_dhcp6_lease_get_first_address(lease, &addr, <_pref,
- <_valid) >= 0);
+ sd_dhcp6_lease_reset_address_iter(lease);
+ assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
+ <_valid) >= 0);
assert_se(!memcmp(&addr, &msg_advertise[42], sizeof(addr)));
assert_se(lt_pref == 150);
assert_se(lt_valid == 180);
- assert_se(sd_dhcp6_lease_get_next_address(lease, &addr, <_pref,
- <_valid) == -ENOMSG);
+ assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
+ <_valid) == -ENOMSG);
return 0;
}
assert_se(r == -ENOMSG);
assert_se(found_clientid && found_elapsed_time);
- assert_se(sd_dhcp6_lease_get_first_address(lease, &addr, <_pref,
- <_valid) == -ENOMSG);
+ sd_dhcp6_lease_reset_address_iter(lease);
- assert_se(sd_dhcp6_lease_get_next_address(lease, &addr, <_pref,
- <_valid) == -ENOMSG);
+ assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
+ <_valid) == -ENOMSG);
return 0;
}
typedef struct sd_dhcp6_lease sd_dhcp6_lease;
-int sd_dhcp6_lease_get_first_address(sd_dhcp6_lease *lease,
- struct in6_addr *addr,
- uint32_t *lifetime_preferred,
- uint32_t *lifetime_valid);
-int sd_dhcp6_lease_get_next_address(sd_dhcp6_lease *lease,
- struct in6_addr *addr,
- uint32_t *lifetime_preferred,
- uint32_t *lifetime_valid);
+void sd_dhcp6_lease_reset_address_iter(sd_dhcp6_lease *lease);
+int sd_dhcp6_lease_get_address(sd_dhcp6_lease *lease,
+ struct in6_addr *addr,
+ uint32_t *lifetime_preferred,
+ uint32_t *lifetime_valid);
sd_dhcp6_lease *sd_dhcp6_lease_ref(sd_dhcp6_lease *lease);
sd_dhcp6_lease *sd_dhcp6_lease_unref(sd_dhcp6_lease *lease);