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_port_attr() {
154 json_select_object switch
155 json_select_object "$name"
157 json_get_keys ports ports
158 json_select_array ports
164 if [ -n "$num" ] && [ $num -eq $port ]; then
165 json_select_object attr
168 [0-9]) json_add_int "$key" "$val" ;;
169 *) json_add_string "$key" "$val" ;;
183 ucidef_add_switch_vlan() {
195 json_select_object switch
196 json_select_object "$name"
197 json_select_object vlans
199 json_add_array "$vlan"
201 if [ ${p%t} != $p ]; then
210 [ -n "$cpu_port" ] && json_add_int cpu_port "$cpu_port"
215 ucidef_set_interface_macaddr() {
219 json_select_object network
221 json_select "$network"
227 json_add_string macaddr "$macaddr"
233 ucidef_set_led_netdev() {
239 json_select_object led
241 json_select_object "$1"
242 json_add_string name "$name"
243 json_add_string type netdev
244 json_add_string sysfs "$sysfs"
245 json_add_string device "$dev"
251 ucidef_set_led_interface() {
255 json_select_object led
257 json_select_object "$1"
258 json_add_string name "$name"
259 json_add_string type interface
260 json_add_string sysfs "$sysfs"
261 json_add_string interface "$name"
267 ucidef_set_led_usbdev() {
273 json_select_object led
275 json_select_object "$1"
276 json_add_string name "$name"
277 json_add_string type usb
278 json_add_string sysfs "$sysfs"
279 json_add_string device "$dev"
285 ucidef_set_led_wlan() {
291 json_select_object led
293 json_select_object "$1"
294 json_add_string name "$name"
295 json_add_string type trigger
296 json_add_string sysfs "$sysfs"
297 json_add_string trigger "$trigger"
303 ucidef_set_led_switch() {
310 json_select_object led
312 json_select_object "$1"
313 json_add_string name "$name"
314 json_add_string type switch
315 json_add_string sysfs "$sysfs"
316 json_add_string trigger "$trigger"
317 json_add_string port_mask "$port_mask"
323 ucidef_set_led_default() {
329 json_select_object led
331 json_select_object "$1"
332 json_add_string name "$name"
333 json_add_string sysfs "$sysfs"
334 json_add_string default "$default"
340 ucidef_set_led_rssi() {
350 json_select_object led
352 json_select_object "$1"
353 json_add_string type rssi
354 json_add_string name "$name"
355 json_add_string iface "$iface"
356 json_add_string sysfs "$sysfs"
357 json_add_string minq "$minq"
358 json_add_string maxq "$maxq"
359 json_add_string offset "$offset"
360 json_add_string factor "$factor"
366 ucidef_set_rssimon() {
371 json_select_object rssimon
373 json_select_object "$dev"
374 [ -n "$refresh" ] && json_add_int refresh "$refresh"
375 [ -n "$threshold" ] && json_add_int threshold "$threshold"
382 board_config_update() {
384 [ -f ${CFG} ] && json_load "$(cat ${CFG})"
387 board_config_flush() {
388 json_dump -i > /tmp/.board.json
389 mv /tmp/.board.json ${CFG}