const char *domain);
int connman_provider_append_route(struct connman_provider *provider,
- const char *host, const char *netmask,
+ int family, const char *host,
+ const char *netmask,
const char *gateway);
const char *connman_provider_get_driver_name(struct connman_provider *provider);
static DBusConnection *connection;
struct ov_route {
+ int family;
char *host;
char *netmask;
char *gateway;
struct ov_route *route = value;
struct connman_provider *provider = user_data;
- connman_provider_append_route(provider, route->host, route->netmask,
- route->gateway);
+ connman_provider_append_route(provider, route->family, route->host,
+ route->netmask, route->gateway);
}
static struct ov_route *ov_route_lookup(const char *key, const char *prefix_key,
return NULL;
}
+ route->family = AF_INET;
+
g_hash_table_replace(routes, GINT_TO_POINTER(idx),
route);
}
#include <stdio.h>
#include <string.h>
+#include <stdlib.h>
#include <gdbus.h>
#include "connman.h"
static GSList *driver_list = NULL;
struct connman_route {
+ int family;
char *host;
char *netmask;
char *gateway;
for (list = provider->route_list; list; list = list->next) {
struct connman_route *route = list->data;
+ int index = provider->element.index;
- connman_inet_add_network_route(provider->element.index,
+ if (route->family == AF_INET6) {
+ unsigned char prefix_len = atoi(route->netmask);
+
+ connman_inet_add_ipv6_network_route(index,
+ route->host,
+ route->gateway,
+ prefix_len);
+ } else {
+ connman_inet_add_network_route(index,
route->host,
route->gateway,
route->netmask);
- /* XXX Need to handle IPv6 too */
+ }
}
} else {
connman_element_unregister_children(&provider->element);
}
int connman_provider_append_route(struct connman_provider *provider,
- const char *host, const char *netmask,
+ int family, const char *host,
+ const char *netmask,
const char *gateway)
{
struct connman_route *route;
+ if (family != AF_INET && family != AF_INET6)
+ return -EINVAL;
+
route = g_try_new0(struct connman_route, 1);
if (route == NULL)
return -ENOMEM;
+ route->family = family;
route->host = g_strdup(host);
route->netmask = g_strdup(netmask);
route->gateway = g_strdup(gateway);