X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fplugins%2Fvmxnet3%2Fvmxnet3_api.c;h=decb7b64c61f77ab61c5e0d2ec506f834a85eacf;hp=cdb68708f579f4ef1a3074c776950c156894e03f;hb=490e077fb;hpb=94a92aaa4e3762e671b3a982e5ffc2795c09caa9 diff --git a/src/plugins/vmxnet3/vmxnet3_api.c b/src/plugins/vmxnet3/vmxnet3_api.c index cdb68708f57..decb7b64c61 100644 --- a/src/plugins/vmxnet3/vmxnet3_api.c +++ b/src/plugins/vmxnet3/vmxnet3_api.c @@ -187,6 +187,49 @@ vl_api_vmxnet3_dump_t_handler (vl_api_vmxnet3_dump_t * mp) vec_free (if_name); } +/** + * @brief Message handler for vmxnet3_dump API. + * @param mp vl_api_vmxnet3_dump_t * mp the api message + */ +static void vl_api_sw_vmxnet3_interface_dump_t_handler + (vl_api_sw_vmxnet3_interface_dump_t * mp) +{ + vmxnet3_main_t *vmxm = &vmxnet3_main; + vnet_main_t *vnm = vnet_get_main (); + vnet_sw_interface_t *swif; + vmxnet3_device_t *vd; + u8 *if_name = 0; + vl_api_registration_t *reg; + u32 filter_sw_if_index; + + reg = vl_api_client_index_to_registration (mp->client_index); + if (!reg) + return; + + filter_sw_if_index = htonl (mp->sw_if_index); + if ((filter_sw_if_index != ~0) && + (vnet_sw_interface_is_api_valid (vnm, filter_sw_if_index) == 0)) + goto bad_sw_if_index; + + /* *INDENT-OFF* */ + pool_foreach (vd, vmxm->devices, + ({ + if ((filter_sw_if_index == ~0) || + (vd->sw_if_index == filter_sw_if_index)) + { + swif = vnet_get_sw_interface (vnm, vd->sw_if_index); + if_name = format (if_name, "%U%c", format_vnet_sw_interface_name, vnm, + swif, 0); + send_vmxnet3_details (reg, vd, swif, if_name, mp->context); + _vec_len (if_name) = 0; + } + })); + /* *INDENT-ON* */ + + BAD_SW_IF_INDEX_LABEL; + vec_free (if_name); +} + /* set tup the API message handling tables */ #include clib_error_t *