+ continue;
+ } else if (strcasecmp(c->key, "HostnameMetadataNS") == 0) {
+ if (cf_util_get_string(c, &hm_ns) != 0) {
+ ERROR(PLUGIN_NAME
+ " plugin: Could not get 'HostnameMetadataNS' parameter");
+ return -1;
+ }
+
+ continue;
+ } else if (strcasecmp(c->key, "HostnameMetadataXPath") == 0) {
+ if (cf_util_get_string(c, &hm_xpath) != 0) {
+ ERROR(PLUGIN_NAME
+ " plugin: Could not get 'HostnameMetadataXPath' parameter");
+ return -1;
+ }
+
+ continue;
+ } else if (strcasecmp(c->key, "HostnameFormat") == 0) {
+ /* this option can take multiple strings arguments in one config line*/
+ if (check_config_multiple_string_entry(c) != 0) {
+ ERROR(PLUGIN_NAME " plugin: Could not get 'HostnameFormat' parameter");
+ return -1;
+ }
+
+ const int params_num = c->values_num;
+ for (int i = 0; i < params_num; ++i) {
+ const char *param_name = c->values[i].value.string;
+ if (strcasecmp(param_name, "hostname") == 0)
+ hostname_format[i] = hf_hostname;
+ else if (strcasecmp(param_name, "name") == 0)
+ hostname_format[i] = hf_name;
+ else if (strcasecmp(param_name, "uuid") == 0)
+ hostname_format[i] = hf_uuid;
+ else if (strcasecmp(param_name, "metadata") == 0)
+ hostname_format[i] = hf_metadata;
+ else {
+ ERROR(PLUGIN_NAME " plugin: unknown HostnameFormat field: %s",
+ param_name);
+ return -1;
+ }
+ }
+
+ for (int i = params_num; i < HF_MAX_FIELDS; ++i)
+ hostname_format[i] = hf_none;
+
+ continue;
+ } else if (strcasecmp(c->key, "PluginInstanceFormat") == 0) {
+ /* this option can handle list of string parameters in one line*/
+ if (check_config_multiple_string_entry(c) != 0) {
+ ERROR(PLUGIN_NAME
+ " plugin: Could not get 'PluginInstanceFormat' parameter");
+ return -1;
+ }
+
+ const int params_num = c->values_num;
+ for (int i = 0; i < params_num; ++i) {
+ const char *param_name = c->values[i].value.string;
+ if (strcasecmp(param_name, "none") == 0) {
+ plugin_instance_format[i] = plginst_none;
+ break;
+ } else if (strcasecmp(param_name, "name") == 0)
+ plugin_instance_format[i] = plginst_name;
+ else if (strcasecmp(param_name, "uuid") == 0)
+ plugin_instance_format[i] = plginst_uuid;
+ else if (strcasecmp(param_name, "metadata") == 0)
+ plugin_instance_format[i] = plginst_metadata;
+ else {
+ ERROR(PLUGIN_NAME " plugin: unknown PluginInstanceFormat field: %s",
+ param_name);
+
+ return -1;
+ }
+ }
+
+ for (int i = params_num; i < PLGINST_MAX_FIELDS; ++i)
+ plugin_instance_format[i] = plginst_none;
+
+ continue;
+ } else if (strcasecmp(c->key, "InterfaceFormat") == 0) {
+ char *format = NULL;
+ if (cf_util_get_string(c, &format) != 0 || format == NULL) {
+ ERROR(PLUGIN_NAME " plugin: could not get 'InterfaceFormat' parameter");
+ return -1;
+ }
+
+ if (strcasecmp(format, "name") == 0)
+ interface_format = if_name;
+ else if (strcasecmp(format, "address") == 0)
+ interface_format = if_address;
+ else if (strcasecmp(format, "number") == 0)
+ interface_format = if_number;
+ else {
+ ERROR(PLUGIN_NAME " plugin: unknown InterfaceFormat: %s", format);
+ sfree(format);
+ return -1;
+ }
+
+ sfree(format);
+ continue;
+ } else if (strcasecmp(c->key, "Instances") == 0) {
+ if (cf_util_get_int(c, &nr_instances) != 0) {
+ ERROR(PLUGIN_NAME " plugin: could not get 'Instances' parameter");
+ return -1;
+ }
+
+ if (nr_instances <= 0) {
+ ERROR(PLUGIN_NAME " plugin: Instances <= 0 makes no sense.");
+ return -1;
+ }
+ if (nr_instances > NR_INSTANCES_MAX) {
+ ERROR(PLUGIN_NAME " plugin: Instances=%i > NR_INSTANCES_MAX=%i"
+ " use a lower setting or recompile the plugin.",
+ nr_instances, NR_INSTANCES_MAX);
+ return -1;
+ }
+
+ DEBUG(PLUGIN_NAME " plugin: configured %i instances", nr_instances);
+ continue;
+ } else if (strcasecmp(c->key, "ExtraStats") == 0) {
+ char *ex_str = NULL;
+
+ if (cf_util_get_string(c, &ex_str) != 0 || ex_str == NULL) {
+ ERROR(PLUGIN_NAME " plugin: could not get 'ExtraStats' parameter");
+ return -1;
+ }