| 260 | } |
| 261 | |
| 262 | static int |
| 263 | check_fib(struct rte_fib *fib) |
| 264 | { |
| 265 | uint64_t def_nh = 100; |
| 266 | uint32_t ip_arr[RTE_FIB_MAXDEPTH]; |
| 267 | uint32_t ip_add = RTE_IPV4(128, 0, 0, 0); |
| 268 | uint32_t i, ip_missing = RTE_IPV4(127, 255, 255, 255); |
| 269 | int ret; |
| 270 | |
| 271 | for (i = 0; i < RTE_FIB_MAXDEPTH; i++) |
| 272 | ip_arr[i] = ip_add + (1ULL << i) - 1; |
| 273 | |
| 274 | ret = lookup_and_check_desc(fib, ip_arr, ip_missing, def_nh, 0); |
| 275 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, "Lookup and check fails\n"); |
| 276 | |
| 277 | for (i = 1; i <= RTE_FIB_MAXDEPTH; i++) { |
| 278 | ret = rte_fib_add(fib, ip_add, i, i); |
| 279 | RTE_TEST_ASSERT(ret == 0, "Failed to add a route\n"); |
| 280 | ret = lookup_and_check_asc(fib, ip_arr, ip_missing, |
| 281 | def_nh, i); |
| 282 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, "Lookup and check fails\n"); |
| 283 | } |
| 284 | |
| 285 | for (i = RTE_FIB_MAXDEPTH; i > 1; i--) { |
| 286 | ret = rte_fib_delete(fib, ip_add, i); |
| 287 | RTE_TEST_ASSERT(ret == 0, "Failed to delete a route\n"); |
| 288 | ret = lookup_and_check_asc(fib, ip_arr, ip_missing, |
| 289 | def_nh, i - 1); |
| 290 | |
| 291 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, "Lookup and check fails\n"); |
| 292 | } |
| 293 | ret = rte_fib_delete(fib, ip_add, i); |
| 294 | RTE_TEST_ASSERT(ret == 0, "Failed to delete a route\n"); |
| 295 | ret = lookup_and_check_desc(fib, ip_arr, ip_missing, def_nh, 0); |
| 296 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, "Lookup and check fails\n"); |
| 297 | |
| 298 | for (i = 0; i < RTE_FIB_MAXDEPTH; i++) { |
| 299 | ret = rte_fib_add(fib, ip_add, RTE_FIB_MAXDEPTH - i, |
| 300 | RTE_FIB_MAXDEPTH - i); |
| 301 | RTE_TEST_ASSERT(ret == 0, "Failed to add a route\n"); |
| 302 | ret = lookup_and_check_desc(fib, ip_arr, ip_missing, |
| 303 | def_nh, i + 1); |
| 304 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, "Lookup and check fails\n"); |
| 305 | } |
| 306 | |
| 307 | for (i = 1; i <= RTE_FIB_MAXDEPTH; i++) { |
| 308 | ret = rte_fib_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, |
| 311 | RTE_FIB_MAXDEPTH - i); |
| 312 | RTE_TEST_ASSERT(ret == TEST_SUCCESS, "Lookup and check fails\n"); |
| 313 | } |
| 314 | |
| 315 | return TEST_SUCCESS; |
| 316 | } |
| 317 | |
| 318 | int32_t |
| 319 | test_lookup(void) |
no test coverage detected