summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/inet.c23
1 files changed, 18 insertions, 5 deletions
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;