]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
bhyve: support getting interface addresses from agent
authorRoman Bogorodskiy <bogorodskiy@gmail.com>
Fri, 22 May 2026 14:16:58 +0000 (16:16 +0200)
committerRoman Bogorodskiy <bogorodskiy@gmail.com>
Mon, 1 Jun 2026 15:56:51 +0000 (17:56 +0200)
Extend bhyveDomainInterfaceAddresses() to support
the VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT source.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/bhyve/bhyve_driver.c

index 075b8ea64f5f50ea2ce8c7eb5e70ed530ff582af..255638400202061b0a983357ff7a13f071fa7006 100644 (file)
@@ -1957,6 +1957,7 @@ bhyveDomainInterfaceAddresses(virDomainPtr domain,
                               unsigned int flags)
 {
     virDomainObj *vm = NULL;
+    qemuAgent *agent;
     int ret = -1;
 
     virCheckFlags(0, -1);
@@ -1971,6 +1972,22 @@ bhyveDomainInterfaceAddresses(virDomainPtr domain,
         goto cleanup;
 
     switch (source) {
+    case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT:
+        if (virDomainObjBeginAgentJob(vm, VIR_AGENT_JOB_QUERY) < 0)
+            goto cleanup;
+
+        if (bhyveDomainEnsureAgent(vm, true) < 0)
+            goto endjob;
+
+        agent = bhyveDomainObjEnterAgent(vm);
+        ret = qemuAgentGetInterfaces(agent, ifaces, true);
+        bhyveDomainObjExitAgent(vm, agent);
+
+    endjob:
+        virDomainObjEndAgentJob(vm);
+
+        break;
+
     case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP:
         ret = virDomainNetARPInterfaces(vm->def, ifaces);
         break;
@@ -1979,12 +1996,6 @@ bhyveDomainInterfaceAddresses(virDomainPtr domain,
         ret = virDomainNetDHCPInterfaces(vm->def, ifaces);
         break;
 
-    case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT:
-        virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED,
-                       _("Unsupported IP address data source %1$d"),
-                       source);
-        break;
-
     default:
         virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED,
                        _("Unknown IP address data source %1$d"),