| 267 | } |
| 268 | |
| 269 | static int |
| 270 | check_fib(struct rte_fib6 *fib) |
| 271 | { |
| 272 | uint64_t def_nh = 100; |
| 273 | uint8_t ip_arr[RTE_FIB6_MAXDEPTH][RTE_FIB6_IPV6_ADDR_SIZE]; |
| 274 | uint8_t ip_add[RTE_FIB6_IPV6_ADDR_SIZE] = {0}; |
| 275 | uint8_t ip_missing[1][RTE_FIB6_IPV6_ADDR_SIZE] = { {255} }; |
| 276 | uint32_t i, j; |
| 277 | int ret; |
| 278 | |
| 279 | ip_add[0] = 128; |
| 280 | ip_missing[0][0] = 127; |
| 281 | for (i = 0; i < RTE_FIB6_MAXDEPTH; i++) { |
| 282 | for (j = 0; j < RTE_FIB6_IPV6_ADDR_SIZE; j++) { |
| 283 | ip_arr[i][j] = ip_add[j] | |
| 284 | ~get_msk_part(RTE_FIB6_MAXDEPTH - i, j); |
| 285 | } |
| 286 | } |
| 287 | |
| 288 | ret = lookup_and_check_desc(fib, ip_arr, ip_missing, def_nh, 0); |
| 289 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, "Lookup and check fails\n"); |
| 290 | |
| 291 | for (i = 1; i <= RTE_FIB6_MAXDEPTH; i++) { |
| 292 | ret = rte_fib6_add(fib, ip_add, i, i); |
| 293 | RTE_TEST_ASSERT(ret == 0, "Failed to add a route\n"); |
| 294 | ret = lookup_and_check_asc(fib, ip_arr, ip_missing, def_nh, i); |
| 295 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, |
| 296 | "Lookup and check fails\n"); |
| 297 | } |
| 298 | |
| 299 | for (i = RTE_FIB6_MAXDEPTH; i > 1; i--) { |
| 300 | ret = rte_fib6_delete(fib, ip_add, i); |
| 301 | RTE_TEST_ASSERT(ret == 0, "Failed to delete a route\n"); |
| 302 | ret = lookup_and_check_asc(fib, ip_arr, ip_missing, |
| 303 | def_nh, i - 1); |
| 304 | |
| 305 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, |
| 306 | "Lookup and check fails\n"); |
| 307 | } |
| 308 | ret = rte_fib6_delete(fib, ip_add, i); |
| 309 | RTE_TEST_ASSERT(ret == 0, "Failed to delete a route\n"); |
| 310 | ret = lookup_and_check_desc(fib, ip_arr, ip_missing, def_nh, 0); |
| 311 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, |
| 312 | "Lookup and check fails\n"); |
| 313 | |
| 314 | for (i = 0; i < RTE_FIB6_MAXDEPTH; i++) { |
| 315 | ret = rte_fib6_add(fib, ip_add, RTE_FIB6_MAXDEPTH - i, |
| 316 | RTE_FIB6_MAXDEPTH - i); |
| 317 | RTE_TEST_ASSERT(ret == 0, "Failed to add a route\n"); |
| 318 | ret = lookup_and_check_desc(fib, ip_arr, ip_missing, |
| 319 | def_nh, i + 1); |
| 320 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, |
| 321 | "Lookup and check fails\n"); |
| 322 | } |
| 323 | |
| 324 | for (i = 1; i <= RTE_FIB6_MAXDEPTH; i++) { |
| 325 | ret = rte_fib6_delete(fib, ip_add, i); |
| 326 | RTE_TEST_ASSERT(ret == 0, "Failed to delete a route\n"); |
no test coverage detected