Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: net: modify IOAM tests for undef bits

The output behavior for undefined bits is now directly tested inside the bash
script. Trying to set an undefined bit should be refused.

The input behavior for undefined bits has been removed due to the fact that we
would need another sender allowed to set undefined bits.

Signed-off-by: Justin Iurman <justin.iurman@uliege.be>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Justin Iurman and committed by
David S. Miller
7b1700e0 2bbc977c

+80 -108
+20 -4
tools/testing/selftests/net/ioam6.sh
··· 468 468 for i in {0..22} 469 469 do 470 470 ip -netns ioam-node-alpha route change db01::/64 encap ioam6 trace \ 471 - prealloc type ${bit2type[$i]} ns 123 size ${bit2size[$i]} dev veth0 471 + prealloc type ${bit2type[$i]} ns 123 size ${bit2size[$i]} \ 472 + dev veth0 &>/dev/null 472 473 473 - run_test "out_bit$i" "${desc/<n>/$i}" ioam-node-alpha ioam-node-beta \ 474 - db01::2 db01::1 veth0 ${bit2type[$i]} 123 474 + local cmd_res=$? 475 + local descr="${desc/<n>/$i}" 476 + 477 + if [[ $i -ge 12 && $i -le 21 ]] 478 + then 479 + if [ $cmd_res != 0 ] 480 + then 481 + npassed=$((npassed+1)) 482 + log_test_passed "$descr" 483 + else 484 + nfailed=$((nfailed+1)) 485 + log_test_failed "$descr" 486 + fi 487 + else 488 + run_test "out_bit$i" "$descr" ioam-node-alpha ioam-node-beta \ 489 + db01::2 db01::1 veth0 ${bit2type[$i]} 123 490 + fi 475 491 done 476 492 477 493 bit2size[22]=$tmp ··· 560 544 local tmp=${bit2size[22]} 561 545 bit2size[22]=$(( $tmp + ${#BETA[9]} + ((4 - (${#BETA[9]} % 4)) % 4) )) 562 546 563 - for i in {0..22} 547 + for i in {0..11} {22..22} 564 548 do 565 549 ip -netns ioam-node-alpha route change db01::/64 encap ioam6 trace \ 566 550 prealloc type ${bit2type[$i]} ns 123 size ${bit2size[$i]} dev veth0
+60 -104
tools/testing/selftests/net/ioam6_parser.c
··· 94 94 TEST_OUT_BIT9, 95 95 TEST_OUT_BIT10, 96 96 TEST_OUT_BIT11, 97 - TEST_OUT_BIT12, 98 - TEST_OUT_BIT13, 99 - TEST_OUT_BIT14, 100 - TEST_OUT_BIT15, 101 - TEST_OUT_BIT16, 102 - TEST_OUT_BIT17, 103 - TEST_OUT_BIT18, 104 - TEST_OUT_BIT19, 105 - TEST_OUT_BIT20, 106 - TEST_OUT_BIT21, 107 97 TEST_OUT_BIT22, 108 98 TEST_OUT_FULL_SUPP_TRACE, 109 99 ··· 115 125 TEST_IN_BIT9, 116 126 TEST_IN_BIT10, 117 127 TEST_IN_BIT11, 118 - TEST_IN_BIT12, 119 - TEST_IN_BIT13, 120 - TEST_IN_BIT14, 121 - TEST_IN_BIT15, 122 - TEST_IN_BIT16, 123 - TEST_IN_BIT17, 124 - TEST_IN_BIT18, 125 - TEST_IN_BIT19, 126 - TEST_IN_BIT20, 127 - TEST_IN_BIT21, 128 128 TEST_IN_BIT22, 129 129 TEST_IN_FULL_SUPP_TRACE, 130 130 ··· 178 198 return ioam6h->overflow || 179 199 ioam6h->nodelen != 2 || 180 200 ioam6h->remlen; 181 - 182 - case TEST_OUT_BIT12: 183 - case TEST_IN_BIT12: 184 - case TEST_OUT_BIT13: 185 - case TEST_IN_BIT13: 186 - case TEST_OUT_BIT14: 187 - case TEST_IN_BIT14: 188 - case TEST_OUT_BIT15: 189 - case TEST_IN_BIT15: 190 - case TEST_OUT_BIT16: 191 - case TEST_IN_BIT16: 192 - case TEST_OUT_BIT17: 193 - case TEST_IN_BIT17: 194 - case TEST_OUT_BIT18: 195 - case TEST_IN_BIT18: 196 - case TEST_OUT_BIT19: 197 - case TEST_IN_BIT19: 198 - case TEST_OUT_BIT20: 199 - case TEST_IN_BIT20: 200 - case TEST_OUT_BIT21: 201 - case TEST_IN_BIT21: 202 - return ioam6h->overflow || 203 - ioam6h->nodelen || 204 - ioam6h->remlen != 1; 205 201 206 202 case TEST_OUT_BIT22: 207 203 case TEST_IN_BIT22: ··· 277 321 } 278 322 279 323 if (ioam6h->type.bit11) { 324 + if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 325 + return 1; 326 + *p += sizeof(__u32); 327 + } 328 + 329 + if (ioam6h->type.bit12) { 330 + if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 331 + return 1; 332 + *p += sizeof(__u32); 333 + } 334 + 335 + if (ioam6h->type.bit13) { 336 + if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 337 + return 1; 338 + *p += sizeof(__u32); 339 + } 340 + 341 + if (ioam6h->type.bit14) { 342 + if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 343 + return 1; 344 + *p += sizeof(__u32); 345 + } 346 + 347 + if (ioam6h->type.bit15) { 348 + if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 349 + return 1; 350 + *p += sizeof(__u32); 351 + } 352 + 353 + if (ioam6h->type.bit16) { 354 + if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 355 + return 1; 356 + *p += sizeof(__u32); 357 + } 358 + 359 + if (ioam6h->type.bit17) { 360 + if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 361 + return 1; 362 + *p += sizeof(__u32); 363 + } 364 + 365 + if (ioam6h->type.bit18) { 366 + if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 367 + return 1; 368 + *p += sizeof(__u32); 369 + } 370 + 371 + if (ioam6h->type.bit19) { 372 + if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 373 + return 1; 374 + *p += sizeof(__u32); 375 + } 376 + 377 + if (ioam6h->type.bit20) { 378 + if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 379 + return 1; 380 + *p += sizeof(__u32); 381 + } 382 + 383 + if (ioam6h->type.bit21) { 280 384 if (__be32_to_cpu(*((__u32 *)*p)) != 0xffffffff) 281 385 return 1; 282 386 *p += sizeof(__u32); ··· 471 455 return TEST_OUT_BIT10; 472 456 if (!strcmp("out_bit11", tname)) 473 457 return TEST_OUT_BIT11; 474 - if (!strcmp("out_bit12", tname)) 475 - return TEST_OUT_BIT12; 476 - if (!strcmp("out_bit13", tname)) 477 - return TEST_OUT_BIT13; 478 - if (!strcmp("out_bit14", tname)) 479 - return TEST_OUT_BIT14; 480 - if (!strcmp("out_bit15", tname)) 481 - return TEST_OUT_BIT15; 482 - if (!strcmp("out_bit16", tname)) 483 - return TEST_OUT_BIT16; 484 - if (!strcmp("out_bit17", tname)) 485 - return TEST_OUT_BIT17; 486 - if (!strcmp("out_bit18", tname)) 487 - return TEST_OUT_BIT18; 488 - if (!strcmp("out_bit19", tname)) 489 - return TEST_OUT_BIT19; 490 - if (!strcmp("out_bit20", tname)) 491 - return TEST_OUT_BIT20; 492 - if (!strcmp("out_bit21", tname)) 493 - return TEST_OUT_BIT21; 494 458 if (!strcmp("out_bit22", tname)) 495 459 return TEST_OUT_BIT22; 496 460 if (!strcmp("out_full_supp_trace", tname)) ··· 505 509 return TEST_IN_BIT10; 506 510 if (!strcmp("in_bit11", tname)) 507 511 return TEST_IN_BIT11; 508 - if (!strcmp("in_bit12", tname)) 509 - return TEST_IN_BIT12; 510 - if (!strcmp("in_bit13", tname)) 511 - return TEST_IN_BIT13; 512 - if (!strcmp("in_bit14", tname)) 513 - return TEST_IN_BIT14; 514 - if (!strcmp("in_bit15", tname)) 515 - return TEST_IN_BIT15; 516 - if (!strcmp("in_bit16", tname)) 517 - return TEST_IN_BIT16; 518 - if (!strcmp("in_bit17", tname)) 519 - return TEST_IN_BIT17; 520 - if (!strcmp("in_bit18", tname)) 521 - return TEST_IN_BIT18; 522 - if (!strcmp("in_bit19", tname)) 523 - return TEST_IN_BIT19; 524 - if (!strcmp("in_bit20", tname)) 525 - return TEST_IN_BIT20; 526 - if (!strcmp("in_bit21", tname)) 527 - return TEST_IN_BIT21; 528 512 if (!strcmp("in_bit22", tname)) 529 513 return TEST_IN_BIT22; 530 514 if (!strcmp("in_full_supp_trace", tname)) ··· 582 606 [TEST_OUT_BIT9] = check_ioam_header_and_data, 583 607 [TEST_OUT_BIT10] = check_ioam_header_and_data, 584 608 [TEST_OUT_BIT11] = check_ioam_header_and_data, 585 - [TEST_OUT_BIT12] = check_ioam_header, 586 - [TEST_OUT_BIT13] = check_ioam_header, 587 - [TEST_OUT_BIT14] = check_ioam_header, 588 - [TEST_OUT_BIT15] = check_ioam_header, 589 - [TEST_OUT_BIT16] = check_ioam_header, 590 - [TEST_OUT_BIT17] = check_ioam_header, 591 - [TEST_OUT_BIT18] = check_ioam_header, 592 - [TEST_OUT_BIT19] = check_ioam_header, 593 - [TEST_OUT_BIT20] = check_ioam_header, 594 - [TEST_OUT_BIT21] = check_ioam_header, 595 609 [TEST_OUT_BIT22] = check_ioam_header_and_data, 596 610 [TEST_OUT_FULL_SUPP_TRACE] = check_ioam_header_and_data, 597 611 [TEST_IN_UNDEF_NS] = check_ioam_header, ··· 599 633 [TEST_IN_BIT9] = check_ioam_header_and_data, 600 634 [TEST_IN_BIT10] = check_ioam_header_and_data, 601 635 [TEST_IN_BIT11] = check_ioam_header_and_data, 602 - [TEST_IN_BIT12] = check_ioam_header, 603 - [TEST_IN_BIT13] = check_ioam_header, 604 - [TEST_IN_BIT14] = check_ioam_header, 605 - [TEST_IN_BIT15] = check_ioam_header, 606 - [TEST_IN_BIT16] = check_ioam_header, 607 - [TEST_IN_BIT17] = check_ioam_header, 608 - [TEST_IN_BIT18] = check_ioam_header, 609 - [TEST_IN_BIT19] = check_ioam_header, 610 - [TEST_IN_BIT20] = check_ioam_header, 611 - [TEST_IN_BIT21] = check_ioam_header, 612 636 [TEST_IN_BIT22] = check_ioam_header_and_data, 613 637 [TEST_IN_FULL_SUPP_TRACE] = check_ioam_header_and_data, 614 638 [TEST_FWD_FULL_SUPP_TRACE] = check_ioam_header_and_data,