libvirt/src/util
Michal Privoznik 520eb3e15b vircommand: Introduce virCommandMassCloseRange()
This is brand new way of closing FDs before exec(). We need to
close all FDs except those we want to explicitly pass to avoid
leaking FDs into the child. Historically, we've done this by
either iterating over all opened FDs and closing them one by one
(or preserving them), or by iterating over an FD interval [2 ...
N] and closing them one by one followed by calling closefrom(N +
1). This is a lot of syscalls.

That's why Linux kernel developers introduced new close_from
syscall. It closes all FDs within given range, in a single
syscall. Since we keep list of FDs we want to preserve and pass
to the child process, we can use this syscall to close all FDs
in between. We don't even need to care about opened FDs.

Of course, we have to check whether the syscall is available and
fall back to the old implementation if it isn't.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
2023-08-24 12:45:00 +02:00
..
glibcompat.c glibcompat: Provide proper override for 'g_hash_table_steal_extended' 2022-06-01 12:27:10 +02:00
glibcompat.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
iohelper.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
meson.build Move src/keycodemapdb -> subprojects/keycodemapdb 2023-04-17 15:02:38 +02:00
viracpi.c util: acpi: include unistd.h 2023-04-06 15:39:37 +02:00
viracpi.h util: Introduce virAcpi module 2023-04-06 12:48:22 +02:00
viracpipriv.h util: Introduce virAcpi module 2023-04-06 12:48:22 +02:00
viralloc.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
viralloc.h util: fix various ATTRIBUTE_NONNULL calls 2021-11-23 09:59:00 +01:00
virarch.c util: canonicalize 'arm64' arch to 'aarch64' 2021-11-30 10:51:33 +00:00
virarch.h util: add ARCH_IS_MIPS helper macro 2022-02-02 10:07:15 +01:00
virarptable.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virarptable.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
viraudit.c lib: Drop intermediary return variables 2021-10-25 12:48:46 +02:00
viraudit.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virauth.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virauth.h util: virauth: Export virAuthGetCredential 2023-01-23 16:32:26 +01:00
virauthconfig.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
virauthconfig.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virbitmap.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
virbitmap.h virbitmap: Allow NULL bitmap in functions returning index of a set/clear bit 2023-02-06 13:34:06 +01:00
virbpf.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virbpf.h meson: remove obsolete check for BPF_PROG_QUERY 2022-12-12 10:36:18 +00:00
virbuffer.c util: Remove unused includes 2022-06-16 06:43:57 +02:00
virbuffer.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virccw.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
virccw.h util: add virCCWDeviceAddressFromString to virccw 2022-05-23 16:31:59 +02:00
vircgroup.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
vircgroup.h vircgroupv2: fix cpu.weight limits check 2023-01-17 10:57:50 +01:00
vircgroupbackend.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
vircgroupbackend.h util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
vircgrouppriv.h vircgroup: Fix virCgroupKillRecursive() wrt nested controllers 2021-04-19 11:21:40 +02:00
vircgroupv1.c virCgroupV1GetBlkioIo(Device)Serviced: Refactor extraction of cgroup data 2023-04-14 15:20:14 +02:00
vircgroupv1.h
vircgroupv2.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
vircgroupv2.h
vircgroupv2devices.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
vircgroupv2devices.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
vircommand.c vircommand: Introduce virCommandMassCloseRange() 2023-08-24 12:45:00 +02:00
vircommand.h util: add an API to retrieve the resolved path to a virCommand's binary 2023-03-10 14:09:16 -05:00
vircommandpriv.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virconf.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
virconf.h virconf: Make virConfSetValue() clear consumed pointer 2022-01-17 09:53:45 +01:00
vircrypto.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
vircrypto.h util: Remove use of virCryptoHaveCipher(VIR_CRYPTO_CIPHER_AES256CBC) 2021-09-22 14:53:55 +02:00
virdaemon.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
virdaemon.h Exit on errors from virDaemonSetupLogging 2022-01-05 14:08:39 +01:00
virdevmapper.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virdevmapper.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virdnsmasq.c virStringParseVersion: Parse into 'unsigned long long' 2023-04-03 09:19:06 +02:00
virdnsmasq.h virdnsmasq: Drop dnsmasqCapsNewFromBuffer() 2022-01-18 16:18:57 +01:00
virebtables.c util: Remove unused includes 2022-06-16 06:43:57 +02:00
virebtables.h
virendian.h
virenum.c util: Remove unused includes 2022-06-16 06:43:57 +02:00
virenum.h util: enum: Add helpers for converting virTristate* to a plain bool 2021-12-01 13:39:47 +01:00
virerror.c virRaiseErrorLog: Don't skip error printing when enabling debug logging env variable 2023-06-05 13:20:12 +02:00
virerror.h util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
virerrorpriv.h
virevent.c docstring: remove 'v' from since metadata 2022-05-04 18:11:06 +02:00
virevent.h
vireventglib.c util: Remove unused includes 2022-06-16 06:43:57 +02:00
vireventglib.h
vireventglibwatch.c
vireventglibwatch.h
vireventthread.c util: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
vireventthread.h
virfcp.c util: Remove unused includes 2022-06-16 06:43:57 +02:00
virfcp.h
virfdstream.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virfdstream.h
virfile.c virfile: Introduce virCloseFrom() 2023-08-24 12:42:45 +02:00
virfile.h virfile: Introduce virCloseFrom() 2023-08-24 12:42:45 +02:00
virfilecache.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virfilecache.h util: virfilecache: Introduce virFileCacheClear for usage in tests 2023-03-06 20:55:49 +01:00
virfirewall.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virfirewall.h util: make virFirewallRuleToString() global 2022-08-24 12:22:47 -04:00
virfirewalld.c virfirewalld: Drop useless memset() in virFirewallDApplyRule() 2023-08-03 16:35:58 +02:00
virfirewalld.h util: include virfirewall.h in virfirewalld.h 2023-05-10 14:41:53 +02:00
virfirewalldpriv.h
virfirmware.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virfirmware.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virgdbus.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virgdbus.h virgdbus: add DBus reply format check 2020-09-23 12:53:31 +02:00
virgettext.c lib: Prefer WITH_* prefix for #if conditionals 2020-09-02 10:28:10 +02:00
virgettext.h
virgic.c
virgic.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virglibutil.c util: Add helpers for auto-freeing GSList filled with strings 2021-02-11 17:05:32 +01:00
virglibutil.h util: Add helpers for auto-freeing GSList filled with strings 2021-02-11 17:05:32 +01:00
virhash.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virhash.h util: virhash: Replace 'virHashDataFree' by 'GDestroyNotify' 2021-12-01 13:53:12 +01:00
virhashcode.c Prefer https: everywhere where possible 2020-09-01 21:58:46 +02:00
virhashcode.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virhook.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virhook.h
virhostcpu.c qemu: S390 does not provide physical address size 2023-07-19 08:42:08 +02:00
virhostcpu.h qemu: S390 does not provide physical address size 2023-07-19 08:42:08 +02:00
virhostcpupriv.h
virhostmem.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virhostmem.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virhostuptime.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virhostuptime.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
viridentity.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
viridentity.h virIdentityGetParameters: Return 'virTypedParamList' 2022-05-18 13:46:30 +02:00
viridentitypriv.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virinitctl.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virinitctl.h
viriptables.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
viriptables.h network: eliminate code that uses default iptables chains 2021-12-13 13:37:31 -05:00
viriscsi.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
viriscsi.h
virjson.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virjson.h util: json: Remove unused virJSONValueObjectAppendStringPrintf 2023-03-06 13:36:57 +01:00
virkeycode.c Split declarations from initializations 2020-08-25 19:03:11 +02:00
virkeycode.h
virkmod.c util: Remove unused includes 2022-06-16 06:43:57 +02:00
virkmod.h
virlease.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virlease.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virlockspace.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virlockspace.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virlog.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virlog.h util: Check for errors in virLogSetFromEnv 2022-01-05 14:08:40 +01:00
virmacaddr.c util: Remove unused includes 2022-06-16 06:43:57 +02:00
virmacaddr.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virmacmap.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virmacmap.h conf: add cleanup func for virMacMap 2021-09-09 18:06:13 +02:00
virmdev.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virmdev.h nodedev: support 'mtty' device for testing 2022-08-10 11:19:03 -05:00
virmodule.c util: Update format strings in translated messages (part 2) 2023-04-01 11:40:35 +02:00
virmodule.h
virnetdev.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virnetdev.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virnetdevbandwidth.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virnetdevbandwidth.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virnetdevbridge.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virnetdevbridge.h
virnetdevip.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virnetdevip.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virnetdevmacvlan.c Decrease scope of some variables 2023-08-03 16:35:11 +02:00
virnetdevmacvlan.h virnetdevmacvlan: Drop G_GNUC_WARN_UNUSED_RESULT annotation for virNetDevMacVLanDeleteWithVPortProfile() 2023-02-01 15:44:20 +01:00
virnetdevmidonet.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virnetdevmidonet.h
virnetdevopenvswitch.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virnetdevopenvswitch.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virnetdevpriv.h Allow VF vlanid to be passed as a pointer 2022-02-03 16:52:05 +01:00
virnetdevtap.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virnetdevtap.h virnetdevtap.c: Disallow pre-existing TAP devices 2022-12-09 08:46:39 +01:00
virnetdevveth.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virnetdevveth.h
virnetdevvlan.c util: Remove unused includes 2022-06-16 06:43:57 +02:00
virnetdevvlan.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnetdevvportprofile.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virnetdevvportprofile.h conf: Rewrite virNetDevVPortProfileCopy 2022-08-18 08:34:30 +02:00
virnetlink.c lib: Finish using struct zero initializer manually 2023-08-03 16:41:19 +02:00
virnetlink.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virnodesuspend.c util: add logging about node suspend availability 2023-07-20 11:01:08 +01:00
virnodesuspend.h
virnuma.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virnuma.h qemuxml2argvmock: Drop virNuma* mocks 2023-03-15 12:46:36 +01:00
virnvme.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virnvme.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virobject.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virobject.h util: remove virObjectUnref() adapters 2022-07-15 16:44:39 -05:00
virpci.c virpci: Resolve leak in virPCIVirtualFunctionList cleanup 2023-05-02 06:49:33 +02:00
virpci.h vircpi: Add PCIe 5.0 and 6.0 link speeds 2022-07-12 09:07:45 +02:00
virpcivpd.c virpcivpd: reduce errors in log due to invalid VPD 2022-10-04 08:42:42 +02:00
virpcivpd.h Add a PCI/PCIe device VPD Parser 2021-10-21 17:34:04 +01:00
virpcivpdpriv.h Add a PCI/PCIe device VPD Parser 2021-10-21 17:34:04 +01:00
virperf.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virperf.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virpidfile.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virpidfile.h util: add quiet parameter to virPidFileAcquirePathFull 2023-03-08 12:16:56 +01:00
virpolkit.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virpolkit.h util: Add virPolkitAgentAvailable 2021-11-23 12:51:09 +01:00
virportallocator.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virportallocator.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virprobe.h
virprocess.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virprocess.h util: add helper for raising the max files limit 2023-07-20 10:58:01 +01:00
virqemu.c util: qemu: Remove 'skipKey' argument from virQEMUBuildCommandLineJSONArrayFormatFunc prototype 2023-01-04 14:01:16 +01:00
virqemu.h util: qemu: Remove 'skipKey' argument from virQEMUBuildCommandLineJSONArrayFormatFunc prototype 2023-01-04 14:01:16 +01:00
virrandom.c virrandom: Accept "nodedev" driver in virRandomGenerateWWN() 2023-07-25 14:54:37 +02:00
virrandom.h virrandommock: Drop virRandomGenerateWWN 2023-07-19 13:09:11 +02:00
virresctrl.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virresctrl.h util: Remove unused includes 2022-06-16 06:43:57 +02:00
virresctrlpriv.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virrotatingfile.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virrotatingfile.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virscsi.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virscsi.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virscsihost.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virscsihost.h
virscsivhost.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virscsivhost.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virseclabel.c util: Remove unused includes 2022-06-16 06:43:57 +02:00
virseclabel.h virSecurityLabelDef: Declare 'type' as 'virDomainSeclabelType' 2021-11-24 09:20:38 +01:00
virsecret.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virsecret.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsecureerase.c util: implement secure erase with explicit_bzero 2022-12-13 04:46:59 -05:00
virsecureerase.h util: virsecureerase: Introduce virSecureEraseString 2021-02-03 13:07:13 +01:00
virsocket.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virsocket.h
virsocketaddr.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
virsocketaddr.h util: rename/move iptablesFormatNetwork to virSocketAddrFormatWithPrefix 2021-12-13 13:37:31 -05:00
virstoragefile.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virstoragefile.h Remove virStorageFileCanonicalizePath 2021-04-12 15:55:09 +02:00
virstring.c util: Use g_ascii_strtoll 2023-06-14 12:47:55 +02:00
virstring.h util: Remove virStrToLong_l 2023-06-14 12:47:54 +02:00
virsysinfo.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virsysinfo.h conf: domain: Refactor cleanup in virSysinfoChassisParseXML 2022-11-02 09:22:56 +01:00
virsysinfopriv.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virsystemd.c util: relax requirement for logind to be running 2023-07-20 11:00:18 +01:00
virsystemd.h util: drop support for obsolete systemd in RHEL-7 2022-02-17 12:35:42 +00:00
virsystemdpriv.h
virthread.c virthread: Introduce virLockGuard 2022-02-01 17:19:23 +01:00
virthread.h virthread: Introduce VIR_WITH_MUTEX_LOCK_GUARD 2022-02-01 17:19:32 +01:00
virthreadjob.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virthreadjob.h
virthreadpool.c virthreadpool: Cleanup 2022-02-11 11:03:44 +01:00
virthreadpool.h virthreadpool: Allow setting identity for workers 2021-10-27 17:11:29 +02:00
virtime.c util: o-z: use g_new0 2020-10-06 12:31:34 +02:00
virtime.h
virtpm.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virtpm.h util: Add parsing support for swtpm's cmdarg-migration capability 2022-11-09 12:26:22 +01:00
virtypedparam-public.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virtypedparam.c util: don't validate empty params 2023-06-26 14:19:18 +02:00
virtypedparam.h virTypedParamsValidate: Allow typed params to be both _UINT and _ULLONG 2023-05-02 14:32:47 +02:00
viruri.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
viruri.h viruri: Introduce virURIParamsSetIgnore() 2023-02-08 16:50:45 +01:00
virusb.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virusb.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virutil.c lib: Finish using struct zero initializer manually 2023-08-03 16:41:19 +02:00
virutil.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
viruuid.c Decrease scope of some variables 2023-08-03 16:35:11 +02:00
viruuid.h lib: Use G_NO_INLINE instead of G_GNUC_NO_INLINE 2022-07-18 17:23:15 +02:00
virvhba.c util: Update format strings in translated messages (part 3) 2023-04-01 11:40:35 +02:00
virvhba.h
virvsock.c meson: remove obsolete check for VHOST_VSOCK_SET_GUEST_CID 2022-12-12 10:36:15 +00:00
virvsock.h
virxdrdefs.h
virxml.c util: xml: Introduce virXMLNodeGetSubelementList 2023-06-05 13:23:06 +02:00
virxml.h util: xml: Introduce virXMLNodeGetSubelementList 2023-06-05 13:23:06 +02:00