diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2011-01-26 15:46:44 +0100 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-01-26 15:46:44 +0100 |
commit | a089c11d2e4cd8149a179f605c19c4fde5a55756 (patch) | |
tree | 2e764b251f2c2fef147f0d7b33a4ec033e8b101d | |
parent | 034e022c01d625f0cd9fac7aaa96eee980f1cb3e (diff) | |
download | connman-a089c11d2e4cd8149a179f605c19c4fde5a55756.tar.gz connman-a089c11d2e4cd8149a179f605c19c4fde5a55756.tar.bz2 connman-a089c11d2e4cd8149a179f605c19c4fde5a55756.zip |
inet: IPv6 network route setting API
-rw-r--r-- | include/inet.h | 4 | ||||
-rw-r--r-- | src/inet.c | 23 |
2 files changed, 22 insertions, 5 deletions
diff --git a/include/inet.h b/include/inet.h index 5fb3a53f..94d1951c 100644 --- a/include/inet.h +++ b/include/inet.h @@ -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); @@ -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; |