Signed-off-by: Mohamed <mohamed.kallel@pivasoftware.com>
Signed-off-by: Ahmed ZRIBI <ahmed.zribi@pivasoftware.com>
---
ext/openwrt/scripts/freecwmp.sh | 127 +++++++++---------
ext/openwrt/scripts/functions/wan_device | 223 +++++++++++++++++++++++++++---
src/freecwmp.c | 2 +-
3 files changed, 267 insertions(+), 85 deletions(-)
diff --git a/ext/openwrt/scripts/freecwmp.sh b/ext/openwrt/scripts/freecwmp.sh
index c5a0d53..a2f2bc1 100644
--- a/ext/openwrt/scripts/freecwmp.sh
+++ b/ext/openwrt/scripts/freecwmp.sh
@@ -1,5 +1,6 @@
#!/bin/sh
# Copyright (C) 2011-2012 Luka Perkov <freecwmp@lukaperkov.net>
+# Copyright (C) 2012-2013 Ahmed ZRIBI <ahmed.zribi@pivasoftware.com>
. /lib/functions.sh
. /usr/share/libubox/jshn.sh
@@ -68,10 +69,10 @@ case "$1" in
elif [ "$2" = "value" ]; then
__arg1="$3"
action="get_value"
- elif [ "$2" = "name" ]; then
- __arg1="$3"
- __arg2=`echo $4| tr '[A-Z]' '[a-z]'`
- action="get_name"
+ elif [ "$2" = "name" ]; then
+ __arg1="$3"
+ __arg2=`echo $4| tr '[A-Z]' '[a-z]'`
+ action="get_name"
elif [ "$2" = "all" ]; then
__arg1="$3"
action="get_all"
@@ -111,7 +112,7 @@ handle_scripts() {
config_get prefix "$section" "prefix"
config_list_foreach "$section" 'location' load_script
config_get get_value_functions "$section" "get_value_function"
- config_get get_name_functions "$section" "get_name_function"
+ config_get get_name_functions "$section" "get_name_function"
config_get set_value_functions "$section" "set_value_function"
}
@@ -142,16 +143,57 @@ FAULT_CPE_DOWNLOAD_FAIL_FILE_CORRUPTED="18"
FAULT_CPE_DOWNLOAD_FAIL_FILE_AUTHENTICATION="19"
if [ "$action" = "get_value" -o "$action" = "get_all" ]; then
- no_fault="0"
- freecwmp_check_fault "$__arg1"
- fault_code="$?"
- if [ "$fault_code" = "0" ]; then
- if [ \( "$__arg1" = "InternetGatewayDevice." \) -o \( "$__arg1" = ""
\) ]; then
- __arg1="InternetGatewayDevice."
+ no_fault="0"
+ freecwmp_check_fault "$__arg1"
+ fault_code="$?"
+ if [ "$fault_code" = "0" ]; then
+ if [ \( "$__arg1" = "InternetGatewayDevice." \) -o \( "$__arg1"
= "" \) ]; then
+ __arg1="InternetGatewayDevice."
+ fi
+ for function_name in $get_value_functions
+ do
+ $function_name "$__arg1"
+ fault_code="$?"
+ if [ "$fault_code" = "0" ]; then
+ no_fault="1"
+ fi
+ if [ "$fault_code" = "$FAULT_CPE_INVALID_ARGUMENTS" ];
then
+ break
+ fi
+ done
+ if [ "$no_fault" = "1" ]; then fault_code="0"; fi
fi
- for function_name in $get_value_functions
- do
- $function_name "$__arg1"
+ if [ "$fault_code" != "0" ]; then
+ let fault_code=$fault_code+9000
+ ubus_freecwmp_output "$__arg1" "" "" "$fault_code"
+ fi
+fi
+
+if [ "$action" = "get_name" -o "$action" = "get_all" ]; then
+ no_fault="0"
+ freecwmp_check_fault "$__arg1"
+ fault_code="$?"
+ if [ "$fault_code" = "0" ]; then
+ if [ \( "$__arg2" != "0" \) -a \( "$__arg2" != "1" \) -a \(
"$__arg2" != "true" \) -a \( "$__arg2" != "false" \) ]; then
+ fault_code="$FAULT_CPE_INVALID_ARGUMENTS"
+ else
+ if [ "$__arg2" = "true" ]; then
+ __arg2="1"
+ elif [ "$__arg2" = "false" ]; then
+ __arg2="0"
+ fi
+ fi
+ if [ "$fault_code" = "0" ]; then
+ if [ \( "$__arg1" = "InternetGatewayDevice." \) -o \(
"$__arg1" = "" \) ]; then
+ ubus_freecwmp_output "InternetGatewayDevice."
"0"
+ if [ \( "$__arg1" = "" \) -a \( "$__arg2" = "1"
\) ]; then
+ exit 0
+ fi
+ __arg1="InternetGatewayDevice."
+ fi
+ for function_name in $get_name_functions
+ do
+ $function_name "$__arg1" "$__arg2"
fault_code="$?"
if [ "$fault_code" = "0" ]; then
no_fault="1"
@@ -159,55 +201,14 @@ if [ "$action" = "get_value" -o "$action" = "get_all" ];
then
if [ "$fault_code" =
"$FAULT_CPE_INVALID_ARGUMENTS" ]; then
break
fi
- done
- if [ "$no_fault" = "1" ]; then fault_code="0"; fi
- fi
- if [ "$fault_code" != "0" ]; then
- let fault_code=$fault_code+9000
- ubus_freecwmp_output "$__arg1" "" "" "$fault_code"
- fi
-fi
-
-if [ "$action" = "get_name" -o "$action" = "get_all" ]; then
- no_fault="0"
- freecwmp_check_fault "$__arg1"
- fault_code="$?"
- if [ "$fault_code" = "0" ]; then
- if [ \( "$__arg2" != "0" \) -a \( "$__arg2" != "1" \) -a \( "$__arg2"
!= "true" \) -a \( "$__arg2" != "false" \) ]; then
- fault_code="$FAULT_CPE_INVALID_ARGUMENTS"
- else
- if [ "$__arg2" = "true" ]; then
- __arg2="1"
- elif [ "$__arg2" = "false" ]; then
- __arg2="0"
- fi
- fi
- if [ "$fault_code" = "0" ]; then
- if [ \( "$__arg1" = "InternetGatewayDevice." \) -o \( "$__arg1" =
"" \) ]; then
- ubus_freecwmp_output "InternetGatewayDevice." "0"
- if [ \( "$__arg1" = "" \) -a \( "$__arg2" = "1" \) ]; then
- exit 0
- fi
- __arg1="InternetGatewayDevice."
- fi
- for function_name in $get_name_functions
- do
- $function_name "$__arg1" "$__arg2"
- fault_code="$?"
- if [ "$fault_code" = "0" ]; then
- no_fault="1"
- fi
- if [ "$fault_code" = "$FAULT_CPE_INVALID_ARGUMENTS" ]; then
- break
- fi
- done
- if [ "$no_fault" = "1" ]; then fault_code="0"; fi
- fi
- fi
- if [ "$fault_code" != "0" ]; then
- let fault_code=$fault_code+9000
- ubus_freecwmp_output "$__arg1" "" "" "$fault_code"
- fi
+ done
+ if [ "$no_fault" = "1" ]; then fault_code="0"; fi
+ fi
+ fi
+ if [ "$fault_code" != "0" ]; then
+ let fault_code=$fault_code+9000
+ ubus_freecwmp_output "$__arg1" "" "" "$fault_code"
+ fi
fi
if [ "$action" = "set_value" ]; then
diff --git a/ext/openwrt/scripts/functions/wan_device
b/ext/openwrt/scripts/functions/wan_device
index a8b6361..9c7cd14 100644
--- a/ext/openwrt/scripts/functions/wan_device
+++ b/ext/openwrt/scripts/functions/wan_device
@@ -1,20 +1,38 @@
#!/bin/sh
# Copyright (C) 2011-2012 Luka Perkov <freecwmp@lukaperkov.net>
+# Copyright (C) 2012-2013 Ahmed ZRIBI <ahmed.zribi@pivasoftware.com>
get_wan_device_mng_status() {
# TODO: Unconfigured ; Connecting ; Connected ; PendingDisconnect ;
Disconneting ; Disconnected
-local val="Connected"
-ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ConnectionStatus"
"$val" "xsd:boolean"
+local val=""
+local type="xsd:boolean"
+local
parm="InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ConnectionStatus"
+case "$action" in
+ get_value)
+ val="Connected"
+ ;;
+ get_name)
+ val="0"
+ ;;
+esac
+ubus_freecwmp_output "$parm" "$val" "$type"
}
get_wan_device_mng_interface_ip() {
-local val
+local val=""
local
parm="InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress"
-if [ -z "$default_wan_device_mng_interface_ip" ]; then
- val=`network_get_ipaddr val mng`
-else
- val=$default_wan_device_mng_interface_ip
-fi
+case "$action" in
+ get_value)
+ if [ -z "$default_wan_device_mng_interface_ip" ]; then
+ val=`network_get_ipaddr val mng`
+ else
+ val=$default_wan_device_mng_interface_ip
+ fi
+ ;;
+ get_name)
+ val="0"
+ ;;
+esac
if [ "$FLAGS_value" != "${FLAGS_TRUE}" ]; then
ubus_freecwmp_output "$parm" "$val"
else
@@ -25,11 +43,18 @@ fi
get_wan_device_mng_interface_mac() {
local val=""
local
parm="InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.MACAddress"
-if [ -z "$default_wan_device_mng_interface_mac" ]; then
- val=`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} get
network.mng.macaddr`
-else
- val=$default_wan_device_mng_interface_mac
-fi
+case "$action" in
+ get_value)
+ if [ -z "$default_wan_device_mng_interface_mac" ]; then
+ val=`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} get
network.mng.macaddr`
+ else
+ val=$default_wan_device_mng_interface_mac
+ fi
+ ;;
+ get_name)
+ val="0"
+ ;;
+esac
if [ "$FLAGS_value" != "${FLAGS_TRUE}" ]; then
ubus_freecwmp_output "$parm" "$val"
else
@@ -38,11 +63,21 @@ fi
}
get_wan_device_wan_ppp_enable() {
-local val=`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} get
network.wan.auto 2> /dev/null`
-if [ -z $val ]; then
+local val=""
+local type="xsd:boolean"
+local
parm="InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Enable"
+case "$action" in
+ get_value)
+ val=`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} get
network.wan.auto 2> /dev/null`
+ if [ -z $val ]; then
+ val="1"
+ fi
+ ;;
+ get_name)
val="1"
-fi
-ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Enable"
"$val" "xsd:boolean"
+ ;;
+esac
+ubus_freecwmp_output "$parm" "$val" "$type"
}
set_wan_device_wan_ppp_enable() {
@@ -57,8 +92,17 @@ fi
}
get_wan_device_wan_ppp_username() {
-local val=`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} get
network.wan.username 2> /dev/null`
-ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Username"
"$val"
+local val=""
+local
parm="InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Username"
+case "$action" in
+ get_value)
+ val=`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} get
network.wan.username 2> /dev/null`
+ ;;
+ get_name)
+ val="1"
+ ;;
+esac
+ubus_freecwmp_output "$parm" "$val"
}
set_wan_device_wan_ppp_username() {
@@ -67,8 +111,16 @@ set_wan_device_wan_ppp_username() {
get_wan_device_wan_ppp_password() {
local val=""
-val=`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} get network.wan.password
2> /dev/null`
-ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Password"
"$val"
+local
parm="InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Password"
+case "$action" in
+ get_value)
+ val=`/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} get
network.wan.password 2> /dev/null`
+ ;;
+ get_name)
+ val="1"
+ ;;
+esac
+ubus_freecwmp_output "$parm" "$val"
}
set_wan_device_wan_ppp_password() {
@@ -162,6 +214,135 @@ esac
return $FAULT_CPE_INVALID_PARAMETER_NAME
}
+get_wan_device_name() {
+case "$1" in
+ InternetGatewayDevice.)
+ ubus_freecwmp_output "InternetGatewayDevice.WANDevice." "1"
+ if [ "$2" = "0" ]; then
+ get_wan_device_mng_status
+ get_wan_device_mng_interface_ip
+ get_wan_device_mng_interface_mac
+ get_wan_device_wan_ppp_enable
+ get_wan_device_wan_ppp_username
+ get_wan_device_wan_ppp_password
+ fi
+ return $FAULT_CPE_NO_FAULT
+ ;;
+ InternetGatewayDevice.WANDevice.)
+ ubus_freecwmp_output "InternetGatewayDevice.WANDevice." "1"
+ ubus_freecwmp_output "InternetGatewayDevice.WANDevice.1." "1"
+ if [ "$2" = "0" ]; then
+ get_wan_device_mng_status
+ get_wan_device_mng_interface_ip
+ get_wan_device_mng_interface_mac
+ get_wan_device_wan_ppp_enable
+ get_wan_device_wan_ppp_username
+ get_wan_device_wan_ppp_password
+ fi
+ return $FAULT_CPE_NO_FAULT
+ ;;
+ InternetGatewayDevice.WANDevice.1.)
+ ubus_freecwmp_output "InternetGatewayDevice.WANDevice.1." "1"
+ ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice." "1"
+ if [ "$2" = "0" ]; then
+ get_wan_device_mng_status
+ get_wan_device_mng_interface_ip
+ get_wan_device_mng_interface_mac
+ get_wan_device_wan_ppp_enable
+ get_wan_device_wan_ppp_username
+ get_wan_device_wan_ppp_password
+ fi
+ return $FAULT_CPE_NO_FAULT
+ ;;
+ InternetGatewayDevice.WANDevice.1.WANConnectionDevice.)
+ ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice." "1"
+ ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1." "1"
+ if [ "$2" = "0" ]; then
+ get_wan_device_mng_status
+ get_wan_device_mng_interface_ip
+ get_wan_device_mng_interface_mac
+ get_wan_device_wan_ppp_enable
+ get_wan_device_wan_ppp_username
+ get_wan_device_wan_ppp_password
+ fi
+ return $FAULT_CPE_NO_FAULT
+ ;;
+ InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.)
+ ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1." "1"
+ ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection." "1"
+ if [ "$2" = "0" ]; then
+ get_wan_device_mng_status
+ get_wan_device_mng_interface_ip
+ get_wan_device_mng_interface_mac
+ get_wan_device_wan_ppp_enable
+ get_wan_device_wan_ppp_username
+ get_wan_device_wan_ppp_password
+ fi
+ return $FAULT_CPE_NO_FAULT
+ ;;
+
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.)
+ ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection." "1"
+ ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1." "1"
+ if [ "$2" = "0" ]; then
+ get_wan_device_mng_status
+ get_wan_device_mng_interface_ip
+ get_wan_device_mng_interface_mac
+ fi
+ return $FAULT_CPE_NO_FAULT
+ ;;
+
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.)
+ ubus_freecwmp_output
"InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1." "1"
+ get_wan_device_mng_status
+ get_wan_device_mng_interface_ip
+ get_wan_device_mng_interface_mac
+ return $FAULT_CPE_NO_FAULT
+ ;;
+
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ConnectionStatus)
+ if [ "$2" = "1" ]; then
+ return $FAULT_CPE_INVALID_ARGUMENTS
+ fi
+ get_wan_device_mng_status
+ return $FAULT_CPE_NO_FAULT
+ ;;
+
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress)
+ if [ "$2" = "1" ]; then
+ return $FAULT_CPE_INVALID_ARGUMENTS
+ fi
+ get_wan_device_mng_interface_ip
+ return $FAULT_CPE_NO_FAULT
+ ;;
+
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.MACAddress)
+ if [ "$2" = "1" ]; then
+ return $FAULT_CPE_INVALID_ARGUMENTS
+ fi
+ get_wan_device_mng_interface_mac
+ return $FAULT_CPE_NO_FAULT
+ ;;
+
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Enable)
+ if [ "$2" = "1" ]; then
+ return $FAULT_CPE_INVALID_ARGUMENTS
+ fi
+ get_wan_device_wan_ppp_enable
+ return $FAULT_CPE_NO_FAULT
+ ;;
+
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Username)
+ if [ "$2" = "1" ]; then
+ return $FAULT_CPE_INVALID_ARGUMENTS
+ fi
+ get_wan_device_wan_ppp_username
+ return $FAULT_CPE_NO_FAULT
+ ;;
+
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Password)
+ if [ "$2" = "1" ]; then
+ return $FAULT_CPE_INVALID_ARGUMENTS
+ fi
+ get_wan_device_wan_ppp_password
+ return $FAULT_CPE_NO_FAULT
+ ;;
+esac
+return $FAULT_CPE_INVALID_PARAMETER_NAME
+}
+
set_wan_device() {
case "$1" in
InternetGatewayDevice.WANDevice.1.WANConnectionDevice.2.WANPPPConnection.1.Enable)
diff --git a/src/freecwmp.c b/src/freecwmp.c
index f4c9cb1..eb2783c 100644
--- a/src/freecwmp.c
+++ b/src/freecwmp.c
@@ -197,7 +197,7 @@ netlink_init(void)
void signal_kill_all_handler(int sig)
{
- pthread_exit(NULL);
+ pthread_exit(NULL);
}
--
1.7.4.1
|