Code

Moved `exit_usage' from `collectd.c' to `configfile.c' and renamed it to `cf_callback...
[collectd.git] / src / ping.c
index d418232f1498ef5986e53021c6952f1d19cf4a38..bdb8de9652b3a1f8551ba5850cb987b029a7f160 100644 (file)
  *   Florian octo Forster <octo at verplant.org>
  **/
 
-#include "ping.h"
+#include "collectd.h"
+#include "common.h"
+#include "plugin.h"
+#include "configfile.h"
 
-#if COLLECT_PING
 #define MODULE_NAME "ping"
 
-#include "plugin.h"
-#include "common.h"
-
 #include <netinet/in.h>
 #include "libping/ping.h"
 
+#define MAX_PINGHOSTS 32
+
 extern char *pinghosts[MAX_PINGHOSTS];
 extern int   num_pinghosts;
 static int   pingerrors[MAX_PINGHOSTS];
@@ -44,7 +45,14 @@ static char *ds_def[] =
 };
 static int ds_num = 1;
 
-void ping_init (void)
+static char *config_keys[] =
+{
+       "Host",
+       NULL
+};
+static int config_keys_num = 1;
+
+static void ping_init (void)
 {
        int i;
 
@@ -54,7 +62,29 @@ void ping_init (void)
        return;
 }
 
-void ping_write (char *host, char *inst, char *val)
+static int ping_config (char *key, char *value)
+{
+       if (strcasecmp (key, "host"))
+       {
+               return (-1);
+       }
+       else if (num_pinghosts >= MAX_PINGHOSTS)
+       {
+               return (1);
+       }
+       else if ((pinghosts[num_pinghosts] = strdup (value)) == NULL)
+       {
+               return (2);
+       }
+       else
+       {
+               pingerrors[num_pinghosts] = 0;
+               num_pinghosts++;
+               return (0);
+       }
+}
+
+static void ping_write (char *host, char *inst, char *val)
 {
        char file[512];
        int status;
@@ -69,7 +99,7 @@ void ping_write (char *host, char *inst, char *val)
 }
 
 #define BUFSIZE 256
-void ping_submit (int ping_time, char *host)
+static void ping_submit (int ping_time, char *host)
 {
        char buf[BUFSIZE];
 
@@ -80,7 +110,7 @@ void ping_submit (int ping_time, char *host)
 }
 #undef BUFSIZE
 
-void ping_read (void)
+static void ping_read (void)
 {
        int ping;
        int i;
@@ -129,7 +159,7 @@ void ping_read (void)
 void module_register (void)
 {
        plugin_register (MODULE_NAME, ping_init, ping_read, ping_write);
+       cf_register (MODULE_NAME, ping_config, config_keys, config_keys_num);
 }
 
 #undef MODULE_NAME
-#endif /* COLLECT_PING */