summaryrefslogtreecommitdiff
path: root/ovsdb/jsonrpc-server.c
diff options
context:
space:
mode:
authorAndy Zhou <azhou@ovn.org>2017-02-06 14:00:22 -0800
committerAndy Zhou <azhou@ovn.org>2017-02-13 12:20:21 -0800
commit05ac209a5d3a5e85896f58d16b244e6b2a4cf2d0 (patch)
tree43e034cba1613025b409865894666e32cb59f00f /ovsdb/jsonrpc-server.c
parent64fada26016c0d7ad8376d11c2cf653616d0db21 (diff)
downloadopenvswitch-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.c7
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")) {