diff options
-rwxr-xr-x | package/base-files/files/bin/config_generate | 236 |
1 files changed, 124 insertions, 112 deletions
diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate index ae0d37462c..78315ff9f9 100755 --- a/package/base-files/files/bin/config_generate +++ b/package/base-files/files/bin/config_generate @@ -7,17 +7,17 @@ CFG=/etc/board.json [ -f $CFG ] || exit 1 generate_static_network() { - uci -q batch <<EOF -delete network.loopback -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' -delete network.globals -set network.globals='globals' -set network.globals.ula_prefix='auto' -EOF + uci -q batch <<-EOF + delete network.loopback + 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' + delete network.globals + set network.globals='globals' + set network.globals.ula_prefix='auto' + EOF } next_vlan=3 @@ -25,77 +25,84 @@ generate_network() { local vlan json_select network - json_select $1 + json_select "$1" json_get_vars ifname create_vlan macaddr json_select .. json_select .. [ -n "$ifname" ] || return - [ "${create_vlan:-0}" -eq 1 ] && case $1 in - lan) vlan=1;; - wan) vlan=2;; - *) - vlan=$next_vlan - next_vlan=$((next_vlan + 1)) - ;; - esac + + if [ "${create_vlan:-0}" -eq 1 ]; then + case "$1" in + lan) vlan=1;; + wan) vlan=2;; + *) + vlan=$next_vlan + next_vlan=$((next_vlan + 1)) + ;; + esac + fi + [ -n "$vlan" ] && ifname=${ifname}.${vlan} - uci -q batch <<EOF -delete network.$1 -set network.$1='interface' -set network.$1.ifname='$ifname' -set network.$1.force_link=1 -set network.$1.proto='none' -set network.$1.macaddr='$macaddr' -EOF - - case $1 in - lan) uci -q batch <<EOF -set network.$1.type='bridge' -set network.$1.proto='static' -set network.$1.ipaddr='192.168.1.1' -set network.$1.netmask='255.255.255.0' -set network.$1.ip6assign='60' -EOF + + uci -q batch <<-EOF + delete network.$1 + set network.$1='interface' + set network.$1.ifname='$ifname' + set network.$1.force_link=1 + set network.$1.proto='none' + set network.$1.macaddr='$macaddr' + EOF + + case "$1" in + lan) + uci -q batch <<-EOF + set network.$1.type='bridge' + set network.$1.proto='static' + set network.$1.ipaddr='192.168.1.1' + set network.$1.netmask='255.255.255.0' + set network.$1.ip6assign='60' + EOF ;; - wan) uci -q batch <<EOF -set network.$1.proto='dhcp' -delete network.wan6 -set network.wan6='interface' -set network.wan6.ifname='$ifname' -set network.wan6.proto='dhcpv6' -EOF + wan) + uci -q batch <<-EOF + set network.$1.proto='dhcp' + delete network.wan6 + set network.wan6='interface' + set network.wan6.ifname='$ifname' + set network.wan6.proto='dhcpv6' + EOF ;; esac } generate_switch_vlan() { - local device=$1 - local vlan=$2 - local cpu_port=$3 - - case $vlan in - lan) vlan=1;; - wan) vlan=2;; - *) vlan=${vlan##vlan};; + local device="$1" + local vlan="$2" + local cpu_port="$3" + + case "$vlan" in + lan) vlan=1;; + wan) vlan=2;; + *) vlan="${vlan##vlan}";; esac json_select vlans - json_select $2 + json_select "$2" json_get_values ports json_select .. json_select .. - uci -q 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 ${cpu_port}t' -EOF + uci -q 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 ${cpu_port}t' + EOF } calculate_switch_vlans() { - local switch=$1 + local switch="$1" local ports port attr val local prev_role local num device role index @@ -204,45 +211,50 @@ calculate_switch_vlans() { EOF case $role in - lan) uci -q batch <<-EOF - 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 + lan) + uci -q batch <<-EOF + 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 ;; - wan) uci -q batch <<-EOF - set network.wan.proto='dhcp' - set network.wan6='interface' - set network.wan6.ifname='$device' - set network.wan6.proto='dhcpv6' - EOF + + wan) + uci -q batch <<-EOF + set network.wan.proto='dhcp' + set network.wan6='interface' + set network.wan6.ifname='$device' + set network.wan6.proto='dhcpv6' + EOF ;; - *) uci -q batch <<-EOF - set network.$role.force_link='1' - set network.$role.proto='none' - EOF + + *) + uci -q batch <<-EOF + set network.$role.force_link='1' + set network.$role.proto='none' + EOF ;; esac done } generate_switch() { - local key=$1 + local key="$1" local vlans json_select switch - json_select $key + json_select "$key" json_get_vars enable reset blinkrate cpu_port - uci -q batch <<EOF -add network switch -set network.@switch[-1].name='$key' -set network.@switch[-1].reset='$reset' -set network.@switch[-1].enable_vlan='$enable' -set network.@switch[-1].blinkrate='$blinkrate' -EOF + uci -q batch <<-EOF + add network switch + set network.@switch[-1].name='$key' + set network.@switch[-1].reset='$reset' + set network.@switch[-1].enable_vlan='$enable' + set network.@switch[-1].blinkrate='$blinkrate' + EOF if [ -n "$cpu_port" ]; then json_get_keys vlans vlans @@ -256,40 +268,40 @@ EOF } generate_led() { - local key=$1 + local key="$1" local cfg="led_$key" json_select led - json_select $key + json_select "$key" json_get_vars name sysfs type trigger device interface default port_mask json_select .. json_select .. - uci -q batch <<EOF -delete system.$cfg -set system.$cfg='led' -set system.$cfg.name='$name' -set system.$cfg.sysfs='$sysfs' -set system.$cfg.dev='$device' -set system.$cfg.trigger='$trigger' -set system.$cfg.port_mask='$port_mask' -set system.$cfg.default='$default' -EOF - case $type in - netdev) - uci -q batch <<EOF -set system.$cfg.trigger='netdev' -set system.$cfg.mode='link tx rx' -EOF - ;; - - usb) - uci -q batch <<EOF -set system.$cfg.trigger='usbdev' -set system.$cfg.interval='50' -EOF - ;; + uci -q batch <<-EOF + delete system.$cfg + set system.$cfg='led' + set system.$cfg.name='$name' + set system.$cfg.sysfs='$sysfs' + set system.$cfg.dev='$device' + set system.$cfg.trigger='$trigger' + set system.$cfg.port_mask='$port_mask' + set system.$cfg.default='$default' + EOF + + case "$type" in + netdev) + uci -q batch <<-EOF + set system.$cfg.trigger='netdev' + set system.$cfg.mode='link tx rx' + EOF + ;; + usb) + uci -q batch <<-EOF + set system.$cfg.trigger='usbdev' + set system.$cfg.interval='50' + EOF + ;; esac } |