OpenCloudOS-Kernel/net/bridge
Herbert Xu eb1d164143 bridge: Add core IGMP snooping support
This patch adds the core functionality of IGMP snooping support
without actually hooking it up.  So this patch should be a no-op
as far as the bridge's external behaviour is concerned.

All the new code and data is controlled by the Kconfig option
BRIDGE_IGMP_SNOOPING.  A run-time toggle is also available.

The multicast switching is done using an hash table that is
lockless on the read-side through RCU.  On the write-side the
new multicast_lock is used for all operations.  The hash table
supports dynamic growth/rehashing.

The hash table will be rehashed if any chain length exceeds a
preset limit.  If rehashing does not reduce the maximum chain
length then snooping will be disabled.

These features may be added in future (in no particular order):

* IGMPv3 source support
* Non-querier router detection
* IPv6

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-02-28 00:48:45 -08:00
..
netfilter netfilter: ebtables: mark: add CONFIG_COMPAT support 2010-02-16 17:27:20 +01:00
Kconfig bridge: Add core IGMP snooping support 2010-02-28 00:48:45 -08:00
Makefile bridge: Add core IGMP snooping support 2010-02-28 00:48:45 -08:00
br.c bridge: Use rcu_barrier() instead of syncronize_net() on unload. 2009-06-26 13:51:32 -07:00
br_device.c bridge: Use BR_INPUT_SKB_CB on xmit path 2010-02-28 00:48:44 -08:00
br_fdb.c net: Move && and || to end of previous line 2009-11-29 16:55:45 -08:00
br_forward.c bridge: Split may_deliver/deliver_clone out of br_flood 2010-02-28 00:48:44 -08:00
br_if.c bridge: Remove unused age_list 2010-02-04 20:28:48 -08:00
br_input.c bridge: Avoid unnecessary clone on forward path 2010-02-28 00:48:43 -08:00
br_ioctl.c bridge: remove dev_put() in add_del_if() 2009-11-05 22:34:16 -08:00
br_multicast.c bridge: Add core IGMP snooping support 2010-02-28 00:48:45 -08:00
br_netfilter.c sysctl net: Remove unused binary sysctl code 2009-11-12 02:05:06 -08:00
br_netlink.c netlink: change nlmsg_notify() return value logic 2009-02-24 23:18:28 -08:00
br_notify.c netns bridge: allow bridges in netns! 2008-09-08 16:19:58 -07:00
br_private.h bridge: Add core IGMP snooping support 2010-02-28 00:48:45 -08:00
br_private_stp.h net: remove CVS keywords 2008-06-11 21:00:38 -07:00
br_stp.c net: mark read-only arrays as const 2009-08-05 10:42:58 -07:00
br_stp_bpdu.c netns bridge: allow bridges in netns! 2008-09-08 16:19:58 -07:00
br_stp_if.c bridge: make bridge address settings sticky 2008-06-17 16:10:06 -07:00
br_stp_timer.c net: remove CVS keywords 2008-06-11 21:00:38 -07:00
br_sysfs_br.c net: Move && and || to end of previous line 2009-11-29 16:55:45 -08:00
br_sysfs_if.c net/bridge: Add 'hairpin' port forwarding mode 2009-08-13 16:26:11 -07:00