Pablo Neira Ayuso
2017-Mar-17 13:10 UTC
[Bridge] [PATCH net] bridge: ebtables: fix reception of frames DNAT-ed to bridge device
On Wed, Mar 15, 2017 at 11:06:05PM +0100, Pablo Neira Ayuso wrote:> On Wed, Mar 15, 2017 at 10:16:19PM +0100, Linus L?ssing wrote: > > On Wed, Mar 15, 2017 at 07:15:39PM +0100, Pablo Neira Ayuso wrote: > > > Could you update ebtables dnat to check if the ethernet address > > > matches the one of the input bridge interface, so we mangle the > > > ->pkt_type accordingly from there, instead of doing this from the > > > core? > > > > Actually, that was the approach I thought about and went for first > > (and it would probably work for me). Just checking against the > > bridge device's net_device::dev_addr. > > > > I scratched it though, as I was afraid that the issue might still > > exist for people using some other upper device on top of the bridge > > device. For instance, macvlan? And iterating over the > > net_device::dev_addrs list seemed too costly for fast path to me. > > I was more thinking of following the simple approach that we follow in > ebt_redirect_tg() by taking the input interface. > > Anyway, I'm ok with this.Wait. May this break local multicast listener that are bound to the bridge interface? Assuming the bridge interface got an IP address, and that there is local multicast listener. Missing anything here?
Linus Lüssing
2017-Mar-19 16:55 UTC
[Bridge] [PATCH net] bridge: ebtables: fix reception of frames DNAT-ed to bridge device
On Fri, Mar 17, 2017 at 02:10:44PM +0100, Pablo Neira Ayuso wrote:> Wait. > > May this break local multicast listener that are bound to the bridge > interface? Assuming the bridge interface got an IP address, and that > there is local multicast listener. > > Missing anything here?Hm, for multicast packets usually the code path a few lines later in br_handle_frame_finish() should be taken instead. But you might be right for IP multicast packets with a unicast MAC destination (due to whatever reason, for instance via DNAT'ing again). Will check that - thanks!