summaryrefslogtreecommitdiff
path: root/net/bridge/br_private.h
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2010-02-27 19:41:46 +0000
committerDavid S. Miller <davem@davemloft.net>2010-02-28 00:48:45 -0800
commit5cb5e947d8f82011e3d7e7017e9d10db9a40ae9f (patch)
tree126e3b2112f780120bf9e95c67fdb1b81e73c314 /net/bridge/br_private.h
parenteb1d16414339a6e113d89e2cca2556005d7ce919 (diff)
downloadlinux-3.10-5cb5e947d8f82011e3d7e7017e9d10db9a40ae9f.tar.gz
linux-3.10-5cb5e947d8f82011e3d7e7017e9d10db9a40ae9f.tar.bz2
linux-3.10-5cb5e947d8f82011e3d7e7017e9d10db9a40ae9f.zip
bridge: Add multicast forwarding functions
This patch adds code to perform selective multicast forwarding. We forward multicast traffic to a set of ports plus all multicast router ports. In order to avoid duplications among these two sets of ports, we order all ports by the numeric value of their pointers. The two lists are then walked in lock-step to eliminate duplicates. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_private.h')
-rw-r--r--net/bridge/br_private.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 44345c9afdd..c85943c2b23 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -293,6 +293,10 @@ extern void br_multicast_disable_port(struct net_bridge_port *port);
extern void br_multicast_init(struct net_bridge *br);
extern void br_multicast_open(struct net_bridge *br);
extern void br_multicast_stop(struct net_bridge *br);
+extern void br_multicast_deliver(struct net_bridge_mdb_entry *mdst,
+ struct sk_buff *skb);
+extern void br_multicast_forward(struct net_bridge_mdb_entry *mdst,
+ struct sk_buff *skb, struct sk_buff *skb2);
#else
static inline int br_multicast_rcv(struct net_bridge *br,
struct net_bridge_port *port,
@@ -334,6 +338,17 @@ static inline void br_multicast_open(struct net_bridge *br)
static inline void br_multicast_stop(struct net_bridge *br)
{
}
+
+static inline void br_multicast_deliver(struct net_bridge_mdb_entry *mdst,
+ struct sk_buff *skb)
+{
+}
+
+static inline void br_multicast_forward(struct net_bridge_mdb_entry *mdst,
+ struct sk_buff *skb,
+ struct sk_buff *skb2)
+{
+}
#endif
static inline bool br_multicast_is_router(struct net_bridge *br)