Port-xen archive

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

Re: Questions about networking



On Tue, Mar 15, 2005 at 11:32:13PM +0100, Quentin Garnier wrote:
[...]
> FWIW, this afternoon when I could take a try at booting a domU, I used a
> modified vif-bridge script to do bridging by doing this:
> 
> vif = [ 'mac=lalala, bridge=bridge:bridge0:fxp0' ]
> 
> The meaning of the bridge parameter is the following:  first it starts
> with bridge to distinguish between plain ifconfig case and bridge case,
> then it bridges the vif interface with fxp0 on bridge0, creating it if
> necessary.  I'll send it tomorrow if you want.

Here it is.  Nothing complicated.  Arguably, the interface should be
removed from the bridge at down time.

-- 
Quentin Garnier - cube%cubidou.net@localhost - cube%NetBSD.org@localhost
"When I find the controls, I'll go where I like, I'll know where I want
to be, but maybe for now I'll stay right here on a silent sea."
KT Tunstall, Silent Sea, Eye to the Telescope, 2004.
#!/bin/sh
#============================================================================
# /etc/xen/vif-bridge
#
# Script for configuring a vif.
# Xend calls a vif script when configuring a vif up or down.
# This script is the default - but it can be configured for each vif.
#
# Example invocation:
#
# vif-bridge up domain=VM1 vif=vif1.0 bridge=xen-br0 mac=aa:00:00:50:02:f0
#
#
# Usage:
# vif-bridge (up|down) {VAR=VAL}*
#
# Vars:
#
# domain  name of the domain the interface is on (required).
# vif     vif interface name (required).
# mac     vif MAC address (required).
# bridge  bridge to add the vif to (required).
#
#============================================================================

# Exit if anything goes wrong
set -e

#this will be logged in xend-debug.log
echo "vif-bridge $*"

# Operation name.
OP=$1
shift

# Pull variables in args into environment
for arg ; do export "${arg}" ; done

# Required parameters. Fail if not set.
domain=${domain:?}
vif=${vif:?}
mac=${mac:?}
bridge=${bridge:?}

# Are we going up or down?
case $OP in
    up)
        # ${bridge} contains ifconfig parameters in our case.
        # It could also be parameters to brctl, or anything else we
        # want.
        # xend gives us vif?.? as interface name, but on NetBSD
        # they're called xvif?.?
        case ${bridge} in
            bridge:*)
                bgparam=${bridge#bridge:}
                bgif=${bgparam%%:*}
                lanif=${bgparam##*:}
                if ! ifconfig -l | grep ${bgif} >/dev/null; then
                        ifconfig ${bgif} create
                        brconfig ${bgif} add ${lanif} up
                fi
                ifconfig x${vif} up
                brconfig ${bgif} add x${vif} up
                ;;
            *)
                ifconfig x${vif} ${bridge}
                ;;
        esac
        exit 0

        ;;
    down)                                                                       
                                                                                
                                                   
        exit 0
        ;;
    *)
        echo 'Invalid command: ' $OP
        echo 'Valid commands are: up, down'
        exit 1
        ;;
esac

Attachment: pgpjb5tHNke5K.pgp
Description: PGP signature



Home | Main Index | Thread Index | Old Index