static int gr_format_name_tagged(char *ret, int ret_len, value_list_t const *vl, char const *ds_name, char const *prefix, char const *postfix, char const escape_char, unsigned int flags) { char n_host[DATA_MAX_NAME_LEN]; char n_plugin[DATA_MAX_NAME_LEN]; char n_plugin_instance[DATA_MAX_NAME_LEN]; char n_type[DATA_MAX_NAME_LEN]; char n_type_instance[DATA_MAX_NAME_LEN]; char tmp_plugin[DATA_MAX_NAME_LEN + 8]; char tmp_plugin_instance[DATA_MAX_NAME_LEN + 17]; char tmp_type[DATA_MAX_NAME_LEN + 6]; char tmp_type_instance[DATA_MAX_NAME_LEN + 15]; char tmp_metric[3 * DATA_MAX_NAME_LEN + 2]; char tmp_ds_name[DATA_MAX_NAME_LEN + 9]; if (prefix == NULL) prefix = ""; if (postfix == NULL) postfix = ""; gr_copy_escape_part(n_host, vl->host, sizeof(n_host), escape_char, 1); gr_copy_escape_part(n_plugin, vl->plugin, sizeof(n_plugin), escape_char, 1); gr_copy_escape_part(n_plugin_instance, vl->plugin_instance, sizeof(n_plugin_instance), escape_char, 1); gr_copy_escape_part(n_type, vl->type, sizeof(n_type), escape_char, 1); gr_copy_escape_part(n_type_instance, vl->type_instance, sizeof(n_type_instance), escape_char, 1); snprintf(tmp_plugin, sizeof(tmp_plugin), ";plugin=%s", n_plugin); if (n_plugin_instance[0] != '\0') snprintf(tmp_plugin_instance, sizeof(tmp_plugin_instance), ";plugin_instance=%s", n_plugin_instance); else tmp_plugin_instance[0] = '\0'; if (!(flags & GRAPHITE_DROP_DUPE_FIELDS) || strcmp(n_plugin, n_type) != 0) snprintf(tmp_type, sizeof(tmp_type), ";type=%s", n_type); else tmp_type[0] = '\0'; if (n_type_instance[0] != '\0') { if (!(flags & GRAPHITE_DROP_DUPE_FIELDS) || strcmp(n_plugin_instance, n_type_instance) != 0) snprintf(tmp_type_instance, sizeof(tmp_type_instance), ";type_instance=%s", n_type_instance); else tmp_type_instance[0] = '\0'; } else tmp_type_instance[0] = '\0'; /* Assert always_append_ds -> ds_name */ assert(!(flags & GRAPHITE_ALWAYS_APPEND_DS) || (ds_name != NULL)); if (ds_name != NULL) { snprintf(tmp_ds_name, sizeof(tmp_ds_name), ";ds_name=%s", ds_name); if ((flags & GRAPHITE_DROP_DUPE_FIELDS) && strcmp(n_plugin, n_type) == 0) snprintf(tmp_metric, sizeof(tmp_metric), "%s.%s", n_plugin, ds_name); else snprintf(tmp_metric, sizeof(tmp_metric), "%s.%s.%s", n_plugin, n_type, ds_name); } else { tmp_ds_name[0] = '\0'; if ((flags & GRAPHITE_DROP_DUPE_FIELDS) && strcmp(n_plugin, n_type) == 0) snprintf(tmp_metric, sizeof(tmp_metric), "%s", n_plugin); else snprintf(tmp_metric, sizeof(tmp_metric), "%s.%s", n_plugin, n_type); } snprintf(ret, ret_len, "%s%s%s;host=%s%s%s%s%s%s", prefix, tmp_metric, postfix, n_host, tmp_plugin, tmp_plugin_instance, tmp_type, tmp_type_instance, tmp_ds_name); return 0; }
static int gr_format_name (char *ret, int ret_len, value_list_t const *vl, char const *ds_name, char const *prefix, char const *postfix, char const escape_char, unsigned int flags) { char n_host[DATA_MAX_NAME_LEN]; char n_plugin[DATA_MAX_NAME_LEN]; char n_plugin_instance[DATA_MAX_NAME_LEN]; char n_type[DATA_MAX_NAME_LEN]; char n_type_instance[DATA_MAX_NAME_LEN]; char tmp_plugin[2 * DATA_MAX_NAME_LEN + 1]; char tmp_type[2 * DATA_MAX_NAME_LEN + 1]; if (prefix == NULL) prefix = ""; if (postfix == NULL) postfix = ""; gr_copy_escape_part (n_host, vl->host, sizeof (n_host), escape_char); gr_copy_escape_part (n_plugin, vl->plugin, sizeof (n_plugin), escape_char); gr_copy_escape_part (n_plugin_instance, vl->plugin_instance, sizeof (n_plugin_instance), escape_char); gr_copy_escape_part (n_type, vl->type, sizeof (n_type), escape_char); gr_copy_escape_part (n_type_instance, vl->type_instance, sizeof (n_type_instance), escape_char); if (n_plugin_instance[0] != '\0') ssnprintf (tmp_plugin, sizeof (tmp_plugin), "%s%c%s", n_plugin, (flags & GRAPHITE_SEPARATE_INSTANCES) ? '.' : '-', n_plugin_instance); else sstrncpy (tmp_plugin, n_plugin, sizeof (tmp_plugin)); if (n_type_instance[0] != '\0') ssnprintf (tmp_type, sizeof (tmp_type), "%s%c%s", n_type, (flags & GRAPHITE_SEPARATE_INSTANCES) ? '.' : '-', n_type_instance); else sstrncpy (tmp_type, n_type, sizeof (tmp_type)); /* Assert always_append_ds -> ds_name */ assert (!(flags & GRAPHITE_ALWAYS_APPEND_DS) || (ds_name != NULL)); if (ds_name != NULL) ssnprintf (ret, ret_len, "%s%s%s.%s.%s.%s", prefix, n_host, postfix, tmp_plugin, tmp_type, ds_name); else ssnprintf (ret, ret_len, "%s%s%s.%s.%s", prefix, n_host, postfix, tmp_plugin, tmp_type); return (0); }
static int gr_format_name (char *ret, int ret_len, value_list_t const *vl, char const *ds_name, char const *prefix, char const *postfix, char const escape_char, unsigned int flags) { char n_host[DATA_MAX_NAME_LEN]; char n_plugin[DATA_MAX_NAME_LEN]; char n_plugin_instance[DATA_MAX_NAME_LEN]; char n_type[DATA_MAX_NAME_LEN]; char n_type_instance[DATA_MAX_NAME_LEN]; char tmp_plugin[2 * DATA_MAX_NAME_LEN + 1]; char tmp_type[2 * DATA_MAX_NAME_LEN + 1]; if (prefix == NULL) prefix = ""; if (postfix == NULL) postfix = ""; gr_copy_escape_part (n_host, vl->host, sizeof (n_host), escape_char); gr_copy_escape_part (n_plugin, vl->plugin, sizeof (n_plugin), escape_char); gr_copy_escape_part (n_plugin_instance, vl->plugin_instance, sizeof (n_plugin_instance), escape_char); gr_copy_escape_part (n_type, vl->type, sizeof (n_type), escape_char); gr_copy_escape_part (n_type_instance, vl->type_instance, sizeof (n_type_instance), escape_char); if (n_plugin_instance[0] != '\0') ssnprintf (tmp_plugin, sizeof (tmp_plugin), "%s%c%s", n_plugin, (flags & GRAPHITE_SEPARATE_INSTANCES) ? '.' : '-', n_plugin_instance); else sstrncpy (tmp_plugin, n_plugin, sizeof (tmp_plugin)); if (n_type_instance[0] != '\0') ssnprintf (tmp_type, sizeof (tmp_type), "%s%c%s", n_type, (flags & GRAPHITE_SEPARATE_INSTANCES) ? '.' : '-', n_type_instance); else sstrncpy (tmp_type, n_type, sizeof (tmp_type)); char *username = NULL; if (meta_data_get_string (vl->meta, "network:username", &username) != 0) { WARNING ("No username provided with this packet? Can't write to graphite correctly"); } /* Assert always_append_ds -> ds_name */ assert (!(flags & GRAPHITE_ALWAYS_APPEND_DS) || (ds_name != NULL)); if (ds_name != NULL) ssnprintf (ret, ret_len, "%s%s.%s%s.%s.%s.%s", prefix, username, n_host, postfix, tmp_plugin, tmp_type, ds_name); else ssnprintf (ret, ret_len, "%s%s.%s%s.%s.%s", prefix, username, n_host, postfix, tmp_plugin, tmp_type); if (username != NULL) { sfree(username); } return (0); }