all: drop old uci-defaults.sh
Replace former uci-defaults.sh implementation with the uci-defaults-new.sh one and update all users accordingly. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org> SVN-Revision: 47867
This commit is contained in:
		| @@ -1,576 +0,0 @@ | ||||
| #!/bin/ash | ||||
|  | ||||
| CFG=/etc/board.json | ||||
|  | ||||
| . /lib/functions.sh | ||||
| . /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" | ||||
| 	local proto="$3" | ||||
|  | ||||
| 	json_select_object "$name" | ||||
| 	json_add_string ifname "$iface" | ||||
|  | ||||
| 	if ! json_is_a protocol string; then | ||||
| 		case "$proto" in | ||||
| 			static|dhcp|none|pppoe) : ;; | ||||
| 			*) | ||||
| 				case "$name" in | ||||
| 					lan) proto="static" ;; | ||||
| 					wan) proto="dhcp" ;; | ||||
| 					*) proto="none" ;; | ||||
| 				esac | ||||
| 			;; | ||||
| 		esac | ||||
|  | ||||
| 		json_add_string protocol "$proto" | ||||
| 	fi | ||||
|  | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_board_id() { | ||||
| 	json_select_object model | ||||
| 	json_add_string id "$1" | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_model_name() { | ||||
| 	json_select_object model | ||||
| 	json_add_string name "$1" | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_interface_lan() { | ||||
| 	json_select_object network | ||||
| 	_ucidef_set_interface lan "$@" | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_interface_wan() { | ||||
| 	json_select_object network | ||||
| 	_ucidef_set_interface wan "$@" | ||||
| 	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_port() { | ||||
| 	# inherited: $num $device $need_tag $role $index $prev_role | ||||
| 	# inherited: $n_cpu $n_ports $n_vlan $cpu0 $cpu1 $cpu2 $cpu3 $cpu4 $cpu5 | ||||
|  | ||||
| 	n_ports=$((n_ports + 1)) | ||||
|  | ||||
| 	json_select_array ports | ||||
| 		json_add_object | ||||
| 			json_add_int num "$num" | ||||
| 			[ -n "$device"   ] && json_add_string  device   "$device" | ||||
| 			[ -n "$need_tag" ] && json_add_boolean need_tag "$need_tag" | ||||
| 			[ -n "$role"     ] && json_add_string  role     "$role" | ||||
| 			[ -n "$index"    ] && json_add_int     index    "$index" | ||||
| 		json_close_object | ||||
| 	json_select .. | ||||
|  | ||||
| 	# record pointer to cpu entry for lookup in _ucidef_finish_switch_roles() | ||||
| 	[ -n "$device" ] && { | ||||
| 		export "cpu$n_cpu=$n_ports" | ||||
| 		n_cpu=$((n_cpu + 1)) | ||||
| 	} | ||||
|  | ||||
| 	# create/append object to role list | ||||
| 	[ -n "$role" ] && { | ||||
| 		json_select_array roles | ||||
|  | ||||
| 		if [ "$role" != "$prev_role" ]; then | ||||
| 			json_add_object | ||||
| 				json_add_string role "$role" | ||||
| 				json_add_string ports "$num" | ||||
| 			json_close_object | ||||
|  | ||||
| 			prev_role="$role" | ||||
| 			n_vlan=$((n_vlan + 1)) | ||||
| 		else | ||||
| 			json_select_object "$n_vlan" | ||||
| 				json_get_var port ports | ||||
| 				json_add_string ports "$port $num" | ||||
| 			json_select .. | ||||
| 		fi | ||||
|  | ||||
| 		json_select .. | ||||
| 	} | ||||
| } | ||||
|  | ||||
| _ucidef_finish_switch_roles() { | ||||
| 	# inherited: $name $n_cpu $n_vlan $cpu0 $cpu1 $cpu2 $cpu3 $cpu4 $cpu5 | ||||
| 	local index role roles num device need_tag port ports | ||||
|  | ||||
| 	json_select switch | ||||
| 		json_select "$name" | ||||
| 			json_get_keys roles roles | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
|  | ||||
| 	for index in $roles; do | ||||
| 		eval "port=\$cpu$(((index - 1) % n_cpu))" | ||||
|  | ||||
| 		json_select switch | ||||
| 			json_select "$name" | ||||
| 				json_select ports | ||||
| 					json_select "$port" | ||||
| 						json_get_vars num device need_tag | ||||
| 					json_select .. | ||||
| 				json_select .. | ||||
|  | ||||
| 				if [ $n_vlan -gt $n_cpu -o ${need_tag:-0} -eq 1 ]; then | ||||
| 					num="${num}t" | ||||
| 					device="${device}.${index}" | ||||
| 				fi | ||||
|  | ||||
| 				json_select roles | ||||
| 					json_select "$index" | ||||
| 						json_get_vars role ports | ||||
| 						json_add_string ports "$ports $num" | ||||
| 						json_add_string device "$device" | ||||
| 					json_select .. | ||||
| 				json_select .. | ||||
| 			json_select .. | ||||
| 		json_select .. | ||||
|  | ||||
| 		json_select_object network | ||||
| 			local devices | ||||
|  | ||||
| 			json_select_object "$role" | ||||
| 				# attach previous interfaces (for multi-switch devices) | ||||
| 				json_get_var devices ifname | ||||
| 				if ! list_contains devices "$device"; then | ||||
| 					devices="${devices:+$devices }$device" | ||||
| 				fi | ||||
| 			json_select .. | ||||
|  | ||||
| 			_ucidef_set_interface "$role" "$devices" | ||||
| 		json_select .. | ||||
| 	done | ||||
| } | ||||
|  | ||||
| ucidef_add_switch() { | ||||
| 	local name="$1"; shift | ||||
| 	local port num role device index need_tag prev_role | ||||
| 	local cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 | ||||
| 	local n_cpu=0 n_vlan=0 n_ports=0 | ||||
|  | ||||
| 	json_select_object switch | ||||
| 		json_select_object "$name" | ||||
| 			json_add_boolean enable 1 | ||||
| 			json_add_boolean reset 1 | ||||
|  | ||||
| 			for port in "$@"; do | ||||
| 				case "$port" in | ||||
| 					[0-9]*@*) | ||||
| 						num="${port%%@*}" | ||||
| 						device="${port##*@}" | ||||
| 						need_tag=0 | ||||
| 						[ "${num%t}" != "$num" ] && { | ||||
| 							num="${num%t}" | ||||
| 							need_tag=1 | ||||
| 						} | ||||
| 					;; | ||||
| 					[0-9]*:*:[0-9]*) | ||||
| 						num="${port%%:*}" | ||||
| 						index="${port##*:}" | ||||
| 						role="${port#[0-9]*:}"; role="${role%:*}" | ||||
| 					;; | ||||
| 					[0-9]*:*) | ||||
| 						num="${port%%:*}" | ||||
| 						role="${port##*:}" | ||||
| 					;; | ||||
| 				esac | ||||
|  | ||||
| 				if [ -n "$num" ] && [ -n "$device$role" ]; then | ||||
| 					_ucidef_add_switch_port | ||||
| 				fi | ||||
|  | ||||
| 				unset num device role index need_tag | ||||
| 			done | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
|  | ||||
| 	_ucidef_finish_switch_roles | ||||
| } | ||||
|  | ||||
| ucidef_add_switch_attr() { | ||||
| 	local name="$1" | ||||
| 	local key="$2" | ||||
| 	local val="$3" | ||||
|  | ||||
| 	json_select_object switch | ||||
| 		json_select_object "$name" | ||||
|  | ||||
| 		case "$val" in | ||||
| 			true|false) [ "$val" != "true" ]; json_add_boolean "$key" $? ;; | ||||
| 			[0-9]) json_add_int "$key" "$val" ;; | ||||
| 			*) json_add_string "$key" "$val" ;; | ||||
| 		esac | ||||
|  | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_add_switch_port_attr() { | ||||
| 	local name="$1" | ||||
| 	local port="$2" | ||||
| 	local key="$3" | ||||
| 	local val="$4" | ||||
| 	local ports i num | ||||
|  | ||||
| 	json_select_object switch | ||||
| 	json_select_object "$name" | ||||
|  | ||||
| 	json_get_keys ports ports | ||||
| 	json_select_array ports | ||||
|  | ||||
| 	for i in $ports; do | ||||
| 		json_select "$i" | ||||
| 		json_get_var num num | ||||
|  | ||||
| 		if [ -n "$num" ] && [ $num -eq $port ]; then | ||||
| 			json_select_object attr | ||||
|  | ||||
| 			case "$val" in | ||||
| 				true|false) [ "$val" != "true" ]; json_add_boolean "$key" $? ;; | ||||
| 				[0-9]) json_add_int "$key" "$val" ;; | ||||
| 				*) json_add_string "$key" "$val" ;; | ||||
| 			esac | ||||
|  | ||||
| 			json_select .. | ||||
| 		fi | ||||
|  | ||||
| 		json_select .. | ||||
| 	done | ||||
|  | ||||
| 	json_select .. | ||||
| 	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_add_atm_bridge() { | ||||
| 	local vpi="$1" | ||||
| 	local vci="$2" | ||||
| 	local encaps="$3" | ||||
| 	local payload="$4" | ||||
|  | ||||
| 	json_select_object dsl | ||||
| 		json_select_object atmbridge | ||||
| 			json_add_int vpi "$vpi" | ||||
| 			json_add_int vci "$vci" | ||||
| 			json_add_string encaps "$encaps" | ||||
| 			json_add_string payload "$payload" | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_add_adsl_modem() { | ||||
| 	local annex="$1" | ||||
| 	local firmware="$2" | ||||
|  | ||||
| 	json_select_object dsl | ||||
| 		json_select_object modem | ||||
| 			json_add_string type "adsl" | ||||
| 			json_add_string annex "$annex" | ||||
| 			json_add_string firmware "$firmware" | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_add_vdsl_modem() { | ||||
| 	local annex="$1" | ||||
| 	local firmware="$2" | ||||
| 	local tone="$3" | ||||
| 	local xfer_mode="$4" | ||||
|  | ||||
| 	json_select_object dsl | ||||
| 		json_select_object modem | ||||
| 			json_add_string type "vdsl" | ||||
| 			json_add_string annex "$annex" | ||||
| 			json_add_string firmware "$firmware" | ||||
| 			json_add_string tone "$tone" | ||||
| 			json_add_string xfer_mode "$xfer_mode" | ||||
| 		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_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_gpio() { | ||||
| 	local cfg="led_$1" | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
| 	local gpio="$4" | ||||
| 	local inverted="$5" | ||||
|  | ||||
| 	json_select_object led | ||||
|  | ||||
| 	json_select_object "$1" | ||||
| 	json_add_string type gpio | ||||
| 	json_add_string name "$name" | ||||
| 	json_add_string sysfs "$sysfs" | ||||
| 	json_add_string trigger "$trigger" | ||||
| 	json_add_int gpio "$gpio" | ||||
| 	json_add_boolean inverted "$inverted" | ||||
| 	json_select .. | ||||
|  | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_led_ide() { | ||||
| 	local cfg="led_$1" | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
|  | ||||
| 	json_select_object led | ||||
|  | ||||
| 	json_select_object "$1" | ||||
| 	json_add_string name "$name" | ||||
| 	json_add_string sysfs "$sysfs" | ||||
| 	json_add_string trigger ide-disk | ||||
| 	json_select .. | ||||
|  | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_led_timer() { | ||||
| 	local cfg="led_$1" | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
| 	local delayon="$4" | ||||
| 	local delayoff="$5" | ||||
|  | ||||
| 	json_select_object led | ||||
|  | ||||
| 	json_select_object "$1" | ||||
| 	json_add_string type timer | ||||
| 	json_add_string name "$name" | ||||
| 	json_add_string sysfs "$sysfs" | ||||
| 	json_add_int delayon "$delayon" | ||||
| 	json_add_int delayoff "$delayoff" | ||||
| 	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 "$1" | ||||
| 	json_add_string type rssi | ||||
| 	json_add_string name "$name" | ||||
| 	json_add_string iface "$iface" | ||||
| 	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 .. | ||||
| } | ||||
|  | ||||
| ucidef_set_rssimon() { | ||||
| 	local dev="$1" | ||||
| 	local refresh="$2" | ||||
| 	local threshold="$3" | ||||
|  | ||||
| 	json_select_object rssimon | ||||
|  | ||||
| 	json_select_object "$dev" | ||||
| 	[ -n "$refresh" ] && json_add_int refresh "$refresh" | ||||
| 	[ -n "$threshold" ] && json_add_int threshold "$threshold" | ||||
| 	json_select .. | ||||
|  | ||||
| 	json_select .. | ||||
|  | ||||
| } | ||||
|  | ||||
| ucidef_add_gpio_switch() { | ||||
| 	local cfg="$1" | ||||
| 	local name="$2" | ||||
| 	local pin="$3" | ||||
| 	local default="${4:-0}" | ||||
|  | ||||
| 	json_select_object gpioswitch | ||||
| 		json_select_object "$cfg" | ||||
| 			json_add_string name "$name" | ||||
| 			json_add_int pin "$pin" | ||||
| 			json_add_int default "$default" | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| board_config_update() { | ||||
| 	json_init | ||||
| 	[ -f ${CFG} ] && json_load "$(cat ${CFG})" | ||||
|  | ||||
| 	# auto-initialize model id and name if applicable | ||||
| 	if ! json_is_a model object; then | ||||
| 		json_select_object model | ||||
| 			[ -f "/tmp/sysinfo/board_name" ] && \ | ||||
| 				json_add_string id "$(cat /tmp/sysinfo/board_name)" | ||||
| 			[ -f "/tmp/sysinfo/model" ] && \ | ||||
| 				json_add_string name "$(cat /tmp/sysinfo/model)" | ||||
| 		json_select .. | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| board_config_flush() { | ||||
| 	json_dump -i > /tmp/.board.json | ||||
| 	mv /tmp/.board.json ${CFG} | ||||
| } | ||||
							
								
								
									
										789
									
								
								package/base-files/files/lib/functions/uci-defaults.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										789
									
								
								package/base-files/files/lib/functions/uci-defaults.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -1,197 +1,527 @@ | ||||
| #!/bin/sh | ||||
| # Copyright (C) 2011 OpenWrt.org | ||||
| #!/bin/ash | ||||
|  | ||||
| UCIDEF_LEDS_CHANGED=0 | ||||
| UCIDEF_GPIO_SWITCHES_CHANGED=0 | ||||
| CFG=/etc/board.json | ||||
|  | ||||
| . /lib/functions.sh | ||||
| . /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" | ||||
| 	local proto="$3" | ||||
|  | ||||
| 	json_select_object "$name" | ||||
| 	json_add_string ifname "$iface" | ||||
|  | ||||
| 	if ! json_is_a protocol string; then | ||||
| 		case "$proto" in | ||||
| 			static|dhcp|none|pppoe) : ;; | ||||
| 			*) | ||||
| 				case "$name" in | ||||
| 					lan) proto="static" ;; | ||||
| 					wan) proto="dhcp" ;; | ||||
| 					*) proto="none" ;; | ||||
| 				esac | ||||
| 			;; | ||||
| 		esac | ||||
|  | ||||
| 		json_add_string protocol "$proto" | ||||
| 	fi | ||||
|  | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_board_id() { | ||||
| 	json_select_object model | ||||
| 	json_add_string id "$1" | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_model_name() { | ||||
| 	json_select_object model | ||||
| 	json_add_string name "$1" | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_interface_lan() { | ||||
| 	json_select_object network | ||||
| 	_ucidef_set_interface lan "$@" | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_interface_wan() { | ||||
| 	json_select_object network | ||||
| 	_ucidef_set_interface wan "$@" | ||||
| 	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_port() { | ||||
| 	# inherited: $num $device $need_tag $role $index $prev_role | ||||
| 	# inherited: $n_cpu $n_ports $n_vlan $cpu0 $cpu1 $cpu2 $cpu3 $cpu4 $cpu5 | ||||
|  | ||||
| 	n_ports=$((n_ports + 1)) | ||||
|  | ||||
| 	json_select_array ports | ||||
| 		json_add_object | ||||
| 			json_add_int num "$num" | ||||
| 			[ -n "$device"   ] && json_add_string  device   "$device" | ||||
| 			[ -n "$need_tag" ] && json_add_boolean need_tag "$need_tag" | ||||
| 			[ -n "$role"     ] && json_add_string  role     "$role" | ||||
| 			[ -n "$index"    ] && json_add_int     index    "$index" | ||||
| 		json_close_object | ||||
| 	json_select .. | ||||
|  | ||||
| 	# record pointer to cpu entry for lookup in _ucidef_finish_switch_roles() | ||||
| 	[ -n "$device" ] && { | ||||
| 		export "cpu$n_cpu=$n_ports" | ||||
| 		n_cpu=$((n_cpu + 1)) | ||||
| 	} | ||||
|  | ||||
| 	# create/append object to role list | ||||
| 	[ -n "$role" ] && { | ||||
| 		json_select_array roles | ||||
|  | ||||
| 		if [ "$role" != "$prev_role" ]; then | ||||
| 			json_add_object | ||||
| 				json_add_string role "$role" | ||||
| 				json_add_string ports "$num" | ||||
| 			json_close_object | ||||
|  | ||||
| 			prev_role="$role" | ||||
| 			n_vlan=$((n_vlan + 1)) | ||||
| 		else | ||||
| 			json_select_object "$n_vlan" | ||||
| 				json_get_var port ports | ||||
| 				json_add_string ports "$port $num" | ||||
| 			json_select .. | ||||
| 		fi | ||||
|  | ||||
| 		json_select .. | ||||
| 	} | ||||
| } | ||||
|  | ||||
| _ucidef_finish_switch_roles() { | ||||
| 	# inherited: $name $n_cpu $n_vlan $cpu0 $cpu1 $cpu2 $cpu3 $cpu4 $cpu5 | ||||
| 	local index role roles num device need_tag port ports | ||||
|  | ||||
| 	json_select switch | ||||
| 		json_select "$name" | ||||
| 			json_get_keys roles roles | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
|  | ||||
| 	for index in $roles; do | ||||
| 		eval "port=\$cpu$(((index - 1) % n_cpu))" | ||||
|  | ||||
| 		json_select switch | ||||
| 			json_select "$name" | ||||
| 				json_select ports | ||||
| 					json_select "$port" | ||||
| 						json_get_vars num device need_tag | ||||
| 					json_select .. | ||||
| 				json_select .. | ||||
|  | ||||
| 				if [ $n_vlan -gt $n_cpu -o ${need_tag:-0} -eq 1 ]; then | ||||
| 					num="${num}t" | ||||
| 					device="${device}.${index}" | ||||
| 				fi | ||||
|  | ||||
| 				json_select roles | ||||
| 					json_select "$index" | ||||
| 						json_get_vars role ports | ||||
| 						json_add_string ports "$ports $num" | ||||
| 						json_add_string device "$device" | ||||
| 					json_select .. | ||||
| 				json_select .. | ||||
| 			json_select .. | ||||
| 		json_select .. | ||||
|  | ||||
| 		json_select_object network | ||||
| 			local devices | ||||
|  | ||||
| 			json_select_object "$role" | ||||
| 				# attach previous interfaces (for multi-switch devices) | ||||
| 				json_get_var devices ifname | ||||
| 				if ! list_contains devices "$device"; then | ||||
| 					devices="${devices:+$devices }$device" | ||||
| 				fi | ||||
| 			json_select .. | ||||
|  | ||||
| 			_ucidef_set_interface "$role" "$devices" | ||||
| 		json_select .. | ||||
| 	done | ||||
| } | ||||
|  | ||||
| ucidef_add_switch() { | ||||
| 	local name="$1"; shift | ||||
| 	local port num role device index need_tag prev_role | ||||
| 	local cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 | ||||
| 	local n_cpu=0 n_vlan=0 n_ports=0 | ||||
|  | ||||
| 	json_select_object switch | ||||
| 		json_select_object "$name" | ||||
| 			json_add_boolean enable 1 | ||||
| 			json_add_boolean reset 1 | ||||
|  | ||||
| 			for port in "$@"; do | ||||
| 				case "$port" in | ||||
| 					[0-9]*@*) | ||||
| 						num="${port%%@*}" | ||||
| 						device="${port##*@}" | ||||
| 						need_tag=0 | ||||
| 						[ "${num%t}" != "$num" ] && { | ||||
| 							num="${num%t}" | ||||
| 							need_tag=1 | ||||
| 						} | ||||
| 					;; | ||||
| 					[0-9]*:*:[0-9]*) | ||||
| 						num="${port%%:*}" | ||||
| 						index="${port##*:}" | ||||
| 						role="${port#[0-9]*:}"; role="${role%:*}" | ||||
| 					;; | ||||
| 					[0-9]*:*) | ||||
| 						num="${port%%:*}" | ||||
| 						role="${port##*:}" | ||||
| 					;; | ||||
| 				esac | ||||
|  | ||||
| 				if [ -n "$num" ] && [ -n "$device$role" ]; then | ||||
| 					_ucidef_add_switch_port | ||||
| 				fi | ||||
|  | ||||
| 				unset num device role index need_tag | ||||
| 			done | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
|  | ||||
| 	_ucidef_finish_switch_roles | ||||
| } | ||||
|  | ||||
| ucidef_add_switch_attr() { | ||||
| 	local name="$1" | ||||
| 	local key="$2" | ||||
| 	local val="$3" | ||||
|  | ||||
| 	json_select_object switch | ||||
| 		json_select_object "$name" | ||||
|  | ||||
| 		case "$val" in | ||||
| 			true|false) [ "$val" != "true" ]; json_add_boolean "$key" $? ;; | ||||
| 			[0-9]) json_add_int "$key" "$val" ;; | ||||
| 			*) json_add_string "$key" "$val" ;; | ||||
| 		esac | ||||
|  | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_add_switch_port_attr() { | ||||
| 	local name="$1" | ||||
| 	local port="$2" | ||||
| 	local key="$3" | ||||
| 	local val="$4" | ||||
| 	local ports i num | ||||
|  | ||||
| 	json_select_object switch | ||||
| 	json_select_object "$name" | ||||
|  | ||||
| 	json_get_keys ports ports | ||||
| 	json_select_array ports | ||||
|  | ||||
| 	for i in $ports; do | ||||
| 		json_select "$i" | ||||
| 		json_get_var num num | ||||
|  | ||||
| 		if [ -n "$num" ] && [ $num -eq $port ]; then | ||||
| 			json_select_object attr | ||||
|  | ||||
| 			case "$val" in | ||||
| 				true|false) [ "$val" != "true" ]; json_add_boolean "$key" $? ;; | ||||
| 				[0-9]) json_add_int "$key" "$val" ;; | ||||
| 				*) json_add_string "$key" "$val" ;; | ||||
| 			esac | ||||
|  | ||||
| 			json_select .. | ||||
| 		fi | ||||
|  | ||||
| 		json_select .. | ||||
| 	done | ||||
|  | ||||
| 	json_select .. | ||||
| 	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_add_atm_bridge() { | ||||
| 	local vpi="$1" | ||||
| 	local vci="$2" | ||||
| 	local encaps="$3" | ||||
| 	local payload="$4" | ||||
|  | ||||
| 	json_select_object dsl | ||||
| 		json_select_object atmbridge | ||||
| 			json_add_int vpi "$vpi" | ||||
| 			json_add_int vci "$vci" | ||||
| 			json_add_string encaps "$encaps" | ||||
| 			json_add_string payload "$payload" | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_add_adsl_modem() { | ||||
| 	local annex="$1" | ||||
| 	local firmware="$2" | ||||
|  | ||||
| 	json_select_object dsl | ||||
| 		json_select_object modem | ||||
| 			json_add_string type "adsl" | ||||
| 			json_add_string annex "$annex" | ||||
| 			json_add_string firmware "$firmware" | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_add_vdsl_modem() { | ||||
| 	local annex="$1" | ||||
| 	local firmware="$2" | ||||
| 	local tone="$3" | ||||
| 	local xfer_mode="$4" | ||||
|  | ||||
| 	json_select_object dsl | ||||
| 		json_select_object modem | ||||
| 			json_add_string type "vdsl" | ||||
| 			json_add_string annex "$annex" | ||||
| 			json_add_string firmware "$firmware" | ||||
| 			json_add_string tone "$tone" | ||||
| 			json_add_string xfer_mode "$xfer_mode" | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_led_netdev() { | ||||
| 	local cfg="led_$1" | ||||
| 	local name=$2 | ||||
| 	local sysfs=$3 | ||||
| 	local dev=$4 | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
| 	local dev="$4" | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
| 	json_select_object led | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='led' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.sysfs='$sysfs' | ||||
| set system.$cfg.trigger='netdev' | ||||
| set system.$cfg.dev='$dev' | ||||
| set system.$cfg.mode='link tx rx' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| 	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_usbdev() { | ||||
| 	local cfg="led_$1" | ||||
| 	local name=$2 | ||||
| 	local sysfs=$3 | ||||
| 	local dev=$4 | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
| 	local dev="$4" | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
| 	json_select_object led | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='led' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.sysfs='$sysfs' | ||||
| set system.$cfg.trigger='usbdev' | ||||
| set system.$cfg.dev='$dev' | ||||
| set system.$cfg.interval='50' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| 	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 | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
| 	local trigger="$4" | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
| 	json_select_object led | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='led' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.sysfs='$sysfs' | ||||
| set system.$cfg.trigger='$trigger' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| 	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 | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
| 	local trigger="$4" | ||||
| 	local port_mask="$5" | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
| 	json_select_object led | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='led' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.sysfs='$sysfs' | ||||
| set system.$cfg.trigger='$trigger' | ||||
| set system.$cfg.port_mask='$port_mask' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| 	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 | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
| 	local default="$4" | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
| 	json_select_object led | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='led' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.sysfs='$sysfs' | ||||
| set system.$cfg.default='$default' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| 	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() { | ||||
| ucidef_set_led_gpio() { | ||||
| 	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 | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
| 	local gpio="$4" | ||||
| 	local inverted="$5" | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
| 	json_select_object led | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='led' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.sysfs='$sysfs' | ||||
| set system.$cfg.trigger='rssi' | ||||
| set system.$cfg.iface='rssid_$iface' | ||||
| set system.$cfg.minq='$minq' | ||||
| set system.$cfg.maxq='$maxq' | ||||
| set system.$cfg.offset='$offset' | ||||
| set system.$cfg.factor='$factor' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| 	json_select_object "$1" | ||||
| 	json_add_string type gpio | ||||
| 	json_add_string name "$name" | ||||
| 	json_add_string sysfs "$sysfs" | ||||
| 	json_add_string trigger "$trigger" | ||||
| 	json_add_int gpio "$gpio" | ||||
| 	json_add_boolean inverted "$inverted" | ||||
| 	json_select .. | ||||
|  | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_led_ide() { | ||||
| 	local cfg="led_$1" | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
|  | ||||
| 	json_select_object led | ||||
|  | ||||
| 	json_select_object "$1" | ||||
| 	json_add_string name "$name" | ||||
| 	json_add_string sysfs "$sysfs" | ||||
| 	json_add_string trigger ide-disk | ||||
| 	json_select .. | ||||
|  | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_led_timer() { | ||||
| 	local cfg="led_$1" | ||||
| 	local name=$2 | ||||
| 	local sysfs=$3 | ||||
| 	local delayon=$4 | ||||
| 	local delayoff=$5 | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
| 	local delayon="$4" | ||||
| 	local delayoff="$5" | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
| 	json_select_object led | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='led' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.sysfs='$sysfs' | ||||
| set system.$cfg.trigger='timer' | ||||
| set system.$cfg.delayon='$delayon' | ||||
| set system.$cfg.delayoff='$delayoff' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| 	json_select_object "$1" | ||||
| 	json_add_string type timer | ||||
| 	json_add_string name "$name" | ||||
| 	json_add_string sysfs "$sysfs" | ||||
| 	json_add_int delayon "$delayon" | ||||
| 	json_add_int delayoff "$delayoff" | ||||
| 	json_select .. | ||||
|  | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_led_mmc() { | ||||
| ucidef_set_led_rssi() { | ||||
| 	local cfg="led_$1" | ||||
| 	local name=$2 | ||||
| 	local sysfs=$3 | ||||
| 	local trigger=$4 | ||||
| 	local name="$2" | ||||
| 	local sysfs="$3" | ||||
| 	local iface="$4" | ||||
| 	local minq="$5" | ||||
| 	local maxq="$6" | ||||
| 	local offset="$7" | ||||
| 	local factor="$8" | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
| 	json_select_object led | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='led' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.sysfs='$sysfs' | ||||
| set system.$cfg.trigger='$trigger' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| } | ||||
| 	json_select_object "$1" | ||||
| 	json_add_string type rssi | ||||
| 	json_add_string name "$name" | ||||
| 	json_add_string iface "$iface" | ||||
| 	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 .. | ||||
|  | ||||
| ucidef_set_led_trigger_gpio() { | ||||
| 	local cfg="led_$1" | ||||
| 	local name=$2 | ||||
| 	local sysfs=$3 | ||||
| 	local gpio=$4 | ||||
| 	local inverted=$5 | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='led' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.sysfs='$sysfs' | ||||
| set system.$cfg.trigger='gpio' | ||||
| set system.$cfg.gpio='$gpio' | ||||
| set system.$cfg.inverted='$inverted' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| } | ||||
|  | ||||
| ucidef_set_led_ide_disk() { | ||||
| 	local cfg="led_$1" | ||||
| 	local name=$2 | ||||
| 	local sysfs=$3 | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='led' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.sysfs='$sysfs' | ||||
| set system.$cfg.trigger='ide-disk' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_set_rssimon() { | ||||
| @@ -199,147 +529,48 @@ ucidef_set_rssimon() { | ||||
| 	local refresh="$2" | ||||
| 	local threshold="$3" | ||||
|  | ||||
| 	local cfg="rssid_$dev" | ||||
| 	json_select_object rssimon | ||||
|  | ||||
| 	uci -q get system.$cfg && return 0 | ||||
| 	json_select_object "$dev" | ||||
| 	[ -n "$refresh" ] && json_add_int refresh "$refresh" | ||||
| 	[ -n "$threshold" ] && json_add_int threshold "$threshold" | ||||
| 	json_select .. | ||||
|  | ||||
| 	json_select .. | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='rssid' | ||||
| set system.$cfg.dev='$dev' | ||||
| set system.$cfg.refresh='$refresh' | ||||
| set system.$cfg.threshold='$threshold' | ||||
| EOF | ||||
| 	UCIDEF_LEDS_CHANGED=1 | ||||
| } | ||||
|  | ||||
| ucidef_commit_leds() | ||||
| { | ||||
| 	[ "$UCIDEF_LEDS_CHANGED" = "1" ] && uci commit system | ||||
| } | ||||
|  | ||||
| ucidef_set_gpio_switch() { | ||||
| 	local cfg="gpio_switch_$1" | ||||
| ucidef_add_gpio_switch() { | ||||
| 	local cfg="$1" | ||||
| 	local name="$2" | ||||
| 	local gpio_pin="$3" | ||||
| 	# use "0" as default value | ||||
| 	local pin="$3" | ||||
| 	local default="${4:-0}" | ||||
|  | ||||
| 	uci -q get "system.$cfg" && return 0 | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set system.$cfg='gpio_switch' | ||||
| set system.$cfg.name='$name' | ||||
| set system.$cfg.gpio_pin='$gpio_pin' | ||||
| set system.$cfg.value='$default' | ||||
| EOF | ||||
| 	UCIDEF_GPIO_SWITCHES_CHANGED=1 | ||||
| 	json_select_object gpioswitch | ||||
| 		json_select_object "$cfg" | ||||
| 			json_add_string name "$name" | ||||
| 			json_add_int pin "$pin" | ||||
| 			json_add_int default "$default" | ||||
| 		json_select .. | ||||
| 	json_select .. | ||||
| } | ||||
|  | ||||
| ucidef_commit_gpio_switches() | ||||
| { | ||||
| 	[ "$UCIDEF_GPIO_SWITCHES_CHANGED" = "1" ] && uci commit system | ||||
| board_config_update() { | ||||
| 	json_init | ||||
| 	[ -f ${CFG} ] && json_load "$(cat ${CFG})" | ||||
|  | ||||
| 	# auto-initialize model id and name if applicable | ||||
| 	if ! json_is_a model object; then | ||||
| 		json_select_object model | ||||
| 			[ -f "/tmp/sysinfo/board_name" ] && \ | ||||
| 				json_add_string id "$(cat /tmp/sysinfo/board_name)" | ||||
| 			[ -f "/tmp/sysinfo/model" ] && \ | ||||
| 				json_add_string name "$(cat /tmp/sysinfo/model)" | ||||
| 		json_select .. | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| ucidef_set_interface_loopback() { | ||||
| 	uci batch <<EOF | ||||
| set network.loopback='interface' | ||||
| set network.loopback.ifname='lo' | ||||
| set network.loopback.proto='static' | ||||
| set network.loopback.ipaddr='127.0.0.1' | ||||
| set network.loopback.netmask='255.0.0.0' | ||||
| set network.globals='globals' | ||||
| set network.globals.ula_prefix='auto' | ||||
| EOF | ||||
| board_config_flush() { | ||||
| 	json_dump -i > /tmp/.board.json | ||||
| 	mv /tmp/.board.json ${CFG} | ||||
| } | ||||
|  | ||||
| ucidef_set_interface_raw() { | ||||
| 	local cfg=$1 | ||||
| 	local ifname=$2 | ||||
| 	local proto=${3:-"none"} | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set network.$cfg='interface' | ||||
| set network.$cfg.ifname='$ifname' | ||||
| set network.$cfg.proto='$proto' | ||||
| EOF | ||||
| } | ||||
|  | ||||
| ucidef_set_interface_lan() { | ||||
| 	local ifname=$1 | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set network.lan='interface' | ||||
| set network.lan.ifname='$ifname' | ||||
| set network.lan.force_link=1 | ||||
| set network.lan.type='bridge' | ||||
| set network.lan.proto='static' | ||||
| set network.lan.ipaddr='192.168.1.1' | ||||
| set network.lan.netmask='255.255.255.0' | ||||
| set network.lan.ip6assign='60' | ||||
| EOF | ||||
| } | ||||
|  | ||||
| ucidef_set_interface_wan() { | ||||
| 	local ifname=$1 | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set network.wan='interface' | ||||
| set network.wan.ifname='$ifname' | ||||
| set network.wan.proto='dhcp' | ||||
| set network.wan6='interface' | ||||
| set network.wan6.ifname='$ifname' | ||||
| set network.wan6.proto='dhcpv6' | ||||
| EOF | ||||
| } | ||||
|  | ||||
| ucidef_set_interfaces_lan_wan() { | ||||
| 	local lan_ifname=$1 | ||||
| 	local wan_ifname=$2 | ||||
|  | ||||
| 	ucidef_set_interface_lan "$lan_ifname" | ||||
| 	ucidef_set_interface_wan "$wan_ifname" | ||||
| } | ||||
|  | ||||
| ucidef_set_interface_macaddr() { | ||||
| 	local ifname=$1 | ||||
| 	local mac=$2 | ||||
|  | ||||
| 	uci batch <<EOF | ||||
| set network.$ifname.macaddr='$mac' | ||||
| EOF | ||||
| } | ||||
|  | ||||
| ucidef_add_switch() { | ||||
| 	local name=$1 | ||||
| 	local reset=$2 | ||||
| 	local enable=$3 | ||||
| 	uci batch <<EOF | ||||
| add network switch | ||||
| set network.@switch[-1].name='$name' | ||||
| set network.@switch[-1].reset='$reset' | ||||
| set network.@switch[-1].enable_vlan='$enable' | ||||
| EOF | ||||
| } | ||||
|  | ||||
| ucidef_add_switch_vlan() { | ||||
| 	local device=$1 | ||||
| 	local vlan=$2 | ||||
| 	local ports=$3 | ||||
| 	uci batch <<EOF | ||||
| add network switch_vlan | ||||
| set network.@switch_vlan[-1].device='$device' | ||||
| set network.@switch_vlan[-1].vlan='$vlan' | ||||
| set network.@switch_vlan[-1].ports='$ports' | ||||
| EOF | ||||
| } | ||||
|  | ||||
| ucidef_add_switch_port() { | ||||
| 	local device=$1 | ||||
| 	local port=$2 | ||||
| 	uci batch <<EOF | ||||
| add network switch_port | ||||
| set network.@switch_port[-1].device='$device' | ||||
| set network.@switch_port[-1].port='$port' | ||||
| EOF | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
|  | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2011 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/ar71xx.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| # | ||||
|  | ||||
| . /lib/functions/system.sh | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/ar71xx.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/ar71xx.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| # | ||||
|  | ||||
| . /lib/arc.sh | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
|  | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2014-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/at91.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
| # Copyright 2012-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
|  | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2011 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| # Copyright (C) 2014-2015 OpenWrt.org | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/brcm2708.sh | ||||
| . /lib/functions.sh | ||||
| . /lib/functions/system.sh | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
| # Copyright (C) 2006-2015 OpenWrt.org | ||||
|  | ||||
| . /lib/functions/system.sh | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| detect_by_vlanports() { | ||||
| 	local vlan0ports="$(nvram get vlan0ports)" | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2013-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/brcm63xx.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2012-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/brcm63xx.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2013-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/imx6.sh | ||||
|  | ||||
| board=$(imx6_board_name) | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/ipq806x.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| # Copyright (c) 2011-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/ipq806x.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2012-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/kirkwood.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2012-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/kirkwood.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| # based on ar71xx | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/functions/lantiq.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2011-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/functions/system.sh | ||||
| . /lib/functions/lantiq.sh | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| # Copyright (C) 2015 OpenWrt.org | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
|  | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2012-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/mcs814x.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
| ucidef_set_interface_lan "eth0" | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| # Copyright (C) 2014-2015 OpenWrt.org | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/mpc85xx.sh | ||||
| . /lib/functions.sh | ||||
| . /lib/functions/system.sh | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2014-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/mvebu.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2014-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/mvebu.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| # Copyright (C) 2013-2015 OpenWrt.org | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/mxs.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2014-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/netlogic.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Copyright (C) 2014-2015 OpenWrt.org | ||||
| # | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/functions/octeon.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/oxnas.sh | ||||
|  | ||||
| board=$(oxnas_board_name) | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/functions/system.sh | ||||
|  | ||||
| board_config_update | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/ramips.sh | ||||
|  | ||||
| set_usb_led() { | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| . /lib/functions.sh | ||||
| . /lib/ramips.sh | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/functions/system.sh | ||||
|  | ||||
| ramips_setup_rt3x5x_vlans() | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| # Copyright (C) 2015 OpenWrt.org | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
| ucidef_set_interface_lan "eth0" "dhcp" | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| # | ||||
|  | ||||
| . /lib/sunxi.sh | ||||
| . /lib/functions/uci-defaults-new.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
|  | ||||
| board_config_update | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jo-Philipp Wich
					Jo-Philipp Wich