From: Guillaume Zajac Date: Mon, 29 Aug 2011 09:32:36 +0000 (+0200) Subject: tethering: Add notification callback implementation X-Git-Tag: 2.0_alpha~646 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=772c408e91c52c9feedec9c5bf8ba936ab13e5fe;p=framework%2Fconnectivity%2Fconnman.git tethering: Add notification callback implementation --- diff --git a/src/tethering.c b/src/tethering.c index 5c359dd..b135b45 100644 --- a/src/tethering.c +++ b/src/tethering.c @@ -327,6 +327,12 @@ static void disable_nat(const char *interface) __connman_iptables_commit("nat"); } +static void tethering_restart(struct connman_ippool *pool, void *user_data) +{ + __connman_tethering_set_disabled(); + __connman_tethering_set_enabled(); +} + void __connman_tethering_set_enabled(void) { int index; @@ -348,7 +354,8 @@ void __connman_tethering_set_enabled(void) return; index = connman_inet_ifindex(BRIDGE_NAME); - dhcp_ippool = __connman_ippool_create(index, 1, 253, NULL, NULL); + dhcp_ippool = __connman_ippool_create(index, 1, 253, + tethering_restart, NULL); if (dhcp_ippool == NULL) { connman_error("Fail to create IP pool"); return; @@ -534,6 +541,15 @@ static void owner_disconnect(DBusConnection *connection, void *user_data) g_hash_table_remove(pn_hash, pn->path); } +static void ippool_disconnect(struct connman_ippool *pool, void *user_data) +{ + struct connman_private_network *pn = user_data; + + DBG("block used externally"); + + g_hash_table_remove(pn_hash, pn->path); +} + int __connman_private_network_request(DBusMessage *msg, const char *owner) { struct connman_private_network *pn; @@ -585,7 +601,7 @@ int __connman_private_network_request(DBusMessage *msg, const char *owner) pn->fd = fd; pn->interface = iface; pn->index = index; - pn->pool = __connman_ippool_create(pn->fd, 1, 1, NULL, NULL); + pn->pool = __connman_ippool_create(pn->fd, 1, 1, ippool_disconnect, pn); if (pn->pool == NULL) { errno = -ENOMEM; goto error; diff --git a/unit/test-ippool.c b/unit/test-ippool.c index de25348..0794bde 100644 --- a/unit/test-ippool.c +++ b/unit/test-ippool.c @@ -183,7 +183,7 @@ static void test_ippool_collision0(void) g_assert(flag == 0); - __connman_ippool_newaddr(42, end_ip); + __connman_ippool_newaddr(42, start_ip); g_assert(flag == 1);