[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, &lt_pref,
> -                                                   &lt_valid) >= 0);
> +        assert_se(sd_dhcp6_lease_reset_address_iter(lease) >= 0);
> +        assert_se(sd_dhcp6_lease_get_address(lease, &addr, &lt_pref,
> +                                                  &lt_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, &lt_pref,
> +        assert_se(sd_dhcp6_lease_get_address(lease, &addr, &lt_pref,
>                                                    &lt_valid) == -ENOMSG);
>  
> -        assert_se(sd_dhcp6_lease_get_first_address(lease, &addr, &lt_pref,
> -                                                   &lt_valid) >= 0);
> +        assert_se(sd_dhcp6_lease_reset_address_iter(lease) >= 0);
> +        assert_se(sd_dhcp6_lease_get_address(lease, &addr, &lt_pref,
> +                                                  &lt_valid) >= 0);
>          assert_se(!memcmp(&addr, &msg_advertise[42], sizeof(addr)));
> -        assert_se(sd_dhcp6_lease_get_next_address(lease, &addr, &lt_pref,
> +        assert_se(sd_dhcp6_lease_get_address(lease, &addr, &lt_pref,
>                                                    &lt_valid) == -ENOMSG);
> -        assert_se(sd_dhcp6_lease_get_next_address(lease, &addr, &lt_pref,
> -                                                  &lt_valid) == -ENOMSG);
> -        assert_se(sd_dhcp6_lease_get_first_address(lease, &addr, &lt_pref,
> -                                                   &lt_valid) >= 0);
> +        assert_se(sd_dhcp6_lease_reset_address_iter(lease) >= 0);
> +        assert_se(sd_dhcp6_lease_get_address(lease, &addr, &lt_pref,
> +                                                  &lt_valid) >= 0);
>          assert_se(!memcmp(&addr, &msg_advertise[42], sizeof(addr)));
> -        assert_se(sd_dhcp6_lease_get_next_address(lease, &addr, &lt_pref,
> +        assert_se(sd_dhcp6_lease_get_address(lease, &addr, &lt_pref,
>                                                    &lt_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, &lt_pref,
> -                                                   &lt_valid) >= 0);
> +        assert_se(sd_dhcp6_lease_reset_address_iter(lease) >= 0);
> +        assert_se(sd_dhcp6_lease_get_address(lease, &addr, &lt_pref,
> +                                                  &lt_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, &lt_pref,
> +        assert_se(sd_dhcp6_lease_get_address(lease, &addr, &lt_pref,
>                                                    &lt_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, &lt_pref,
> -                                                   &lt_valid) == -ENOMSG);
> +        assert_se(sd_dhcp6_lease_reset_address_iter(lease) == -ENOMSG);
>  
> -        assert_se(sd_dhcp6_lease_get_next_address(lease, &addr, &lt_pref,
> -                                                  &lt_valid) == -ENOMSG);
> +        assert_se(sd_dhcp6_lease_get_address(lease, &addr, &lt_pref,
> +                                                &lt_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