5 . /usr/share/libubox/jshn.sh
8 local _json_no_warning=1
19 json_select_object() {
20 local _json_no_warning=1
31 _ucidef_set_interface() {
35 json_select_object $name
36 json_add_string ifname "${iface%%.*}"
37 [ "$iface" = "${iface%%.*}" ] || json_add_boolean create_vlan 1
41 ucidef_set_interface_loopback()
47 ucidef_set_interface_lan() {
50 json_select_object network
51 _ucidef_set_interface lan $lan_if
55 ucidef_set_interface_wan() {
58 json_select_object network
59 _ucidef_set_interface wan $wan_if
63 ucidef_set_interfaces_lan_wan() {
67 json_select_object network
68 _ucidef_set_interface lan $lan_if
69 _ucidef_set_interface wan $wan_if
78 json_select_object switch
80 json_select_object $name
81 json_add_boolean enable $enable
82 json_add_boolean reset $reset
88 ucidef_add_switch_attr() {
93 json_select_object switch
95 json_select_object $name
96 json_add_string $key $val
102 ucidef_add_switch_ports() {
103 local name="$1"; shift
104 local port num role dev idx
106 json_select_object switch
107 json_select_object "$name"
108 json_select_array ports
119 role="${port#[0-9]*:}"; role="${role%:*}"
127 if [ -n "$num" ] && [ -n "$dev$role" ]; then
129 json_add_int num "$num"
130 [ -n "$dev" ] && json_add_string device "$dev"
131 [ -n "$role" ] && json_add_string role "$role"
132 [ -n "$idx" ] && json_add_int index "$idx"
136 unset num dev role idx
144 ucidef_add_switch_vlan() {
156 json_select_object switch
157 json_select_object $name
158 json_select_object vlans
162 if [ ${p%t} != $p ]; then
171 [ -n "$cpu_port" ] && json_add_int cpu_port $cpu_port
176 ucidef_set_interface_macaddr() {
180 json_select_object network
188 json_add_string macaddr $macaddr
194 ucidef_set_led_netdev() {
200 json_select_object led
202 json_select_object $1
203 json_add_string name $name
204 json_add_string type netdev
205 json_add_string sysfs $sysfs
206 json_add_string device $dev
212 ucidef_set_led_interface() {
216 json_select_object led
218 json_select_object $1
219 json_add_string name $name
220 json_add_string type interface
221 json_add_string sysfs $sysfs
222 json_add_string interface $name
228 ucidef_set_led_usbdev() {
234 json_select_object led
236 json_select_object $1
237 json_add_string name $name
238 json_add_string type usb
239 json_add_string sysfs $sysfs
240 json_add_string device $dev
246 ucidef_set_led_wlan() {
252 json_select_object led
254 json_select_object $1
255 json_add_string name $name
256 json_add_string type trigger
257 json_add_string sysfs $sysfs
258 json_add_string trigger $trigger
264 ucidef_set_led_switch() {
271 json_select_object led
273 json_select_object $1
274 json_add_string name $name
275 json_add_string type switch
276 json_add_string sysfs $sysfs
277 json_add_string trigger $trigger
278 json_add_string port_mask $port_mask
284 ucidef_set_led_default() {
290 json_select_object led
292 json_select_object $1
293 json_add_string name $name
294 json_add_string sysfs $sysfs
295 json_add_string default $default
301 ucidef_set_led_rssi() {
311 json_select_object led
313 json_select_object rssi
314 json_select_object $1
315 json_add_string name $name
316 json_add_string sysfs $sysfs
317 json_add_string minq $minq
318 json_add_string maxq $maxq
319 json_add_string offset $offset
320 json_add_string factor $factor
327 ucidef_set_rssimon() {
332 json_select_object led
334 json_select_object rssi
335 json_add_string type rssi
336 json_add_string dev $dev
337 json_add_string threshold $threshold
344 board_config_update() {
346 [ -f ${CFG} ] && json_load "$(cat ${CFG})"
349 board_config_flush() {
350 json_dump -i > /tmp/.board.json
351 mv /tmp/.board.json ${CFG}