X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fmodbus.c;h=589ce90fd2e2b85d86714f11f0ceb87ab34b573b;hb=0a8741b9061f8df4a78a448c021612db06e17425;hp=db7d033d3f1c0be05cb0f5d08623a369390f0d8e;hpb=c7d859191d8fbfc129dea8cfaf9e13e78fd6642c;p=collectd.git diff --git a/src/modbus.c b/src/modbus.c index db7d033d..589ce90f 100644 --- a/src/modbus.c +++ b/src/modbus.c @@ -23,12 +23,12 @@ #include "collectd.h" #include "common.h" -#include "plugin.h" #include "configfile.h" - -#include +#include "plugin.h" #include +#include +#include #ifndef LIBMODBUS_VERSION_CHECK /* Assume version 2.0.3 */ @@ -471,12 +471,11 @@ static int mb_read_data (mb_host_t *host, mb_slave_t *slave, /* {{{ */ } else if (host->conntype == MBCONN_TCP) { - struct sockaddr sockaddr; - socklen_t saddrlen = sizeof (sockaddr); - - status = getpeername (modbus_get_socket (host->connection), - &sockaddr, &saddrlen); - 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; } @@ -1004,18 +1003,17 @@ static int mb_config_add_host (oconfig_item_t *ci) /* {{{ */ if (status == 0) { - user_data_t ud; char name[1024]; - ud.data = host; - ud.free_func = host_free; - ssnprintf (name, sizeof (name), "modbus-%s", host->host); plugin_register_complex_read (/* group = */ NULL, name, /* callback = */ mb_read, /* interval = */ host->interval, - &ud); + &(user_data_t) { + .data = host, + .free_func = host_free, + }); } else {