From 15ab89ef7dcd7d356fe64935fe65bd6ebd920e6c Mon Sep 17 00:00:00 2001 From: vdutta Date: Fri, 14 Jan 2022 13:14:00 +0530 Subject: [PATCH] icwmp: Fix no-wan-tr069-inform issue --- icwmp/Makefile | 4 ++-- icwmp/files/etc/config/cwmp | 2 +- icwmp/files/etc/icwmpd/update.sh | 9 ++++---- icwmp/files/etc/init.d/icwmpd | 37 +++++++++++++++++++++----------- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/icwmp/Makefile b/icwmp/Makefile index f198df63b..5cc150a93 100755 --- a/icwmp/Makefile +++ b/icwmp/Makefile @@ -8,11 +8,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=icwmp -PKG_VERSION:=8.2.21 +PKG_VERSION:=8.2.22 PKG_FIXUP:=autoreconf PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/icwmp.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=a6b7d8db4d38f3d5785207efa1b206f909baf1f1 +PKG_SOURCE_VERSION:=a488c1e1b03856bf0416363aa1b0e932c4fe30d4 PKG_RELEASE=$(PKG_SOURCE_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz PKG_MIRROR_HASH:=skip diff --git a/icwmp/files/etc/config/cwmp b/icwmp/files/etc/config/cwmp index 7b8483712..11c9e8ac7 100644 --- a/icwmp/files/etc/config/cwmp +++ b/icwmp/files/etc/config/cwmp @@ -4,7 +4,7 @@ config acs 'acs' option periodic_inform_enable 'true' option periodic_inform_interval '1800' option periodic_inform_time '0001-01-01T00:00:00Z' - option dhcp_discovery 'enable' + option dhcp_discovery '1' # compression possible configs: GZIP, Deflate, Disabled option compression 'Disabled' #­ possible configs interval :[1:65535] diff --git a/icwmp/files/etc/icwmpd/update.sh b/icwmp/files/etc/icwmpd/update.sh index a06dc5c82..77fd85ba6 100644 --- a/icwmp/files/etc/icwmpd/update.sh +++ b/icwmp/files/etc/icwmpd/update.sh @@ -6,16 +6,16 @@ log() { handle_icwmp_update() { local defwan=$(uci -q get cwmp.cpe.default_wan_interface) - local vendorspecinf=`ubus call network.interface.${defwan} status | jsonfilter -e "@.data.vendorspecinf"` + local vendorspecinf=`ifstatus ${defwan} | jsonfilter -e "@.data.vendorspecinf"` log "Handling dhcp option value ${vendorspecinf}" [ -n "$vendorspecinf" ] && { local url="" - local old_url=$(uci -q get cwmp.acs.dhcp_url) + local old_url="$(uci -q get cwmp.acs.dhcp_url)" case $vendorspecinf in http://*|https://*) - url="$vendorspecinf" + url="${vendorspecinf}" ;; *) for optval in $vendorspecinf; do @@ -30,9 +30,10 @@ handle_icwmp_update() { if [ -n "$url" ]; then log "## icwmp url[${old_url}] changed to [${url}]" - if [ -z "${old_url}" -o "${url}" != "${old_url}" ]; then + if [ "${url}" != "${old_url}" ]; then log "Restarting icwmp url[${old_url}] changed to [${url}]" uci -q set cwmp.acs.dhcp_url="$url" + uci commit cwmp ubus call uci commit '{"config":"cwmp"}' fi fi diff --git a/icwmp/files/etc/init.d/icwmpd b/icwmp/files/etc/init.d/icwmpd index 0ef892b1a..4147e0cd3 100755 --- a/icwmp/files/etc/init.d/icwmpd +++ b/icwmp/files/etc/init.d/icwmpd @@ -57,15 +57,6 @@ wait_for_resolvfile() { done } -get_default_wan_interface() { - local default_wan_interface - - config_load cwmp - config_get default_wan_interface cpe default_wan_interface "wan" - - echo ${default_wan_interface} -} - set_wan_interface() { local wan_interface="${1}" local l3_device="" @@ -130,7 +121,7 @@ validate_acs_section() 'periodic_inform_time:string' \ 'url:string' \ 'dhcp_url:string' \ - 'dhcp_discovery:or("enable", "disable")' \ + 'dhcp_discovery:bool' \ 'compression:or("GZIP","Deflate","Disabled")' \ 'retry_min_wait_interval:range(1, 65535)' \ 'retry_interval_multiplier:range(1000, 65535)' \ @@ -189,10 +180,30 @@ validate_defaults() { return 0; } +boot() { + local dhcp_url="" + local discovery="1" + + config_load cwmp + config_get_bool discovery acs dhcp_discovery 1 + config_get dhcp_url acs dhcp_url "" + + if [ "${discovery}" -eq 1 -a -z "${dhcp_url}" ]; then + log "dhcp discovery enabled but no dhcp url, trigger update" + /etc/icwmpd/update.sh + fi + start +} + start_service() { - local enable_cwmp=`uci -q get cwmp.cpe.enable` - local wan_interface=$(get_default_wan_interface) - local dhcp_discovery=`uci -q get cwmp.acs.dhcp_discovery` + local enable_cwmp + local wan_interface + local dhcp_discovery + + config_load cwmp + config_get_bool enable_cwmp cpe enable 1 + config_get_bool dhcp_discovery acs dhcp_discovery 1 + config_get wan_interface cpe default_wan_interface "wan" if [ "$enable_cwmp" = "0" -o "$enable_cwmp" = "false" ]; then log "CWMP is not enabled"