From: kaf24@firebug.cl.cam.ac.uk Date: Sat, 17 Jun 2006 07:40:50 +0000 (+0100) Subject: [TOOLS] Clean up the network setup scripts. Create some X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15921^2~49 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ac85f84b5378611bae4a912e1c1022be2910e55b;p=xen.git [TOOLS] Clean up the network setup scripts. Create some setup functions and use them everywhere. Signed-off-by: Gerd Hoffmann --- diff --git a/tools/examples/network-bridge b/tools/examples/network-bridge index 2570d0faed..49b79db95b 100755 --- a/tools/examples/network-bridge +++ b/tools/examples/network-bridge @@ -151,30 +151,6 @@ link_exists() fi } - -# Usage: create_bridge bridge -create_bridge () { - local bridge=$1 - - # Don't create the bridge if it already exists. - if ! brctl show | grep -q ${bridge} ; then - brctl addbr ${bridge} - brctl stp ${bridge} off - brctl setfd ${bridge} 0 - fi - ip link set ${bridge} up -} - -# Usage: add_to_bridge bridge dev -add_to_bridge () { - local bridge=$1 - local dev=$2 - # Don't add $dev to $bridge if it's already on a bridge. - if ! brctl show | grep -q ${dev} ; then - brctl addif ${bridge} ${dev} - fi -} - # Set the default forwarding policy for $dev to drop. # Allow forwarding to the bridge. antispoofing () { @@ -238,14 +214,13 @@ using loopback.nloopbacks= on the domain 0 kernel command line. fi ip link set ${netdev} name ${pdev} ip link set ${vdev} name ${netdev} - ip link set ${pdev} down arp off - ip link set ${pdev} addr fe:ff:ff:ff:ff:ff - ip addr flush ${pdev} + + setup_bridge_port ${pdev} + setup_bridge_port ${vif0} ip link set ${netdev} addr ${mac} arp on - add_to_bridge ${bridge} ${vif0} + ip link set ${bridge} up - ip link set ${vif0} up - ip link set ${pdev} up + add_to_bridge ${bridge} ${vif0} add_to_bridge2 ${bridge} ${pdev} do_ifup ${netdev} else @@ -301,6 +276,7 @@ add_to_bridge2() { local maxtries=10 echo -n "Waiting for ${dev} to negotiate link." + ip link set ${dev} up for i in `seq ${maxtries}` ; do if ifconfig ${dev} | grep -q RUNNING ; then break diff --git a/tools/examples/vif-bridge b/tools/examples/vif-bridge index 27e2b23a3a..c9d2b49316 100755 --- a/tools/examples/vif-bridge +++ b/tools/examples/vif-bridge @@ -48,16 +48,8 @@ fi case "$command" in online) - if brctl show | grep -q "$vif" - then - log debug "$vif already attached to a bridge" - exit 0 - fi - - brctl addif "$bridge" "$vif" || - fatal "brctl addif $bridge $vif failed" - - ifconfig "$vif" up || fatal "ifconfig $vif up failed" + setup_bridge_port "$vif" + add_to_bridge "$bridge" "$vif" ;; offline) diff --git a/tools/examples/xen-network-common.sh b/tools/examples/xen-network-common.sh index 0cd37e6e95..37bdd77586 100644 --- a/tools/examples/xen-network-common.sh +++ b/tools/examples/xen-network-common.sh @@ -104,3 +104,48 @@ find_dhcpd_init_file() { first_file -x /etc/init.d/{dhcp3-server,dhcp,dhcpd} } + +# configure interfaces which act as pure bridge ports: +# - make quiet: no arp, no multicast (ipv6 autoconf) +# - set mac address to fe:ff:ff:ff:ff:ff +setup_bridge_port() { + local dev="$1" + + # take interface down ... + ip link set ${dev} down + + # ... and configure it + ip link set ${dev} arp off + ip link set ${dev} multicast off + ip link set ${dev} addr fe:ff:ff:ff:ff:ff + ip addr flush ${dev} +} + +# Usage: create_bridge bridge +create_bridge () { + local bridge=$1 + + # Don't create the bridge if it already exists. + if [ ! -e "/sys/class/net/${bridge}/bridge" ]; then + brctl addbr ${bridge} + brctl stp ${bridge} off + brctl setfd ${bridge} 0 + ip link set ${bridge} arp off + ip link set ${bridge} multicast off + fi + ip link set ${bridge} up +} + +# Usage: add_to_bridge bridge dev +add_to_bridge () { + local bridge=$1 + local dev=$2 + + # Don't add $dev to $bridge if it's already on a bridge. + if [ -e "/sys/class/net/${bridge}/brif/${dev}" ]; then + return + fi + brctl addif ${bridge} ${dev} + ip link set ${dev} up +} +