summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-07-23 18:21:00 +0200
committerGitHub <noreply@github.com>2019-07-23 18:21:00 +0200
commit28fea36732cb832c399aac5288280d9cbe1047d9 (patch)
tree000064d953e23f89c441fa2bad1e4361aa4bcf12 /src
parent7c53215635d57607bed214c120a1833b7c9dc196 (diff)
parente3cbaeab86532cab4702a6fb67928970a7330b05 (diff)
downloadsystemd-28fea36732cb832c399aac5288280d9cbe1047d9.tar.gz
systemd-28fea36732cb832c399aac5288280d9cbe1047d9.tar.bz2
systemd-28fea36732cb832c399aac5288280d9cbe1047d9.zip
Merge pull request #12977 from yuwata/network-route-type-local-12975
network: do not touch kernel-created multicast route
Diffstat (limited to 'src')
-rw-r--r--src/network/networkd-link.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 8ca4583034..17829fca9f 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -2416,6 +2416,15 @@ static int link_drop_foreign_config(Link *link) {
if (route->protocol == RTPROT_KERNEL)
continue;
+ /* do not touch multicast route added by kernel */
+ /* FIXME: Why the kernel adds this route with protocol RTPROT_BOOT??? We need to investigate that.
+ * https://tools.ietf.org/html/rfc4862#section-5.4 may explain why. */
+ if (route->protocol == RTPROT_BOOT &&
+ route->family == AF_INET6 &&
+ route->dst_prefixlen == 8 &&
+ in_addr_equal(AF_INET6, &route->dst, &(union in_addr_union) { .in6 = {{{ 0xff,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 }}} }))
+ continue;
+
if (route->protocol == RTPROT_STATIC &&
FLAGS_SET(link->network->keep_configuration, KEEP_CONFIGURATION_STATIC))
continue;