[systemd-devel] [PATCH 02/11] sd-dhcp6-lease: Revise address iteration functions
Zbigniew Jędrzejewski-Szmek
zbyszek at in.waw.pl
Tue Jan 13 15:52:14 PST 2015
On Tue, Jan 13, 2015 at 02:02:12PM +0200, Patrik Flykt wrote:
> Revise the address iteration functions so that one helper function
> resets the iterator to the start of the address list while the
> second one fetches addresses one by one.
>
> The test case is also updated.
> ---
> src/libsystemd-network/sd-dhcp6-lease.c | 24 +++++++------------
> src/libsystemd-network/test-dhcp6-client.c | 37 +++++++++++++++---------------
> src/systemd/sd-dhcp6-lease.h | 7 ++----
> 3 files changed, 29 insertions(+), 39 deletions(-)
>
> diff --git a/src/libsystemd-network/sd-dhcp6-lease.c b/src/libsystemd-network/sd-dhcp6-lease.c
> index 8960fac..b3ae0c0 100644
> --- a/src/libsystemd-network/sd-dhcp6-lease.c
> +++ b/src/libsystemd-network/sd-dhcp6-lease.c
> @@ -146,10 +146,9 @@ int dhcp6_lease_get_iaid(sd_dhcp6_lease *lease, be32_t *iaid) {
> 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) {
Something strange happens with indentantion :)
> assert_return(lease, -EINVAL);
> assert_return(addr, -EINVAL);
> assert_return(lifetime_preferred, -EINVAL);
> @@ -169,22 +168,15 @@ int sd_dhcp6_lease_get_next_address(sd_dhcp6_lease *lease,
> 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) {
> +int sd_dhcp6_lease_reset_address_iter(sd_dhcp6_lease *lease) {
> 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);
> + if (!lease->addr_iter)
> + return -ENOMSG;
> +
> + return 0;
> }
>
> sd_dhcp6_lease *sd_dhcp6_lease_ref(sd_dhcp6_lease *lease) {
> diff --git a/src/libsystemd-network/test-dhcp6-client.c b/src/libsystemd-network/test-dhcp6-client.c
> index 7590839..bc9a9e2 100644
> --- a/src/libsystemd-network/test-dhcp6-client.c
> +++ b/src/libsystemd-network/test-dhcp6-client.c
> @@ -286,25 +286,26 @@ static int test_advertise_option(sd_event *e) {
>
> assert_se(opt_clientid);
>
> - assert_se(sd_dhcp6_lease_get_first_address(lease, &addr, <_pref,
> - <_valid) >= 0);
> + assert_se(sd_dhcp6_lease_reset_address_iter(lease) >= 0);
> + 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,
> + 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);
> + assert_se(sd_dhcp6_lease_reset_address_iter(lease) >= 0);
> + 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,
> + assert_se(sd_dhcp6_lease_get_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_reset_address_iter(lease) >= 0);
> + 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,
> + assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
> <_valid) == -ENOMSG);
>
> assert_se(dhcp6_lease_get_serverid(lease, &opt, &len) >= 0);
> @@ -439,13 +440,14 @@ static int test_client_verify_request(DHCP6Message *request, uint8_t *option,
> assert_se(found_clientid && found_iana && found_serverid &&
> found_elapsed_time);
>
> - assert_se(sd_dhcp6_lease_get_first_address(lease, &addr, <_pref,
> - <_valid) >= 0);
> + assert_se(sd_dhcp6_lease_reset_address_iter(lease) >= 0);
> + 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,
> + assert_se(sd_dhcp6_lease_get_address(lease, &addr, <_pref,
> <_valid) == -ENOMSG);
>
> return 0;
> @@ -587,11 +589,10 @@ static int test_client_verify_information_request(DHCP6Message *information_requ
> assert_se(r == -ENOMSG);
> assert_se(found_clientid && found_elapsed_time);
>
> - assert_se(sd_dhcp6_lease_get_first_address(lease, &addr, <_pref,
> - <_valid) == -ENOMSG);
> + assert_se(sd_dhcp6_lease_reset_address_iter(lease) == -ENOMSG);
>
> - 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;
> }
> diff --git a/src/systemd/sd-dhcp6-lease.h b/src/systemd/sd-dhcp6-lease.h
> index 1126f1a..f7f3d76 100644
> --- a/src/systemd/sd-dhcp6-lease.h
> +++ b/src/systemd/sd-dhcp6-lease.h
> @@ -27,14 +27,11 @@
>
> typedef struct sd_dhcp6_lease sd_dhcp6_lease;
>
> -int sd_dhcp6_lease_get_first_address(sd_dhcp6_lease *lease,
> +int 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);
> -int sd_dhcp6_lease_get_next_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);
> --
> 2.1.4
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
More information about the systemd-devel
mailing list