inet: Add connman_inet_[add|del]_network_route()
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Fri, 17 Dec 2010 14:52:00 +0000 (15:52 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 21 Dec 2010 00:30:31 +0000 (01:30 +0100)
connman_inet_[add|del]_host_route() are now wrappers
around connman_inet_[add|del]_network_route()

include/inet.h
src/inet.c

index 7b34900..5fb3a53 100644 (file)
@@ -48,6 +48,9 @@ int connman_inet_set_address(int index, struct connman_ipaddress *ipaddress);
 int connman_inet_clear_address(int index, struct connman_ipaddress *ipaddress);
 int connman_inet_add_host_route(int index, const char *host, const char *gateway);
 int connman_inet_del_host_route(int index, const char *host);
+int connman_inet_add_network_route(int index, const char *host, const char *gateway,
+                                       const char *netmask);
+int connman_inet_del_network_route(int index, const char *host);
 int connman_inet_set_gateway_address(int index, const char *gateway);
 int connman_inet_clear_gateway_address(int index, const char *gateway);
 int connman_inet_set_gateway_interface(int index);
index 419126b..a98896c 100644 (file)
@@ -616,7 +616,20 @@ int connman_inet_clear_address(int index, struct connman_ipaddress *ipaddress)
        return 0;
 }
 
-int connman_inet_add_host_route(int index, const char *host, const char *gateway)
+int connman_inet_add_host_route(int index, const char *host,
+                               const char *gateway)
+{
+       return connman_inet_add_network_route(index, host, gateway, NULL);
+}
+
+int connman_inet_del_host_route(int index, const char *host)
+{
+       return connman_inet_del_network_route(index, host);
+}
+
+int connman_inet_add_network_route(int index, const char *host,
+                                       const char *gateway,
+                                       const char *netmask)
 {
        struct ifreq ifr;
        struct rtentry rt;
@@ -638,9 +651,11 @@ int connman_inet_add_host_route(int index, const char *host, const char *gateway
        DBG("ifname %s", ifr.ifr_name);
 
        memset(&rt, 0, sizeof(rt));
-       rt.rt_flags = RTF_UP | RTF_HOST;
+       rt.rt_flags = RTF_UP;
        if (gateway != NULL)
                rt.rt_flags |= RTF_GATEWAY;
+       if (netmask == NULL)
+               rt.rt_flags |= RTF_HOST;
 
        memset(&addr, 0, sizeof(addr));
        addr.sin_family = AF_INET;
@@ -658,6 +673,10 @@ int connman_inet_add_host_route(int index, const char *host, const char *gateway
        memset(&addr, 0, sizeof(addr));
        addr.sin_family = AF_INET;
        addr.sin_addr.s_addr = INADDR_ANY;
+       if (netmask != NULL)
+               addr.sin_addr.s_addr = inet_addr(netmask);
+       else
+               addr.sin_addr.s_addr = INADDR_ANY;
        memcpy(&rt.rt_genmask, &addr, sizeof(rt.rt_genmask));
 
        rt.rt_dev = ifr.ifr_name;
@@ -672,7 +691,7 @@ int connman_inet_add_host_route(int index, const char *host, const char *gateway
        return err;
 }
 
-int connman_inet_del_host_route(int index, const char *host)
+int connman_inet_del_network_route(int index, const char *host)
 {
        struct ifreq ifr;
        struct rtentry rt;