Scripts/centos-bridge-setup.sh
From Xen
				
				
				Jump to navigationJump to search
				
				
The following script sets up xen bridges for each eth0 device on a CentOS Dom0
#!/bin/bash
default_netdev="NONE"
netdevs=()
function os-get-network-devices()
{
    local line
    
    while read line ; do
	local reg="^default.* dev ([0-9a-zA-Z]*) "
	if [[ $line =~ $reg  ]] ; then
	    default_netdev=${BASH_REMATCH[1]}
	fi
	reg="^[0-9./]* dev ([0-9a-zA-Z]*) "
	if [[ $line =~ $reg  ]] ; then
	    netdevs=(${netdevs[@]} ${BASH_REMATCH[1]})
	fi
    done < <(ip route show)
}
function centos-host-setup-bridge-c7-tgt() {
    local dev
    local default_con_uuid
    local slave_mac
    local slave_type
    local br="xenbr0"
    os-get-main-network-device var=dev
    
    if [[ ! "$dev" ]]; then
	fail "Couldn't find any active network devices during installation to configure."
    fi
    default_con_uuid=`/usr/bin/nmcli -t --fields UUID,DEVICE con show | grep $dev | awk -F: '{print $1}'`
    slave_mac=`/usr/bin/nmcli dev show $dev | grep HWADDR | awk '{print $2}'`
    slave_type=`/usr/bin/nmcli -t --fields TYPE,DEVICE con show | grep $dev | awk -F: '{print $1}'`
    xinfo "Creating $br"
    /usr/bin/nmcli con add type bridge con-name $br ifname $br
    /usr/bin/nmcli con modify $br bridge.stp no
    /usr/bin/nmcli con modify $br bridge.hello-time 0
    #info "adding $dev to bridge $br"
    #/usr/bin/nmcli con add type bridge-slave con-name $br-slave_$dev ifname $dev master $br
    #/usr/bin/nmcli con modify $br-slave_$dev $slave_type.mac-address $slave_mac
    #stopping the default connection to get hold of default device
    #/usr/bin/nmcli con modify $default_con_uuid connection.autoconnect no
    xinfo "Reconfiguguring $dev"
    # Make sure *any* ethernet-style device gets identified as the main connection
    /usr/bin/nmcli con modify $default_con_uuid connection.interface-name ""
    /usr/bin/nmcli con modify $default_con_uuid connection.master $br connection.slave-type bridge
    xinfo "Restarting network"
    service network restart
}
changed="false"
function make-bridge-for-network
{
    local dev=$1
    local br=$2
    local default_con_uuid
    local slave_mac
    local slave_type
    echo Setting up bridge $br for netdev $dev
    default_con_uuid=$(/usr/bin/nmcli -t --fields UUID,DEVICE con show | grep $dev | awk -F: '{print $1}')
    echo "Creating $br"
    /usr/bin/nmcli con add type bridge con-name $br ifname $br
    /usr/bin/nmcli con modify $br bridge.stp no
    /usr/bin/nmcli con modify $br bridge.hello-time 0
    /usr/bin/nmcli con modify $default_con_uuid connection.master $br connection.slave-type bridge
    changed="true"
}
os-get-network-devices
# Find 'primary' interface, make xenbr0
if [[ ! $default_netdev =~ xenbr* ]] ; then
    make-bridge-for-network $default_netdev xenbr0
else
    echo $default_netdev already set up
fi
# Find other interfaces, make xenbrN
count=0
for netdev in ${netdevs[@]} ; do
    if [[ "$netdev" = "$default_netdev" ]] ; then
	continue
    fi
    if [[ ! $netdev =~ xenbr* ]] ; then
	count=$(($count+1))
	br="xenbr$count"
	make-bridge-for-network $netdev $br
    else
	echo $netdev already set up
    fi
done
if $changed ; then
    echo "Restarting network"
    service network restart
fi

