mp = vl_msg_api_alloc(sizeof(*mp));
if (!mp)
return;
- memset(mp, 0, sizeof(*mp));
+ clib_memset(mp, 0, sizeof(*mp));
mp->_vl_msg_id = ntohs(VL_API_BIER_TABLE_DETAILS);
mp->context = context;
}
}
- if (mp->br_is_add)
+ if (mp->br_is_replace)
{
- bier_table_route_add(&bti, bp, brpaths);
+ if (0 == vec_len(brpaths))
+ {
+ bier_table_route_delete(&bti, bp);
+ }
+ else
+ {
+ bier_table_route_path_update(&bti, bp, brpaths);
+ }
+ }
+ else if (mp->br_is_add)
+ {
+ bier_table_route_path_add(&bti, bp, brpaths);
}
else
{
- bier_table_route_remove(&bti, bp, brpaths);
+ bier_table_route_path_remove(&bti, bp, brpaths);
}
vec_free(brpaths);
if (!mp)
return;
- memset(mp, 0, m_size);
+ clib_memset(mp, 0, m_size);
mp->_vl_msg_id = ntohs(VL_API_BIER_ROUTE_DETAILS);
mp->context = ctx->context;
mp->br_bp = htons(be->be_bp);
mp->br_n_paths = htonl(n_paths);
- fib_path_list_walk(be->be_path_list, fib_path_encode, &api_rpaths);
+ fib_path_list_walk_w_ext(be->be_path_list,
+ NULL,
+ fib_path_encode,
+ &api_rpaths);
fp = mp->br_paths;
vec_foreach (api_rpath, api_rpaths)
mp = vl_msg_api_alloc(sizeof(*mp) + n_bytes);
if (!mp)
return;
- memset(mp, 0, sizeof(*mp)+n_bytes);
+ clib_memset(mp, 0, sizeof(*mp)+n_bytes);
mp->_vl_msg_id = ntohs(VL_API_BIER_IMP_DETAILS);
mp->context = context;
mp = vl_msg_api_alloc(sizeof(*mp));
if (!mp)
return;
- memset(mp, 0, sizeof(*mp));
+ clib_memset(mp, 0, sizeof(*mp));
mp->_vl_msg_id = ntohs(VL_API_BIER_DISP_TABLE_DETAILS);
mp->context = context;
if (0 == mp->bde_paths[ii].afi)
{
- clib_memcpy (&brp->frp_addr.ip4,
+ clib_memcpy_fast (&brp->frp_addr.ip4,
mp->bde_paths[ii].next_hop,
sizeof (brp->frp_addr.ip4));
}
else
{
- clib_memcpy (&brp->frp_addr.ip6,
+ clib_memcpy_fast (&brp->frp_addr.ip6,
mp->bde_paths[ii].next_hop,
sizeof (brp->frp_addr.ip6));
}
if (!mp)
return;
- memset(mp, 0, m_size);
+ clib_memset(mp, 0, m_size);
mp->_vl_msg_id = ntohs(VL_API_BIER_DISP_ENTRY_DETAILS);
mp->context = ctx->context;
mp->bde_payload_proto = pproto;
mp->bde_bp = htons(bp);
- fib_path_list_walk(pl, fib_path_encode, &api_rpaths);
+ fib_path_list_walk_w_ext(pl,
+ NULL,
+ fib_path_encode,
+ &api_rpaths);
fp = mp->bde_paths;
vec_foreach (api_rpath, api_rpaths)