Skip to contentSkip to conversation

help with bugs

PATCH New Ian Pratt 3 participants 3 messages Aug 4, 2005 – Aug 5, 2005

lore
Share & tools
lore

Ian Pratt

author
#0 lore raw
Quoted 4 lines
Quoted 1 line

BUG62 eth0 -> veth0 in network script can loose network

I can make this bug come and go at will based on which of the 2 network interfaces are part of the bridge. I added that information into the bugzilla bug, hopefully that helps.

Are you changing the default 'netdev' at the top of the network script?

I take it that if you try and get it to work on eth1 it fails?

BTW: I'd like to see a few changes in the way this stuff works anyhow.

Firstly, rename network to network-bridge.

Next, I'd make it such that it's possible to have multiple network-script lines, each with parameters e.g. something like:

(network-script ( network-bridge ( bridge xen-br0 ) ( netdev eth0 ) ) ) (network-script ( network-bridge ( bridge xen-br1 ) ( netdev eth1 ) ) )

[having multiple interfaces should result in multiple vif0.x and vethX devices]

And then the vif-script along with default parameters e.g.

( vif-script ( vif-bridge ( bridge xen-br0 ) ( antispoof no ) ) )

Do others agree?
Could someone work up a patch?

Thanks,
Ian

#1 lore raw
Quoted 6 lines · Ian Pratt
Quoted 4 lines
Quoted 1 line

BUG62 eth0 -> veth0 in network script can loose network

I can make this bug come and go at will based on which of the 2 network interfaces are part of the bridge. I added that information into the bugzilla bug, hopefully that helps.

Are you changing the default 'netdev' at the top of the network script?

No actually, I guess I'm not even clear why veth0 exists, as everything works quite nicely for me without it functioning.

-Sean

Signature · 9 lines
__________________________________________________________________

Sean Dague                                       Mid-Hudson Valley
sean at dague dot net                            Linux Users Group
http://dague.net                                 http://mhvlug.org

There is no silver bullet.  Plus, werewolves make better neighbors
than zombies, and they tend to keep the vampire population down.
__________________________________________________________________

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

#2 lore raw

PATCH 1/1 network -> network-bridge rename WAS: Re: RE: help with bugs

In reply to Ian Pratt
Quoted 3 lines · Ian Pratt

BTW: I'd like to see a few changes in the way this stuff works anyhow.

Firstly, rename network to network-bridge.

Ian, I had started something along these lines. Just for grins, resubmitting a freshly regenerated patch that just does above.

Quoted 2 lines

Next, I'd make it such that it's possible to have multiple network-script lines, each with parameters e.g. something like:

I started this - but it became less than desirable to stick all of this into xend. That is, what I was thinking was - we simply point the tools to a configuration file that's a top level script, and hide all of the meat of the work inside those scripts. If we change the syntax, we wouldn't require a change to the tools, would be one advantage.

Quoted 6 lines

(network-script ( network-bridge ( bridge xen-br0 ) ( netdev eth0 ) ) ) (network-script ( network-bridge ( bridge xen-br1 ) ( netdev eth1 ) ) )

[having multiple interfaces should result in multiple vif0.x and vethX devices]

Quoted 6 lines

And then the vif-script along with default parameters e.g.

( vif-script ( vif-bridge ( bridge xen-br0 ) ( antispoof no ) ) )

Do others agree?
Could someone work up a patch?

Or we could do the above..

tools/examples/network +0 -246
diff -urN xen-unstable-0804/tools/examples/network xen-p1-0804/tools/examples/network
@@ -1,246 +0,0 @@
-#!/bin/sh
-#============================================================================
-# Default Xen network start/stop script.
-# Xend calls a network script when it starts.
-# The script name to use is defined in /etc/xen/xend-config.sxp
-# in the network-script field.
-#
-# This script creates a bridge (default xen-br0), adds a device
-# (default eth0) to it, copies the IP addresses from the device
-# to the bridge and adjusts the routes accordingly.
-#
-# If all goes well, this should ensure that networking stays up.
-# However, some configurations are upset by this, especially
-# NFS roots. If the bridged setup does not meet your needs,
-# configure a different script, for example using routing instead.
-#
-# Usage:
-#
-# network (start|stop|status) {VAR=VAL}*
-#
-# Vars:
-#
-# bridge     The bridge to use (default xen-br0).
-# netdev     The interface to add to the bridge (default eth0).
-# antispoof  Whether to use iptables to prevent spoofing (default yes).
-#
-# start:
-# Creates the bridge and enslaves netdev to it.
-# Copies the IP addresses from netdev to the bridge.
-# Deletes the routes to netdev and adds them on bridge.
-#
-# stop:
-# Removes netdev from the bridge.
-# Deletes the routes to bridge and adds them to netdev.
-#
-# status:
-# Print ifconfig for netdev and bridge.
-# Print routes.
-#
-#============================================================================
-
-# Exit if anything goes wrong.
-set -e 
-
-# First arg is the operation.
-OP=$1
-shift
-
-# Pull variables in args in to environment.
-for arg ; do export "${arg}" ; done
-
-bridge=${bridge:-xen-br0}
-netdev=${netdev:-eth0}
-antispoof=${antispoof:-yes}
-
-echo "*network $OP bridge=$bridge netdev=$netdev antispoof=$antispoof" >&2
-
-# Usage: transfer_addrs src dst
-# Copy all IP addresses (including aliases) from device $src to device $dst.
-transfer_addrs () {
-    local src=$1
-    local dst=$2
-    # Don't bother if $dst already has IP addresses.
-    if ip addr show dev ${dst} | egrep -q '^ *inet ' ; then
-        return
-    fi
-    # Address lines start with 'inet' and have the device in them.
-    # Replace 'inet' with 'ip addr add' and change the device name $src
-    # to 'dev $src'.
-    ip addr show dev ${src} | egrep '^ *inet ' | sed -e "
-s/inet/ip addr add/
-s@\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+/[0-9]\+\)@\1@
-s/${src}/dev ${dst}/
-" | sh -e
-    # Remove automatic routes on destionation device
-    ip route list | sed -ne "
-/dev ${dst}\( \|$\)/ {
-  s/^/ip route del /
-  p
-}" | sh -e
-}
-
-# Usage: del_addrs src
-del_addrs () {
-    local src=$1
-    ip addr show dev ${src} | egrep '^ *inet ' | sed -e "
-s/inet/ip addr del/
-s@\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)/[0-9]\+@\1@
-s/${src}/dev ${src}/
-" | sh -e
-}
-
-# Usage: transfer_routes src dst
-# Get all IP routes to device $src, delete them, and
-# add the same routes to device $dst.
-# The original routes have to be deleted, otherwise adding them
-# for $dst fails (duplicate routes).
-transfer_routes () {
-    local src=$1
-    local dst=$2
-    # List all routes and grep the ones with $src in.
-    # Stick 'ip route del' on the front to delete.
-    # Change $src to $dst and use 'ip route add' to add.
-    ip route list | sed -ne "
-/dev ${src}\( \|$\)/ {
-  h
-  s/^/ip route del /
-  P
-  g
-  s/${src}/${dst}/
-  s/^/ip route add /
-  P
-  d
-}" | sh -e
-}
-
-# 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
-    ifconfig ${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
-}
-
-# Usage: antispoofing dev bridge
-# Set the default forwarding policy for $dev to drop.
-# Allow forwarding to the bridge.
-antispoofing () {
-    local dev=$1
-    local bridge=$2
-
-    iptables -P FORWARD DROP
-    iptables -A FORWARD -m physdev --physdev-in ${dev} -j ACCEPT
-}
-
-# Usage: show_status dev bridge
-# Print ifconfig and routes.
-show_status () {
-    local dev=$1
-    local bridge=$2
-    
-    echo '============================================================'
-    ifconfig ${dev}
-    ifconfig ${bridge}
-    echo ' '
-    ip route list
-    echo ' '
-    route -n
-    echo '============================================================'
-}
-
-op_start () {
-    if [ "${bridge}" == "null" ] ; then
-        return
-    fi
-
-    create_bridge ${bridge}
-
-    if ifconfig 2>/dev/null | grep -q veth0 ; then
-        return
-    fi
-
-    if ifconfig veth0 2>/dev/null | grep -q veth0 ; then
-        # Propagate MAC address and ARP responsibilities to virtual interface.
-        mac=`ifconfig ${netdev} | grep HWadd | sed -e 's/.*\(..:..:..:..:..:..\).*/\1/'`
-        ifconfig veth0 down
-        ifconfig veth0 hw ether ${mac}
-        ifconfig veth0 arp up
-        transfer_addrs ${netdev} veth0
-        transfer_routes ${netdev} veth0
-        del_addrs ${netdev}
-        ifconfig ${netdev} -arp down
-        ifconfig ${netdev} hw ether fe:ff:ff:ff:ff:ff up
-        # Bring up second half of virtual device and attach it to the bridge.
-        ifconfig vif0.0 up
-        add_to_bridge ${bridge} vif0.0
-    else
-        transfer_addrs ${netdev} ${bridge}
-        transfer_routes ${netdev} ${bridge}
-    fi
-
-    # Attach the real interface to the bridge.
-    add_to_bridge ${bridge} ${netdev}
-    
-    if [ ${antispoof} == 'yes' ] ; then
-        antispoofing ${netdev} ${bridge}
-    fi
-}
-
-op_stop () {
-    if [ "${bridge}" == "null" ] ; then
-        return
-    fi
-
-    brctl delif ${bridge} ${netdev}
-
-    if ifconfig veth0 2>/dev/null | grep -q veth0 ; then
-        brctl delif ${bridge} vif0.0
-        ifconfig vif0.0 down
-        mac=`ifconfig veth0 | grep HWadd | sed -e 's/.*\(..:..:..:..:..:..\).*/\1/'`
-        ifconfig ${netdev} down
-        ifconfig ${netdev} hw ether ${mac}
-        ifconfig ${netdev} arp up
-        transfer_addrs veth0 ${netdev}
-        transfer_routes veth0 ${netdev}
-        del_addrs veth0
-        ifconfig veth0 -arp down
-        ifconfig veth0 hw ether 00:00:00:00:00:00
-    else
-        transfer_routes ${bridge} ${netdev}
-    fi
-}
-
-case ${OP} in
-  start)
-        op_start
-        ;;
-    
-    stop)
-        op_stop
-        ;;
-
-    status)
-        show_status ${netdev} ${bridge}
-       ;;
-
-    *)
-       echo 'Unknown command: ' ${OP} >&2
-       echo 'Valid commands are: start, stop, status' >&2
-       exit 1
-esac
tools/examples/network-bridge +246 -0

246 lines not on this page · raw message

tools/examples/README +12 -2
diff -urN xen-unstable-0804/tools/examples/README xen-p1-0804/tools/examples/README
@@ -9,8 +9,18 @@
 send it (preferably with a little summary to go in this file) to
 <[email protected]> so we can add it to this directory.
 
-network             - default network setup script called by xend at startup.
-vif-bridge          - default virtual network interface setup script.
+Network setup scripts called by xend on startup:
+------------------------------------------------
+network-bridge      - for bridging case 
+network-route       - for routing 
+network-nat         - for routing with NAT
+
+Vif setup script called by xen on startup:
+------------------------------------------
+vif-bridge          - for bridging case
+vif-route           - for routing
+vif-nat             - for routing with NAT
+
 xend-config.sxp     - default xend configuration file.
 xmexample1          - example configuration script for 'xm create'.
 xmexample2          - a more complex configuration script for 'xm create'.
tools/examples/xend-config.sxp +7 -1
diff -urN xen-unstable-0804/tools/examples/xend-config.sxp xen-p1-0804/tools/examples/xend-config.sxp
@@ -26,9 +26,15 @@
 # The default script used to control virtual interfaces.
 #(vif-script         vif-route)
 
+## Use the following if VIF traffic is routed/NAT.
+# The script used to start/stop networking for xend.
+#(network-script     network-nat)
+# The default script used to control virtual interfaces.
+#(vif-script         vif-nat)
+
 ## Use the following if VIF traffic is bridged.
 # The script used to start/stop networking for xend.
-(network-script    network)
+(network-script    network-bridge)
 # The default bridge that virtual interfaces should be connected to.
 (vif-bridge        xen-br0)
 # The default script used to control virtual interfaces.

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel