diff options
author | Ben Pfaff <blp@nicira.com> | 2009-12-16 16:26:17 -0800 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2009-12-16 16:26:17 -0800 |
commit | b54e22e91eee43eb04ad53e2fa919be44f34e731 (patch) | |
tree | 5e08313135b3cb46de1e5ec9596450a2fbf0a172 /lib/ovsdb-idl.h | |
parent | 722f63016f302da114e3afb145bd0c1af5aaeb8f (diff) | |
download | openvswitch-b54e22e91eee43eb04ad53e2fa919be44f34e731.tar.gz |
Make ovs-vswitchd report when it is done configuring; make ovs-vsctl wait.
Until now the ovsdb-based vswitch has provided no way to know when it has
finished applying the configuration from the database. This commit
introduces a way:
* The client who wants to wait increments the "next_cfg" column of the
Open_vSwitch record.
* When ovs-vswitchd finishes reconfiguring, it sets the value of the
"cur_cfg" column to that of the "next_cfg" column.
* The client waits until the "cur_cfg" column is at least as great as
the value it set into "next_cfg".
This allows us to drop the 5-second sleep in interface-reconfigure.
Diffstat (limited to 'lib/ovsdb-idl.h')
-rw-r--r-- | lib/ovsdb-idl.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/ovsdb-idl.h b/lib/ovsdb-idl.h index 0a1fbc6ba..fb551b485 100644 --- a/lib/ovsdb-idl.h +++ b/lib/ovsdb-idl.h @@ -16,6 +16,9 @@ #ifndef OVSDB_IDL_H #define OVSDB_IDL_H 1 +#include <stdint.h> + +struct json; struct ovsdb_idl_class; struct ovsdb_idl *ovsdb_idl_create(const char *remote, @@ -29,6 +32,7 @@ unsigned int ovsdb_idl_get_seqno(const struct ovsdb_idl *); void ovsdb_idl_force_reconnect(struct ovsdb_idl *); enum ovsdb_idl_txn_status { + TXN_UNCHANGED, /* Transaction didn't include any changes. */ TXN_INCOMPLETE, /* Commit in progress, please wait. */ TXN_ABORTED, /* ovsdb_idl_txn_abort() called. */ TXN_SUCCESS, /* Commit successful. */ @@ -43,9 +47,12 @@ const char *ovsdb_idl_txn_status_to_string(enum ovsdb_idl_txn_status); struct ovsdb_idl_txn *ovsdb_idl_txn_create(struct ovsdb_idl *); void ovsdb_idl_txn_add_comment(struct ovsdb_idl_txn *, const char *); void ovsdb_idl_txn_set_dry_run(struct ovsdb_idl_txn *); +void ovsdb_idl_txn_increment(struct ovsdb_idl_txn *, const char *table, + const char *column, const struct json *where); void ovsdb_idl_txn_destroy(struct ovsdb_idl_txn *); void ovsdb_idl_txn_wait(const struct ovsdb_idl_txn *); enum ovsdb_idl_txn_status ovsdb_idl_txn_commit(struct ovsdb_idl_txn *); +int64_t ovsdb_idl_txn_get_increment_new_value(const struct ovsdb_idl_txn *); void ovsdb_idl_txn_abort(struct ovsdb_idl_txn *); #endif /* ovsdb-idl.h */ |