| 343 | } |
| 344 | |
| 345 | static int32_t |
| 346 | __test_lookup_basic(int ipv6, union rte_ipsec_sad_key *tuple, |
| 347 | union rte_ipsec_sad_key *tuple_1) |
| 348 | { |
| 349 | int status; |
| 350 | struct rte_ipsec_sad *sad = NULL; |
| 351 | struct rte_ipsec_sad_conf config; |
| 352 | const union rte_ipsec_sad_key *key_arr[] = {tuple}; |
| 353 | |
| 354 | uint64_t tmp; |
| 355 | void *sa[1]; |
| 356 | |
| 357 | config.max_sa[RTE_IPSEC_SAD_SPI_ONLY] = MAX_SA; |
| 358 | config.max_sa[RTE_IPSEC_SAD_SPI_DIP] = MAX_SA; |
| 359 | config.max_sa[RTE_IPSEC_SAD_SPI_DIP_SIP] = MAX_SA; |
| 360 | config.socket_id = SOCKET_ID_ANY; |
| 361 | config.flags = 0; |
| 362 | if (ipv6) |
| 363 | config.flags = RTE_IPSEC_SAD_FLAG_IPV6; |
| 364 | |
| 365 | sad = rte_ipsec_sad_create(__func__, &config); |
| 366 | RTE_TEST_ASSERT_NOT_NULL(sad, "Failed to create SAD\n"); |
| 367 | |
| 368 | status = rte_ipsec_sad_lookup(sad, key_arr, sa, 1); |
| 369 | RTE_TEST_ASSERT((status == 0) && (sa[0] == NULL), |
| 370 | "Lookup returns an unexpected result\n"); |
| 371 | |
| 372 | sa[0] = &tmp; |
| 373 | status = rte_ipsec_sad_add(sad, tuple, RTE_IPSEC_SAD_SPI_ONLY, sa[0]); |
| 374 | RTE_TEST_ASSERT(status == 0, "Failed to add a rule\n"); |
| 375 | |
| 376 | status = rte_ipsec_sad_lookup(sad, key_arr, sa, 1); |
| 377 | RTE_TEST_ASSERT((status == 1) && (sa[0] == &tmp), |
| 378 | "Lookup returns an unexpected result\n"); |
| 379 | |
| 380 | key_arr[0] = tuple_1; |
| 381 | status = rte_ipsec_sad_lookup(sad, key_arr, sa, 1); |
| 382 | RTE_TEST_ASSERT((status == 1) && (sa[0] == &tmp), |
| 383 | "Lookup returns an unexpected result\n"); |
| 384 | key_arr[0] = tuple; |
| 385 | |
| 386 | status = rte_ipsec_sad_del(sad, tuple, RTE_IPSEC_SAD_SPI_ONLY); |
| 387 | RTE_TEST_ASSERT(status == 0, "Failed to delete a rule\n"); |
| 388 | |
| 389 | status = rte_ipsec_sad_lookup(sad, key_arr, sa, 1); |
| 390 | RTE_TEST_ASSERT((status == 0) && (sa[0] == NULL), |
| 391 | "Lookup returns an unexpected result\n"); |
| 392 | |
| 393 | rte_ipsec_sad_destroy(sad); |
| 394 | |
| 395 | return TEST_SUCCESS; |
| 396 | } |
| 397 | |
| 398 | /* |
| 399 | * Lookup missing key, then add it as RTE_IPSEC_SAD_SPI_ONLY, lookup it again, |
no test coverage detected