12345678910111213141516171819202122232425262728293031323334353637 |
- From: Felix Fietkau <[email protected]>
- Date: Thu, 4 Jan 2024 15:21:21 +0100
- Subject: [PATCH] net: bridge: do not send arp replies if src and target hw
- addr is the same
- There are broken devices in the wild that handle duplicate IP address
- detection by sending out ARP requests for the IP that they received from a
- DHCP server and refuse the address if they get a reply.
- When proxyarp is enabled, they would go into a loop of requesting an address
- and then NAKing it again.
- Link: https://github.com/openwrt/openwrt/issues/14309
- Signed-off-by: Felix Fietkau <[email protected]>
- ---
- --- a/net/bridge/br_arp_nd_proxy.c
- +++ b/net/bridge/br_arp_nd_proxy.c
- @@ -204,7 +204,10 @@ void br_do_proxy_suppress_arp(struct sk_
- if ((p && (p->flags & BR_PROXYARP)) ||
- (f->dst && (f->dst->flags & BR_PROXYARP_WIFI)) ||
- br_is_neigh_suppress_enabled(f->dst, vid)) {
- - if (!vid)
- + replied = true;
- + if (!memcmp(n->ha, sha, dev->addr_len))
- + replied = false;
- + else if (!vid)
- br_arp_send(br, p, skb->dev, sip, tip,
- sha, n->ha, sha, 0, 0);
- else
- @@ -212,7 +215,6 @@ void br_do_proxy_suppress_arp(struct sk_
- sha, n->ha, sha,
- skb->vlan_proto,
- skb_vlan_tag_get(skb));
- - replied = true;
- }
-
- /* If we have replied or as long as we know the
|