-dnl IFR_SETUP
-dnl
-dnl Creates a directory tree for use with "interface-reconfigure --root-dir".
-m4_define([IFR_SETUP],
- [[for script in \
- interface-reconfigure \
- InterfaceReconfigure.py \
- InterfaceReconfigureBridge.py \
- InterfaceReconfigureVswitch.py
- do
- cp $top_srcdir/xenserver/opt_xensource_libexec_$script $script
- done
-
- mkdir -p etc
- cat > etc/xensource-inventory <<EOF
+m4_divert_push([PREPARE_TESTS])
+[
+# Creates a directory tree for use with "interface-reconfigure --root-dir".
+ifr_setup () {
+ for script in \
+ interface-reconfigure \
+ InterfaceReconfigure.py \
+ InterfaceReconfigureBridge.py \
+ InterfaceReconfigureVswitch.py
+ do
+ cp $top_srcdir/xenserver/opt_xensource_libexec_$script $script
+ done
+
+ mkdir -p etc
+ cat > etc/xensource-inventory <<EOF
PRODUCT_BRAND='XenServer'
PRODUCT_NAME='xenenterprise'
PRODUCT_VERSION='5.5.0'
MANAGEMENT_INTERFACE='xenbr2'
EOF
- mkdir -p etc/xensource
- echo vswitch > etc/xensource/network.conf
-
- for utility in \
- sbin/ethtool \
- sbin/ifconfig \
- sbin/ifdown \
- sbin/ifup \
- sbin/ip \
- sbin/update-issue \
- sbin/vconfig \
- usr/bin/ovs-vsctl \
- usr/sbin/brctl
- do
- mkdir -p `dirname $utility`
- cat > $utility <<'EOF'
+ mkdir -p etc/xensource
+ echo vswitch > etc/xensource/network.conf
+
+ for utility in \
+ sbin/ethtool \
+ sbin/ifconfig \
+ sbin/ifdown \
+ sbin/ifup \
+ sbin/ip \
+ sbin/update-issue \
+ sbin/vconfig \
+ usr/sbin/brctl \
+ usr/sbin/ovs-vlan-bug-workaround
+ do
+ mkdir -p `dirname $utility`
+ cat > $utility <<'EOF'
+#! /bin/sh
+echo ${0} ${*} >&2
+EOF
+ chmod +x $utility
+ done
+
+ mkdir -p usr/bin
+ cat > usr/bin/ovs-vsctl <<'EOF'
+#! /bin/sh
+echo ${0} ${*} >&2
+
+while test ${#} -ge 4; do
+ if test X"${1}" = Xget && \
+ test X"${2}" = Xinterface && \
+ test X"${4}" = Xofport; then
+ if test X"${3}" = Xeth2; then
+ echo 5
+ else
+ echo -1
+ fi
+ fi
+
+ shift
+done
+EOF
+ chmod +x usr/bin/ovs-vsctl
+
+ cat > usr/bin/ovs-ofctl <<'EOF'
#! /bin/sh
echo ${0} ${*} >&2
+
+# Check that the flow is properly formed.
+ovs-ofctl parse-flow "${3}" >/dev/null
EOF
- chmod +x $utility
- done
-
- mkdir -p etc/sysconfig/network-scripts
- configure_netdev () {
- mkdir -p sys/class/net/${1}
- echo ${2} > sys/class/net/${1}/address
- echo ${3} > sys/class/net/${1}/tx_queue_len
-
- : >> etc/sysconfig/network-scripts/ifcfg-${1}
- }
-
- configure_netdev lo 00:00:00:00:00:00 0
- configure_netdev eth0 00:22:19:22:4b:af 1000
- configure_netdev eth1 00:22:19:22:4b:b1 1000
- configure_netdev eth2 00:15:17:a0:29:80 1000
- configure_netdev eth3 00:15:17:a0:29:81 1000
- configure_netdev eth4 00:1b:21:29:ce:51 1000
-
- mkdir -p var/xapi
- cat > var/xapi/network.dbcache <<'EOF'
+ chmod +x usr/bin/ovs-ofctl
+
+ mkdir -p etc/sysconfig/network-scripts
+ configure_netdev () {
+ mkdir -p sys/class/net/${1}
+ echo ${2} > sys/class/net/${1}/address
+ echo ${3} > sys/class/net/${1}/tx_queue_len
+ if test ${1} = eth1; then
+ # No VLAN acceleration.
+ echo 0x829 > sys/class/net/${1}/features
+ else
+ # Supports VLAN acceleration.
+ echo 0x10b89 > sys/class/net/${1}/features
+ fi
+ mkdir sys/class/net/${1}/device
+ ln -s ../../../bus/pci/drivers/e1000 sys/class/net/${1}/device/driver
+
+ : >> etc/sysconfig/network-scripts/ifcfg-${1}
+ }
+
+ configure_netdev lo 00:00:00:00:00:00 0
+ configure_netdev eth0 00:22:19:22:4b:af 1000
+ configure_netdev eth1 00:22:19:22:4b:b1 1000
+ configure_netdev eth2 00:15:17:a0:29:80 1000
+ configure_netdev eth3 00:15:17:a0:29:81 1000
+ configure_netdev eth4 00:1b:21:29:ce:51 1000
+
+ mkdir -p var/xapi
+ cat > var/xapi/network.dbcache <<'EOF'
<?xml version="1.0" ?>
<xenserver-network-configuration>
<pif ref="OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6">
<VLAN_slave_of/>
+ <tunnel_access_PIF_of/>
<management>
False
</management>
</pif>
<pif ref="OpaqueRef:eea8da94-a5e6-18fc-34a7-5e9b5a235806">
<VLAN_slave_of/>
+ <tunnel_access_PIF_of/>
<management>
False
</management>
</pif>
<pif ref="OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768">
<VLAN_slave_of/>
+ <tunnel_access_PIF_of/>
<management>
False
</management>
</pif>
<pif ref="OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e">
<VLAN_slave_of/>
+ <tunnel_access_PIF_of/>
<management>
False
</management>
OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297
</master>
</VLAN_slave_of>
+ <tunnel_access_PIF_of/>
<management>
False
</management>
</pif>
<pif ref="OpaqueRef:205d1186-2cd1-d5e6-45e4-ea1698ea6e15">
<VLAN_slave_of/>
+ <tunnel_access_PIF_of/>
<management>
True
</management>
</pif>
<pif ref="OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3">
<VLAN_slave_of/>
+ <tunnel_access_PIF_of/>
<management>
False
</management>
OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c
</master>
</VLAN_slave_of>
+ <tunnel_access_PIF_of/>
<management>
False
</management>
<bridge>
xenbr0
</bridge>
- <other_config/>
+ <other_config>
+ <vswitch-disable-in-band>
+ true
+ </vswitch-disable-in-band>
+ </other_config>
<uuid>
c9eecb03-560d-61de-b6a8-56dfc766f67e
</uuid>
db7bdc03-074d-42ae-fc73-9b06de1d57f6
</uuid>
</network>
+ <pool ref="OpaqueRef:a765d06c-fc82-cc67-8f6c-fd8db45f6a84">
+ <other_config>
+ <vswitch-controller-fail-mode>
+ secure
+ </vswitch-controller-fail-mode>
+ </other_config>
+ </pool>
</xenserver-network-configuration>
EOF
-]])
+}
+
+ifr_run () {
+ ./interface-reconfigure --root-prefix="`pwd`" --no-syslog "$@"
+}
-m4_define([IFR_RUN], [./interface-reconfigure --root-prefix=$PWD --no-syslog])
+ifr_filter () {
+ sed -n -e "s,`pwd`,,g" -e 's/ -- /\
+ /g' -e '/^Running command:/!p' stderr
+}]
+m4_divert_pop([PREPARE_TESTS])
-m4_define([IFR_FILTER], [sed -n -e "s,$PWD,,g" -e 's/ -- /\
- /g' -e '/^Running command:/!p' stderr])
\f
AT_BANNER([interface-reconfigure])
AT_SETUP([non-VLAN, non-bond])
AT_KEYWORDS([interface-reconfigure])
-IFR_SETUP
+ifr_setup
-AT_CHECK([IFR_RUN --force xenbr2 up], [0], [], [stderr])
-AT_CHECK([IFR_FILTER], [0], [[Force interface xenbr2 up
+AT_CHECK([ifr_run --force xenbr2 up], [0], [], [stderr])
+AT_CHECK([ifr_filter], [0], [[Force interface xenbr2 up
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_up: xenbr2
configure_datapath: physical - [u'eth2']
configure_datapath: extra ports - []
configure_datapath: extra bonds - []
+/usr/bin/ovs-vsctl --timeout=5 -vconsole:off get-fail-mode xenbr2
Applying changes to /etc/sysconfig/network-scripts/route-xenbr2 configuration
Applying changes to /etc/sysconfig/network configuration
Applying changes to /etc/sysconfig/network-scripts/ifcfg-xenbr2 configuration
/sbin/ifconfig eth2 up mtu 1500
+/sbin/ethtool -K eth2 gro off lro off
+/usr/sbin/ovs-vlan-bug-workaround eth2 on
/usr/bin/ovs-vsctl --timeout=20
--with-iface --if-exists del-port eth2
--may-exist add-br xenbr2
--may-exist add-port xenbr2 eth2
+ set Bridge xenbr2 other-config:hwaddr="00:15:17:a0:29:80"
+ set Bridge xenbr2 fail_mode=secure
+ remove Bridge xenbr2 other_config disable-in-band
br-set-external-id xenbr2 xs-network-uuids d08c8749-0c8f-9e8d-ce25-fd364661ee99
- set Interface xenbr2 MAC="00:15:17:a0:29:80"
+/usr/bin/ovs-vsctl --timeout=5 -vconsole:off get interface eth2 ofport
+/usr/bin/ovs-ofctl add-flow xenbr2 idle_timeout=0,priority=0,in_port=5,arp,nw_proto=1,actions=local
+/usr/bin/ovs-ofctl add-flow xenbr2 idle_timeout=0,priority=0,in_port=local,arp,dl_src=00:15:17:a0:29:80,actions=5
+/usr/bin/ovs-ofctl add-flow xenbr2 idle_timeout=0,priority=0,in_port=5,dl_dst=00:15:17:a0:29:80,actions=local
+/usr/bin/ovs-ofctl add-flow xenbr2 idle_timeout=0,priority=0,in_port=local,dl_src=00:15:17:a0:29:80,actions=5
/sbin/ifup xenbr2
/sbin/update-issue
Committing changes to /etc/sysconfig/network-scripts/route-xenbr2 configuration
XEMANAGED=yes
DEVICE=xenbr2
ONBOOT=no
+NOZEROCONF=yes
TYPE=Ethernet
BOOTPROTO=dhcp
PERSISTENT_DHCLIENT=yes
# interface-reconfigure to take it back down.
AT_CHECK([configure_netdev xenbr2 00:15:17:a0:29:80 0])
-AT_CHECK([IFR_RUN --force xenbr2 down], [0], [], [stderr])
-AT_CHECK([IFR_FILTER], [0], [[Force interface xenbr2 down
+AT_CHECK([ifr_run --force xenbr2 down], [0], [], [stderr])
+AT_CHECK([ifr_filter], [0], [[Force interface xenbr2 down
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_down: xenbr2
\f
AT_SETUP([VLAN, non-bond])
AT_KEYWORDS([interface-reconfigure])
-IFR_SETUP
+ifr_setup
-AT_CHECK([IFR_RUN --force xapi3 up], [0], [], [stderr])
-AT_CHECK([IFR_FILTER], [0], [[Force interface xapi3 up
+AT_CHECK([ifr_run --force xapi3 up], [0], [], [stderr])
+AT_CHECK([ifr_filter], [0], [[Force interface xapi3 up
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_up: xapi3
Applying changes to /etc/sysconfig/network-scripts/route-xapi3 configuration
Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi3 configuration
/sbin/ifconfig eth3 up mtu 1500
+/sbin/ethtool -K eth3 gro off lro off
+/usr/sbin/ovs-vlan-bug-workaround eth3 on
/usr/bin/ovs-vsctl --timeout=20
--with-iface --if-exists del-port eth3
--may-exist add-br xenbr3
--may-exist add-port xenbr3 eth3
+ set Bridge xenbr3 other-config:hwaddr="00:15:17:a0:29:81"
+ set Bridge xenbr3 fail_mode=secure
+ remove Bridge xenbr3 other_config disable-in-band
br-set-external-id xenbr3 xs-network-uuids 2902ae1b-8013-897a-b697-0b200ea3aaa5;db7bdc03-074d-42ae-fc73-9b06de1d57f6
- set Interface xenbr3 MAC="00:15:17:a0:29:81"
--if-exists del-br xapi3
--may-exist add-br xapi3 xenbr3 123
br-set-external-id xapi3 xs-network-uuids 2902ae1b-8013-897a-b697-0b200ea3aaa5;db7bdc03-074d-42ae-fc73-9b06de1d57f6
XEMANAGED=yes
DEVICE=xapi3
ONBOOT=no
+NOZEROCONF=yes
TYPE=Ethernet
BOOTPROTO=none
MTU=1500
# interface-reconfigure to take it back down.
AT_CHECK([configure_netdev xapi3 00:23:20:AC:AF:02 0])
-AT_CHECK([IFR_RUN --force xapi3 down], [0], [], [stderr])
-AT_CHECK([IFR_FILTER], [0], [[Force interface xapi3 down
+AT_CHECK([ifr_run --force xapi3 down], [0], [], [stderr])
+AT_CHECK([ifr_filter], [0], [[Force interface xapi3 down
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_down: xapi3
\f
AT_SETUP([Bond, non-VLAN])
AT_KEYWORDS([interface-reconfigure])
-IFR_SETUP
+ifr_setup
# Pretend that bond0 exists, even though it would really be created by
# a "create-bond" call in an ovs-vsctl invocation within
# exist" after it thinks it created bond0.
AT_CHECK([configure_netdev bond0 00:23:20:e6:39:75 0])
-AT_CHECK([IFR_RUN --force xapi1 up], [0], [], [stderr])
-AT_CHECK([IFR_FILTER], [0], [[Force interface xapi1 up
+AT_CHECK([ifr_run --force xapi1 up], [0], [], [stderr])
+AT_CHECK([ifr_filter], [0], [[Force interface xapi1 up
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_up: xapi1
Applying changes to /etc/sysconfig/network-scripts/route-xapi1 configuration
Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi1 configuration
/sbin/ifconfig eth0 up mtu 1500
+/sbin/ethtool -K eth0 gro off lro off
+/usr/sbin/ovs-vlan-bug-workaround eth0 on
/sbin/ifconfig eth1 up mtu 1500
+/sbin/ethtool -K eth1 gro off lro off
+/usr/sbin/ovs-vlan-bug-workaround eth1 off
/usr/bin/ovs-vsctl --timeout=20
--if-exists del-br xenbr0
--if-exists del-br xenbr1
--may-exist add-br xapi1
--with-iface --if-exists del-port bond0
--fake-iface add-bond xapi1 bond0 eth0 eth1
- set Port bond0 MAC="00:22:19:22:4b:af" bond_downdelay=200 other-config:"bond-miimon"=100 other-config:"bond-use_carrier"=1 other-config:"bond-mode"="balance-slb" bond_updelay=31000
- br-set-external-id xapi1 xs-network-uuids 99be2da4-6c33-6f8e-49ea-3bc592fe3c85;45cbbb43-113d-a712-3231-c6463f253cef
- set Interface xapi1 MAC="00:22:19:22:4b:af"
+ set Port bond0 MAC="00:22:19:22:4b:af" other-config:bond-miimon-interval=100 bond_downdelay=200 bond_updelay=31000 other-config:bond-detect-mode=carrier lacp=off bond_mode=balance-slb
+ set Bridge xapi1 other-config:hwaddr="00:22:19:22:4b:af"
+ set Bridge xapi1 fail_mode=secure
+ remove Bridge xapi1 other_config disable-in-band
+ br-set-external-id xapi1 xs-network-uuids 45cbbb43-113d-a712-3231-c6463f253cef;99be2da4-6c33-6f8e-49ea-3bc592fe3c85
/sbin/ifup xapi1
action_up: bring up bond0
/sbin/ifconfig bond0 up
XEMANAGED=yes
DEVICE=xapi1
ONBOOT=no
+NOZEROCONF=yes
TYPE=Ethernet
BOOTPROTO=none
MTU=1500
# interface-reconfigure to take it back down.
AT_CHECK([configure_netdev xapi1 00:22:19:22:4B:AF 0])
-AT_CHECK([IFR_RUN --force xapi1 down], [0], [], [stderr])
-AT_CHECK([IFR_FILTER], [0], [[Force interface xapi1 down
+AT_CHECK([ifr_run --force xapi1 down], [0], [], [stderr])
+AT_CHECK([ifr_filter], [0], [[Force interface xapi1 down
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_down: xapi1
\f
AT_SETUP([VLAN on bond])
AT_KEYWORDS([interface-reconfigure])
-IFR_SETUP
+ifr_setup
# Pretend that bond0 exists, even though it would really be created by
# a "create-bond" call in an ovs-vsctl invocation within
# exist" after it thinks it created bond0.
AT_CHECK([configure_netdev bond0 00:23:20:e6:39:75 0])
-AT_CHECK([IFR_RUN --force xapi2 up], [0], [], [stderr])
-AT_CHECK([IFR_FILTER], [0], [[Force interface xapi2 up
+AT_CHECK([ifr_run --force xapi2 up], [0], [], [stderr])
+AT_CHECK([ifr_filter], [0], [[Force interface xapi2 up
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_up: xapi2
Applying changes to /etc/sysconfig/network-scripts/route-xapi2 configuration
Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi2 configuration
/sbin/ifconfig eth0 up mtu 1500
+/sbin/ethtool -K eth0 gro off lro off
+/usr/sbin/ovs-vlan-bug-workaround eth0 on
/sbin/ifconfig eth1 up mtu 1500
+/sbin/ethtool -K eth1 gro off lro off
+/usr/sbin/ovs-vlan-bug-workaround eth1 off
/usr/bin/ovs-vsctl --timeout=20
--if-exists del-br xenbr0
--if-exists del-br xenbr1
--may-exist add-br xapi1
--with-iface --if-exists del-port bond0
--fake-iface add-bond xapi1 bond0 eth0 eth1
- set Port bond0 MAC="00:22:19:22:4b:af" bond_downdelay=200 other-config:"bond-miimon"=100 other-config:"bond-use_carrier"=1 other-config:"bond-mode"="balance-slb" bond_updelay=31000
- br-set-external-id xapi1 xs-network-uuids 99be2da4-6c33-6f8e-49ea-3bc592fe3c85;45cbbb43-113d-a712-3231-c6463f253cef
- set Interface xapi1 MAC="00:22:19:22:4b:af"
+ set Port bond0 MAC="00:22:19:22:4b:af" other-config:bond-miimon-interval=100 bond_downdelay=200 bond_updelay=31000 other-config:bond-detect-mode=carrier lacp=off bond_mode=balance-slb
+ set Bridge xapi1 other-config:hwaddr="00:22:19:22:4b:af"
+ set Bridge xapi1 fail_mode=secure
+ remove Bridge xapi1 other_config disable-in-band
+ br-set-external-id xapi1 xs-network-uuids 45cbbb43-113d-a712-3231-c6463f253cef;99be2da4-6c33-6f8e-49ea-3bc592fe3c85
--if-exists del-br xapi2
--may-exist add-br xapi2 xapi1 4
- br-set-external-id xapi2 xs-network-uuids 99be2da4-6c33-6f8e-49ea-3bc592fe3c85;45cbbb43-113d-a712-3231-c6463f253cef
+ br-set-external-id xapi2 xs-network-uuids 45cbbb43-113d-a712-3231-c6463f253cef;99be2da4-6c33-6f8e-49ea-3bc592fe3c85
set Interface xapi2 MAC="00:22:19:22:4b:af"
/sbin/ifup xapi2
action_up: bring up bond0
XEMANAGED=yes
DEVICE=xapi2
ONBOOT=no
+NOZEROCONF=yes
TYPE=Ethernet
BOOTPROTO=none
MTU=1500
# interface-reconfigure to take it back down.
AT_CHECK([configure_netdev xapi2 00:23:20:A4:71:C2 0])
-AT_CHECK([IFR_RUN --force xapi2 down], [0], [], [stderr])
-AT_CHECK([IFR_FILTER], [0], [[Force interface xapi2 down
+AT_CHECK([ifr_run --force xapi2 down], [0], [], [stderr])
+AT_CHECK([ifr_filter], [0], [[Force interface xapi2 down
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_down: xapi2