1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2024-12-27 07:22:07 +03:00

util: netdevveth: use VIR_AUTOPTR for aggregate types

By making use of GNU C's cleanup attribute handled by the
VIR_AUTOPTR macro for declaring aggregate pointer variables,
majority of the calls to *Free functions can be dropped, which
in turn leads to getting rid of most of our cleanup sections.

Signed-off-by: Sukrit Bhatnagar <skrtbhtngr@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
Sukrit Bhatnagar 2018-07-28 23:31:36 +05:30 committed by Erik Skultety
parent 8758a44957
commit fa95b014fd

View File

@ -112,7 +112,6 @@ int virNetDevVethCreate(char** veth1, char** veth2)
{
int ret = -1;
int vethNum = 0;
virCommandPtr cmd = NULL;
size_t i;
/*
@ -125,6 +124,7 @@ int virNetDevVethCreate(char** veth1, char** veth2)
for (i = 0; i < MAX_VETH_RETRIES; i++) {
VIR_AUTOFREE(char *) veth1auto = NULL;
VIR_AUTOFREE(char *) veth2auto = NULL;
VIR_AUTOPTR(virCommand) cmd = NULL;
int status;
if (!*veth1) {
@ -174,8 +174,6 @@ int virNetDevVethCreate(char** veth1, char** veth2)
*veth1 ? *veth1 : veth1auto,
*veth2 ? *veth2 : veth2auto,
status);
virCommandFree(cmd);
cmd = NULL;
}
virReportError(VIR_ERR_INTERNAL_ERROR,
@ -184,7 +182,6 @@ int virNetDevVethCreate(char** veth1, char** veth2)
cleanup:
virMutexUnlock(&virNetDevVethCreateMutex);
virCommandFree(cmd);
return ret;
}
@ -201,26 +198,22 @@ int virNetDevVethCreate(char** veth1, char** veth2)
*/
int virNetDevVethDelete(const char *veth)
{
virCommandPtr cmd = virCommandNewArgList("ip", "link", "del", veth, NULL);
int status;
int ret = -1;
VIR_AUTOPTR(virCommand) cmd = virCommandNewArgList("ip", "link",
"del", veth, NULL);
if (virCommandRun(cmd, &status) < 0)
goto cleanup;
return -1;
if (status != 0) {
if (!virNetDevExists(veth)) {
VIR_DEBUG("Device %s already deleted (by kernel namespace cleanup)", veth);
ret = 0;
goto cleanup;
return 0;
}
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to delete veth device %s"), veth);
goto cleanup;
return -1;
}
ret = 0;
cleanup:
virCommandFree(cmd);
return ret;
return 0;
}