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;
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) {
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);
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);
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);