6 .
/usr
/share
/libubox
/jshn.sh
9 local _json_no_warning
=1
20 json_select_object
() {
21 local _json_no_warning
=1
32 _ucidef_set_interface
() {
36 json_select_object
"$name"
37 json_add_string ifname
"$iface"
41 ucidef_set_board_id
() {
42 json_select_object model
43 json_add_string id
"$1"
47 ucidef_set_model_name
() {
48 json_select_object model
49 json_add_string name
"$1"
53 ucidef_set_interface_loopback
()
59 ucidef_set_interface_lan
() {
62 json_select_object network
63 _ucidef_set_interface lan
"$lan_if"
67 ucidef_set_interface_wan
() {
70 json_select_object network
71 _ucidef_set_interface wan
"$wan_if"
75 ucidef_set_interfaces_lan_wan
() {
79 json_select_object network
80 _ucidef_set_interface lan
"$lan_if"
81 _ucidef_set_interface wan
"$wan_if"
88 json_select_object switch
89 json_select_object
"$name"
90 json_add_boolean
enable 1
91 json_add_boolean
reset 1
96 ucidef_add_switch_attr
() {
101 json_select_object switch
102 json_select_object
"$name"
105 true|false
) [ "$val" != "true" ]; json_add_boolean
"$key" $?
;;
106 [0-9]) json_add_int
"$key" "$val" ;;
107 *) json_add_string
"$key" "$val" ;;
114 _ucidef_add_switch_port
() {
115 # inherited: $num $device $need_tag $role $index $prev_role
116 # inherited: $n_cpu $n_ports $n_vlan $cpu0 $cpu1 $cpu2 $cpu3 $cpu4 $cpu5
118 n_ports
=$
((n_ports
+ 1))
120 json_select_array ports
122 json_add_int num
"$num"
123 [ -n "$device" ] && json_add_string device
"$device"
124 [ -n "$need_tag" ] && json_add_boolean need_tag
"$need_tag"
125 [ -n "$role" ] && json_add_string role
"$role"
126 [ -n "$index" ] && json_add_int index
"$index"
130 # record pointer to cpu entry for lookup in _ucidef_finish_switch_roles()
131 [ -n "$device" ] && {
132 export "cpu$n_cpu=$n_ports"
136 # create/append object to role list
138 json_select_array roles
140 if [ "$role" != "$prev_role" ]; then
142 json_add_string role
"$role"
143 json_add_string ports
"$num"
147 n_vlan
=$
((n_vlan
+ 1))
149 json_select_object
"$n_vlan"
150 json_get_var port ports
151 json_add_string ports
"$port $num"
159 _ucidef_finish_switch_roles
() {
160 # inherited: $name $n_cpu $n_vlan $cpu0 $cpu1 $cpu2 $cpu3 $cpu4 $cpu5
161 local index role roles num device need_tag port ports
165 json_get_keys roles roles
169 for index
in $roles; do
170 eval "port=\$cpu$(((index - 1) % n_cpu))"
176 json_get_vars num device need_tag
180 if [ $n_vlan -gt $n_cpu -o ${need_tag:-0} -eq 1 ]; then
182 device
="${device}.${index}"
187 json_get_vars role ports
188 json_add_string ports
"$ports $num"
189 json_add_string device
"$device"
195 json_select_object network
196 json_select_object
"$role"
197 # attach previous interfaces (for multi-switch devices)
198 local prev_device
; json_get_var prev_device ifname
199 if ! list_contains prev_device
"$device"; then
200 device
="${prev_device:+$prev_device }$device"
202 json_add_string ifname
"$device"
208 ucidef_add_switch_ports
() {
209 local name
="$1"; shift
210 local port num role device index need_tag prev_role
211 local cpu0 cpu1 cpu2 cpu3 cpu4 cpu5
212 local n_cpu
=0 n_vlan
=0 n_ports
=0
214 json_select_object switch
215 json_select_object
"$name"
223 [ "${num%t}" != "$num" ] && {
231 role
="${port#[0-9]*:}"; role
="${role%:*}"
239 if [ -n "$num" ] && [ -n "$device$role" ]; then
240 _ucidef_add_switch_port
243 unset num device role index need_tag
249 _ucidef_finish_switch_roles
252 ucidef_add_switch_port_attr
() {
259 json_select_object switch
260 json_select_object
"$name"
262 json_get_keys ports ports
263 json_select_array ports
269 if [ -n "$num" ] && [ $num -eq $port ]; then
270 json_select_object attr
273 true|false
) [ "$val" != "true" ]; json_add_boolean
"$key" $?
;;
274 [0-9]) json_add_int
"$key" "$val" ;;
275 *) json_add_string
"$key" "$val" ;;
289 ucidef_set_interface_macaddr
() {
293 json_select_object network
295 json_select
"$network"
301 json_add_string macaddr
"$macaddr"
307 ucidef_set_led_netdev
() {
313 json_select_object led
315 json_select_object
"$1"
316 json_add_string name
"$name"
317 json_add_string
type netdev
318 json_add_string sysfs
"$sysfs"
319 json_add_string device
"$dev"
325 ucidef_set_led_usbdev
() {
331 json_select_object led
333 json_select_object
"$1"
334 json_add_string name
"$name"
335 json_add_string
type usb
336 json_add_string sysfs
"$sysfs"
337 json_add_string device
"$dev"
343 ucidef_set_led_wlan
() {
349 json_select_object led
351 json_select_object
"$1"
352 json_add_string name
"$name"
353 json_add_string
type trigger
354 json_add_string sysfs
"$sysfs"
355 json_add_string trigger
"$trigger"
361 ucidef_set_led_switch
() {
368 json_select_object led
370 json_select_object
"$1"
371 json_add_string name
"$name"
372 json_add_string
type switch
373 json_add_string sysfs
"$sysfs"
374 json_add_string trigger
"$trigger"
375 json_add_string port_mask
"$port_mask"
381 ucidef_set_led_default
() {
387 json_select_object led
389 json_select_object
"$1"
390 json_add_string name
"$name"
391 json_add_string sysfs
"$sysfs"
392 json_add_string default
"$default"
398 ucidef_set_led_gpio
() {
405 json_select_object led
407 json_select_object
"$1"
408 json_add_string
type gpio
409 json_add_string name
"$name"
410 json_add_string sysfs
"$sysfs"
411 json_add_string trigger
"$trigger"
412 json_add_int gpio
"$gpio"
413 json_add_boolean inverted
"$inverted"
419 ucidef_set_led_rssi
() {
429 json_select_object led
431 json_select_object
"$1"
432 json_add_string
type rssi
433 json_add_string name
"$name"
434 json_add_string iface
"$iface"
435 json_add_string sysfs
"$sysfs"
436 json_add_string minq
"$minq"
437 json_add_string maxq
"$maxq"
438 json_add_string offset
"$offset"
439 json_add_string
factor "$factor"
445 ucidef_set_rssimon
() {
450 json_select_object rssimon
452 json_select_object
"$dev"
453 [ -n "$refresh" ] && json_add_int refresh
"$refresh"
454 [ -n "$threshold" ] && json_add_int threshold
"$threshold"
461 board_config_update
() {
463 [ -f ${CFG} ] && json_load
"$(cat ${CFG})"
466 board_config_flush
() {
467 json_dump
-i > /tmp
/.board.json
468 mv /tmp
/.board.json
${CFG}