X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fconntrack.c;h=33236c45975c4d9c5c519e4defbfcd029c0b0821;hb=1e74bb66c61d965c4aa261adfaf058f3356cff09;hp=e70ff5f1834b5deecc53bfe7f0419176ce564eeb;hpb=a2bf02b4f5bf4a22395b57bba6715dada3859612;p=collectd.git diff --git a/src/conntrack.c b/src/conntrack.c index e70ff5f1..33236c45 100644 --- a/src/conntrack.c +++ b/src/conntrack.c @@ -31,14 +31,11 @@ #define CONNTRACK_FILE "/proc/sys/net/netfilter/nf_conntrack_count" -static void conntrack_submit (double conntrack) +static void conntrack_submit (value_t conntrack) { - value_t values[1]; value_list_t vl = VALUE_LIST_INIT; - values[0].gauge = conntrack; - - vl.values = values; + vl.values = &conntrack; vl.values_len = 1; sstrncpy (vl.host, hostname_g, sizeof (vl.host)); sstrncpy (vl.plugin, "conntrack", sizeof (vl.plugin)); @@ -49,14 +46,16 @@ static void conntrack_submit (double conntrack) static int conntrack_read (void) { - double conntrack; + value_t conntrack; FILE *fh; char buffer[64]; + size_t buffer_len; fh = fopen (CONNTRACK_FILE, "r"); if (fh == NULL) return (-1); + memset (buffer, 0, sizeof (buffer)); if (fgets (buffer, sizeof (buffer), fh) == NULL) { fclose (fh); @@ -64,10 +63,18 @@ static int conntrack_read (void) } fclose (fh); - conntrack = atof (buffer); + /* strip trailing newline. */ + buffer_len = strlen (buffer); + while ((buffer_len > 0) && isspace ((int) buffer[buffer_len - 1])) + { + buffer[buffer_len - 1] = 0; + buffer_len--; + } + + if (parse_value (buffer, &conntrack, DS_TYPE_GAUGE) != 0) + return (-1); - if (conntrack > 0.0) - conntrack_submit (conntrack); + conntrack_submit (conntrack); return (0); } /* static int conntrack_read */