inet: IPv6 network route setting API
authorSamuel Ortiz <sameo@linux.intel.com>
Wed, 26 Jan 2011 14:46:44 +0000 (15:46 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 26 Jan 2011 14:46:44 +0000 (15:46 +0100)
include/inet.h
src/inet.c

index 5fb3a53..94d1951 100644 (file)
@@ -60,8 +60,12 @@ int connman_inet_set_ipv6_address(int index,
                struct connman_ipaddress *ipaddress);
 int connman_inet_clear_ipv6_address(int index,
                const char *address, int prefix_len);
+int connman_inet_add_ipv6_network_route(int index, const char *host,
+                                       const char *gateway, unsigned char prefix_len);
 int connman_inet_add_ipv6_host_route(int index, const char *host,
                                                const char *gateway);
+int connman_inet_del_ipv6_network_route(int index, const char *host,
+                                       unsigned char prefix_len);
 int connman_inet_del_ipv6_host_route(int index, const char *host);
 int connman_inet_set_ipv6_gateway_address(int index, const char *gateway);
 int connman_inet_clear_ipv6_gateway_address(int index, const char *gateway);
index 4523f16..2f287f6 100644 (file)
@@ -733,7 +733,8 @@ int connman_inet_del_network_route(int index, const char *host)
        return err;
 }
 
-int connman_inet_del_ipv6_host_route(int index, const char *host)
+int connman_inet_del_ipv6_network_route(int index, const char *host,
+                                               unsigned char prefix_len)
 {
        struct in6_rtmsg rt;
        int sk, err;
@@ -745,7 +746,7 @@ int connman_inet_del_ipv6_host_route(int index, const char *host)
 
        memset(&rt, 0, sizeof(rt));
 
-       rt.rtmsg_dst_len = 128;
+       rt.rtmsg_dst_len = prefix_len;
 
        err = inet_pton(AF_INET6, host, &rt.rtmsg_dst);
        if (err < 0)
@@ -771,8 +772,14 @@ out:
        return err;
 }
 
-int connman_inet_add_ipv6_host_route(int index, const char *host,
-                                               const char *gateway)
+int connman_inet_del_ipv6_host_route(int index, const char *host)
+{
+       return connman_inet_del_ipv6_network_route(index, host, 128);
+}
+
+int connman_inet_add_ipv6_network_route(int index, const char *host,
+                                       const char *gateway,
+                                               unsigned char prefix_len)
 {
        struct in6_rtmsg rt;
        int sk, err;
@@ -784,7 +791,7 @@ int connman_inet_add_ipv6_host_route(int index, const char *host,
 
        memset(&rt, 0, sizeof(rt));
 
-       rt.rtmsg_dst_len = 128;
+       rt.rtmsg_dst_len = prefix_len;
 
        err = inet_pton(AF_INET6, host, &rt.rtmsg_dst);
        if (err < 0)
@@ -815,6 +822,12 @@ out:
        return err;
 }
 
+int connman_inet_add_ipv6_host_route(int index, const char *host,
+                                       const char *gateway)
+{
+       return connman_inet_add_ipv6_network_route(index, host, gateway, 128);
+}
+
 int connman_inet_set_ipv6_gateway_address(int index, const char *gateway)
 {
        struct in6_rtmsg rt;