]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
net: bridge: when suppression is enabled exclude RARP packets
authorNikolay Aleksandrov <nikolay@nvidia.com>
Mon, 22 Mar 2021 15:45:27 +0000 (17:45 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 22 Mar 2021 20:30:24 +0000 (13:30 -0700)
Recently we had an interop issue where RARP packets got suppressed with
bridge neigh suppression enabled, but the check in the code was meant to
suppress GARP. Exclude RARP packets from it which would allow some VMWare
setups to work, to quote the report:
"Those RARP packets usually get generated by vMware to notify physical
switches when vMotion occurs. vMware may use random sip/tip or just use
sip=tip=0. So the RARP packet sometimes get properly flooded by the vtep
and other times get dropped by the logic"

Reported-by: Amer Abdalamer <amer@nvidia.com>
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bridge/br_arp_nd_proxy.c

index dfec65eca8a6e7720246834edddc9c0e575104b2..3db1def4437b383b93ab3a58e659094423c47e94 100644 (file)
@@ -160,7 +160,9 @@ void br_do_proxy_suppress_arp(struct sk_buff *skb, struct net_bridge *br,
        if (br_opt_get(br, BROPT_NEIGH_SUPPRESS_ENABLED)) {
                if (p && (p->flags & BR_NEIGH_SUPPRESS))
                        return;
-               if (ipv4_is_zeronet(sip) || sip == tip) {
+               if (parp->ar_op != htons(ARPOP_RREQUEST) &&
+                   parp->ar_op != htons(ARPOP_RREPLY) &&
+                   (ipv4_is_zeronet(sip) || sip == tip)) {
                        /* prevent flooding to neigh suppress ports */
                        BR_INPUT_SKB_CB(skb)->proxyarp_replied = 1;
                        return;