diff options
author | Andy Zhou <azhou@ovn.org> | 2017-02-06 14:00:22 -0800 |
---|---|---|
committer | Andy Zhou <azhou@ovn.org> | 2017-02-13 12:20:21 -0800 |
commit | 05ac209a5d3a5e85896f58d16b244e6b2a4cf2d0 (patch) | |
tree | 43e034cba1613025b409865894666e32cb59f00f /ovsdb/jsonrpc-server.c | |
parent | 64fada26016c0d7ad8376d11c2cf653616d0db21 (diff) | |
download | openvswitch-05ac209a5d3a5e85896f58d16b244e6b2a4cf2d0.tar.gz |
ovsdb: Prevent OVSDB server from replicating itself.
Replication OVSDB server from itself is usually caused by configuration
errors. Such configuration errors can lead to OVSDB server data loss.
See "reported-at" for more details.
This patch adds logics that prevent OVSDB server from replicating
itself.
Reported-by: Guishuai Li <ligs@dtdream.com>
Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2017-January/326963.html
Suggested-by: Ben Pfaff <blp@ovn.org>
Signed-off-by: Andy Zhou <azhou@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'ovsdb/jsonrpc-server.c')
-rw-r--r-- | ovsdb/jsonrpc-server.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c index 5353ba743..1ba6bb390 100644 --- a/ovsdb/jsonrpc-server.c +++ b/ovsdb/jsonrpc-server.c @@ -944,6 +944,13 @@ ovsdb_jsonrpc_session_got_request(struct ovsdb_jsonrpc_session *s, } reply = jsonrpc_create_reply(json_array_create(dbs, n_dbs), request->id); + } else if (!strcmp(request->method, "get_server_id")) { + const struct uuid *uuid = &s->up.server->uuid; + struct json *result; + + result = json_string_create_nocopy(xasprintf(UUID_FMT, + UUID_ARGS(uuid))); + reply = jsonrpc_create_reply(result, request->id); } else if (!strcmp(request->method, "lock")) { reply = ovsdb_jsonrpc_session_lock(s, request, OVSDB_LOCK_WAIT); } else if (!strcmp(request->method, "steal")) { |