indent with contrib/format.sh
[collectd.git] / src / ovs_stats.c
index 24b9128..1bf8e4e 100644 (file)
@@ -63,6 +63,7 @@ typedef enum iface_counter {
   tx_512_to_1023_packets,
   tx_1024_to_1522_packets,
   tx_1523_to_max_packets,
+  rx_multicast_packets,
   tx_multicast_packets,
   rx_broadcast_packets,
   tx_broadcast_packets,
@@ -70,6 +71,21 @@ typedef enum iface_counter {
   rx_oversize_errors,
   rx_fragmented_errors,
   rx_jabber_errors,
+  rx_error_bytes,
+  rx_l3_l4_xsum_error,
+  rx_management_dropped,
+  rx_mbuf_allocation_errors,
+  rx_total_bytes,
+  rx_total_missed_packets,
+  rx_undersize_errors,
+  rx_management_packets,
+  tx_management_packets,
+  rx_good_bytes,
+  tx_good_bytes,
+  rx_good_packets,
+  tx_good_packets,
+  rx_total_packets,
+  tx_total_packets,
   __iface_counter_max
 } iface_counter;
 
@@ -129,6 +145,7 @@ static const char *const iface_counter_table[IFACE_COUNTER_COUNT] = {
     cnt_str(tx_512_to_1023_packets),
     cnt_str(tx_1024_to_1522_packets),
     cnt_str(tx_1523_to_max_packets),
+    cnt_str(rx_multicast_packets),
     cnt_str(tx_multicast_packets),
     cnt_str(rx_broadcast_packets),
     cnt_str(tx_broadcast_packets),
@@ -136,6 +153,21 @@ static const char *const iface_counter_table[IFACE_COUNTER_COUNT] = {
     cnt_str(rx_oversize_errors),
     cnt_str(rx_fragmented_errors),
     cnt_str(rx_jabber_errors),
+    cnt_str(rx_error_bytes),
+    cnt_str(rx_l3_l4_xsum_error),
+    cnt_str(rx_management_dropped),
+    cnt_str(rx_mbuf_allocation_errors),
+    cnt_str(rx_total_bytes),
+    cnt_str(rx_total_missed_packets),
+    cnt_str(rx_undersize_errors),
+    cnt_str(rx_management_packets),
+    cnt_str(tx_management_packets),
+    cnt_str(rx_good_bytes),
+    cnt_str(tx_good_bytes),
+    cnt_str(rx_good_packets),
+    cnt_str(tx_good_packets),
+    cnt_str(rx_total_packets),
+    cnt_str(tx_total_packets),
 };
 
 #undef cnt_str
@@ -232,10 +264,10 @@ static void ovs_stats_submit_two(const char *dev, const char *type,
   plugin_dispatch_values(&vl);
 }
 
-static void ovs_stats_submit_interfaces(bridge_list_t *bridge,
-                                        port_list_t *port) {
+static void ovs_stats_submit_interfaces(port_list_t *port) {
   char devname[PORT_NAME_SIZE_MAX * 2];
 
+  bridge_list_t *bridge = port->br;
   for (interface_list_t *iface = port->iface; iface != NULL;
        iface = iface->next) {
     meta_data_t *meta = meta_data_create();
@@ -292,8 +324,6 @@ static void ovs_stats_submit_interfaces(bridge_list_t *bridge,
     ovs_stats_submit_two(devname, "if_packets", "broadcast_packets",
                          iface->stats[rx_broadcast_packets],
                          iface->stats[tx_broadcast_packets], meta);
-    ovs_stats_submit_one(devname, "if_multicast", "tx_multicast_packets",
-                         iface->stats[tx_multicast_packets], meta);
     ovs_stats_submit_one(devname, "if_rx_errors", "rx_undersized_errors",
                          iface->stats[rx_undersized_errors], meta);
     ovs_stats_submit_one(devname, "if_rx_errors", "rx_oversize_errors",
@@ -302,6 +332,35 @@ static void ovs_stats_submit_interfaces(bridge_list_t *bridge,
                          iface->stats[rx_fragmented_errors], meta);
     ovs_stats_submit_one(devname, "if_rx_errors", "rx_jabber_errors",
                          iface->stats[rx_jabber_errors], meta);
+    ovs_stats_submit_one(devname, "if_rx_octets", "rx_error_bytes",
+                         iface->stats[rx_error_bytes], meta);
+    ovs_stats_submit_one(devname, "if_errors", "rx_l3_l4_xsum_error",
+                         iface->stats[rx_l3_l4_xsum_error], meta);
+    ovs_stats_submit_one(devname, "if_dropped", "rx_management_dropped",
+                         iface->stats[rx_management_dropped], meta);
+    ovs_stats_submit_one(devname, "if_errors", "rx_mbuf_allocation_errors",
+                         iface->stats[rx_mbuf_allocation_errors], meta);
+    ovs_stats_submit_one(devname, "if_octets", "rx_total_bytes",
+                         iface->stats[rx_total_bytes], meta);
+    ovs_stats_submit_one(devname, "if_packets", "rx_total_missed_packets",
+                         iface->stats[rx_total_missed_packets], meta);
+    ovs_stats_submit_one(devname, "if_rx_errors", "rx_undersize_errors",
+                         iface->stats[rx_undersize_errors], meta);
+    ovs_stats_submit_two(devname, "if_packets", "management_packets",
+                         iface->stats[rx_management_packets],
+                         iface->stats[tx_management_packets], meta);
+    ovs_stats_submit_two(devname, "if_packets", "multicast_packets",
+                         iface->stats[rx_multicast_packets],
+                         iface->stats[tx_multicast_packets], meta);
+    ovs_stats_submit_two(devname, "if_octets", "good_bytes",
+                         iface->stats[rx_good_bytes],
+                         iface->stats[tx_good_bytes], meta);
+    ovs_stats_submit_two(devname, "if_packets", "good_packets",
+                         iface->stats[rx_good_packets],
+                         iface->stats[tx_good_packets], meta);
+    ovs_stats_submit_two(devname, "if_packets", "total_packets",
+                         iface->stats[rx_total_packets],
+                         iface->stats[tx_total_packets], meta);
 
     meta_data_destroy(meta);
   }
@@ -322,7 +381,7 @@ static int ovs_stats_get_port_stat_value(port_list_t *port,
   return value;
 }
 
-static void ovs_stats_submit_port(bridge_list_t *bridge, port_list_t *port) {
+static void ovs_stats_submit_port(port_list_t *port) {
   char devname[PORT_NAME_SIZE_MAX * 2];
 
   meta_data_t *meta = meta_data_create();
@@ -348,6 +407,7 @@ static void ovs_stats_submit_port(bridge_list_t *bridge, port_list_t *port) {
       i++;
     }
   }
+  bridge_list_t *bridge = port->br;
   snprintf(devname, sizeof(devname), "%s.%s", bridge->name, port->name);
   ovs_stats_submit_one(devname, "if_collisions", NULL,
                        ovs_stats_get_port_stat_value(port, collisions), meta);
@@ -403,9 +463,6 @@ static void ovs_stats_submit_port(bridge_list_t *bridge, port_list_t *port) {
       ovs_stats_get_port_stat_value(port, rx_broadcast_packets),
       ovs_stats_get_port_stat_value(port, tx_broadcast_packets), meta);
   ovs_stats_submit_one(
-      devname, "if_multicast", "tx_multicast_packets",
-      ovs_stats_get_port_stat_value(port, tx_multicast_packets), meta);
-  ovs_stats_submit_one(
       devname, "if_rx_errors", "rx_undersized_errors",
       ovs_stats_get_port_stat_value(port, rx_undersized_errors), meta);
   ovs_stats_submit_one(devname, "if_rx_errors", "rx_oversize_errors",
@@ -417,6 +474,47 @@ static void ovs_stats_submit_port(bridge_list_t *bridge, port_list_t *port) {
   ovs_stats_submit_one(devname, "if_rx_errors", "rx_jabber_errors",
                        ovs_stats_get_port_stat_value(port, rx_jabber_errors),
                        meta);
+  ovs_stats_submit_one(devname, "if_rx_octets", "rx_error_bytes",
+                       ovs_stats_get_port_stat_value(port, rx_error_bytes),
+                       meta);
+  ovs_stats_submit_one(devname, "if_errors", "rx_l3_l4_xsum_error",
+                       ovs_stats_get_port_stat_value(port, rx_l3_l4_xsum_error),
+                       meta);
+  ovs_stats_submit_one(
+      devname, "if_dropped", "rx_management_dropped",
+      ovs_stats_get_port_stat_value(port, rx_management_dropped), meta);
+  ovs_stats_submit_one(
+      devname, "if_errors", "rx_mbuf_allocation_errors",
+      ovs_stats_get_port_stat_value(port, rx_mbuf_allocation_errors), meta);
+  ovs_stats_submit_one(devname, "if_octets", "rx_total_bytes",
+                       ovs_stats_get_port_stat_value(port, rx_total_bytes),
+                       meta);
+  ovs_stats_submit_one(
+      devname, "if_packets", "rx_total_missed_packets",
+      ovs_stats_get_port_stat_value(port, rx_total_missed_packets), meta);
+  ovs_stats_submit_one(devname, "if_rx_errors", "rx_undersize_errors",
+                       ovs_stats_get_port_stat_value(port, rx_undersize_errors),
+                       meta);
+  ovs_stats_submit_two(
+      devname, "if_packets", "management_packets",
+      ovs_stats_get_port_stat_value(port, rx_management_packets),
+      ovs_stats_get_port_stat_value(port, tx_management_packets), meta);
+  ovs_stats_submit_two(
+      devname, "if_packets", "multicast_packets",
+      ovs_stats_get_port_stat_value(port, rx_multicast_packets),
+      ovs_stats_get_port_stat_value(port, tx_multicast_packets), meta);
+  ovs_stats_submit_two(devname, "if_octets", "good_bytes",
+                       ovs_stats_get_port_stat_value(port, rx_good_bytes),
+                       ovs_stats_get_port_stat_value(port, tx_good_bytes),
+                       meta);
+  ovs_stats_submit_two(devname, "if_packets", "good_packets",
+                       ovs_stats_get_port_stat_value(port, rx_good_packets),
+                       ovs_stats_get_port_stat_value(port, tx_good_packets),
+                       meta);
+  ovs_stats_submit_two(devname, "if_packets", "total_packets",
+                       ovs_stats_get_port_stat_value(port, rx_total_packets),
+                       ovs_stats_get_port_stat_value(port, tx_total_packets),
+                       meta);
 
   meta_data_destroy(meta);
 }
@@ -546,7 +644,6 @@ static int ovs_stats_is_monitored_bridge(const char *br_name) {
   return 0;
 }
 
-
 /* Delete bridge */
 static int ovs_stats_del_bridge(yajl_val bridge) {
   const char *old[] = {"old", NULL};
@@ -1279,26 +1376,22 @@ static int ovs_stats_plugin_init(void) {
 
 /* OvS stats read callback. Read bridge/port information and submit it*/
 static int ovs_stats_plugin_read(__attribute__((unused)) user_data_t *ud) {
-  bridge_list_t *bridge;
-  port_list_t *port;
-
   pthread_mutex_lock(&g_stats_lock);
-  for (bridge = g_bridge_list_head; bridge != NULL; bridge = bridge->next) {
-    for (port = g_port_list_head; port != NULL; port = port->next) {
-      if (port->br != bridge)
-        continue;
+  for (port_list_t *port = g_port_list_head; port != NULL; port = port->next) {
+    if (strlen(port->name) == 0)
+      /* Skip port w/o name. This is possible when read callback
+       * is called after Interface Table update callback but before
+       * Port table Update callback. Will add this port on next read */
+      continue;
 
-      if (strlen(port->name) == 0)
-        /* Skip port w/o name. This is possible when read callback
-         * is called after Interface Table update callback but before
-         * Port table Update callback. Will add this port on next read */
-        continue;
+    /* Skip port if it has no bridge */
+    if (!port->br)
+      continue;
 
-      ovs_stats_submit_port(bridge, port);
+    ovs_stats_submit_port(port);
 
-      if (interface_stats)
-        ovs_stats_submit_interfaces(bridge, port);
-    }
+    if (interface_stats)
+      ovs_stats_submit_interfaces(port);
   }
   pthread_mutex_unlock(&g_stats_lock);
   return 0;