[ -s $CFG ] || /bin/board_detect || exit 1
[ -s /etc/config/network -a -s /etc/config/system ] && exit 0
+generate_bridge() {
+ local name=$1
+ local macaddr=$2
+ uci -q batch <<-EOF
+ set network.$name=device
+ set network.$name.name=$name
+ set network.$name.type=bridge
+ EOF
+ if [ -n "$macaddr" ]; then
+ uci -q batch <<-EOF
+ set network.$name.macaddr=$macaddr
+ EOF
+ fi
+}
+
+bridge_vlan_id=0
+generate_bridge_vlan() {
+ local name=$1_vlan
+ local device=$2
+ local ports="$3"
+ local vlan="$4"
+ uci -q batch <<-EOF
+ set network.$name=bridge-vlan
+ set network.$name.device='$device'
+ set network.$name.vlan='$vlan'
+ set network.$name.ports='$ports'
+ EOF
+}
+
generate_static_network() {
uci -q batch <<-EOF
delete network.loopback
addr_offset=2
generate_network() {
- local ifname macaddr protocol type ipaddr netmask
+ local ifname macaddr protocol type ipaddr netmask vlan
+ local bridge=$2
json_select network
json_select "$1"
- json_get_vars ifname macaddr protocol ipaddr netmask
+ json_get_vars ifname macaddr protocol ipaddr netmask vlan
json_select ..
json_select ..
*\ * | lan:*) type="bridge" ;;
esac
+ [ -n "$bridge" ] && {
+ if [ -z "$vlan" ]; then
+ bridge_vlan_id=$((bridge_vlan_id + 1))
+ vlan=$bridge_vlan_id
+ fi
+ generate_bridge_vlan $1 $bridge "$ifname" $vlan
+ ifname=$bridge.$vlan
+ type=""
+ }
+
uci -q batch <<-EOF
delete network.$1
set network.$1='interface'
json_select ..
}
-
generate_static_system() {
uci -q batch <<-EOF
delete system.@system[0]
uci -q set "system.@system[-1].hostname=$hostname"
fi
+ local compat_version
+ if json_get_var compat_version compat_version; then
+ uci -q set "system.@system[-1].compat_version=$compat_version"
+ else
+ uci -q set "system.@system[-1].compat_version=1.0"
+ fi
+
if json_is_a ntpserver array; then
local keys key
json_get_keys keys ntpserver
json_init
json_load "$(cat ${CFG})"
+umask 077
+
if [ ! -s /etc/config/network ]; then
+ bridge_name=""
touch /etc/config/network
generate_static_network
+ json_get_vars bridge
+ [ -n "$bridge" ] && {
+ json_select bridge
+ json_get_vars name macaddr
+ generate_bridge "$name" "$macaddr"
+ json_select ..
+ bridge_name=$name
+ }
+
json_get_keys keys network
- for key in $keys; do generate_network $key; done
+ for key in $keys; do generate_network $key $bridge_name; done
json_get_keys keys switch
for key in $keys; do generate_switch $key; done