icwmp: Fix no-wan-tr069-inform issue

This commit is contained in:
vdutta 2022-01-14 13:14:00 +05:30
parent 975f4e7552
commit 15ab89ef7d
4 changed files with 32 additions and 20 deletions

View file

@ -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

View file

@ -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]

View file

@ -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

View file

@ -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"