- if (strcasecmp ("Instance", child->key) == 0)
- status = cf_util_get_string (child, &db->instance);
- else if (strcasecmp ("Host", child->key) == 0)
- status = cf_util_get_string (child, &db->host);
- else if (db->url && strcasecmp ("User", child->key) == 0)
- status = cf_util_get_string (child, &db->user);
- else if (db->url && strcasecmp ("Password", child->key) == 0)
- status = cf_util_get_string (child, &db->pass);
- else if (strcasecmp ("Digest", child->key) == 0)
- status = cf_util_get_boolean (child, &db->digest);
- else if (db->url && strcasecmp ("VerifyPeer", child->key) == 0)
- status = cf_util_get_boolean (child, &db->verify_peer);
- else if (db->url && strcasecmp ("VerifyHost", child->key) == 0)
- status = cf_util_get_boolean (child, &db->verify_host);
- else if (db->url && strcasecmp ("CACert", child->key) == 0)
- status = cf_util_get_string (child, &db->cacert);
- else if (db->url && strcasecmp ("Header", child->key) == 0)
- status = cj_config_append_string ("Header", &db->headers, child);
- else if (db->url && strcasecmp ("Post", child->key) == 0)
- status = cf_util_get_string (child, &db->post_body);
- else if (strcasecmp ("Key", child->key) == 0)
- status = cj_config_add_key (db, child);
- else if (strcasecmp ("Interval", child->key) == 0)
- status = cf_util_get_cdtime(child, &db->interval);
- else if (strcasecmp ("Timeout", child->key) == 0)
- status = cf_util_get_int (child, &db->timeout);
- else
- {
- WARNING ("curl_json plugin: Option `%s' not allowed here.", child->key);
+ if (strcasecmp("Instance", child->key) == 0)
+ status = cf_util_get_string(child, &db->instance);
+ else if (strcasecmp("Plugin", child->key) == 0)
+ status = cf_util_get_string(child, &db->plugin_name);
+ else if (strcasecmp("Host", child->key) == 0)
+ status = cf_util_get_string(child, &db->host);
+ else if (db->url && strcasecmp("User", child->key) == 0)
+ status = cf_util_get_string(child, &db->user);
+ else if (db->url && strcasecmp("Password", child->key) == 0)
+ status = cf_util_get_string(child, &db->pass);
+ else if (strcasecmp("Digest", child->key) == 0)
+ status = cf_util_get_boolean(child, &db->digest);
+ else if (db->url && strcasecmp("VerifyPeer", child->key) == 0)
+ status = cf_util_get_boolean(child, &db->verify_peer);
+ else if (db->url && strcasecmp("VerifyHost", child->key) == 0)
+ status = cf_util_get_boolean(child, &db->verify_host);
+ else if (db->url && strcasecmp("CACert", child->key) == 0)
+ status = cf_util_get_string(child, &db->cacert);
+ else if (db->url && strcasecmp("Header", child->key) == 0)
+ status = cj_config_append_string("Header", &db->headers, child);
+ else if (db->url && strcasecmp("Post", child->key) == 0)
+ status = cf_util_get_string(child, &db->post_body);
+ else if (strcasecmp("Key", child->key) == 0)
+ status = cj_config_add_key(db, child);
+ else if (strcasecmp("Interval", child->key) == 0)
+ status = cf_util_get_cdtime(child, &interval);
+ else if (strcasecmp("Timeout", child->key) == 0)
+ status = cf_util_get_int(child, &db->timeout);
+ else if (strcasecmp("Statistics", child->key) == 0) {
+ db->stats = curl_stats_from_config(child);
+ if (db->stats == NULL)
+ status = -1;
+ } else if (db->url && strcasecmp("AddressFamily", child->key) == 0) {
+ char *af = NULL;
+ status = cf_util_get_string(child, &af);
+ if (status != 0 || af == NULL) {
+ WARNING("curl_json plugin: Cannot parse value of `%s' for URL `%s'.",
+ child->key, db->url);
+ } else if (strcasecmp("any", af) == 0) {
+ db->address_family = CURL_IPRESOLVE_WHATEVER;
+ } else if (strcasecmp("ipv4", af) == 0) {
+ db->address_family = CURL_IPRESOLVE_V4;
+ } else if (strcasecmp("ipv6", af) == 0) {
+ /* If curl supports ipv6, use it. If not, log a warning and
+ * fall back to default - don't set status to non-zero.
+ */
+ curl_version_info_data *curl_info = curl_version_info(CURLVERSION_NOW);
+ if (curl_info->features & CURL_VERSION_IPV6)
+ db->address_family = CURL_IPRESOLVE_V6;
+ else
+ WARNING("curl_json plugin: IPv6 not supported by this libCURL. "
+ "Using fallback `any'.");
+ } else {
+ WARNING("curl_json plugin: Unsupported value of `%s' for URL `%s'.",
+ child->key, db->url);
+ status = -1;
+ }
+ } else {
+ WARNING("curl_json plugin: Option `%s' not allowed here.", child->key);