add protection for bridging interface changes
[openwrt.git] / package / base-files / default / sbin / ifup
1 #!/bin/sh
2 # Copyright (C) 2006 OpenWrt.org
3
4 . /sbin/ifdown "$@"
5
6 config_get iftype "$1" type
7 case "$iftype" in
8         bridge) config_get ifname "$1" ifnames;;
9         *) config_get ifname "$1" ifname;;
10 esac
11
12 for dev in $ifname; do
13         brctl show | grep "$dev" >/dev/null && {
14                 # interface is still part of a bridge, correct that
15
16                 for brdev in $(brctl show | awk '$2 ~ /^[0-9].*\./ { print $1 }'); do
17                         brctl delif "$brdev" "$dev" 2>/dev/null >/dev/null
18                 done
19         }
20         setup_interface "$dev" "$1"
21 done