File Index
Files and directories
Sign in
FILE

fw.json

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/tc-testing/tc-tests/filters/fw.json JSON
   1[
   2    {
   3        "id": "901f",
   4        "name": "Add fw filter with prio at 32-bit maxixum",
   5        "category": [
   6            "filter",
   7            "fw"
   8        ],
   9	"plugins": {
  10		"requires": "nsPlugin"
  11	},
  12        "setup": [
  13            "$TC qdisc add dev $DEV1 ingress"
  14        ],
  15        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 65535 fw action ok",
  16        "expExitCode": "0",
  17        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 65535 protocol all fw",
  18        "matchPattern": "pref 65535 fw.*handle 0x1.*gact action pass",
  19        "matchCount": "1",
  20        "teardown": [
  21            "$TC qdisc del dev $DEV1 ingress"
  22        ]
  23    },
  24    {
  25        "id": "51e2",
  26        "name": "Add fw filter with prio exceeding 32-bit maxixum",
  27        "category": [
  28            "filter",
  29            "fw"
  30        ],
  31	"plugins": {
  32		"requires": "nsPlugin"
  33	},
  34        "setup": [
  35            "$TC qdisc add dev $DEV1 ingress"
  36        ],
  37        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 65536 fw action ok",
  38        "expExitCode": "255",
  39        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 65536 protocol all fw",
  40        "matchPattern": "pref 65536 fw.*handle 0x1.*gact action pass",
  41        "matchCount": "0",
  42        "teardown": [
  43            "$TC qdisc del dev $DEV1 ingress"
  44        ]
  45    },
  46    {
  47        "id": "d987",
  48        "name": "Add fw filter with action ok",
  49        "category": [
  50            "filter",
  51            "fw"
  52        ],
  53	"plugins": {
  54		"requires": "nsPlugin"
  55	},
  56        "setup": [
  57            "$TC qdisc add dev $DEV1 ingress"
  58        ],
  59        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action ok",
  60        "expExitCode": "0",
  61        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
  62        "matchPattern": "handle 0x1.*gact action pass",
  63        "matchCount": "1",
  64        "teardown": [
  65            "$TC qdisc del dev $DEV1 ingress"
  66        ]
  67    },
  68    {
  69        "id": "c591",
  70        "name": "Add fw filter with action ok by reference",
  71        "category": [
  72            "filter",
  73            "fw"
  74        ],
  75	"plugins": {
  76		"requires": "nsPlugin"
  77	},
  78        "setup": [
  79            "$TC qdisc add dev $DEV1 ingress",
  80            "$TC actions add action gact ok index 1"
  81        ],
  82        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action gact index 1",
  83        "expExitCode": "0",
  84        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
  85        "matchPattern": "handle 0x1.*gact action pass.*index 1 ref 2 bind 1",
  86        "matchCount": "1",
  87        "teardown": [
  88            "$TC qdisc del dev $DEV1 ingress"
  89        ]
  90    },
  91    {
  92        "id": "affe",
  93        "name": "Add fw filter with action continue",
  94        "category": [
  95            "filter",
  96            "fw"
  97        ],
  98	"plugins": {
  99		"requires": "nsPlugin"
 100	},
 101        "setup": [
 102            "$TC qdisc add dev $DEV1 ingress"
 103        ],
 104        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action continue",
 105        "expExitCode": "0",
 106        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 107        "matchPattern": "handle 0x1.*gact action continue",
 108        "matchCount": "1",
 109        "teardown": [
 110            "$TC qdisc del dev $DEV1 ingress"
 111        ]
 112    },
 113    {
 114        "id": "38b3",
 115        "name": "Add fw filter with action continue by reference",
 116        "category": [
 117            "filter",
 118            "fw"
 119        ],
 120	"plugins": {
 121		"requires": "nsPlugin"
 122	},
 123        "setup": [
 124            "$TC qdisc add dev $DEV1 ingress",
 125            "$TC actions add action gact continue index 1"
 126        ],
 127        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action gact index 1",
 128        "expExitCode": "0",
 129        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 130        "matchPattern": "handle 0x1.*gact action continue.*index 1 ref 2 bind 1",
 131        "matchCount": "1",
 132        "teardown": [
 133            "$TC qdisc del dev $DEV1 ingress"
 134        ]
 135    },
 136    {
 137        "id": "28bc",
 138        "name": "Add fw filter with action pipe",
 139        "category": [
 140            "filter",
 141            "fw"
 142        ],
 143	"plugins": {
 144		"requires": "nsPlugin"
 145	},
 146        "setup": [
 147            "$TC qdisc add dev $DEV1 ingress"
 148        ],
 149        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action pipe",
 150        "expExitCode": "0",
 151        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 152        "matchPattern": "handle 0x1.*gact action pipe",
 153        "matchCount": "1",
 154        "teardown": [
 155            "$TC qdisc del dev $DEV1 ingress"
 156        ]
 157    },
 158    {
 159        "id": "6753",
 160        "name": "Add fw filter with action pipe by reference",
 161        "category": [
 162            "filter",
 163            "fw"
 164        ],
 165	"plugins": {
 166		"requires": "nsPlugin"
 167	},
 168        "setup": [
 169            "$TC qdisc add dev $DEV1 ingress",
 170            "$TC actions add action gact pipe index 1"
 171        ],
 172        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action gact index 1",
 173        "expExitCode": "0",
 174        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 175        "matchPattern": "handle 0x1.*gact action pipe.*index 1 ref 2 bind 1",
 176        "matchCount": "1",
 177        "teardown": [
 178            "$TC qdisc del dev $DEV1 ingress"
 179        ]
 180    },
 181    {
 182        "id": "8da2",
 183        "name": "Add fw filter with action drop",
 184        "category": [
 185            "filter",
 186            "fw"
 187        ],
 188	"plugins": {
 189		"requires": "nsPlugin"
 190	},
 191        "setup": [
 192            "$TC qdisc add dev $DEV1 ingress"
 193        ],
 194        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action drop",
 195        "expExitCode": "0",
 196        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 protocol all prio 1 fw",
 197        "matchPattern": "handle 0x1.*gact action drop",
 198        "matchCount": "1",
 199        "teardown": [
 200            "$TC qdisc del dev $DEV1 ingress"
 201        ]
 202    },
 203    {
 204        "id": "6dc6",
 205        "name": "Add fw filter with action drop by reference",
 206        "category": [
 207            "filter",
 208            "fw"
 209        ],
 210	"plugins": {
 211		"requires": "nsPlugin"
 212	},
 213        "setup": [
 214            "$TC qdisc add dev $DEV1 ingress",
 215            "$TC actions add action gact drop index 1"
 216        ],
 217        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action gact index 1",
 218        "expExitCode": "0",
 219        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 220        "matchPattern": "handle 0x1.*gact action drop.*index 1 ref 2 bind 1",
 221        "matchCount": "1",
 222        "teardown": [
 223            "$TC qdisc del dev $DEV1 ingress"
 224        ]
 225    },
 226    {
 227        "id": "9436",
 228        "name": "Add fw filter with action reclassify",
 229        "category": [
 230            "filter",
 231            "fw"
 232        ],
 233	"plugins": {
 234		"requires": "nsPlugin"
 235	},
 236        "setup": [
 237            "$TC qdisc add dev $DEV1 ingress"
 238        ],
 239        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action reclassify",
 240        "expExitCode": "0",
 241        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 242        "matchPattern": "handle 0x1.*gact action reclassify",
 243        "matchCount": "1",
 244        "teardown": [
 245            "$TC qdisc del dev $DEV1 ingress"
 246        ]
 247    },
 248    {
 249        "id": "3bc2",
 250        "name": "Add fw filter with action reclassify by reference",
 251        "category": [
 252            "filter",
 253            "fw"
 254        ],
 255	"plugins": {
 256		"requires": "nsPlugin"
 257	},
 258        "setup": [
 259            "$TC qdisc add dev $DEV1 ingress",
 260            "$TC actions add action gact reclassify index 1"
 261        ],
 262        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action gact index 1",
 263        "expExitCode": "0",
 264        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 265        "matchPattern": "handle 0x1.*gact action reclassify.*index 1 ref 2 bind 1",
 266        "matchCount": "1",
 267        "teardown": [
 268            "$TC qdisc del dev $DEV1 ingress"
 269        ]
 270    },
 271    {
 272        "id": "95bb",
 273        "name": "Add fw filter with action jump 10",
 274        "category": [
 275            "filter",
 276            "fw"
 277        ],
 278	"plugins": {
 279		"requires": "nsPlugin"
 280	},
 281        "setup": [
 282            "$TC qdisc add dev $DEV1 ingress"
 283        ],
 284        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action jump 10",
 285        "expExitCode": "0",
 286        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 287        "matchPattern": "handle 0x1.*gact action jump 10",
 288        "matchCount": "1",
 289        "teardown": [
 290            "$TC qdisc del dev $DEV1 ingress"
 291        ]
 292    },
 293    {
 294        "id": "36f7",
 295        "name": "Add fw filter with action jump 10 by reference",
 296        "category": [
 297            "filter",
 298            "fw"
 299        ],
 300	"plugins": {
 301		"requires": "nsPlugin"
 302	},
 303        "setup": [
 304            "$TC qdisc add dev $DEV1 ingress",
 305            "$TC actions add action gact jump 10 index 1"
 306        ],
 307        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action gact index 1",
 308        "expExitCode": "0",
 309        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 310        "matchPattern": "handle 0x1.*gact action jump 10.*index 1 ref 2 bind 1",
 311        "matchCount": "1",
 312        "teardown": [
 313            "$TC qdisc del dev $DEV1 ingress"
 314        ]
 315    },
 316    {
 317        "id": "3d74",
 318        "name": "Add fw filter with action goto chain 5",
 319        "category": [
 320            "filter",
 321            "fw"
 322        ],
 323	"plugins": {
 324		"requires": "nsPlugin"
 325	},
 326        "setup": [
 327            "$TC qdisc add dev $DEV1 ingress"
 328        ],
 329        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action goto chain 5",
 330        "expExitCode": "0",
 331        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 332        "matchPattern": "handle 0x1.*gact action goto chain 5",
 333        "matchCount": "1",
 334        "teardown": [
 335            "$TC qdisc del dev $DEV1 ingress"
 336        ]
 337    },
 338    {
 339        "id": "eb8f",
 340        "name": "Add fw filter with invalid action",
 341        "category": [
 342            "filter",
 343            "fw"
 344        ],
 345	"plugins": {
 346		"requires": "nsPlugin"
 347	},
 348        "setup": [
 349            "$TC qdisc add dev $DEV1 ingress"
 350        ],
 351        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw action pump",
 352        "expExitCode": "255",
 353        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 354        "matchPattern": "handle 0x1.*gact action pump",
 355        "matchCount": "0",
 356        "teardown": [
 357            "$TC qdisc del dev $DEV1 ingress"
 358        ]
 359    },
 360    {
 361        "id": "6a79",
 362        "name": "Add fw filter with missing mandatory action",
 363        "category": [
 364            "filter",
 365            "fw"
 366        ],
 367	"plugins": {
 368		"requires": "nsPlugin"
 369	},
 370        "setup": [
 371            "$TC qdisc add dev $DEV1 ingress"
 372        ],
 373        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw",
 374        "expExitCode": "2",
 375        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 376        "matchPattern": "filter protocol all pref [0-9]+ fw.*handle 0x1",
 377        "matchCount": "0",
 378        "teardown": [
 379            "$TC qdisc del dev $DEV1 ingress"
 380        ]
 381    },
 382    {
 383        "id": "8298",
 384        "name": "Add fw filter with cookie",
 385        "category": [
 386            "filter",
 387            "fw"
 388        ],
 389	"plugins": {
 390		"requires": "nsPlugin"
 391	},
 392        "setup": [
 393            "$TC qdisc add dev $DEV1 ingress"
 394        ],
 395        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 2 fw action pipe cookie aa11bb22cc33dd44ee55ff66aa11b1b2",
 396        "expExitCode": "0",
 397        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 2 protocol all fw",
 398        "matchPattern": "pref 2 fw.*handle 0x1.*gact action pipe.*cookie aa11bb22cc33dd44ee55ff66aa11b1b2",
 399        "matchCount": "1",
 400        "teardown": [
 401            "$TC qdisc del dev $DEV1 ingress"
 402        ]
 403    },
 404    {
 405        "id": "a88c",
 406        "name": "Add fw filter with invalid cookie",
 407        "category": [
 408            "filter",
 409            "fw"
 410        ],
 411	"plugins": {
 412		"requires": "nsPlugin"
 413	},
 414        "setup": [
 415            "$TC qdisc add dev $DEV1 ingress"
 416        ],
 417        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 2 fw action continue cookie aa11bb22cc33dd44ee55ff66aa11b1b2777888",
 418        "expExitCode": "255",
 419        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 2 protocol all fw",
 420        "matchPattern": "pref 2 fw.*handle 0x1.*gact action continue.*cookie aa11bb22cc33dd44ee55ff66aa11b1b2777888",
 421        "matchCount": "0",
 422        "teardown": [
 423            "$TC qdisc del dev $DEV1 ingress"
 424        ]
 425    },
 426    {
 427        "id": "10f6",
 428        "name": "Add fw filter with handle in hex",
 429        "category": [
 430            "filter",
 431            "fw"
 432        ],
 433	"plugins": {
 434		"requires": "nsPlugin"
 435	},
 436        "setup": [
 437            "$TC qdisc add dev $DEV1 ingress"
 438        ],
 439        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 0xa1b2ff prio 1 fw action ok",
 440        "expExitCode": "0",
 441        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 0xa1b2ff prio 1 protocol all fw",
 442        "matchPattern": "fw.*handle 0xa1b2ff.*gact action pass",
 443        "matchCount": "1",
 444        "teardown": [
 445            "$TC qdisc del dev $DEV1 ingress"
 446        ]
 447    },
 448    {
 449        "id": "9d51",
 450        "name": "Add fw filter with handle at 32-bit maximum",
 451        "category": [
 452            "filter",
 453            "fw"
 454        ],
 455	"plugins": {
 456		"requires": "nsPlugin"
 457	},
 458        "setup": [
 459            "$TC qdisc add dev $DEV1 ingress"
 460        ],
 461        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 4294967295 prio 1 fw action ok",
 462        "expExitCode": "0",
 463        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 4294967295 prio 1 protocol all fw",
 464        "matchPattern": "fw.*handle 0xffffffff.*gact action pass",
 465        "matchCount": "1",
 466        "teardown": [
 467            "$TC qdisc del dev $DEV1 ingress"
 468        ]
 469    },
 470    {
 471        "id": "d939",
 472        "name": "Add fw filter with handle exceeding 32-bit maximum",
 473        "category": [
 474            "filter",
 475            "fw"
 476        ],
 477	"plugins": {
 478		"requires": "nsPlugin"
 479	},
 480        "setup": [
 481            "$TC qdisc add dev $DEV1 ingress"
 482        ],
 483        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 4294967296 prio 1 fw action ok",
 484        "expExitCode": "1",
 485        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 4294967296 prio 1 protocol all fw",
 486        "matchPattern": "fw.*handle 0x.*gact action pass",
 487        "matchCount": "0",
 488        "teardown": [
 489            "$TC qdisc del dev $DEV1 ingress"
 490        ]
 491    },
 492    {
 493        "id": "658c",
 494        "name": "Add fw filter with mask in hex",
 495        "category": [
 496            "filter",
 497            "fw"
 498        ],
 499	"plugins": {
 500		"requires": "nsPlugin"
 501	},
 502        "setup": [
 503            "$TC qdisc add dev $DEV1 ingress"
 504        ],
 505        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 10/0xa1b2f prio 1 fw action ok",
 506        "expExitCode": "0",
 507        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 10 prio 1 protocol all fw",
 508        "matchPattern": "fw.*handle 0xa/0xa1b2f",
 509        "matchCount": "1",
 510        "teardown": [
 511            "$TC qdisc del dev $DEV1 ingress"
 512        ]
 513    },
 514    {
 515        "id": "86be",
 516        "name": "Add fw filter with mask at 32-bit maximum",
 517        "category": [
 518            "filter",
 519            "fw"
 520        ],
 521	"plugins": {
 522		"requires": "nsPlugin"
 523	},
 524        "setup": [
 525            "$TC qdisc add dev $DEV1 ingress"
 526        ],
 527        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 10/4294967295 prio 1 fw action ok",
 528        "expExitCode": "0",
 529        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 10 prio 1 protocol all fw",
 530        "matchPattern": "fw.*handle 0xa[^/]",
 531        "matchCount": "1",
 532        "teardown": [
 533            "$TC qdisc del dev $DEV1 ingress"
 534        ]
 535    },
 536    {
 537        "id": "e635",
 538        "name": "Add fw filter with mask exceeding 32-bit maximum",
 539        "category": [
 540            "filter",
 541            "fw"
 542        ],
 543	"plugins": {
 544		"requires": "nsPlugin"
 545	},
 546        "setup": [
 547            "$TC qdisc add dev $DEV1 ingress"
 548        ],
 549        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 10/4294967296 prio 1 fw action ok",
 550        "expExitCode": "1",
 551        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 10 prio 1 protocol all fw",
 552        "matchPattern": "fw.*handle 0xa",
 553        "matchCount": "0",
 554        "teardown": [
 555            "$TC qdisc del dev $DEV1 ingress"
 556        ]
 557    },
 558    {
 559        "id": "6cab",
 560        "name": "Add fw filter with handle/mask in hex",
 561        "category": [
 562            "filter",
 563            "fw"
 564        ],
 565	"plugins": {
 566		"requires": "nsPlugin"
 567	},
 568        "setup": [
 569            "$TC qdisc add dev $DEV1 ingress"
 570        ],
 571        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 0xa1b2cdff/0x1a2bffdc prio 1 fw action ok",
 572        "expExitCode": "0",
 573        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 0xa1b2cdff prio 1 protocol all fw",
 574        "matchPattern": "fw.*handle 0xa1b2cdff/0x1a2bffdc",
 575        "matchCount": "1",
 576        "teardown": [
 577            "$TC qdisc del dev $DEV1 ingress"
 578        ]
 579    },
 580    {
 581        "id": "8700",
 582        "name": "Add fw filter with handle/mask at 32-bit maximum",
 583        "category": [
 584            "filter",
 585            "fw"
 586        ],
 587	"plugins": {
 588		"requires": "nsPlugin"
 589	},
 590        "setup": [
 591            "$TC qdisc add dev $DEV1 ingress"
 592        ],
 593        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 4294967295/4294967295 prio 1 fw action ok",
 594        "expExitCode": "0",
 595        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 0xffffffff prio 1 protocol all fw",
 596        "matchPattern": "fw.*handle 0xffffffff[^/]",
 597        "matchCount": "1",
 598        "teardown": [
 599            "$TC qdisc del dev $DEV1 ingress"
 600        ]
 601    },
 602    {
 603        "id": "7d62",
 604        "name": "Add fw filter with handle/mask exceeding 32-bit maximum",
 605        "category": [
 606            "filter",
 607            "fw"
 608        ],
 609	"plugins": {
 610		"requires": "nsPlugin"
 611	},
 612        "setup": [
 613            "$TC qdisc add dev $DEV1 ingress"
 614        ],
 615        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 4294967296/4294967296 prio 1 fw action ok",
 616        "expExitCode": "1",
 617        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 10 prio 1 protocol all fw",
 618        "matchPattern": "fw.*handle",
 619        "matchCount": "0",
 620        "teardown": [
 621            "$TC qdisc del dev $DEV1 ingress"
 622        ]
 623    },
 624    {
 625        "id": "7b69",
 626        "name": "Add fw filter with missing mandatory handle",
 627        "category": [
 628            "filter",
 629            "fw"
 630        ],
 631	"plugins": {
 632		"requires": "nsPlugin"
 633	},
 634        "setup": [
 635            "$TC qdisc add dev $DEV1 ingress"
 636        ],
 637        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: prio 1 fw action ok",
 638        "expExitCode": "2",
 639        "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
 640        "matchPattern": "filter protocol all.*fw.*handle.*gact action pass",
 641        "matchCount": "0",
 642        "teardown": [
 643            "$TC qdisc del dev $DEV1 ingress"
 644        ]
 645    },
 646    {
 647        "id": "d68b",
 648        "name": "Add fw filter with invalid parent",
 649        "category": [
 650            "filter",
 651            "fw"
 652        ],
 653	"plugins": {
 654		"requires": "nsPlugin"
 655	},
 656        "setup": [
 657            "$TC qdisc add dev $DEV1 ingress"
 658        ],
 659        "cmdUnderTest": "$TC filter add dev $DEV1 parent aa11b1b2: handle 1 prio 1 fw action ok",
 660        "expExitCode": "255",
 661        "verifyCmd": "$TC filter dev $DEV1 parent aa11b1b2: handle 1 prio 1 protocol all fw",
 662        "matchPattern": "filter protocol all pref 1 fw.*handle 0x1.*gact action pass",
 663        "matchCount": "0",
 664        "teardown": [
 665            "$TC qdisc del dev $DEV1 ingress"
 666        ]
 667    },
 668    {
 669        "id": "66e0",
 670        "name": "Add fw filter with missing mandatory parent id",
 671        "category": [
 672            "filter",
 673            "fw"
 674        ],
 675	"plugins": {
 676		"requires": "nsPlugin"
 677	},
 678        "setup": [
 679            "$TC qdisc add dev $DEV1 ingress"
 680        ],
 681        "cmdUnderTest": "$TC filter add dev $DEV1 handle 1 prio 1 fw action ok",
 682        "expExitCode": "2",
 683        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 684        "matchPattern": "pref [0-9]+ fw.*handle 0x1.*gact action pass",
 685        "matchCount": "0",
 686        "teardown": [
 687            "$TC qdisc del dev $DEV1 ingress"
 688        ]
 689    },
 690    {
 691        "id": "0ff3",
 692        "name": "Add fw filter with classid",
 693        "category": [
 694            "filter",
 695            "fw"
 696        ],
 697	"plugins": {
 698		"requires": "nsPlugin"
 699	},
 700        "setup": [
 701            "$TC qdisc add dev $DEV1 ingress"
 702        ],
 703        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw classid 3 action ok",
 704        "expExitCode": "0",
 705        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 706        "matchPattern": "fw.*handle 0x1 classid :3.*gact action pass",
 707        "matchCount": "1",
 708        "teardown": [
 709            "$TC qdisc del dev $DEV1 ingress"
 710        ]
 711    },
 712    {
 713        "id": "9849",
 714        "name": "Add fw filter with classid at root",
 715        "category": [
 716            "filter",
 717            "fw"
 718        ],
 719	"plugins": {
 720		"requires": "nsPlugin"
 721	},
 722        "setup": [
 723            "$TC qdisc add dev $DEV1 ingress"
 724        ],
 725        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw classid ffff:ffff action ok",
 726        "expExitCode": "0",
 727        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 728        "matchPattern": "pref 1 fw.*handle 0x1 classid root.*gact action pass",
 729        "matchCount": "1",
 730        "teardown": [
 731            "$TC qdisc del dev $DEV1 ingress"
 732        ]
 733    },
 734    {
 735        "id": "b7ff",
 736        "name": "Add fw filter with classid - keeps last 8 (hex) digits",
 737        "category": [
 738            "filter",
 739            "fw"
 740        ],
 741	"plugins": {
 742		"requires": "nsPlugin"
 743	},
 744        "setup": [
 745            "$TC qdisc add dev $DEV1 ingress"
 746        ],
 747        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw classid 98765fedcb action ok",
 748        "expExitCode": "0",
 749        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 750        "matchPattern": "fw.*handle 0x1 classid 765f:edcb.*gact action pass",
 751        "matchCount": "1",
 752        "teardown": [
 753            "$TC qdisc del dev $DEV1 ingress"
 754        ]
 755    },
 756    {
 757        "id": "2b18",
 758        "name": "Add fw filter with invalid classid",
 759        "category": [
 760            "filter",
 761            "fw"
 762        ],
 763	"plugins": {
 764		"requires": "nsPlugin"
 765	},
 766        "setup": [
 767            "$TC qdisc add dev $DEV1 ingress"
 768        ],
 769        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 1 prio 1 fw classid 6789defg action ok",
 770        "expExitCode": "1",
 771        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol all fw",
 772        "matchPattern": "fw.*handle 0x1 classid 6789:defg.*gact action pass",
 773        "matchCount": "0",
 774        "teardown": [
 775            "$TC qdisc del dev $DEV1 ingress"
 776        ]
 777    },
 778    {
 779        "id": "fade",
 780        "name": "Add fw filter with flowid",
 781        "category": [
 782            "filter",
 783            "fw"
 784        ],
 785	"plugins": {
 786		"requires": "nsPlugin"
 787	},
 788        "setup": [
 789            "$TC qdisc add dev $DEV1 ingress"
 790        ],
 791        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 10 prio 1 fw flowid 1:10 action ok",
 792        "expExitCode": "0",
 793        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 10 prio 1 protocol all fw",
 794        "matchPattern": "filter parent ffff: protocol all pref 1 fw.*handle 0xa classid 1:10.*gact action pass",
 795        "matchCount": "1",
 796        "teardown": [
 797            "$TC qdisc del dev $DEV1 ingress"
 798        ]
 799    },
 800    {
 801        "id": "33af",
 802        "name": "Add fw filter with flowid then classid (same arg, takes second)",
 803        "category": [
 804            "filter",
 805            "fw"
 806        ],
 807	"plugins": {
 808		"requires": "nsPlugin"
 809	},
 810        "setup": [
 811            "$TC qdisc add dev $DEV1 ingress"
 812        ],
 813        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 11 prio 1 fw flowid 10 classid 4 action ok",
 814        "expExitCode": "0",
 815        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 11 prio 1 protocol all fw",
 816        "matchPattern": "filter parent ffff: protocol all pref 1 fw.*handle 0xb classid :4.*gact action pass",
 817        "matchCount": "1",
 818        "teardown": [
 819            "$TC qdisc del dev $DEV1 ingress"
 820        ]
 821    },
 822    {
 823        "id": "8a8c",
 824        "name": "Add fw filter with classid then flowid (same arg, takes second)",
 825        "category": [
 826            "filter",
 827            "fw"
 828        ],
 829	"plugins": {
 830		"requires": "nsPlugin"
 831	},
 832        "setup": [
 833            "$TC qdisc add dev $DEV1 ingress"
 834        ],
 835        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: handle 11 prio 1 fw classid 4 flowid 10 action ok",
 836        "expExitCode": "0",
 837        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 11 prio 1 protocol all fw",
 838        "matchPattern": "filter parent ffff: protocol all pref 1 fw.*handle 0xb classid :10.*gact action pass",
 839        "matchCount": "1",
 840        "teardown": [
 841            "$TC qdisc del dev $DEV1 ingress"
 842        ]
 843    },
 844    {
 845        "id": "b50d",
 846        "name": "Add fw filter with handle val/mask and flowid 10:1000",
 847        "category": [
 848            "filter",
 849            "fw"
 850        ],
 851	"plugins": {
 852		"requires": "nsPlugin"
 853	},
 854        "setup": [
 855            "$TC qdisc add dev $DEV1 ingress"
 856        ],
 857        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: prio 3 handle 10/0xff fw flowid 10:1000 action ok",
 858        "expExitCode": "0",
 859        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 10 prio 3 protocol all fw",
 860        "matchPattern": "filter parent ffff: protocol all pref 3 fw.*handle 0xa/0xff classid 10:1000.*gact action pass",
 861        "matchCount": "1",
 862        "teardown": [
 863            "$TC qdisc del dev $DEV1 ingress"
 864        ]
 865    },
 866    {
 867        "id": "7207",
 868        "name": "Add fw filter with protocol ip",
 869        "category": [
 870            "filter",
 871            "fw"
 872        ],
 873	"plugins": {
 874		"requires": "nsPlugin"
 875	},
 876        "setup": [
 877            "$TC qdisc add dev $DEV1 ingress"
 878        ],
 879        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: protocol ip prio 1 handle 3 fw action ok",
 880        "expExitCode": "0",
 881        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 3 prio 1 protocol ip fw",
 882        "matchPattern": "filter parent ffff: protocol ip pref 1 fw.*handle 0x3.*gact action pass.*index [0-9]+ ref [0-9]+ bind [0-9]+",
 883        "matchCount": "1",
 884        "teardown": [
 885            "$TC qdisc del dev $DEV1 ingress"
 886        ]
 887    },
 888    {
 889        "id": "306d",
 890        "name": "Add fw filter with protocol ipv6",
 891        "category": [
 892            "filter",
 893            "fw"
 894        ],
 895	"plugins": {
 896		"requires": "nsPlugin"
 897	},
 898        "setup": [
 899            "$TC qdisc add dev $DEV1 ingress"
 900        ],
 901        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: protocol ipv6 prio 2 handle 4 fw action ok",
 902        "expExitCode": "0",
 903        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 4 prio 2 protocol ipv6 fw",
 904        "matchPattern": "filter parent ffff: protocol ipv6 pref 2 fw.*handle 0x4.*gact action pass.*index [0-9]+ ref [0-9]+ bind [0-9]+",
 905        "matchCount": "1",
 906        "teardown": [
 907            "$TC qdisc del dev $DEV1 ingress"
 908        ]
 909    },
 910    {
 911        "id": "9a78",
 912        "name": "Add fw filter with protocol arp",
 913        "category": [
 914            "filter",
 915            "fw"
 916        ],
 917	"plugins": {
 918		"requires": "nsPlugin"
 919	},
 920        "setup": [
 921            "$TC qdisc add dev $DEV1 ingress"
 922        ],
 923        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: protocol arp prio 5 handle 7 fw action drop",
 924        "expExitCode": "0",
 925        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 7 prio 5 protocol arp fw",
 926        "matchPattern": "filter parent ffff: protocol arp pref 5 fw.*handle 0x7.*gact action drop.*index [0-9]+ ref [0-9]+ bind [0-9]+",
 927        "matchCount": "1",
 928        "teardown": [
 929            "$TC qdisc del dev $DEV1 ingress"
 930        ]
 931    },
 932    {
 933        "id": "1821",
 934        "name": "Add fw filter with protocol 802_3",
 935        "category": [
 936            "filter",
 937            "fw"
 938        ],
 939	"plugins": {
 940		"requires": "nsPlugin"
 941	},
 942        "setup": [
 943            "$TC qdisc add dev $DEV1 ingress"
 944        ],
 945        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: protocol 802_3 handle 1 prio 1 fw action ok",
 946        "expExitCode": "0",
 947        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol 802_3 fw",
 948        "matchPattern": "filter parent ffff: protocol 802_3 pref 1 fw.*handle 0x1.*gact action pass",
 949        "matchCount": "1",
 950        "teardown": [
 951            "$TC qdisc del dev $DEV1 ingress"
 952        ]
 953    },
 954    {
 955        "id": "2260",
 956        "name": "Add fw filter with invalid protocol",
 957        "category": [
 958            "filter",
 959            "fw"
 960        ],
 961	"plugins": {
 962		"requires": "nsPlugin"
 963	},
 964        "setup": [
 965            "$TC qdisc add dev $DEV1 ingress"
 966        ],
 967        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: protocol igmp handle 1 prio 1 fw action ok",
 968        "expExitCode": "255",
 969        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 1 prio 1 protocol igmp fw",
 970        "matchPattern": "filter parent ffff: protocol igmp pref 1 fw.*handle 0x1.*gact action pass",
 971        "matchCount": "0",
 972        "teardown": [
 973            "$TC qdisc del dev $DEV1 ingress"
 974        ]
 975    },
 976    {
 977        "id": "09d7",
 978        "name": "Add fw filters protocol 802_3 and ip with conflicting priorities",
 979        "category": [
 980            "filter",
 981            "fw"
 982        ],
 983	"plugins": {
 984		"requires": "nsPlugin"
 985	},
 986        "setup": [
 987            "$TC qdisc add dev $DEV1 ingress",
 988            "$TC filter add dev $DEV1 parent ffff: protocol 802_3 prio 3 handle 7 fw action ok"
 989        ],
 990        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: protocol ip prio 3 handle 8 fw action ok",
 991        "expExitCode": "2",
 992        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 8 prio 3 protocol ip fw",
 993        "matchPattern": "filter parent ffff: protocol ip pref 3 fw.*handle 0x8",
 994        "matchCount": "0",
 995        "teardown": [
 996            "$TC qdisc del dev $DEV1 ingress"
 997        ]
 998    },
 999    {
1000        "id": "6973",
1001        "name": "Add fw filters with same index, same action",
1002        "category": [
1003            "filter",
1004            "fw"
1005        ],
1006	"plugins": {
1007		"requires": "nsPlugin"
1008	},
1009        "setup": [
1010            "$TC qdisc add dev $DEV1 ingress",
1011            "$TC filter add dev $DEV1 parent ffff: prio 6 handle 2 fw action continue index 5"
1012        ],
1013        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: prio 8 handle 4 fw action continue index 5",
1014        "expExitCode": "0",
1015        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 4 prio 8 protocol all fw",
1016        "matchPattern": "filter parent ffff: protocol all pref 8 fw.*handle 0x4.*gact action continue.*index 5 ref 2 bind 2",
1017        "matchCount": "1",
1018        "teardown": [
1019            "$TC qdisc del dev $DEV1 ingress"
1020        ]
1021    },
1022    {
1023        "id": "fc06",
1024        "name": "Add fw filters with action police",
1025        "category": [
1026            "filter",
1027            "fw"
1028        ],
1029	"plugins": {
1030		"requires": "nsPlugin"
1031	},
1032        "setup": [
1033            "$TC qdisc add dev $DEV1 ingress"
1034        ],
1035        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: prio 3 handle 4 fw action police rate 1kbit burst 10k index 5",
1036        "expExitCode": "0",
1037        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 4 prio 3 protocol all fw",
1038        "matchPattern": "filter parent ffff: protocol all pref 3 fw.*handle 0x4.*police 0x5 rate 1Kbit burst 10Kb mtu 2Kb action reclassify overhead 0b.*ref 1 bind 1",
1039        "matchCount": "1",
1040        "teardown": [
1041            "$TC qdisc del dev $DEV1 ingress"
1042        ]
1043    },
1044    {
1045        "id": "aac7",
1046        "name": "Add fw filters with action police linklayer atm",
1047        "category": [
1048            "filter",
1049            "fw"
1050        ],
1051	"plugins": {
1052		"requires": "nsPlugin"
1053	},
1054        "setup": [
1055            "$TC qdisc add dev $DEV1 ingress"
1056        ],
1057        "cmdUnderTest": "$TC filter add dev $DEV1 parent ffff: prio 3 handle 4 fw action police rate 2mbit burst 200k linklayer atm index 8",
1058        "expExitCode": "0",
1059        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 4 prio 3 protocol all fw",
1060        "matchPattern": "filter parent ffff: protocol all pref 3 fw.*handle 0x4.*police 0x8 rate 2Mbit burst 200Kb mtu 2Kb action reclassify overhead 0b linklayer atm.*ref 1 bind 1",
1061        "matchCount": "1",
1062        "teardown": [
1063            "$TC qdisc del dev $DEV1 ingress"
1064        ]
1065    },
1066    {
1067        "id": "5339",
1068        "name": "Del entire fw filter",
1069        "category": [
1070            "filter",
1071            "fw"
1072        ],
1073	"plugins": {
1074		"requires": "nsPlugin"
1075	},
1076        "setup": [
1077            "$TC qdisc add dev $DEV1 ingress",
1078            "$TC filter add dev $DEV1 parent ffff: handle 5 prio 7 fw action pass",
1079            "$TC filter add dev $DEV1 parent ffff: handle 3 prio 9 fw action pass"
1080        ],
1081        "cmdUnderTest": "$TC filter del dev $DEV1 parent ffff:",
1082        "expExitCode": "0",
1083        "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
1084        "matchPattern": "protocol all pref.*handle.*gact action pass",
1085        "matchCount": "0",
1086        "teardown": [
1087            "$TC qdisc del dev $DEV1 ingress"
1088        ]
1089    },
1090    {
1091        "id": "0e99",
1092        "name": "Del single fw filter x1",
1093        "category": [
1094            "filter",
1095            "fw"
1096        ],
1097	"plugins": {
1098		"requires": "nsPlugin"
1099	},
1100        "setup": [
1101            "$TC qdisc add dev $DEV1 ingress",
1102            "$TC filter add dev $DEV1 parent ffff: handle 5 prio 7 fw action pass",
1103            "$TC filter add dev $DEV1 parent ffff: handle 3 prio 9 fw action pass"
1104        ],
1105        "cmdUnderTest": "$TC filter del dev $DEV1 parent ffff: handle 3 prio 9 fw action pass",
1106        "expExitCode": "0",
1107        "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
1108        "matchPattern": "protocol all pref 7.*handle 0x5.*gact action pass",
1109        "matchCount": "1",
1110        "teardown": [
1111            "$TC qdisc del dev $DEV1 ingress"
1112        ]
1113    },
1114    {
1115        "id": "f54c",
1116        "name": "Del single fw filter x2",
1117        "category": [
1118            "filter",
1119            "fw"
1120        ],
1121	"plugins": {
1122		"requires": "nsPlugin"
1123	},
1124        "setup": [
1125            "$TC qdisc add dev $DEV1 ingress",
1126            "$TC filter add dev $DEV1 parent ffff: handle 5 prio 7 fw action pass",
1127            "$TC filter add dev $DEV1 parent ffff: handle 3 prio 9 fw action pass"
1128        ],
1129        "cmdUnderTest": "$TC filter del dev $DEV1 parent ffff: handle 3 prio 9 fw action pass",
1130        "expExitCode": "0",
1131        "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
1132        "matchPattern": "protocol all pref 9.*handle 0x3.*gact action pass",
1133        "matchCount": "0",
1134        "teardown": [
1135            "$TC qdisc del dev $DEV1 ingress"
1136        ]
1137    },
1138    {
1139        "id": "ba94",
1140        "name": "Del fw filter by prio",
1141        "category": [
1142            "filter",
1143            "fw"
1144        ],
1145	"plugins": {
1146		"requires": "nsPlugin"
1147	},
1148        "setup": [
1149            "$TC qdisc add dev $DEV1 ingress",
1150            "$TC filter add dev $DEV1 parent ffff: handle 1 prio 4 fw action ok",
1151            "$TC filter add dev $DEV1 parent ffff: handle 2 prio 4 fw action ok"
1152        ],
1153        "cmdUnderTest": "$TC filter del dev $DEV1 parent ffff: prio 4",
1154        "expExitCode": "0",
1155        "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
1156        "matchPattern": "pref 4 fw.*gact action pass",
1157        "matchCount": "0",
1158        "teardown": [
1159            "$TC qdisc del dev $DEV1 ingress"
1160        ]
1161    },
1162    {
1163        "id": "4acb",
1164        "name": "Del fw filter by chain",
1165        "category": [
1166            "filter",
1167            "fw"
1168        ],
1169	"plugins": {
1170		"requires": "nsPlugin"
1171	},
1172        "setup": [
1173            "$TC qdisc add dev $DEV1 ingress",
1174            "$TC filter add dev $DEV1 parent ffff: handle 4 prio 2 chain 13 fw action pipe",
1175            "$TC filter add dev $DEV1 parent ffff: handle 3 prio 5 chain 13 fw action pipe"
1176        ],
1177        "cmdUnderTest": "$TC filter del dev $DEV1 parent ffff: chain 13",
1178        "expExitCode": "0",
1179        "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
1180        "matchPattern": "fw chain 13 handle.*gact action pipe",
1181        "matchCount": "0",
1182        "teardown": [
1183            "$TC qdisc del dev $DEV1 ingress"
1184        ]
1185    },
1186    {
1187        "id": "3424",
1188        "name": "Del fw filter by action (invalid)",
1189        "category": [
1190            "filter",
1191            "fw"
1192        ],
1193	"plugins": {
1194		"requires": "nsPlugin"
1195	},
1196        "setup": [
1197            "$TC qdisc add dev $DEV1 ingress",
1198            "$TC filter add dev $DEV1 parent ffff: handle 2 prio 4 fw action drop"
1199        ],
1200        "cmdUnderTest": "$TC filter del dev $DEV1 parent ffff: fw action drop",
1201        "expExitCode": "2",
1202        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 2 prio 4 protocol all fw",
1203        "matchPattern": "handle 0x2.*gact action drop",
1204        "matchCount": "1",
1205        "teardown": [
1206            "$TC qdisc del dev $DEV1 ingress"
1207        ]
1208    },
1209    {
1210        "id": "da89",
1211        "name": "Del fw filter by handle (invalid)",
1212        "category": [
1213            "filter",
1214            "fw"
1215        ],
1216	"plugins": {
1217		"requires": "nsPlugin"
1218	},
1219        "setup": [
1220            "$TC qdisc add dev $DEV1 ingress",
1221            "$TC filter add dev $DEV1 parent ffff: handle 3 prio 4 fw action continue"
1222        ],
1223        "cmdUnderTest": "$TC filter del dev $DEV1 parent ffff: handle 3 fw",
1224        "expExitCode": "2",
1225        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 3 prio 4 protocol all fw",
1226        "matchPattern": "handle 0x3.*gact action continue",
1227        "matchCount": "1",
1228        "teardown": [
1229            "$TC qdisc del dev $DEV1 ingress"
1230        ]
1231    },
1232    {
1233        "id": "4d95",
1234        "name": "Del fw filter by protocol (invalid)",
1235        "category": [
1236            "filter",
1237            "fw"
1238        ],
1239	"plugins": {
1240		"requires": "nsPlugin"
1241	},
1242        "setup": [
1243            "$TC qdisc add dev $DEV1 ingress",
1244            "$TC filter add dev $DEV1 parent ffff: handle 4 prio 2 protocol arp fw action pipe"
1245        ],
1246        "cmdUnderTest": "$TC filter del dev $DEV1 parent ffff: protocol arp fw",
1247        "expExitCode": "2",
1248        "verifyCmd": "$TC filter get dev $DEV1 parent ffff: handle 4 prio 2 protocol arp fw",
1249        "matchPattern": "filter parent ffff: protocol arp.*handle 0x4.*gact action pipe",
1250        "matchCount": "1",
1251        "teardown": [
1252            "$TC qdisc del dev $DEV1 ingress"
1253        ]
1254    },
1255    {
1256        "id": "4736",
1257        "name": "Del fw filter by flowid (invalid)",
1258        "category": [
1259            "filter",
1260            "fw"
1261        ],
1262	"plugins": {
1263		"requires": "nsPlugin"
1264	},
1265        "setup": [
1266            "$TC qdisc add dev $DEV1 ingress",
1267            "$TC filter add dev $DEV1 parent ffff: handle 4 prio 2 fw action pipe flowid 45"
1268        ],
1269        "cmdUnderTest": "$TC filter del dev $DEV1 parent ffff: fw flowid 45",
1270        "expExitCode": "2",
1271        "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
1272        "matchPattern": "handle 0x4.*gact action pipe",
1273        "matchCount": "1",
1274        "teardown": [
1275            "$TC qdisc del dev $DEV1 ingress"
1276        ]
1277    },
1278    {
1279        "id": "3dcb",
1280        "name": "Replace fw filter action",
1281        "category": [
1282            "filter",
1283            "fw"
1284        ],
1285	"plugins": {
1286		"requires": "nsPlugin"
1287	},
1288        "setup": [
1289            "$TC qdisc add dev $DEV1 ingress",
1290            "$TC filter add dev $DEV1 parent ffff: handle 1 prio 2 fw action ok"
1291        ],
1292        "cmdUnderTest": "$TC filter replace dev $DEV1 parent ffff: handle 1 prio 2 fw action pipe",
1293        "expExitCode": "0",
1294        "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
1295        "matchPattern": "pref 2 fw.*handle 0x1.*gact action pipe",
1296        "matchCount": "1",
1297        "teardown": [
1298            "$TC qdisc del dev $DEV1 ingress"
1299        ]
1300    },
1301    {
1302        "id": "eb4d",
1303        "name": "Replace fw filter classid",
1304        "category": [
1305            "filter",
1306            "fw"
1307        ],
1308	"plugins": {
1309		"requires": "nsPlugin"
1310	},
1311        "setup": [
1312            "$TC qdisc add dev $DEV1 ingress",
1313            "$TC filter add dev $DEV1 parent ffff: handle 1 prio 2 fw action ok"
1314        ],
1315        "cmdUnderTest": "$TC filter replace dev $DEV1 parent ffff: handle 1 prio 2 fw action pipe classid 2",
1316        "expExitCode": "0",
1317        "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
1318        "matchPattern": "pref 2 fw.*handle 0x1 classid :2.*gact action pipe",
1319        "matchCount": "1",
1320        "teardown": [
1321            "$TC qdisc del dev $DEV1 ingress"
1322        ]
1323    },
1324    {
1325        "id": "67ec",
1326        "name": "Replace fw filter index",
1327        "category": [
1328            "filter",
1329            "fw"
1330        ],
1331	"plugins": {
1332		"requires": "nsPlugin"
1333	},
1334        "setup": [
1335            "$TC qdisc add dev $DEV1 ingress",
1336            "$TC filter add dev $DEV1 parent ffff: handle 1 prio 2 fw action ok index 3"
1337        ],
1338        "cmdUnderTest": "$TC filter replace dev $DEV1 parent ffff: handle 1 prio 2 fw action ok index 16",
1339        "expExitCode": "0",
1340        "verifyCmd": "$TC filter show dev $DEV1 parent ffff:",
1341        "matchPattern": "pref 2 fw.*handle 0x1.*gact action pass.*index 16",
1342        "matchCount": "1",
1343        "teardown": [
1344            "$TC qdisc del dev $DEV1 ingress"
1345        ]
1346    },
1347    {
1348        "id": "e470",
1349        "name": "Try to delete class referenced by fw after a replace",
1350        "category": [
1351            "filter",
1352            "fw"
1353        ],
1354        "plugins": {
1355            "requires": "nsPlugin"
1356        },
1357        "setup": [
1358            "$TC qdisc add dev $DEV1 parent root handle 10: drr",
1359            "$TC class add dev $DEV1 parent root classid 1 drr",
1360            "$TC filter add dev $DEV1 parent 10: handle 1 prio 1 fw classid 10:1 action ok",
1361            "$TC filter replace dev $DEV1 parent 10: handle 1 prio 1 fw classid 10:1 action drop"
1362        ],
1363        "cmdUnderTest": "$TC class delete dev $DEV1 parent 10: classid 10:1",
1364        "expExitCode": "2",
1365        "verifyCmd": "$TC class show dev $DEV1",
1366        "matchPattern": "class drr 10:1",
1367        "matchCount": "1",
1368        "teardown": [
1369            "$TC qdisc del dev $DEV1 parent root drr"
1370        ]
1371    },
1372    {
1373        "id": "ec1a",
1374        "name": "Replace fw classid with nil",
1375        "category": [
1376            "filter",
1377            "fw"
1378        ],
1379        "plugins": {
1380            "requires": "nsPlugin"
1381        },
1382        "setup": [
1383            "$TC qdisc add dev $DEV1 parent root handle 10: drr",
1384            "$TC class add dev $DEV1 parent root classid 1 drr",
1385            "$TC filter add dev $DEV1 parent 10: handle 1 prio 1 fw classid 10:1 action ok"
1386        ],
1387        "cmdUnderTest": "$TC filter replace dev $DEV1 parent 10: handle 1 prio 1 fw action drop",
1388        "expExitCode": "0",
1389        "verifyCmd": "$TC filter show dev $DEV1 parent 10:",
1390        "matchPattern": "fw chain 0 handle 0x1",
1391        "matchCount": "1",
1392        "teardown": [
1393            "$TC qdisc del dev $DEV1 parent root drr"
1394        ]
1395    }
1396]
~/ Read-only file preview.