]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
ch: implement domainInterfaceAddresses
authorAnirudh Rayabharam <anrayabh@linux.microsoft.com>
Thu, 12 Dec 2024 22:31:04 +0000 (16:31 -0600)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 24 Jan 2025 16:18:35 +0000 (17:18 +0100)
Implement domainInterfaceAddresses for the Cloud Hypervisor driver.
Support VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE and
VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP sources. Implementation is
similar to other drivers.

Signed-off-by: Anirudh Rayabharam <anrayabh@linux.microsoft.com>
Signed-off-by: Praveen K Paladugu <praveenkpaladugu@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/ch/ch_driver.c

index 6a8da5f35678e2b877a52d7306e2b5319c12ec59..fa6e4edcf68d96a91bd04d1a415ced779c16b473 100644 (file)
@@ -2298,6 +2298,47 @@ chConnectDomainEventDeregisterAny(virConnectPtr conn,
     return 0;
 }
 
+static int
+chDomainInterfaceAddresses(virDomain *dom,
+                           virDomainInterfacePtr **ifaces,
+                           unsigned int source,
+                           unsigned int flags)
+{
+    virDomainObj *vm = NULL;
+    int ret = -1;
+
+    virCheckFlags(0, -1);
+
+    if (!(vm = virCHDomainObjFromDomain(dom)))
+        goto cleanup;
+
+    if (virDomainInterfaceAddressesEnsureACL(dom->conn, vm->def, source) < 0)
+        goto cleanup;
+
+    if (virDomainObjCheckActive(vm) < 0)
+        goto cleanup;
+
+    switch (source) {
+    case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE:
+        ret = virDomainNetDHCPInterfaces(vm->def, ifaces);
+        break;
+
+    case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP:
+        ret = virDomainNetARPInterfaces(vm->def, ifaces);
+        break;
+
+    default:
+        virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED,
+                       _("Unsupported IP address data source %1$d"),
+                       source);
+        break;
+    }
+
+ cleanup:
+    virDomainObjEndAPI(&vm);
+    return ret;
+}
+
 
 /* Function Tables */
 static virHypervisorDriver chHypervisorDriver = {
@@ -2359,6 +2400,7 @@ static virHypervisorDriver chHypervisorDriver = {
     .nodeGetMemoryStats = chNodeGetMemoryStats,             /* 10.10.0 */
     .connectDomainEventRegisterAny = chConnectDomainEventRegisterAny,       /* 10.10.0 */
     .connectDomainEventDeregisterAny = chConnectDomainEventDeregisterAny,   /* 10.10.0 */
+    .domainInterfaceAddresses = chDomainInterfaceAddresses, /* 11.0.0 */
 };
 
 static virConnectDriver chConnectDriver = {