From: Yu Watanabe Date: Mon, 3 Oct 2022 01:12:23 +0000 (+0900) Subject: network: ndisc: ignore prefix option with link-local prefix X-Git-Tag: v252-rc1~16^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a115c60e0de034c81d10f9ecad3045aa663884b7;p=thirdparty%2Fsystemd.git network: ndisc: ignore prefix option with link-local prefix See https://www.rfc-editor.org/rfc/rfc4861#section-4.6.2. --- diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c index b1201eb00be..e992ebd1a9f 100644 --- a/src/network/networkd-ndisc.c +++ b/src/network/networkd-ndisc.c @@ -469,6 +469,14 @@ static int ndisc_router_process_prefix(Link *link, sd_ndisc_router *rt) { if (r < 0) return log_link_error_errno(link, r, "Failed to get prefix address: %m"); + /* RFC 4861 Section 4.6.2: + * A router SHOULD NOT send a prefix option for the link-local prefix and a host SHOULD ignore such + * a prefix option. */ + if (in6_addr_is_link_local(&a)) { + log_link_debug(link, "Received link-local prefix, ignoring autonomous prefix."); + return 0; + } + r = sd_ndisc_router_prefix_get_prefixlen(rt, &prefixlen); if (r < 0) return log_link_error_errno(link, r, "Failed to get prefix length: %m");