From: Lennart Poettering Date: Wed, 31 May 2023 07:42:45 +0000 (+0200) Subject: loopback-setup: set IFA_F_NOPREFIXROUTE when configuring 'lo' ipv6 address X-Git-Tag: v254-rc1~332^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8557425aafe697f8df59c58805170897c3d7c9b5;p=thirdparty%2Fsystemd.git loopback-setup: set IFA_F_NOPREFIXROUTE when configuring 'lo' ipv6 address Otherwise the kernel will set up two routes to ::1, one in the "main", and one in the "local" routing table. Fixes: #25819 --- diff --git a/src/shared/loopback-setup.c b/src/shared/loopback-setup.c index 5dbc4b1af23..d01d8b06767 100644 --- a/src/shared/loopback-setup.c +++ b/src/shared/loopback-setup.c @@ -114,9 +114,15 @@ static int add_ipv6_address(sd_netlink *rtnl, struct state *s) { if (r < 0) return r; - r = sd_rtnl_message_addr_set_flags(req, IFA_F_PERMANENT); + uint32_t flags = IFA_F_PERMANENT|IFA_F_NOPREFIXROUTE; + r = sd_rtnl_message_addr_set_flags(req, flags & 0xffu); /* rtnetlink wants low 8 bit of flags via regular flags field… */ if (r < 0) return r; + if ((flags & ~0xffu) != 0) { + r = sd_netlink_message_append_u32(req, IFA_FLAGS, flags); /* …and the rest of the flags via IFA_FLAGS */ + if (r < 0) + return r; + } r = sd_rtnl_message_addr_set_scope(req, RT_SCOPE_HOST); if (r < 0)