linux/net/bridge
Fernando Luis Vázquez Cao 62b2bcb49c IGMP snooping: set mrouters_only flag for IPv4 traffic properly
Upon reception of a IGMP/IGMPv2 membership report the kernel sets the
mrouters_only flag in a skb that may be a clone of the original skb, which
means that sometimes the bridge loses track of membership report packets (cb
buffers are tied to a specific skb and not shared) and it ends up forwading
join requests to the bridge interface.

This can cause unexpected membership timeouts and intermitent/permanent loss
of connectivity as described in RFC 4541 [2.1.1. IGMP Forwarding Rules]:

    A snooping switch should forward IGMP Membership Reports only to
    those ports where multicast routers are attached.
    [...]
    Sending membership reports to other hosts can result, for IGMPv1
    and IGMPv2, in unintentionally preventing a host from joining a
    specific multicast group.

Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
Tested-by: Hayato Kakuta <kakuta.hayato@oss.ntt.co.jp>
Signed-off-by: David S. Miller <davem@conan.davemloft.net>
2011-06-16 23:14:12 -04:00
..
netfilter netfilter: Fix several warnings in compat_mtw_from_user(). 2011-05-26 19:09:07 +02:00
br_device.c bridge: convert br_features_recompute() to ndo_fix_features 2011-04-28 13:33:08 -07:00
br_fdb.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-04-11 13:44:25 -07:00
br_forward.c net: bridge: check the length of skb after nf_bridge_maybe_copy_header() 2011-01-06 11:33:05 -08:00
br_if.c net: remove synchronize_net() from netdev_set_master() 2011-05-22 21:01:20 -04:00
br_input.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-04-26 12:16:46 -07:00
br_ioctl.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-04-11 13:44:25 -07:00
br_multicast.c IGMP snooping: set mrouters_only flag for IPv4 traffic properly 2011-06-16 23:14:12 -04:00
br_netfilter.c bridge: provide a cow_metrics method for fake_ops 2011-06-07 00:51:35 -07:00
br_netlink.c net: dont hold rtnl mutex during netlink dump callbacks 2011-05-02 15:26:28 -07:00
br_notify.c bridge: convert br_features_recompute() to ndo_fix_features 2011-04-28 13:33:08 -07:00
br_private_stp.h bridge: range check STP parameters 2011-04-04 17:22:29 -07:00
br_private.h bridge: convert br_features_recompute() to ndo_fix_features 2011-04-28 13:33:08 -07:00
br_stp_bpdu.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-01-04 11:57:25 -08:00
br_stp_if.c bridge: range check STP parameters 2011-04-04 17:22:29 -07:00
br_stp_timer.c bridge: control carrier based on ports online 2011-03-14 14:29:02 -07:00
br_stp.c bridge: range check STP parameters 2011-04-04 17:22:29 -07:00
br_sysfs_br.c bridge: range check STP parameters 2011-04-04 17:22:29 -07:00
br_sysfs_if.c bridge: range check STP parameters 2011-04-04 17:22:29 -07:00
br.c bridge: allow creating bridge devices with netlink 2011-04-04 17:22:28 -07:00
Kconfig net: bridge builtin vs. ipv6 modular 2011-03-10 13:45:57 -08:00
Makefile bridge: Add core IGMP snooping support 2010-02-28 00:48:45 -08:00