#!/usr/bin/env python3

## Virtual Interface Test configuration for VM tests ##

test_config = {
    "client_namespace": "iprf_client_ns",
    "server_namespace": "iprf_server_ns",
    "mtus": [9001, 9000, 2048, 2049, 1500, 512],
    "ip_versions": [4, 6],
    "af_packet": {
        "iprf_client_interface_on_linux": "hostintclient",
        "iprf_server_interface_on_linux": "hostintserver",
        "iprf_client_interface_on_vpp": "vppclientout",
        "iprf_server_interface_on_vpp": "vppserverout",
    },
    "L2": {
        "client_ip4_prefix": "10.0.0.101/24",
        "server_ip4_prefix": "10.0.0.102/24",
        "client_ip6_prefix": "2001:1::1/64",
        "server_ip6_prefix": "2001:1::2/64",
    },
    "L3": {
        "client_ip4_prefix": "10.0.0.101/24",
        "vpp_client_ip4_prefix": "10.0.0.102/24",
        "server_ip4_prefix": "10.0.1.102/24",
        "vpp_server_ip4_prefix": "10.0.1.101/24",
        "ip4_vrf": 1,
        "client_ip6_prefix": "2001:1::1/64",
        "vpp_client_ip6_prefix": "2001:1::2/64",
        "server_ip6_prefix": "2001:2::2/64",
        "vpp_server_ip6_prefix": "2001:2::1/64",
        "ip6_vrf": 2,
    },
    # Test Filter
    # Comma separated test id's or range(s) of test id's to run (default=all)
    # e.g. "1,3-4,19-23" runs tests with ID's 1, 3, 4, 19, 20, 21, 22 & 23 only
    "tests_to_run": "",
    "tests": [
        {
            "id": 1,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_gso": 0,
            "client_if_gro": 0,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 0,
            "server_if_gro": 0,
            "x_connect_mode": "L2",
        },
        {
            "id": 2,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_gso": 1,
            "client_if_gro": 0,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 0,
            "server_if_gro": 0,
            "x_connect_mode": "L2",
        },
        {
            "id": 3,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_gso": 0,
            "client_if_gro": 0,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 1,
            "server_if_gro": 0,
            "x_connect_mode": "L2",
        },
        {
            "id": 4,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_gso": 0,
            "client_if_gro": 1,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 0,
            "server_if_gro": 0,
            "x_connect_mode": "L2",
        },
        {
            "id": 5,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_gso": 0,
            "client_if_gro": 0,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 0,
            "server_if_gro": 1,
            "x_connect_mode": "L2",
        },
        {
            "id": 6,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_gso": 1,
            "client_if_gro": 0,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 0,
            "server_if_gro": 1,
            "x_connect_mode": "L2",
        },
        {
            "id": 7,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_gso": 0,
            "client_if_gro": 1,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 1,
            "server_if_gro": 0,
            "x_connect_mode": "L2",
        },
        {
            "id": 8,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_gso": 1,
            "client_if_gro": 0,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 1,
            "server_if_gro": 0,
            "x_connect_mode": "L2",
        },
        {
            "id": 9,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_gso": 0,
            "client_if_gro": 1,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 0,
            "server_if_gro": 1,
            "x_connect_mode": "L2",
        },
        {
            "id": 10,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_gso": 0,
            "client_if_gro": 0,
            "server_if_type": "tun",
            "server_if_version": 2,
            "server_if_gso": 0,
            "server_if_gro": 1,
            "x_connect_mode": "L3",
        },
        {
            "id": 11,
            "client_if_type": "tun",
            "client_if_version": 2,
            "client_if_gso": 0,
            "client_if_gro": 0,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 0,
            "server_if_gro": 1,
            "x_connect_mode": "L3",
        },
        {
            "id": 12,
            "client_if_type": "af_packet",
            "client_if_version": 3,
            "client_if_gso": 0,
            "server_if_type": "af_packet",
            "server_if_version": 3,
            "server_if_gso": 0,
            "x_connect_mode": "L2",
        },
        {
            "id": 13,
            "client_if_type": "af_packet",
            "client_if_version": 3,
            "client_if_gso": 0,
            "server_if_type": "af_packet",
            "server_if_version": 3,
            "server_if_gso": 0,
            "x_connect_mode": "L3",
        },
        {
            "id": 14,
            "client_if_type": "af_packet",
            "client_if_version": 3,
            "client_if_gso": 1,
            "server_if_type": "af_packet",
            "server_if_version": 3,
            "server_if_gso": 1,
            "x_connect_mode": "L2",
        },
        {
            "id": 15,
            "client_if_type": "af_packet",
            "client_if_version": 3,
            "client_if_gso": 1,
            "server_if_type": "af_packet",
            "server_if_version": 3,
            "server_if_gso": 1,
            "x_connect_mode": "L3",
        },
        {
            "id": 16,
            "client_if_type": "af_packet",
            "client_if_version": 3,
            "client_if_gso": 1,
            "server_if_type": "af_packet",
            "server_if_version": 3,
            "server_if_gso": 0,
            "x_connect_mode": "L2",
        },
        {
            "id": 17,
            "client_if_type": "af_packet",
            "client_if_version": 2,
            "client_if_gso": 1,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_gso": 0,
            "x_connect_mode": "L2",
        },
        {
            "id": 18,
            "client_if_type": "af_packet",
            "client_if_version": 2,
            "client_if_gso": 1,
            "server_if_type": "tun",
            "server_if_version": 2,
            "server_if_gso": 0,
            "x_connect_mode": "L3",
        },
        {
            "id": 19,
            "client_if_type": "af_packet",
            "client_if_version": 2,
            "client_if_gso": 1,
            "server_if_type": "af_packet",
            "server_if_version": 2,
            "server_if_gso": 1,
            "x_connect_mode": "L3",
        },
        {
            "id": 20,
            "client_if_type": "af_packet",
            "client_if_version": 2,
            "client_if_gso": 0,
            "server_if_type": "af_packet",
            "server_if_version": 2,
            "server_if_gso": 0,
            "x_connect_mode": "L2",
        },
        {
            "id": 21,
            "client_if_type": "af_packet",
            "client_if_version": 2,
            "client_if_gso": 0,
            "server_if_type": "tun",
            "server_if_version": 2,
            "server_if_gro": 1,
            "x_connect_mode": "L3",
        },
        {
            "id": 22,
            "client_if_type": "af_packet",
            "client_if_version": 3,
            "client_if_gso": 0,
            "server_if_type": "af_packet",
            "server_if_version": 2,
            "server_if_gso": 1,
            "x_connect_mode": "L2",
        },
        {
            "id": 23,
            "client_if_type": "af_packet",
            "client_if_version": 2,
            "client_if_gso": 1,
            "server_if_type": "af_packet",
            "server_if_version": 2,
            "server_if_gso": 1,
            "x_connect_mode": "L2",
        },
        {
            "id": 24,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_checksum_offload": 1,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_checksum_offload": 1,
            "x_connect_mode": "L2",
        },
        {
            "id": 25,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_checksum_offload": 0,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_checksum_offload": 1,
            "x_connect_mode": "L3",
        },
        {
            "id": 26,
            "client_if_type": "tap",
            "client_if_version": 2,
            "client_if_checksum_offload": 1,
            "server_if_type": "tap",
            "server_if_version": 2,
            "server_if_checksum_offload": 0,
            "x_connect_mode": "L3",
        },
        {
            "id": 27,
            "client_if_type": "tap,memif",
            "client_if_version": 2,
            "client_if_checksum_offload": 0,
            "server_if_type": "tap,memif",
            "server_if_version": 2,
            "server_if_checksum_offload": 0,
            "x_connect_mode": "L2",
        },
    ],
}