X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fmbmon.c;h=344caddffd91f286b94b96721d065b4c2751f652;hb=7c8fb05fcb919fb2d9fc68757c198916396600ce;hp=e03f2f9b627d5ad61454e4ccd77993e5d74ecd3f;hpb=d561a8387f633491bdcd7fe6964f0b63ae694af5;p=collectd.git diff --git a/src/mbmon.c b/src/mbmon.c index e03f2f9b..344caddf 100644 --- a/src/mbmon.c +++ b/src/mbmon.c @@ -25,51 +25,15 @@ #include "common.h" #include "plugin.h" #include "configfile.h" -#include "utils_debug.h" - -#if HAVE_NETDB_H && HAVE_SYS_SOCKET_H && HAVE_NETINET_IN_H && HAVE_NETINET_TCP_H -# include -# include -# include -# include -# define MBMON_HAVE_READ 1 -#else -# define MBMON_HAVE_READ 0 -#endif + +#include +#include +#include +#include #define MBMON_DEF_HOST "127.0.0.1" #define MBMON_DEF_PORT "411" /* the default for Debian */ -static data_source_t data_source_fanspeed[1] = -{ - {"value", DS_TYPE_GAUGE, 0, NAN} -}; - -static data_set_t fanspeed_ds = -{ - "fanspeed", 1, data_source_fanspeed -}; - -static data_source_t data_source_temperature[1] = -{ - {"value", DS_TYPE_GAUGE, -273.15, NAN} -}; - -static data_set_t temperature_ds = -{ - "temperature", 1, data_source_temperature -}; - -static data_source_t data_source_voltage[1] = -{ - {"voltage", DS_TYPE_GAUGE, NAN, NAN} -}; - -static data_set_t voltage_ds = -{ - "voltage", 1, data_source_voltage -}; - static const char *config_keys[] = { "Host", @@ -78,7 +42,6 @@ static const char *config_keys[] = }; static int config_keys_num = 2; -#if MBMON_HAVE_READ static char *mbmon_host = NULL; static char *mbmon_port = NULL; @@ -125,7 +88,10 @@ static int mbmon_query_daemon (char *buffer, int buffer_size) int ai_return; memset (&ai_hints, '\0', sizeof (ai_hints)); - ai_hints.ai_flags = AI_ADDRCONFIG; + ai_hints.ai_flags = 0; +#ifdef AI_ADDRCONFIG + ai_hints.ai_flags |= AI_ADDRCONFIG; +#endif ai_hints.ai_family = PF_UNSPEC; ai_hints.ai_socktype = SOCK_STREAM; ai_hints.ai_protocol = IPPROTO_TCP; @@ -140,9 +106,12 @@ static int mbmon_query_daemon (char *buffer, int buffer_size) if ((ai_return = getaddrinfo (host, port, &ai_hints, &ai_list)) != 0) { - syslog (LOG_ERR, "mbmon: getaddrinfo (%s, %s): %s", + char errbuf[1024]; + ERROR ("mbmon: getaddrinfo (%s, %s): %s", host, port, - ai_return == EAI_SYSTEM ? strerror (errno) : gai_strerror (ai_return)); + (ai_return == EAI_SYSTEM) + ? sstrerror (errno, errbuf, sizeof (errbuf)) + : gai_strerror (ai_return)); return (-1); } @@ -152,16 +121,20 @@ static int mbmon_query_daemon (char *buffer, int buffer_size) /* create our socket descriptor */ if ((fd = socket (ai_ptr->ai_family, ai_ptr->ai_socktype, ai_ptr->ai_protocol)) < 0) { - syslog (LOG_ERR, "mbmon: socket: %s", - strerror (errno)); + char errbuf[1024]; + ERROR ("mbmon: socket: %s", + sstrerror (errno, errbuf, + sizeof (errbuf))); continue; } /* connect to the mbmon daemon */ if (connect (fd, (struct sockaddr *) ai_ptr->ai_addr, ai_ptr->ai_addrlen)) { - DBG ("mbmon: connect (%s, %s): %s", host, port, - strerror (errno)); + char errbuf[1024]; + INFO ("mbmon: connect (%s, %s): %s", host, port, + sstrerror (errno, errbuf, + sizeof (errbuf))); close (fd); fd = -1; continue; @@ -176,7 +149,7 @@ static int mbmon_query_daemon (char *buffer, int buffer_size) if (fd < 0) { - syslog (LOG_ERR, "mbmon: Could not connect to daemon."); + ERROR ("mbmon: Could not connect to daemon."); return (-1); } @@ -188,11 +161,14 @@ static int mbmon_query_daemon (char *buffer, int buffer_size) { if (status == -1) { + char errbuf[1024]; + if ((errno == EAGAIN) || (errno == EINTR)) continue; - syslog (LOG_ERR, "mbmon: Error reading from socket: %s", - strerror (errno)); + ERROR ("mbmon: Error reading from socket: %s", + sstrerror (errno, errbuf, + sizeof (errbuf))); close (fd); return (-1); } @@ -205,11 +181,11 @@ static int mbmon_query_daemon (char *buffer, int buffer_size) if (buffer_fill >= buffer_size) { buffer[buffer_size - 1] = '\0'; - syslog (LOG_WARNING, "mbmon: Message from mbmon has been truncated."); + WARNING ("mbmon: Message from mbmon has been truncated."); } else if (buffer_fill == 0) { - syslog (LOG_WARNING, "mbmon: Peer has unexpectedly shut down the socket. " + WARNING ("mbmon: Peer has unexpectedly shut down the socket. " "Buffer: `%s'", buffer); close (fd); return (-1); @@ -252,11 +228,12 @@ static void mbmon_submit (const char *type, const char *type_instance, vl.values = values; vl.values_len = 1; vl.time = time (NULL); - strcpy (vl.host, hostname_g); - strcpy (vl.plugin, "mbmon"); - strncpy (vl.type_instance, type_instance, sizeof (vl.type_instance)); + sstrncpy (vl.host, hostname_g, sizeof (vl.host)); + sstrncpy (vl.plugin, "mbmon", sizeof (vl.plugin)); + sstrncpy (vl.type, type, sizeof (vl.type)); + sstrncpy (vl.type_instance, type_instance, sizeof (vl.type_instance)); - plugin_dispatch_values (type, &vl); + plugin_dispatch_values (&vl); } /* void mbmon_submit */ /* Trim trailing whitespace from a string. */ @@ -264,7 +241,7 @@ static void trim_spaces (char *s) { size_t l; - for (l = strlen (s) - 1; (l > 0) && isspace (s[l]); l--) + for (l = strlen (s) - 1; (l > 0) && isspace ((int) s[l]); l--) s[l] = '\0'; } @@ -292,7 +269,7 @@ static int mbmon_read (void) value = strtod (t, &nextc); if ((*nextc != '\n') && (*nextc != '\0')) { - syslog (LOG_ERR, "mbmon: value for `%s' contains invalid characters: `%s'", s, t); + ERROR ("mbmon: value for `%s' contains invalid characters: `%s'", s, t); break; } @@ -326,18 +303,11 @@ static int mbmon_read (void) return (0); } /* void mbmon_read */ -#endif /* MBMON_HAVE_READ */ /* module_register Register collectd plugin. */ void module_register (void) { - plugin_register_data_set (&fanspeed_ds); - plugin_register_data_set (&temperature_ds); - plugin_register_data_set (&voltage_ds); - -#if MBMON_HAVE_READ plugin_register_config ("mbmon", mbmon_config, config_keys, config_keys_num); plugin_register_read ("mbmon", mbmon_read); -#endif /* MBMON_HAVE_READ */ -} +} /* void module_register */