struct bridge_list_s *next; /* Next bridge*/
} bridge_list_t;
+#define cnt_str(x) [x] = #x
+
static const char *const iface_counter_table[IFACE_COUNTER_COUNT] = {
- [collisions] = "collisions",
- [rx_bytes] = "rx_bytes",
- [rx_crc_err] = "rx_crc_err",
- [rx_dropped] = "rx_dropped",
- [rx_errors] = "rx_errors",
- [rx_frame_err] = "rx_frame_err",
- [rx_over_err] = "rx_over_err",
- [rx_packets] = "rx_packets",
- [tx_bytes] = "tx_bytes",
- [tx_dropped] = "tx_dropped",
- [tx_errors] = "tx_errors",
- [tx_packets] = "tx_packets",
- [rx_1_to_64_packets] = "rx_1_to_64_packets",
- [rx_65_to_127_packets] = "rx_65_to_127_packets",
- [rx_128_to_255_packets] = "rx_128_to_255_packets",
- [rx_256_to_511_packets] = "rx_256_to_511_packets",
- [rx_512_to_1023_packets] = "rx_512_to_1023_packets",
- [rx_1024_to_1522_packets] = "rx_1024_to_1518_packets",
- [rx_1523_to_max_packets] = "rx_1523_to_max_packets",
- [tx_1_to_64_packets] = "tx_1_to_64_packets",
- [tx_65_to_127_packets] = "tx_65_to_127_packets",
- [tx_128_to_255_packets] = "tx_128_to_255_packets",
- [tx_256_to_511_packets] = "tx_256_to_511_packets",
- [tx_512_to_1023_packets] = "tx_512_to_1023_packets",
- [tx_1024_to_1522_packets] = "tx_1024_to_1518_packets",
- [tx_1523_to_max_packets] = "tx_1523_to_max_packets",
- [tx_multicast_packets] = "tx_multicast_packets",
- [rx_broadcast_packets] = "rx_broadcast_packets",
- [tx_broadcast_packets] = "tx_broadcast_packets",
- [rx_undersized_errors] = "rx_undersized_errors",
- [rx_oversize_errors] = "rx_oversize_errors",
- [rx_fragmented_errors] = "rx_fragmented_errors",
- [rx_jabber_errors] = "rx_jabber_errors",
+ cnt_str(collisions),
+ cnt_str(rx_bytes),
+ cnt_str(rx_crc_err),
+ cnt_str(rx_dropped),
+ cnt_str(rx_errors),
+ cnt_str(rx_frame_err),
+ cnt_str(rx_over_err),
+ cnt_str(rx_packets),
+ cnt_str(tx_bytes),
+ cnt_str(tx_dropped),
+ cnt_str(tx_errors),
+ cnt_str(tx_packets),
+ cnt_str(rx_1_to_64_packets),
+ cnt_str(rx_65_to_127_packets),
+ cnt_str(rx_128_to_255_packets),
+ cnt_str(rx_256_to_511_packets),
+ cnt_str(rx_512_to_1023_packets),
+ cnt_str(rx_1024_to_1522_packets),
+ cnt_str(rx_1523_to_max_packets),
+ cnt_str(tx_1_to_64_packets),
+ cnt_str(tx_65_to_127_packets),
+ cnt_str(tx_128_to_255_packets),
+ cnt_str(tx_256_to_511_packets),
+ cnt_str(tx_512_to_1023_packets),
+ cnt_str(tx_1024_to_1522_packets),
+ cnt_str(tx_1523_to_max_packets),
+ cnt_str(tx_multicast_packets),
+ cnt_str(rx_broadcast_packets),
+ cnt_str(tx_broadcast_packets),
+ cnt_str(rx_undersized_errors),
+ cnt_str(rx_oversize_errors),
+ cnt_str(rx_fragmented_errors),
+ cnt_str(rx_jabber_errors),
};
+#undef cnt_str
+
/* Entry into the list of network bridges */
static bridge_list_t *g_bridge_list_head;
yajl_val *array = YAJL_GET_ARRAY(br_ports)->values;
size_t array_len = YAJL_GET_ARRAY(br_ports)->len;
if (array != NULL && array_len > 0 && YAJL_IS_ARRAY(array[1])) {
- yajl_val *ports_arr = YAJL_GET_ARRAY(array[1])->values;
- size_t ports_num = YAJL_GET_ARRAY(array[1])->len;
- for (size_t i = 0; i < ports_num && ports_arr != NULL; i++)
- ovs_stats_new_port(
- br, YAJL_GET_STRING(ports_arr[i]->u.array.values[1]));
+ if (YAJL_GET_ARRAY(array[1]) == NULL)
+ goto failure;
+ else {
+ yajl_val *ports_arr = YAJL_GET_ARRAY(array[1])->values;
+ size_t ports_num = YAJL_GET_ARRAY(array[1])->len;
+ for (size_t i = 0; i < ports_num && ports_arr != NULL; i++) {
+ tmp = YAJL_GET_STRING(ports_arr[i]->u.array.values[1]);
+ if (tmp != NULL)
+ ovs_stats_new_port(br, tmp);
+ else
+ goto failure;
+ }
+ }
}
} else
ovs_stats_new_port(br, YAJL_GET_STRING(br_ports->u.array.values[1]));
}
}
} else {
- ERROR("Incorrect JSON Bridge data");
- return -1;
+ goto failure;
}
+
return 0;
+
+failure:
+ ERROR("Incorrect JSON Bridge data");
+ return -1;
}
/* Handle JSON with Bridge Table change event */
char *br_name_dup = strdup(br_name);
if (br_name_dup == NULL) {
ERROR("%s: strdup() copy bridge name fail", plugin_name);
+ sfree(bridge);
goto cleanup_fail;
}
ovs_stats_submit_two(devname, "if_packets", "512_to_1023_packets",
port->stats[rx_512_to_1023_packets],
port->stats[tx_512_to_1023_packets], meta);
- ovs_stats_submit_two(devname, "if_packets", "1024_to_1518_packets",
+ ovs_stats_submit_two(devname, "if_packets", "1024_to_1522_packets",
port->stats[rx_1024_to_1522_packets],
port->stats[tx_1024_to_1522_packets], meta);
ovs_stats_submit_two(devname, "if_packets", "1523_to_max_packets",