diff options
author | Grant Erickson <gerickson@nuovations.com> | 2023-12-16 00:27:56 -0800 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2023-12-16 19:46:48 +0100 |
commit | 431897b0f670e4a174da524819f2b06a437294a5 (patch) | |
tree | 5d7f0e125c1456c0af974a1762e19d245f1728ee | |
parent | d818cf367bc305bc2c838a162b1f2fedbe0bbe2a (diff) | |
download | connman-431897b0f670e4a174da524819f2b06a437294a5.tar.gz |
service: Refactor 'nameserver_del_routes'.
This refactors 'nameserver_del_routes' into a second, helper function
'del_nameserver_route' such that host route deletion is separated from
nameserver iteration.
In addition, the structure now mirrors that of 'nameserver_add_routes'
and 'add_nameserver_route'. This is beneficial since route addition
and deletion should be symmetric.
-rw-r--r-- | src/service.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/src/service.c b/src/service.c index 1f2c9f54d..54c12532e 100644 --- a/src/service.c +++ b/src/service.c @@ -1367,6 +1367,27 @@ static void add_nameserver_route(int family, int index, char *nameserver, } } +static void del_nameserver_route(int family, int index, const char *nameserver, + const char *gw, + enum connman_ipconfig_type type) +{ + DBG("family %d index %d nameserver %s gw %s", + family, index, nameserver, gw); + + switch (family) { + case AF_INET: + if (type != CONNMAN_IPCONFIG_TYPE_IPV6) + connman_inet_del_host_route(index, + nameserver); + break; + case AF_INET6: + if (type != CONNMAN_IPCONFIG_TYPE_IPV4) + connman_inet_del_ipv6_host_route(index, + nameserver); + break; + } +} + static void nameserver_add_routes(int index, char **nameservers, const char *gw) { @@ -1388,25 +1409,15 @@ static void nameserver_add_routes(int index, char **nameservers, static void nameserver_del_routes(int index, char **nameservers, enum connman_ipconfig_type type) { - int i, family; + int i, ns_family; for (i = 0; nameservers[i]; i++) { - family = connman_inet_check_ipaddress(nameservers[i]); - if (family < 0) + ns_family = connman_inet_check_ipaddress(nameservers[i]); + if (ns_family < 0) continue; - switch (family) { - case AF_INET: - if (type != CONNMAN_IPCONFIG_TYPE_IPV6) - connman_inet_del_host_route(index, - nameservers[i]); - break; - case AF_INET6: - if (type != CONNMAN_IPCONFIG_TYPE_IPV4) - connman_inet_del_ipv6_host_route(index, - nameservers[i]); - break; - } + del_nameserver_route(ns_family, index, nameservers[i], + NULL, type); } } |