diff options
author | John Crispin <john@phrozen.org> | 2016-12-25 20:11:34 +0100 |
---|---|---|
committer | John Crispin <john@phrozen.org> | 2017-08-05 08:46:36 +0200 |
commit | 74d00a8c3849c1340efd713eb94b786e304c201f (patch) | |
tree | de481743de61c34da96ab5f9dba3af3edcfb8260 /target/linux/generic/hack-4.9/641-bridge_port_isolate.patch | |
parent | de350550ef648d9728351b986b0516fa29465c45 (diff) | |
download | upstream-74d00a8c3849c1340efd713eb94b786e304c201f.tar.gz upstream-74d00a8c3849c1340efd713eb94b786e304c201f.tar.bz2 upstream-74d00a8c3849c1340efd713eb94b786e304c201f.zip |
kernel: split patches folder up into backport, pending and hack folders
* properly format/comment all patches
* merge debloat patches
* merge Kconfig patches
* merge swconfig patches
* merge hotplug patches
* drop 200-fix_localversion.patch - upstream
* drop 222-arm_zimage_none.patch - unused
* drop 252-mv_cesa_depends.patch - no longer required
* drop 410-mtd-move-forward-declaration-of-struct-mtd_info.patch - unused
* drop 661-fq_codel_keep_dropped_stats.patch - outdated
* drop 702-phy_add_aneg_done_function.patch - upstream
* drop 840-rtc7301.patch - unused
* drop 841-rtc_pt7c4338.patch - upstream
* drop 921-use_preinit_as_init.patch - unused
* drop spio-gpio-old and gpio-mmc - unused
Signed-off-by: John Crispin <john@phrozen.org>
Diffstat (limited to 'target/linux/generic/hack-4.9/641-bridge_port_isolate.patch')
-rw-r--r-- | target/linux/generic/hack-4.9/641-bridge_port_isolate.patch | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/target/linux/generic/hack-4.9/641-bridge_port_isolate.patch b/target/linux/generic/hack-4.9/641-bridge_port_isolate.patch new file mode 100644 index 0000000000..637550fa28 --- /dev/null +++ b/target/linux/generic/hack-4.9/641-bridge_port_isolate.patch @@ -0,0 +1,84 @@ +From e988390850731aa1697ed09d47b0932fac1af175 Mon Sep 17 00:00:00 2001 +From: Felix Fietkau <nbd@nbd.name> +Date: Fri, 7 Jul 2017 17:20:03 +0200 +Subject: bridge: port isolate + +Isolating individual bridge ports + +Signed-off-by: Felix Fietkau <nbd@nbd.name> +--- + include/linux/if_bridge.h | 1 + + net/bridge/br_forward.c | 5 +++++ + net/bridge/br_input.c | 3 +++ + net/bridge/br_sysfs_if.c | 2 ++ + 4 files changed, 11 insertions(+) + +Index: linux-4.9.34/include/linux/if_bridge.h +=================================================================== +--- linux-4.9.34.orig/include/linux/if_bridge.h ++++ linux-4.9.34/include/linux/if_bridge.h +@@ -47,6 +47,7 @@ struct br_ip_list { + #define BR_PROXYARP_WIFI BIT(10) + #define BR_MCAST_FLOOD BIT(11) + #define BR_MULTICAST_TO_UNICAST BIT(12) ++#define BR_ISOLATE_MODE BIT(13) + + #define BR_DEFAULT_AGEING_TIME (300 * HZ) + +Index: linux-4.9.34/net/bridge/br_forward.c +=================================================================== +--- linux-4.9.34.orig/net/bridge/br_forward.c ++++ linux-4.9.34/net/bridge/br_forward.c +@@ -141,6 +141,9 @@ static int deliver_clone(const struct ne + void br_forward(const struct net_bridge_port *to, + struct sk_buff *skb, bool local_rcv, bool local_orig) + { ++ if (to->flags & BR_ISOLATE_MODE) ++ to = NULL; ++ + if (to && should_deliver(to, skb)) { + if (local_rcv) + deliver_clone(to, skb, local_orig); +@@ -206,6 +209,8 @@ void br_flood(struct net_bridge *br, str + struct net_bridge_port *p; + + list_for_each_entry_rcu(p, &br->port_list, list) { ++ if (!local_orig && (p->flags & BR_ISOLATE_MODE)) ++ continue; + /* Do not flood unicast traffic to ports that turn it off */ + if (pkt_type == BR_PKT_UNICAST && !(p->flags & BR_FLOOD)) + continue; +Index: linux-4.9.34/net/bridge/br_input.c +=================================================================== +--- linux-4.9.34.orig/net/bridge/br_input.c ++++ linux-4.9.34/net/bridge/br_input.c +@@ -175,6 +175,9 @@ int br_handle_frame_finish(struct net *n + if (IS_ENABLED(CONFIG_INET) && skb->protocol == htons(ETH_P_ARP)) + br_do_proxy_arp(skb, br, vid, p); + ++ if (p->flags & BR_ISOLATE_MODE) ++ return br_pass_frame_up(skb); ++ + switch (pkt_type) { + case BR_PKT_MULTICAST: + mdst = br_mdb_get(br, skb, vid); +Index: linux-4.9.34/net/bridge/br_sysfs_if.c +=================================================================== +--- linux-4.9.34.orig/net/bridge/br_sysfs_if.c ++++ linux-4.9.34/net/bridge/br_sysfs_if.c +@@ -172,6 +172,7 @@ BRPORT_ATTR_FLAG(unicast_flood, BR_FLOOD + BRPORT_ATTR_FLAG(proxyarp, BR_PROXYARP); + BRPORT_ATTR_FLAG(proxyarp_wifi, BR_PROXYARP_WIFI); + BRPORT_ATTR_FLAG(multicast_flood, BR_MCAST_FLOOD); ++BRPORT_ATTR_FLAG(isolate_mode, BR_ISOLATE_MODE); + + #ifdef CONFIG_BRIDGE_IGMP_SNOOPING + static ssize_t show_multicast_router(struct net_bridge_port *p, char *buf) +@@ -220,6 +221,7 @@ static const struct brport_attribute *br + &brport_attr_proxyarp, + &brport_attr_proxyarp_wifi, + &brport_attr_multicast_flood, ++ &brport_attr_isolate_mode, + NULL + }; + |