aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/devices/virtio
diff options
context:
space:
mode:
authorSteven Luong <sluong@cisco.com>2020-05-18 17:12:56 -0700
committerPaul Vinciguerra <pvinci@vinciconsulting.com>2020-06-16 01:37:56 +0000
commita0e8d9669e980c673f5302e7bff0c06b31d46b56 (patch)
tree93a12a433ff07eb91f9393b2c654984522d68a1d /src/vnet/devices/virtio
parent0cf528233ab9272d7153f7323bacae2d50313b1a (diff)
virtio: add vhost sw_if_index filter for sw_interface_vhost_user_dump
The filter sw_if_index was in the API sw_interface_vhost_user_dump. But it was never implemented in the backend. This patch is to add the backend, vat, and custom dump support for the filter. Type: feature Signed-off-by: Steven Luong <sluong@cisco.com> Change-Id: Iaa41a7e11bfbcbb4c60092375e4b0dcf0950077b
Diffstat (limited to 'src/vnet/devices/virtio')
-rw-r--r--src/vnet/devices/virtio/vhost_user.api2
-rw-r--r--src/vnet/devices/virtio/vhost_user_api.c7
2 files changed, 6 insertions, 3 deletions
diff --git a/src/vnet/devices/virtio/vhost_user.api b/src/vnet/devices/virtio/vhost_user.api
index 127b0a27fc7..338fd710bc0 100644
--- a/src/vnet/devices/virtio/vhost_user.api
+++ b/src/vnet/devices/virtio/vhost_user.api
@@ -115,7 +115,7 @@ define sw_interface_vhost_user_details
};
/** \brief Vhost-user interface dump request
- @param sw_if_index - filter by sw_if_index UNIMPLEMENTED
+ @param sw_if_index - filter by sw_if_index
*/
define sw_interface_vhost_user_dump
{
diff --git a/src/vnet/devices/virtio/vhost_user_api.c b/src/vnet/devices/virtio/vhost_user_api.c
index 67365334d95..80fe5548efd 100644
--- a/src/vnet/devices/virtio/vhost_user_api.c
+++ b/src/vnet/devices/virtio/vhost_user_api.c
@@ -211,7 +211,7 @@ static void
filter_sw_if_index = htonl (mp->sw_if_index);
if (filter_sw_if_index != ~0)
- return; /* UNIMPLEMENTED */
+ VALIDATE_SW_IF_INDEX (mp);
rv = vhost_user_dump_ifs (vnm, vm, &ifaces);
if (rv)
@@ -219,8 +219,11 @@ static void
vec_foreach (vuid, ifaces)
{
- send_sw_interface_vhost_user_details (am, reg, vuid, mp->context);
+ if ((filter_sw_if_index == ~0) ||
+ (vuid->sw_if_index == filter_sw_if_index))
+ send_sw_interface_vhost_user_details (am, reg, vuid, mp->context);
}
+ BAD_SW_IF_INDEX_LABEL;
vec_free (ifaces);
}