diff -r 483d006cc607 tools/examples/network-bridge --- a/tools/examples/network-bridge Fri Apr 25 13:46:27 2008 +0100 +++ b/tools/examples/network-bridge Mon Apr 28 22:36:23 2008 -0600 @@ -72,6 +72,9 @@ find_alt_device () { echo "$ifs" } +if [ $bridge ]; then + namedbr=$bridge +fi netdev=${netdev:-$(ip route list 0.0.0.0/0 | \ sed 's/.*dev \([a-z]\+[0-9]\+\).*$/\1/')} if is_network_root ; then @@ -198,6 +201,42 @@ show_status () { echo '============================================================' } +op_start_named_bridge () { + if link_exists "$bridge"; then + # The device is already up. + return + fi + + create_bridge ${bridge} + + preiftransfer ${netdev} + transfer_addrs ${netdev} ${bridge} + get_ip_info ${netdev} + ip addr flush ${netdev} > /dev/null 2>&1 + brctl addif ${bridge} ${netdev} + do_ifup ${bridge} + + if [ ${antispoof} = 'yes' ] ; then + antispoofing + fi +} + +op_stop_named_bridge () { + if ! link_exists "$bridge"; then + return + fi + + transfer_addrs ${bridge} ${netdev} + get_ip_info ${bridge} + ip link set ${netdev} down + ip addr flush ${bridge} + + brctl delif ${bridge} ${netdev} + ip link set ${bridge} down + do_ifup ${netdev} + brctl delbr ${bridge} +} + op_start () { if [ "${bridge}" = "null" ] ; then return @@ -281,11 +320,19 @@ add_to_bridge2() { case "$command" in start) - op_start + if [ $namedbr ]; then + op_start_named_bridge + else + op_start + fi ;; stop) - op_stop + if [ $namedbr ]; then + op_stop_named_bridge + else + op_stop + fi ;; status)