From: Jukka Rissanen Date: Tue, 27 Mar 2012 07:59:57 +0000 (+0300) Subject: service: Nameservers behind P-t-P link need special handling X-Git-Tag: 0.80~86 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=56e8d7b861c9e281ba1d4c6ea693a6651e43a97e;p=platform%2Fupstream%2Fconnman.git service: Nameservers behind P-t-P link need special handling Setting routes to nameservers need special setup if the nameservers are behind point-to-point link, the gateway must not be set in this case. --- diff --git a/src/service.c b/src/service.c index 120b41a..89fd705 100644 --- a/src/service.c +++ b/src/service.c @@ -961,6 +961,28 @@ void __connman_service_nameserver_clear(struct connman_service *service) update_nameservers(service); } +static void add_nameserver_route(int family, int index, char *nameserver, + const char *gw) +{ + switch (family) { + case AF_INET: + if (connman_inet_compare_subnet(index, nameserver) == TRUE) + break; + + if (connman_inet_add_host_route(index, nameserver, gw) < 0) + /* For P-t-P link the above route add will fail */ + connman_inet_add_host_route(index, nameserver, NULL); + break; + + case AF_INET6: + if (connman_inet_add_ipv6_host_route(index, nameserver, + gw) < 0) + connman_inet_add_ipv6_host_route(index, nameserver, + NULL); + break; + } +} + static void nameserver_add_routes(int index, char **nameservers, const char *gw) { @@ -981,14 +1003,7 @@ static void nameserver_add_routes(int index, char **nameservers, else family = addr->ai_family; - if (family == AF_INET) { - if (connman_inet_compare_subnet(index, - nameservers[i]) != TRUE) - connman_inet_add_host_route(index, - nameservers[i], gw); - } else if (family == AF_INET6) - connman_inet_add_ipv6_host_route(index, - nameservers[i], gw); + add_nameserver_route(family, index, nameservers[i], gw); freeaddrinfo(addr); }