#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));
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);
}
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 */