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'
BUILD_NUMBER='24648p'
KERNEL_VERSION='2.6.18-128.1.6.el5.xs5.5.0.505.1024xen'
XEN_VERSION='3.3.1'
INSTALLATION_DATE='2010-02-10 16:45:28.748345'
PRIMARY_DISK='/dev/disk/by-id/scsi-360022190add7fc001241a14e0ee3e85c'
BACKUP_PARTITION='/dev/disk/by-id/scsi-360022190add7fc001241a14e0ee3e85c-part2'
INSTALLATION_UUID='852ee692-71b4-439e-abfb-0eba72dc85f0'
CONTROL_DOMAIN_UUID='44e6b66e-3074-4a3c-bbcd-756d845a3b56'
DEFAULT_SR_PHYSDEVS='/dev/sda3'
DOM0_MEM='752'
MANAGEMENT_INTERFACE='xenbr2'
EOF

        mkdir -p etc/xensource
        echo vswitch > etc/xensource/network.conf

        for utility in \
            sbin/ethtool \
            sbin/ifdown \
            sbin/ifup \
            sbin/ip \
            sbin/update-issue \
            sbin/vconfig \
            usr/sbin/brctl
        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 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>
                <bond_slave_of>
                        OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
                </bond_slave_of>
                <uuid>
                        bd62a141-091f-3909-e334-0334f67ff3be
                </uuid>
                <IP>
                        
                </IP>
                <VLAN_master_of>
                        OpaqueRef:NULL
                </VLAN_master_of>
                <VLAN>
                        -1
                </VLAN>
                <netmask>
                        
                </netmask>
                <other_config/>
                <MAC>
                        00:22:19:22:4b:af
                </MAC>
                <ip_configuration_mode>
                        None
                </ip_configuration_mode>
                <DNS>
                        
                </DNS>
                <device>
                        eth0
                </device>
                <bond_master_of/>
                <currently_attached>
                        False
                </currently_attached>
                <gateway>
                        
                </gateway>
                <network>
                        OpaqueRef:83e4a934-aeb5-e6f0-a743-d1c7ef7364c5
                </network>
        </pif>
        <pif ref="OpaqueRef:eea8da94-a5e6-18fc-34a7-5e9b5a235806">
                <VLAN_slave_of/>
                <tunnel_access_PIF_of/>
                <management>
                        False
                </management>
                <bond_slave_of>
                        OpaqueRef:NULL
                </bond_slave_of>
                <uuid>
                        df8d35c2-cc3a-a623-7065-d987a29feb75
                </uuid>
                <IP>
                        
                </IP>
                <VLAN_master_of>
                        OpaqueRef:NULL
                </VLAN_master_of>
                <VLAN>
                        -1
                </VLAN>
                <netmask>
                        
                </netmask>
                <other_config/>
                <MAC>
                        00:1b:21:29:ce:51
                </MAC>
                <ip_configuration_mode>
                        None
                </ip_configuration_mode>
                <DNS>
                        
                </DNS>
                <device>
                        eth4
                </device>
                <bond_master_of/>
                <currently_attached>
                        False
                </currently_attached>
                <gateway>
                        
                </gateway>
                <network>
                        OpaqueRef:bf51b4d3-7bdc-ea55-ba21-539b150b0531
                </network>
        </pif>
        <pif ref="OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768">
                <VLAN_slave_of/>
                <tunnel_access_PIF_of/>
                <management>
                        False
                </management>
                <bond_slave_of>
                        OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
                </bond_slave_of>
                <uuid>
                        2f87fc95-5ab4-571a-2487-3f4ac1985663
                </uuid>
                <IP>
                        
                </IP>
                <VLAN_master_of>
                        OpaqueRef:NULL
                </VLAN_master_of>
                <VLAN>
                        -1
                </VLAN>
                <netmask>
                        
                </netmask>
                <other_config/>
                <MAC>
                        00:22:19:22:4b:b1
                </MAC>
                <ip_configuration_mode>
                        None
                </ip_configuration_mode>
                <DNS>
                        
                </DNS>
                <device>
                        eth1
                </device>
                <bond_master_of/>
                <currently_attached>
                        False
                </currently_attached>
                <gateway>
                        
                </gateway>
                <network>
                        OpaqueRef:92b41bf6-aa21-45d3-1c86-c87a5fa98f7d
                </network>
        </pif>
        <pif ref="OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e">
                <VLAN_slave_of/>
                <tunnel_access_PIF_of/>
                <management>
                        False
                </management>
                <bond_slave_of>
                        OpaqueRef:NULL
                </bond_slave_of>
                <uuid>
                        d2dfdab3-daf4-afea-f055-a25a0d24d714
                </uuid>
                <IP>
                        
                </IP>
                <VLAN_master_of>
                        OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c
                </VLAN_master_of>
                <VLAN>
                        4
                </VLAN>
                <netmask>
                        
                </netmask>
                <other_config/>
                <MAC>
                        fe:ff:ff:ff:ff:ff
                </MAC>
                <ip_configuration_mode>
                        None
                </ip_configuration_mode>
                <DNS>
                        
                </DNS>
                <device>
                        bond0
                </device>
                <bond_master_of/>
                <currently_attached>
                        True
                </currently_attached>
                <gateway>
                        
                </gateway>
                <network>
                        OpaqueRef:a63afad0-fb4c-b4a4-3696-cbb3d88afc47
                </network>
        </pif>
        <pif ref="OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc">
                <VLAN_slave_of>
                        <master>
                                OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297
                        </master>
                </VLAN_slave_of>
                <tunnel_access_PIF_of/>
                <management>
                        False
                </management>
                <bond_slave_of>
                        OpaqueRef:NULL
                </bond_slave_of>
                <uuid>
                        f4ba396e-a993-a592-5fbc-a1d566afb59e
                </uuid>
                <IP>
                        10.0.0.188
                </IP>
                <VLAN_master_of>
                        OpaqueRef:NULL
                </VLAN_master_of>
                <VLAN>
                        -1
                </VLAN>
                <netmask>
                        255.0.0.0
                </netmask>
                <other_config/>
                <MAC>
                        00:15:17:a0:29:81
                </MAC>
                <ip_configuration_mode>
                        Static
                </ip_configuration_mode>
                <DNS>
                        
                </DNS>
                <device>
                        eth3
                </device>
                <bond_master_of/>
                <currently_attached>
                        True
                </currently_attached>
                <gateway>
                        
                </gateway>
                <network>
                        OpaqueRef:d9189da2-d00b-61ba-8a6d-ac42cc868e32
                </network>
        </pif>
        <pif ref="OpaqueRef:205d1186-2cd1-d5e6-45e4-ea1698ea6e15">
                <VLAN_slave_of/>
                <tunnel_access_PIF_of/>
                <management>
                        True
                </management>
                <bond_slave_of>
                        OpaqueRef:NULL
                </bond_slave_of>
                <uuid>
                        646ca9a1-36ad-e2f9-3ecc-1e5622c201c2
                </uuid>
                <IP>
                        172.18.3.188
                </IP>
                <VLAN_master_of>
                        OpaqueRef:NULL
                </VLAN_master_of>
                <VLAN>
                        -1
                </VLAN>
                <netmask>
                        255.255.0.0
                </netmask>
                <other_config/>
                <MAC>
                        00:15:17:a0:29:80
                </MAC>
                <ip_configuration_mode>
                        DHCP
                </ip_configuration_mode>
                <DNS>
                        
                </DNS>
                <device>
                        eth2
                </device>
                <bond_master_of/>
                <currently_attached>
                        True
                </currently_attached>
                <gateway>
                        
                </gateway>
                <network>
                        OpaqueRef:6e7c6e81-6b5e-b91f-e1f9-9e028567bdfe
                </network>
        </pif>
        <pif ref="OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3">
                <VLAN_slave_of/>
                <tunnel_access_PIF_of/>
                <management>
                        False
                </management>
                <bond_slave_of>
                        OpaqueRef:NULL
                </bond_slave_of>
                <uuid>
                        3941edd2-865b-8dd8-61f0-199f5e1fa652
                </uuid>
                <IP>
                        
                </IP>
                <VLAN_master_of>
                        OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297
                </VLAN_master_of>
                <VLAN>
                        123
                </VLAN>
                <netmask>
                        
                </netmask>
                <other_config/>
                <MAC>
                        fe:ff:ff:ff:ff:ff
                </MAC>
                <ip_configuration_mode>
                        None
                </ip_configuration_mode>
                <DNS>
                        
                </DNS>
                <device>
                        eth3
                </device>
                <bond_master_of/>
                <currently_attached>
                        True
                </currently_attached>
                <gateway>
                        
                </gateway>
                <network>
                        OpaqueRef:240fb5f8-addc-6ea3-f921-2a42b42acd17
                </network>
        </pif>
        <pif ref="OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11">
                <VLAN_slave_of>
                        <master>
                                OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c
                        </master>
                </VLAN_slave_of>
                <tunnel_access_PIF_of/>
                <management>
                        False
                </management>
                <bond_slave_of>
                        OpaqueRef:NULL
                </bond_slave_of>
                <uuid>
                        6c0327a9-afa3-fc19-6798-a1bfe20095ed
                </uuid>
                <IP>
                        
                </IP>
                <VLAN_master_of>
                        OpaqueRef:NULL
                </VLAN_master_of>
                <VLAN>
                        -1
                </VLAN>
                <netmask>
                        
                </netmask>
                <other_config/>
                <MAC>
                        00:22:19:22:4b:af
                </MAC>
                <ip_configuration_mode>
                        None
                </ip_configuration_mode>
                <DNS>
                        
                </DNS>
                <device>
                        bond0
                </device>
                <bond_master_of>
                        <slave>
                                OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e
                        </slave>
                </bond_master_of>
                <currently_attached>
                        True
                </currently_attached>
                <gateway>
                        
                </gateway>
                <network>
                        OpaqueRef:ec1e5037-60ea-97e5-54b8-39bdb43c071a
                </network>
        </pif>
        <bond ref="OpaqueRef:86d81bcf-0d25-90b2-cb11-af2007bd586e">
                <master>
                        OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
                </master>
                <uuid>
                        dad825f1-6d81-386e-849c-5589281e53e1
                </uuid>
                <slaves>
                        <slave>
                                OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6
                        </slave>
                        <slave>
                                OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768
                        </slave>
                </slaves>
        </bond>
        <vlan ref="OpaqueRef:4c0eb823-4d96-da1d-e75f-411b85badb0c">
                <tagged_PIF>
                        OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
                </tagged_PIF>
                <uuid>
                        841814da-d0d2-9da4-0b2e-b6143480bbfb
                </uuid>
                <untagged_PIF>
                        OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e
                </untagged_PIF>
        </vlan>
        <vlan ref="OpaqueRef:e623e1d6-cd02-be8d-820d-49d65c710297">
                <tagged_PIF>
                        OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc
                </tagged_PIF>
                <uuid>
                        399279a2-5ccd-5368-9af3-8622a1f1ac82
                </uuid>
                <untagged_PIF>
                        OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3
                </untagged_PIF>
        </vlan>
        <network ref="OpaqueRef:a63afad0-fb4c-b4a4-3696-cbb3d88afc47">
                <PIFs>
                        <PIF>
                                OpaqueRef:d2d1e51e-4da9-3163-8f57-bb683429335e
                        </PIF>
                </PIFs>
                <bridge>
                        xapi2
                </bridge>
                <other_config/>
                <uuid>
                        99be2da4-6c33-6f8e-49ea-3bc592fe3c85
                </uuid>
        </network>
        <network ref="OpaqueRef:d9189da2-d00b-61ba-8a6d-ac42cc868e32">
                <PIFs>
                        <PIF>
                                OpaqueRef:2bc0fab5-523a-4125-609d-212391f5f6fc
                        </PIF>
                </PIFs>
                <bridge>
                        xenbr3
                </bridge>
                <other_config/>
                <uuid>
                        2902ae1b-8013-897a-b697-0b200ea3aaa5
                </uuid>
        </network>
        <network ref="OpaqueRef:ec1e5037-60ea-97e5-54b8-39bdb43c071a">
                <PIFs>
                        <PIF>
                                OpaqueRef:69c904bb-8da9-3424-485b-8b47c2d3ef11
                        </PIF>
                </PIFs>
                <bridge>
                        xapi1
                </bridge>
                <other_config/>
                <uuid>
                        45cbbb43-113d-a712-3231-c6463f253cef
                </uuid>
        </network>
        <network ref="OpaqueRef:92b41bf6-aa21-45d3-1c86-c87a5fa98f7d">
                <PIFs>
                        <PIF>
                                OpaqueRef:2956e6c8-487e-981c-85ff-c84796418768
                        </PIF>
                </PIFs>
                <bridge>
                        xenbr1
                </bridge>
                <other_config/>
                <uuid>
                        99f8771a-645a-26a3-e06c-30a401f1d009
                </uuid>
        </network>
        <network ref="OpaqueRef:6e7c6e81-6b5e-b91f-e1f9-9e028567bdfe">
                <PIFs>
                        <PIF>
                                OpaqueRef:205d1186-2cd1-d5e6-45e4-ea1698ea6e15
                        </PIF>
                </PIFs>
                <bridge>
                        xenbr2
                </bridge>
                <other_config/>
                <uuid>
                        d08c8749-0c8f-9e8d-ce25-fd364661ee99
                </uuid>
        </network>
        <network ref="OpaqueRef:83e4a934-aeb5-e6f0-a743-d1c7ef7364c5">
                <PIFs>
                        <PIF>
                                OpaqueRef:e0955887-571f-17fc-a971-61c1ec7d81b6
                        </PIF>
                </PIFs>
                <bridge>
                        xenbr0
                </bridge>
                <other_config>
                        <vswitch-disable-in-band>
                                true
                        </vswitch-disable-in-band>
                </other_config>
                <uuid>
                        c9eecb03-560d-61de-b6a8-56dfc766f67e
                </uuid>
        </network>
        <network ref="OpaqueRef:bf51b4d3-7bdc-ea55-ba21-539b150b0531">
                <PIFs>
                        <PIF>
                                OpaqueRef:eea8da94-a5e6-18fc-34a7-5e9b5a235806
                        </PIF>
                </PIFs>
                <bridge>
                        xenbr4
                </bridge>
                <other_config/>
                <uuid>
                        d2c14c89-29cc-51d4-7664-633eff02b2ad
                </uuid>
        </network>
        <network ref="OpaqueRef:0b7354a4-8f4b-aa08-2f16-a22c117e4211">
                <PIFs/>
                <bridge>
                        xapi0
                </bridge>
                <other_config/>
                <uuid>
                        dc0f0632-c2aa-1b78-2fea-0d3a23c51740
                </uuid>
        </network>
        <network ref="OpaqueRef:240fb5f8-addc-6ea3-f921-2a42b42acd17">
                <PIFs>
                        <PIF>
                                OpaqueRef:8e3e37e6-ebb9-087e-0201-f6a56bf554c3
                        </PIF>
                </PIFs>
                <bridge>
                        xapi3
                </bridge>
                <other_config/>
                <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 () {
    $PYTHON3 ./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])


AT_BANNER([interface-reconfigure])

AT_SETUP([non-VLAN, non-bond])
AT_KEYWORDS([interface-reconfigure])
AT_SKIP_IF([$non_ascii_cwd])
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
ifr_setup

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
Writing network configuration for xenbr2
Configuring xenbr2 using DHCP configuration
configure_datapath: bridge      - xenbr2
configure_datapath: physical    - ['eth2']
configure_datapath: extra ports - []
configure_datapath: extra bonds - []
/usr/bin/ovs-vsctl -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/ip link set eth2 up mtu 1500
/sbin/ethtool -K eth2 gro off lro off
/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
/usr/bin/ovs-vsctl -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
Committing changes to /etc/sysconfig/network configuration
Committing changes to /etc/sysconfig/network-scripts/ifcfg-xenbr2 configuration
]])

AT_CHECK([cat etc/sysconfig/network-scripts/ifcfg-xenbr2], [0],
  [# DO NOT EDIT: This file (ifcfg-xenbr2) was autogenerated by interface-reconfigure
XEMANAGED=yes
DEVICE=xenbr2
ONBOOT=no
NOZEROCONF=yes
TYPE=Ethernet
BOOTPROTO=dhcp
PERSISTENT_DHCLIENT=yes
MTU=1500
])

# Simulate interface-reconfigure creating xenbr2, so that we can tell
# 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
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_down: xenbr2
/sbin/ifdown xenbr2
deconfigure ipdev xenbr2 on xenbr2
deconfigure_bridge: bridge           - xenbr2
action_down: bring down physical devices - ['eth2']
/sbin/ip link set eth2 down
/usr/bin/ovs-vsctl --timeout=20
    --with-iface --if-exists del-port xenbr2
    --if-exists del-br xenbr2
]])

AT_CLEANUP

AT_SETUP([VLAN, non-bond])
AT_KEYWORDS([interface-reconfigure])
AT_SKIP_IF([$non_ascii_cwd])
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
ifr_setup

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
Writing network configuration for xapi3
Configuring xapi3 using None configuration
configure_datapath: bridge      - xenbr3
configure_datapath: physical    - ['eth3']
configure_datapath: extra ports - []
configure_datapath: extra bonds - []
Applying changes to /etc/sysconfig/network-scripts/route-xapi3 configuration
Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi3 configuration
/sbin/ip link set eth3 up mtu 1500
/sbin/ethtool -K eth3 gro off lro off
/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
    --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
    set Interface xapi3 MAC="00:15:17:a0:29:81"
/sbin/ifup xapi3
/sbin/update-issue
Committing changes to /etc/sysconfig/network-scripts/route-xapi3 configuration
Committing changes to /etc/sysconfig/network-scripts/ifcfg-xapi3 configuration
]])

AT_CHECK([cat etc/sysconfig/network-scripts/ifcfg-xapi3], [0],
  [# DO NOT EDIT: This file (ifcfg-xapi3) was autogenerated by interface-reconfigure
XEMANAGED=yes
DEVICE=xapi3
ONBOOT=no
NOZEROCONF=yes
TYPE=Ethernet
BOOTPROTO=none
MTU=1500
])

# Simulate interface-reconfigure creating xapi3, so that we can tell
# 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
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_down: xapi3
/sbin/ifdown xapi3
deconfigure ipdev xapi3 on xenbr3
deconfigure_bridge: bridge           - xapi3
action_down: no more masters, bring down slave xenbr3
deconfigure_bridge: bridge           - xenbr3
action_down: bring down physical devices - ['eth3']
/sbin/ip link set eth3 down
/usr/bin/ovs-vsctl --timeout=20
    --with-iface --if-exists del-port xapi3
    --if-exists del-br xapi3
    --if-exists del-br xenbr3
]])

AT_CLEANUP

AT_SETUP([Bond, non-VLAN])
AT_KEYWORDS([interface-reconfigure])
AT_SKIP_IF([$non_ascii_cwd])
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
ifr_setup

# Pretend that bond0 exists, even though it would really be created by
# a "create-bond" call in an ovs-vsctl invocation within
# interface-reconfigure, because otherwise interface-reconfigure will
# die with "failed to apply changes: netdev: up: device bond0 does not
# 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
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_up: xapi1
Writing network configuration for xapi1
Configuring xapi1 using None configuration
configure_datapath: leaving bond bond0 up
configure_datapath: leaving bond bond0 up
configure_datapath: bridge      - xapi1
configure_datapath: physical    - ['eth0', 'eth1']
configure_datapath: extra ports - []
configure_datapath: extra bonds - []
netdev: down: device xenbr0 does not exist, ignoring
netdev: down: device xenbr1 does not exist, ignoring
Applying changes to /etc/sysconfig/network-scripts/route-xapi1 configuration
Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi1 configuration
/sbin/ip link set eth0 up mtu 1500
/sbin/ethtool -K eth0 gro off lro off
/sbin/ip link set eth1 up mtu 1500
/sbin/ethtool -K eth1 gro off lro off
/usr/bin/ovs-vsctl --timeout=20
    --if-exists del-br xenbr0
    --if-exists del-br xenbr1
    --with-iface --if-exists del-port eth0
    --with-iface --if-exists del-port eth1
    --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-interval=100 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/ip link set bond0 up
/sbin/update-issue
Committing changes to /etc/sysconfig/network-scripts/route-xapi1 configuration
Committing changes to /etc/sysconfig/network-scripts/ifcfg-xapi1 configuration
]])

AT_CHECK([cat etc/sysconfig/network-scripts/ifcfg-xapi1], [0],
  [# DO NOT EDIT: This file (ifcfg-xapi1) was autogenerated by interface-reconfigure
XEMANAGED=yes
DEVICE=xapi1
ONBOOT=no
NOZEROCONF=yes
TYPE=Ethernet
BOOTPROTO=none
MTU=1500
])

# Simulate interface-reconfigure creating xapi1, so that we can tell
# 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
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_down: xapi1
/sbin/ifdown xapi1
deconfigure ipdev xapi1 on xapi1
deconfigure_bridge: bridge           - xapi1
action_down: bring down physical devices - ['eth0', 'eth1']
/sbin/ip link set eth0 down
/sbin/ip link set eth1 down
/usr/bin/ovs-vsctl --timeout=20
    --with-iface --if-exists del-port xapi1
    --if-exists del-br xapi1
]])

AT_CLEANUP

AT_SETUP([VLAN on bond])
AT_KEYWORDS([interface-reconfigure])
AT_SKIP_IF([$non_ascii_cwd])
AT_SKIP_IF([test "$IS_WIN32" = "yes"])
ifr_setup

# Pretend that bond0 exists, even though it would really be created by
# a "create-bond" call in an ovs-vsctl invocation within
# interface-reconfigure, because otherwise interface-reconfigure will
# die with "failed to apply changes: netdev: up: device bond0 does not
# 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
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_up: xapi2
Writing network configuration for xapi2
Configuring xapi2 using None configuration
configure_datapath: leaving bond bond0 up
configure_datapath: leaving bond bond0 up
configure_datapath: bridge      - xapi1
configure_datapath: physical    - ['eth0', 'eth1']
configure_datapath: extra ports - []
configure_datapath: extra bonds - []
netdev: down: device xenbr0 does not exist, ignoring
netdev: down: device xenbr1 does not exist, ignoring
Applying changes to /etc/sysconfig/network-scripts/route-xapi2 configuration
Applying changes to /etc/sysconfig/network-scripts/ifcfg-xapi2 configuration
/sbin/ip link set eth0 up mtu 1500
/sbin/ethtool -K eth0 gro off lro off
/sbin/ip link set eth1 up mtu 1500
/sbin/ethtool -K eth1 gro off lro off
/usr/bin/ovs-vsctl --timeout=20
    --if-exists del-br xenbr0
    --if-exists del-br xenbr1
    --with-iface --if-exists del-port eth0
    --with-iface --if-exists del-port eth1
    --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-interval=100 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 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
/sbin/ip link set bond0 up
/sbin/update-issue
Committing changes to /etc/sysconfig/network-scripts/route-xapi2 configuration
Committing changes to /etc/sysconfig/network-scripts/ifcfg-xapi2 configuration
]])

AT_CHECK([cat etc/sysconfig/network-scripts/ifcfg-xapi2], [0],
  [# DO NOT EDIT: This file (ifcfg-xapi2) was autogenerated by interface-reconfigure
XEMANAGED=yes
DEVICE=xapi2
ONBOOT=no
NOZEROCONF=yes
TYPE=Ethernet
BOOTPROTO=none
MTU=1500
])

# Simulate interface-reconfigure creating xapi2, so that we can tell
# 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
Loading xapi database cache from /var/xapi/network.dbcache
Configured for Vswitch datapath
action_down: xapi2
/sbin/ifdown xapi2
deconfigure ipdev xapi2 on xapi1
deconfigure_bridge: bridge           - xapi2
action_down: no more masters, bring down slave xapi1
deconfigure_bridge: bridge           - xapi1
action_down: bring down physical devices - ['eth0', 'eth1']
/sbin/ip link set eth0 down
/sbin/ip link set eth1 down
/usr/bin/ovs-vsctl --timeout=20
    --with-iface --if-exists del-port xapi2
    --if-exists del-br xapi2
    --if-exists del-br xapi1
]])

AT_CLEANUP

dnl This test configures two tunnels, then deletes the second and re-uses its
dnl name for different types of ports. This was introduced to detect errors
dnl where port configuration persists even when the port is deleted and
dnl readded.
AT_SETUP([Re-create port with different types])
AT_KEYWORDS([interface-reconfigure])
OVS_VSWITCHD_START(
  [add-port br0 p0 -- set int p0 type=gre options:remote_ip=127.0.0.1 -- \
   add-port br0 p1 -- set int p1 type=dummy -- \
   add-port br0 p2 -- set int p2 type=dummy])

AT_CHECK([ovs-vsctl set int p1 type=gre options:remote_ip=127.0.0.1])
AT_CHECK([ovs-vsctl del-port p1])
AT_CHECK([ovs-vsctl add-port br0 p1 -- set int p1 type=dummy])

OVS_APP_EXIT_AND_WAIT([ovs-vswitchd])
OVS_APP_EXIT_AND_WAIT([ovsdb-server])
AT_CLEANUP
