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:
parent
8758a44957
commit
fa95b014fd
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user