aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge/br_input.c
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@osdl.org>2006-03-21 01:59:21 -0500
committerDavid S. Miller <davem@davemloft.net>2006-03-21 01:59:21 -0500
commitfda93d92d7824159d8532995072dde2bee4bc4b3 (patch)
treeba28fcd6637d848bbee4a6e22f642a69cbe1c71f /net/bridge/br_input.c
parentcf0f02d04a830c8202e6a8f8bb37acc6c1629a91 (diff)
[BRIDGE]: allow show/store of group multicast address
Bridge's communicate with each other using Spanning Tree Protocol over a standard multicast address. There are times when testing or layering bridges over existing topologies or tunnels, when it is useful to use alternative multicast addresses for STP packets. The 802.1d standard has some unused addresses, that can be used for this. This patch is restrictive in that it only allows one of the possible addresses in the standard. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_input.c')
-rw-r--r--net/bridge/br_input.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
index dad409489753..a9feb2015425 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -19,7 +19,8 @@
19#include <linux/netfilter_bridge.h> 19#include <linux/netfilter_bridge.h>
20#include "br_private.h" 20#include "br_private.h"
21 21
22const unsigned char bridge_ula[6] = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 }; 22/* Bridge group multicast address 802.1d (pg 51). */
23const u8 br_group_address[ETH_ALEN] = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 };
23 24
24static void br_pass_frame_up(struct net_bridge *br, struct sk_buff *skb) 25static void br_pass_frame_up(struct net_bridge *br, struct sk_buff *skb)
25{ 26{
@@ -108,9 +109,9 @@ static int br_handle_local_finish(struct sk_buff *skb)
108/* Does address match the link local multicast address. 109/* Does address match the link local multicast address.
109 * 01:80:c2:00:00:0X 110 * 01:80:c2:00:00:0X
110 */ 111 */
111static inline int is_link_local(const unsigned char *dest) 112static inline int is_link_local(const const unsigned char *dest)
112{ 113{
113 return memcmp(dest, bridge_ula, 5) == 0 && (dest[5] & 0xf0) == 0; 114 return memcmp(dest, br_group_address, 5) == 0 && (dest[5] & 0xf0) == 0;
114} 115}
115 116
116/* 117/*