diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate index 02f6998c84..49784ebfae 100755 --- a/package/base-files/files/bin/config_generate +++ b/package/base-files/files/bin/config_generate @@ -18,6 +18,40 @@ generate_static_network() { set network.globals='globals' set network.globals.ula_prefix='auto' EOF + + if json_is_a dsl object; then + json_select dsl + if json_is_a atmbridge object; then + json_select atmbridge + local vpi vci encaps payload + json_get_vars vpi vci encaps payload + uci -q batch <<-EOF + delete network.atm + set network.atm='atm-bridge' + set network.atm.vpi='$vpi' + set network.atm.vci='$vci' + set network.atm.encaps='$encaps' + set network.atm.payload='$payload' + EOF + json_select .. + fi + + if json_is_a modem object; then + json_select modem + local type annex firmware tone xfer_mode + json_get_vars type annex firmware tone xfer_mode + uci -q batch <<-EOF + delete network.dsl + set network.dsl='$type' + set network.dsl.annex='$annex' + set network.dsl.firmware='$firmware' + set network.dsl.tone='$tone' + set network.dsl.xfer_mode='$xfer_mode' + EOF + json_select .. + fi + json_select .. + fi } addr_offset=2 @@ -74,6 +108,22 @@ generate_network() { set network.${1}6.proto='dhcpv6' EOF ;; + + pppoe) + # fixup IPv6 slave interface + ifname="pppoe-$1" + + uci -q batch <<-EOF + set network.$1.proto='pppoe' + set network.$1.username='username' + set network.$1.password='password' + set network.$1.ipv6='auto' + delete network.${1}6 + set network.${1}6='interface' + set network.${1}6.ifname='$ifname' + set network.${1}6.proto='dhcpv6' + EOF + ;; esac } diff --git a/package/base-files/files/lib/functions/uci-defaults-new.sh b/package/base-files/files/lib/functions/uci-defaults-new.sh index 919aac88d3..b970383049 100755 --- a/package/base-files/files/lib/functions/uci-defaults-new.sh +++ b/package/base-files/files/lib/functions/uci-defaults-new.sh @@ -39,7 +39,7 @@ _ucidef_set_interface() { if ! json_is_a protocol string; then case "$proto" in - static|dhcp|none) : ;; + static|dhcp|none|pppoe) : ;; *) case "$name" in lan) proto="static" ;; @@ -304,6 +304,52 @@ ucidef_set_interface_macaddr() { 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"