Ruben Kerkhof [Thu, 11 Aug 2016 15:44:42 +0000 (17:44 +0200)]
md: fix deprecation warning with latest glibc
md.c: In function ‘md_process’:
md.c:120:3: warning: ‘__makedev_from_sys_types’ is deprecated:
In the GNU C Library, `makedev' is defined by <sys/sysmacros.h>.
For historical compatibility, it is currently defined by
<sys/types.h> as well, but we plan to remove this soon.
To use `makedev', include <sys/sysmacros.h> directly.
If you did not intend to use a system-defined macro `makedev',
you should #undef it after including <sys/types.h>.
[-Wdeprecated-declarations]
if (st.st_rdev != makedev (MD_MAJOR, minor))
^~
In file included from /usr/include/features.h:397:0,
from /usr/include/bits/libc-header-start.h:33,
from /usr/include/stdio.h:28,
from ./daemon/collectd.h:34,
from md.c:22:
David Gibson [Wed, 10 Aug 2016 10:07:14 +0000 (20:07 +1000)]
Fix conceptual buglet in default_callback
The 'DERIVE' path in default_callback() increments the 'counter' field of
value instead of the 'derive' field. Since those fields have the same
type and offset within the value union this will still work fine, but
AFAICT it's conceptually incorrect. This corrects it.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Florian Forster <octo@collectd.org>
Marc Fournier [Tue, 17 May 2016 05:36:34 +0000 (07:36 +0200)]
check_capability: explicitly target recent linux implementations
There are several, incompatible, capabilities implementations, all
exposed through `<sys/capability.h>`. Currently only Linux's V3
function and capability sets are supported.
This patch guards against using Linux-specific functions & capabilities
on other implementations, while structring the code to allow adding
support for them.
Marc Fournier [Tue, 26 Jan 2016 20:46:59 +0000 (21:46 +0100)]
check and warn about capabilities misconfiguration
Add WARNING() statements to a bunch of plugins which require special
privileges to work properly. They would be emitted once at startup time,
if running as root with privileges dropped, or if running as a normal
users without the needed capabilities explicitly set.
Ruben Kerkhof [Tue, 9 Aug 2016 11:57:36 +0000 (13:57 +0200)]
collectdctl.c: fix two compiler warnings
collectdctl.c: In function ‘flush’:
collectdctl.c:315:21: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
for (int i = 0; i < plugins_num; ++i) {
^
collectdctl.c:323:25: warning: comparison between signed and unsigned
integer expressions [-Wsign-compare]
for (int j = 0; j < identifiers_num; ++j) {
^
Ruben Kerkhof [Tue, 9 Aug 2016 11:51:46 +0000 (13:51 +0200)]
gps plugin: fix compiler warning
gps.c:242:12: warning: function declaration isn’t a prototype
[-Wstrict-prototypes]
static int cgps_read ()
^~~~~~~~~
gps.c: In function ‘cgps_read’:
gps.c:242:12: warning: old-style function definition
[-Wold-style-definition]
Ruben Kerkhof [Tue, 9 Aug 2016 11:51:02 +0000 (13:51 +0200)]
utils_db_query.c: fix compiler warning
utils_db_query.c: In function ‘udb_result_submit’:
utils_db_query.c:259:11: warning: declaration of ‘status’ shadows a
previous local [-Wshadow]
int status = strjoin (vl.type_instance, sizeof
(vl.type_instance),
^~~~~~
Marc Fournier [Sat, 13 Feb 2016 10:51:23 +0000 (11:51 +0100)]
daemon/common.[ch]: add set_sock_opts() function
Enables the TCP keepalive mechanism on a given socket.
This would typically be used on sockets opened by write plugins
which submit data to a remote server.
Up to now, collectd fails to notice when a remote server dies without
properly closing the network connection, leading to more and more memory
getting allocated as the values pile up in the write queue.
The keepalive values are proportional to the configured `Interval`. The
first probe is emitted `10 x Interval` seconds after the last TCP packet
was seen, and then once per `Interval` until the threshold defined by
the OS is reached.
Ruben Kerkhof [Mon, 8 Aug 2016 11:12:08 +0000 (13:12 +0200)]
Include collectd.h before testing.h
testing.h includes system headers that set #define _FILE_OFFSET_BITS 32,
if not already defined. We define them in config.h, which is included by collectd.h
Marc Fournier [Mon, 8 Aug 2016 10:27:02 +0000 (12:27 +0200)]
collectd.spec: specify PYTHON_CONFIG on EL5
Since 4ad7200, python-config becomes mandatory. We have to explicitly
specify it's path for EL5 as we're using a non-default python
installation on this distro.
Ruben Kerkhof [Sun, 7 Aug 2016 11:10:14 +0000 (13:10 +0200)]
python: use LIBPYTHON_LIBS too
python-config --ldflags returns -lpython (yeah I know)
autoconf prepends ldflags in its configuration tests
so conftest.c will never look for symbols in -lpython.
python-config --libs also returns -lpython, but this is appended.
Ruben Kerkhof [Sun, 7 Aug 2016 12:13:11 +0000 (14:13 +0200)]
perl plugin: fix build on RHEL5
perl.c: In function 'init_pi':
perl.c:2304: warning: implicit declaration of function
'pthread_mutexattr_settype'
perl.c:2304: error: 'PTHREAD_MUTEX_RECURSIVE' undeclared (first use in
this function)
perl.c:2304: error: (Each undeclared identifier is reported only once
perl.c:2304: error: for each function it appears in.)
make[3]: *** [perl_la-perl.lo] Error 1
Ruben Kerkhof [Sat, 6 Aug 2016 06:31:04 +0000 (08:31 +0200)]
snmp : don't send values for empty type_instance
If you have multiple Instance values that are empty string,
they all end up in the same rrd file, resulting in:
rrdc_update (/collectd/rrd/vc3/snmp/if_errors.rrd, [1352632188:0:0], 1) failed with status -1
Ruben Kerkhof [Sun, 7 Aug 2016 09:59:31 +0000 (11:59 +0200)]
perl plugin: needs _LARGEFILE64_SOURCE
libperl compiled with LARGE_FILES support defines its own Off_t
as off64_t, even if off_t is 64-bit wide on 64bit platforms.
off64_t is only exposed in the libc headers if _LARGEFILE64_SOURCE
is defined.
In file included from perl.c:47:0:
/usr/lib/x86_64-linux-gnu/perl/5.20/CORE/perl.h:2398:22: error: unknown
type name 'off64_t'
# define Off_t off64_t
^
/usr/lib/x86_64-linux-gnu/perl/5.20/CORE/perlio.h:277:15: note: in
expansion of macro 'Off_t'
PERL_EXPORT_C Off_t PerlIO_tell(PerlIO *);
Florian Forster [Sat, 6 Aug 2016 16:22:56 +0000 (18:22 +0200)]
ping plugin: Let start_thread() return gracefully when thread is already running.
Signaling an error caused the init function to signal an error, causing
the read callback to be unregistered on systems where init is called
more than once.