Changeset 47732


Ignore:
Timestamp:
2015-12-03T23:27:06+01:00 (2 years ago)
Author:
jow
Message:

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 <jow@…>

Location:
trunk/package/base-files/files
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/base-files/files/bin/config_generate

    r47731 r47732  
    2121} 
    2222 
     23addr_offset=2 
    2324generate_network() { 
    24         local ifname macaddr type 
     25        local ifname macaddr protocol type 
    2526 
    2627        json_select network 
    2728                json_select "$1" 
    28                         json_get_vars ifname macaddr 
     29                        json_get_vars ifname macaddr protocol 
    2930                json_select .. 
    3031        json_select .. 
     
    4647        EOF 
    4748 
    48         case "$1" in 
    49                 lan) 
     49        case "$protocol" in 
     50                static) 
     51                        local ipaddr 
     52                        case "$1" in 
     53                                lan) ipaddr="192.168.1.1" ;; 
     54                                *) ipaddr="192.168.$((addr_offset++)).1" ;; 
     55                        esac 
     56 
    5057                        uci -q batch <<-EOF 
    5158                                set network.$1.proto='static' 
    52                                 set network.$1.ipaddr='192.168.1.1' 
     59                                set network.$1.ipaddr='$ipaddr' 
    5360                                set network.$1.netmask='255.255.255.0' 
    5461                                set network.$1.ip6assign='60' 
    5562                        EOF 
    5663                ;; 
    57                 wan) 
     64 
     65                dhcp) 
     66                        # fixup IPv6 slave interface if parent is a bridge 
     67                        [ "$type" = "bridge" ] && ifname="br-$1" 
     68 
    5869                        uci -q batch <<-EOF 
    5970                                set network.$1.proto='dhcp' 
    60                                 delete network.wan6 
    61                                 set network.wan6='interface' 
    62                                 set network.wan6.type='$type' 
    63                                 set network.wan6.ifname='$ifname' 
    64                                 set network.wan6.proto='dhcpv6' 
     71                                delete network.${1}6 
     72                                set network.${1}6='interface' 
     73                                set network.${1}6.ifname='$ifname' 
     74                                set network.${1}6.proto='dhcpv6' 
    6575                        EOF 
    6676                ;; 
  • trunk/package/base-files/files/lib/functions/uci-defaults-new.sh

    r47731 r47732  
    3333        local name="$1" 
    3434        local iface="$2" 
     35        local proto="$3" 
    3536 
    3637        json_select_object "$name" 
    3738        json_add_string ifname "$iface" 
     39 
     40        if ! json_is_a protocol string; then 
     41                case "$proto" in 
     42                        static|dhcp|none) : ;; 
     43                        *) 
     44                                case "$name" in 
     45                                        lan) proto="static" ;; 
     46                                        wan) proto="dhcp" ;; 
     47                                        *) proto="none" ;; 
     48                                esac 
     49                        ;; 
     50                esac 
     51 
     52                json_add_string protocol "$proto" 
     53        fi 
     54 
    3855        json_select .. 
    3956} 
     
    5875 
    5976ucidef_set_interface_lan() { 
    60         local lan_if="$1" 
    61  
    6277        json_select_object network 
    63         _ucidef_set_interface lan "$lan_if" 
     78        _ucidef_set_interface lan "$@" 
    6479        json_select .. 
    6580} 
    6681 
    6782ucidef_set_interface_wan() { 
    68         local wan_if="$1" 
    69  
    70         json_select_object network 
    71         _ucidef_set_interface wan "$wan_if" 
    72         json_select .. 
     83        json_select_object network 
     84        _ucidef_set_interface wan "$@" 
     85        json_select .. 
    7386} 
    7487 
     
    165178 
    166179                json_select_object network 
     180                        local devices 
     181 
    167182                        json_select_object "$role" 
    168183                                # attach previous interfaces (for multi-switch devices) 
    169                                 local devices; json_get_var devices ifname 
     184                                json_get_var devices ifname 
    170185                                if ! list_contains devices "$device"; then 
    171186                                        devices="${devices:+$devices }$device" 
    172187                                fi 
    173                                 json_add_string ifname "$devices" 
    174188                        json_select .. 
     189 
     190                        _ucidef_set_interface "$role" "$devices" 
    175191                json_select .. 
    176192        done 
Note: See TracChangeset for help on using the changeset viewer.