From 08bebaae4f540a390ca295c8d79b06669928258a Mon Sep 17 00:00:00 2001 From: Sergio Lopez Date: Wed, 23 Oct 2019 16:24:07 +0200 Subject: [PATCH] vhost_user_backend: move protocol_features to the backend Extend VhostUserBackend trait with protocol_features(), so device backend implementations can freely define which protocol features they want to support. Signed-off-by: Sergio Lopez --- src/bin/vhost_user_net.rs | 4 ++++ vhost_user_backend/src/lib.rs | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/bin/vhost_user_net.rs b/src/bin/vhost_user_net.rs index cd1655aa3..b5520c82a 100644 --- a/src/bin/vhost_user_net.rs +++ b/src/bin/vhost_user_net.rs @@ -433,6 +433,10 @@ impl VhostUserBackend for VhostUserNetBackend { | VhostUserVirtioFeatures::PROTOCOL_FEATURES.bits() } + fn protocol_features(&self) -> VhostUserProtocolFeatures { + VhostUserProtocolFeatures::all() + } + fn update_memory(&mut self, mem: GuestMemoryMmap) -> VhostUserBackendResult<()> { self.mem = Some(mem); Ok(()) diff --git a/vhost_user_backend/src/lib.rs b/vhost_user_backend/src/lib.rs index 8f34a1555..8d3d0251f 100644 --- a/vhost_user_backend/src/lib.rs +++ b/vhost_user_backend/src/lib.rs @@ -62,6 +62,9 @@ pub trait VhostUserBackend: Send + Sync + 'static { /// Virtio features. fn features(&self) -> u64; + /// Virtio protocol features. + fn protocol_features(&self) -> VhostUserProtocolFeatures; + /// Update guest memory regions. fn update_memory(&mut self, mem: GuestMemoryMmap) -> result::Result<(), io::Error>; @@ -500,7 +503,7 @@ impl VhostUserSlaveReqHandler for VhostUserHandler { } fn get_protocol_features(&mut self) -> VhostUserResult { - Ok(VhostUserProtocolFeatures::all()) + Ok(self.backend.read().unwrap().protocol_features()) } fn set_protocol_features(&mut self, features: u64) -> VhostUserResult<()> {