On Fri, 2013-10-04 at 14:59 +0300, Jukka Rissanen wrote:
> ---
>  src/config.c  | 31 +++++++++++++++++++++++++++++++
>  src/connman.h |  1 +
>  2 files changed, 32 insertions(+)
> 
> diff --git a/src/config.c b/src/config.c
> index 1a05c61..606f857 100644
> --- a/src/config.c
> +++ b/src/config.c
> @@ -1504,3 +1504,34 @@ void connman_config_free_entries(struct 
> connman_config_entry **entries)
>       g_free(entries);
>       return;
>  }
> +
> +bool __connman_config_is_address_provisioned(const char *address, int family)

Nitpick: maybe just __connman_config_address_provisioned?

> +{
> +     GHashTableIter iter, siter;
> +     gpointer value, key, svalue, skey;
> +
> +     if (!address)
> +             return false;
> +
> +     g_hash_table_iter_init(&iter, config_table);
> +
> +     while (g_hash_table_iter_next(&iter, &key, &value)) {
> +             struct connman_config *config = value;
> +
> +             g_hash_table_iter_init(&siter, config->service_table);
> +             while (g_hash_table_iter_next(&siter, &skey, &svalue)) {
> +                     struct connman_config_service *service = svalue;
> +
> +                     if (family == AF_INET) {
> +                             if (!g_strcmp0(address, service->ipv4_address))
> +                                     return true;
> +                     } else if (family == AF_INET6) {
> +                             if (!g_strcmp0(address, service->ipv6_address))
> +                                     return true;
> +                     } else
> +                             return false;
> +             }
> +     }
> +
> +     return false;
> +}

Subnet mask should also be checked.

> diff --git a/src/connman.h b/src/connman.h
> index a0f06bd..f32f979 100644
> --- a/src/connman.h
> +++ b/src/connman.h
> @@ -595,6 +595,7 @@ char **__connman_config_get_string_list(GKeyFile 
> *key_file,
>  
>  bool __connman_config_get_bool(GKeyFile *key_file,
>       const char *group_name, const char *key, GError **error);
> +bool __connman_config_is_address_provisioned(const char *address, int 
> family);
>  
>  int __connman_tethering_init(void);
>  void __connman_tethering_cleanup(void);


        Patrik

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

Reply via email to