nss-ecm: ensure packet steering is always disabled

Converted ecm init to PROCD service and added a function ensure packet steering
is always disabled when loading.

Added additional firewall/network/packet_steering triggers in case user
changes to packet steering are made in the web interface.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
This commit is contained in:
Sean Khan 2025-02-28 18:32:22 -05:00
parent bbaa20f43c
commit e4489bb269
2 changed files with 28 additions and 3 deletions

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=qca-nss-ecm PKG_NAME:=qca-nss-ecm
PKG_RELEASE:=2 PKG_RELEASE:=3
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-nss-ecm.git PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-nss-ecm.git
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git

View File

@ -20,6 +20,7 @@
# at boot. # at boot.
START=26 START=26
USE_PROCD=1
sysctl_update() { sysctl_update() {
local name value file local name value file
@ -58,6 +59,17 @@ get_front_end_mode() {
esac esac
} }
disable_packet_steering() {
uci -q set network.globals.packet_steering=0 && uci commit network.globals.packet_steering
uci -q del network.globals.steering_flows && uci commit network.globals.steering_flows
if [ -e "/usr/libexec/platform/packet-steering.sh" ]; then
/usr/libexec/platform/packet-steering.sh 0
else
/usr/libexec/network/packet-steering.uc -l 0 0
fi
}
disable_bridge_filtering() { disable_bridge_filtering() {
sysctl_update net.bridge.bridge-nf-call-arptables 0 sysctl_update net.bridge.bridge-nf-call-arptables 0
sysctl_update net.bridge.bridge-nf-call-iptables 0 sysctl_update net.bridge.bridge-nf-call-iptables 0
@ -136,9 +148,22 @@ unload_ecm() {
fi fi
} }
start() { service_triggers() {
procd_add_reload_trigger "network"
procd_add_reload_trigger "firewall"
procd_add_reload_trigger "packet_steering"
procd_add_raw_trigger "interface.*" 1000 /etc/init.d/qca-nss-ecm reload
}
reload_service() {
start_service
}
start_service() {
load_ecm load_ecm
disable_packet_steering
# Only enable bridge filtering if using deprecated fw3 # Only enable bridge filtering if using deprecated fw3
if [ ! -r /sbin/fw4 ]; then if [ ! -r /sbin/fw4 ]; then
enable_bridge_filtering enable_bridge_filtering
@ -154,7 +179,7 @@ start() {
fi fi
} }
stop() { stop_service() {
# If ECM is already not loaded, just return # If ECM is already not loaded, just return
if [ ! -d /sys/module/ecm ]; then if [ ! -d /sys/module/ecm ]; then
return return