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)
|
ifdown)
|
||||||
# Bring down named aliases
|
# Bring down named aliases
|
||||||
|
local device=$(uci_get_state network "$INTERFACE" device)
|
||||||
local ifn
|
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
|
ifconfig "$ifn" down
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -246,6 +246,25 @@ setup_interface_alias() {
|
||||||
config_get cfg "$config" interface
|
config_get cfg "$config" interface
|
||||||
[ "$parent" == "$cfg" ] || return 0
|
[ "$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
|
# alias counter
|
||||||
local ctr
|
local ctr
|
||||||
config_get ctr "$parent" alias_count 0
|
config_get ctr "$parent" alias_count 0
|
||||||
|
@ -258,14 +277,14 @@ setup_interface_alias() {
|
||||||
append list "$config"
|
append list "$config"
|
||||||
config_set "$parent" aliases "$list"
|
config_set "$parent" aliases "$list"
|
||||||
|
|
||||||
iface="$iface:$ctr"
|
use_iface="$use_iface:$ctr"
|
||||||
set_interface_ifname "$config" "$iface"
|
set_interface_ifname "$config" "$use_iface"
|
||||||
|
|
||||||
local proto
|
local proto
|
||||||
config_get proto "$config" proto "static"
|
config_get proto "$config" proto "static"
|
||||||
case "${proto}" in
|
case "${proto}" in
|
||||||
static)
|
static)
|
||||||
setup_interface_static "$iface" "$config"
|
setup_interface_static "$use_iface" "$config"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unsupported type '$proto' for alias config '$config'"
|
echo "Unsupported type '$proto' for alias config '$config'"
|
||||||
|
|
Loading…
Reference in a new issue