# DEBUG="echo"
+do_sysctl() {
+ [ -n "$2" ] && \
+ sysctl -n -e -w "$1=$2" >/dev/null || \
+ sysctl -n -e "$1"
+}
+
find_config() {
local iftype device iface ifaces ifn
for ifn in $interfaces; do
config_get_bool stp "$config" stp 0
$DEBUG brctl addbr "br-$config"
$DEBUG brctl setfd "br-$config" 0
- $DEBUG ifconfig "br-$config" up
$DEBUG ifconfig "$iface" 0.0.0.0
$DEBUG do_sysctl "net.ipv6.conf.$iface.disable_ipv6" 1
$DEBUG brctl addif "br-$config" "$iface"
$DEBUG brctl stp "br-$config" $stp
+ [ -z "$macaddr" ] && macaddr="$(cat /sys/class/net/$iface/address)"
+ $DEBUG ifconfig "br-$config" hw ether $macaddr up
# Creating the bridge here will have triggered a hotplug event, which will
# result in another setup_interface() call, so we simply stop processing
# the current event at this point.
for brdev in $(brctl show | awk '$2 ~ /^[0-9].*\./ { print $1 }'); do
brctl delif "$brdev" "$dev" 2>/dev/null >/dev/null
+ do_sysctl "net.ipv6.conf.$dev.disable_ipv6" 0
done
}
}