static int
bier_test_validate_entry (index_t bei,
- u16 n_buckets,
+ int n_buckets,
...)
{
dpo_id_t dpo = DPO_INVALID;
bier_entry_contribute_forwarding(bei, &dpo);
- BIER_TEST_LB((DPO_LOAD_BALANCE == dpo.dpoi_type),
- "Entry links to %U",
- format_dpo_type, dpo.dpoi_type);
+ res = BIER_TEST_I((DPO_LOAD_BALANCE == dpo.dpoi_type),
+ "Entry links to %U",
+ format_dpo_type, dpo.dpoi_type);
- lb = load_balance_get(dpo.dpoi_index);
- res = fib_test_validate_lb_v(lb, n_buckets, &ap);
+ if (res)
+ {
+ lb = load_balance_get(dpo.dpoi_index);
+ res = fib_test_validate_lb_v(lb, n_buckets, &ap);
+ }
dpo_reset(&dpo);
-
va_end(ap);
return (res);
.as_u32 = clib_host_to_net_u32(0x01010101),
},
};
- fib_route_path_t *paths_1_1_1_1 = NULL;
+ fib_route_path_t *paths_1_1_1_1 = NULL, *input_paths_1_1_1_1;
fib_route_path_t path_1_1_1_1 = {
.frp_addr = nh_1_1_1_1,
.frp_bier_fib_index = bti,
};
index_t bei_1;
- bier_table_route_add(&bt_0_0_0_256, 1, paths_1_1_1_1);
+ input_paths_1_1_1_1 = vec_dup(paths_1_1_1_1);
+ bier_table_route_add(&bt_0_0_0_256, 1, input_paths_1_1_1_1);
bei_1 = bier_table_lookup(bier_table_get(bti), 1);
BIER_TEST((INDEX_INVALID != bei_1), "BP:1 present");
*/
index_t bei_2;
- bier_table_route_add(&bt_0_0_0_256, 2, paths_1_1_1_1);
+ input_paths_1_1_1_1 = vec_dup(paths_1_1_1_1);
+ bier_table_route_add(&bt_0_0_0_256, 2, input_paths_1_1_1_1);
bei_2 = bier_table_lookup(bier_table_get(bti), 2);
bier_entry_contribute_forwarding(bei_2, &dpo_bei);
.fp_len = 32,
.fp_proto = FIB_PROTOCOL_IP4,
};
- fib_route_path_t *paths_1_1_1_2 = NULL, path_1_1_1_2 = {
+ fib_route_path_t *paths_1_1_1_2 = NULL, *input_paths_1_1_1_2, path_1_1_1_2 = {
.frp_addr = nh_1_1_1_2,
.frp_bier_fib_index = bti,
.frp_sw_if_index = ~0,
};
vec_add1(path_1_1_1_2.frp_label_stack, 501);
vec_add1(paths_1_1_1_2, path_1_1_1_2);
+ input_paths_1_1_1_2 = vec_dup(paths_1_1_1_2);
index_t bei_3;
mpls_label_t *out_lbl_101 = NULL;
1,
out_lbl_101,
FIB_ROUTE_PATH_FLAG_NONE);
- bier_table_route_add(&bt_0_0_0_256, 3, paths_1_1_1_2);
+ bier_table_route_add(&bt_0_0_0_256, 3, input_paths_1_1_1_2);
bei_3 = bier_table_lookup(bier_table_get(bti), 3);
BIER_TEST((INDEX_INVALID != bei_3), "BP:3 present");
* Load-balance BP:3 over both next-hops
*/
paths_1_1_1_1[0] = path_1_1_1_1;
- bier_table_route_add(&bt_0_0_0_256, 3, paths_1_1_1_1);
+ input_paths_1_1_1_1 = vec_dup(paths_1_1_1_1);
+ bier_table_route_add(&bt_0_0_0_256, 3, input_paths_1_1_1_1);
BIER_TEST(bier_test_validate_entry(bei_3, 2,
&dpo_o_bfm_1_1_1_1,
/*
* remove the original 1.1.1.2 fmask from BP:3
*/
- bier_table_route_remove(&bt_0_0_0_256, 3, paths_1_1_1_2);
+ input_paths_1_1_1_2 = vec_dup(paths_1_1_1_2);
+ bier_table_route_remove(&bt_0_0_0_256, 3, input_paths_1_1_1_2);
bier_entry_contribute_forwarding(bei_3, &dpo_bei);
BIER_TEST((dpo_bei.dpoi_index == bfmi_1_1_1_1),
"BP:3 stacks on fmask 1.1.1.1");
/*
* remove the routes added
*/
- bier_table_route_remove(&bt_0_0_0_256, 2, paths_1_1_1_1);
- bier_table_route_remove(&bt_0_0_0_256, 3, paths_1_1_1_2);
- bier_table_route_remove(&bt_0_0_0_256, 3, paths_1_1_1_1);
- bier_table_route_remove(&bt_0_0_0_256, 1, paths_1_1_1_1);
+ input_paths_1_1_1_1 = vec_dup(paths_1_1_1_1);
+ bier_table_route_remove(&bt_0_0_0_256, 2, input_paths_1_1_1_1);
+ input_paths_1_1_1_2 = vec_dup(paths_1_1_1_2);
+ bier_table_route_remove(&bt_0_0_0_256, 3, input_paths_1_1_1_2);
+ input_paths_1_1_1_1 = vec_dup(paths_1_1_1_1);
+ bier_table_route_remove(&bt_0_0_0_256, 3, input_paths_1_1_1_1);
+ input_paths_1_1_1_1 = vec_dup(paths_1_1_1_1);
+ bier_table_route_remove(&bt_0_0_0_256, 1, input_paths_1_1_1_1);
/*
* delete the table
vec_free(paths_1_1_1_1);
vec_free(paths_1_1_1_2);
+ vec_free(input_paths_1_1_1_1);
+ vec_free(input_paths_1_1_1_2);
return (0);
}