mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-08-24 05:01:10 +03:00
If a user invoked /sbin/ifup to bring up an interface, the setup used to fail in case of wireless networks tied to a non-bridged interface definition. Likewise, the bringup of "lan" in the default configuration will reinitialize the bridge but do not re-join the wireless network to it, requiring an extra call to /sbin/wifi (which might not be possible anymore due to a severed link if connected wirelessly). The changeset modifies the "ifup" command to search for related wireless devices and call "wifi up" on them if applicable. This way the commands for wireless and non-wireless interfaces are unified from a cli point of view. The "ifup -a" case has not been changed to keep the logic of the /etc/init.d/network boot sequence. This might be changed later. Solves #9763. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@27720 3c298f89-4303-0410-b956-a3cf2f4a3e73
58 lines
1.3 KiB
Bash
Executable File
58 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# Copyright (C) 2006-2011 OpenWrt.org
|
|
|
|
. /etc/functions.sh
|
|
[ $# = 0 ] && { echo " $0 <group>"; exit; }
|
|
|
|
case "$1" in
|
|
"-a")
|
|
[ -e "/tmp/resolv.conf.auto" ] && rm /tmp/resolv.conf.auto
|
|
config_cb() {
|
|
[ interface != "$1" -o -z "$2" ] || eval "$0 -w $2"
|
|
}
|
|
config_load network
|
|
exit 0
|
|
;;
|
|
"-w") shift ;;
|
|
esac
|
|
|
|
include /lib/network
|
|
scan_interfaces
|
|
|
|
cfg=$1
|
|
debug "### ifdown $cfg ###"
|
|
|
|
config_get proto "$cfg" proto
|
|
[ -z "$proto" ] && { echo "interface not found."; exit; }
|
|
|
|
config_get iface "$cfg" device
|
|
[ "static" = "$proto" -o "none" = "$proto" ] && {
|
|
env -i ACTION="ifdown" INTERFACE="$cfg" DEVICE="$iface" PROTO="$proto" /sbin/hotplug-call "iface"
|
|
}
|
|
|
|
# call interface stop handler
|
|
( type "stop_interface_$proto" ) >/dev/null 2>/dev/null && eval "stop_interface_$proto '$cfg'"
|
|
|
|
config_get ifname "$cfg" ifname
|
|
config_get device "$cfg" device
|
|
|
|
[ ."$device" != ."$ifname" ] || device=
|
|
for dev in $ifname $device; do
|
|
ifconfig "$dev" 0.0.0.0 down >/dev/null 2>/dev/null
|
|
done
|
|
|
|
config_get iftype "$cfg" type
|
|
[ "bridge" = "$iftype" ] && brctl delbr "$ifname" >/dev/null 2>/dev/null
|
|
|
|
# remove the interface's dns entries
|
|
remove_dns "$cfg"
|
|
|
|
# remove the interface's network state
|
|
uci_revert_state network "$1"
|
|
|
|
# revert aliases state as well
|
|
config_get aliases "$1" aliases
|
|
for config in $aliases; do
|
|
uci_revert_state network "$config"
|
|
done
|