[
    {
        "id": "696a",
        "name": "Add simple ct action",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct index 42",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct zone 0 pipe.*index 42 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "e38c",
        "name": "Add simple ct action with cookie",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct index 42 cookie deadbeef",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct zone 0 pipe.*index 42 ref.*cookie deadbeef",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "9f20",
        "name": "Add ct clear action",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct clear index 42",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct clear pipe.*index 42 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "0bc1",
        "name": "Add ct clear action with cookie of max length",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct clear index 42 cookie aa11bb22cc33dd44ee55ff66aa11b1b2",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct clear pipe.*index 42 ref.*cookie aa11bb22cc33dd44ee55ff66aa11b1b2",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "5bea",
        "name": "Try ct with zone",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct zone 404 index 42",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct zone 404 pipe.*index 42 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "d5d6",
        "name": "Try ct with zone, commit",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct zone 404 commit index 42",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct commit zone 404 pipe.*index 42 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "029f",
        "name": "Try ct with zone, commit, mark",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct zone 404 commit mark 0x42 index 42",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct commit mark 66 zone 404 pipe.*index 42 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "a58d",
        "name": "Try ct with zone, commit, mark, nat",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct zone 404 commit mark 0x42 nat src addr 5.5.5.7 index 42",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct commit mark 66 zone 404 nat src addr 5.5.5.7 pipe.*index 42 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "901b",
        "name": "Try ct with full nat ipv4 range syntax",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct commit nat src addr 5.5.5.7-5.5.6.0 port 1000-2000 index 44",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct commit zone 0 nat src addr 5.5.5.7-5.5.6.0 port 1000-2000 pipe.*index 44 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "072b",
        "name": "Try ct with full nat ipv6 syntax",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct commit nat src addr 2001::1 port 1000-2000 index 44",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct commit zone 0 nat src addr 2001::1 port 1000-2000 pipe.*index 44 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "3420",
        "name": "Try ct with full nat ipv6 range syntax",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct commit nat src addr 2001::1-2001::10 port 1000-2000 index 44",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct commit zone 0 nat src addr 2001::1-2001::10 port 1000-2000 pipe.*index 44 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "4470",
        "name": "Try ct with full nat ipv6 range syntax + force",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct commit force nat src addr 2001::1-2001::10 port 1000-2000 index 44",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct commit force zone 0 nat src addr 2001::1-2001::10 port 1000-2000 pipe.*index 44 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "5d88",
        "name": "Try ct with label",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct label 123123 index 44",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct zone 0 label 12312300000000000000000000000000 pipe.*index 44 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "04d4",
        "name": "Try ct with label with mask",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct label 12312300000000000000000000000001/ffffffff000000000000000000000001 index 44",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct zone 0 label 12312300000000000000000000000001/ffffffff000000000000000000000001 pipe.*index 44 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "9751",
        "name": "Try ct with mark + mask",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct mark 0x42/0xf0 index 42",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct mark 66/0xf0 zone 0 pipe.*index 42 ref",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "2faa",
        "name": "Try ct with mark + mask and cookie",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct mark 0x42/0xf0 index 42 cookie aa11bb22cc33dd44ee55ff66aa11b1b2",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct mark 66/0xf0 zone 0 pipe.*index 42 ref.*cookie aa11bb22cc33dd44ee55ff66aa11b1b2",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "3991",
        "name": "Add simple ct action with no_percpu flag",
        "category": [
            "actions",
            "ct"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
        "setup": [
            [
                "$TC actions flush action ct",
                0,
                1,
                255
            ]
        ],
        "cmdUnderTest": "$TC actions add action ct no_percpu",
        "expExitCode": "0",
        "verifyCmd": "$TC actions list action ct",
        "matchPattern": "action order [0-9]*: ct zone 0 pipe.*no_percpu",
        "matchCount": "1",
        "teardown": [
            "$TC actions flush action ct"
        ]
    },
    {
        "id": "3992",
        "name": "Add ct action triggering DNAT tuple conflict",
        "category": [
            "actions",
            "ct",
	    "scapy"
        ],
        "plugins": {
           "requires": "nsPlugin"
        },
	"plugins": {
		"requires": [
			"nsPlugin",
			"scapyPlugin"
		]
	},
        "setup": [
            [
                "$TC qdisc del dev $DEV1 ingress",
                0,
                1,
		2,
                255
            ],
	    "$TC qdisc add dev $DEV1 ingress"
        ],
        "cmdUnderTest": "$TC filter add dev $DEV1 ingress protocol ip prio 1 flower ct_state -trk action ct commit nat dst addr 20.0.0.1 port 10 pipe action drop",
	"scapy": [
	    {
		"iface": "$DEV0",
		"count": 1,
		"packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='10.0.0.10')/TCP(sport=5000,dport=10)"
	    },
	    {
		"iface": "$DEV0",
		"count": 1,
		"packet": "Ether(type=0x800)/IP(src='10.0.0.10',dst='10.0.0.20')/TCP(sport=5000,dport=10)"
	    }
	],
        "expExitCode": "0",
        "verifyCmd": "cat /proc/net/nf_conntrack",
        "matchPattern": "dst=10.0.0.20",
        "matchCount": "1",
        "teardown": [
            "$TC qdisc del dev $DEV1 ingress"
        ]
    }
]
