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
94 json_select_object $name
97 [0-9]) json_add_int "$key" "$val" ;;
98 *) json_add_string "$key" "$val" ;;
105 ucidef_add_switch_ports() {
106 local name="$1"; shift
107 local port num role dev idx
109 json_select_object switch
110 json_select_object "$name"
111 json_select_array ports
122 role="${port#[0-9]*:}"; role="${role%:*}"
130 if [ -n "$num" ] && [ -n "$dev$role" ]; then
132 json_add_int num "$num"
133 [ -n "$dev" ] && json_add_string device "$dev"
134 [ -n "$role" ] && json_add_string role "$role"
135 [ -n "$idx" ] && json_add_int index "$idx"
139 unset num dev role idx
147 ucidef_add_switch_vlan() {
159 json_select_object switch
160 json_select_object $name
161 json_select_object vlans
165 if [ ${p%t} != $p ]; then
174 [ -n "$cpu_port" ] && json_add_int cpu_port $cpu_port
179 ucidef_set_interface_macaddr() {
183 json_select_object network
191 json_add_string macaddr $macaddr
197 ucidef_set_led_netdev() {
203 json_select_object led
205 json_select_object $1
206 json_add_string name $name
207 json_add_string type netdev
208 json_add_string sysfs $sysfs
209 json_add_string device $dev
215 ucidef_set_led_interface() {
219 json_select_object led
221 json_select_object $1
222 json_add_string name $name
223 json_add_string type interface
224 json_add_string sysfs $sysfs
225 json_add_string interface $name
231 ucidef_set_led_usbdev() {
237 json_select_object led
239 json_select_object $1
240 json_add_string name $name
241 json_add_string type usb
242 json_add_string sysfs $sysfs
243 json_add_string device $dev
249 ucidef_set_led_wlan() {
255 json_select_object led
257 json_select_object $1
258 json_add_string name $name
259 json_add_string type trigger
260 json_add_string sysfs $sysfs
261 json_add_string trigger $trigger
267 ucidef_set_led_switch() {
274 json_select_object led
276 json_select_object $1
277 json_add_string name $name
278 json_add_string type switch
279 json_add_string sysfs $sysfs
280 json_add_string trigger $trigger
281 json_add_string port_mask $port_mask
287 ucidef_set_led_default() {
293 json_select_object led
295 json_select_object $1
296 json_add_string name $name
297 json_add_string sysfs $sysfs
298 json_add_string default $default
304 ucidef_set_led_rssi() {
314 json_select_object led
316 json_select_object rssi
317 json_select_object $1
318 json_add_string name $name
319 json_add_string sysfs $sysfs
320 json_add_string minq $minq
321 json_add_string maxq $maxq
322 json_add_string offset $offset
323 json_add_string factor $factor
330 ucidef_set_rssimon() {
335 json_select_object led
337 json_select_object rssi
338 json_add_string type rssi
339 json_add_string dev $dev
340 json_add_string threshold $threshold
347 board_config_update() {
349 [ -f ${CFG} ] && json_load "$(cat ${CFG})"
352 board_config_flush() {
353 json_dump -i > /tmp/.board.json
354 mv /tmp/.board.json ${CFG}