Merge Lean's source
This commit is contained in:
commit
d9d48e8614
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=gre
|
||||
PKG_VERSION:=1
|
||||
PKG_RELEASE:=11
|
||||
PKG_RELEASE:=12
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@ -13,8 +13,8 @@ gre_generic_setup() {
|
||||
local local="$3"
|
||||
local remote="$4"
|
||||
local link="$5"
|
||||
local mtu ttl tos zone ikey okey icsum ocsum iseqno oseqno multicast
|
||||
json_get_vars mtu ttl tos zone ikey okey icsum ocsum iseqno oseqno multicast
|
||||
local mtu ipv6 ttl tos zone ikey okey icsum ocsum iseqno oseqno multicast
|
||||
json_get_vars mtu ipv6 ttl tos zone ikey okey icsum ocsum iseqno oseqno multicast
|
||||
|
||||
[ -z "$multicast" ] && multicast=1
|
||||
|
||||
@ -23,6 +23,7 @@ gre_generic_setup() {
|
||||
proto_add_tunnel
|
||||
json_add_string mode "$mode"
|
||||
json_add_int mtu "${mtu:-1280}"
|
||||
json_add_boolean ipv6 "${ipv6:-1}"
|
||||
[ -n "$df" ] && json_add_boolean df "$df"
|
||||
[ -n "$ttl" ] && json_add_int ttl "$ttl"
|
||||
[ -n "$tos" ] && json_add_string tos "$tos"
|
||||
@ -248,6 +249,7 @@ gre_generic_init_config() {
|
||||
available=1
|
||||
|
||||
proto_config_add_int "mtu"
|
||||
proto_config_add_boolean "ipv6"
|
||||
proto_config_add_int "ttl"
|
||||
proto_config_add_string "tos"
|
||||
proto_config_add_string "tunlink"
|
||||
|
||||
@ -11,12 +11,12 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=wireguard
|
||||
|
||||
PKG_VERSION:=0.0.20191127
|
||||
PKG_VERSION:=0.0.20191205
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
|
||||
PKG_HASH:=7d4e80a6f84564d4826dd05da2b59e8d17645072c0345d0fc0d197be176c3d06
|
||||
PKG_HASH:=4de4c0efa35f8eb170c27a0bc8977e5c0634b8e19c03915d03218cc88bb0adbe
|
||||
|
||||
PKG_LICENSE:=GPL-2.0 Apache-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=curl
|
||||
PKG_VERSION:=7.66.0
|
||||
PKG_VERSION:=7.67.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
@ -16,7 +16,7 @@ PKG_SOURCE_URL:=https://dl.uxnr.de/mirror/curl/ \
|
||||
https://curl.mirror.anstey.ca/ \
|
||||
https://curl.askapache.com/download/ \
|
||||
https://curl.haxx.se/download/
|
||||
PKG_HASH:=dbb48088193016d079b97c5c3efde8efa56ada2ebf336e8a97d04eb8e2ed98c1
|
||||
PKG_HASH:=f5d2e7320379338c3952dcc7566a140abb49edb575f9f99272455785c40e536c
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
|
||||
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=iproute2
|
||||
PKG_VERSION:=5.3.0
|
||||
PKG_VERSION:=5.4.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
|
||||
PKG_HASH:=cb1c1e45993a3bd2438543fd4332d70f1726a6e6ff97dc613a8258c993117b3f
|
||||
PKG_HASH:=fe97aa60a0d4c5ac830be18937e18dc3400ca713a33a89ad896ff1e3d46086ae
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_BUILD_DEPENDS:=iptables
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/tc/Makefile
|
||||
+++ b/tc/Makefile
|
||||
@@ -123,6 +123,9 @@ CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PR
|
||||
@@ -124,6 +124,9 @@ CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PR
|
||||
ifneq ($(IPT_LIB_DIR),)
|
||||
CFLAGS += -DIPT_LIB_DIR=\"$(IPT_LIB_DIR)\"
|
||||
endif
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/tc/Makefile
|
||||
+++ b/tc/Makefile
|
||||
@@ -110,7 +110,7 @@ LDLIBS += -L. -lm
|
||||
@@ -111,7 +111,7 @@ LDLIBS += -L. -lm
|
||||
|
||||
ifeq ($(SHARED_LIBS),y)
|
||||
LDLIBS += -ldl
|
||||
@ -9,7 +9,7 @@
|
||||
endif
|
||||
|
||||
TCLIB := tc_core.o
|
||||
@@ -140,7 +140,7 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc
|
||||
@@ -141,7 +141,7 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc
|
||||
all: tc $(TCSO)
|
||||
|
||||
tc: $(TCOBJ) $(LIBNETLINK) libtc.a
|
||||
@ -18,7 +18,7 @@
|
||||
|
||||
libtc.a: $(TCLIB)
|
||||
$(QUIET_AR)$(AR) rcs $@ $^
|
||||
@@ -162,6 +162,7 @@ install: all
|
||||
@@ -163,6 +163,7 @@ install: all
|
||||
clean:
|
||||
rm -f $(TCOBJ) $(TCLIB) libtc.a tc *.so emp_ematch.yacc.h; \
|
||||
rm -f emp_ematch.yacc.*
|
||||
@ -26,7 +26,7 @@
|
||||
|
||||
q_atm.so: q_atm.c
|
||||
$(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic -o q_atm.so q_atm.c -latm
|
||||
@@ -201,4 +202,15 @@ static-syms.h: $(wildcard *.c)
|
||||
@@ -202,4 +203,15 @@ static-syms.h: $(wildcard *.c)
|
||||
sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \
|
||||
done > $@
|
||||
|
||||
|
||||
@ -156,7 +156,7 @@
|
||||
|
||||
ath9k0: wifi@0,11 {
|
||||
compatible = "pci168c,0029";
|
||||
reg = <0x8800 0 0 0 0x10000>;
|
||||
reg = <0x8800 0 0 0 0>;
|
||||
mtd-mac-address = <&art 0x0>;
|
||||
qca,no-eeprom;
|
||||
#gpio-cells = <2>;
|
||||
@ -165,7 +165,7 @@
|
||||
|
||||
ath9k1: wifi@0,12 {
|
||||
compatible = "pci168c,0029";
|
||||
reg = <0x9000 0 0 0 0x10000>;
|
||||
reg = <0x9000 0 0 0 0>;
|
||||
mtd-mac-address = <&art 0xc>;
|
||||
qca,no-eeprom;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
39
target/linux/ath79/dts/ar9342_ubnt_litebeam-ac-gen2.dts
Normal file
39
target/linux/ath79/dts/ar9342_ubnt_litebeam-ac-gen2.dts
Normal file
@ -0,0 +1,39 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
#include "ar9342_ubnt_wa.dtsi"
|
||||
|
||||
/ {
|
||||
compatible = "ubnt,litebeam-ac-gen2", "ubnt,wa", "qca,ar9342";
|
||||
model = "Ubiquiti LiteBeam AC Gen2";
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
status = "okay";
|
||||
|
||||
phy-mask = <4>;
|
||||
phy4: ethernet-phy@4 {
|
||||
reg = <4>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
|
||||
/* default for ar934x, except for 1000M and 10M */
|
||||
pll-data = <0x02000000 0x00000101 0x00001313>;
|
||||
|
||||
mtd-mac-address = <&art 0x0>;
|
||||
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <&phy4>;
|
||||
|
||||
gmac-config {
|
||||
device = <&gmac>;
|
||||
rxd-delay = <3>;
|
||||
rxdv-delay = <3>;
|
||||
};
|
||||
};
|
||||
@ -40,6 +40,7 @@ ath79_setup_interfaces()
|
||||
ubnt,bullet-m|\
|
||||
ubnt,bullet-m-xw|\
|
||||
ubnt,lap-120|\
|
||||
ubnt,litebeam-ac-gen2|\
|
||||
ubnt,nanobeam-ac|\
|
||||
ubnt,nanostation-ac-loco|\
|
||||
ubnt,rocket-m|\
|
||||
@ -287,12 +288,7 @@ ath79_setup_macs()
|
||||
lan_mac=$(mtd_get_mac_binary "Board data" 2)
|
||||
label_mac=$lan_mac
|
||||
;;
|
||||
alfa-network,ap121f|\
|
||||
ubnt,airrouter|\
|
||||
ubnt,bullet-m|\
|
||||
ubnt,nanostation-m|\
|
||||
ubnt,rocket-m|\
|
||||
ubnt,unifi)
|
||||
alfa-network,ap121f)
|
||||
label_mac=$(mtd_get_mac_binary art 0x1002)
|
||||
;;
|
||||
avm,fritz300e)
|
||||
@ -397,6 +393,16 @@ ath79_setup_macs()
|
||||
wan_mac=$(mtd_get_mac_text mac 0x18)
|
||||
label_mac=$wan_mac
|
||||
;;
|
||||
ubnt,airrouter|\
|
||||
ubnt,bullet-m|\
|
||||
ubnt,nanostation-m|\
|
||||
ubnt,rocket-m|\
|
||||
ubnt,unifi)
|
||||
label_mac=$(cat /sys/class/ieee80211/phy0/macaddress)
|
||||
;;
|
||||
ubnt,litebeam-ac-gen2)
|
||||
label_mac=$(mtd_get_mac_binary art 0x5006)
|
||||
;;
|
||||
ubnt,routerstation|\
|
||||
ubnt,routerstation-pro)
|
||||
wan_mac=$(fconfig -s -r -d $(find_mtd_part "RedBoot config") -n ar7100_esa)
|
||||
|
||||
@ -17,6 +17,7 @@ case "$FIRMWARE" in
|
||||
ubnt,unifiac-mesh|\
|
||||
ubnt,unifiac-mesh-pro|\
|
||||
ubnt,lap-120|\
|
||||
ubnt,litebeam-ac-gen2|\
|
||||
ubnt,nanobeam-ac|\
|
||||
ubnt,nanostation-ac|\
|
||||
ubnt,nanostation-ac-loco|\
|
||||
|
||||
@ -124,15 +124,21 @@ define Device/ubnt_lap-120
|
||||
DEVICE_MODEL := LiteAP ac
|
||||
DEVICE_VARIANT := LAP-120
|
||||
DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct
|
||||
IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | mkubntimage-split
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_lap-120
|
||||
|
||||
define Device/ubnt_litebeam-ac-gen2
|
||||
$(Device/ubnt-wa)
|
||||
DEVICE_MODEL := LiteBeam AC
|
||||
DEVICE_VARIANT := Gen2
|
||||
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_litebeam-ac-gen2
|
||||
|
||||
define Device/ubnt_nanobeam-ac
|
||||
$(Device/ubnt-wa)
|
||||
DEVICE_MODEL := NanoBeam AC
|
||||
DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct rssileds
|
||||
IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | mkubntimage-split
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_nanobeam-ac
|
||||
|
||||
@ -140,7 +146,6 @@ define Device/ubnt_nanostation-ac
|
||||
$(Device/ubnt-wa)
|
||||
DEVICE_MODEL := Nanostation AC
|
||||
DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct rssileds
|
||||
IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | mkubntimage-split
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_nanostation-ac
|
||||
|
||||
@ -148,7 +153,6 @@ define Device/ubnt_nanostation-ac-loco
|
||||
$(Device/ubnt-wa)
|
||||
DEVICE_MODEL := Nanostation AC loco
|
||||
DEVICE_PACKAGES += kmod-ath10k-ct ath10k-firmware-qca988x-ct
|
||||
IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | mkubntimage-split
|
||||
endef
|
||||
TARGET_DEVICES += ubnt_nanostation-ac-loco
|
||||
|
||||
|
||||
@ -1,47 +1,110 @@
|
||||
From e3777dd42dc6f1b9cb099836707a3e7971dcf4df Mon Sep 17 00:00:00 2001
|
||||
From 147b0d133b53635db0cc572294840652c9c7b662 Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
Date: Wed, 13 Mar 2019 20:54:49 +0000
|
||||
Subject: [PATCH] net: sched: Introduce act_ctinfo action
|
||||
Subject: [PATCH] net: sched: Backport Introduce act_ctinfo action
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
ctinfo is a new tc filter action module. It is designed to restore DSCPs
|
||||
stored in conntrack marks
|
||||
ctinfo is a new tc filter action module. It is designed to restore
|
||||
information contained in firewall conntrack marks to other packet fields
|
||||
and is typically used on packet ingress paths. At present it has two
|
||||
independent sub-functions or operating modes, DSCP restoration mode &
|
||||
skb mark restoration mode.
|
||||
|
||||
The feature is intended for use and has been found useful for restoring
|
||||
ingress classifications based on egress classifications across links
|
||||
that bleach or otherwise change DSCP, typically home ISP Internet links.
|
||||
Restoring DSCP on ingress on the WAN link allows qdiscs such as CAKE to
|
||||
shape inbound packets according to policies that are easier to implement
|
||||
on egress.
|
||||
The DSCP restore mode:
|
||||
|
||||
This mode copies DSCP values that have been placed in the firewall
|
||||
conntrack mark back into the IPv4/v6 diffserv fields of relevant
|
||||
packets.
|
||||
|
||||
The DSCP restoration is intended for use and has been found useful for
|
||||
restoring ingress classifications based on egress classifications across
|
||||
links that bleach or otherwise change DSCP, typically home ISP Internet
|
||||
links. Restoring DSCP on ingress on the WAN link allows qdiscs such as
|
||||
but by no means limited to CAKE to shape inbound packets according to
|
||||
policies that are easier to set & mark on egress.
|
||||
|
||||
Ingress classification is traditionally a challenging task since
|
||||
iptables rules haven't yet run and tc filter/eBPF programs are pre-NAT
|
||||
lookups, hence are unable to see internal IPv4 addresses as used on the
|
||||
typical home masquerading gateway.
|
||||
typical home masquerading gateway. Thus marking the connection in some
|
||||
manner on egress for later restoration of classification on ingress is
|
||||
easier to implement.
|
||||
|
||||
ctinfo understands the following parameters:
|
||||
Parameters related to DSCP restore mode:
|
||||
|
||||
dscp mask[/statemask]
|
||||
|
||||
mask - a 32 bit mask of at least 6 contiguous bits where conndscp will
|
||||
place the DSCP in conntrack mark. The DSCP is left-shifted by the
|
||||
number of unset lower bits of the mask before storing into the mark
|
||||
field.
|
||||
dscpmask - a 32 bit mask of 6 contiguous bits and indicate bits of the
|
||||
conntrack mark field contain the DSCP value to be restored.
|
||||
|
||||
statemask - a 32 bit mask of (usually) 1 bit length, outside the area
|
||||
specified by mask. This represents a conditional operation flag the
|
||||
DSCP is only restored if the flag is set. This is useful to implement a
|
||||
'one shot' iptables based classification where the 'complicated'
|
||||
iptables rules are only run once to classify the connection on initial
|
||||
(egress) packet and subsequent packets are all marked/restored with the
|
||||
same DSCP. A mask of zero disables the conditional behaviour.
|
||||
specified by dscpmask. This represents a conditional operation flag
|
||||
whereby the DSCP is only restored if the flag is set. This is useful to
|
||||
implement a 'one shot' iptables based classification where the
|
||||
'complicated' iptables rules are only run once to classify the
|
||||
connection on initial (egress) packet and subsequent packets are all
|
||||
marked/restored with the same DSCP. A mask of zero disables the
|
||||
conditional behaviour ie. the conntrack mark DSCP bits are always
|
||||
restored to the ip diffserv field (assuming the conntrack entry is found
|
||||
& the skb is an ipv4/ipv6 type)
|
||||
|
||||
optional parameters:
|
||||
e.g. dscpmask 0xfc000000 statemask 0x01000000
|
||||
|
||||
|----0xFC----conntrack mark----000000---|
|
||||
| Bits 31-26 | bit 25 | bit24 |~~~ Bit 0|
|
||||
| DSCP | unused | flag |unused |
|
||||
|-----------------------0x01---000000---|
|
||||
| |
|
||||
| |
|
||||
---| Conditional flag
|
||||
v only restore if set
|
||||
|-ip diffserv-|
|
||||
| 6 bits |
|
||||
|-------------|
|
||||
|
||||
The skb mark restore mode (cpmark):
|
||||
|
||||
This mode copies the firewall conntrack mark to the skb's mark field.
|
||||
It is completely the functional equivalent of the existing act_connmark
|
||||
action with the additional feature of being able to apply a mask to the
|
||||
restored value.
|
||||
|
||||
Parameters related to skb mark restore mode:
|
||||
|
||||
mask - a 32 bit mask applied to the firewall conntrack mark to mask out
|
||||
bits unwanted for restoration. This can be useful where the conntrack
|
||||
mark is being used for different purposes by different applications. If
|
||||
not specified and by default the whole mark field is copied (i.e.
|
||||
default mask of 0xffffffff)
|
||||
|
||||
e.g. mask 0x00ffffff to mask out the top 8 bits being used by the
|
||||
aforementioned DSCP restore mode.
|
||||
|
||||
|----0x00----conntrack mark----ffffff---|
|
||||
| Bits 31-24 | |
|
||||
| DSCP & flag| some value here |
|
||||
|---------------------------------------|
|
||||
|
|
||||
|
|
||||
v
|
||||
|------------skb mark-------------------|
|
||||
| | |
|
||||
| zeroed | |
|
||||
|---------------------------------------|
|
||||
|
||||
Overall parameters:
|
||||
|
||||
zone - conntrack zone
|
||||
|
||||
control - action related control (reclassify | pipe | drop | continue |
|
||||
ok | goto chain <CHAIN_INDEX>
|
||||
ok | goto chain <CHAIN_INDEX>)
|
||||
|
||||
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
|
||||
Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
Backport
|
||||
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
---
|
||||
include/net/tc_act/tc_ctinfo.h | 33 +++
|
||||
|
||||
@ -1,29 +1,41 @@
|
||||
From c17877e414155b9b97d10416ff62b102d25019a1 Mon Sep 17 00:00:00 2001
|
||||
From 6d8071bbbdcd9d3a2fbb49e55b51617906e3b816 Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
Date: Wed, 13 Mar 2019 20:54:49 +0000
|
||||
Subject: [PATCH] net: sched: Introduce act_ctinfo action
|
||||
Subject: [PATCH] net: sched: Backport Introduce act_ctinfo action
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
ctinfo is a new tc filter action module. It is designed to restore DSCPs
|
||||
stored in conntrack marks into the ipv4/v6 diffserv field.
|
||||
ctinfo is a new tc filter action module. It is designed to restore
|
||||
information contained in firewall conntrack marks to other packet fields
|
||||
and is typically used on packet ingress paths. At present it has two
|
||||
independent sub-functions or operating modes, DSCP restoration mode &
|
||||
skb mark restoration mode.
|
||||
|
||||
The feature is intended for use and has been found useful for restoring
|
||||
ingress classifications based on egress classifications across links
|
||||
that bleach or otherwise change DSCP, typically home ISP Internet links.
|
||||
Restoring DSCP on ingress on the WAN link allows qdiscs such as CAKE to
|
||||
shape inbound packets according to policies that are easier to indicate
|
||||
on egress.
|
||||
The DSCP restore mode:
|
||||
|
||||
This mode copies DSCP values that have been placed in the firewall
|
||||
conntrack mark back into the IPv4/v6 diffserv fields of relevant
|
||||
packets.
|
||||
|
||||
The DSCP restoration is intended for use and has been found useful for
|
||||
restoring ingress classifications based on egress classifications across
|
||||
links that bleach or otherwise change DSCP, typically home ISP Internet
|
||||
links. Restoring DSCP on ingress on the WAN link allows qdiscs such as
|
||||
but by no means limited to CAKE to shape inbound packets according to
|
||||
policies that are easier to set & mark on egress.
|
||||
|
||||
Ingress classification is traditionally a challenging task since
|
||||
iptables rules haven't yet run and tc filter/eBPF programs are pre-NAT
|
||||
lookups, hence are unable to see internal IPv4 addresses as used on the
|
||||
typical home masquerading gateway.
|
||||
typical home masquerading gateway. Thus marking the connection in some
|
||||
manner on egress for later restoration of classification on ingress is
|
||||
easier to implement.
|
||||
|
||||
ctinfo understands the following parameters:
|
||||
Parameters related to DSCP restore mode:
|
||||
|
||||
dscp dscpmask[/statemask]
|
||||
|
||||
dscpmask - a 32 bit mask of at least 6 contiguous bits and indicates
|
||||
where ctinfo will find the DSCP bits stored in the conntrack mark.
|
||||
dscpmask - a 32 bit mask of 6 contiguous bits and indicate bits of the
|
||||
conntrack mark field contain the DSCP value to be restored.
|
||||
|
||||
statemask - a 32 bit mask of (usually) 1 bit length, outside the area
|
||||
specified by dscpmask. This represents a conditional operation flag
|
||||
@ -36,14 +48,7 @@ conditional behaviour ie. the conntrack mark DSCP bits are always
|
||||
restored to the ip diffserv field (assuming the conntrack entry is found
|
||||
& the skb is an ipv4/ipv6 type)
|
||||
|
||||
optional parameters:
|
||||
|
||||
zone - conntrack zone
|
||||
|
||||
control - action related control (reclassify | pipe | drop | continue |
|
||||
ok | goto chain <CHAIN_INDEX>)
|
||||
|
||||
e.g. dscp 0xfc000000/0x01000000
|
||||
e.g. dscpmask 0xfc000000 statemask 0x01000000
|
||||
|
||||
|----0xFC----conntrack mark----000000---|
|
||||
| Bits 31-26 | bit 25 | bit24 |~~~ Bit 0|
|
||||
@ -57,6 +62,49 @@ e.g. dscp 0xfc000000/0x01000000
|
||||
| 6 bits |
|
||||
|-------------|
|
||||
|
||||
The skb mark restore mode (cpmark):
|
||||
|
||||
This mode copies the firewall conntrack mark to the skb's mark field.
|
||||
It is completely the functional equivalent of the existing act_connmark
|
||||
action with the additional feature of being able to apply a mask to the
|
||||
restored value.
|
||||
|
||||
Parameters related to skb mark restore mode:
|
||||
|
||||
mask - a 32 bit mask applied to the firewall conntrack mark to mask out
|
||||
bits unwanted for restoration. This can be useful where the conntrack
|
||||
mark is being used for different purposes by different applications. If
|
||||
not specified and by default the whole mark field is copied (i.e.
|
||||
default mask of 0xffffffff)
|
||||
|
||||
e.g. mask 0x00ffffff to mask out the top 8 bits being used by the
|
||||
aforementioned DSCP restore mode.
|
||||
|
||||
|----0x00----conntrack mark----ffffff---|
|
||||
| Bits 31-24 | |
|
||||
| DSCP & flag| some value here |
|
||||
|---------------------------------------|
|
||||
|
|
||||
|
|
||||
v
|
||||
|------------skb mark-------------------|
|
||||
| | |
|
||||
| zeroed | |
|
||||
|---------------------------------------|
|
||||
|
||||
Overall parameters:
|
||||
|
||||
zone - conntrack zone
|
||||
|
||||
control - action related control (reclassify | pipe | drop | continue |
|
||||
ok | goto chain <CHAIN_INDEX>)
|
||||
|
||||
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com>
|
||||
Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
Backport
|
||||
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
---
|
||||
include/net/tc_act/tc_ctinfo.h | 33 ++
|
||||
@ -64,9 +112,9 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
include/uapi/linux/tc_act/tc_ctinfo.h | 29 ++
|
||||
net/sched/Kconfig | 17 +
|
||||
net/sched/Makefile | 1 +
|
||||
net/sched/act_ctinfo.c | 395 ++++++++++++++++++++++
|
||||
net/sched/act_ctinfo.c | 409 ++++++++++++++++++++++
|
||||
tools/testing/selftests/tc-testing/config | 1 +
|
||||
7 files changed, 478 insertions(+), 1 deletion(-)
|
||||
7 files changed, 492 insertions(+), 1 deletion(-)
|
||||
create mode 100644 include/net/tc_act/tc_ctinfo.h
|
||||
create mode 100644 include/uapi/linux/tc_act/tc_ctinfo.h
|
||||
create mode 100644 net/sched/act_ctinfo.c
|
||||
@ -189,7 +237,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
obj-$(CONFIG_NET_IFE_SKBMARK) += act_meta_mark.o
|
||||
--- /dev/null
|
||||
+++ b/net/sched/act_ctinfo.c
|
||||
@@ -0,0 +1,395 @@
|
||||
@@ -0,0 +1,409 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0+
|
||||
+/* net/sched/act_ctinfo.c netfilter ctinfo connmark actions
|
||||
+ *
|
||||
@ -347,24 +395,29 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
+ struct netlink_ext_ack *extack)
|
||||
+{
|
||||
+ struct tc_action_net *tn = net_generic(net, ctinfo_net_id);
|
||||
+ u32 dscpmask = 0, dscpstatemask, index;
|
||||
+ struct nlattr *tb[TCA_CTINFO_MAX + 1];
|
||||
+ struct tcf_ctinfo_params *cp_new;
|
||||
+/* struct tcf_chain *goto_ch = NULL; */
|
||||
+ u32 dscpmask = 0, dscpstatemask;
|
||||
+ struct tc_ctinfo *actparm;
|
||||
+ struct tcf_ctinfo *ci;
|
||||
+ u8 dscpmaskshift;
|
||||
+ int ret = 0, err;
|
||||
+
|
||||
+ if (!nla)
|
||||
+ if (!nla) {
|
||||
+ NL_SET_ERR_MSG_MOD(extack, "ctinfo requires attributes to be passed");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ err = nla_parse_nested(tb, TCA_CTINFO_MAX, nla, ctinfo_policy, NULL);
|
||||
+ err = nla_parse_nested(tb, TCA_CTINFO_MAX, nla, ctinfo_policy, extack);
|
||||
+ if (err < 0)
|
||||
+ return err;
|
||||
+
|
||||
+ if (!tb[TCA_CTINFO_ACT])
|
||||
+ if (!tb[TCA_CTINFO_ACT]) {
|
||||
+ NL_SET_ERR_MSG_MOD(extack,
|
||||
+ "Missing required TCA_CTINFO_ACT attribute");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ actparm = nla_data(tb[TCA_CTINFO_ACT]);
|
||||
+
|
||||
+ /* do some basic validation here before dynamically allocating things */
|
||||
@ -373,22 +426,31 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
+ dscpmask = nla_get_u32(tb[TCA_CTINFO_PARMS_DSCP_MASK]);
|
||||
+ /* need contiguous 6 bit mask */
|
||||
+ dscpmaskshift = dscpmask ? __ffs(dscpmask) : 0;
|
||||
+ if ((~0 & (dscpmask >> dscpmaskshift)) != 0x3f)
|
||||
+ if ((~0 & (dscpmask >> dscpmaskshift)) != 0x3f) {
|
||||
+ NL_SET_ERR_MSG_ATTR(extack,
|
||||
+ tb[TCA_CTINFO_PARMS_DSCP_MASK],
|
||||
+ "dscp mask must be 6 contiguous bits");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ dscpstatemask = tb[TCA_CTINFO_PARMS_DSCP_STATEMASK] ?
|
||||
+ nla_get_u32(tb[TCA_CTINFO_PARMS_DSCP_STATEMASK]) : 0;
|
||||
+ /* mask & statemask must not overlap */
|
||||
+ if (dscpmask & dscpstatemask)
|
||||
+ if (dscpmask & dscpstatemask) {
|
||||
+ NL_SET_ERR_MSG_ATTR(extack,
|
||||
+ tb[TCA_CTINFO_PARMS_DSCP_STATEMASK],
|
||||
+ "dscp statemask must not overlap dscp mask");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* done the validation:now to the actual action allocation */
|
||||
+ err = tcf_idr_check_alloc(tn, &actparm->index, a, bind);
|
||||
+ index = actparm->index;
|
||||
+ err = tcf_idr_check_alloc(tn, &index, a, bind);
|
||||
+ if (!err) {
|
||||
+ ret = tcf_idr_create(tn, actparm->index, est, a,
|
||||
+ ret = tcf_idr_create(tn, index, est, a,
|
||||
+ &act_ctinfo_ops, bind, false);
|
||||
+ if (ret) {
|
||||
+ tcf_idr_cleanup(tn, actparm->index);
|
||||
+ tcf_idr_cleanup(tn, index);
|
||||
+ return ret;
|
||||
+ }
|
||||
+ ret = ACT_P_CREATED;
|
||||
@ -587,11 +649,11 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
|
||||
+MODULE_LICENSE("GPL");
|
||||
--- a/tools/testing/selftests/tc-testing/config
|
||||
+++ b/tools/testing/selftests/tc-testing/config
|
||||
@@ -37,6 +37,7 @@ CONFIG_NET_ACT_SKBEDIT=m
|
||||
CONFIG_NET_ACT_CSUM=m
|
||||
@@ -38,6 +38,7 @@ CONFIG_NET_ACT_CSUM=m
|
||||
CONFIG_NET_ACT_VLAN=m
|
||||
CONFIG_NET_ACT_BPF=m
|
||||
+CONFIG_NET_ACT_CONNDSCP=m
|
||||
CONFIG_NET_ACT_CONNMARK=m
|
||||
+CONFIG_NET_ACT_CONNCTINFO=m
|
||||
CONFIG_NET_ACT_SKBMOD=m
|
||||
CONFIG_NET_ACT_IFE=m
|
||||
CONFIG_NET_ACT_TUNNEL_KEY=m
|
||||
|
||||
@ -362,6 +362,15 @@
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -1122,8 +1122,6 @@
|
||||
return err;
|
||||
|
||||
err = devm_pci_remap_iospace(dev, &pcie->pio, pcie->io.start);
|
||||
- if (err)
|
||||
- return err;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1127,34 +1128,6 @@ static int mtk_pcie_request_resources(st
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user