|
|
@@ -0,0 +1,302 @@
|
|
|
+#!/bin/ash
|
|
|
+
|
|
|
+CFG=/etc/board.json
|
|
|
+
|
|
|
+. /usr/share/libubox/jshn.sh
|
|
|
+
|
|
|
+json_select_array() {
|
|
|
+ local _json_no_warning=1
|
|
|
+
|
|
|
+ json_select "$1"
|
|
|
+ [ $? = 0 ] && return
|
|
|
+
|
|
|
+ json_add_array $1
|
|
|
+ json_close_array
|
|
|
+
|
|
|
+ json_select "$1"
|
|
|
+}
|
|
|
+
|
|
|
+json_select_object() {
|
|
|
+ local _json_no_warning=1
|
|
|
+
|
|
|
+ json_select "$1"
|
|
|
+ [ $? = 0 ] && return
|
|
|
+
|
|
|
+ json_add_object $1
|
|
|
+ json_close_object
|
|
|
+
|
|
|
+ json_select "$1"
|
|
|
+}
|
|
|
+
|
|
|
+_ucidef_set_interface() {
|
|
|
+ local name=$1
|
|
|
+ local iface=$2
|
|
|
+
|
|
|
+ json_select_object $name
|
|
|
+ json_add_string ifname "${iface%%.*}"
|
|
|
+ [ "$iface" == "${iface%%.*}" ] || json_add_boolean create_vlan 1
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_interface_loopback()
|
|
|
+{
|
|
|
+ # stub
|
|
|
+ local a=$1
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_interface_lan() {
|
|
|
+ local lan_if=$1
|
|
|
+
|
|
|
+ json_select_object network
|
|
|
+ _ucidef_set_interface lan $lan_if
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_interfaces_lan_wan() {
|
|
|
+ local lan_if=$1
|
|
|
+ local wan_if=$2
|
|
|
+
|
|
|
+ json_select_object network
|
|
|
+ _ucidef_set_interface lan $lan_if
|
|
|
+ _ucidef_set_interface wan $wan_if
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_add_switch() {
|
|
|
+ local name=$1
|
|
|
+ local reset=$2
|
|
|
+ local enable=$3
|
|
|
+
|
|
|
+ json_select_object switch
|
|
|
+
|
|
|
+ json_select_object $name
|
|
|
+ [ "$enable" -eq 1 ] && json_add_boolean enable 1
|
|
|
+ [ "$reset" -eq 1 ] && json_add_boolean reset 1
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_add_switch_attr() {
|
|
|
+ local name=$1
|
|
|
+ local key=$2
|
|
|
+ local val=$3
|
|
|
+
|
|
|
+ json_select_object switch
|
|
|
+
|
|
|
+ json_select_object $name
|
|
|
+ json_add_string $key $val
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_add_switch_vlan() {
|
|
|
+ local name=$1
|
|
|
+ local vlan=$2
|
|
|
+ local ports=$3
|
|
|
+ local cpu_port=''
|
|
|
+
|
|
|
+ case $vlan in
|
|
|
+ 1) vlan=lan;;
|
|
|
+ 2) vlan=wan;;
|
|
|
+ *) vlan=vlan$vlan;;
|
|
|
+ esac
|
|
|
+
|
|
|
+ json_select_object switch
|
|
|
+ json_select_object $name
|
|
|
+ json_select_object vlans
|
|
|
+
|
|
|
+ json_add_array $vlan
|
|
|
+ for p in $ports; do
|
|
|
+ if [ ${p%t} != $p ]; then
|
|
|
+ cpu_port=$p
|
|
|
+ else
|
|
|
+ json_add_int "" $p
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ json_close_array
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+ [ -n "$cpu_port" ] && json_add_int cpu_port $cpu_port
|
|
|
+ json_select ..
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_interface_macaddr() {
|
|
|
+ local network=$1
|
|
|
+ local macaddr=$2
|
|
|
+
|
|
|
+ json_select_object network
|
|
|
+
|
|
|
+ json_select $network
|
|
|
+ [ $? -eq 0 ] || {
|
|
|
+ json_select ..
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ json_add_string macaddr $macaddr
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_led_netdev() {
|
|
|
+ local cfg="led_$1"
|
|
|
+ local name=$2
|
|
|
+ local sysfs=$3
|
|
|
+ local dev=$4
|
|
|
+
|
|
|
+ json_select_object led
|
|
|
+
|
|
|
+ json_select_object $1
|
|
|
+ json_add_string name $name
|
|
|
+ json_add_string type netdev
|
|
|
+ json_add_string sysfs $sysfs
|
|
|
+ json_add_string device $dev
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_led_interface() {
|
|
|
+ local name=$1
|
|
|
+ local sysfs=$2
|
|
|
+
|
|
|
+ json_select_object led
|
|
|
+
|
|
|
+ json_select_object $1
|
|
|
+ json_add_string name $name
|
|
|
+ json_add_string type interface
|
|
|
+ json_add_string sysfs $sysfs
|
|
|
+ json_add_string interface $name
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_led_usbdev() {
|
|
|
+ local cfg="led_$1"
|
|
|
+ local name=$2
|
|
|
+ local sysfs=$3
|
|
|
+ local dev=$4
|
|
|
+
|
|
|
+ json_select_object led
|
|
|
+
|
|
|
+ json_select_object $1
|
|
|
+ json_add_string name $name
|
|
|
+ json_add_string type usb
|
|
|
+ json_add_string sysfs $sysfs
|
|
|
+ json_add_string device $dev
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_led_wlan() {
|
|
|
+ local cfg="led_$1"
|
|
|
+ local name=$2
|
|
|
+ local sysfs=$3
|
|
|
+ local trigger=$4
|
|
|
+
|
|
|
+ json_select_object led
|
|
|
+
|
|
|
+ json_select_object $1
|
|
|
+ json_add_string name $name
|
|
|
+ json_add_string type trigger
|
|
|
+ json_add_string sysfs $sysfs
|
|
|
+ json_add_string trigger $trigger
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_led_switch() {
|
|
|
+ local cfg="led_$1"
|
|
|
+ local name=$2
|
|
|
+ local sysfs=$3
|
|
|
+ local trigger=$4
|
|
|
+ local port_mask=$5
|
|
|
+
|
|
|
+ json_select_object led
|
|
|
+
|
|
|
+ json_select_object $1
|
|
|
+ json_add_string name $name
|
|
|
+ json_add_string type switch
|
|
|
+ json_add_string sysfs $sysfs
|
|
|
+ json_add_string trigger $trigger
|
|
|
+ json_add_string port_mask $port_mask
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_led_default() {
|
|
|
+ local cfg="led_$1"
|
|
|
+ local name=$2
|
|
|
+ local sysfs=$3
|
|
|
+ local default=$4
|
|
|
+
|
|
|
+ json_select_object led
|
|
|
+
|
|
|
+ json_select_object $1
|
|
|
+ json_add_string name $name
|
|
|
+ json_add_string sysfs $sysfs
|
|
|
+ json_add_string default $default
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_led_rssi() {
|
|
|
+ local cfg="led_$1"
|
|
|
+ local name=$2
|
|
|
+ local sysfs=$3
|
|
|
+ local iface=$4
|
|
|
+ local minq=$5
|
|
|
+ local maxq=$6
|
|
|
+ local offset=$7
|
|
|
+ local factor=$8
|
|
|
+
|
|
|
+ json_select_object led
|
|
|
+
|
|
|
+ json_select_object rssi
|
|
|
+ json_select_object $1
|
|
|
+ json_add_string name $name
|
|
|
+ json_add_string sysfs $sysfs
|
|
|
+ json_add_string minq $minq
|
|
|
+ json_add_string maxq $maxq
|
|
|
+ json_add_string offset $offset
|
|
|
+ json_add_string factor $factor
|
|
|
+ json_select ..
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+}
|
|
|
+
|
|
|
+ucidef_set_rssimon() {
|
|
|
+ local dev="$1"
|
|
|
+ local refresh="$2"
|
|
|
+ local threshold="$3"
|
|
|
+
|
|
|
+ json_select_object led
|
|
|
+
|
|
|
+ json_select_object rssi
|
|
|
+ json_add_string type rssi
|
|
|
+ json_add_string dev $dev
|
|
|
+ json_add_string threshold $threshold
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+ json_select ..
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+board_config_update() {
|
|
|
+ json_init
|
|
|
+ [ -f ${CFG} ] && json_load "$(cat ${CFG})"
|
|
|
+}
|
|
|
+
|
|
|
+board_config_flush() {
|
|
|
+ json_dump -i > /tmp/.board.json
|
|
|
+ mv /tmp/.board.json ${CFG}
|
|
|
+}
|