icwmp/scripts/functions/wan_device
2013-07-26 13:36:12 +01:00

827 lines
24 KiB
Bash

#!/bin/sh
# Copyright (C) 2011-2012 Luka Perkov <freecwmp@lukaperkov.net>
# Copyright (C) 2013 Inteno Broadband Technology AB
# Author Ahmed Zribi <ahmed.zribi@pivasoftware.com>
get_wan_logical_intf() {
local intf="$1"
local list_intf=`handle_wan_interface|sort -u|cut -f1 -d:`
for i in $list_intf;do
if [ "`echo $i|cut -c1-3`" != "`echo $prev_i|cut -c1-3`" ];then
n=1
elif [ "$i" != "$prev_i" ];then
let n=$n+1
fi
if [ "$i" = "$intf" ];then
echo $n
return 0
fi
prev_i=$i
done
}
handle_wan_interface() {
for config in `ubus list|sed -n 's/network\.interface\.//p'`;do
local ifname="`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -q get network.$config.ifname|cut -f1 -d ' '`"
local _orig_ifname="`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -q get network.$config._orig_ifname|cut -f1 -d ' '`"
local logical_intf
local instance
local device
json_load "$(ifstatus $config)"
json_get_var device device
if [ "$device" != "" ];then
logical_intf=$device
elif [ "$_orig_ifname" != "" ];then
logical_intf=$_orig_ifname
else
logical_intf=$ifname
fi
if [ "`echo $logical_intf|grep eth`" != "" ];then
instance=1
elif [ "`echo $logical_intf|grep atm`" != "" ];then
instance=2
elif [ "`echo $logical_intf|grep ptm`" != "" ];then
instance=3
fi
if [ "`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -q get network.$config.is_lan`" != "1" ];then
echo $logical_intf:$instance:$config
fi
done
}
get_wan_device_instance() {
local populate="$1"
local parameter="$2"
local value="$3"
local next_level="$4"
local notification="$5"
local fault_code=$FAULT_CPE_INVALID_PARAMETER_NAME
local fault_err=$FAULT_CPE_INVALID_PARAMETER_NAME
local list_interface=`handle_wan_interface|sort -u`
local logical_intf
local dev=0
local wan=0
local wan_ppp=1
local wan_ip=1
# $1:parameter $2:param $3:get_fn $4:set_fn $5:value $6:notification $7:next_level $8:interface
$populate "$parameter" "InternetGatewayDevice.WANDevice." "get_wan_device_object_name" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
for intf in $list_interface;do
iface=`echo $intf|cut -f3 -d:`
dev=`echo $intf|cut -f2 -d:`
logical_intf=`echo $intf|cut -f1 -d:`
wan=`get_wan_logical_intf $logical_intf`
if [ "$prev_wan" != "$wan" -a "$prev_wan" != "" ];then
wan_ip=1
wan_ppp=1
fi
if [ "$prev_dev" != "$dev" -a "$prev_dev" != "" ];then
wan_ip=1
wan_ppp=1
fi
proto=`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -q get network.$iface.proto`
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev." "get_wan_device_object_name" "" "$value" "$notification" "$next_level" "$iface"
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice." "get_wan_device_object_name" "" "$value" "$notification" "$next_level" "$iface"
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan." "get_wan_device_object_name" "" "$value" "$notification" "$next_level" "$iface"
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANCommonInterfaceConfig." "get_wan_device_object_ro_name" "" "$value" "$notification" "$next_level" "$iface"
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANCommonInterfaceConfig.WANAccessType" "get_wan_device_wan_access_type" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig." "get_wan_device_object_ro_name" "" "$value" "$notification" "$next_level" "$iface"
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.Status" "get_wan_device_wan_dsl_interface_config_status" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANDSLInterfaceConfig.ModulationType" "get_wan_device_wan_dsl_interface_config_modulation_type" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
if [ "$proto" = "dhcp" -o "$proto" = "static" ];then
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection." "get_wan_device_object_name" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$wan_ip." "get_wan_device_object_name" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$wan_ip.Enable" "get_wan_device_wan_mng_enable" "set_wan_device_wan_mng_enable" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$wan_ip.ConnectionStatus" "get_wan_device_mng_status" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$wan_ip.ExternalIPAddress" "get_wan_device_mng_interface_ip" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANIPConnection.$wan_ip.MACAddress" "get_wan_device_mng_interface_mac" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
let wan_ip=$wan_ip+1
fi
if [ "$proto" = "pppoa" -o "$proto" = "pppoe" ];then
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection." "get_wan_device_object_name" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$wan_ppp." "get_wan_device_object_name" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$wan_ppp.Enable" "get_wan_device_wan_ppp_enable" "set_wan_device_wan_ppp_enable" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$wan_ppp.ConnectionStatus" "get_wan_device_ppp_status" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$wan_ppp.ExternalIPAddress" "get_wan_device_ppp_interface_ip" "" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$wan_ppp.Username" "get_wan_device_wan_ppp_username" "set_wan_device_wan_ppp_username" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
$populate "$parameter" "InternetGatewayDevice.WANDevice.$dev.WANConnectionDevice.$wan.WANPPPConnection.$wan_ppp.Password" "get_wan_device_wan_ppp_password" "set_wan_device_wan_ppp_password" "$value" "$notification" "$next_level" "$iface"
fault_code="$?"
if [ "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
fault_err=$FAULT_CPE_NO_FAULT
fi
if [ \( "`echo $parameter|grep '\.$'`" = "" -o "$populate" = "get_pop_inform" \) -a "$fault_code" = "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
elif [ "$fault_code" != "$FAULT_CPE_INVALID_PARAMETER_NAME" -a "$fault_code" != "$FAULT_CPE_NO_FAULT" ];then
return $fault_code
fi
let wan_ppp=$wan_ppp+1
fi
prev_wan=$wan
prev_dev=$dev
done
return $fault_err
}
get_wan_device_wan_access_type() {
local val=""
local type="xsd:string"
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
json_load "$(ifstatus $intf)"
json_get_var device device
if [ "${device:0:3}" = "eth" ];then
val="Ethernet"
elif [ "${device:0:3}" = "atm" -o "${device:0:3}" = "ptm" ];then
val="DSL"
fi
;;
get_name)
permissions="0"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions" "$type"
}
get_wan_device_wan_dsl_interface_config_status() {
local val=""
local type="xsd:string"
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
adsl_shown=`adsl info --stats|grep "^Status:"|cut -f2 -d:|sed 's/\t*//g'|sed 's/^ *//g'|sed 's/ *$//g'`
case "$adsl_shown" in
"Showtime")
val="Up"
;;
"Training")
val="Initializing"
;;
"Channel Analysis")
val="EstablishingLink"
;;
"Disabled")
val="Disabled"
;;
esac
;;
get_name)
permissions="0"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions" "$type"
}
get_wan_device_wan_dsl_interface_config_modulation_type() {
local val=""
local type="xsd:string"
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
adsl_shown=`adsl info --stats|grep "Mode:"|cut -f2 -d:|sed 's/\t*//g'|sed 's/^ *//g'|cut -f1 -d ' '`
case "$adsl_shown" 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="$adsl_shown"
;;
esac
;;
get_name)
permissions="0"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions" "$type"
}
get_wan_device_wan_mng_enable() {
local val=""
local type="xsd:boolean"
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
json_load "$(ifstatus $intf)"
json_get_var up up
val="$up"
;;
get_name)
permissions="1"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions" "$type"
}
set_wan_device_wan_mng_enable() {
local parm="$1"
local val="$2"
local intf="$3"
case $action in
set_value)
if [ "$val" -eq 0 ]; then
ubus call network.interface.wan down '{}' &
elif [ "$val" -eq 1 ]; then
ubus call network.interface.wan up '{}' &
fi
;;
set_notification)
freecwmp_set_parameter_notification "$parm" "$val"
;;
esac
}
get_wan_device_mng_status() {
# TODO: Unconfigured ; Connecting ; Connected ; PendingDisconnect ; Disconneting ; Disconnected
local val=""
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
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
;;
get_name)
permissions="0"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions"
}
get_wan_device_ppp_status() {
# TODO: Unconfigured ; Connecting ; Connected ; PendingDisconnect ; Disconneting ; Disconnected
local val=""
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
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
;;
get_name)
permissions="0"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions"
}
get_wan_device_mng_interface_ip() {
local val=""
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
if [ -z "$default_wan_device_mng_interface_ip" ]; then
network_get_ipaddr val $intf
else
val=$default_wan_device_mng_interface_ip
fi
;;
get_name)
permissions="0"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions"
}
get_wan_device_ppp_interface_ip() {
local val=""
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
if [ -z "$default_wan_device_mng_interface_ip" ]; then
network_get_ipaddr val $intf
else
val=$default_wan_device_mng_interface_ip
fi
;;
get_name)
permissions="0"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions"
}
get_wan_device_mng_interface_mac() {
local val=""
local parm="$1"
local permissions=""
local intf="$2"
local device
case "$action" in
get_value)
json_load "$(ifstatus $config)"
json_get_var device device
json_load "$(devstatus $device)"
json_get_var macaddr macaddr
val="$macaddr"
;;
get_name)
permissions="0"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions"
}
get_wan_device_wan_ppp_enable() {
local val=""
local type="xsd:boolean"
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
json_load "$(ifstatus $intf)"
json_get_var up up
val="$up"
;;
get_name)
permissions="1"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions" "$type"
}
set_wan_device_wan_ppp_enable() {
local parm="$1"
local val="$2"
local intf="$3"
case $action in
set_value)
if [ "$val" -eq 0 ]; then
ubus call network.interface.wan down '{}' &
elif [ "$val" -eq 1 ]; then
ubus call network.interface.wan up '{}' &
fi
;;
set_notification)
freecwmp_set_parameter_notification "$parm" "$val"
;;
esac
}
get_wan_device_wan_ppp_username() {
local val=""
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
val=`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -q get network.$intf.username 2> /dev/null`
;;
get_name)
permissions="1"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions"
}
set_wan_device_wan_ppp_username() {
local parm="$1"
local val="$2"
local intf="$3"
case $action in
set_value)
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -q set network.$intf.username="$val"
;;
set_notification)
freecwmp_set_parameter_notification "$parm" "$val"
;;
esac
}
get_wan_device_wan_ppp_password() {
local val=""
local parm="$1"
local permissions=""
local intf="$2"
case "$action" in
get_value)
# returned value must be empty
val=""
;;
get_name)
permissions="1"
;;
get_notification)
freecwmp_get_parameter_notification "val" "$parm"
;;
esac
freecwmp_output "$parm" "$val" "$permissions"
}
set_wan_device_wan_ppp_password() {
local parm="$1"
local val="$2"
local intf="$3"
case $action in
set_value)
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -q set network.$intf.password="$val"
;;
set_notification)
freecwmp_set_parameter_notification "$parm" "$val"
;;
esac
}
get_pop() {
local parameter="$1"
local parm="$2"
local get_fn="$3"
local intf="$8"
local fault_code=$FAULT_CPE_INVALID_PARAMETER_NAME
check=`echo $parm|grep $parameter`
if [ "$check" != "" ];then
if [ "`echo $parm|grep '\.$'`" = "" ];then
eval "$get_fn $parm $intf" 2> /dev/null
fi
fault_code=$FAULT_CPE_NO_FAULT
fi
return $fault_code
}
get_wan_device_object_name() {
local parm="$1"
freecwmp_output "$parm" "" "1"
return $FAULT_CPE_NO_FAULT
}
get_wan_device_object_ro_name() {
local parm="$1"
freecwmp_output "$parm" "" "0"
return $FAULT_CPE_NO_FAULT
}
get_pop_inform() {
local parameter="$1"
local parm="$2"
local get_fn="$3"
local intf="$8"
local fault_code=$FAULT_CPE_INVALID_PARAMETER_NAME
if [ "$intf" = "$extern_intf" -a "`echo $parm|grep ExternalIPAddress`" != "" ];then
eval "$get_fn $parm $intf" 2> /dev/null
fault_code=$FAULT_CPE_NO_FAULT
fi
return $fault_code
}
get_pop_name() {
local parameter="$1"
local parm="$2"
local next_level="$7"
local get_fn="$3"
local intf="$8"
local fault_code=$FAULT_CPE_INVALID_PARAMETER_NAME
check=`echo $parm|grep $parameter`
if [ "$check" != "" ];then
if [ "`echo $parameter|grep '\.$'`" = "" -a "$next_level" = "1" ];then
return $FAULT_CPE_INVALID_ARGUMENTS
fi
if [ "$next_level" = "1" ];then
if [ "`echo $parameter|grep '\.$'`" = "" -a "${parm%.*}." = "$parameter" ];then
eval "$get_fn $parm $intf" 2> /dev/null
fi
if [ "`echo $parm|grep '\.$'`" != "" ];then
p="${parm%.*}"
if [ "$prev_obj" != "$parm" -a "${p%.*}." = "$parameter" ];then
eval "$get_fn $parm $intf" 2> /dev/null
prev_obj=$parm
fi
fi
else
eval "$get_fn $parm" 2> /dev/null
fi
fault_code=$FAULT_CPE_NO_FAULT
fi
return $fault_code
}
get_pop_notification() {
local parameter="$1"
local parm="$2"
local get_fn="$3"
local intf="$8"
local fault_code=$FAULT_CPE_INVALID_PARAMETER_NAME
check=`echo $parm|grep $parameter`
if [ "$check" != "" ];then
if [ "`echo $parm|grep '\.$'`" = "" ];then
eval "$get_fn $parm $intf" 2> /dev/null
fi
fault_code=$FAULT_CPE_NO_FAULT
fi
return $fault_code
}
set_pop() {
local parameter="$1"
local parm="$2"
local set_fn="$4"
local value="$5"
local intf="$8"
local fault_code=$FAULT_CPE_INVALID_PARAMETER_NAME
check=`echo $parm|grep $parameter`
if [ "$check" != "" ];then
if [ "`echo $parameter|grep '\.$'`" = "" -a "$set_fn" != "" ];then
eval "$set_fn $parm $value $intf" 2> /dev/null
fi
fault_code=$FAULT_CPE_NO_FAULT
fi
return $fault_code
}
set_pop_notification() {
local parameter="$1"
local parm="$2"
local set_fn="$4"
local notification="$6"
local intf="$8"
local fault_code=$FAULT_CPE_INVALID_PARAMETER_NAME
check=`echo $parm|grep $parameter`
if [ "$check" != "" ];then
if [ "`echo $parameter|grep '\.$'`" = "" -a "$set_fn" != "" ];then
eval "$set_fn $parm $notification $intf" 2> /dev/null
else
freecwmp_set_parameter_notification "$parm" "0"
fi
fault_code=$FAULT_CPE_NO_FAULT
fi
if [ "`echo $parameter|grep '\.$'`" != "" ];then
freecwmp_set_parameter_notification "$parameter" "$notification"
fi
return $fault_code
}
get_wan_device() {
local fault_code
local parameter="$1"
get_wan_device_instance "get_pop" "$parameter" "" "" ""
fault_code="$?"
return $fault_code
}
get_wan_device_notification() {
local fault_code
local parameter="$1"
get_wan_device_instance "get_pop_notification" "$parameter" "" "" ""
fault_code="$?"
return $fault_code
}
get_wan_device_name() {
local fault_code
local parameter="$1"
local next_level="$2"
get_wan_device_instance "get_pop_name" "$parameter" "" "$next_level" ""
fault_code="$?"
return $fault_code
}
set_wan_device() {
local fault_code
local parameter="$1"
local value="$2"
get_wan_device_instance "set_pop" "$parameter" "$value" "" ""
fault_code="$?"
return $fault_code
}
set_wan_device_notification () {
local fault_code
local parameter="$1"
local notification="$2"
local fault_code
get_wan_device_instance "set_pop_notification" "$parameter" "" "" "$notification"
fault_code="$?"
return $fault_code
}
add_wan_device() { return $FAULT_CPE_INVALID_PARAMETER_NAME; }
delete_wan_device() { return $FAULT_CPE_INVALID_PARAMETER_NAME; }