On 6/1/25 07:40, Roman Bogorodskiy wrote:
> 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 */

This has to be 11.7.0 now; Sorry for letting this slip review this long.

>  };
>  
>  

Michal

Reply via email to