X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-network%2Fsd-dhcp6-lease.c;h=8960fac92f2df372cfd99512b7e8ef63bb32e85e;hb=fe21f16764147d51819a904d57ac36967f9913e3;hp=17a4b64063160fd1ee6ca754b3eddd9c1a773a62;hpb=709d6710d047566c71f03e579a02c3d99fe15a3e;p=elogind.git diff --git a/src/libsystemd-network/sd-dhcp6-lease.c b/src/libsystemd-network/sd-dhcp6-lease.c index 17a4b6406..8960fac92 100644 --- a/src/libsystemd-network/sd-dhcp6-lease.c +++ b/src/libsystemd-network/sd-dhcp6-lease.c @@ -41,7 +41,7 @@ int dhcp6_lease_ia_rebind_expire(const DHCP6IA *ia, uint32_t *expire) { assert_return(expire, -EINVAL); LIST_FOREACH(addresses, addr, ia->addresses) { - t = be32toh(addr->lifetime_valid); + t = be32toh(addr->iaaddr.lifetime_valid); if (valid < t) valid = t; } @@ -110,14 +110,33 @@ int dhcp6_lease_set_preference(sd_dhcp6_lease *lease, uint8_t preference) { } int dhcp6_lease_get_preference(sd_dhcp6_lease *lease, uint8_t *preference) { - assert_return(lease, -EINVAL); assert_return(preference, -EINVAL); + if (!lease) + return -EINVAL; + *preference = lease->preference; return 0; } +int dhcp6_lease_set_rapid_commit(sd_dhcp6_lease *lease) { + assert_return(lease, -EINVAL); + + lease->rapid_commit = true; + + return 0; +} + +int dhcp6_lease_get_rapid_commit(sd_dhcp6_lease *lease, bool *rapid_commit) { + assert_return(lease, -EINVAL); + assert_return(rapid_commit, -EINVAL); + + *rapid_commit = lease->rapid_commit; + + return 0; +} + int dhcp6_lease_get_iaid(sd_dhcp6_lease *lease, be32_t *iaid) { assert_return(lease, -EINVAL); assert_return(iaid, -EINVAL); @@ -139,9 +158,11 @@ int sd_dhcp6_lease_get_next_address(sd_dhcp6_lease *lease, if (!lease->addr_iter) return -ENOMSG; - memcpy(addr, &lease->addr_iter->address, sizeof(struct in6_addr)); - *lifetime_preferred = be32toh(lease->addr_iter->lifetime_preferred); - *lifetime_valid = be32toh(lease->addr_iter->lifetime_valid); + memcpy(addr, &lease->addr_iter->iaaddr.address, + sizeof(struct in6_addr)); + *lifetime_preferred = + be32toh(lease->addr_iter->iaaddr.lifetime_preferred); + *lifetime_valid = be32toh(lease->addr_iter->iaaddr.lifetime_valid); lease->addr_iter = lease->addr_iter->addresses_next;