diff options
Diffstat (limited to 'src/plugins/unittest/mfib_test.c')
-rw-r--r-- | src/plugins/unittest/mfib_test.c | 216 |
1 files changed, 83 insertions, 133 deletions
diff --git a/src/plugins/unittest/mfib_test.c b/src/plugins/unittest/mfib_test.c index c456d59d7db..5cf821fb5f9 100644 --- a/src/plugins/unittest/mfib_test.c +++ b/src/plugins/unittest/mfib_test.c @@ -123,40 +123,31 @@ mfib_test_mk_intf (u32 ninterfaces) for (i = 0; i < ninterfaces; i++) { - hw_address[5] = i; - - error = ethernet_register_interface(vnet_get_main(), - test_interface_device_class.index, - i /* instance */, - hw_address, - &tm->hw_if_indicies[i], - /* flag change */ 0); - - MFIB_TEST((NULL == error), "ADD interface %d", i); - - 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]); - vec_validate (ip4_main.fib_index_by_sw_if_index, - tm->hw[i]->sw_if_index); - vec_validate (ip6_main.fib_index_by_sw_if_index, - tm->hw[i]->sw_if_index); - 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; - - vec_validate (ip4_main.mfib_index_by_sw_if_index, - tm->hw[i]->sw_if_index); - vec_validate (ip6_main.mfib_index_by_sw_if_index, - tm->hw[i]->sw_if_index); - ip4_main.mfib_index_by_sw_if_index[tm->hw[i]->sw_if_index] = 0; - ip6_main.mfib_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, - VNET_SW_INTERFACE_FLAG_ADMIN_UP); - MFIB_TEST((NULL == error), "UP interface %d", i); + vnet_eth_interface_registration_t eir = {}; + vnet_main_t *vnm = vnet_get_main (); + + hw_address[5] = 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; + + ip4_main.mfib_index_by_sw_if_index[tm->hw[i]->sw_if_index] = 0; + ip6_main.mfib_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, + VNET_SW_INTERFACE_FLAG_ADMIN_UP); + MFIB_TEST ((NULL == error), "UP interface %d", i); } /* * re-eval after the inevitable realloc @@ -413,10 +404,8 @@ mfib_test_i (fib_protocol_t PROTO, .frp_mitf_flags = MFIB_ITF_FLAG_ACCEPT, }; - mfib_table_entry_path_update(fib_index, - pfx_no_forward, - MFIB_SOURCE_API, - &path_via_if0); + mfib_table_entry_path_update (fib_index, pfx_no_forward, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if0); mfei_no_f = mfib_table_lookup_exact_match(fib_index, pfx_no_forward); MFIB_TEST(!mfib_test_entry(mfei_no_f, @@ -464,18 +453,12 @@ mfib_test_i (fib_protocol_t PROTO, /* * An (S,G) with 1 accepting and 3 forwarding paths */ - mfib_table_entry_path_update(fib_index, - pfx_s_g, - MFIB_SOURCE_API, - &path_via_if0); - mfib_table_entry_path_update(fib_index, - pfx_s_g, - MFIB_SOURCE_API, - &path_via_if1); - mfib_table_entry_paths_update(fib_index, - pfx_s_g, - MFIB_SOURCE_API, - two_paths); + mfib_table_entry_path_update (fib_index, pfx_s_g, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if0); + mfib_table_entry_path_update (fib_index, pfx_s_g, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if1); + mfib_table_entry_paths_update (fib_index, pfx_s_g, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, two_paths); mfei_s_g = mfib_table_lookup_exact_match(fib_index, pfx_s_g); @@ -504,14 +487,11 @@ mfib_test_i (fib_protocol_t PROTO, * A (*,G), which the same G as the (S,G). * different paths. test our LPM. */ - mfei_g_1 = mfib_table_entry_path_update(fib_index, - pfx_star_g_1, - MFIB_SOURCE_API, - &path_via_if0); - mfib_table_entry_path_update(fib_index, - pfx_star_g_1, - MFIB_SOURCE_API, - &path_via_if1); + mfei_g_1 = + mfib_table_entry_path_update (fib_index, pfx_star_g_1, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if0); + mfib_table_entry_path_update (fib_index, pfx_star_g_1, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if1); /* * test we find the *,G and S,G via LPM and exact matches @@ -574,14 +554,12 @@ mfib_test_i (fib_protocol_t PROTO, * different paths. test our LPM. */ path_via_if2.frp_mitf_flags = MFIB_ITF_FLAG_ACCEPT; - mfei_g_m = mfib_table_entry_path_update(fib_index, - pfx_star_g_slash_m, - MFIB_SOURCE_API, - &path_via_if2); - mfib_table_entry_path_update(fib_index, - pfx_star_g_slash_m, - MFIB_SOURCE_API, - &path_via_if3); + mfei_g_m = mfib_table_entry_path_update ( + fib_index, pfx_star_g_slash_m, MFIB_SOURCE_API, MFIB_ENTRY_FLAG_NONE, + &path_via_if2); + mfib_table_entry_path_update (fib_index, pfx_star_g_slash_m, + MFIB_SOURCE_API, MFIB_ENTRY_FLAG_NONE, + &path_via_if3); /* * test we find the (*,G/m), (*,G) and (S,G) via LPM and exact matches @@ -655,10 +633,8 @@ mfib_test_i (fib_protocol_t PROTO, .frp_mitf_flags = MFIB_ITF_FLAG_FORWARD, }; - mfei = mfib_table_entry_path_update(fib_index, - pfx_s_g, - MFIB_SOURCE_API, - &path_for_us); + mfei = mfib_table_entry_path_update (fib_index, pfx_s_g, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_for_us); MFIB_TEST(!mfib_test_entry(mfei, MFIB_ENTRY_FLAG_NONE, @@ -692,10 +668,8 @@ mfib_test_i (fib_protocol_t PROTO, * - expect it to be removed from the replication set. */ path_via_if3.frp_mitf_flags = MFIB_ITF_FLAG_ACCEPT; - mfib_table_entry_path_update(fib_index, - pfx_s_g, - MFIB_SOURCE_API, - &path_via_if3); + mfib_table_entry_path_update (fib_index, pfx_s_g, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if3); MFIB_TEST(!mfib_test_entry(mfei, MFIB_ENTRY_FLAG_NONE, @@ -719,10 +693,8 @@ mfib_test_i (fib_protocol_t PROTO, path_via_if3.frp_mitf_flags = (MFIB_ITF_FLAG_FORWARD | MFIB_ITF_FLAG_ACCEPT | MFIB_ITF_FLAG_NEGATE_SIGNAL); - mfib_table_entry_path_update(fib_index, - pfx_s_g, - MFIB_SOURCE_API, - &path_via_if3); + mfib_table_entry_path_update (fib_index, pfx_s_g, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if3); mfei = mfib_table_lookup_exact_match(fib_index, pfx_s_g); @@ -824,7 +796,7 @@ mfib_test_i (fib_protocol_t PROTO, /* MFIB_TEST_NS(!mfib_test_entry_no_itf(mfei, tm->hw[3]->sw_if_index)); */ /* - * remove the last path and the accpeting only interface, + * remove the last path and the accepting only interface, * the entry still has flags so it remains */ vec_reset_length(two_paths); @@ -863,10 +835,9 @@ mfib_test_i (fib_protocol_t PROTO, */ path_via_if0.frp_mitf_flags = (MFIB_ITF_FLAG_ACCEPT | MFIB_ITF_FLAG_NEGATE_SIGNAL); - mfei_g_2 = mfib_table_entry_path_update(fib_index, - pfx_star_g_2, - MFIB_SOURCE_API, - &path_via_if0); + mfei_g_2 = + mfib_table_entry_path_update (fib_index, pfx_star_g_2, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if0); MFIB_TEST(!mfib_test_entry(mfei_g_2, MFIB_ENTRY_FLAG_NONE, 0), @@ -891,10 +862,9 @@ mfib_test_i (fib_protocol_t PROTO, */ path_via_if0.frp_mitf_flags = (MFIB_ITF_FLAG_ACCEPT | MFIB_ITF_FLAG_NEGATE_SIGNAL); - mfei_g_3 = mfib_table_entry_path_update(fib_index, - pfx_star_g_3, - MFIB_SOURCE_API, - &path_via_if0); + mfei_g_3 = + mfib_table_entry_path_update (fib_index, pfx_star_g_3, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if0); MFIB_TEST(!mfib_test_entry(mfei_g_3, MFIB_ENTRY_FLAG_NONE, 0), @@ -1073,14 +1043,12 @@ mfib_test_i (fib_protocol_t PROTO, .frp_mitf_flags = MFIB_ITF_FLAG_FORWARD, }; - mfei_g_1 = mfib_table_entry_path_update(fib_index, - pfx_star_g_1, - MFIB_SOURCE_API, - &path_via_nbr1); - mfei_g_1 = mfib_table_entry_path_update(fib_index, - pfx_star_g_1, - MFIB_SOURCE_API, - &path_via_nbr2); + mfei_g_1 = + mfib_table_entry_path_update (fib_index, pfx_star_g_1, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_nbr1); + mfei_g_1 = + mfib_table_entry_path_update (fib_index, pfx_star_g_1, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_nbr2); MFIB_TEST(!mfib_test_entry(mfei_g_1, MFIB_ENTRY_FLAG_NONE, 2, @@ -1201,9 +1169,7 @@ mfib_test_i (fib_protocol_t PROTO, * MPLS enable an interface so we get the MPLS table created */ 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, 0); + mpls_sw_interface_enable_disable (&mpls_main, tm->hw[0]->sw_if_index, 1); lfei = fib_table_entry_update_one_path(0, // default MPLS Table &pfx_3500, @@ -1241,10 +1207,8 @@ mfib_test_i (fib_protocol_t PROTO, FIB_FORW_CHAIN_TYPE_MPLS_EOS, &mldp_dpo); - mfei = mfib_table_entry_path_update(fib_index, - pfx_s_g, - MFIB_SOURCE_API, - &path_via_mldp); + mfei = mfib_table_entry_path_update (fib_index, pfx_s_g, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_mldp); MFIB_TEST(!mfib_test_entry(mfei, MFIB_ENTRY_FLAG_NONE, @@ -1256,10 +1220,8 @@ mfib_test_i (fib_protocol_t PROTO, /* * add a for-us path. this tests two types of non-attached paths on one entry */ - mfei = mfib_table_entry_path_update(fib_index, - pfx_s_g, - MFIB_SOURCE_API, - &path_for_us); + mfei = mfib_table_entry_path_update (fib_index, pfx_s_g, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_for_us); MFIB_TEST(!mfib_test_entry(mfei, MFIB_ENTRY_FLAG_NONE, 2, @@ -1299,9 +1261,7 @@ mfib_test_i (fib_protocol_t PROTO, /* * MPLS disable the interface */ - mpls_sw_interface_enable_disable(&mpls_main, - tm->hw[0]->sw_if_index, - 0, 0); + mpls_sw_interface_enable_disable (&mpls_main, tm->hw[0]->sw_if_index, 0); mpls_table_delete(MPLS_FIB_DEFAULT_TABLE_ID, FIB_SOURCE_API); /* @@ -1585,10 +1545,8 @@ mfib_test_rr_i (fib_protocol_t FPROTO, /* * Insert the less specific /28 */ - mfib_table_entry_path_update(fib_index, - pfx_cover, - MFIB_SOURCE_API, - &path_via_if1); + mfib_table_entry_path_update (fib_index, pfx_cover, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if1); mfei_cover = mfib_table_lookup_exact_match(fib_index, pfx_cover); @@ -1612,10 +1570,8 @@ mfib_test_rr_i (fib_protocol_t FPROTO, /* * add another path to the cover */ - mfib_table_entry_path_update(fib_index, - pfx_cover, - MFIB_SOURCE_API, - &path_via_if2); + mfib_table_entry_path_update (fib_index, pfx_cover, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if2); /* * expect the /32 and /28 to be via both boths @@ -1669,10 +1625,8 @@ mfib_test_rr_i (fib_protocol_t FPROTO, /* * add an accepting path to the cover */ - mfib_table_entry_path_update(fib_index, - pfx_cover, - MFIB_SOURCE_API, - &path_via_if0); + mfib_table_entry_path_update (fib_index, pfx_cover, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if0); /* * expect the /32 and /28 to be via both boths @@ -1707,10 +1661,8 @@ mfib_test_rr_i (fib_protocol_t FPROTO, /* * add a for-us path to the cover */ - mfib_table_entry_path_update(fib_index, - pfx_cover, - MFIB_SOURCE_API, - &path_for_us); + mfib_table_entry_path_update (fib_index, pfx_cover, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_for_us); /* * expect the /32 and /28 to be via all three paths @@ -1778,10 +1730,9 @@ mfib_test_rr_i (fib_protocol_t FPROTO, /* * source the /32 with its own path */ - mfei_host1 = mfib_table_entry_path_update(fib_index, - pfx_host1, - MFIB_SOURCE_API, - &path_via_if2); + mfei_host1 = + mfib_table_entry_path_update (fib_index, pfx_host1, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if2); MFIB_TEST(!mfib_test_entry(mfei_host1, MFIB_ENTRY_FLAG_NONE, 1, @@ -1811,10 +1762,9 @@ mfib_test_rr_i (fib_protocol_t FPROTO, /* * add the RR back then remove the path and RR */ - mfei_host1 = mfib_table_entry_path_update(fib_index, - pfx_host1, - MFIB_SOURCE_API, - &path_via_if2); + mfei_host1 = + mfib_table_entry_path_update (fib_index, pfx_host1, MFIB_SOURCE_API, + MFIB_ENTRY_FLAG_NONE, &path_via_if2); MFIB_TEST(!mfib_test_entry(mfei_host1, MFIB_ENTRY_FLAG_NONE, 1, |