---
src/ipconfig.c | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/src/ipconfig.c b/src/ipconfig.c
index aa8274c..f025956 100644
--- a/src/ipconfig.c
+++ b/src/ipconfig.c
@@ -55,6 +55,8 @@ struct connman_ipconfig {
int ipv6_privacy_config;
char *last_dhcp_address;
+
+ struct connman_ippool *pool;
};
struct connman_ipdevice {
@@ -1061,11 +1063,22 @@ const char *__connman_ipconfig_get_local(struct
connman_ipconfig *ipconfig)
void __connman_ipconfig_set_local(struct connman_ipconfig *ipconfig, const
char *address)
{
+ int err = 0;
+
if (ipconfig->address == NULL)
return;
g_free(ipconfig->address->local);
ipconfig->address->local = g_strdup(address);
+
+ if (address == NULL && ipconfig->pool != NULL) {
+ __connman_ippool_remove(ipconfig->pool);
+ return;
+ }
+
+ ipconfig->pool = __connman_ippool_notify(NULL, address, &err);
+ if (ipconfig->pool == NULL && err < 0)
+ connman_error("Notification failed with error %d", err);
}
const char *__connman_ipconfig_get_peer(struct connman_ipconfig *ipconfig)
@@ -1285,6 +1298,9 @@ void connman_ipconfig_unref(struct connman_ipconfig
*ipconfig)
ipconfig->origin = NULL;
}
+ if (ipconfig->pool != NULL)
+ __connman_ippool_remove(ipconfig->pool);
+
connman_ipaddress_free(ipconfig->system);
connman_ipaddress_free(ipconfig->address);
g_free(ipconfig->last_dhcp_address);
--
1.7.1
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman