diff options
author | Liran Schour <lirans@il.ibm.com> | 2016-07-18 11:45:49 +0300 |
---|---|---|
committer | Ben Pfaff <blp@ovn.org> | 2016-07-18 22:58:04 -0700 |
commit | ec1eadce89e0e4a900e538c7cd8756324ab6ad60 (patch) | |
tree | 13bfd7aecd8bd56319ed5d2f60532e14e16426ac /ovsdb/jsonrpc-server.c | |
parent | fdbdb5956f636d2c9077c47662783945a6859c0a (diff) | |
download | openvswitch-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.c | 26 |
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); |