diff options
author | Andy Zhou <azhou@ovn.org> | 2017-02-06 12:43:35 -0800 |
---|---|---|
committer | Andy Zhou <azhou@ovn.org> | 2017-02-13 12:07:44 -0800 |
commit | 64fada26016c0d7ad8376d11c2cf653616d0db21 (patch) | |
tree | 88422ddf7af7ca40b0a0e83e675fc5e128ee3318 | |
parent | ac5d315cd83a1b6a3610c0ddf2ffc847250b783d (diff) | |
download | openvswitch-64fada26016c0d7ad8376d11c2cf653616d0db21.tar.gz |
ovsdb: Add OVSDB server per instance UUID.
Currently, there is no way for an OVSDB server to ID itself. This patch
adds a UUID field that is populated every time OVSDB server runs.
Later patch will make use this UUID to detect and stop and OVSDB server
from replicating itself.
Signed-off-by: Andy Zhou <azhou@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
-rw-r--r-- | ovsdb/jsonrpc-server.c | 6 | ||||
-rw-r--r-- | ovsdb/jsonrpc-server.h | 4 | ||||
-rw-r--r-- | ovsdb/server.c | 2 | ||||
-rw-r--r-- | ovsdb/server.h | 3 |
4 files changed, 15 insertions, 0 deletions
diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c index fa589b5e6..5353ba743 100644 --- a/ovsdb/jsonrpc-server.c +++ b/ovsdb/jsonrpc-server.c @@ -1575,6 +1575,12 @@ ovsdb_jsonrpc_create_notify(const struct ovsdb_jsonrpc_monitor *m, return jsonrpc_create_notify(method, params); } +const struct uuid * +ovsdb_jsonrpc_server_get_uuid(const struct ovsdb_jsonrpc_server *s) +{ + return &s->up.uuid; +} + static void ovsdb_jsonrpc_monitor_flush_all(struct ovsdb_jsonrpc_session *s) { diff --git a/ovsdb/jsonrpc-server.h b/ovsdb/jsonrpc-server.h index f72f88487..3cacbb6a0 100644 --- a/ovsdb/jsonrpc-server.h +++ b/ovsdb/jsonrpc-server.h @@ -22,6 +22,7 @@ struct ovsdb; struct shash; struct simap; +struct uuid; struct ovsdb_jsonrpc_server *ovsdb_jsonrpc_server_create(bool read_only); bool ovsdb_jsonrpc_server_add_db(struct ovsdb_jsonrpc_server *, @@ -71,6 +72,9 @@ bool ovsdb_jsonrpc_server_is_read_only(struct ovsdb_jsonrpc_server *); void ovsdb_jsonrpc_server_get_memory_usage(const struct ovsdb_jsonrpc_server *, struct simap *usage); +const struct uuid *ovsdb_jsonrpc_server_get_uuid( + const struct ovsdb_jsonrpc_server *); + struct ovsdb_jsonrpc_monitor; void ovsdb_jsonrpc_monitor_destroy(struct ovsdb_jsonrpc_monitor *); void ovsdb_jsonrpc_disable_monitor_cond(void); diff --git a/ovsdb/server.c b/ovsdb/server.c index eca915150..2a775230d 100644 --- a/ovsdb/server.c +++ b/ovsdb/server.c @@ -19,6 +19,7 @@ #include "hash.h" #include "ovsdb.h" +#include "uuid.h" /* Initializes 'session' as a session within 'server'. */ void @@ -121,6 +122,7 @@ ovsdb_server_init(struct ovsdb_server *server) { shash_init(&server->dbs); hmap_init(&server->locks); + uuid_generate(&server->uuid); } /* Adds 'db' to the set of databases served out by 'server'. Returns true if diff --git a/ovsdb/server.h b/ovsdb/server.h index c0bbb69ce..21bf1adde 100644 --- a/ovsdb/server.h +++ b/ovsdb/server.h @@ -19,6 +19,7 @@ #include "openvswitch/hmap.h" #include "openvswitch/list.h" #include "openvswitch/shash.h" +#include "openvswitch/uuid.h" struct ovsdb; struct ovsdb_server; @@ -79,6 +80,8 @@ bool ovsdb_lock_waiter_is_owner(const struct ovsdb_lock_waiter *); struct ovsdb_server { struct shash dbs; /* Maps from a db name to a "struct ovsdb *". */ struct hmap locks; /* Contains "struct ovsdb_lock"s indexed by name. */ + struct uuid uuid; /* Server ID. Generated every time a server is + launched. */ }; void ovsdb_server_init(struct ovsdb_server *); |