From a089c11d2e4cd8149a179f605c19c4fde5a55756 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Wed, 26 Jan 2011 15:46:44 +0100 Subject: [PATCH] inet: IPv6 network route setting API --- include/inet.h | 4 ++++ src/inet.c | 23 ++++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/include/inet.h b/include/inet.h index 5fb3a53..94d1951 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); diff --git a/src/inet.c b/src/inet.c index 4523f16..2f287f6 100644 --- a/src/inet.c +++ b/src/inet.c @@ -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; -- 2.7.4