- ssnprintf(dev_name, sizeof(dev_name), "port.%d", port_num);
- struct rte_eth_xstats *xstats = (&g_configuration->xstats);
- xstats += count; /* pointer arithmetic to jump to each stats struct */
- for (int j = 0; j < len; j++) {
- value_t dpdkstat_values[1];
- value_list_t dpdkstat_vl = VALUE_LIST_INIT;
- char *type_end;
-
- dpdkstat_values[0].derive = (derive_t) xstats[j].value;
- dpdkstat_vl.values = dpdkstat_values;
- dpdkstat_vl.values_len = 1; /* Submit stats one at a time */
- dpdkstat_vl.time = time;
- sstrncpy (dpdkstat_vl.host, hostname_g, sizeof (dpdkstat_vl.host));
- sstrncpy (dpdkstat_vl.plugin, "dpdkstat", sizeof (dpdkstat_vl.plugin));
- sstrncpy (dpdkstat_vl.plugin_instance, dev_name,
- sizeof (dpdkstat_vl.plugin_instance));
-
- type_end = strrchr(xstats[j].name, '_');
-
- if ((type_end != NULL) &&
- (strncmp(xstats[j].name, "rx_", strlen("rx_")) == 0)) {
- if (strncmp(type_end, "_errors", strlen("_errors")) == 0) {
- sstrncpy (dpdkstat_vl.type, "if_rx_errors",
- sizeof(dpdkstat_vl.type));
- } else if (strncmp(type_end, "_dropped", strlen("_dropped")) == 0) {
- sstrncpy (dpdkstat_vl.type, "if_rx_dropped",
- sizeof(dpdkstat_vl.type));
- } else if (strncmp(type_end, "_bytes", strlen("_bytes")) == 0) {
- sstrncpy (dpdkstat_vl.type, "if_rx_octets",
- sizeof(dpdkstat_vl.type));
- } else if (strncmp(type_end, "_packets", strlen("_packets")) == 0) {
- sstrncpy (dpdkstat_vl.type, "if_rx_packets",
- sizeof(dpdkstat_vl.type));
- } else if (strncmp(type_end, "_placement", strlen("_placement")) == 0) {
- sstrncpy (dpdkstat_vl.type, "if_rx_errors",
- sizeof(dpdkstat_vl.type));
- } else if (strncmp(type_end, "_buff", strlen("_buff")) == 0) {
- sstrncpy (dpdkstat_vl.type, "if_rx_errors",
- sizeof(dpdkstat_vl.type));
- } else {
- /* Does not fit obvious type: use a more generic one */
- sstrncpy (dpdkstat_vl.type, "derive",
- sizeof(dpdkstat_vl.type));
- }
-
- } else if ((type_end != NULL) &&
- (strncmp(xstats[j].name, "tx_", strlen("tx_"))) == 0) {
- if (strncmp(type_end, "_errors", strlen("_errors")) == 0) {
- sstrncpy (dpdkstat_vl.type, "if_tx_errors",
- sizeof(dpdkstat_vl.type));
- } else if (strncmp(type_end, "_dropped", strlen("_dropped")) == 0) {
- sstrncpy (dpdkstat_vl.type, "if_tx_dropped",
- sizeof(dpdkstat_vl.type));
- } else if (strncmp(type_end, "_bytes", strlen("_bytes")) == 0) {
- sstrncpy (dpdkstat_vl.type, "if_tx_octets",
- sizeof(dpdkstat_vl.type));
- } else if (strncmp(type_end, "_packets", strlen("_packets")) == 0) {
- sstrncpy (dpdkstat_vl.type, "if_tx_packets",
- sizeof(dpdkstat_vl.type));
- } else {
- /* Does not fit obvious type: use a more generic one */
- sstrncpy (dpdkstat_vl.type, "derive",
- sizeof(dpdkstat_vl.type));
- }
- } else if ((type_end != NULL) &&
- (strncmp(xstats[j].name, "flow_", strlen("flow_"))) == 0) {
-
- if (strncmp(type_end, "_filters", strlen("_filters")) == 0) {
- sstrncpy (dpdkstat_vl.type, "operations",
- sizeof(dpdkstat_vl.type));
- } else if (strncmp(type_end, "_errors", strlen("_errors")) == 0) {
- sstrncpy (dpdkstat_vl.type, "errors",
- sizeof(dpdkstat_vl.type));
- } else if (strncmp(type_end, "_filters", strlen("_filters")) == 0) {
- sstrncpy (dpdkstat_vl.type, "filter_result",
- sizeof(dpdkstat_vl.type));
- }
- } else if ((type_end != NULL) &&
- (strncmp(xstats[j].name, "mac_", strlen("mac_"))) == 0) {
- if (strncmp(type_end, "_errors", strlen("_errors")) == 0) {
- sstrncpy (dpdkstat_vl.type, "errors",
- sizeof(dpdkstat_vl.type));
- }
- } else {
- /* Does not fit obvious type, or strrchr error:
- * use a more generic type */
- sstrncpy (dpdkstat_vl.type, "derive",
- sizeof(dpdkstat_vl.type));
- }
-
- sstrncpy (dpdkstat_vl.type_instance, xstats[j].name,
- sizeof (dpdkstat_vl.type_instance));
- plugin_dispatch_values (&dpdkstat_vl);
- }
- count += len;