{
bits->bfmb_refs = clib_mem_alloc(sizeof(bits->bfmb_refs[0]) *
bier_hdr_len_id_to_num_bits(hlid));
- memset(bits->bfmb_refs,
+ clib_memset(bits->bfmb_refs,
0,
(sizeof(bits->bfmb_refs[0]) *
bier_hdr_len_id_to_num_bits(hlid)));
sizeof(bits->bfmb_input_reset_string.bbs_buckets[0]) *
bier_hdr_len_id_to_num_buckets(hlid),
CLIB_CACHE_LINE_BYTES);
- memset(bits->bfmb_input_reset_string.bbs_buckets,
+ clib_memset(bits->bfmb_input_reset_string.bbs_buckets,
0,
sizeof(bits->bfmb_input_reset_string.bbs_buckets[0]) *
bier_hdr_len_id_to_num_buckets(hlid));
fib_route_path_t *rpaths;
mpls_label_t olabel;
- memset(bfm, 0, sizeof(*bfm));
+ clib_memset(bfm, 0, sizeof(*bfm));
bfm->bfm_id = clib_mem_alloc(sizeof(*bfm->bfm_id));
btid = bier_table_get_id(bfm->bfm_id->bfmi_bti);
bier_fmask_bits_init(&bfm->bfm_bits, btid->bti_hdr_len);
- if (ip46_address_is_zero(&(bfm->bfm_id->bfmi_nh)))
+ if (rpath->frp_flags & FIB_ROUTE_PATH_UDP_ENCAP)
+ {
+ bfm->bfm_id->bfmi_nh_type = BIER_NH_UDP;
+ }
+ else if (ip46_address_is_zero(&(bfm->bfm_id->bfmi_nh)))
{
bfm->bfm_flags |= BIER_FMASK_FLAG_DISP;
}
if (0 == bfm->bfm_bits.bfmb_refs[BIER_BP_TO_INDEX(bp)])
{
/*
- * 0 -> 1 transistion - set the bit in the string
+ * 0 -> 1 transition - set the bit in the string
*/
bier_bit_string_set_bit(&bfm->bfm_bits.bfmb_input_reset_string, bp);
}
if (0 == bfm->bfm_bits.bfmb_refs[BIER_BP_TO_INDEX(bp)])
{
/*
- * 1 -> 0 transistion - clear the bit in the string
+ * 1 -> 0 transition - clear the bit in the string
*/
bier_bit_string_clear_bit(&bfm->bfm_bits.bfmb_input_reset_string, bp);
}
void
bier_fmask_encode (index_t bfmi,
bier_table_id_t *btid,
- fib_route_path_encode_t *rpath)
+ fib_route_path_t *rpath)
{
bier_fmask_t *bfm;
bfm = bier_fmask_get(bfmi);
*btid = *bier_table_get_id(bfm->bfm_id->bfmi_bti);
- memset(rpath, 0, sizeof(*rpath));
+ clib_memset(rpath, 0, sizeof(*rpath));
- rpath->rpath.frp_sw_if_index = ~0;
+ rpath->frp_sw_if_index = ~0;
switch (bfm->bfm_id->bfmi_nh_type)
{
case BIER_NH_UDP:
- rpath->rpath.frp_flags = FIB_ROUTE_PATH_UDP_ENCAP;
- rpath->rpath.frp_udp_encap_id = bfm->bfm_id->bfmi_id;
+ rpath->frp_flags = FIB_ROUTE_PATH_UDP_ENCAP;
+ rpath->frp_udp_encap_id = bfm->bfm_id->bfmi_id;
break;
case BIER_NH_IP:
- memcpy(&rpath->rpath.frp_addr, &bfm->bfm_id->bfmi_nh,
- sizeof(rpath->rpath.frp_addr));
+ memcpy(&rpath->frp_addr, &bfm->bfm_id->bfmi_nh,
+ sizeof(rpath->frp_addr));
break;
}
}