From ffb145e4cc524cf3a2e8883ec52ee3806226355c Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Tue, 10 Feb 2026 10:05:39 +0100 Subject: [PATCH] libvirt-11.10.0-7.el10 - src: Use device alias when ifname is unset in virDomainInterfaceAddresses() (RHEL-143933) Resolves: RHEL-143933 --- ...unset-in-virDomainInterfaceAddresses.patch | 98 +++++++++++++++++++ libvirt.spec | 6 +- 2 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 libvirt-src-Use-device-alias-when-ifname-is-unset-in-virDomainInterfaceAddresses.patch diff --git a/libvirt-src-Use-device-alias-when-ifname-is-unset-in-virDomainInterfaceAddresses.patch b/libvirt-src-Use-device-alias-when-ifname-is-unset-in-virDomainInterfaceAddresses.patch new file mode 100644 index 0000000..c10a41d --- /dev/null +++ b/libvirt-src-Use-device-alias-when-ifname-is-unset-in-virDomainInterfaceAddresses.patch @@ -0,0 +1,98 @@ +From 1aa7206312b153f5209a5c161b4345e65a762c26 Mon Sep 17 00:00:00 2001 +Message-ID: <1aa7206312b153f5209a5c161b4345e65a762c26.1770714339.git.jdenemar@redhat.com> +From: Michal Privoznik +Date: Tue, 20 Jan 2026 16:19:00 +0100 +Subject: [PATCH] src: Use device alias when ifname is unset in + virDomainInterfaceAddresses() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The virDomainInterfaceAddresses() API returns an array of +_virDomainInterface structs which then describe IP addresses +associated with given domain. The struct contains 'name' member +which is documented deliberately vaguely: "interface name". This +is because depending on the source of truth used (controlled by +'source' argument) the name can be wildly different from the one +in domain XML. Now, in case of source = +VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP, the host's ARP table is +parsed and matching interfaces are found by comparing MAC +addresses. If it's a match then the 'name' is set to net->ifname +(corresponds to /interface/target/@dev). But that is not always +set and sometimes may be NULL (e.g. for hostdevs, usernet). We +can't change the API (like we did for hwaddr in v1.2.14-rc1~105) +because this is already released. So the next best thing to do is +to put the interface alias in there. + +To be on a safe side, do the same change to the +VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE case. + +Resolves: https://issues.redhat.com/browse/RHEL-141496 +Signed-off-by: Michal Privoznik +Reviewed-by: Ján Tomko +(cherry picked from commit 4009126f17a19ea2f512f1952f4ea32d231ade85) +Resolves: https://issues.redhat.com/browse/RHEL-143933 +Signed-off-by: Michal Privoznik +--- + src/conf/domain_conf.c | 16 ++++++++++++++-- + src/libvirt-domain.c | 2 ++ + 2 files changed, 16 insertions(+), 2 deletions(-) + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index f950f7c75d..902c1188ef 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -15604,6 +15604,12 @@ virDomainNetDHCPInterfaces(virDomainDef *def, + goto error; + + if (n_leases) { ++ const char *ifname = def->nets[i]->ifname; ++ ++ if (!ifname) { ++ ifname = def->nets[i]->info.alias; ++ } ++ + ifaces_ret = g_renew(virDomainInterfacePtr, ifaces_ret, ifaces_count + 1); + ifaces_ret[ifaces_count] = g_new0(virDomainInterface, 1); + iface = ifaces_ret[ifaces_count]; +@@ -15612,7 +15618,7 @@ virDomainNetDHCPInterfaces(virDomainDef *def, + /* Assuming each lease corresponds to a separate IP */ + iface->naddrs = n_leases; + iface->addrs = g_new0(virDomainIPAddress, iface->naddrs); +- iface->name = g_strdup(def->nets[i]->ifname); ++ iface->name = g_strdup(ifname); + iface->hwaddr = g_strdup(macaddr); + } + +@@ -15666,9 +15672,15 @@ virDomainNetARPInterfaces(virDomainDef *def, + virArpTableEntry entry = table->t[j]; + + if (STREQ(entry.mac, macaddr)) { ++ const char *ifname = def->nets[i]->ifname; ++ ++ if (!ifname) { ++ ifname = def->nets[i]->info.alias; ++ } ++ + iface = g_new0(virDomainInterface, 1); + +- iface->name = g_strdup(def->nets[i]->ifname); ++ iface->name = g_strdup(ifname); + + iface->hwaddr = g_strdup(macaddr); + +diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c +index 74c70a0a43..c7451fee05 100644 +--- a/src/libvirt-domain.c ++++ b/src/libvirt-domain.c +@@ -12880,6 +12880,8 @@ virDomainFSInfoFree(virDomainFSInfoPtr info) + * Note that for some @source values some pieces of returned @ifaces + * might be unset (e.g. VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP does not + * set IP address prefix as ARP table does not have any notion of that). ++ * Moreover, it may happen that the interface doesn't have a name. In ++ * that case, @ifaces->name is set to the interface's device alias. + * + * @ifaces->name and @ifaces->hwaddr are never NULL. + * +-- +2.53.0 diff --git a/libvirt.spec b/libvirt.spec index a26e25d..607df72 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -294,7 +294,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 11.10.0 -Release: 6%{?dist}%{?extra_release} +Release: 7%{?dist}%{?extra_release} License: GPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND OFL-1.1 URL: https://libvirt.org/ @@ -339,6 +339,7 @@ Patch34: libvirt-qemu-open-VFIO-FDs-from-libvirt-backend.patch Patch35: libvirt-qemu-open-iommufd-FD-from-libvirt-backend.patch Patch36: libvirt-qemu-Update-Cgroup-namespace-and-seclabel-for-iommufd.patch Patch37: libvirt-tests-qemuxmlconfdata-provide-iommufd-sample-XML-and-CLI-args.patch +Patch38: libvirt-src-Use-device-alias-when-ifname-is-unset-in-virDomainInterfaceAddresses.patch Requires: libvirt-daemon = %{version}-%{release} @@ -2730,6 +2731,9 @@ exit 0 %endif %changelog +* Tue Feb 10 2026 Jiri Denemark - 11.10.0-7 +- src: Use device alias when ifname is unset in virDomainInterfaceAddresses() (RHEL-143933) + * Fri Feb 6 2026 Jiri Denemark - 11.10.0-6 - qemu: Implement support for associating iommufd to hostdev (RHEL-126346, RHEL-74202) - qemu: Introduce privateData for hostdevs (RHEL-126346, RHEL-74202)