ippool: Add prefixlen argument to __connman_ippool_new/deladdr()
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Mon, 6 Feb 2012 15:49:34 +0000 (16:49 +0100)
committerDaniel Wagner <daniel.wagner@bmw-carit.de>
Mon, 13 Feb 2012 17:03:41 +0000 (18:03 +0100)
src/connman.h
src/ipconfig.c
src/ippool.c
unit/test-ippool.c

index da4affd..9a25119 100644 (file)
@@ -741,8 +741,10 @@ const char *__connman_ippool_get_subnet_mask(struct connman_ippool *pool);
 const char *__connman_ippool_get_start_ip(struct connman_ippool *pool);
 const char *__connman_ippool_get_end_ip(struct connman_ippool *pool);
 
-void __connman_ippool_newaddr(int index, const char *address);
-void __connman_ippool_deladdr(int index, const char *address);
+void __connman_ippool_newaddr(int index, const char *address,
+                               unsigned char prefixlen);
+void __connman_ippool_deladdr(int index, const char *address,
+                               unsigned char prefixlen);
 
 int __connman_bridge_create(const char *name);
 int __connman_bridge_remove(const char *name);
index 1f79d2e..e782fb1 100644 (file)
@@ -807,7 +807,7 @@ void __connman_ipconfig_newaddr(int index, int family, const char *label,
                ipdevice->ifname, address, prefixlen, label, family);
 
        if (type == CONNMAN_IPCONFIG_TYPE_IPV4)
-               __connman_ippool_newaddr(index, address);
+               __connman_ippool_newaddr(index, address, prefixlen);
 
        if (ipdevice->config_ipv4 != NULL && family == AF_INET)
                connman_ipaddress_copy(ipdevice->config_ipv4->system,
@@ -868,15 +868,15 @@ void __connman_ipconfig_deladdr(int index, int family, const char *label,
        ipdevice->address_list = g_slist_remove(ipdevice->address_list,
                                                                ipaddress);
 
+       if (type == CONNMAN_IPCONFIG_TYPE_IPV4)
+               __connman_ippool_deladdr(index, address, prefixlen);
+
        connman_ipaddress_clear(ipaddress);
        g_free(ipaddress);
 
        connman_info("%s {del} address %s/%u label %s", ipdevice->ifname,
                                                address, prefixlen, label);
 
-       if (type == CONNMAN_IPCONFIG_TYPE_IPV4)
-               __connman_ippool_deladdr(index, address);
-
        if ((ipdevice->flags & (IFF_RUNNING | IFF_LOWER_UP)) != (IFF_RUNNING | IFF_LOWER_UP))
                return;
 
index a4819ee..f0952ff 100644 (file)
@@ -196,7 +196,8 @@ static uint32_t find_free_block()
        return 0;
 }
 
-void __connman_ippool_newaddr(int index, const char *address)
+void __connman_ippool_newaddr(int index, const char *address,
+                               unsigned char prefixlen)
 {
        struct connman_ippool *pool;
        struct in_addr inp;
@@ -225,7 +226,8 @@ void __connman_ippool_newaddr(int index, const char *address)
                pool->collision_cb(pool, pool->user_data);
 }
 
-void __connman_ippool_deladdr(int index, const char *address)
+void __connman_ippool_deladdr(int index, const char *address,
+                               unsigned char prefixlen)
 {
        struct in_addr inp;
        uint32_t block;
index 0794bde..7b4a91b 100644 (file)
@@ -179,11 +179,11 @@ static void test_ippool_collision0(void)
                "\tgateway %s broadcast %s mask %s", start_ip, end_ip,
                gateway, broadcast, subnet_mask);
 
-       __connman_ippool_newaddr(23, start_ip);
+       __connman_ippool_newaddr(23, start_ip, 24);
 
        g_assert(flag == 0);
 
-       __connman_ippool_newaddr(42, start_ip);
+       __connman_ippool_newaddr(42, start_ip, 24);
 
        g_assert(flag == 1);