#!/bin/sh -x
# this script configures openvswitch for use with os-autoinst:
# * create the bridge
# * add (existing) tap devices
# * configure connection to 10.0.2.2 that works across VLANs
#

# delete existing configuration
ovs-vsctl --if-exists del-br br0

#create bridge
ovs-vsctl add-br br0

# connect with other hosts
#ovs-vsctl add-port br0 gre0 -- set interface gre0 type=gre options:remote_ip=<IP address of other host>

# add tap devices, use vlan 999 by default, the vlan number is supposed to be changed when the vm starts
ovs-vsctl add-port br0 tap0 tag=999
ovs-vsctl add-port br0 tap1 tag=999
ovs-vsctl add-port br0 tap2 tag=999
ovs-vsctl add-port br0 tap3 tag=999
ovs-vsctl add-port br0 tap4 tag=999

# the VM have unique MAC that differs in the last 16 bits (see /usr/lib/os-autoinst/backend/qemu.pm)
# the IP can conflict across vlans
# to allow connection from VM  to host os-autoinst (10.0.2.2), we have to do some IP translation
# we use simple scheme:
# MAC 52:54:00:12:XX:YY -> IP 10.1.XX.YY

# br0 has IP 10.0.2.2 and netmask /15 that covers 10.0.0.0 and 10.1.0.0 ranges
# this should be also configured permanently in /etc/sysconfig/network
ip addr add 10.0.2.2/15 dev br0
ip route add 10.0.0.0/15 dev br0
ip link set br0 up

#
# configure NAT between br0 and eth0 (SuSEfirewall)

# start os-autoinst-openvswitch.service
systemctl restart os-autoinst-openvswitch.service

# show the configuration
ovs-vsctl show
ovs-ofctl show br0
ovs-ofctl dump-flows br0
