[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH]Change default network schema in network-bridge
hi, the default network-bridge renames network interfaces and often confuse people. this patch changes the network-bridge schema to: # start: # Creates the bridge # Copies the IP and MAC addresses from netdev to bridge # Enslaves netdev to bridge # # stop: # Removes netdev from the bridge # Transfers addresses, routes from bridge to netdev # Deletes bridge No rename will be performed. Eg. # brctl show bridge name bridge id STP enabled interfaces xenbr0 8000.000e0cd85dfe no eth0 IP/route will be transfered to xenbr0 at start. I also add a extra script network-bridges to perform on all ethernet cards. and network-dummy if user doesn't want to xend to manage dom0 networking. This patch obsolete my last patch, titled: [PATCH]Fix network-bridge ifup problem. CC to Daniel for comments. Signed-off-by: Zhigang Wang <zhigang.x.wang@xxxxxxxxxx> thanks, zhigang diff -Nurp xen-unstable.orig/tools/hotplug/Linux/Makefile xen-unstable/tools/hotplug/Linux/Makefile --- xen-unstable.orig/tools/hotplug/Linux/Makefile 2009-06-23 11:34:24.000000000 +0800 +++ xen-unstable/tools/hotplug/Linux/Makefile 2009-06-23 11:48:09.000000000 +0800 @@ -8,6 +8,7 @@ XENDOMAINS_SYSCONFIG = init.d/sysconfig. # Xen script dir and scripts to go there. XEN_SCRIPTS = network-bridge vif-bridge +XEN_SCRIPTS += network-bridges network-dummy XEN_SCRIPTS += network-route vif-route XEN_SCRIPTS += network-nat vif-nat XEN_SCRIPTS += block diff -Nurp xen-unstable.orig/tools/hotplug/Linux/network-bridge xen-unstable/tools/hotplug/Linux/network-bridge --- xen-unstable.orig/tools/hotplug/Linux/network-bridge 2009-06-23 11:34:25.000000000 +0800 +++ xen-unstable/tools/hotplug/Linux/network-bridge 2009-06-23 11:48:26.000000000 +0800 @@ -5,7 +5,7 @@ # The script name to use is defined in /etc/xen/xend-config.sxp # in the network-script field. # -# This script creates a bridge (default ${netdev}), adds a device +# This script creates a bridge (default xenbr0), adds a device # (defaults to the device on the default gateway route) to it, copies # the IP addresses from the device to the bridge and adjusts the routes # accordingly. @@ -21,27 +21,19 @@ # # Vars: # -# bridge The bridge to use (default ${netdev}). -# netdev The interface to add to the bridge (default gateway device). +# bridge The bridge to use (default xenbr0). +# netdev The interface to add to the bridge (default gateway device or eth0). # antispoof Whether to use iptables to prevent spoofing (default no). # -# Internal Vars: -# pdev="p${netdev}" -# tdev=tmpbridge -# # start: -# Creates the bridge as tdev -# Copies the IP and MAC addresses from pdev to bridge -# Renames netdev to be pdev -# Renames tdev to bridge -# Enslaves pdev to bridge +# Creates the bridge +# Copies the IP and MAC addresses from netdev to bridge +# Enslaves netdev to bridge # # stop: -# Removes pdev from the bridge -# Transfers addresses, routes from bridge to pdev -# Renames bridge to tdev -# Renames pdev to netdev -# Deletes tdev +# Removes netdev from the bridge +# Transfers addresses, routes from bridge to netdev +# Deletes bridge # # status: # Print addresses, interfaces, routes @@ -56,6 +48,9 @@ dir=$(dirname "$0") findCommand "$@" evalVariables "$@" +bridge=${bridge:-xenbr0} +antispoof=${antispoof:-no} + is_network_root () { local rootfs=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $3; }}' /etc/mtab) local rootopts=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}' /etc/mtab) @@ -83,23 +78,6 @@ find_alt_device () { echo "$ifs" } -netdev=${netdev:-$(ip route list 0.0.0.0/0 | \ - sed 's/.*dev \([a-z]\+[0-9]\+\).*$/\1/')} -if is_network_root ; then - altdevs=$(find_alt_device $netdev) - for netdev in $altdevs; do break; done - if [ -z "$netdev" ]; then - [ -x /usr/bin/logger ] && /usr/bin/logger "network-bridge: bridging not supported on network root; not starting" - exit - fi -fi -netdev=${netdev:-eth0} -bridge=${bridge:-${netdev}} -antispoof=${antispoof:-no} - -pdev="p${netdev}" -tdev=tmpbridge - get_ip_info() { addr_pfx=`ip addr show dev $1 | egrep '^ *inet' | sed -e 's/ *inet //' -e 's/ .*//'` gateway=`ip route show dev $1 | fgrep default | sed 's/default via //'` @@ -111,9 +89,9 @@ do_ifup() { # use the info from get_ip_info() ip addr flush $1 ip addr add ${addr_pfx} dev $1 - ip link set dev $1 up - [ -n "$gateway" ] && ip route add default via ${gateway} fi + ip link set dev $1 up + [ -n "$gateway" ] && ip route add default via ${gateway} fi } @@ -188,17 +166,15 @@ link_exists() antispoofing () { iptables -P FORWARD DROP iptables -F FORWARD - iptables -A FORWARD -m physdev --physdev-in ${pdev} -j ACCEPT + iptables -A FORWARD -m physdev --physdev-in ${netdev} -j ACCEPT } -# Usage: show_status dev bridge -# Print ifconfig and routes. -show_status () { - local dev=$1 - local bridge=$2 - +op_status () { + netdev=${netdev:-$(brctl show | awk /$bridge/'{print $4}')} echo '============================================================' - ip addr show ${dev} + if [ -n "${netdev}" ]; then + ip addr show ${netdev} + fi ip addr show ${bridge} echo ' ' brctl show ${bridge} @@ -210,19 +186,31 @@ show_status () { } op_start () { + netdev=${netdev:-$(ip route list 0.0.0.0/0 | \ + sed 's/.*dev \([a-z]\+[0-9]\+\).*$/\1/')} + if is_network_root ; then + altdevs=$(find_alt_device $netdev) + for netdev in $altdevs; do break; done + if [ -z "$netdev" ]; then + [ -x /usr/bin/logger ] && /usr/bin/logger "network-bridge: bridging not supported on network root; not starting" + exit + fi + fi + netdev=${netdev:-eth0} + if [ "${bridge}" = "null" ] ; then return fi - if link_exists "$pdev"; then + if link_exists "$bridge"; then # The device is already up. return fi - create_bridge ${tdev} + create_bridge ${bridge} preiftransfer ${netdev} - transfer_addrs ${netdev} ${tdev} + transfer_addrs ${netdev} ${bridge} # Remember slaves for bonding interface. if [ -e /sys/class/net/${netdev}/bonding/slaves ]; then slaves=`cat /sys/class/net/${netdev}/bonding/slaves` @@ -233,17 +221,15 @@ op_start () { ip link set ${netdev} down ip addr flush ${netdev} fi - ip link set ${netdev} name ${pdev} - ip link set ${tdev} name ${bridge} - setup_bridge_port ${pdev} + setup_bridge_port ${netdev} # Restore slaves if [ -n "${slaves}" ]; then - ip link set ${pdev} up - ifenslave ${pdev} ${slaves} + ip link set ${netdev} up + ifenslave ${netdev} ${slaves} fi - add_to_bridge2 ${bridge} ${pdev} + add_to_bridge2 ${bridge} ${netdev} do_ifup ${bridge} if [ ${antispoof} = 'yes' ] ; then @@ -259,21 +245,24 @@ op_stop () { return fi - transfer_addrs ${bridge} ${pdev} + netdev=${netdev:-$(brctl show | awk /$bridge/'{print $4}')} + if [ -z "${netdev}" ]; then + return + fi + + transfer_addrs ${bridge} ${netdev} if ! ifdown ${bridge}; then get_ip_info ${bridge} fi - ip link set ${pdev} down + ip link set ${netdev} down ip addr flush ${bridge} - brctl delif ${bridge} ${pdev} + brctl delif ${bridge} ${netdev} ip link set ${bridge} down - ip link set ${bridge} name ${tdev} - ip link set ${pdev} name ${netdev} do_ifup ${netdev} - brctl delbr ${tdev} + brctl delbr ${bridge} } # adds $dev to $bridge but waits for $dev to be in running state first @@ -309,7 +298,7 @@ case "$command" in ;; status) - show_status ${netdev} ${bridge} + op_status ;; *) diff -Nurp xen-unstable.orig/tools/hotplug/Linux/network-bridges xen-unstable/tools/hotplug/Linux/network-bridges --- xen-unstable.orig/tools/hotplug/Linux/network-bridges 1970-01-01 08:00:00.000000000 +0800 +++ xen-unstable/tools/hotplug/Linux/network-bridges 2009-06-23 12:08:09.000000000 +0800 @@ -0,0 +1,19 @@ +#!/bin/bash +# +# Runs network-bridge against each ethernet card. +# + +dir=$(dirname "$0") + +run_all_ethernets() +{ + for f in /sys/class/net/*; do + netdev=$(basename $f) + if [[ $netdev =~ "^eth[0-9]+$" ]]; then + devnum=${netdev:3} + $dir/network-bridge "$@" "netdev=${netdev}" "bridge=xenbr${devnum}" + fi + done +} + +run_all_ethernets "$@" diff -Nurp xen-unstable.orig/tools/hotplug/Linux/network-dummy xen-unstable/tools/hotplug/Linux/network-dummy --- xen-unstable.orig/tools/hotplug/Linux/network-dummy 1970-01-01 08:00:00.000000000 +0800 +++ xen-unstable/tools/hotplug/Linux/network-dummy 2009-06-23 12:06:50.000000000 +0800 @@ -0,0 +1,7 @@ +#!/bin/bash +# +# Use this script as default network-script if you don't want xend to +# change dom0 networking. +# + +/bin/true _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |