aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrant Erickson <gerickson@nuovations.com>2023-12-16 00:27:56 -0800
committerMarcel Holtmann <marcel@holtmann.org>2023-12-16 19:46:48 +0100
commit431897b0f670e4a174da524819f2b06a437294a5 (patch)
tree5d7f0e125c1456c0af974a1762e19d245f1728ee
parentd818cf367bc305bc2c838a162b1f2fedbe0bbe2a (diff)
downloadconnman-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.c41
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);
}
}