icwmp: Reduce I/O on filesystem

This commit is contained in:
Omar Kallel 2021-11-08 17:26:25 +01:00
parent 32245d37c3
commit 4b5c88b015
6 changed files with 102 additions and 9 deletions

View file

@ -5,11 +5,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libbbfdm
PKG_VERSION:=6.1.7
PKG_VERSION:=6.1.8
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=683032db93a621911f3608adee04b03a4aedda7a
PKG_SOURCE_VERSION:=c364c99501dc36bf7916697656d53d6c121071a1
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View file

@ -8,11 +8,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=icwmp
PKG_VERSION:=8.2.6-2021-11-03
PKG_VERSION:=8.2.7-2021-11-09
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/icwmp.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=61a71148daee9dfcdd5d94235c1acd0b57d2b8f1
PKG_SOURCE_VERSION:=0aa8c57c419e05a6f7ac591339d886341166c7d6
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip

View file

@ -5,7 +5,6 @@ config acs 'acs'
option periodic_inform_enable 'true'
option periodic_inform_interval '1800'
option periodic_inform_time '0001-01-01T00:00:00Z'
option ParameterKey ''
option dhcp_discovery 'enable'
# compression possible configs: GZIP, Deflate, Disabled
option compression 'Disabled'

View file

@ -64,6 +64,24 @@ handle_icwmp_restart() {
network_get_device curdev $INTERFACE
[ -n "$curdev" ] && echo $curdev > $devfile || rm -f $devfile
if [ ! -f /var/state/cwmp ]
then
if [ -f /etc/icwmpd/cwmp ]
then
uci -c /etc/icwmpd delete cwmp.acs
uci -c /etc/icwmpd commit cwmp
cp /etc/icwmpd/cwmp /var/state/cwmp
else
touch /var/state/cwmp
fi
fi
uci -q -c /var/state/ get cwmp.cpe
if [ "$?" -ne 0 ]; then
unnamedcpe=`uci -q -c /var/state/ add cwmp cpe`
uci -c /var/state/ -q rename cwmp.$unnamedcpe='cpe'
fi
local vendorspecinf=`ubus call network.interface.${defwan} status | jsonfilter -e "@.data.vendorspecinf"`
[ -n "$vendorspecinf" ] && {
local url=""

View file

@ -6,7 +6,7 @@ include /lib/network
. /usr/share/libubox/jshn.sh
START=99
STOP=10
STOP=2
USE_PROCD=1
PROG="/usr/sbin/icwmpd"
@ -158,7 +158,61 @@ service_running() {
ubus wait_for usp.raw
}
copy_cwmp_etc_files_to_varstate() {
if [ ! -f /var/state/cwmp ]
then
if [ -f /etc/icwmpd/cwmp ]
then
uci -c /etc/icwmpd delete cwmp.acs
uci -c /etc/icwmpd commit cwmp
cp /etc/icwmpd/cwmp /var/state/cwmp
else
touch /var/state/cwmp
fi
fi
mkdir -p /var/state/icwmpd
if [ -f /etc/icwmpd/.icwmpd_backup_session.xml ]
then
mv /etc/icwmpd/.icwmpd_backup_session.xml /var/state/icwmpd 2>/dev/null
fi
if [ -f /etc/icwmpd/.dm_enabled_notify.xml ]
then
mv /etc/icwmpd/.dm_enabled_notify /var/state/icwmpd 2>/dev/null
fi
}
copy_cwmp_varstate_files_to_etc() {
if [ -f /var/state/cwmp ]
then
cp /var/state/cwmp /etc/icwmpd 2>/dev/null
fi
if [ -f /var/state/icwmpd/.icwmpd_backup_session.xml ]
then
cp /var/state/icwmpd/.icwmpd_backup_session.xml /etc/icwmpd 2>/dev/null
fi
if [ -f /var/state/icwmpd/.dm_enabled_notify.xml ]
then
cp /var/state/icwmpd/.dm_enabled_notify /etc/icwmpd 2>/dev/null
fi
}
start_service() {
echo "$(date +"%T %D") Start service" >> /root/initlog
echo "**************************************" >> /root/initlog
#while true; do pid=$(pgrep 'icwmpd' | head -1); if [[ -n "$pid" ]]; then strace -s 2000 -vvtf -p "$pid" -o /root/stracelog; break; fi; done &
echo "$(date +"%T %D") Start: Actual cwmp rc.d files" >> /root/initlog
echo `ls /etc/rc.d/ | grep cwmp` >> /root/initlog
if [ -f /etc/icwmpd/.icwmpd_backup_session.xml ]
then
echo "$(date +"%T %D") Start: Backup file content: " >> /root/initlog
echo "" >> /root/initlog
cat /etc/icwmpd/.icwmpd_backup_session.xml >> /root/initlog
echo "" >> /root/initlog
else
echo "$(date +"%T %D") Start: /etc/icwmpd/.icwmpd_backup_session.xml doesn't exist" >> /root/initlog
echo "" >> /root/initlog
fi
if [ ! -f /tmp/.icwmpd_boot ]; then
touch /etc/icwmpd/.icwmpd_boot
touch /tmp/.icwmpd_boot
@ -171,12 +225,15 @@ start_service() {
log "Waiting for usp.raw to be started"
ubus wait_for usp.raw
config_load cwmp
set_wan_interface
wait_for_option43 20
get_acs_url
echo "$(date +"%T %D") Start: copy icwmpd files to /var/state ..." >> /root/initlog
echo "" >> /root/initlog
copy_cwmp_etc_files_to_varstate
procd_open_instance icwmp
procd_set_param command "$PROG"
if [ "$1" = "GetRPCMethods" ];then
@ -192,6 +249,25 @@ start_service() {
fi
}
stop_service()
{
echo "$(date +"%T %D") Stop service" >> /root/initlog
echo "****************************" >> /root/initlog
echo "$(date +"%T %D") Stop: Actual cwmp rc.d files" >> /root/initlog
echo `ls /etc/rc.d/ | grep cwmp` >> /root/initlog
if [ -f /var/state/icwmpd/.icwmpd_backup_session.xml ]
then
echo "$(date +"%T %D") Stop: Backup file content: " >> /root/initlog
echo "" >> /root/initlog
cat /var/state/icwmpd/.icwmpd_backup_session.xml >> /root/initlog
echo "" >> /root/initlog
else
echo "$(date +"%T %D") Stop: /var/state/icwmpd/.icwmpd_backup_session.xml doesn't exist" >> /root/initlog
echo "" >> /root/initlog
fi
copy_cwmp_varstate_files_to_etc
}
reload_service() {
stop
start

View file

@ -1 +1 @@
/etc/icwmpd/.icwmpd_backup_session.xml
/var/state/icwmpd/.icwmpd_backup_session.xml