lxc: Turn @veths into a string list in virLXCProcessStart

This way it will be easier to use autofree.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
Michal Privoznik 2018-07-26 17:25:58 +02:00
parent 71a390e0fd
commit 3211936b34

View File

@ -514,8 +514,7 @@ static int virLXCProcessSetupNamespaces(virConnectPtr conn,
* virLXCProcessSetupInterfaces:
* @conn: pointer to connection
* @def: pointer to virtual machine structure
* @nveths: number of interfaces
* @veths: interface names
* @veths: string list of interface names
*
* Sets up the container interfaces by creating the veth device pairs and
* attaching the parent end to the appropriate bridge. The container end
@ -525,7 +524,6 @@ static int virLXCProcessSetupNamespaces(virConnectPtr conn,
*/
static int virLXCProcessSetupInterfaces(virConnectPtr conn,
virDomainDefPtr def,
size_t *nveths,
char ***veths)
{
int ret = -1;
@ -534,6 +532,9 @@ static int virLXCProcessSetupInterfaces(virConnectPtr conn,
virDomainNetDefPtr net;
virDomainNetType type;
if (VIR_ALLOC_N(*veths, def->nnets + 1) < 0)
return -1;
for (i = 0; i < def->nnets; i++) {
char *veth = NULL;
virNetDevBandwidthPtr actualBandwidth;
@ -549,9 +550,6 @@ static int virLXCProcessSetupInterfaces(virConnectPtr conn,
if (virDomainNetAllocateActualDevice(def, net) < 0)
goto cleanup;
if (VIR_EXPAND_N(*veths, *nveths, 1) < 0)
goto cleanup;
type = virDomainNetGetActualType(net);
switch (type) {
case VIR_DOMAIN_NET_TYPE_NETWORK:
@ -604,7 +602,7 @@ static int virLXCProcessSetupInterfaces(virConnectPtr conn,
}
}
(*veths)[(*nveths)-1] = veth;
(*veths)[i] = veth;
if (VIR_STRDUP(def->nets[i]->ifname_guest_actual, veth) < 0)
goto cleanup;
@ -902,7 +900,6 @@ int virLXCProcessStop(virLXCDriverPtr driver,
static virCommandPtr
virLXCProcessBuildControllerCmd(virLXCDriverPtr driver,
virDomainObjPtr vm,
int nveths,
char **veths,
int *ttyFDs,
size_t nttyFDs,
@ -987,7 +984,7 @@ virLXCProcessBuildControllerCmd(virLXCDriverPtr driver,
virCommandAddArg(cmd, "--handshake");
virCommandAddArgFormat(cmd, "%d", handshakefd);
for (i = 0; i < nveths; i++)
for (i = 0; veths && veths[i]; i++)
virCommandAddArgList(cmd, "--veth", veths[i], NULL);
virCommandPassFD(cmd, handshakefd, 0);
@ -1184,7 +1181,6 @@ int virLXCProcessStart(virConnectPtr conn,
size_t i;
char *logfile = NULL;
int logfd = -1;
size_t nveths = 0;
char **veths = NULL;
int handshakefds[2] = { -1, -1 };
off_t pos = -1;
@ -1355,7 +1351,7 @@ int virLXCProcessStart(virConnectPtr conn,
}
VIR_DEBUG("Setting up Interfaces");
if (virLXCProcessSetupInterfaces(conn, vm->def, &nveths, &veths) < 0)
if (virLXCProcessSetupInterfaces(conn, vm->def, &veths) < 0)
goto cleanup;
VIR_DEBUG("Setting up namespaces if any");
@ -1379,7 +1375,7 @@ int virLXCProcessStart(virConnectPtr conn,
if (!(cmd = virLXCProcessBuildControllerCmd(driver,
vm,
nveths, veths,
veths,
ttyFDs, nttyFDs,
nsInheritFDs,
files, nfiles,
@ -1559,9 +1555,7 @@ int virLXCProcessStart(virConnectPtr conn,
virLXCProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED);
}
virCommandFree(cmd);
for (i = 0; i < nveths; i++)
VIR_FREE(veths[i]);
VIR_FREE(veths);
virStringListFree(veths);
for (i = 0; i < nttyFDs; i++)
VIR_FORCE_CLOSE(ttyFDs[i]);
VIR_FREE(ttyFDs);