Commit 898f1096 authored by Michal Privoznik's avatar Michal Privoznik

libvirtSnmp: Modernize insertGuest

Firstly, this style of comparison makes my eyes bleed:

  if (-1 == some_int)

Secondly, the retval is initialized to zero and then in every
error path it is set to -1. Le sigh.
Thirdly, virDomainGetName() can't fail at the point we are
calling it (it can fail iff passed virDomainPtr is invalid, but
that can't be the case).
Signed-off-by: default avatarMichal Privoznik <[email protected]>
Reviewed-by: default avatarMartin Kletzander <[email protected]>
parent 43ba26b0
......@@ -87,54 +87,47 @@ showError(virConnectPtr conn)
static int
insertGuest(netsnmp_container *container, virDomainPtr domain)
{
int ret = 0;
virDomainInfo info;
libvirtGuestTable_rowreq_ctx *row_ctx = NULL;
const char *name = NULL;
unsigned char uuid[16];
const char *name;
unsigned char uuid[VIR_UUID_BUFLEN];
if (-1 == virDomainGetInfo(domain, &info)) {
if (virDomainGetInfo(domain, &info) < 0) {
printf("Failed to get domain info\n");
showError(conn);
ret = -1;
goto out;
goto error;
}
/* create new row in the container */
row_ctx = libvirtGuestTable_allocate_rowreq_ctx(NULL);
if (!row_ctx) {
if (!(row_ctx = libvirtGuestTable_allocate_rowreq_ctx(NULL))) {
snmp_log(LOG_ERR, "Error creating row");
ret = -1;
goto out;
goto error;
}
/* set the index of the row */
ret = virDomainGetUUID(domain, uuid);
if (ret) {
snmp_log(LOG_ERR, "Cannot get UUID");
libvirtGuestTable_release_rowreq_ctx(row_ctx);
ret = -1;
goto out;
if (virDomainGetUUID(domain, uuid) < 0) {
printf("Failed to get domain UUID\n");
showError(conn);
goto error;
}
if (MFD_SUCCESS != libvirtGuestTable_indexes_set(row_ctx, (char*) uuid,
sizeof(uuid))) {
if (libvirtGuestTable_indexes_set(row_ctx,
(char*) uuid,
sizeof(uuid)) != MFD_SUCCESS) {
snmp_log(LOG_ERR, "Error setting row index");
libvirtGuestTable_release_rowreq_ctx(row_ctx);
ret = -1;
goto out;
goto error;
}
/* set the data */
name = virDomainGetName(domain);
if (name)
row_ctx->data.libvirtGuestName = strdup(name);
else
row_ctx->data.libvirtGuestName = strdup("");
if (!row_ctx->data.libvirtGuestName) {
if (!(name = virDomainGetName(domain))) {
printf("Failed to get domain name\n");
showError(conn);
goto error;
}
if (!(row_ctx->data.libvirtGuestName = strdup(name))) {
snmp_log(LOG_ERR, "Not enough memory for domain name '%s'", name);
libvirtGuestTable_release_rowreq_ctx(row_ctx);
ret = -1;
goto out;
goto error;
}
row_ctx->data.libvirtGuestState = info.state;
......@@ -147,16 +140,17 @@ insertGuest(netsnmp_container *container, virDomainPtr domain)
row_ctx->data.libvirtGuestRowStatus = ROWSTATUS_ACTIVE;
ret = CONTAINER_INSERT(container, row_ctx);
if (ret) {
if (CONTAINER_INSERT(container, row_ctx) < 0) {
snmp_log(LOG_ERR, "Cannot insert domain '%s' to container", name);
libvirtGuestTable_release_rowreq_ctx(row_ctx);
ret = -1;
goto out;
goto error;
}
out:
return ret;
return 0;
error:
if (row_ctx)
libvirtGuestTable_release_rowreq_ctx(row_ctx);
return -1;
}
/*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment