mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 15:02:32 +00:00
212feb9ccf
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org> SVN-Revision: 47643
356 lines
5.7 KiB
Bash
Executable File
356 lines
5.7 KiB
Bash
Executable File
#!/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_interface_wan() {
|
|
local wan_if=$1
|
|
|
|
json_select_object network
|
|
_ucidef_set_interface wan $wan_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
|
|
json_add_boolean enable $enable
|
|
json_add_boolean reset $reset
|
|
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
|
|
|
|
case "$val" in
|
|
[0-9]) json_add_int "$key" "$val" ;;
|
|
*) json_add_string "$key" "$val" ;;
|
|
esac
|
|
|
|
json_select ..
|
|
json_select ..
|
|
}
|
|
|
|
ucidef_add_switch_ports() {
|
|
local name="$1"; shift
|
|
local port num role dev idx
|
|
|
|
json_select_object switch
|
|
json_select_object "$name"
|
|
json_select_array ports
|
|
|
|
for port in "$@"; do
|
|
case "$port" in
|
|
[0-9]*@*)
|
|
num="${port%%@*}"
|
|
dev="${port##*@}"
|
|
;;
|
|
[0-9]*:*:[0-9]*)
|
|
num="${port%%:*}"
|
|
idx="${port##*:}"
|
|
role="${port#[0-9]*:}"; role="${role%:*}"
|
|
;;
|
|
[0-9]*:*)
|
|
num="${port%%:*}"
|
|
role="${port##*:}"
|
|
;;
|
|
esac
|
|
|
|
if [ -n "$num" ] && [ -n "$dev$role" ]; then
|
|
json_add_object
|
|
json_add_int num "$num"
|
|
[ -n "$dev" ] && json_add_string device "$dev"
|
|
[ -n "$role" ] && json_add_string role "$role"
|
|
[ -n "$idx" ] && json_add_int index "$idx"
|
|
json_close_object
|
|
fi
|
|
|
|
unset num dev role idx
|
|
done
|
|
|
|
json_select ..
|
|
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}
|
|
}
|