vnm->api_errno = 0;
if (mp->mt_is_add)
- mpls_table_create (ntohl (mp->mt_table_id), 1);
+ mpls_table_create (ntohl (mp->mt_table_id), 1, mp->mt_name);
else
mpls_table_delete (ntohl (mp->mt_table_id), 1);
- rv = (rv == 0) ? vnm->api_errno : rv;
+ // NB: Nothing sets rv; none of the above returns an error
REPLY_MACRO (VL_API_MPLS_TABLE_ADD_DEL_REPLY);
}
}
void
-mpls_table_create (u32 table_id, u8 is_api)
+mpls_table_create (u32 table_id, u8 is_api, const u8 * name)
{
u32 fib_index;
if (~0 == fib_index)
{
- fib_table_find_or_create_and_lock (FIB_PROTOCOL_MPLS,
- table_id,
- (is_api ?
- FIB_SOURCE_API : FIB_SOURCE_CLI));
+ fib_table_find_or_create_and_lock_w_name (FIB_PROTOCOL_MPLS,
+ table_id,
+ (is_api ?
+ FIB_SOURCE_API :
+ FIB_SOURCE_CLI), name);
}
}
static void
send_mpls_fib_details (vpe_api_main_t * am,
unix_shared_memory_queue_t * q,
- u32 table_id, u32 label, u32 eos,
+ const fib_table_t * table,
+ u32 label, u32 eos,
fib_route_path_encode_t * api_rpaths, u32 context)
{
vl_api_mpls_fib_details_t *mp;
mp->_vl_msg_id = ntohs (VL_API_MPLS_FIB_DETAILS);
mp->context = context;
- mp->table_id = htonl (table_id);
+ mp->table_id = htonl (table->ft_table_id);
+ memcpy (mp->table_name, table->ft_desc,
+ clib_min (vec_len (table->ft_desc), sizeof (mp->table_name)));
mp->eos_bit = eos;
mp->label = htonl (label);
api_rpaths = NULL;
fib_entry_encode (*lfeip, &api_rpaths);
send_mpls_fib_details (am, q,
- fib_table->ft_table_id,
- pfx.fp_label, pfx.fp_eos, api_rpaths, mp->context);
+ fib_table, pfx.fp_label,
+ pfx.fp_eos, api_rpaths, mp->context);
vec_free (api_rpaths);
}