Merge Lean's source
This commit is contained in:
commit
de202f9e20
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=autocore
|
||||
PKG_VERSION:=1
|
||||
PKG_RELEASE:=25
|
||||
PKG_RELEASE:=26
|
||||
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
@ -31,6 +31,8 @@ start()
|
||||
e=$(cat /proc/cpuinfo | grep 'processor' | wc -l)
|
||||
f=$(echo -n ' Thread ')
|
||||
g=${a}${b}${c}${d}${e}${f}
|
||||
|
||||
mkdir -p /tmp/sysinfo
|
||||
echo $g > /tmp/sysinfo/model
|
||||
|
||||
ethtool -K eth0 rx-checksum on >/dev/null 2>&1
|
||||
|
||||
@ -2,10 +2,11 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-ssr-plus
|
||||
PKG_VERSION:=1
|
||||
PKG_RELEASE:=127
|
||||
PKG_RELEASE:=128
|
||||
|
||||
PKG_CONFIG_DEPENDS:= CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks \
|
||||
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_V2ray \
|
||||
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Trojan \
|
||||
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Kcptun \
|
||||
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server \
|
||||
CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Socks
|
||||
@ -21,6 +22,14 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray
|
||||
bool "Include V2ray"
|
||||
default y if x86_64
|
||||
|
||||
config PACKAGE_$(PKG_NAME)_INCLUDE_Trojan
|
||||
bool "Include Trojan"
|
||||
default y if x86_64
|
||||
|
||||
config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray
|
||||
bool "Include V2ray"
|
||||
default y if x86_64
|
||||
|
||||
config PACKAGE_$(PKG_NAME)_INCLUDE_Kcptun
|
||||
bool "Include Kcptun"
|
||||
default n
|
||||
@ -43,6 +52,7 @@ define Package/luci-app-ssr-plus
|
||||
DEPENDS:=+shadowsocksr-libev-alt +ipset +ip-full +iptables-mod-tproxy +dnsmasq-full +coreutils +coreutils-base64 +bash +pdnsd-alt +wget \
|
||||
+PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks:shadowsocks-libev-ss-redir \
|
||||
+PACKAGE_$(PKG_NAME)_INCLUDE_V2ray:v2ray \
|
||||
+PACKAGE_$(PKG_NAME)_INCLUDE_Trojan:trojan \
|
||||
+PACKAGE_$(PKG_NAME)_INCLUDE_Kcptun:kcptun-client \
|
||||
+PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Server:shadowsocksr-libev-server \
|
||||
+PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_Socks:shadowsocksr-libev-ssr-local
|
||||
|
||||
@ -9,19 +9,17 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=ppp
|
||||
PKG_RELEASE:=2
|
||||
PKG_VERSION:=2.4.7
|
||||
PKG_RELEASE:=15
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/paulusmack/ppp
|
||||
PKG_SOURCE_DATE:=2019-10-04
|
||||
PKG_SOURCE_VERSION:=0d004db25edd42f6720f48eedc51f68a781278db
|
||||
PKG_MIRROR_HASH:=93f66ee06d58c447288c88ac1c17453c2b12a8af7f16ef132b31529b1955b7a2
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://download.samba.org/pub/ppp/
|
||||
PKG_HASH:=02e0a3dd3e4799e33103f70ec7df75348c8540966ee7c948e4ed8a42bbccfb30
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_LICENSE:=BSD-4-Clause
|
||||
PKG_CPE_ID:=cpe:/a:samba:ppp
|
||||
|
||||
PKG_RELEASE_VERSION:=2.4.7
|
||||
PKG_VERSION:=$(PKG_RELEASE_VERSION).git-$(PKG_SOURCE_DATE)
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
||||
PKG_BUILD_DEPENDS:=libpcap
|
||||
|
||||
@ -38,7 +36,7 @@ endef
|
||||
|
||||
define Package/ppp
|
||||
$(call Package/ppp/Default)
|
||||
DEPENDS:=+kmod-ppp
|
||||
DEPENDS:=+kmod-ppp +kmod-mppe +libpthread +shellsync
|
||||
TITLE:=PPP daemon
|
||||
VARIANT:=default
|
||||
endef
|
||||
@ -217,7 +215,7 @@ define Package/ppp/script_install
|
||||
endef
|
||||
|
||||
define Package/ppp/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/pppd $(1)/usr/sbin/
|
||||
$(INSTALL_DIR) $(1)/etc/ppp
|
||||
@ -234,21 +232,21 @@ endef
|
||||
Package/ppp-multilink/install=$(Package/ppp/install)
|
||||
|
||||
define Package/ppp-mod-pppoa/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/pppoatm.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pppoatm.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_VERSION)/
|
||||
endef
|
||||
|
||||
define Package/ppp-mod-pppoe/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/rp-pppoe.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/rp-pppoe.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_VERSION)/
|
||||
endef
|
||||
|
||||
define Package/ppp-mod-radius/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/radius.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/radius.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_VERSION)/
|
||||
$(INSTALL_DIR) $(1)/etc/ppp
|
||||
$(INSTALL_DATA) ./files/etc/ppp/radius.conf $(1)/etc/ppp/
|
||||
$(INSTALL_DIR) $(1)/etc/ppp/radius
|
||||
@ -259,23 +257,23 @@ define Package/ppp-mod-radius/install
|
||||
endef
|
||||
|
||||
define Package/ppp-mod-pppol2tp/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/pppol2tp.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pppol2tp.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_VERSION)/
|
||||
endef
|
||||
|
||||
define Package/ppp-mod-pptp/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/pptp.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/pptp.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_VERSION)/
|
||||
$(INSTALL_DIR) $(1)/etc/ppp
|
||||
$(INSTALL_DATA) ./files/etc/ppp/options.pptp $(1)/etc/ppp/
|
||||
endef
|
||||
|
||||
define Package/ppp-mod-passwordfd/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_RELEASE_VERSION)/passwordfd.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_RELEASE_VERSION)/
|
||||
$(INSTALL_DIR) $(1)/usr/lib/pppd/$(PKG_VERSION)
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/lib/pppd/$(PKG_VERSION)/passwordfd.so \
|
||||
$(1)/usr/lib/pppd/$(PKG_VERSION)/
|
||||
endef
|
||||
|
||||
define Package/chat/install
|
||||
|
||||
@ -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
|
||||
|
||||
@ -985,7 +985,7 @@ ar8xxx_sw_set_vid(struct switch_dev *dev, const struct switch_attr *attr,
|
||||
{
|
||||
struct ar8xxx_priv *priv = swdev_to_ar8xxx(dev);
|
||||
|
||||
if (val->port_vlan >= AR8X16_MAX_VLANS)
|
||||
if (val->port_vlan >= dev->vlans)
|
||||
return -EINVAL;
|
||||
|
||||
priv->vlan_id[val->port_vlan] = val->value.i;
|
||||
@ -1018,7 +1018,7 @@ ar8xxx_sw_get_ports(struct switch_dev *dev, struct switch_val *val)
|
||||
u8 ports;
|
||||
int i;
|
||||
|
||||
if (val->port_vlan >= AR8X16_MAX_VLANS)
|
||||
if (val->port_vlan >= dev->vlans)
|
||||
return -EINVAL;
|
||||
|
||||
ports = priv->vlan_table[val->port_vlan];
|
||||
@ -1058,7 +1058,7 @@ ar8xxx_sw_set_ports(struct switch_dev *dev, struct switch_val *val)
|
||||
|
||||
/* make sure that an untagged port does not
|
||||
* appear in other vlans */
|
||||
for (j = 0; j < AR8X16_MAX_VLANS; j++) {
|
||||
for (j = 0; j < dev->vlans; j++) {
|
||||
if (j == val->port_vlan)
|
||||
continue;
|
||||
priv->vlan_table[j] &= ~(1 << p->id);
|
||||
@ -1137,7 +1137,7 @@ ar8xxx_sw_hw_apply(struct switch_dev *dev)
|
||||
if (!priv->init) {
|
||||
/* calculate the port destination masks and load vlans
|
||||
* into the vlan translation unit */
|
||||
for (j = 0; j < AR8X16_MAX_VLANS; j++) {
|
||||
for (j = 0; j < dev->vlans; j++) {
|
||||
u8 vp = priv->vlan_table[j];
|
||||
|
||||
if (!vp)
|
||||
@ -1190,7 +1190,7 @@ ar8xxx_sw_reset_switch(struct switch_dev *dev)
|
||||
memset(&priv->vlan, 0, sizeof(struct ar8xxx_priv) -
|
||||
offsetof(struct ar8xxx_priv, vlan));
|
||||
|
||||
for (i = 0; i < AR8X16_MAX_VLANS; i++)
|
||||
for (i = 0; i < dev->vlans; i++)
|
||||
priv->vlan_id[i] = i;
|
||||
|
||||
/* Configure all ports */
|
||||
|
||||
@ -30,6 +30,9 @@
|
||||
|
||||
/* size of the vlan table */
|
||||
#define AR8X16_MAX_VLANS 128
|
||||
#define AR83X7_MAX_VLANS 4096
|
||||
#define AR8XXX_MAX_VLANS AR83X7_MAX_VLANS
|
||||
|
||||
#define AR8X16_PROBE_RETRIES 10
|
||||
#define AR8X16_MAX_PORTS 8
|
||||
|
||||
@ -453,8 +456,9 @@ struct ar8xxx_priv {
|
||||
|
||||
/* all fields below are cleared on reset */
|
||||
bool vlan;
|
||||
u16 vlan_id[AR8X16_MAX_VLANS];
|
||||
u8 vlan_table[AR8X16_MAX_VLANS];
|
||||
|
||||
u16 vlan_id[AR8XXX_MAX_VLANS];
|
||||
u8 vlan_table[AR8XXX_MAX_VLANS];
|
||||
u8 vlan_tagged;
|
||||
u16 pvid[AR8X16_MAX_PORTS];
|
||||
int arl_age_time;
|
||||
|
||||
@ -1476,7 +1476,7 @@ const struct ar8xxx_chip ar8327_chip = {
|
||||
|
||||
.name = "Atheros AR8327",
|
||||
.ports = AR8327_NUM_PORTS,
|
||||
.vlans = AR8X16_MAX_VLANS,
|
||||
.vlans = AR83X7_MAX_VLANS,
|
||||
.swops = &ar8327_sw_ops,
|
||||
|
||||
.reg_port_stats_start = 0x1000,
|
||||
@ -1511,7 +1511,7 @@ const struct ar8xxx_chip ar8337_chip = {
|
||||
|
||||
.name = "Atheros AR8337",
|
||||
.ports = AR8327_NUM_PORTS,
|
||||
.vlans = AR8X16_MAX_VLANS,
|
||||
.vlans = AR83X7_MAX_VLANS,
|
||||
.swops = &ar8327_sw_ops,
|
||||
|
||||
.reg_port_stats_start = 0x1000,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user