lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <E4A652DE-AC03-4E8D-B50E-8BE92DCA31C5@cumulusnetworks.com>
Date:   Tue, 28 Feb 2017 11:20:53 +0200
From:   Nikolay Aleksandrov <nikolay@...ulusnetworks.com>
To:     Mike Manning <mmanning@...cade.com>
Cc:     Linux Kernel Network Developers <netdev@...r.kernel.org>,
        Stephen Hemminger <stephen@...workplumber.org>,
        bridge@...ts.linux-foundation.org
Subject: Re: [PATCH] net: bridge: allow IPv6 when multicast flood is disabled


> On Feb 27, 2017, at 7:11 PM, Mike Manning <mmanning@...cade.com> wrote:
> 

+CC bridge maintainers

> Even with multicast flooding turned off, IPv6 ND should still work so
> that IPv6 connectivity is provided. Allow this by continuing to flood
> multicast traffic originated by us. And similar to the unicast case,
> set auto-mask if the multicast flood flag is set.
> 
> Fixes: b6cb5ac8331b ("net: bridge: add per-port multicast flood flag")
> Cc: Nikolay Aleksandrov <nikolay@...ulusnetworks.com>
> Signed-off-by: Mike Manning <mmanning@...cade.com>
> ---
> include/linux/if_bridge.h | 2 +-
> net/bridge/br_forward.c   | 3 ++-
> 2 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h
> index c5847dc..7731808 100644
> --- a/include/linux/if_bridge.h
> +++ b/include/linux/if_bridge.h
> @@ -40,12 +40,12 @@ struct br_ip_list {
> #define BR_ADMIN_COST		BIT(4)
> #define BR_LEARNING		BIT(5)
> #define BR_FLOOD		BIT(6)
> -#define BR_AUTO_MASK		(BR_FLOOD | BR_LEARNING)
> #define BR_PROMISC		BIT(7)
> #define BR_PROXYARP		BIT(8)
> #define BR_LEARNING_SYNC	BIT(9)
> #define BR_PROXYARP_WIFI	BIT(10)
> #define BR_MCAST_FLOOD		BIT(11)
> +#define BR_AUTO_MASK		(BR_FLOOD | BR_LEARNING | BR_MCAST_FLOOD)

Quoting myself from v2 of the patch-set that introduced the mcast flood flag:
ā€œ
Actually there is one potential issue with br_auto_mask. I shouldn't change it 
because that
changes the requirement for a br_auto_port and it may change user-visible 
behaviour (e.g.
having to disable both unicast flood and multicast flood to get the same config 
for
auto ports).ā€

Source: http://www.mail-archive.com/netdev@vger.kernel.org/msg125724.html

> #define BR_MULTICAST_TO_UNICAST	BIT(12)
> #define BR_VLAN_TUNNEL		BIT(13)
> 
> diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
> index 6bfac29..7fe7d58 100644
> --- a/net/bridge/br_forward.c
> +++ b/net/bridge/br_forward.c
> @@ -186,8 +186,9 @@ void br_flood(struct net_bridge *br, struct sk_buff *skb,
> 		/* Do not flood unicast traffic to ports that turn it off */
> 		if (pkt_type == BR_PKT_UNICAST && !(p->flags & BR_FLOOD))
> 			continue;
> +		/* Do not flood if mc off, except for traffic we originate */
> 		if (pkt_type == BR_PKT_MULTICAST &&
> -		    !(p->flags & BR_MCAST_FLOOD))
> +		    !(p->flags & BR_MCAST_FLOOD) && (skb->dev != br->dev))

Please drop the extra () around the device check

> 			continue;
> 
> 		/* Do not flood to ports that enable proxy ARP */

We are aware of this and have discussed it, but Iā€™m not sure this is the best way to fix it,
it will still allow local IPv4 mcast to be flooded on all ports even with that flag removed and
that definitely changes user-visible behaviour (even if it is okay) and will not be appropriate
for -net.

Let me get back to you on this one.

Thanks,
 Nik

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ