You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openwrt/package/base-files/files/lib/functions/uci-defaults-new.sh

303 lines
4.7 KiB
Bash

#!/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}
}