summaryrefslogtreecommitdiff
path: root/ovsdb/jsonrpc-server.c
diff options
context:
space:
mode:
authorLiran Schour <lirans@il.ibm.com>2016-07-18 11:45:49 +0300
committerBen Pfaff <blp@ovn.org>2016-07-18 22:58:04 -0700
commitec1eadce89e0e4a900e538c7cd8756324ab6ad60 (patch)
tree13bfd7aecd8bd56319ed5d2f60532e14e16426ac /ovsdb/jsonrpc-server.c
parentfdbdb5956f636d2c9077c47662783945a6859c0a (diff)
downloadopenvswitch-ec1eadce89e0e4a900e538c7cd8756324ab6ad60.tar.gz
ovsdb: create column index mapping between ovsdb row to monitor row
Columns indexing is different in ovsdb_row then in ovsdb_monitor_row. We need mapping between the 2 for condition evaluation. Signed-off-by: Liran Schour <lirans@il.ibm.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'ovsdb/jsonrpc-server.c')
-rw-r--r--ovsdb/jsonrpc-server.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c
index 4913d7e67..208027a60 100644
--- a/ovsdb/jsonrpc-server.c
+++ b/ovsdb/jsonrpc-server.c
@@ -1158,8 +1158,12 @@ ovsdb_jsonrpc_parse_monitor_request(struct ovsdb_monitor *dbmon,
return ovsdb_syntax_error(columns, NULL, "%s is not a valid "
"column name", s);
}
- ovsdb_monitor_add_column(dbmon, table, column, select,
- allocated_columns);
+ if (ovsdb_monitor_add_column(dbmon, table, column, select,
+ allocated_columns)) {
+ return ovsdb_syntax_error(columns, NULL, "column %s "
+ "mentioned more than once",
+ column->name);
+ }
}
} else {
struct shash_node *node;
@@ -1167,8 +1171,12 @@ ovsdb_jsonrpc_parse_monitor_request(struct ovsdb_monitor *dbmon,
SHASH_FOR_EACH (node, &ts->columns) {
const struct ovsdb_column *column = node->data;
if (column->index != OVSDB_COL_UUID) {
- ovsdb_monitor_add_column(dbmon, table, column, select,
- allocated_columns);
+ if (ovsdb_monitor_add_column(dbmon, table, column, select,
+ allocated_columns)) {
+ return ovsdb_syntax_error(columns, NULL, "column %s "
+ "mentioned more than once",
+ column->name);
+ }
}
}
}
@@ -1217,7 +1225,6 @@ ovsdb_jsonrpc_monitor_create(struct ovsdb_jsonrpc_session *s, struct ovsdb *db,
SHASH_FOR_EACH (node, json_object(monitor_requests)) {
const struct ovsdb_table *table;
- const char *column_name;
size_t allocated_columns;
const struct json *mr_value;
size_t i;
@@ -1251,15 +1258,6 @@ ovsdb_jsonrpc_monitor_create(struct ovsdb_jsonrpc_session *s, struct ovsdb *db,
goto error;
}
}
-
- column_name = ovsdb_monitor_table_check_duplicates(m->dbmon, table);
-
- if (column_name) {
- error = ovsdb_syntax_error(mr_value, NULL, "column %s "
- "mentioned more than once",
- column_name);
- goto error;
- }
}
dbmon = ovsdb_monitor_add(m->dbmon);