.ovs_db_serv = "6640", /* use default OVS DB service */
};
-static const iface_counter ovs_stats_counter_name_to_type(const char *counter) {
+static iface_counter ovs_stats_counter_name_to_type(const char *counter) {
iface_counter index = not_supported;
if (counter == NULL)
if (br_ports && YAJL_IS_ARRAY(br_ports)) {
char *tmp = YAJL_GET_STRING(br_ports->u.array.values[0]);
if (tmp != NULL && strcmp("set", tmp) == 0) {
- yajl_val *ports_arr =
- YAJL_GET_ARRAY(br_ports->u.array.values[1])->values;
- size_t ports_num = YAJL_GET_ARRAY(br_ports->u.array.values[1])->len;
-
- for (int i = 0; i < ports_num; i++)
- ovs_stats_new_port(
- br, YAJL_GET_STRING(ports_arr[i]->u.array.values[1]));
+ 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]));
+ }
} else
ovs_stats_new_port(br, YAJL_GET_STRING(br_ports->u.array.values[1]));
}
yajl_val bridges = yajl_tree_get(jupdates, path, yajl_t_object);
if (bridges && YAJL_IS_OBJECT(bridges)) {
- for (int i = 0; i < YAJL_GET_OBJECT(bridges)->len; i++) {
+ for (size_t i = 0; i < YAJL_GET_OBJECT(bridges)->len; i++) {
yajl_val bridge = YAJL_GET_OBJECT(bridges)->values[i];
ovs_stats_update_bridge(bridge);
}
yajl_val bridge;
if (bridges && YAJL_IS_OBJECT(bridges)) {
pthread_mutex_lock(&g_stats_lock);
- for (int i = 0; i < YAJL_GET_OBJECT(bridges)->len; i++) {
+ for (size_t i = 0; i < YAJL_GET_OBJECT(bridges)->len; i++) {
bridge = YAJL_GET_OBJECT(bridges)->values[i];
ovs_stats_del_bridge(bridge);
}
yajl_val ports = yajl_tree_get(jupdates, path, yajl_t_object);
yajl_val port;
if (ports && YAJL_IS_OBJECT(ports)) {
- for (int i = 0; i < YAJL_GET_OBJECT(ports)->len; i++) {
+ for (size_t i = 0; i < YAJL_GET_OBJECT(ports)->len; i++) {
port = YAJL_GET_OBJECT(ports)->values[i];
ovs_stats_update_port(YAJL_GET_OBJECT(ports)->keys[i], port);
}
yajl_val ports = yajl_tree_get(jupdates, path, yajl_t_object);
pthread_mutex_lock(&g_stats_lock);
if (ports && YAJL_IS_OBJECT(ports))
- for (int i = 0; i < YAJL_GET_OBJECT(ports)->len; i++) {
+ for (size_t i = 0; i < YAJL_GET_OBJECT(ports)->len; i++) {
ovs_stats_del_port(YAJL_GET_OBJECT(ports)->keys[i]);
}
pthread_mutex_unlock(&g_stats_lock);
char *counter_name = NULL;
int64_t counter_value = 0;
if (stats && YAJL_IS_ARRAY(stats))
- for (int i = 0; i < YAJL_GET_ARRAY(stats)->len; i++) {
+ for (size_t i = 0; i < YAJL_GET_ARRAY(stats)->len; i++) {
stat = YAJL_GET_ARRAY(stats)->values[i];
+ if (!YAJL_IS_ARRAY(stat))
+ return (-1);
counter_name = YAJL_GET_STRING(YAJL_GET_ARRAY(stat)->values[0]);
counter_index = ovs_stats_counter_name_to_type(counter_name);
counter_value = YAJL_GET_INTEGER(YAJL_GET_ARRAY(stat)->values[1]);
char *value;
if (ext_ids && YAJL_IS_ARRAY(ext_ids))
- for (int i = 0; i < YAJL_GET_ARRAY(ext_ids)->len; i++) {
+ for (size_t i = 0; i < YAJL_GET_ARRAY(ext_ids)->len; i++) {
ext_id = YAJL_GET_ARRAY(ext_ids)->values[i];
+ if (!YAJL_IS_ARRAY(ext_id))
+ return (-1);
key = YAJL_GET_STRING(YAJL_GET_ARRAY(ext_id)->values[0]);
value = YAJL_GET_STRING(YAJL_GET_ARRAY(ext_id)->values[1]);
if (key && value) {
yajl_val ports = yajl_tree_get(jupdates, path, yajl_t_object);
pthread_mutex_lock(&g_stats_lock);
if (ports && YAJL_IS_OBJECT(ports))
- for (int i = 0; i < YAJL_GET_OBJECT(ports)->len; i++)
+ for (size_t i = 0; i < YAJL_GET_OBJECT(ports)->len; i++)
ovs_stats_update_iface(YAJL_GET_OBJECT(ports)->values[i]);
pthread_mutex_unlock(&g_stats_lock);
return;
static int ovs_stats_plugin_read(__attribute__((unused)) user_data_t *ud) {
bridge_list_t *bridge;
port_list_t *port;
- char devname[PORT_NAME_SIZE_MAX];
+ char devname[PORT_NAME_SIZE_MAX * 2];
pthread_mutex_lock(&g_stats_lock);
for (bridge = g_bridge_list_head; bridge != NULL; bridge = bridge->next) {