diff --git a/src/network/networkd-ipv6-proxy-ndp.c b/src/network/networkd-ipv6-proxy-ndp.c index 0b57c6c4db..57b3fb0118 100644 --- a/src/network/networkd-ipv6-proxy-ndp.c +++ b/src/network/networkd-ipv6-proxy-ndp.c @@ -18,7 +18,7 @@ static int set_ipv6_proxy_ndp_address_handler(sd_netlink *rtnl, sd_netlink_messa assert(link); r = sd_netlink_message_get_errno(m); - if (r < 0 && r != -EEXIST) + if (r < 0) log_link_message_warning_errno(link, m, r, "Could not add IPv6 proxy ndp address entry, ignoring"); return 1; @@ -38,7 +38,7 @@ static int ipv6_proxy_ndp_address_configure(Link *link, const struct in6_addr *a if (r < 0) return log_link_error_errno(link, r, "Could not create RTM_NEWNEIGH message: %m"); - r = sd_rtnl_message_neigh_set_flags(req, NLM_F_REQUEST | NTF_PROXY); + r = sd_rtnl_message_neigh_set_flags(req, NTF_PROXY); if (r < 0) return log_link_error_errno(link, r, "Could not set neighbor flags: %m"); diff --git a/test/test-network/conf/25-ipv6-proxy-ndp.network b/test/test-network/conf/25-ipv6-proxy-ndp.network new file mode 100644 index 0000000000..acdcce819a --- /dev/null +++ b/test/test-network/conf/25-ipv6-proxy-ndp.network @@ -0,0 +1,24 @@ +[Match] +Name=dummy98 + +[Network] +IPv6ProxyNDPAddress=2607:5300:203:5215:5::1 +IPv6ProxyNDPAddress=2607:5300:203:5215:4::1 +IPv6ProxyNDPAddress=2607:5300:203:5215:3::1 +IPv6ProxyNDPAddress=2607:5300:203:5215:2::1 +IPv6ProxyNDPAddress=2607:5300:203:5215:1::1 +IPv6AcceptRA=no +IPForward=yes +Address=66.70.129.136/32 +Address=66.70.129.142/32 +Address=66.70.129.143/32 + +[Address] +Address=2607:5300:203:5215::1/64 + +[Route] +Destination=2607:5300:203:52ff:ff:ff:ff:ff + +[Route] +Gateway=2607:5300:203:52ff:ff:ff:ff:ff +Destination=::/0 diff --git a/test/test-network/systemd-networkd-tests.py b/test/test-network/systemd-networkd-tests.py index ab43bf30d6..54ce90f823 100755 --- a/test/test-network/systemd-networkd-tests.py +++ b/test/test-network/systemd-networkd-tests.py @@ -1764,6 +1764,7 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): '25-gre-tunnel-remote-any.netdev', '25-ip6gre-tunnel-remote-any.netdev', '25-ipv6-address-label-section.network', + '25-ipv6-proxy-ndp.network', '25-link-local-addressing-no.network', '25-link-local-addressing-yes.network', '25-link-section-unmanaged.network', @@ -2489,6 +2490,17 @@ class NetworkdNetworkTests(unittest.TestCase, Utilities): print(output) self.assertRegex(output, '2004:da8:1::/64') + def test_ipv6_proxy_ndp(self): + copy_unit_to_networkd_unit_path('25-ipv6-proxy-ndp.network', '12-dummy.netdev') + start_networkd() + + self.wait_online(['dummy98:routable']) + + output = check_output('ip neighbor show proxy dev dummy98') + print(output) + for i in range(1,5): + self.assertRegex(output, f'2607:5300:203:5215:{i}::1 *proxy') + def test_neighbor_section(self): copy_unit_to_networkd_unit_path('25-neighbor-section.network', '12-dummy.netdev') start_networkd()