X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Ftcpconns.c;h=fdf7ec1bf1ed867c5f08080c89e0e8a235557330;hb=ba21f4c6f3fc2eb729ce8dcb30d538031fd2d967;hp=74874ae36382080ebd90af4dcfdb0079965e3d10;hpb=054651e4798cc8b9170c17fc7d8884b1bb1d7a87;p=collectd.git diff --git a/src/tcpconns.c b/src/tcpconns.c index 74874ae3..fdf7ec1b 100644 --- a/src/tcpconns.c +++ b/src/tcpconns.c @@ -33,6 +33,19 @@ #elif HAVE_SYSCTLBYNAME # include # include + +/* Some includes needed for compiling on FreeBSD */ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_SOCKET_H +# include +#endif +#if HAVE_NET_IF_H +# include +#endif + # include # include # include @@ -336,12 +349,7 @@ static int conn_read_file (const char *file) fh = fopen (file, "r"); if (fh == NULL) - { - char errbuf[1024]; - ERROR ("tcpconns plugin: fopen (%s) failed: %s", - file, sstrerror (errno, errbuf, sizeof (errbuf))); return (-1); - } while (fgets (buffer, sizeof (buffer), fh) != NULL) { @@ -411,12 +419,25 @@ static int conn_init (void) static int conn_read (void) { + int errors_num = 0; + conn_reset_port_entry (); - conn_read_file ("/proc/net/tcp"); - conn_read_file ("/proc/net/tcp6"); + if (conn_read_file ("/proc/net/tcp") != 0) + errors_num++; + if (conn_read_file ("/proc/net/tcp6") != 0) + errors_num++; - conn_submit_all (); + if (errors_num < 2) + { + conn_submit_all (); + } + else + { + ERROR ("tcpconns plugin: Neither /proc/net/tcp nor /proc/net/tcp6 " + "coult be read."); + return (-1); + } return (0); } /* int conn_read */