| 422 | } |
| 423 | |
| 424 | static int32_t |
| 425 | __test_lookup_adv(int ipv6, union rte_ipsec_sad_key *tuple, |
| 426 | const union rte_ipsec_sad_key **key_arr) |
| 427 | { |
| 428 | int status; |
| 429 | struct rte_ipsec_sad *sad = NULL; |
| 430 | struct rte_ipsec_sad_conf config; |
| 431 | uint64_t tmp1, tmp2, tmp3; |
| 432 | void *install_sa; |
| 433 | void *sa[4]; |
| 434 | |
| 435 | config.max_sa[RTE_IPSEC_SAD_SPI_ONLY] = MAX_SA; |
| 436 | config.max_sa[RTE_IPSEC_SAD_SPI_DIP] = MAX_SA; |
| 437 | config.max_sa[RTE_IPSEC_SAD_SPI_DIP_SIP] = MAX_SA; |
| 438 | config.socket_id = SOCKET_ID_ANY; |
| 439 | config.flags = 0; |
| 440 | if (ipv6) |
| 441 | config.flags = RTE_IPSEC_SAD_FLAG_IPV6; |
| 442 | sad = rte_ipsec_sad_create(__func__, &config); |
| 443 | RTE_TEST_ASSERT_NOT_NULL(sad, "Failed to create SAD\n"); |
| 444 | |
| 445 | /* lookup with empty table */ |
| 446 | status = rte_ipsec_sad_lookup(sad, key_arr, sa, 4); |
| 447 | RTE_TEST_ASSERT(status == 0, "Lookup returns an unexpected result\n"); |
| 448 | RTE_TEST_ASSERT(sa[0] == NULL, |
| 449 | "Lookup returns an unexpected result\n"); |
| 450 | RTE_TEST_ASSERT(sa[1] == NULL, |
| 451 | "Lookup returns an unexpected result\n"); |
| 452 | RTE_TEST_ASSERT(sa[2] == NULL, |
| 453 | "Lookup returns an unexpected result\n"); |
| 454 | RTE_TEST_ASSERT(sa[3] == NULL, |
| 455 | "Lookup returns an unexpected result\n"); |
| 456 | |
| 457 | /* lookup with one RTE_IPSEC_SAD_SPI_ONLY rule */ |
| 458 | install_sa = &tmp1; |
| 459 | status = rte_ipsec_sad_add(sad, tuple, |
| 460 | RTE_IPSEC_SAD_SPI_ONLY, install_sa); |
| 461 | RTE_TEST_ASSERT(status == 0, "Failed to add a rule\n"); |
| 462 | |
| 463 | status = rte_ipsec_sad_lookup(sad, key_arr, sa, 4); |
| 464 | RTE_TEST_ASSERT(status == 3, "Lookup returns an unexpected result\n"); |
| 465 | RTE_TEST_ASSERT(sa[0] == &tmp1, |
| 466 | "Lookup returns an unexpected result\n"); |
| 467 | RTE_TEST_ASSERT(sa[1] == &tmp1, |
| 468 | "Lookup returns an unexpected result\n"); |
| 469 | RTE_TEST_ASSERT(sa[2] == &tmp1, |
| 470 | "Lookup returns an unexpected result\n"); |
| 471 | RTE_TEST_ASSERT(sa[3] == NULL, |
| 472 | "Lookup returns an unexpected result\n"); |
| 473 | |
| 474 | status = rte_ipsec_sad_del(sad, tuple, RTE_IPSEC_SAD_SPI_ONLY); |
| 475 | RTE_TEST_ASSERT(status == 0, "Failde to delete a rule\n"); |
| 476 | |
| 477 | /* lookup with one RTE_IPSEC_SAD_SPI_DIP rule */ |
| 478 | install_sa = &tmp2; |
| 479 | status = rte_ipsec_sad_add(sad, tuple, |
| 480 | RTE_IPSEC_SAD_SPI_DIP, install_sa); |
| 481 | RTE_TEST_ASSERT(status == 0, "failed to add a rule\n"); |
no test coverage detected