[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [patch] xen bridged network setup fixes



On Fri, May 12, 2006 at 12:24:18PM +0200, Gerd Hoffmann wrote:

>   Hi,
> 
> The attached patch fixes the setup of the bridge ports and the bridge
> itself.  Changes:
> 
>   * move some functions to xen-network-common.sh, so both vif-bridge
>     and network-bridge can use them.
>   * add a new function to configure bridge ports and use it.
>   * make sure arp requests, ipv6 autoconfiguration and ipv6 router
>     solicitations are disabled for the bridge ports and also for the
>     bridge itself.
> 
> cheers,
> 
>   Gerd


Could you please make this patch against xen-unstable, not against your
installed machine?  Also, we need a Signed-off-by: line before we can accept
it.

Thanks,

Ewan.

> 
> -- 
> Gerd Hoffmann <kraxel@xxxxxxx>
> Erst mal heiraten, ein, zwei Kinder, und wenn alles läuft
> geh' ich nach drei Jahren mit der Familie an die Börse.
> http://www.suse.de/~kraxel/julika-dora.jpeg

> --- /etc/xen/scripts/vif-bridge.ipv6  2006-05-11 17:23:16.000000000 +0200
> +++ /etc/xen/scripts/vif-bridge       2006-05-12 09:12:12.000000000 +0200
> @@ -48,16 +48,8 @@
>  
>  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)
> --- /etc/xen/scripts/network-bridge.ipv6      2006-05-11 17:23:30.000000000 
> +0200
> +++ /etc/xen/scripts/network-bridge   2006-05-12 10:27:04.000000000 +0200
> @@ -137,29 +137,6 @@
>  }
>  
>  
> -# 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
> -    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
> -     brctl addif ${bridge} ${dev}
> -    fi
> -}
> -
>  # Set the default forwarding policy for $dev to drop.
>  # Allow forwarding to the bridge.
>  antispoofing () {
> @@ -220,15 +197,14 @@
>       ifdown ${netdev}
>       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}
> +
>          ip link set ${netdev} up
>       ifup ${hwddev}
>      else
> @@ -286,6 +262,7 @@
>      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
> --- /etc/xen/scripts/xen-network-common.sh.ipv6       2006-05-12 
> 08:58:19.000000000 +0200
> +++ /etc/xen/scripts/xen-network-common.sh    2006-05-12 10:41:47.000000000 
> +0200
> @@ -67,3 +67,57 @@
>  {
>    first_file -x /etc/init.d/{dhcp3-server,dhcp,dhcpd}
>  }
> +
> +# configure interfaces which act as pure bridge ports:
> +#  - make quiet: no arp, no 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} up    # creates ipv6 conf dir
> +    ip link set ${dev} down
> +
> +    # ... and configure
> +    if test -f /proc/sys/net/ipv6/conf/${dev}/autoconf; then
> +     echo 0 > /proc/sys/net/ipv6/conf/${dev}/autoconf
> +     echo 0 > /proc/sys/net/ipv6/conf/${dev}/router_solicitations
> +    fi
> +    ip link set ${dev} arp 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} up        # creates ipv6 conf dir
> +     if test -f /proc/sys/net/ipv6/conf/${bridge}/autoconf; then
> +         echo 0 > /proc/sys/net/ipv6/conf/${bridge}/autoconf
> +         echo 0 > /proc/sys/net/ipv6/conf/${bridge}/router_solicitations
> +     fi
> +    else
> +     ip link set ${bridge} up
> +    fi
> +}
> +
> +# 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
> +}
> +

> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.