On 6/19/26 10:56, Radosław Śmigielski via Devel wrote:
> From: Radoslaw Smigielski <rsmigiel@redhat.com>
>
> LXC domains did not assign device aliases to filesystem and network
> interface during domain startup. Only console devices received
> aliases.
>
> This change introduces two new functions:
> - virLXCAssignDeviceNetAlias()
> - virLXCAssignDeviceFSAlias()
>
> These functions scan existing devices to find the next available
> device index. Also ensure correct alias assignment after network
> and block device hotplug/unplug operations when a gap can
> be introduced in device numbering.
>
> The new functions are called during:
> - domain startup virLXCProcessStart()
> - device hotplug lxcDomainAttachDeviceNetLive()
>
> Signed-off-by: Radoslaw Smigielski <rsmigiel@redhat.com>
> ---
> src/lxc/lxc_domain.c | 59 +++++++++++++++++++++++++++++++++++++++++++
> src/lxc/lxc_domain.h | 8 ++++++
> src/lxc/lxc_driver.c | 3 +++
> src/lxc/lxc_process.c | 8 ++++++
> 4 files changed, 78 insertions(+)
>
> diff --git a/src/lxc/lxc_domain.c b/src/lxc/lxc_domain.c
> index afd8d6e9805f..5326c9852073 100644
> --- a/src/lxc/lxc_domain.c
> +++ b/src/lxc/lxc_domain.c
> @@ -25,6 +25,7 @@
>
> #include "virlog.h"
> #include "virerror.h"
> +#include "virstring.h"
> #include "virtime.h"
> #include "virsystemd.h"
> #include "virinitctl.h"
> @@ -375,3 +376,61 @@ virLXCDomainSetRunlevel(virDomainObj *vm,
> g_clear_pointer(&data.st_valid, g_free);
> return ret;
> }
> +
> +
> +void
> +virLXCAssignDeviceNetAlias(virDomainDef *def,
> + virDomainNetDef *net)
> +{
> + size_t i;
> + int idx = 0;
> +
> + if (net->info.alias)
> + return;
> +
> + for (i = 0; i < def->nnets; i++) {
> + int thisidx;
> +
> + if (!def->nets[i]->info.alias)
> + continue;
> + if (!STRPREFIX(def->nets[i]->info.alias, "net"))
> + continue;
> +
> + if (virStrToLong_i(def->nets[i]->info.alias + 3, NULL, 10, &thisidx) < 0)
> + continue;
There's a macro that combines STRPREFIX() + this offsetting of a string:
STRSKIP().
> +
> + if (thisidx >= idx)
> + idx = thisidx + 1;
> + }
> +
> + net->info.alias = g_strdup_printf("net%d", idx);
> +}
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
and merged.
Michal