Your assumptions where correct i was using the vlan= settings with in the qemu command. I have setup the true vlan's and bridged my taps to them. With doing it this way do I need to use iptables to ensure that network traffic "flows" correctly? I ask this becuase if I take out the vlan= settin gfrom the qemu command I do not seem to have the connectivity that I am looking for?
Here is my qemu-ifup script. There is a good chance my bridges are not configured correctly.
#!/bin/sh
#
# script to bring up the tun device in QEMU in bridged mode
# first parameter is name of tap device (e.g. tap0)
#
# some constants specific to the local host - change to suit your host
#
ETH0IP=192.168.#.#
GATEWAY=192.168.#.#
BROADCAST=192.168.#.255
TAP1IP=172.16.#.#
VLAN2GW=172.16.#.#
TAP1BC=172.16.#.255
TAP2IP=172.16.#.#
TAP2GW=172.16..#.#
TAP2BC=172.16.#.255
TAP3IP=10.0.#.#
TAP3GW=10.0.#.#
TAP3BC=10.0.0.255
#
# First take eth0 down, then bring it up with IP 0.0.0.0
#
#/sbin/ifdown eth0
/sbin/ifconfig eth0 0.0.0.0 promisc up
#/sbin/ifdown vlan4
/sbin/ifconfig vlan4 0.0.0.0 promisc up
#/sbin/ifdown vlan5
/sbin/ifconfig vlan5 0.0.0.0 promisc up
#/sbin/ifdown vlan101
/sbin/ifconfig vlan101 0.0.0.0 promisc up
#
# Bring up the tap device (name specified as first argument, by QEMU)
#
/usr/sbin/openvpn --mktun --dev $1 --user `id -un`
/sbin/ifconfig $1 0.0.0.0 promisc up
/usr/sbin/openvpn --mktun --dev $2 --user `id -un`
/sbin/ifconfig $2 0.0.0.0 promisc up
/usr/sbin/openvpn --mktun --dev $3 --user `id -un`
/sbin/ifconfig $3 0.0.0.0 promisc up
/usr/sbin/openvpn --mktun --dev $4 --user `id -un`
/sbin/ifconfig $4 0.0.0.0 promisc up
/usr/sbin/openvpn --mktun --dev $5 --user `id -un`
/sbin/ifconfig $5 0.0.0.0 promisc up
#
# create the bridge between eth0 and the tap device
#
/usr/sbin/brctl addbr br0
/usr/sbin/brctl addif br0 eth0
/usr/sbin/brctl addif br0 vlan4
/usr/sbin/brctl addif br0 $1
#/usr/sbin/brctl addif br0 $2
#/usr/sbin/brctl addif br0 $3
#/usr/sbin/brctl addif br0 $4
#/usr/sbin/brctl addif br0 $5
/usr/sbin/brctl addbr br1
/usr/sbin/brctl addif br1 vlan5
/usr/sbin/brctl addif br1 $2
/usr/sbin/brctl addif br1 $3
/usr/sbin/brctl addbr br2
/usr/sbin/brctl addif br2 vlan101
/usr/sbin/brctl addif br2 $4
/usr/sbin/brctl addif br2 $5
#/usr/sbin/brctl addbr br3
#/usr/sbin/brctl addif br3 $4
#/usr/sbin/brctl addif br3 $5
#
# only a single bridge so loops are not possible, turn off spanning tree protocol
#
/usr/sbin/brctl stp br0 off
/usr/sbin/brctl stp br1 off
/usr/sbin/brctl stp br2 off
#/usr/sbin/brctl stp br3 off
#
# Bring up the bridge with ETH0IP and add the default route
#
/sbin/ifconfig br0 $ETH0IP netmask 255.255.255.0 broadcast $BROADCAST
/sbin/route add default gw $GATEWAY
/sbin/ifconfig br1 $TAP1IP netmask 255.255.255.0 broadcast $TAP1BC
#/sbin/ifconfig br2 $TAP2IP netmask 255.255.255.0 broadcast $TAP2BC
/sbin/ifconfig br2 $TAP3IP netmask 255.255.255.0 broadcast $TAP3BC
#
# stop firewall - comment this out if you don't use Firestarter
#
#/sbin/service firestarter stop