Hi Jukka

On 07/01/2014 02:25 PM, Jukka Rissanen wrote:
> This is needed by later patch when vpnd needs to remember the
> previous used IP address.
> ---
>  include/ipaddress.h |  1 +
>  src/ipaddress.c     | 25 +++++++++++++++++++++++--
>  2 files changed, 24 insertions(+), 2 deletions(-)
> 
> diff --git a/include/ipaddress.h b/include/ipaddress.h
> index c698541..3655ca8 100644
> --- a/include/ipaddress.h
> +++ b/include/ipaddress.h
> @@ -51,6 +51,7 @@ void connman_ipaddress_set_peer(struct connman_ipaddress 
> *ipaddress,
>  void connman_ipaddress_clear(struct connman_ipaddress *ipaddress);
>  void connman_ipaddress_copy_address(struct connman_ipaddress *ipaddress,
>                                       struct connman_ipaddress *source);
> +struct connman_ipaddress *connman_ipaddress_copy(struct connman_ipaddress 
> *ipaddress);
>  
>  #ifdef __cplusplus
>  }
> diff --git a/src/ipaddress.c b/src/ipaddress.c
> index 95f9038..9892654 100644
> --- a/src/ipaddress.c
> +++ b/src/ipaddress.c
> @@ -192,8 +192,7 @@ void connman_ipaddress_clear(struct connman_ipaddress 
> *ipaddress)
>  
>  /*
>   * Note that this copy function only copies the actual address and
> - * prefixlen. If you need full copy of ipaddress struct, then you need
> - * to create a new function that does that.
> + * prefixlen. Use the other copy function to copy the whole struct.
>   */
>  void connman_ipaddress_copy_address(struct connman_ipaddress *ipaddress,
>                                       struct connman_ipaddress *source)
> @@ -207,3 +206,25 @@ void connman_ipaddress_copy_address(struct 
> connman_ipaddress *ipaddress,
>       g_free(ipaddress->local);
>       ipaddress->local = g_strdup(source->local);
>  }
> +
> +struct connman_ipaddress *
> +connman_ipaddress_copy(struct connman_ipaddress *ipaddress)
> +{
> +     struct connman_ipaddress *copy;
> +
> +     if (!ipaddress)
> +             return NULL;
> +
> +     copy = g_try_new0(struct connman_ipaddress, 1);
> +     if (!copy)
> +             return NULL;

just use g_new0 here unless you are going to protect against abort in
the g_strdup below.

> +
> +     copy->family = ipaddress->family;
> +     copy->prefixlen = ipaddress->prefixlen;
> +     copy->local = g_strdup(ipaddress->local);
> +     copy->peer = g_strdup(ipaddress->peer);
> +     copy->broadcast = g_strdup(ipaddress->broadcast);
> +     copy->gateway = g_strdup(ipaddress->gateway);
> +
> +     return copy;
> +}
> 

cheers,
daniel
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to