diff options
Diffstat (limited to 'src/plugins/unittest/fib_test.c')
-rw-r--r-- | src/plugins/unittest/fib_test.c | 297 |
1 files changed, 181 insertions, 116 deletions
diff --git a/src/plugins/unittest/fib_test.c b/src/plugins/unittest/fib_test.c index f62f232580d..fbac809d726 100644 --- a/src/plugins/unittest/fib_test.c +++ b/src/plugins/unittest/fib_test.c @@ -142,24 +142,21 @@ fib_test_mk_intf (u32 ninterfaces) for (i = 0; i < ninterfaces; i++) { - hw_address[5] = i; + vnet_eth_interface_registration_t eir = {}; + vnet_main_t *vnm = vnet_get_main(); - error = ethernet_register_interface(vnet_get_main(), - test_interface_device_class.index, - i /* instance */, - hw_address, - &tm->hw_if_indicies[i], - /* flag change */ 0); + hw_address[5] = i; - FIB_TEST((NULL == error), "ADD interface %d", i); + eir.dev_class_index = test_interface_device_class.index; + eir.dev_instance = i; + eir.address = hw_address; + tm->hw_if_indicies[i] = vnet_eth_register_interface (vnm, &eir); error = vnet_hw_interface_set_flags(vnet_get_main(), tm->hw_if_indicies[i], VNET_HW_INTERFACE_FLAG_LINK_UP); tm->hw[i] = vnet_get_hw_interface(vnet_get_main(), tm->hw_if_indicies[i]); - ip4_main.fib_index_by_sw_if_index[tm->hw[i]->sw_if_index] = 0; - ip6_main.fib_index_by_sw_if_index[tm->hw[i]->sw_if_index] = 0; error = vnet_sw_interface_set_flags(vnet_get_main(), tm->hw[i]->sw_if_index, @@ -784,6 +781,69 @@ fib_test_validate_entry (fib_node_index_t fei, } static int +fib_test_multipath_v4 (const test_main_t *tm, const u32 fib_index, + const fib_prefix_t *pfx, const int n_paths, + const int expected_n_buckets) +{ + const int path_list_pool_size = fib_path_list_pool_size(); + const int path_list_db_size = fib_path_list_db_size(); + const int entry_pool_size = fib_entry_pool_size(); + fib_route_path_t *r_paths = NULL; + const load_balance_t *lb; + const dpo_id_t *dpo; + u32 fei; + int res = 0; + int i; + + for (i = 0; i < n_paths; i++) + { + fib_route_path_t r_path = { + .frp_proto = DPO_PROTO_IP4, + .frp_addr = { + .ip4.as_u32 = clib_host_to_net_u32(0x0a0a0a02 + i), + }, + .frp_sw_if_index = tm->hw[0]->sw_if_index, + .frp_weight = 1, + .frp_fib_index = ~0, + .frp_flags = FIB_ROUTE_PATH_ATTACHED, + }; + vec_add1(r_paths, r_path); + } + + fib_table_entry_update(fib_index, + pfx, + FIB_SOURCE_API, + FIB_ENTRY_FLAG_NONE, + r_paths); + + fei = fib_table_lookup_exact_match(fib_index, pfx); + FIB_TEST((FIB_NODE_INDEX_INVALID != fei), "prefix present"); + dpo = fib_entry_contribute_ip_forwarding(fei); + + lb = load_balance_get(dpo->dpoi_index); + FIB_TEST((lb->lb_n_buckets == expected_n_buckets), + "prefix lb over %d paths", lb->lb_n_buckets); + + fib_table_entry_delete(fib_index, + pfx, + FIB_SOURCE_API); + FIB_TEST(FIB_NODE_INDEX_INVALID == + fib_table_lookup_exact_match(fib_index, pfx), "prefix removed"); + vec_free(r_paths); + + /* + * add-remove test. no change. + */ + FIB_TEST((path_list_db_size == fib_path_list_db_size()), + "path list DB population:%d", fib_path_list_db_size()); + FIB_TEST((path_list_pool_size == fib_path_list_pool_size()), + "path list pool size is %d", fib_path_list_pool_size()); + FIB_TEST((entry_pool_size == fib_entry_pool_size()), + "entry pool size is %d", fib_entry_pool_size()); + return res; +} + +static int fib_test_v4 (void) { /* @@ -822,9 +882,7 @@ fib_test_v4 (void) FIB_SOURCE_API); for (ii = 0; ii < 4; ii++) - { - ip4_main.fib_index_by_sw_if_index[tm->hw[ii]->sw_if_index] = fib_index; - } + fib_table_bind (FIB_PROTOCOL_IP4, tm->hw[ii]->sw_if_index, fib_index); fib_prefix_t pfx_0_0_0_0_s_0 = { .fp_len = 0, @@ -3619,52 +3677,26 @@ fib_test_v4 (void) /* * A route with multiple paths at once */ - fib_route_path_t *r_paths = NULL; - - for (ii = 0; ii < 4; ii++) - { - fib_route_path_t r_path = { - .frp_proto = DPO_PROTO_IP4, - .frp_addr = { - .ip4.as_u32 = clib_host_to_net_u32(0x0a0a0a02 + ii), - }, - .frp_sw_if_index = tm->hw[0]->sw_if_index, - .frp_weight = 1, - .frp_fib_index = ~0, - }; - vec_add1(r_paths, r_path); - } - - fib_table_entry_update(fib_index, - &pfx_4_4_4_4_s_32, - FIB_SOURCE_API, - FIB_ENTRY_FLAG_NONE, - r_paths); - - fei = fib_table_lookup_exact_match(fib_index, &pfx_4_4_4_4_s_32); - FIB_TEST((FIB_NODE_INDEX_INVALID != fei), "4.4.4.4/32 present"); - dpo = fib_entry_contribute_ip_forwarding(fei); - - lb = load_balance_get(dpo->dpoi_index); - FIB_TEST((lb->lb_n_buckets == 4), "4.4.4.4/32 lb over %d paths", lb->lb_n_buckets); + FIB_TEST(0 == + fib_test_multipath_v4(tm, fib_index, &pfx_4_4_4_4_s_32, 4, 4), + "multipath with 4 nexthops"); - fib_table_entry_delete(fib_index, - &pfx_4_4_4_4_s_32, - FIB_SOURCE_API); - FIB_TEST(FIB_NODE_INDEX_INVALID == - fib_table_lookup_exact_match(fib_index, &pfx_4_4_4_4_s_32), - "4.4.4.4/32 removed"); - vec_free(r_paths); + /* + * A route with lots of multiple paths that will overflow max supported + * lb buckets because of normalization + */ + FIB_TEST(0 == + fib_test_multipath_v4(tm, fib_index, &pfx_4_4_4_4_s_32, + LB_MAX_BUCKETS / 2 + 23, LB_MAX_BUCKETS), + "multipath with too many nexthops"); /* - * add-remove test. no change. + * A route with more paths than max supported lb buckets */ - FIB_TEST((1 == fib_path_list_db_size()), "path list DB population:%d", - fib_path_list_db_size()); - FIB_TEST((PNBR+5 == fib_path_list_pool_size()), "path list pool size is %d", - fib_path_list_pool_size()); - FIB_TEST((ENBR+7 == fib_entry_pool_size()), "entry pool size is %d", - fib_entry_pool_size()); + FIB_TEST(0 == + fib_test_multipath_v4 (tm, fib_index, &pfx_4_4_4_4_s_32, + LB_MAX_BUCKETS + 13, LB_MAX_BUCKETS), + "multipath with too many nexthops"); /* * A route deag route @@ -3703,7 +3735,6 @@ fib_test_v4 (void) FIB_TEST(FIB_NODE_INDEX_INVALID == fib_table_lookup_exact_match(fib_index, &pfx_4_4_4_4_s_32), "4.4.4.4/32 removed"); - vec_free(r_paths); /* * A route deag route in a source lookup table @@ -3742,7 +3773,6 @@ fib_test_v4 (void) FIB_TEST(FIB_NODE_INDEX_INVALID == fib_table_lookup_exact_match(fib_index, &pfx_4_4_4_4_s_32), "4.4.4.4/32 removed"); - vec_free(r_paths); /* * add-remove test. no change. @@ -4393,6 +4423,9 @@ fib_test_v4 (void) FIB_SOURCE_INTERFACE)), "NO INterface Source'd prefixes"); + for (ii = 0; ii < 4; ii++) + fib_table_bind (FIB_PROTOCOL_IP4, tm->hw[ii]->sw_if_index, 0); + fib_table_unlock(fib_index, FIB_PROTOCOL_IP4, FIB_SOURCE_API); FIB_TEST((0 == fib_path_list_db_size()), "path list DB population:%d", @@ -4451,9 +4484,7 @@ fib_test_v6 (void) FIB_SOURCE_API); for (ii = 0; ii < 4; ii++) - { - ip6_main.fib_index_by_sw_if_index[tm->hw[ii]->sw_if_index] = fib_index; - } + fib_table_bind (FIB_PROTOCOL_IP6, tm->hw[ii]->sw_if_index, fib_index); fib_prefix_t pfx_0_0 = { .fp_len = 0, @@ -5172,12 +5203,11 @@ fib_test_v6 (void) /* * Add the interface back. routes stay unresolved. */ - error = ethernet_register_interface(vnet_get_main(), - test_interface_device_class.index, - 0 /* instance */, - hw_address, - &tm->hw_if_indicies[0], - /* flag change */ 0); + vnet_eth_interface_registration_t eir = {}; + eir.dev_class_index = test_interface_device_class.index; + eir.dev_instance = 0; + eir.address = hw_address; + tm->hw_if_indicies[0] = vnet_eth_register_interface (vnet_get_main(), &eir); fei = fib_table_lookup_exact_match(fib_index, &pfx_2001_b_s_64); FIB_TEST(load_balance_is_drop(fib_entry_contribute_ip_forwarding(fei)), @@ -5272,6 +5302,10 @@ fib_test_v6 (void) /* * now remove the VRF */ + + for (ii = 0; ii < 4; ii++) + fib_table_bind (FIB_PROTOCOL_IP6, tm->hw[ii]->sw_if_index, 0); + fib_table_unlock(fib_index, FIB_PROTOCOL_IP6, FIB_SOURCE_API); FIB_TEST((0 == fib_path_list_db_size()), "path list DB population:%d", @@ -5310,14 +5344,12 @@ fib_test_ae (void) { const dpo_id_t *dpo, *dpo_drop; const u32 fib_index = 0; - fib_node_index_t fei; + fib_node_index_t dfrt, fei; test_main_t *tm; - ip4_main_t *im; int res; res = 0; tm = &test_main; - im = &ip4_main; FIB_TEST((0 == adj_nbr_db_size()), "ADJ DB size is %d", adj_nbr_db_size()); @@ -5337,7 +5369,7 @@ fib_test_ae (void) }, }; - im->fib_index_by_sw_if_index[tm->hw[0]->sw_if_index] = fib_index; + fib_table_bind (FIB_PROTOCOL_IP4, tm->hw[0]->sw_if_index, fib_index); dpo_drop = drop_dpo_get(DPO_PROTO_IP4); @@ -5410,6 +5442,44 @@ fib_test_ae (void) import_fib_index1 = fib_table_find_or_create_and_lock(FIB_PROTOCOL_IP4, 11, FIB_SOURCE_CLI); + /* + * Add default route in the import FIB + */ + fib_prefix_t pfx_0_0_0_0_s_0 = { + .fp_len = 0, + .fp_proto = FIB_PROTOCOL_IP4, + .fp_addr = { + .ip4 = { + {0} + }, + }, + }; + + dfrt = fib_table_lookup(import_fib_index1, &pfx_0_0_0_0_s_0); + FIB_TEST((FIB_NODE_INDEX_INVALID != dfrt), "default route present"); + + fib_table_entry_path_add(import_fib_index1, + &pfx_0_0_0_0_s_0, + FIB_SOURCE_API, + FIB_ENTRY_FLAG_NONE, + DPO_PROTO_IP4, + NULL, + tm->hw[0]->sw_if_index, + ~0, // invalid fib index + 1, + NULL, + FIB_ROUTE_PATH_FLAG_NONE); + fei = fib_table_lookup(fib_index, &pfx_0_0_0_0_s_0); + FIB_TEST((FIB_NODE_INDEX_INVALID != fei), "default route present"); + FIB_TEST((fei != dfrt), "default route added"); + + /* + * delete default route and check for the presence in the import table + */ + fib_table_entry_delete(import_fib_index1, &pfx_0_0_0_0_s_0, FIB_SOURCE_API); + fei = fib_table_lookup(import_fib_index1, &pfx_0_0_0_0_s_0); + FIB_TEST((FIB_NODE_INDEX_INVALID != fei), "default route present"); + FIB_TEST((fei == dfrt), "default route removed"); /* * Add an attached route in the import FIB @@ -5866,11 +5936,9 @@ static int fib_test_pref (void) { test_main_t *tm; - ip4_main_t *im; int res, i; tm = &test_main; - im = &ip4_main; res = 0; const fib_prefix_t pfx_1_1_1_1_s_32 = { @@ -5884,7 +5952,7 @@ fib_test_pref (void) }; for (i = 0; i <= 2; i++) - im->fib_index_by_sw_if_index[tm->hw[i]->sw_if_index] = 0; + fib_table_bind (FIB_PROTOCOL_IP4, tm->hw[i]->sw_if_index, 0); /* * 2 high, 2 medium and 2 low preference non-recursive paths @@ -6333,12 +6401,10 @@ fib_test_label (void) const u32 fib_index = 0; int lb_count, ii, res; test_main_t *tm; - ip4_main_t *im; res = 0; lb_count = pool_elts(load_balance_pool); tm = &test_main; - im = &ip4_main; /* * add interface routes. We'll assume this works. It's more rigorously @@ -6358,7 +6424,7 @@ fib_test_label (void) FIB_TEST((0 == adj_nbr_db_size()), "ADJ DB size is %d", adj_nbr_db_size()); - im->fib_index_by_sw_if_index[tm->hw[0]->sw_if_index] = fib_index; + fib_table_bind (FIB_PROTOCOL_IP4, tm->hw[0]->sw_if_index, fib_index); fib_table_entry_update_one_path(fib_index, &local0_pfx, FIB_SOURCE_INTERFACE, @@ -6403,7 +6469,7 @@ fib_test_label (void) }, }; - im->fib_index_by_sw_if_index[tm->hw[1]->sw_if_index] = fib_index; + fib_table_bind (FIB_PROTOCOL_IP4, tm->hw[1]->sw_if_index, fib_index); fib_table_entry_update_one_path(fib_index, &local1_pfx, FIB_SOURCE_INTERFACE, @@ -7548,6 +7614,7 @@ fib_test_child_get_node (fib_node_index_t index) } static int fib_test_walk_spawns_walks; +static fib_node_type_t test_node_type; static fib_node_back_walk_rc_t fib_test_child_back_walk_notify (fib_node_t *node, @@ -7558,9 +7625,9 @@ fib_test_child_back_walk_notify (fib_node_t *node, vec_add1(tc->ctxs, *ctx); if (1 == fib_test_walk_spawns_walks) - fib_walk_sync(FIB_NODE_TYPE_TEST, tc->index, ctx); + fib_walk_sync(test_node_type, tc->index, ctx); if (2 == fib_test_walk_spawns_walks) - fib_walk_async(FIB_NODE_TYPE_TEST, tc->index, + fib_walk_async(test_node_type, tc->index, FIB_WALK_PRIORITY_HIGH, ctx); return (FIB_NODE_BACK_WALK_CONTINUE); @@ -7601,23 +7668,23 @@ fib_test_walk (void) res = 0; vm = vlib_get_main(); - fib_node_register_type(FIB_NODE_TYPE_TEST, &fib_test_child_vft); + test_node_type = fib_node_register_new_type("fib-test", &fib_test_child_vft); /* * init a fake node on which we will add children */ fib_node_init(&fib_test_nodes[PARENT_INDEX].node, - FIB_NODE_TYPE_TEST); + test_node_type); FOR_EACH_TEST_CHILD(tc) { - fib_node_init(&tc->node, FIB_NODE_TYPE_TEST); + fib_node_init(&tc->node, test_node_type); fib_node_lock(&tc->node); tc->ctxs = NULL; tc->index = ii; - tc->sibling = fib_node_child_add(FIB_NODE_TYPE_TEST, + tc->sibling = fib_node_child_add(test_node_type, PARENT_INDEX, - FIB_NODE_TYPE_TEST, ii); + test_node_type, ii); } /* @@ -7625,7 +7692,7 @@ fib_test_walk (void) */ high_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_RESOLVE; - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &high_ctx); FIB_TEST(N_TEST_CHILDREN+1 == fib_node_list_get_size(PARENT()->fn_children), "Parent has %d children pre-walk", @@ -7671,9 +7738,9 @@ fib_test_walk (void) high_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_RESOLVE; low_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_ADJ_UPDATE; - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &high_ctx); - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_LOW, &low_ctx); fib_walk_process_queues(vm, 1); @@ -7699,9 +7766,9 @@ fib_test_walk (void) high_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_RESOLVE; low_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_RESOLVE; - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &high_ctx); - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &low_ctx); fib_walk_process_queues(vm, 1); @@ -7727,9 +7794,9 @@ fib_test_walk (void) high_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_RESOLVE; low_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_ADJ_UPDATE; - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &high_ctx); - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &low_ctx); fib_walk_process_queues(vm, 1); @@ -7755,7 +7822,7 @@ fib_test_walk (void) */ high_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_RESOLVE; - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &high_ctx); fib_walk_process_queues(vm, 0); @@ -7809,7 +7876,7 @@ fib_test_walk (void) /* * schedule another walk that will catch-up and merge. */ - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &high_ctx); fib_walk_process_queues(vm, 1); @@ -7842,13 +7909,13 @@ fib_test_walk (void) */ high_ctx.fnbw_reason = FIB_NODE_BW_REASON_FLAG_RESOLVE; - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &high_ctx); fib_walk_process_queues(vm, 0); fib_walk_process_queues(vm, 0); - fib_walk_sync(FIB_NODE_TYPE_TEST, PARENT_INDEX, &high_ctx); + fib_walk_sync(test_node_type, PARENT_INDEX, &high_ctx); FOR_EACH_TEST_CHILD(tc) { @@ -7877,9 +7944,9 @@ fib_test_walk (void) * make the parent a child of one of its children, thus inducing a routing loop. */ fib_test_nodes[PARENT_INDEX].sibling = - fib_node_child_add(FIB_NODE_TYPE_TEST, + fib_node_child_add(test_node_type, 1, // the first child - FIB_NODE_TYPE_TEST, + test_node_type, PARENT_INDEX); /* @@ -7888,7 +7955,7 @@ fib_test_walk (void) */ fib_test_walk_spawns_walks = 1; - fib_walk_sync(FIB_NODE_TYPE_TEST, PARENT_INDEX, &high_ctx); + fib_walk_sync(test_node_type, PARENT_INDEX, &high_ctx); FOR_EACH_TEST_CHILD(tc) { @@ -7929,7 +7996,7 @@ fib_test_walk (void) * execute an async walk of the graph loop, with each child spawns sync walks */ high_ctx.fnbw_depth = 0; - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &high_ctx); fib_walk_process_queues(vm, 1); @@ -7951,7 +8018,7 @@ fib_test_walk (void) */ fib_test_walk_spawns_walks = 2; high_ctx.fnbw_depth = 0; - fib_walk_async(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_walk_async(test_node_type, PARENT_INDEX, FIB_WALK_PRIORITY_HIGH, &high_ctx); fib_walk_process_queues(vm, 1); @@ -7969,7 +8036,7 @@ fib_test_walk (void) } - fib_node_child_remove(FIB_NODE_TYPE_TEST, + fib_node_child_remove(test_node_type, 1, // the first child fib_test_nodes[PARENT_INDEX].sibling); @@ -7978,7 +8045,7 @@ fib_test_walk (void) */ FOR_EACH_TEST_CHILD(tc) { - fib_node_child_remove(FIB_NODE_TYPE_TEST, PARENT_INDEX, + fib_node_child_remove(test_node_type, PARENT_INDEX, tc->sibling); fib_node_deinit(&tc->node); fib_node_unlock(&tc->node); @@ -8376,12 +8443,14 @@ fib_test_bfd (void) bfd_10_10_10_1.hop_type = BFD_HOP_TYPE_SINGLE; bfd_10_10_10_1.udp.key.sw_if_index = tm->hw[0]->sw_if_index; - adj_bfd_notify(BFD_LISTEN_EVENT_CREATE, &bfd_10_10_10_1); - ai_10_10_10_1 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4, VNET_LINK_IP4, &nh_10_10_10_1, tm->hw[0]->sw_if_index); + bfd_10_10_10_1.udp.adj_index = ai_10_10_10_1; + + adj_bfd_notify(BFD_LISTEN_EVENT_CREATE, &bfd_10_10_10_1); + /* * whilst the BFD session is not signalled, the adj is up */ @@ -8526,7 +8595,7 @@ lfib_test (void) mpls_table_create(MPLS_FIB_DEFAULT_TABLE_ID, FIB_SOURCE_API, NULL); mpls_sw_interface_enable_disable(&mpls_main, tm->hw[0]->sw_if_index, - 1, 1); + 1); ip46_address_t nh_10_10_10_1 = { .ip4.as_u32 = clib_host_to_net_u32(0x0a0a0a01), @@ -9097,7 +9166,7 @@ lfib_test (void) */ mpls_sw_interface_enable_disable(&mpls_main, tm->hw[0]->sw_if_index, - 0, 1); + 0); mpls_table_delete(MPLS_FIB_DEFAULT_TABLE_ID, FIB_SOURCE_API); FIB_TEST(0 == pool_elts(mpls_disp_dpo_pool), @@ -9119,19 +9188,15 @@ fib_test_inherit (void) fib_node_index_t fei; int n_feis, res, i; test_main_t *tm; - ip4_main_t *im4; - ip6_main_t *im6; tm = &test_main; - im4 = &ip4_main; - im6 = &ip6_main; res = 0; for (i = 0; i <= 2; i++) - { - im4->fib_index_by_sw_if_index[tm->hw[i]->sw_if_index] = 0; - im6->fib_index_by_sw_if_index[tm->hw[i]->sw_if_index] = 0; - } + { + fib_table_bind (FIB_PROTOCOL_IP4, tm->hw[i]->sw_if_index, 0); + fib_table_bind (FIB_PROTOCOL_IP6, tm->hw[i]->sw_if_index, 0); + } n_feis = fib_entry_pool_size(); const ip46_address_t nh_10_10_10_1 = { @@ -10598,7 +10663,7 @@ fib_test_sticky (void) fib_route_path_t *r_paths2 = NULL; r_paths2 = vec_dup(r_paths); - _vec_len(r_paths2) = 3; + vec_set_len (r_paths2, 3); pl_index = fib_path_list_create(FIB_PATH_LIST_FLAG_SHARED, r_paths2); fib_path_list_lock(pl_index); @@ -10669,7 +10734,7 @@ fib_test_sticky (void) fib_route_path_t *r_paths3 = NULL; r_paths3 = vec_dup(r_paths); - _vec_len(r_paths3) = 3; + vec_set_len (r_paths3, 3); r_paths3[0].frp_weight = 3; |