summaryrefslogtreecommitdiff
path: root/ovsdb
Commit message (Collapse)AuthorAgeFilesLines
* ovsdb-idl: Redesign use of indexes.Ben Pfaff2018-06-121-89/+96
| | | | | | | | | | | | | | | | | | | | | | | The design of the compound index feature in the C OVSDB IDL was unusual. Indexes were generally referenced only by name rather than by pointer, and could be obtained only from the top-level ovsdb_idl object. To iterate or otherwise search an index required explicitly creating a special ovsdb_idl_cursor object, which at least seemed somewhat heavy-weight given that it required a string lookup in a table of indexes. This commit redesigns the compound index interface. It discards the use of names for indexes, instead having clients pass in a pointer to the index object itself. It simplifies how indexes are created, gets rid of the need for explicit cursor objects, and updates all of the users to the new interface. The underlying reason for this commit is to make it easier in ovn-controller to keep track of the dependencies for a given function, by making the indexes explicit arguments to any function that needs to use them. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Han Zhou <hzhou8@ebay.com>
* treewide: Convert leading tabs to spaces.Ben Pfaff2018-06-111-3/+3
| | | | | | | | | It's always been OVS coding style to use spaces rather than tabs for indentation, but some tabs have snuck in over time. This commit converts them to spaces. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* ovn-controller: Pass around pointers to individual tables.Ben Pfaff2018-06-111-0/+27
| | | | | | | | | | | | We're working to make ovn-controller compute more incrementally, to reduce CPU usage. To make it easier to keep track of dependencies, it makes sense to pass around pointers to fine-grained resources instead of an entire database at a time. This commit introduces a way to pass individual tables around and starts using that feature in ovn-controller. CC: Han Zhou <zhouhan@gmail.com> Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Han Zhou <hzhou8@ebay.com>
* Embrace anonymous unions.Ben Pfaff2018-05-2518-97/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Several OVS structs contain embedded named unions, like this: struct { ... union { ... } u; }; C11 standardized a feature that many compilers already implemented anyway, where an embedded union may be unnamed, like this: struct { ... union { ... }; }; This is more convenient because it allows the programmer to omit "u." in many places. OVS already used this feature in several places. This commit embraces it in several others. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org> Tested-by: Alin Gabriel Serdean <aserdean@ovn.org> Acked-by: Alin Gabriel Serdean <aserdean@ovn.org>
* ovsdb: Use new ovsdb_log_write_and_free().Justin Pettit2018-05-171-11/+3
| | | | | Signed-off-by: Justin Pettit <jpettit@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* Make <host>:<port> parsing uniform treewide.Ben Pfaff2018-04-161-3/+2
| | | | | | | | | | | | | | | | I didn't realize until now that the tree had two different ways of parsing strings in the form <host>:<port> and <port>:<host>. There are the long-standing inet_parse_active() and inet_parse_passive() functions, and more recently the ipv46_parse() function. This commit eliminates the latter and changes the code to use the former. The two implementations interpreted some input differently. In particular, the older functions required IPv6 addresses to be [bracketed], but the newer ones do not. For compatibility this patch changes the merged code to use the more liberal interpretation. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Mark Michelson <mmichels@redhat.com>
* socket-util: Make inet_parse_active() and inet_parse_passive() more alike.Ben Pfaff2018-04-161-1/+1
| | | | | | | | | | | | | | Until now, the default_port parameters to these functions have had different types and different behavior. There is a reason for this, since it makes sense to listen on a kernel-selected port but it does not make sense to connect to a kernel-selected port, but this overlooks the possibility that a caller might want to parse a string in the format understood by inet_parse_active() without actually using it to connect to a remote host. This commit makes the behavior consistent and updates all the callers to work with the new semantics. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Mark Michelson <mmichels@redhat.com>
* Windows: Fix broken build caused by a bad file extensionAlin Gabriel Serdean2018-04-021-1/+1
| | | | | | | | | | | | | | | The compiler (cl) complains: `ovsdb/ovsdb-server.c(689) : fatal error C1083: Cannot open include file: 'ovsdb/_server.ovsschema.inc': No such file or directory` (https://ci.appveyor.com/project/blp/ovs/build/1.0.4079#L2586) Generated compiler objects have the extension `.obj` on Windows. This patch switches to `$(OBJEXT)` instead, so the schema will be generated. Signed-off-by: Alin Gabriel Serdean aserdean@ovn.org Acked-by: Ben Pfaff <blp@ovn.org>
* ovsdb: Introduce experimental support for clustered databases.Ben Pfaff2018-03-2437-1214/+10675
| | | | | | | | | | | | | | | | | | | This commit adds support for OVSDB clustering via Raft. Please read ovsdb(7) for information on how to set up a clustered database. It is simple and boils down to running "ovsdb-tool create-cluster" on one server and "ovsdb-tool join-cluster" on each of the others and then starting ovsdb-server in the usual way on all of them. One you have a clustered database, you configure ovn-controller and ovn-northd to use it by pointing them to all of the servers, e.g. where previously you might have said "tcp:1.2.3.4" was the database server, now you say that it is "tcp:1.2.3.4,tcp:5.6.7.8,tcp:9.10.11.12". This also adds support for database clustering to ovs-sandbox. Acked-by: Justin Pettit <jpettit@ovn.org> Tested-by: aginwala <aginwala@asu.edu> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb: Add support for online schema conversion.Ben Pfaff2018-03-2415-176/+537
| | | | | | | | | | | With this change, "ovsdb-client convert" can be used to convert a database from one schema to another without taking the database offline. This can be useful to minimize downtime for a database during a software upgrade. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* ovsdb-server: Add new RPC "set_db_change_aware".Ben Pfaff2018-03-245-52/+218
| | | | | | | | | | | | | The _Server database recently added to ovsdb-server can be used to dump out information about databases, but monitoring updates to _Server is not yet very useful because for historical reasons ovsdb-server drops all of its OVSDB connections whenever databases are added or removed or otherwise change in some major way. It is not a good idea to change this behavior for all clients, because some of them rely on it, but this commit introduces a new RPC that allows clients that understand _Server to suppress the connection-closing behavior. Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb-server: Add support for a built-in _Server database.Ben Pfaff2018-03-248-14/+294
| | | | | | | | | | | | | | | | | | | | | The _Server database is valuable primarily because it provides database clients a way to find out the details of changes to databases, schemas, etc. in a granular, natural way. Until now, the only way that the server could notify clients about these kinds of changes was to close the session; when the client reconnects, it is expected to reassess the server's state. One way to provide this kind of granular information would be to add specific JSON-RPC requests to obtain notifications for different kinds of changes, but since ovsdb-server already provides granular and flexible notification support for databases, using a database for the purpose is convenient and avoids duplicating functionality. Initially this database only reports databases' names and schemas, but when clustering support is added in a later commit it will also report important aspects of clustering and cluster status. Thus, this database also reduces the need to add JSON-RPC calls to retrieve information about new features. Signed-off-by: Ben Pfaff <blp@ovn.org>
* jsonrpc-server: Separate changing read_only status from reconnecting.Ben Pfaff2018-03-243-21/+17
| | | | | | | | | | | The code in jsonrpc-server conflated two different kinds of functionality. It makes sense for the client to be able to change whether a particular server is read-only. It also makes sense for the client to tell a server to reconnect. The code in jsonrpc-server only provided a single function that does both, which is weird. This commit breaks these apart. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* ovsdb: Drop distinction between monitors and replicas.Ben Pfaff2018-03-245-83/+39
| | | | | | | | | | | | | | | Until now, OVSDB distinguished "monitors", which are associated with OVSDB JSON-RPC client sessions and allow clients to find out about database changes, from "replicas", which are associated with databases and also find out about database changes and act on them in some way. Now that committing to disk has been broken into a separate concept, there is a one-to-one and "onto" relationship between monitors and replicas: every monitor M has a replica R and R is associated with M as well. It's easier if we just treat them as a single entity, and that's what this commit implements. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* ovsdb-server: Distinguish logs from other replicas.Ben Pfaff2018-03-246-40/+34
| | | | | | | | | | | | | | | | | Until now, ovsdb-server has internally chained a list of replicas from each database. Whenever ovsdb_txn_commit() commits a transaction, it passes the transaction to each replica. The first replica, which is always the disk file that stores the database, is special because it is the only replica that can report an error and thereby abort the transaction. This is a very special property that genuinely distinguishes this first replica from the others on the chain. This commit breaks that first replica out as a separate kind of entity that is not on the list of replicas. When later commits add support for clustering, there will only be more and more special cases for the "first replica", so it makes sense to distinguish it this way. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* log: Add async commit support.Ben Pfaff2018-03-244-8/+157
| | | | | | | | | | | The OVSDB log code has always had the ability to commit the log to disk and wait for the commit to finish. This patch introduces a new feature that allows the client to start a commit in the background and then to determine asynchronously that the commit has completed. This will be especially useful later for the distributed database feature. Signed-off-by: Ben Pfaff <blp@ovn.org> Reviewed-by: Yifeng Sun <pkusunyifeng@gmail.com>
* ovsdb-client: Set binary mode when doing backup/restoreAlin Gabriel Serdean2018-03-151-0/+17
| | | | | | | | | | | | Add some needed consistency on Windows for STD_IN/OUT file descriptors when doing backup and restore. Reported-at:https://mail.openvswitch.org/pipermail/ovs-dev/2018-January/343518.html Suggested-by: Ben Pfaff <blp@ovn.org> Co-authored-by: Ben Pfaff <blp@ovn.org> Signed-off-by: Ben Pfaff <blp@ovn.org> Signed-off-by: Alin Gabriel Serdean <aserdean@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* ovsdb: Fix database compaction checkDaniel Alvarez2018-03-141-6/+6
| | | | | | | | | | We want to compact database file if it has been over 24 hours since we last compacted it and there's more than 100 commits regardless of the size of the database. This patch fixes the previous comparisson which checked if 24 hours was elapsed since the next scheduled compaction. Signed-off-by: Daniel Alvarez <dalvarez@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb: Loosen requirements for automatically compacting databases.Daniel Alvarez2018-03-093-7/+18
| | | | | | | | | | | | | | | | | | | | | Before this patch, the databases were automatically compacted when a transaction is logged when: * It's been > 10 minutes after last compaction AND * At least 100 commits have occurred AND * Database has grown at least 4x since last compaction (and it's > 10M) This patch changes the conditions as follows: * It's been > 10 minutes after last compaction AND * At least 100 commits have occurred AND either - It's been > 24 hours after the last compaction OR - Database has grown at least 2x since last compaction (and it's > 10M) Reported-by: Daniel Alvarez <dalvarez@redhat.com> Reported-at: https://mail.openvswitch.org/pipermail/ovs-discuss/2018-March/046309.html Signed-off-by: Daniel Alvarez <dalvarez@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb: Fix time in log traces when compacting databaseDaniel Alvarez2018-03-071-1/+1
| | | | | | | | | | | | Current code is mixing wall and monotonic clocks and the traces are not useful since the timestamps are not accurate. This patch fixes it by using the same time reference for the log as used in the code. Without this patch, the traces look like this: compacting database online (1519124364.908 seconds old, 951 transactions) Signed-off-by: Daniel Alvarez <dalvarez@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* Fix type-setting in ovsdb-idlc man page.Jakub Sitnicki2018-02-281-12/+12
| | | | | | | | | - Remove extra escape sequences for switching to bold font. - Add missing escape sequences for switching back to normal font. Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2018-February/344591.html Signed-off-by: Jakub Sitnicki <jkbs@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb-idlc: Implement synthetic columns.Ben Pfaff2018-02-162-5/+115
| | | | | | | | A synthetic column is one that is not present in the actual database but instead calculated by code in the client based on columns in the row. This can be useful to avoid repeatedly calculating the same function of a row. Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb-idlc: Add infrastructure for IDL schema extensions.Ben Pfaff2018-02-161-0/+12
| | | | | | | | | | | An IDL schema is an OVSDB schema with some extra stuff in it. So far, all of the extras have been at the top level. This commit makes it possible for IDL schemas to have extra information at the table and column levels as long as it is in an "extensions" member. No extensions are actually supported yet. Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb-idlc: Add "cDecls" and "hDecls" IDL schema extensions.Ben Pfaff2018-02-162-3/+13
| | | | | | | | | | An IDL schema is an OVSDB schema with some extra stuff in it: an idlPrefix and an idlHeader at the top level to indicate what ovsdb-idlc needs to generate the interface definitions. This commit adds support for two more optional IDL schema extensions that allow extra code to be written to the .c and .h file that ovsdb-idlc generates. Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb-tool: Indicate "db" and "schema" are optional in man page.Justin Pettit2018-02-141-13/+18
| | | | | Signed-off-by: Justin Pettit <jpettit@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* ovsdb-client: Add --timeout option.Ben Pfaff2018-02-062-0/+18
| | | | | | Signed-off-by: Ben Pfaff <blp@ovn.org> Reviewed-by: Yifeng Sun <pkusunyifeng@gmail.com> Acked-by: Justin Pettit <jpettit@ovn.org>
* util: Document and rely on ovs_assert() always evaluating its argument.Ben Pfaff2018-02-012-5/+2
| | | | | | | | | | The ovs_assert() macro always evaluates its argument, even when NDEBUG is defined so that failure is ignored. This behavior wasn't documented, and thus a lot of code didn't rely on it. This commit documents the behavior and simplifies bits of code that heretofore didn't rely on it. Signed-off-by: Ben Pfaff <blp@ovn.org> Reviewed-by: Yifeng Sun <pkusunyifeng@gmail.com>
* ovsdb-client: Fix memory leaksYifeng Sun2018-01-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | This two leaks are reported by valgrind (testing ovsdb-client backup and restore): 890 (56 direct, 834 indirect) bytes in 1 blocks are definitely lost in loss record 71 of 73 by 0x42DE22: xcalloc (util.c:103) by 0x40DD8C: ovsdb_schema_create (ovsdb.c:34) by 0x40E0B5: ovsdb_schema_from_json (ovsdb.c:196) by 0x406DA5: fetch_schema (ovsdb-client.c:415) by 0x408478: do_restore (ovsdb-client.c:1595) by 0x405BCD: main (ovsdb-client.c:170) 2,688 (88 direct, 2,600 indirect) bytes in 1 blocks are definitely lost in loss record 73 of 73 by 0x42DE84: xmalloc (util.c:120) by 0x40E61F: ovsdb_create (ovsdb.c:329) by 0x40BA22: ovsdb_file_open__ (file.c:201) by 0x40845A: do_restore (ovsdb-client.c:1592) by 0x405BCD: main (ovsdb-client.c:170) Signed-off-by: Yifeng Sun <pkusunyifeng@gmail.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb: ovsdb-dot.in: Replace sys.maxint with sys.maxsize for Python3Markos Chandras2018-01-091-2/+2
| | | | | | | | | There is no sys.maxint anymore on python3. However, sys.maxsize can be used as an integer larger than any practical list or string index. Link: https://docs.python.org/3.1/whatsnew/3.0.html#integers Signed-off-by: Markos Chandras <mchandras@suse.de> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb: ovsdb-dot.in: Change exception semantics for Python3Markos Chandras2018-01-091-2/+2
| | | | | | | | | | | | | | | | PEP-3110 changes the semantics for capturing exceptions in Python3 from 'except E,N' to 'except E as N'. This fixes the following problem when building with python3 SyntaxError: invalid syntax File "./ovsdb/ovsdb-dot.in", line 106 except ovs.db.error.Error, e: ^ SyntaxError: invalid syntax Link: https://www.python.org/dev/peps/pep-3110/ Signed-off-by: Markos Chandras <mchandras@suse.de> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb: ovsdb-dot.in: Use print function for Python3Markos Chandras2018-01-091-14/+14
| | | | | | | | | | | | | | | | The python2 print statement no longer works in python3 since the latter uses a print function. As such, replace all instances of 'print' with 'print()'. This fixes the following build problem with python3 > ovsdb/ovsdb-client.1.tmp File "./ovsdb/ovsdb-dot.in", line 34 print "\t%s -> %s [%s];" % ( ^ SyntaxError: invalid syntax Signed-off-by: Markos Chandras <mchandras@suse.de> Signed-off-by: Ben Pfaff <blp@ovn.org>
* ovsdb: Use items() instead of iteritems() for Python3Markos Chandras2018-01-092-5/+5
| | | | | | | | | | | | | | | | Python3 removed the iteritems() iterator and replaced it with items() which should also work in Python2. This fixes the following build problem on Python3: Traceback (most recent call last): File "./ovsdb/ovsdb-idlc.in", line 1436, in <module> func(*args[1:]) File "./ovsdb/ovsdb-idlc.in", line 314, in printCIDLHeader for columnName, column in sorted(table.columns.iteritems()): AttributeError: 'dict' object has no attribute 'iteritems' Signed-off-by: Markos Chandras <mchandras@suse.de> Signed-off-by: Ben Pfaff <blp@ovn.org>
* log: Use absolute name of log file.Ben Pfaff2017-12-241-33/+62
| | | | | | | | | | | | | | In ovsdb-server, the OVSDB log code is used to open the databases specified on the command line before ovsdb-server daemonizes itself. Afterward, it is occasionally necessary for ovsdb-server to reference those files by name again. When that happens, if daemonization changed the current directory to the root, any relative names are no longer valid and those references will fail. Until now, this was handled at a higher level in ovsdb-server, but in the future it will be convenient to handle it in the log code itself. This commit prepares for that by making the log code take the absolute name of log files itself. Signed-off-by: Ben Pfaff <blp@ovn.org>
* log: Replace ovsdb_log_get_offset() by a more abstract mechanism.Ben Pfaff2017-12-243-25/+62
| | | | | | | | | Upcoming support for clustered databases will need to provide a more abstract way to determine when a given file should be compacted, so this changes the standalone database support to use this mechanism in advance. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* ovsdb-client: Remove extraneous markup from man page.Justin Pettit2017-12-241-34/+34
| | | | | Signed-off-by: Justin Pettit <jpettit@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* ovsdb-server: Update description for "compact" command in man page.Justin Pettit2017-12-241-2/+2
| | | | | | | | The man page indicated that multiple databases could be specified, but only one is allowed. Signed-off-by: Justin Pettit <jpettit@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
* log: Support multiple magic.Ben Pfaff2017-12-242-46/+116
| | | | | | | | | Some OVSDB tools will want to open files that might be standalone or clustered databases, and so it's better if ovsdb_log_open() can accept more than one valid "magic". This commit makes that possible. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* log: Support using /dev/stdin for opening logs read-only.Ben Pfaff2017-12-241-1/+7
| | | | | | | | | On Unix-like systems, usually /dev/stdin opens a duplicate of fd 0, and this will be convenient in a few places later on. This commit makes this support universal. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* log: New functions for replacing a log's contents.Ben Pfaff2017-12-242-28/+280
| | | | | | | | | | | | | | These functions will acquire users in future commits. This new functionality made the internal state machine of the log hard enough to understand that I thought that it was best to make it explicit with a 'state' variable, so this commit introduces one. This commit duplicates code and logic from ovsdb_rename() and ovsdb_compact() in ovsdb/file.c. A future commit removes this duplication. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* log: Make reading in writing mode less of an error.Ben Pfaff2017-12-241-1/+1
| | | | | | | | | | | | Clients are intended to use the OVSDB log code by reading zero or more records and then writing zero or more records, but not reading after any write has occurred. Until now, ovsdb_log_read() has signaled the latter behavior as an error. Upcoming changes to OVSDB are going to make it an expected behavior in some cases, so this commit changes it so that it just becomes an empty read. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* log: Add new open mode OVSDB_LOG_CREATE_EXCL.Ben Pfaff2017-12-244-8/+22
| | | | | | | | Until now, OVSDB_LOG_CREATE implied EXCL, but this commit breaks them apart. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* log: Log write errors.Ben Pfaff2017-12-241-0/+7
| | | | | | | This saves all the callers from logging them separately. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* log: Make json parameter to ovsdb_log_write() const.Ben Pfaff2017-12-242-2/+4
| | | | | Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* log: Require log entries to be JSON objects.Ben Pfaff2017-12-241-0/+17
| | | | | | | | | | | | The current and upcoming users of the OVSDB logging module only use JSON objects as records. This commit simplifies the users slightly by allowing them to always assume that the records are JSON objects. Unfortunately this resulted in a large number of updates to tests, which didn't always use JSON objects. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* log: Allow client to specify magic.Ben Pfaff2017-12-245-25/+56
| | | | | | | | | | | Until now, the logging code in ovsdb has only supported a single file format, for OVSDB standalone database files. Upcoming commits will add support for another, incompatible format, which uses a different magic string for identification. This commit allows the logging code to support both formats. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* ovsdb-client: Show even constraint-breaking data in "dump" output.Ben Pfaff2017-12-221-3/+2
| | | | | | | | | | | The ovsdb-client "dump" command is a fairly low-level tool that can be used, among other purposes, to debug the OVSDB protocol. It's better if it just prints what the server sends without being too judgmental about it. Thus, we might as well ignore constraints for the purpose of dumping tables. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* ovsdb-server: Forbid user-specified databases with reserved names.Ben Pfaff2017-12-223-23/+65
| | | | | | | | | | | | | | Names that begin with "_" are reserved, but ovsdb-server didn't previously enforce this. At the same time, make ovsdb-client ignore databases with reserved names for the purpose of selecting a default database to work on. This is in preparation for ovsdb-server starting to serve a new database, full of meta-information, called _Server. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* jsonrpc-server: Enforce uniqueness of monitor IDs.Ben Pfaff2017-12-221-5/+14
| | | | | | | | This oversight allowed monitor IDs to be duplicated when the monitor_cond_change request changed them. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* ovsdb-client: Add new "query" command.Ben Pfaff2017-12-222-12/+67
| | | | | | | | This is mostly for symmetry with ovsdb-tool, but it might come in handy from time to time. Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
* ovsdb-client: Add new "restore" command.Ben Pfaff2017-12-212-4/+139
| | | | Signed-off-by: Ben Pfaff <blp@ovn.org>