ipv6: prevent router_solicitations for team port
authorXin Long <lucien.xin@gmail.com>
Wed, 22 Mar 2023 23:35:41 +0000 (19:35 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 24 Mar 2023 08:57:06 +0000 (08:57 +0000)
The issue fixed for bonding in commit c2edacf80e15 ("bonding / ipv6: no
addrconf for slaves separately from master") also exists in team driver.
However, we can't just disable ipv6 addrconf for team ports, as 'teamd'
will need it when nsns_ping watch is used in the user space.

Instead of preventing ipv6 addrconf, this patch only prevents RS packets
for team ports, as it did in commit b52e1cce31ca ("ipv6: Don't send rs
packets to the interface of ARPHRD_TUNNEL").

Note that we do not prevent DAD packets, to avoid the changes getting
intricate / hacky. Also, usually sysctl dad_transmits is set to 1 and
only 1 DAD packet will be sent, and by now no libteam user complains
about DAD packets on team ports, unlike RS packets.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/addrconf.c

index 31e0097..3797917 100644 (file)
@@ -4223,7 +4223,8 @@ static void addrconf_dad_completed(struct inet6_ifaddr *ifp, bool bump_id,
                  ipv6_accept_ra(ifp->idev) &&
                  ifp->idev->cnf.rtr_solicits != 0 &&
                  (dev->flags & IFF_LOOPBACK) == 0 &&
-                 (dev->type != ARPHRD_TUNNEL);
+                 (dev->type != ARPHRD_TUNNEL) &&
+                 !netif_is_team_port(dev);
        read_unlock_bh(&ifp->idev->lock);
 
        /* While dad is in progress mld report's source address is in6_addrany.