summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libsystemd-network/sd-radv.c24
-rw-r--r--src/network/networkd-dhcp-prefix-delegation.c4
-rw-r--r--src/systemd/sd-radv.h3
3 files changed, 16 insertions, 15 deletions
diff --git a/src/libsystemd-network/sd-radv.c b/src/libsystemd-network/sd-radv.c
index e332f6a2ab..752c09d890 100644
--- a/src/libsystemd-network/sd-radv.c
+++ b/src/libsystemd-network/sd-radv.c
@@ -659,15 +659,20 @@ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) {
return 0;
}
-sd_radv_prefix *sd_radv_remove_prefix(sd_radv *ra,
- const struct in6_addr *prefix,
- unsigned char prefixlen) {
- sd_radv_prefix *cur, *next;
+void sd_radv_remove_prefix(
+ sd_radv *ra,
+ const struct in6_addr *prefix,
+ unsigned char prefixlen) {
- assert_return(ra, NULL);
- assert_return(prefix, NULL);
+ sd_radv_prefix *cur;
+
+ if (!ra)
+ return;
- LIST_FOREACH_SAFE(prefix, cur, next, ra->prefixes) {
+ if (!prefix)
+ return;
+
+ LIST_FOREACH(prefix, cur, ra->prefixes) {
if (prefixlen != cur->opt.prefixlen)
continue;
@@ -677,11 +682,8 @@ sd_radv_prefix *sd_radv_remove_prefix(sd_radv *ra,
LIST_REMOVE(prefix, ra->prefixes, cur);
ra->n_prefixes--;
sd_radv_prefix_unref(cur);
-
- break;
+ return;
}
-
- return cur;
}
int sd_radv_add_route_prefix(sd_radv *ra, sd_radv_route_prefix *p) {
diff --git a/src/network/networkd-dhcp-prefix-delegation.c b/src/network/networkd-dhcp-prefix-delegation.c
index edc893e9f6..775acb3f95 100644
--- a/src/network/networkd-dhcp-prefix-delegation.c
+++ b/src/network/networkd-dhcp-prefix-delegation.c
@@ -187,7 +187,7 @@ int dhcp_pd_remove(Link *link, bool only_marked) {
continue;
if (link->radv)
- (void) sd_radv_remove_prefix(link->radv, &route->dst.in6, 64);
+ sd_radv_remove_prefix(link->radv, &route->dst.in6, 64);
link_remove_dhcp_pd_subnet_prefix(link, &route->dst.in6);
@@ -212,7 +212,7 @@ int dhcp_pd_remove(Link *link, bool only_marked) {
in6_addr_mask(&prefix, 64);
if (link->radv)
- (void) sd_radv_remove_prefix(link->radv, &prefix, 64);
+ sd_radv_remove_prefix(link->radv, &prefix, 64);
link_remove_dhcp_pd_subnet_prefix(link, &prefix);
diff --git a/src/systemd/sd-radv.h b/src/systemd/sd-radv.h
index e604df1371..6eeb92c48b 100644
--- a/src/systemd/sd-radv.h
+++ b/src/systemd/sd-radv.h
@@ -59,8 +59,7 @@ int sd_radv_set_other_information(sd_radv *ra, int other);
int sd_radv_set_preference(sd_radv *ra, unsigned preference);
int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p);
int sd_radv_add_route_prefix(sd_radv *ra, sd_radv_route_prefix *p);
-sd_radv_prefix *sd_radv_remove_prefix(sd_radv *ra, const struct in6_addr *prefix,
- unsigned char prefixlen);
+void sd_radv_remove_prefix(sd_radv *ra, const struct in6_addr *prefix, unsigned char prefixlen);
int sd_radv_set_rdnss(sd_radv *ra, uint32_t lifetime,
const struct in6_addr *dns, size_t n_dns);
int sd_radv_set_dnssl(sd_radv *ra, uint32_t lifetime, char **search_list);