Author: jow Date: 2015-12-03 23:27:06 +0100 (Thu, 03 Dec 2015) New Revision: 47732
Modified: trunk/package/base-files/files/bin/config_generate trunk/package/base-files/files/lib/functions/uci-defaults-new.sh Log: base-files: board.d: support specifiying the protocol of lan and wan Some boards, e.g. the Sheeva Plug, require the lan interface to be set to DHCP instead of a static address, therfore support that. Signed-off-by: Jo-Philipp Wich <[email protected]> Modified: trunk/package/base-files/files/bin/config_generate =================================================================== --- trunk/package/base-files/files/bin/config_generate 2015-12-03 22:27:02 UTC (rev 47731) +++ trunk/package/base-files/files/bin/config_generate 2015-12-03 22:27:06 UTC (rev 47732) @@ -20,12 +20,13 @@ EOF } +addr_offset=2 generate_network() { - local ifname macaddr type + local ifname macaddr protocol type json_select network json_select "$1" - json_get_vars ifname macaddr + json_get_vars ifname macaddr protocol json_select .. json_select .. @@ -45,23 +46,32 @@ set network.$1.macaddr='$macaddr' EOF - case "$1" in - lan) + case "$protocol" in + static) + local ipaddr + case "$1" in + lan) ipaddr="192.168.1.1" ;; + *) ipaddr="192.168.$((addr_offset++)).1" ;; + esac + uci -q batch <<-EOF set network.$1.proto='static' - set network.$1.ipaddr='192.168.1.1' + set network.$1.ipaddr='$ipaddr' set network.$1.netmask='255.255.255.0' set network.$1.ip6assign='60' EOF ;; - wan) + + dhcp) + # fixup IPv6 slave interface if parent is a bridge + [ "$type" = "bridge" ] && ifname="br-$1" + uci -q batch <<-EOF set network.$1.proto='dhcp' - delete network.wan6 - set network.wan6='interface' - set network.wan6.type='$type' - set network.wan6.ifname='$ifname' - set network.wan6.proto='dhcpv6' + delete network.${1}6 + set network.${1}6='interface' + set network.${1}6.ifname='$ifname' + set network.${1}6.proto='dhcpv6' EOF ;; esac Modified: trunk/package/base-files/files/lib/functions/uci-defaults-new.sh =================================================================== --- trunk/package/base-files/files/lib/functions/uci-defaults-new.sh 2015-12-03 22:27:02 UTC (rev 47731) +++ trunk/package/base-files/files/lib/functions/uci-defaults-new.sh 2015-12-03 22:27:06 UTC (rev 47732) @@ -32,9 +32,26 @@ _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) : ;; + *) + case "$name" in + lan) proto="static" ;; + wan) proto="dhcp" ;; + *) proto="none" ;; + esac + ;; + esac + + json_add_string protocol "$proto" + fi + json_select .. } @@ -57,19 +74,15 @@ } ucidef_set_interface_lan() { - local lan_if="$1" - json_select_object network - _ucidef_set_interface lan "$lan_if" + _ucidef_set_interface lan "$@" json_select .. } ucidef_set_interface_wan() { - local wan_if="$1" - - json_select_object network - _ucidef_set_interface wan "$wan_if" - json_select .. + json_select_object network + _ucidef_set_interface wan "$@" + json_select .. } ucidef_set_interfaces_lan_wan() { @@ -164,14 +177,17 @@ json_select .. json_select_object network + local devices + json_select_object "$role" # attach previous interfaces (for multi-switch devices) - local devices; json_get_var devices ifname + json_get_var devices ifname if ! list_contains devices "$device"; then devices="${devices:+$devices }$device" fi - json_add_string ifname "$devices" json_select .. + + _ucidef_set_interface "$role" "$devices" json_select .. done } _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
