X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fping.c;h=5f66aab341f552cadb2d786bde09784d2272b2be;hb=db961f476426f5dd3ca1663ffc094f0fc7f6f8a2;hp=978cb49046cc47dea5433a13ddb65ce9da41536b;hpb=f8e1e81d433c5b4e06792c2617abf0e6ec9e76d9;p=collectd.git diff --git a/src/ping.c b/src/ping.c index 978cb490..5f66aab3 100644 --- a/src/ping.c +++ b/src/ping.c @@ -28,7 +28,6 @@ #include "common.h" #include "plugin.h" -#include "configfile.h" #include "utils_complain.h" #include @@ -36,6 +35,10 @@ # include /* NI_MAXHOST */ #endif +#ifdef HAVE_SYS_CAPABILITY_H +# include +#endif + #include #ifndef NI_MAXHOST @@ -383,7 +386,7 @@ static int start_thread (void) /* {{{ */ if (ping_thread_loop != 0) { pthread_mutex_unlock (&ping_lock); - return (-1); + return (0); } ping_thread_loop = 1; @@ -448,10 +451,21 @@ static int ping_init (void) /* {{{ */ "Will use a timeout of %gs.", ping_timeout); } - if (start_thread () != 0) - return (-1); +#if defined(HAVE_SYS_CAPABILITY_H) && defined(CAP_NET_RAW) + if (check_capability (CAP_NET_RAW) != 0) + { + if (getuid () == 0) + WARNING ("ping plugin: Running collectd as root, but the CAP_NET_RAW " + "capability is missing. The plugin's read function will probably " + "fail. Is your init system dropping capabilities?"); + else + WARNING ("ping plugin: collectd doesn't have the CAP_NET_RAW capability. " + "If you don't want to run collectd as root, try running \"setcap " + "cap_net_raw=ep\" on the collectd binary."); + } +#endif - return (0); + return (start_thread ()); } /* }}} int ping_init */ static int config_set_string (const char *name, /* {{{ */