return (0);
} /* int apcups_config */
- static void apc_submit_generic (const char *type, const char *type_inst, double value)
+ static void apc_submit_generic (const char *type, const char *type_inst, gauge_t value)
{
- value_t values[1];
-- value_list_t vl = VALUE_LIST_INIT;
-
+ if (isnan (value))
+ return;
- values[0].gauge = value;
-
- vl.values = values;
++ value_list_t vl = VALUE_LIST_INIT;
+ vl.values = &(value_t) { .gauge = value };
vl.values_len = 1;
- sstrncpy (vl.host, hostname_g, sizeof (vl.host));
sstrncpy (vl.plugin, "apcups", sizeof (vl.plugin));
- sstrncpy (vl.plugin_instance, "", sizeof (vl.plugin_instance));
sstrncpy (vl.type, type, sizeof (vl.type));
sstrncpy (vl.type_instance, type_inst, sizeof (vl.type_instance));
}
else if (host->conntype == MBCONN_TCP)
{
- status = getpeername (modbus_get_socket (host->connection),
- (struct sockaddr *) &(struct sockaddr_storage) { 0 },
- &(socklen_t) { sizeof (struct sockaddr_storage) });
- if (status != 0)
+ /* getpeername() is used only to determine if the socket is connected, not
+ * because we're really interested in the peer's IP address. */
+ if (getpeername (modbus_get_socket (host->connection),
+ (void *) &(struct sockaddr_storage) {0},
+ &(socklen_t) {sizeof(struct sockaddr_storage)}) != 0)
status = errno;
}