#include "virlog.h"
#include "virerror.h"
+#include "virstring.h"
#include "virtime.h"
#include "virsystemd.h"
#include "virinitctl.h"
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++) {
+ const char *alias;
+ int thisidx;
+
+ if (!def->nets[i]->info.alias)
+ continue;
+ if (!(alias = STRSKIP(def->nets[i]->info.alias, "net")))
+ continue;
+
+ if (virStrToLong_i(alias, NULL, 10, &thisidx) < 0)
+ continue;
+
+ if (thisidx >= idx)
+ idx = thisidx + 1;
+ }
+
+ net->info.alias = g_strdup_printf("net%d", idx);
+}
+
+
+void
+virLXCAssignDeviceFSAlias(virDomainDef *def,
+ virDomainFSDef *fs)
+{
+ size_t i;
+ int idx = 0;
+
+ if (fs->info.alias)
+ return;
+
+ for (i = 0; i < def->nfss; i++) {
+ const char *alias;
+ int thisidx;
+
+ if (!def->fss[i]->info.alias)
+ continue;
+ if (!(alias = STRSKIP(def->fss[i]->info.alias, "fs")))
+ continue;
+
+ if (virStrToLong_i(alias, NULL, 10, &thisidx) < 0)
+ continue;
+
+ if (thisidx >= idx)
+ idx = thisidx + 1;
+ }
+
+ fs->info.alias = g_strdup_printf("fs%d", idx);
+}
int
virLXCDomainSetRunlevel(virDomainObj *vm,
int runlevel);
+
+void
+virLXCAssignDeviceNetAlias(virDomainDef *def,
+ virDomainNetDef *net);
+
+void
+virLXCAssignDeviceFSAlias(virDomainDef *def,
+ virDomainFSDef *fs);
if (virDomainActualNetDefValidate(net) < 0)
return -1;
+ /* Assign alias to the new network interface */
+ virLXCAssignDeviceNetAlias(vm->def, net);
+
actualType = virDomainNetGetActualType(net);
switch (actualType) {
vm->def->consoles[i]->info.alias = g_strdup_printf("console%zu", i);
}
+ VIR_DEBUG("Setting up filesystem aliases");
+ for (i = 0; i < vm->def->nfss; i++)
+ virLXCAssignDeviceFSAlias(vm->def, vm->def->fss[i]);
+
+ VIR_DEBUG("Setting up network interface aliases");
+ for (i = 0; i < vm->def->nnets; i++)
+ virLXCAssignDeviceNetAlias(vm->def, vm->def->nets[i]);
+
VIR_DEBUG("Setting up Interfaces");
if (virLXCProcessSetupInterfaces(driver, vm->def, &veths) < 0)
goto cleanup;