summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/inet.h4
-rw-r--r--src/inet.c23
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);
diff --git a/src/inet.c b/src/inet.c
index 4523f163..2f287f63 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;