+ if (hl_this->wait_left <= 0)
+ {
+ if (ping_host_add (pingobj, hl_this->host) == 0)
+ {
+ DEBUG ("ping plugin: Successfully added host %s", hl_this->host);
+ /* Remove the host from the linked list */
+ if (hl_prev != NULL)
+ hl_prev->next = hl_this->next;
+ else
+ hosts = hl_this->next;
+ free (hl_this->host);
+ free (hl_this);
+ hl_this = (hl_prev != NULL) ? hl_prev : hosts;
+ }
+ else
+ {
+ WARNING ("ping plugin: Failed adding host "
+ "`%s': %s", hl_this->host,
+ ping_get_error (pingobj));
+ hl_this->wait_left = hl_this->wait_time;
+ hl_this->wait_time *= 2;
+ if (hl_this->wait_time > 86400)
+ hl_this->wait_time = 86400;
+ }
+ }
+ else
+ {
+ hl_this->wait_left -= interval_g;
+ }
+
+ if (hl_this != NULL)
+ {
+ hl_prev = hl_this;
+ hl_this = hl_this->next;
+ }
+ }
+} /* void add_hosts */
+
+static int ping_init (void)
+{
+ if (pingobj == NULL)
+ return (-1);
+
+ if (hosts != NULL)
+ add_hosts ();
+
+ return (0);
+} /* int ping_init */
+
+static int ping_config (const char *key, const char *value)