The virNetDevTapInterfaceStats() function already works on FreeBSD, so
it's just a matter of wrapping that for domainInterfaceStats.

Signed-off-by: Roman Bogorodskiy <bogorods...@gmail.com>
---
 src/bhyve/bhyve_driver.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c
index db7d440a97..e4698b71bf 100644
--- a/src/bhyve/bhyve_driver.c
+++ b/src/bhyve/bhyve_driver.c
@@ -55,6 +55,7 @@
 #include "conf/domain_capabilities.h"
 #include "virutil.h"
 #include "domain_driver.h"
+#include "virnetdevtap.h"
 
 #include "bhyve_conf.h"
 #include "bhyve_device.h"
@@ -1625,6 +1626,38 @@ bhyveConnectGetDomainCapabilities(virConnectPtr conn,
     return ret;
 }
 
+static int
+bhyveDomainInterfaceStats(virDomainPtr domain,
+                          const char *device,
+                          virDomainInterfaceStatsPtr stats)
+{
+    virDomainObj *vm;
+    int ret = -1;
+    virDomainNetDef *net = NULL;
+
+    if (!(vm = bhyveDomObjFromDomain(domain)))
+        goto cleanup;
+
+    if (virDomainInterfaceStatsEnsureACL(domain->conn, vm->def) < 0)
+        goto cleanup;
+
+    if (virDomainObjCheckActive(vm) < 0)
+        goto cleanup;
+
+    if (!(net = virDomainNetFind(vm->def, device)))
+        goto cleanup;
+
+    if (virNetDevTapInterfaceStats(net->ifname, stats,
+                                   !virDomainNetTypeSharesHostView(net)) < 0)
+        goto cleanup;
+
+    ret = 0;
+
+ cleanup:
+    virDomainObjEndAPI(&vm);
+    return ret;
+}
+
 static virHypervisorDriver bhyveHypervisorDriver = {
     .name = "bhyve",
     .connectURIProbe = bhyveConnectURIProbe,
@@ -1685,6 +1718,7 @@ static virHypervisorDriver bhyveHypervisorDriver = {
     .connectIsEncrypted = bhyveConnectIsEncrypted, /* 1.3.5 */
     .connectDomainXMLFromNative = bhyveConnectDomainXMLFromNative, /* 2.1.0 */
     .connectGetDomainCapabilities = bhyveConnectGetDomainCapabilities, /* 
2.1.0 */
+    .domainInterfaceStats = bhyveDomainInterfaceStats, /* 11.5.0 */
 };
 
 
-- 
2.49.0

Reply via email to