projects
/
openwrt
/
staging
/
blocktrron.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
kernel: backport flow offload pppoe fix
[openwrt/staging/blocktrron.git]
/
target
/
linux
/
generic
/
hack-5.15
/
650-netfilter-add-xt_FLOWOFFLOAD-target.patch
diff --git
a/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
b/target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
index da603344980cfab7172752988f476187609933a6..49f339bddcab99ec107561015c261a6abaa50b79 100644
(file)
--- a/
target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
+++ b/
target/linux/generic/hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch
@@
-98,7
+98,7
@@
Signed-off-by: Felix Fietkau <nbd@nbd.name>
obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
--- /dev/null
+++ b/net/netfilter/xt_FLOWOFFLOAD.c
obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
--- /dev/null
+++ b/net/netfilter/xt_FLOWOFFLOAD.c
-@@ -0,0 +1,70
1
@@
+@@ -0,0 +1,70
2
@@
+/*
+ * Copyright (C) 2018-2021 Felix Fietkau <nbd@nbd.name>
+ *
+/*
+ * Copyright (C) 2018-2021 Felix Fietkau <nbd@nbd.name>
+ *
@@
-163,7
+163,8
@@
Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ proto = veth->h_vlan_encapsulated_proto;
+ break;
+ case htons(ETH_P_PPP_SES):
+ proto = veth->h_vlan_encapsulated_proto;
+ break;
+ case htons(ETH_P_PPP_SES):
-+ proto = nf_flow_pppoe_proto(skb);
++ if (!nf_flow_pppoe_proto(skb, &proto))
++ return NF_ACCEPT;
+ break;
+ default:
+ proto = skb->protocol;
+ break;
+ default:
+ proto = skb->protocol;
@@
-609,6
+610,8
@@
Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ if (!nf_ct_is_confirmed(ct))
+ return XT_CONTINUE;
+
+ if (!nf_ct_is_confirmed(ct))
+ return XT_CONTINUE;
+
++ dir = CTINFO2DIR(ctinfo);
++
+ devs[dir] = xt_out(par);
+ devs[!dir] = xt_in(par);
+
+ devs[dir] = xt_out(par);
+ devs[!dir] = xt_in(par);
+
@@
-618,8
+621,6
@@
Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ if (test_and_set_bit(IPS_OFFLOAD_BIT, &ct->status))
+ return XT_CONTINUE;
+
+ if (test_and_set_bit(IPS_OFFLOAD_BIT, &ct->status))
+ return XT_CONTINUE;
+
-+ dir = CTINFO2DIR(ctinfo);
-+
+ if (xt_flowoffload_route(skb, ct, par, &route, dir, devs) < 0)
+ goto err_flow_route;
+
+ if (xt_flowoffload_route(skb, ct, par, &route, dir, devs) < 0)
+ goto err_flow_route;
+