aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/hack-4.14
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2018-07-04 20:14:08 +0200
committerJo-Philipp Wich <jo@mein.io>2018-12-18 09:45:59 +0100
commite68e498ff35412daba861c9d6d8ebad8f22a6465 (patch)
treea86330a561d19cb4348e283ee91793fb315457a3 /target/linux/generic/hack-4.14
parentb06665b2052eac06cb5a2359e1d569cbeca72e91 (diff)
downloadupstream-e68e498ff35412daba861c9d6d8ebad8f22a6465.tar.gz
upstream-e68e498ff35412daba861c9d6d8ebad8f22a6465.tar.bz2
upstream-e68e498ff35412daba861c9d6d8ebad8f22a6465.zip
kernel: replace bridge port isolate hack with upstream patch backport on 4.14
Signed-off-by: Felix Fietkau <nbd@nbd.name> (backported from 21ee8ce9b52f8ae4a6babf4032f71e2d4d56392b) (rebased patches) Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'target/linux/generic/hack-4.14')
-rw-r--r--target/linux/generic/hack-4.14/640-bridge-only-accept-EAP-locally.patch7
-rw-r--r--target/linux/generic/hack-4.14/641-bridge_port_isolate.patch76
2 files changed, 3 insertions, 80 deletions
diff --git a/target/linux/generic/hack-4.14/640-bridge-only-accept-EAP-locally.patch b/target/linux/generic/hack-4.14/640-bridge-only-accept-EAP-locally.patch
index 83c9cf739f..0dbb8ee3c0 100644
--- a/target/linux/generic/hack-4.14/640-bridge-only-accept-EAP-locally.patch
+++ b/target/linux/generic/hack-4.14/640-bridge-only-accept-EAP-locally.patch
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
-@@ -166,11 +166,14 @@ int br_handle_frame_finish(struct net *n
+@@ -166,10 +166,14 @@ int br_handle_frame_finish(struct net *n
}
}
@@ -26,7 +26,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
goto drop;
- BR_INPUT_SKB_CB(skb)->brdev = br->dev;
--
- if (IS_ENABLED(CONFIG_INET) && skb->protocol == htons(ETH_P_ARP))
- br_do_proxy_arp(skb, br, vid, p);
+ BR_INPUT_SKB_CB(skb)->src_port_isolated = !!(p->flags & BR_ISOLATED);
+ if (IS_ENABLED(CONFIG_INET) && skb->protocol == htons(ETH_P_ARP))
diff --git a/target/linux/generic/hack-4.14/641-bridge_port_isolate.patch b/target/linux/generic/hack-4.14/641-bridge_port_isolate.patch
deleted file mode 100644
index 43e71ee2ff..0000000000
--- a/target/linux/generic/hack-4.14/641-bridge_port_isolate.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-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(+)
-
---- a/include/linux/if_bridge.h
-+++ b/include/linux/if_bridge.h
-@@ -49,6 +49,7 @@ struct br_ip_list {
- #define BR_MULTICAST_TO_UNICAST BIT(12)
- #define BR_VLAN_TUNNEL BIT(13)
- #define BR_BCAST_FLOOD BIT(14)
-+#define BR_ISOLATE_MODE BIT(15)
-
- #define BR_DEFAULT_AGEING_TIME (300 * HZ)
-
---- a/net/bridge/br_forward.c
-+++ b/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 && !local_orig)
-+ to = NULL;
-+
- if (to && should_deliver(to, skb)) {
- if (local_rcv)
- deliver_clone(to, skb, local_orig);
-@@ -183,6 +186,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, nor
- * other traffic if flood off, except for traffic we originate
- */
---- a/net/bridge/br_input.c
-+++ b/net/bridge/br_input.c
-@@ -177,6 +177,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);
---- a/net/bridge/br_sysfs_if.c
-+++ b/net/bridge/br_sysfs_if.c
-@@ -174,6 +174,7 @@ 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(broadcast_flood, BR_BCAST_FLOOD);
-+BRPORT_ATTR_FLAG(isolated, BR_ISOLATE_MODE);
-
- #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
- static ssize_t show_multicast_router(struct net_bridge_port *p, char *buf)
-@@ -223,6 +224,7 @@ static const struct brport_attribute *br
- &brport_attr_proxyarp_wifi,
- &brport_attr_multicast_flood,
- &brport_attr_broadcast_flood,
-+ &brport_attr_isolated,
- NULL
- };
-