#!/bin/sh # Copyright (C) 2011-2012 Luka Perkov # Copyright (C) 2013-2015 Inteno Broadband Technology AB # Author Ahmed Zribi # Author: Anis Ellouze prefix_list="$prefix_list InternetGatewayDevice.WANDevice." WAN_INST_ETH=1 WAN_INST_ATM=2 WAN_INST_PTM=3 WAN_IP_CONNECTION=1 WAN_PPP_CONNECTION=2 default_wan="" get_wan_device_mng_status() { # TODO: Unconfigured ; Connecting ; Connected ; PendingDisconnect ; Disconneting ; Disconnected local val="" local intf="$1" json_load "$(ifstatus $intf)" json_get_var up up if [ "$up" = "1" ];then json_get_var uptime uptime json_get_var pending pending else uptime=0 fi if [ $uptime -gt 0 ];then val="Connected" elif [ "$pending" = "1" ];then val="Pending Disconnect" else val="Disconnected" fi echo $val } get_wan_device_ppp_status() { # TODO: Unconfigured ; Connecting ; Connected ; PendingDisconnect ; Disconneting ; Disconnected local val="" local intf="$1" json_load "$(ifstatus $intf)" json_get_var up up if [ "$up" = "1" ];then json_get_var uptime uptime json_get_var pending pending else uptime=0 fi if [ $uptime -gt 0 ];then val="Connected" elif [ $pending = 1 ];then val="Pending Disconnect" else val="Disconnected" fi echo $val } get_wan_device_mng_interface_ip() { local val="" local intf="$1" if [ -z "$default_wan_device_mng_interface_ip" ]; then network_get_ipaddr val $intf else val=$default_wan_device_mng_interface_ip fi echo $val } get_wan_device_ppp_interface_ip() { local val="" local intf="$1" if [ -z "$default_wan_device_mng_interface_ip" ]; then network_get_ipaddr val $intf else val=$default_wan_device_mng_interface_ip fi echo $val } get_wan_device_mng_interface_mac() { local val="" local intf="$1" local device json_load "$(ifstatus $intf)" json_get_var device device json_load "$(devstatus $device)" json_get_var macaddr macaddr val="$macaddr" echo $val } get_wan_device_wan_access_type() { case $1 in $WAN_INST_ETH) echo "Ethernet";; $WAN_INST_ATM|$WAN_INST_PTM) echo "DSL";; esac } get_wan_device_get_dslstats () { local object="$1" local param="$2" local val json_init json_load "`ubus call router dslstats`" for str in $object; do json_select "$str" done json_get_var val "$param" json_close_object echo "$val" } get_wan_device_wan_dsl_traffic () { local val=`get_wan_device_get_dslstats "dslstats" "traffic"` case "$val" in ATM*) echo "adsl";; PTM*) echo "vdsl";; esac } get_wan_device_wan_dsl_interface_config_status() { local val="" local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "NoSignal Not a dsl interface" else local status=`get_wan_device_get_dslstats "dslstats" "status"` case "$status" in "Showtime") val="Up" ;; "Training") val="Initializing" ;; "Channel Analysis") val="EstablishingLink" ;; "Disabled") val="Disabled" ;; *) val="NoSignal" ;; esac local dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo $val elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo $val fi fi } get_wan_device_wan_dsl_interface_config_modulation_type() { local val="" local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "Not a dsl interface" else local mode=`get_wan_device_get_dslstats "dslstats" "mode"` case "$mode" in G.Dmt) val="ADSL_G.dmt" ;; G.lite) val="ADSL_G.lite" ;; T1.413) val="ADSL_ANSI_T1.413" ;; ADSL2) val="ADSL_G.dmt.bis" ;; AnnexL) val="ADSL_re-adsl" ;; ADSL2+) val="ADSL_2plus" ;; *) val="$mode" ;; esac dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo $val elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo $val fi fi } get_wan_device_dsl_datapath() { local val="" local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "None" else val=`adsl info --state|grep "Upstream rate"| awk -F'['$'\t'' ,]' '$1!="Max:" {print $2}'` case "$val" in FAST) val="Fast" ;; INTR) val="Interleaved" ;; *) val="None" ;; esac dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo $val elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo $val else echo "None" fi fi } get_wan_device_dsl_downstreamcurrrate() { local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "0" else local rate_down=`get_wan_device_get_dslstats "dslstats bearers 1" "rate_down"` dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo ${rate_down:-0} elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo ${rate_down:-0} else echo "0" fi fi } get_wan_device_dsl_downstreammaxrate() { local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "0" else local max_rate_down=`get_wan_device_get_dslstats "dslstats bearers 1" "max_rate_down"` dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo ${max_rate_down:-0} elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo ${max_rate_down:-0} else echo "0" fi fi } get_wan_device_dsl_downstreamattenuation() { local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "0" else local attn_down_x100=`get_wan_device_get_dslstats "dslstats" "attn_down_x100"` local attn_down=`expr ${attn_down_x100} / 10` dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo ${attn_down:-0} elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo ${attn_down:-0} else echo "0" fi fi } get_wan_device_dsl_downstreamnoisemargin() { local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "0" else local snr_down_x100=`get_wan_device_get_dslstats "dslstats" "snr_down_x100"` local snr_down=`expr ${snr_down_x100} / 10` dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo ${snr_down:-0} elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo ${snr_down:-0} else echo "0" fi fi } get_wan_device_dsl_upstreamcurrrate() { local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "0" else local rate_up=`get_wan_device_get_dslstats "dslstats bearers 1" "rate_up"` dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo ${rate_up:-0} elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo ${rate_up:-0} else echo "0" fi fi } get_wan_device_dsl_upstreammaxrate() { local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "0" else local max_rate_up=`get_wan_device_get_dslstats "dslstats bearers 1" "max_rate_up"` dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo ${max_rate_up:-0} elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo ${max_rate_up:-0} else echo "0" fi fi } get_wan_device_dsl_upstreamattenuation() { local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "0" else local attn_up_x100=`get_wan_device_get_dslstats "dslstats" "attn_up_x100"` local attn_up=`expr ${attn_up_x100} / 10` dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo ${attn_up:-0} elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo ${attn_up:-0} else echo "0" fi fi } get_wan_device_dsl_upstreamnoisemargin() { local dev="$1" if [ "$dev" = "$WAN_INST_ETH" ]; then echo "0" else local snr_up_x100=`get_wan_device_get_dslstats "dslstats" "snr_up_x100"` local snr_up=`expr ${snr_up_x100} / 10` dsl=`get_wan_device_wan_dsl_traffic` if [ "$dev" = "$WAN_INST_ATM" -a "$dsl" = "adsl" ]; then echo ${snr_up:-0} elif [ "$dev" = "$WAN_INST_PTM" -a "$dsl" = "vdsl" ]; then echo ${snr_up:-0} else echo "0" fi fi } set_wan_device() { local uci_name=$1 local val=$2 $UCI_SET $uci_name="$val" [ -f /etc/init.d/ppp_password ] && delay_service reload "ppp_password" "1" delay_service reload "network" "1" } get_wan_dsl_link_config_destination_address() { local if_atm="$1" local atmbridge=`$UCI_SHOW layer2_interface_adsl|grep "layer2_interface_adsl\.[^.]\+\.ifname=$if_atm"| cut -f2 -d'.'` if [ "$atmbridge" = "" ]; then return; fi local vpi="`$UCI_GET layer2_interface_adsl.$atmbridge.vpi`" local vci="`$UCI_GET layer2_interface_adsl.$atmbridge.vci`" echo "PVC: $vpi/$vci" } set_wan_dsl_link_config_destination_address() { local if_atm="$1" shift local val="$*" local atmbridge=`$UCI_SHOW layer2_interface_adsl|grep "layer2_interface_adsl\.[^.]\+\.ifname=$if_atm"| cut -f2 -d'.'` if [ "$atmbridge" = "" ]; then return; fi local val=${val#PVC:} local vpi=${val%/*}; vpi=${vpi/ /} local vci=${val#*/}; vci=${vci/ /} $UCI_SET layer2_interface_adsl.$atmbridge.vpi="$vpi" $UCI_SET layer2_interface_adsl.$atmbridge.vci="$vci" delay_service restart "layer2_interface_adsl" "1" delay_service restart "layer2_interface" "1" } get_wan_dsl_link_config_atm_encapsulation() { local if_atm="$1" local encaptype local atmbridge=`$UCI_SHOW layer2_interface_adsl|grep "layer2_interface_adsl\.[^.]\+\.ifname=$if_atm"| cut -f2 -d'.'` if [ "$atmbridge" = "" ]; then return; fi type="`uci get layer2_interface_adsl.$atmbridge.link_type`" case $type in "EoA") encaptype="eoa";; "PPPoA") encaptype="pppoa";; "IPoA") encaptype="ipoa";; esac local encapsulation="`$UCI_GET layer2_interface_adsl.$atmbridge.encaps$encaptype`" case $encapsulation in vcmux*) echo "VCMUX";; llc*) echo "LLC";; esac } set_wan_dsl_link_config_atm_encapsulation() { local val="$1" local if_atm="$2" local encaptype encapsulation local atmbridge=`$UCI_SHOW layer2_interface_adsl|grep "layer2_interface_adsl\.[^.]\+\.ifname=$if_atm"| cut -f2 -d'.'` if [ "$atmbridge" = "" ]; then return; fi type="`uci get layer2_interface_adsl.$atmbridge.link_type`" case $type in "EoA") encaptype="eoa"; encapsulation="vcmux_eth:llcsnap_eth";; "PPPoA") encaptype="pppoa"; encapsulation="vcmux_pppoa:llcencaps_ppp";; "IPoA") encaptype="ipoa"; encapsulation="vcmux_ipoa:llcsnap_rtip";; esac case $val in "VCMUX") encapsulation=${encapsulation%:*};; "LLC") encapsulation=${encapsulation#*:};; *) return;; esac $UCI_SET layer2_interface_adsl.$atmbridge.encaps$encaptype="$encapsulation" delay_service restart "layer2_interface_adsl" "1" delay_service restart "layer2_interface" "1" } get_wan_ip_link_connection_addressing_type() { local iface="$1" local proto="`$UCI_GET network.$iface.proto`" case $proto in "dhcp") echo "DHCP";; "static") echo "Static";; *) echo "$proto";; esac } set_wan_ip_link_connection_addressing_type() { local val="$1" local iface="$2" local proto case $val in "DHCP") proto="dhcp";; "Static") proto="static";; *) return;; esac $UCI_SET network.$iface.proto="$proto" delay_service reload "network" "1" } get_wan_ip_link_connection_connection_type() { local iface="$1" local type="`$UCI_GET network.$iface.type`" case $type in "bridge"|"alias") echo "IP_Bridged";; *) echo "IP_Routed";; esac } set_wan_ip_link_connection_connection_type() { local val="$1" local iface="$2" local type="`$UCI_GET network.$iface.type`" case $val in "IP_Bridged") [ "$type" = "bridge" -o "$type" = "alias" ] && return type="bridge" ;; "IP_Routed") [ "$type" != "bridge" -a "$type" != "alias" ] && return type="" ;; *) return;; esac $UCI_SET network.$iface.type="$type" delay_service reload "network" "1" } get_wan_ip_link_connection_nat_enabled() { local iface="$1" local i=0 while [ "`$UCI_GET firewall.@zone[$i]`" != "" ]; do if [ "`$UCI_GET firewall.@zone[$i].masq`" = "1" ]; then if [ "`$UCI_GET firewall.@zone[$i].network| grep $iface`" != "" ]; then echo 1; return fi fi let i++ done echo "0" } set_wan_ip_link_connection_nat_enabled() { local val="$1" local iface="$2" local cnt=0 val=`echo $val|tr '[A-Z]' '[a-z]'` if [ "$val" = "true" -o "$val" = "1" ]; then val="1" elif [ "$val" = "false" -o "$val" = "0" ]; then val="" else return fi local i=0 while [ "`$UCI_GET firewall.@zone[$i]`" != "" ]; do if [ "`$UCI_GET firewall.@zone[$i].network| grep $iface`" != "" ]; then $UCI_SET firewall.@zone[$i].masq=$val let cnt++ if [ "$val" != "" ]; then break; fi fi let i++ done if [ "$cnt" = "0" -a "$val" != "" ]; then local obj=`create_firewall_zone_config nat $iface` $UCI_SET firewall.$obj.masq=$val fi delay_service reload "firewall" "1" } get_wan_igmp_rule_idx() { local iface="$1" local izone irule izname __rule __zone __zname __enable for izone in `$UCI_SHOW firewall | grep "firewall\.@zone\[[0-9]\+\]\.network=.*$iface" | cut -d. -f2`; do izname=`$UCI_GET firewall.$izone.name` if [ "`$UCI_GET firewall.$izone.network`" = "$iface" -a "$__rule" = "" ]; then __zone="$izone" __zname="$izname" fi [ "`$UCI_GET firewall.$izone.input`" = "DROP" ] && __enable="0" for irule in `$UCI_SHOW firewall | grep "firewall\.@rule\[[0-9]\+\]\.src=.*$izname" | cut -d. -f2`; do if [ "`$UCI_GET firewall.$irule.proto`" = "igmp" ]; then __rule="$irule" __zone="$izone" __zname="$izname" [ "`$UCI_GET firewall.$irule.enabled`" = "0" ] && break [ "`$UCI_GET firewall.$irule.target`" = "DROP" ] && __enable="0" || __enable="1" break fi done [ "$__rule" != "" ] && break done __enable=${__enable:-1} eval "export -- \"$2=\"\"$__rule\"\"\"" eval "export -- \"$3=\"\"$__zone\"\"\"" eval "export -- \"$4=\"\"$__zname\"\"\"" eval "export -- \"$5=\"\"$__enable\"\"\"" } get_wan_ip_link_connection_igmp_enabled() { local iface="$1" local rule zone zname enable get_wan_igmp_rule_idx $iface rule zone zname enable echo "$enable" } set_wan_ip_link_connection_igmp_enabled() { local val="$1" local iface="$2" val=`echo $val|tr '[A-Z]' '[a-z]'` if [ "$val" = "true" -o "$val" = "1" ]; then val="ACCEPT" elif [ "$val" = "false" -o "$val" = "0" ]; then val="DROP" else return fi local rule zone enable zname get_wan_igmp_rule_idx $iface rule zone zname enable if [ "$zone" = "" ]; then zone=`create_firewall_zone_config igmp $iface` zname="igmp_$iface" fi if [ "$rule" = "" ]; then rule=`$UCI_ADD firewall rule` $UCI_SET firewall.$rule.src=$zname $UCI_SET firewall.$rule.proto=igmp fi $UCI_SET firewall.$rule.target=$val $UCI_SET firewall.$rule.enabled=1 delay_service reload "firewall" "1" } get_wan_ip_link_connection_dns_enabled() { local iface="$1" local val=`$UCI_GET network.$iface.peerdns` echo ${val:-1} } set_wan_ip_link_connection_dns_enabled() { local val="$1" local iface="$2" local obj val=`echo $val|tr '[A-Z]' '[a-z]'` if [ "$val" = "true" -o "$val" = "1" ]; then val="" elif [ "$val" = "false" -o "$val" = "0" ]; then val="0" else return fi $UCI_SET network.$iface.peerdns=$val delay_service reload "network" "1" delay_service reload "dnsmasq" "1" } get_wan_eth_intf_enable() { local fdev="$1" local val json_load "$(devstatus $fdev)" json_get_var val up [ "$val" != "true" -a "$val" != "1" ] && val="false" echo $val } set_wan_eth_intf_enable() { local val="$1" local fdev="$2" local cval val=`echo $val|tr '[A-Z]' '[a-z]'` if [ "$val" = "true" -o "$val" = "1" ]; then val="true" elif [ "$val" = "false" -o "$val" = "0" ]; then val="false" else return fi json_load "$(devstatus $fdev)" json_get_var cval up [ "$cval" = "$val" ] && return local intf local intfs=`$UCI_SHOW network | grep "network\.[^.]\+\.ifname=.*$fdev" | cut -d. -f2 | sort -u` if [ "$val" = "true" ]; then for intf in $intfs; do ubus call network.interface.$intf up '{}' & done else for intf in $intfs; do local type=`$UCI_GET network.$intf.type` if [ "$type" != "anywan" -a "$type" != "multiwan" ]; then ubus call network.interface.$intf down '{}' & break else local device json_load "$(ifstatus $intf)" json_get_var device device case "$device" in "$fdev"*) ubus call network.interface.$intf down '{}' & break ;; esac fi done fi } get_wan_eth_intf_status() { local fdev="$1" local val json_load "$(devstatus $fdev)" json_get_var val up [ "$val" != "true" -a "$val" != "1" ] && echo "Disabled" || echo "Up" } get_wan_eth_intf_mac() { local fdev="$1" local val json_load "$(devstatus $fdev)" json_get_var val macaddr [ "$val" = "" ] && val="00:00:00:00:00:00" echo $val } get_wan_eth_intf_stats() { local fdev="$1" local svar="$2" local val json_load "$(devstatus $fdev)" json_select "statistics" > /dev/null json_get_var val "$svar" > /dev/null json_select ".." > /dev/null echo ${val:-0} } get_max_pcon_instance() { $UCI_SHOW network |sed -n "s/network\.[^.]\+\.wan_instance=$1\.//p" | sort -rn | head -n1 } get_max_layer2_interface_index() { $UCI_SHOW layer2_interface_$2 | sed -n "s/layer2_interface_$2\.[^.]\+\.baseifname=$1//p" | sort -rn | head -n1 } update_wan_instance() { local dev="$1" local wan="$2" local iface="$3" local proto="$4" local iproto if [ "$proto" = "dhcp" -o "$proto" = "static" ]; then iproto=$WAN_IP_CONNECTION elif [ "$proto" = "pppoa" -o "$proto" = "pppoe" ];then iproto=$WAN_PPP_CONNECTION else return fi local inst=`$UCI_GET network.$iface.wan_instance` if [ "$dev.$wan.$iproto" = ${inst%.*} ]; then echo ${inst##*.} else local iconp=`get_max_pcon_instance $dev.$wan.$iproto` iconp=${iconp:-0} let iconp++ $UCI_SET network.$iface.wan_instance="$dev.$wan.$iproto.$iconp" $UCI_COMMIT echo $iconp fi } check_multiwan_interface() { local iface="$1" local cnt=0 local allwans="" local ifnames=`$UCI_GET network.$iface.ifname` for ifname in $ifnames; do case $ifname in atm*|ptm*|eth0*) ifname=${ifname%.*} if [ "${allwans/$ifname/}" = "$allwans" ]; then let cnt++ allwans="$allwans $ifname" fi ;; esac done if [ "`$UCI_GET network.$iface.type`" != "" -a $cnt -gt 1 ]; then echo "$cnt"; fi } get_multiwan_instance() { local iface="$1" local __iwan __idev ifname local ifnames=`$UCI_GET network.$iface.ifname` json_load "$(ifstatus $iface)" json_get_var device device ifnames="$device $ifnames" for ifname in $ifnames; do case $ifname in atm*) __idev=$WAN_INST_ATM __iwan=${ifname#atm}; __iwan=${__iwan%.*}; let __iwan++ break ;; ptm*) __idev=$WAN_INST_PTM __iwan=${ifname#ptm}; __iwan=${__iwan%.*}; let __iwan++ break ;; eth0*) __idev=$WAN_INST_ETH __iwan=1 break ;; esac done eval "export -- \"$2=\"\"$__idev\"\"\"" eval "export -- \"$3=\"\"$__iwan\"\"\"" } get_wan_device_by_instance() { local __pref __layer2 case $1 in $WAN_INST_ETH) __pref="eth"; __layer2=ethernet;; $WAN_INST_ATM) __pref="atm"; __layer2=adsl;; $WAN_INST_PTM) __pref="ptm"; __layer2=vdsl;; esac eval "export -- \"$2=\"\"$__pref\"\"\"" eval "export -- \"$3=\"\"$__layer2\"\"\"" } set_annexm_enable() { local dev="$1" local val="$2" if [ "$dev" = "$WAN_INST_ATM" ]; then val=`echo $val|tr '[A-Z]' '[a-z]'` if [ "$val" = "true" -o "$val" = "1" ]; then val="Enabled" elif [ "$val" = "false" -o "$val" = "0" ]; then val="" else return fi $UCI_SET layer2_interface.capabilities.AnnexM="$val" delay_service restart "layer2_interface" "1" fi } get_annexm_status() { local dev="$1" local val="" if [ "$dev" = "$WAN_INST_ATM" ]; then val=`$UCI_GET layer2_interface.capabilities.AnnexM` val=`echo $val|tr '[A-Z]' '[a-z]'` fi [ "$val" = "enabled" ] && echo "1" || echo "0" } get_wandevice_wandevice_parameters() { local dev="$1" local fdev="$2" local notif_permission=`$UCI_SHOW network |grep "network\.$default_wan\.ifname=.*$fdev"` local cwritable=1 [ "$dev" = "$WAN_INST_ETH" ] && cwritable=0 [ "$notif_permission" != "" ] && notif_permission=0 get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev." "0" "$notif_permission" get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice." "$cwritable" "$notif_permission" get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANCommonInterfaceConfig." "0" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANCommonInterfaceConfig.WANAccessType" "0" "get_wan_device_wan_access_type $dev" get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig." "0" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.Status" "0" "" "" "get_wan_device_wan_dsl_interface_config_status $dev" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.ModulationType" "0" "get_wan_device_wan_dsl_interface_config_modulation_type $dev" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.DataPath" "0" "" "" "get_wan_device_dsl_datapath $dev" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.DownstreamCurrRate" "0" "" "" "get_wan_device_dsl_downstreamcurrrate $dev" "xsd:unsignedInt" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.DownstreamMaxRate" "0" "" "" "get_wan_device_dsl_downstreammaxrate $dev" "xsd:unsignedInt" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.DownstreamAttenuation" "0" "" "" "get_wan_device_dsl_downstreamattenuation $dev" "xsd:int" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.DownstreamNoiseMargin" "0" "" "" "get_wan_device_dsl_downstreamnoisemargin $dev" "xsd:int" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.UpstreamCurrRate" "0" "" "" "get_wan_device_dsl_upstreamcurrrate $dev" "xsd:unsignedInt" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.UpstreamMaxRate" "0" "" "" "get_wan_device_dsl_upstreammaxrate $dev" "xsd:unsignedInt" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.UpstreamAttenuation" "0" "" "" "get_wan_device_dsl_upstreamattenuation $dev" "xsd:int" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.UpstreamNoiseMargin" "0" "" "" "get_wan_device_dsl_upstreamnoisemargin $dev" "xsd:int" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.X_INTENO_SE_AnnexMEnable" "1" "get_annexm_status $dev" "set_annexm_enable $dev \$val" "" "xsd:boolean" if [ "$dev" = "$WAN_INST_ETH" ]; then get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANEthernetInterfaceConfig." "0" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANEthernetInterfaceConfig.Enable" "1" "" "set_wan_eth_intf_enable \$val $fdev" "get_wan_eth_intf_enable $fdev" "xsd:boolean" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANEthernetInterfaceConfig.Status" "0" "" "" "get_wan_eth_intf_status $fdev" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANEthernetInterfaceConfig.MACAddress" "0" "" "" "get_wan_eth_intf_mac $fdev" get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANEthernetInterfaceConfig.Stats." "0" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANEthernetInterfaceConfig.Stats.BytesSent" "0" "" "" "get_wan_eth_intf_stats $fdev tx_bytes" "xsd:unsignedInt" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANEthernetInterfaceConfig.Stats.BytesReceived" "0" "" "" "get_wan_eth_intf_stats $fdev rx_bytes" "xsd:unsignedInt" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANEthernetInterfaceConfig.Stats.PacketsSent" "0" "" "" "get_wan_eth_intf_stats $fdev tx_packets" "xsd:unsignedInt" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANEthernetInterfaceConfig.Stats.PacketsReceived" "0" "" "" "get_wan_eth_intf_stats $fdev rx_packets" "xsd:unsignedInt" fi } get_wandevice_wanconnectiondevice_parameters() { local dev="$1" local wan="$2" local fwan="$3" local notif_permission=`$UCI_SHOW network |grep "network\.$default_wan\.ifname=.*$fwan"` local ipn_perm pppn_perm cwritable=1 [ "$dev" = "$WAN_INST_ETH" ] && cwritable=0 if [ "$notif_permission" != "" ]; then notif_permission="0" local proto=`$UCI_GET network.$default_wan.proto` [ "$proto" = "dhcp" -o "$proto" = "static" ] && ipn_perm="0" [ "$proto" = "pppoa" -o "$proto" = "pppoe" ] && pppn_perm="0" fi get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan." "$cwritable" "$notif_permission" get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection." "1" "$ipn_perm" get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection." "1" "$pppn_perm" if [ "$dev" = $WAN_INST_ATM ]; then get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANDSLLinkConfig." "0" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANDSLLinkConfig.Enable" "0" "echo 1" "" "" "xsd:boolean" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANDSLLinkConfig.DestinationAddress" "1" "get_wan_dsl_link_config_destination_address $fwan" "set_wan_dsl_link_config_destination_address $fwan \$val" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANDSLLinkConfig.ATMEncapsulation" "1" "get_wan_dsl_link_config_atm_encapsulation $fwan" "set_wan_dsl_link_config_atm_encapsulation \$val $fwan" fi } get_wandevice_wanprotoclconnection_parameters() { local dev="$1" local wan="$2" local conp="$3" local iface="$4" local proto="$5" local forced_inform_eip="" local forced_notify="" local notif_permission="" local linker="linker_interface:$iface" if [ "$default_wan" = "$iface" ];then forced_inform_eip="1" forced_notify="2" notif_permission="0" fi if [ "$proto" = "dhcp" -o "$proto" = "static" ];then get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp." "1" "$notif_permission" "$linker" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.Enable" "1" "" "set_interface_enable_ubus $iface \$val" "get_interface_enable_ubus $iface" "xsd:boolean" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.ConnectionStatus" "0" "" "" "get_wan_device_mng_status $iface" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.ExternalIPAddress" "0" "" "" "get_wan_device_mng_interface_ip $iface" "" "$notif_permission" "$forced_inform_eip" "$forced_notify" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.MACAddress" "0" "get_wan_device_mng_interface_mac $iface" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.ConnectionType" "1" "get_wan_ip_link_connection_connection_type $iface" "set_wan_ip_link_connection_connection_type \$val $iface" "" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.AddressingType" "1" "get_wan_ip_link_connection_addressing_type $iface" "set_wan_ip_link_connection_addressing_type \$val $iface" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.NATEnabled" "1" "get_wan_ip_link_connection_nat_enabled $iface" "set_wan_ip_link_connection_nat_enabled \$val $iface" "" "xsd:boolean" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.X_BROADCOM_COM_FirewallEnabled" "1" "get_interface_firewall_enabled $iface" "set_interface_firewall_enabled $iface \$val" "" "xsd:boolean" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.X_BROADCOM_COM_IGMPEnabled" "1" "get_wan_ip_link_connection_igmp_enabled $iface" "set_wan_ip_link_connection_igmp_enabled \$val $iface" "" "xsd:boolean" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.DNSEnabled" "1" "get_wan_ip_link_connection_dns_enabled $iface" "set_wan_ip_link_connection_dns_enabled \$val $iface" "" "xsd:boolean" #get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$conp.DNSOverrideAllowed" "0" "" fi if [ "$proto" = "pppoa" -o "$proto" = "pppoe" ];then get_object_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$conp." "1" "$notif_permission" "$linker" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$conp.Enable" "1" "" "set_interface_enable_ubus $iface \$val" "get_interface_enable_ubus $iface" "xsd:boolean" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$conp.ConnectionStatus" "0" "" "" "get_wan_device_ppp_status $iface" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$conp.ExternalIPAddress" "0" "" "" "get_wan_device_ppp_interface_ip $iface" "" "$notif_permission" "$forced_inform_eip" "$forced_notify" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$conp.MACAddress" "0" "get_wan_device_mng_interface_mac $iface" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$conp.Username" "1" "$UCI_GET network.$iface.username" "set_wan_device network.$iface.username \$val" get_param_cache_generic "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$conp.Password" "1" "" "set_wan_device network.$iface.password \$val" "" "" "" "" "" "1" fi } get_cache_InternetGatewayDevice_WANDevice() { local adev idev fdev cdev fwan fconp default_wan=`$UCI_GET cwmp.cpe.default_wan_interface` get_object_cache_generic "InternetGatewayDevice.WANDevice." "0" "0" for adev in "$WAN_INST_ETH:eth0,ethernet" "$WAN_INST_ATM:atm,adsl" "$WAN_INST_PTM:ptm,vdsl";do idev=${adev%:*} adev=${adev#*:} fdev=${adev%,*} cdev=${adev#*,} get_wandevice_wandevice_parameters "$idev" "$fdev" local wans=`$UCI_SHOW layer2_interface_$cdev | sed -n "s/layer2_interface_$cdev\.[^.]\+\.baseifname=//p" | sort -u` for fwan in $wans; do local iwan=${fwan##*[hm]}; let iwan++ get_wandevice_wanconnectiondevice_parameters "$idev" "$iwan" "$fwan" local conps=`$UCI_SHOW network | grep "network\.[^.]\+\.ifname=.*$fwan" | cut -d. -f2 | sort -u` for fconp in $conps; do [ "`check_multiwan_interface $fconp`" != "" ] && continue local proto=`$UCI_GET network.$fconp.proto` local iconp=`update_wan_instance "$idev" "$iwan" "$fconp" "$proto"` get_wandevice_wanprotoclconnection_parameters "$idev" "$iwan" "$iconp" "$fconp" "$proto" done done done } get_dynamic_InternetGatewayDevice_WANDevice() { local idev iwan fconp case "$1" in ""|\ InternetGatewayDevice.|\ InternetGatewayDevice.WANDevice.|\ InternetGatewayDevice.WANDevice.[1-9].|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9].|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9][0-9].|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANIPConnection.|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANIPConnection.[1-9].|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANIPConnection.[1-9].*|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANIPConnection.[1-9][0-9].|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANIPConnection.[1-9][0-9].*|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANPPPConnection.|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANPPPConnection.[1-9].|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANPPPConnection.[1-9].*|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANPPPConnection.[1-9][0-9].|\ InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANPPPConnection.[1-9][0-9].*) default_wan=`$UCI_GET cwmp.cpe.default_wan_interface` local conps=`$UCI_SHOW network | grep "network\.[^.]\+\.ifname=" | cut -d. -f2 | sort -u` for fconp in $conps; do [ "`check_multiwan_interface $fconp`" = "" ] && continue local proto=`$UCI_GET network.$fconp.proto` get_multiwan_instance "$fconp" idev iwan local iconp=`update_wan_instance "$idev" "$iwan" "$fconp" "$proto"` get_wandevice_wanprotoclconnection_parameters "$idev" "$iwan" "$iconp" "$fconp" "$proto" done esac return $FAULT_CPE_NO_FAULT } add_wan_wanconnectiondevice() { local idev="$1" local filename="$2" local fdev iwan fwan layer2 get_wan_device_by_instance $idev fdev layer2 local iwan=`get_max_layer2_interface_index $fdev $layer2` iwan=${iwan:--1} let iwan++ if [ "$fdev" = "atm" ]; then local catm=`$UCI_ADD layer2_interface_adsl atm_bridge` $UCI_SET layer2_interface_adsl.$catm.baseifname=atm$iwan $UCI_SET layer2_interface_adsl.$catm.bridge=0 $UCI_SET layer2_interface_adsl.$catm.encapseoa=llcsnap_eth $UCI_SET layer2_interface_adsl.$catm.ifname=atm$iwan.1 $UCI_SET layer2_interface_adsl.$catm.link_type=EoA $UCI_SET layer2_interface_adsl.$catm.unit=$iwan $UCI_SET layer2_interface_adsl.$catm.vci=35 $UCI_SET layer2_interface_adsl.$catm.vpi=8 delay_service restart "layer2_interface_adsl" "1" else local cptm=`$UCI_ADD layer2_interface_vdsl vdsl_interface` $UCI_SET layer2_interface_vdsl.$cptm.baseifname=ptm$iwan $UCI_SET layer2_interface_vdsl.$cptm.bridge=0 $UCI_SET layer2_interface_vdsl.$cptm.ifname=ptm$iwan.1 $UCI_SET layer2_interface_vdsl.$cptm.unit=$iwan delay_service restart "layer2_interface_vdsl" "1" fi $UCI_COMMIT delay_service restart "layer2_interface" "1" fwan="$fdev$iwan" let iwan++ get_wandevice_wanconnectiondevice_parameters "$idev" "$iwan" "$fwan" >> $cache_path/$filename freecwmp_output "" "" "" "" "" "" "1" "$iwan" return $FAULT_CPE_NO_FAULT } add_wan_wanprotocolconnection() { local instances="$1" local proto="$2" local iproto="$3" local filename="$4" local idev fdev iwan fwan layer2 idev=${instances%% *} iwan=${instances##* } if [ "$idev" != "$WAN_INST_ATM" -a "$idev" != "$WAN_INST_PTM" -a "$idev" != "$WAN_INST_ETH" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi get_wan_device_by_instance $idev fdev layer2 fwan="$fdev$((iwan-1))" local tmp=`$UCI_SHOW layer2_interface_$layer2 | grep "layer2_interface_$layer2\.[^.]\+\.baseifname=$fwan"` if [ "$tmp" = "" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi fwan="$fwan.1" local iconp=`get_max_pcon_instance $idev.$iwan.$iproto` iconp=${iconp:-0} local fconp="wan_""$idev""_$iwan""_$iproto""_$((++iconp))" $UCI_SET network.$fconp=interface $UCI_SET network.$fconp.wan_instance="$idev.$iwan.$iproto.$iconp" $UCI_SET network.$fconp.ifname=$fwan $UCI_SET network.$fconp.proto=$proto $UCI_COMMIT delay_service reload "network" "1" get_wandevice_wanprotoclconnection_parameters "$idev" "$iwan" "$iconp" "$fconp" "$proto" >> $cache_path/$filename freecwmp_output "" "" "" "" "" "" "1" "$iconp" return $FAULT_CPE_NO_FAULT } delete_wan_wanconnectiondevice() { local instances="$2" local filename="$3" local idev fdev iwan fwan layer2 fconp idev=${instances%% *} iwan=${instances##* } if [ "$idev" != "$WAN_INST_ATM" -a "$idev" != "$WAN_INST_PTM" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi get_wan_device_by_instance $idev fdev layer2 fwan="$fdev$((iwan-1))" local tmp=`$UCI_SHOW layer2_interface_$layer2 | grep "layer2_interface_$layer2\.[^.]\+\.baseifname=$fwan" | cut -f2 -d.` if [ "$tmp" = "" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi $UCI_SHOW network | grep "network\.[^.]\+\.ifname=.*$fwan" | cut -f2 -d. | while read fconp; do $UCI_DELETE network.$fconp done $UCI_DELETE layer2_interface_$layer2.$tmp $UCI_COMMIT delay_service restart "layer2_interface_$layer2" "1" delay_service restart "layer2_interface" "1" freecwmp_output "" "" "" "" "" "" "1" sed -i "/$1/d" $cache_path/$filename return $FAULT_CPE_NO_FAULT } delete_wan_wanconnectiondevice_all() { local instances="$2" local filename="$3" local idev fdev iwan fwan layer2 fconp idev=${instances%% *} iwan=${instances##* } if [ "$idev" != "$WAN_INST_ATM" -a "$idev" != "$WAN_INST_PTM" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi get_wan_device_by_instance $idev fdev layer2 local wcd wcds=`$UCI_SHOW -X layer2_interface_$layer2 | grep "layer2_interface_$layer2\.[^.]\+\.baseifname=$fdev" | cut -d. -f2` for wcd in $wcds; do $UCI_DELETE layer2_interface_$layer2.$wcd done $UCI_SHOW network | grep "network\.[^.]\+\.ifname=.*$fdev" | cut -f2 -d. | while read fconp; do $UCI_DELETE network.$fconp done $UCI_COMMIT delay_service restart "layer2_interface_$layer2" "1" delay_service restart "layer2_interface" "1" freecwmp_output "" "" "" "" "" "" "1" sed -i "/$1[0-9]\+\./d" $cache_path/$filename return $FAULT_CPE_NO_FAULT } delete_wan_wanprotocolconnection() { local instances="$2" local iproto="$3" local filename="$4" local idev fdev iwan fwan layer2 idev=${instances%% *} instances=${instances#* } iwan=${instances%% *} iconp=${instances##* } if [ "$idev" != "$WAN_INST_ATM" -a "$idev" != "$WAN_INST_PTM" -a "$idev" != "$WAN_INST_ETH" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi get_wan_device_by_instance $idev fdev layer2 fwan="$fdev$((iwan-1))" local tmp=`$UCI_SHOW layer2_interface_$layer2 | grep "layer2_interface_$layer2\.[^.]\+\.baseifname=$fwan"` if [ "$tmp" = "" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi tmp=`$UCI_SHOW network | grep "network\.[^.]\+\.wan_instance=$idev.$iwan.$iproto.$iconp" | cut -f2 -d.` if [ "$tmp" = "" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi $UCI_DELETE network.$tmp $UCI_COMMIT delay_service reload "network" "1" freecwmp_output "" "" "" "" "" "" "1" sed -i "/$1/d" $cache_path/$filename return $FAULT_CPE_NO_FAULT } delete_wan_wanprotocolconnection_all() { local instances="$2" local iproto="$3" local filename="$4" local idev fdev iwan fwan layer2 idev=${instances%% *} instances=${instances#* } iwan=${instances%% *} if [ "$idev" != "$WAN_INST_ATM" -a "$idev" != "$WAN_INST_PTM" -a "$idev" != "$WAN_INST_ETH" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi get_wan_device_by_instance $idev fdev layer2 fwan="$fdev$((iwan-1))" local tmp=`$UCI_SHOW layer2_interface_$layer2 | grep "layer2_interface_$layer2\.[^.]\+\.baseifname=$fwan"` if [ "$tmp" = "" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi local iconp iconps=`$UCI_SHOW network | grep "network\.[^.]\+\.wan_instance=$idev.$iwan.$iproto" | cut -f2 -d.` if [ "$iconps" = "" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi for iconp in $iconps; do $UCI_DELETE network.$iconp done $UCI_COMMIT delay_service reload "network" "1" freecwmp_output "" "" "" "" "" "" "1" sed -i "/$1[0-9]\+\./d" $cache_path/$filename return $FAULT_CPE_NO_FAULT } add_object_InternetGatewayDevice_WANDevice() { local filename="$2" local idev fault_code instances default_wan=`$UCI_GET cwmp.cpe.default_wan_interface` case $1 in InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.) freecwmp_parse_formated_parameter "$1" "InternetGatewayDevice.WANDevice.{i}.WANConnectionDevice." "rc" "idev" if [ "$rc" != "0" -o "$idev" != "$WAN_INST_ATM" -a "$idev" != "$WAN_INST_PTM" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi add_wan_wanconnectiondevice "$idev" "$filename" fault_code="$?" return $fault_code ;; InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANIPConnection.) freecwmp_parse_formated_parameter "$1" "InternetGatewayDevice.WANDevice.{i}.WANConnectionDevice.{i}.WANIPConnection." "rc" "instances" if [ "$rc" != "0" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi add_wan_wanprotocolconnection "$instances" "dhcp" "$WAN_IP_CONNECTION" "$filename" fault_code="$?" return $fault_code ;; InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANPPPConnection.) freecwmp_parse_formated_parameter "$1" "InternetGatewayDevice.WANDevice.{i}.WANConnectionDevice.{i}.WANPPPConnection." "rc" "instances" if [ "$rc" != "0" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi add_wan_wanprotocolconnection "$instances" "pppoe" "$WAN_PPP_CONNECTION" "$filename" fault_code="$?" return $fault_code ;; esac return $FAULT_CPE_INVALID_PARAMETER_NAME } delete_object_InternetGatewayDevice_WANDevice() { local filename="$2" local fault_code instances case $1 in InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANIPConnection.[1-9]*.) freecwmp_parse_formated_parameter "$1" "InternetGatewayDevice.WANDevice.{i}.WANConnectionDevice.{i}.WANIPConnection.{i}." "rc" "instances" if [ "$rc" != "0" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi delete_wan_wanprotocolconnection "$1" "$instances" "$WAN_IP_CONNECTION" "$filename" fault_code="$?" return $fault_code ;; InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANIPConnection.) freecwmp_parse_formated_parameter "$1" "InternetGatewayDevice.WANDevice.{i}.WANConnectionDevice.{i}.WANIPConnection." "rc" "instances" if [ "$rc" != "0" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi delete_wan_wanprotocolconnection_all "$1" "$instances" "$WAN_IP_CONNECTION" "$filename" fault_code="$?" return $fault_code ;; InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANPPPConnection.[1-9]*.) freecwmp_parse_formated_parameter "$1" "InternetGatewayDevice.WANDevice.{i}.WANConnectionDevice.{i}.WANPPPConnection.{i}." "rc" "instances" if [ "$rc" != "0" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi delete_wan_wanprotocolconnection "$1" "$instances" "$WAN_PPP_CONNECTION" "$filename" fault_code="$?" return $fault_code ;; InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.WANPPPConnection.) freecwmp_parse_formated_parameter "$1" "InternetGatewayDevice.WANDevice.{i}.WANConnectionDevice.{i}.WANPPPConnection." "rc" "instances" if [ "$rc" != "0" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi delete_wan_wanprotocolconnection_all "$1" "$instances" "$WAN_PPP_CONNECTION" "$filename" fault_code="$?" return $fault_code ;; InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.[1-9]*.) freecwmp_parse_formated_parameter "$1" "InternetGatewayDevice.WANDevice.{i}.WANConnectionDevice.{i}." "rc" "instances" if [ "$rc" != "0" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi delete_wan_wanconnectiondevice "$1" "$instances" "$filename" fault_code="$?" return $fault_code ;; InternetGatewayDevice.WANDevice.[1-9].WANConnectionDevice.) freecwmp_parse_formated_parameter "$1" "InternetGatewayDevice.WANDevice.{i}.WANConnectionDevice." "rc" "instances" if [ "$rc" != "0" ]; then return $FAULT_CPE_INVALID_PARAMETER_NAME; fi delete_wan_wanconnectiondevice_all "$1" "$instances" "$filename" fault_code="$?" return $fault_code ;; esac return $FAULT_CPE_INVALID_PARAMETER_NAME } get_dynamic_linker_InternetGatewayDevice_WANDevice() { return $FAULT_CPE_NO_FAULT }