base-files: - add aliases to device by default (not ifname) - introduce option "layer" to select the target ifname to attach the alias to: - 3 use tun device (tun over bridge over device) fallback to bridge or device - 2 use bridge (bridge over device) fallback to device - 1 use device
SVN-Revision: 21655
This commit is contained in:
parent
8e39b122c9
commit
94db915196
2 changed files with 24 additions and 4 deletions
|
@ -93,8 +93,9 @@ case "$ACTION" in
|
|||
;;
|
||||
ifdown)
|
||||
# Bring down named aliases
|
||||
local device=$(uci_get_state network "$INTERFACE" device)
|
||||
local ifn
|
||||
for ifn in $(ifconfig | sed -ne "s/^\($DEVICE:[^[:space:]]\+\).*/\1/p"); do
|
||||
for ifn in $(ifconfig | sed -ne "s/^\(\($DEVICE${device:+\|$device}\|br-$INTERFACE\):[^[:space:]]\+\).*/\1/p"); do
|
||||
ifconfig "$ifn" down
|
||||
done
|
||||
;;
|
||||
|
|
|
@ -246,6 +246,25 @@ setup_interface_alias() {
|
|||
config_get cfg "$config" interface
|
||||
[ "$parent" == "$cfg" ] || return 0
|
||||
|
||||
# parent device and ifname
|
||||
local p_device p_type
|
||||
config_get p_device "$cfg" device
|
||||
config_get p_type "$cfg" type
|
||||
|
||||
# select alias ifname
|
||||
local layer use_iface
|
||||
config_get layer "$config" layer 2
|
||||
case "$layer:$p_type" in
|
||||
# layer 3: e.g. pppoe-wan or pptp-vpn
|
||||
3:*) use_iface="$iface" ;;
|
||||
|
||||
# layer 2 and parent is bridge: e.g. br-wan
|
||||
2:bridge) use_iface="br-$cfg" ;;
|
||||
|
||||
# layer 1: e.g. eth0 or ath0
|
||||
*) use_iface="$p_device" ;;
|
||||
esac
|
||||
|
||||
# alias counter
|
||||
local ctr
|
||||
config_get ctr "$parent" alias_count 0
|
||||
|
@ -258,14 +277,14 @@ setup_interface_alias() {
|
|||
append list "$config"
|
||||
config_set "$parent" aliases "$list"
|
||||
|
||||
iface="$iface:$ctr"
|
||||
set_interface_ifname "$config" "$iface"
|
||||
use_iface="$use_iface:$ctr"
|
||||
set_interface_ifname "$config" "$use_iface"
|
||||
|
||||
local proto
|
||||
config_get proto "$config" proto "static"
|
||||
case "${proto}" in
|
||||
static)
|
||||
setup_interface_static "$iface" "$config"
|
||||
setup_interface_static "$use_iface" "$config"
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported type '$proto' for alias config '$config'"
|
||||
|
|
Loading…
Reference in a new issue