sd-radv: use in6_addr_prefix_intersect()

This commit is contained in:
Yu Watanabe
2024-04-24 12:22:05 +09:00
parent 21ae0b4b3c
commit c7c56724a5
+4 -7
View File
@@ -626,19 +626,16 @@ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p) {
const char *addr_p = IN6_ADDR_PREFIX_TO_STRING(&p->opt.in6_addr, p->opt.prefixlen);
LIST_FOREACH(prefix, cur, ra->prefixes) {
r = in_addr_prefix_intersect(AF_INET6,
(const union in_addr_union*) &cur->opt.in6_addr,
cur->opt.prefixlen,
(const union in_addr_union*) &p->opt.in6_addr,
p->opt.prefixlen);
r = in6_addr_prefix_intersect(&cur->opt.in6_addr, cur->opt.prefixlen,
&p->opt.in6_addr, p->opt.prefixlen);
if (r < 0)
return r;
if (r == 0)
continue;
continue; /* no intersection */
if (cur->opt.prefixlen == p->opt.prefixlen) {
found = cur;
break;
break; /* same prefix */
}
return log_radv_errno(ra, SYNTHETIC_ERRNO(EEXIST),