diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-03-19 11:58:59 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-03-19 11:58:59 +0000 |
commit | 32a6800a4198273386510b991fee7ab3d90a4afd (patch) | |
tree | f742bdd68f5c3a7d0a2ad46dae1e921a465bbc39 /target/linux/generic/patches-3.8/642-bridge_port_isolate.patch | |
parent | 3600b84cbd9696496d3a7862f003d839c177d088 (diff) | |
download | upstream-32a6800a4198273386510b991fee7ab3d90a4afd.tar.gz upstream-32a6800a4198273386510b991fee7ab3d90a4afd.tar.bz2 upstream-32a6800a4198273386510b991fee7ab3d90a4afd.zip |
kernel: remove linux 3.8 support
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 44890
Diffstat (limited to 'target/linux/generic/patches-3.8/642-bridge_port_isolate.patch')
-rw-r--r-- | target/linux/generic/patches-3.8/642-bridge_port_isolate.patch | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/target/linux/generic/patches-3.8/642-bridge_port_isolate.patch b/target/linux/generic/patches-3.8/642-bridge_port_isolate.patch deleted file mode 100644 index 395dd955ea..0000000000 --- a/target/linux/generic/patches-3.8/642-bridge_port_isolate.patch +++ /dev/null @@ -1,103 +0,0 @@ ---- a/net/bridge/br_private.h -+++ b/net/bridge/br_private.h -@@ -139,6 +139,7 @@ struct net_bridge_port - #define BR_BPDU_GUARD 0x00000002 - #define BR_ROOT_BLOCK 0x00000004 - #define BR_MULTICAST_FAST_LEAVE 0x00000008 -+#define BR_ISOLATE_MODE 0x00000010 - - #ifdef CONFIG_BRIDGE_IGMP_SNOOPING - u32 multicast_startup_queries_sent; ---- a/net/bridge/br_sysfs_if.c -+++ b/net/bridge/br_sysfs_if.c -@@ -159,6 +159,22 @@ BRPORT_ATTR_FLAG(hairpin_mode, BR_HAIRPI - BRPORT_ATTR_FLAG(bpdu_guard, BR_BPDU_GUARD); - BRPORT_ATTR_FLAG(root_block, BR_ROOT_BLOCK); - -+static ssize_t show_isolate_mode(struct net_bridge_port *p, char *buf) -+{ -+ int isolate_mode = (p->flags & BR_ISOLATE_MODE) ? 1 : 0; -+ return sprintf(buf, "%d\n", isolate_mode); -+} -+static ssize_t store_isolate_mode(struct net_bridge_port *p, unsigned long v) -+{ -+ if (v) -+ p->flags |= BR_ISOLATE_MODE; -+ else -+ p->flags &= ~BR_ISOLATE_MODE; -+ return 0; -+} -+static BRPORT_ATTR(isolate_mode, S_IRUGO | S_IWUSR, -+ show_isolate_mode, store_isolate_mode); -+ - #ifdef CONFIG_BRIDGE_IGMP_SNOOPING - static ssize_t show_multicast_router(struct net_bridge_port *p, char *buf) - { -@@ -199,6 +215,7 @@ static const struct brport_attribute *br - &brport_attr_multicast_router, - &brport_attr_multicast_fast_leave, - #endif -+ &brport_attr_isolate_mode, - NULL - }; - ---- a/net/bridge/br_input.c -+++ b/net/bridge/br_input.c -@@ -95,7 +95,8 @@ int br_handle_frame_finish(struct sk_buf - skb2 = skb; - - br->dev->stats.multicast++; -- } else if ((dst = __br_fdb_get(br, dest)) && dst->is_local) { -+ } else if ((p->flags & BR_ISOLATE_MODE) || -+ ((dst = __br_fdb_get(br, dest)) && dst->is_local)) { - skb2 = skb; - /* Do not forward the packet since it's local. */ - skb = NULL; ---- a/net/bridge/br_forward.c -+++ b/net/bridge/br_forward.c -@@ -110,7 +110,7 @@ void br_deliver(const struct net_bridge_ - /* called with rcu_read_lock */ - void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0) - { -- if (should_deliver(to, skb)) { -+ if (should_deliver(to, skb) && !(to->flags & BR_ISOLATE_MODE)) { - if (skb0) - deliver_clone(to, skb, __br_forward); - else -@@ -165,7 +165,8 @@ out: - static void br_flood(struct net_bridge *br, struct sk_buff *skb, - struct sk_buff *skb0, - void (*__packet_hook)(const struct net_bridge_port *p, -- struct sk_buff *skb)) -+ struct sk_buff *skb), -+ bool forward) - { - struct net_bridge_port *p; - struct net_bridge_port *prev; -@@ -173,6 +174,9 @@ static void br_flood(struct net_bridge * - prev = NULL; - - list_for_each_entry_rcu(p, &br->port_list, list) { -+ if (forward && (p->flags & BR_ISOLATE_MODE)) -+ continue; -+ - prev = maybe_deliver(prev, p, skb, __packet_hook); - if (IS_ERR(prev)) - goto out; -@@ -196,14 +200,14 @@ out: - /* called with rcu_read_lock */ - void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb) - { -- br_flood(br, skb, NULL, __br_deliver); -+ br_flood(br, skb, NULL, __br_deliver, false); - } - - /* called under bridge lock */ - void br_flood_forward(struct net_bridge *br, struct sk_buff *skb, - struct sk_buff *skb2) - { -- br_flood(br, skb, skb2, __br_forward); -+ br_flood(br, skb, skb2, __br_forward, true); - } - - #ifdef CONFIG_BRIDGE_IGMP_SNOOPING |