1
0
Files
linux/debian/patches/krd/0003-bridge-group_fwd_mask.patch

38 lines
1.0 KiB
Diff

--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -384,7 +384,11 @@ static rx_handler_result_t br_handle_fra
case 0x01: /* IEEE MAC (Pause) */
reason = SKB_DROP_REASON_MAC_IEEE_MAC_CONTROL;
- goto drop;
+ fwd_mask |= p->br->group_fwd_mask;
+ if (fwd_mask & (1u << dest[5]))
+ goto forward;
+ else
+ goto drop;
case 0x0E: /* 802.1AB LLDP */
fwd_mask |= p->br->group_fwd_mask;
--- a/net/bridge/br_netlink.c
+++ b/net/bridge/br_netlink.c
@@ -1365,8 +1365,6 @@ static int br_changelink(struct net_devi
if (data[IFLA_BR_GROUP_FWD_MASK]) {
u16 fwd_mask = nla_get_u16(data[IFLA_BR_GROUP_FWD_MASK]);
- if (fwd_mask & BR_GROUPFWD_RESTRICTED)
- return -EINVAL;
br->group_fwd_mask = fwd_mask;
}
--- a/net/bridge/br_sysfs_br.c
+++ b/net/bridge/br_sysfs_br.c
@@ -179,8 +179,6 @@ static ssize_t group_fwd_mask_show(struc
static int set_group_fwd_mask(struct net_bridge *br, unsigned long val,
struct netlink_ext_ack *extack)
{
- if (val & BR_GROUPFWD_RESTRICTED)
- return -EINVAL;
br->group_fwd_mask = val;