Ping for next version. 在 2025/2/17 20:58, Felix Fietkau 写道:
On 17.02.25 12:54, Nikolay Aleksandrov wrote:On 2/17/25 13:26, Felix Fietkau wrote:If multicast snooping is enabled, multicast packets may not always end up onthe local bridge interface, if the host is not a member of the multicastgroup. Similar to how IFF_PROMISC allows all packets to be received locally,let IFF_ALLMULTI allow all multicast packets to be received.Signed-off-by: Felix Fietkau <n...@nbd.name> --- net/bridge/br_input.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 232133a0fd21..7fa2da6985b5 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c@@ -155,6 +155,8 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skbpkt_type = BR_PKT_MULTICAST; if (br_multicast_rcv(&brmctx, &pmctx, vlan, skb, vid)) goto drop; + if (br->dev->flags & IFF_ALLMULTI) + local_rcv = true; } }This doesn't look like a bug fix, IMO it should be for net-next. Also you might miss a mcast stat increase, see the multicast code below, the only case that this would cover is the missing "else" branch of: if ((mdst && mdst->host_joined) || br_multicast_is_router(brmctx, skb)) { local_rcv = true; DEV_STATS_INC(br->dev, multicast); }So I'd suggest to augment the condition and include this ALLMULTI check there, maybe with a comment to mention that all other cases are covered by the currentcode so people are not surprised.Will do, thanks.By the way what is the motivation for supporting this flag? I mean you canmake the bridge mcast router and it will receive all mcast anyway.OpenWrt uses a user space daemon for DHCPv6/RA/NDP handling, and in relay mode it sets the ALLMULTI flag in order to receive all relevant queries on the network. This works for normal network interfaces and non-snooping bridges, but not snooping bridges (unless, as you pointed out, multicast routing is enabled).- Felix
OpenPGP_0xE3520CC91929C8E7.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature