Changeset 21652


Ignore:
Timestamp:
2010-06-01T23:43:52+02:00 (8 years ago)
Author:
jow
Message:

[package] base-file: move alias setup to route hotplug, this fixes alias sections for non-static interfaces like ppp, dhcp, 6in4 etc.

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

Legend:

Unmodified
Added
Removed
  • trunk/package/base-files/Makefile

    r21638 r21652  
    1111 
    1212PKG_NAME:=base-files 
    13 PKG_RELEASE:=47 
     13PKG_RELEASE:=48 
    1414 
    1515PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ 
  • trunk/package/base-files/files/etc/hotplug.d/iface/10-routes

    r15274 r21652  
    6969                include /lib/network 
    7070                scan_interfaces 
     71 
     72                # Setup aliases 
     73                config_set "$INTERFACE" aliases "" 
     74                config_set "$INTERFACE" alias_count 0 
     75                config_foreach setup_interface_alias alias "$INTERFACE" "$DEVICE" 
     76 
     77                # Save alias references in state vars 
     78                local aliases 
     79                config_get aliases "$INTERFACE" aliases 
     80                [ -z "$aliases" ] || uci_set_state network "$INTERFACE" aliases "$aliases" 
     81 
     82                # Make ip6addr of parent iface the main address again 
     83                local ip6addr 
     84                config_get ip6addr "$INTERFACE" ip6addr 
     85                [ -z "$ip6addr" ] || { 
     86                        ifconfig "$DEVICE" del "$ip6addr" 
     87                        ifconfig "$DEVICE" add "$ip6addr" 
     88                } 
     89 
     90                # Setup routes 
    7191                config_foreach "add_route" route 
    7292                config_foreach "add_route6" route6 
    7393        ;; 
     94        ifdown) 
     95                # Bring down named aliases 
     96                local ifn 
     97                for ifn in $(ifconfig | sed -ne "s/^\($DEVICE:[^[:space:]]\+\).*/\1/p"); do 
     98                        ifconfig "$ifn" down 
     99                done 
     100        ;; 
    74101esac 
     102 
  • trunk/package/base-files/files/lib/network/config.sh

    r21638 r21652  
    276276 
    277277setup_interface() { 
    278         local iface_main="$1" 
     278        local iface="$1" 
    279279        local config="$2" 
    280280        local proto="$3" 
    281281        local vifmac="$4" 
    282         local ip6addr_main= 
    283282 
    284283        [ -n "$config" ] || { 
    285                 config=$(find_config "$iface_main") 
     284                config=$(find_config "$iface") 
    286285                [ "$?" = 0 ] || return 1 
    287286        } 
    288287 
    289         prepare_interface "$iface_main" "$config" "$vifmac" || return 0 
    290  
    291         [ "$iface_main" = "br-$config" ] && { 
     288        prepare_interface "$iface" "$config" "$vifmac" || return 0 
     289 
     290        [ "$iface" = "br-$config" ] && { 
    292291                # need to bring up the bridge and wait a second for 
    293292                # it to switch to the 'forwarding' state, otherwise 
    294293                # it will lose its routes... 
    295                 ifconfig "$iface_main" up 
     294                ifconfig "$iface" up 
    296295                sleep 1 
    297296        } 
    298297 
    299298        # Interface settings 
    300         grep "$iface_main:" /proc/net/dev > /dev/null && { 
     299        grep "$iface:" /proc/net/dev > /dev/null && { 
    301300                local mtu macaddr 
    302301                config_get mtu "$config" mtu 
    303302                config_get macaddr "$config" macaddr 
    304                 [ -n "$macaddr" ] && $DEBUG ifconfig "$iface_main" down 
    305                 $DEBUG ifconfig "$iface_main" ${macaddr:+hw ether "$macaddr"} ${mtu:+mtu $mtu} up 
    306         } 
    307         set_interface_ifname "$config" "$iface_main" 
     303                [ -n "$macaddr" ] && $DEBUG ifconfig "$iface" down 
     304                $DEBUG ifconfig "$iface" ${macaddr:+hw ether "$macaddr"} ${mtu:+mtu $mtu} up 
     305        } 
     306        set_interface_ifname "$config" "$iface" 
    308307 
    309308        [ -n "$proto" ] || config_get proto "$config" proto 
    310309        case "$proto" in 
    311310                static) 
    312                         config_get ip6addr_main "$config" ip6addr 
    313                         setup_interface_static "$iface_main" "$config" 
     311                        setup_interface_static "$iface" "$config" 
    314312                ;; 
    315313                dhcp) 
    316                         local lockfile="/var/lock/dhcp-$iface_main" 
     314                        local lockfile="/var/lock/dhcp-$iface" 
    317315                        lock "$lockfile" 
    318316 
    319317                        # prevent udhcpc from starting more than once 
    320                         local pidfile="/var/run/dhcp-${iface_main}.pid" 
     318                        local pidfile="/var/run/dhcp-${iface}.pid" 
    321319                        local pid="$(cat "$pidfile" 2>/dev/null)" 
    322320                        if [ -d "/proc/$pid" ] && grep -qs udhcpc "/proc/${pid}/cmdline"; then 
     
    331329 
    332330                                [ -z "$ipaddr" ] || \ 
    333                                         $DEBUG ifconfig "$iface_main" "$ipaddr" ${netmask:+netmask "$netmask"} 
     331                                        $DEBUG ifconfig "$iface" "$ipaddr" ${netmask:+netmask "$netmask"} 
    334332 
    335333                                # don't stay running in background if dhcp is not the main proto on the interface (e.g. when using pptp) 
    336334                                local dhcpopts 
    337335                                [ ."$proto1" != ."$proto" ] && dhcpopts="-n -q" 
    338                                 $DEBUG eval udhcpc -t 0 -i "$iface_main" ${ipaddr:+-r $ipaddr} ${hostname:+-H $hostname} ${clientid:+-c $clientid} -b -p "$pidfile" ${dhcpopts:- -O rootpath -R &} 
     336                                $DEBUG eval udhcpc -t 0 -i "$iface" ${ipaddr:+-r $ipaddr} ${hostname:+-H $hostname} ${clientid:+-c $clientid} -b -p "$pidfile" ${dhcpopts:- -O rootpath -R &} 
    339337                                lock -u "$lockfile" 
    340338                        fi 
    341339                ;; 
    342340                none) 
    343                         setup_interface_none "$iface_main" "$config" 
     341                        setup_interface_none "$iface" "$config" 
    344342                ;; 
    345343                *) 
    346344                        if ( eval "type setup_interface_$proto" ) >/dev/null 2>/dev/null; then 
    347                                 eval "setup_interface_$proto '$iface_main' '$config' '$proto'" 
     345                                eval "setup_interface_$proto '$iface' '$config' '$proto'" 
    348346                        else 
    349347                                echo "Interface type $proto not supported." 
     
    352350                ;; 
    353351        esac 
    354         [ "$proto" = none ] || { 
    355                 for ifn in `ifconfig | grep "^$iface_main:" | awk '{print $1}'`; do 
    356                         ifconfig "$ifn" down 
    357                 done 
    358         } 
    359  
    360         local aliases 
    361         config_set "$config" aliases "" 
    362         config_set "$config" alias_count 0 
    363         config_foreach setup_interface_alias alias "$config" "$iface_main" 
    364         config_get aliases "$config" aliases 
    365         [ -z "$aliases" ] || uci_set_state network "$config" aliases "$aliases" 
    366  
    367         # put the ip6addr back to the beginning to become the main ip again 
    368         [ -z "$ip6addr_main" ] || { 
    369                 $DEBUG ifconfig "$iface_main" del "$ip6addr_main" 
    370                 $DEBUG ifconfig "$iface_main" add "$ip6addr_main" 
    371         } 
    372352} 
    373353 
Note: See TracChangeset for help on using the changeset viewer.