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;
{
vl_api_bier_imp_add_reply_t *rmp;
vnet_main_t *vnm;
- index_t bii;
+ index_t bii = ~0;
int rv = 0;
vnm = vnet_get_main ();
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;