1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-12-22 13:33:56 +03:00

networkd: refuse IPv6 RADV prefixes that lack Prefix= setting

Fixes: #9589
This commit is contained in:
Lennart Poettering 2018-11-30 19:34:17 +01:00
parent b806f0b0aa
commit 59ea6e57a5
2 changed files with 12 additions and 1 deletions

View File

@ -503,6 +503,10 @@ _public_ int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p, int dynamic) {
if (!p)
return -EINVAL;
/* Refuse prefixes that don't have a prefix set */
if (IN6_IS_ADDR_UNSPECIFIED(&p->opt.in6_addr))
return -ENOEXEC;
LIST_FOREACH(prefix, cur, ra->prefixes) {
r = in_addr_prefix_intersect(AF_INET6,

View File

@ -494,9 +494,16 @@ int radv_configure(Link *link) {
if (IN_SET(link->network->router_prefix_delegation,
RADV_PREFIX_DELEGATION_STATIC,
RADV_PREFIX_DELEGATION_BOTH)) {
LIST_FOREACH(prefixes, p, link->network->static_prefixes) {
r = sd_radv_add_prefix(link->radv, p->radv_prefix, false);
if (r != -EEXIST && r < 0)
if (r == -EEXIST)
continue;
if (r == -ENOEXEC) {
log_link_warning_errno(link, r, "[IPv6Prefix] section configured without Prefix= setting, ignoring section.");
continue;
}
if (r < 0)
return r;
}
}