---
src/config.c | 38 ++++++++++++++++++++++++++++++++++++++
src/connman.h | 2 ++
2 files changed, 40 insertions(+)
diff --git a/src/config.c b/src/config.c
index d6a3aa4..fe75c75 100644
--- a/src/config.c
+++ b/src/config.c
@@ -1502,3 +1502,41 @@ void connman_config_free_entries(struct
connman_config_entry **entries)
g_free(entries);
return;
}
+
+bool __connman_config_address_provisioned(const char *address,
+ const char *netmask, int family)
+{
+ 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) &&
+ !g_strcmp0(netmask,
+ service->ipv4_netmask))
+ return true;
+ } else if (family == AF_INET6) {
+ if (!g_strcmp0(address,
+ service->ipv6_address) &&
+ atoi(netmask) ==
+ service->ipv6_prefix_length)
+ return true;
+ } else
+ return false;
+ }
+ }
+
+ return false;
+}
diff --git a/src/connman.h b/src/connman.h
index a0f06bd..cb7a115 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -595,6 +595,8 @@ 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_address_provisioned(const char *address,
+ const char *netmask, int family);
int __connman_tethering_init(void);
void __connman_tethering_cleanup(void);
--
1.7.11.7
_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman