diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2010-07-12 18:45:59 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-07-12 20:44:27 +0200 |
commit | 57cecbcc89e3df31600b6a769be6255c5916529f (patch) | |
tree | c39e767ca0599e1b05b87a001478beda58e6d2eb /src/service.c | |
parent | 5c00b517f7dfcd8edef4819580fa21c38d19c2bc (diff) | |
download | connman-57cecbcc89e3df31600b6a769be6255c5916529f.tar.gz connman-57cecbcc89e3df31600b6a769be6255c5916529f.tar.bz2 connman-57cecbcc89e3df31600b6a769be6255c5916529f.zip |
No host route needed for nameservers on the same subnet
Diffstat (limited to 'src/service.c')
-rw-r--r-- | src/service.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/service.c b/src/service.c index 93eaa5a1..057b2da3 100644 --- a/src/service.c +++ b/src/service.c @@ -384,10 +384,25 @@ void __connman_service_nameserver_add_routes(struct connman_service *service, if (service->nameservers != NULL) { int i; - for (i = 0; service->nameservers[i]; i++) + /* + * We add nameservers host routes for nameservers that + * are not on our subnet. For those who are, the subnet + * route will be installed by the time the dns proxy code + * tries to reach them. The subnet route is installed + * when setting the interface IP address. + */ + for (i = 0; service->nameservers[i]; i++) { + if (connman_inet_compare_subnet(index, + service->nameservers[i])) + continue; + connman_inet_add_host_route(index, service->nameservers[i], gw); + } } else if (service->nameserver != NULL) { + if (connman_inet_compare_subnet(index, service->nameserver)) + return; + connman_inet_add_host_route(index, service->nameserver, gw); } } |