diff options
author | stephen hemminger <shemminger@vyatta.com> | 2011-10-03 14:14:46 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-10-06 15:27:56 -0400 |
commit | 515853ccecc6987dfb8ed809dd8bf8900286f29e (patch) | |
tree | ddd361a7bacb3d37a95f6101ef541af91c01d9ba /net/bridge/br_private.h | |
parent | 45b58465acaa9d98354e7fa730e3172c5355da06 (diff) |
bridge: allow forwarding some link local frames
This is based on an earlier patch by Nick Carter with comments
by David Lamparter but with some refinements. Thanks for their patience
this is a confusing area with overlap of standards, user requirements,
and compatibility with earlier releases.
It adds a new sysfs attribute
/sys/class/net/brX/bridge/group_fwd_mask
that controls forwarding of frames with address of: 01-80-C2-00-00-0X
The default setting has no forwarding to retain compatibility.
One change from earlier releases is that forwarding of group
addresses is not dependent on STP being enabled or disabled. This
choice was made based on interpretation of tie 802.1 standards.
I expect complaints will arise because of this, but better to follow
the standard than continue acting incorrectly by default.
The filtering mask is writeable, but only values that don't forward
known control frames are allowed. It intentionally blocks attempts
to filter control protocols. For example: writing a 8 allows
forwarding 802.1X PAE addresses which is the most common request.
Reported-by: David Lamparter <equinox@diac24.net>
Original-patch-by: Nick Carter <ncarter100@gmail.com>
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Tested-by: Benjamin Poirier <benjamin.poirier@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_private.h')
-rw-r--r-- | net/bridge/br_private.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 78cc364997d9..a248fe65b29a 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h | |||
@@ -29,6 +29,11 @@ | |||
29 | 29 | ||
30 | #define BR_VERSION "2.3" | 30 | #define BR_VERSION "2.3" |
31 | 31 | ||
32 | /* Control of forwarding link local multicast */ | ||
33 | #define BR_GROUPFWD_DEFAULT 0 | ||
34 | /* Don't allow forwarding control protocols like STP and LLDP */ | ||
35 | #define BR_GROUPFWD_RESTRICTED 0x4007u | ||
36 | |||
32 | /* Path to usermode spanning tree program */ | 37 | /* Path to usermode spanning tree program */ |
33 | #define BR_STP_PROG "/sbin/bridge-stp" | 38 | #define BR_STP_PROG "/sbin/bridge-stp" |
34 | 39 | ||
@@ -193,6 +198,8 @@ struct net_bridge | |||
193 | unsigned long flags; | 198 | unsigned long flags; |
194 | #define BR_SET_MAC_ADDR 0x00000001 | 199 | #define BR_SET_MAC_ADDR 0x00000001 |
195 | 200 | ||
201 | u16 group_fwd_mask; | ||
202 | |||
196 | /* STP */ | 203 | /* STP */ |
197 | bridge_id designated_root; | 204 | bridge_id designated_root; |
198 | bridge_id bridge_id; | 205 | bridge_id bridge_id; |