]> git.proxmox.com Git - ovs.git/blame - ovsdb/jsonrpc-server.h
ovsdb: add support for role-based access controls
[ovs.git] / ovsdb / jsonrpc-server.h
CommitLineData
798e1352 1/* Copyright (c) 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
f85f8ebb
BP
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef OVSDB_JSONRPC_SERVER_H
17#define OVSDB_JSONRPC_SERVER_H 1
18
0b3e7a8b 19#include <stdbool.h>
798e1352 20#include "openvswitch/types.h"
0b3e7a8b 21
f85f8ebb 22struct ovsdb;
0b1fae1b 23struct shash;
0d085684 24struct simap;
64fada26 25struct uuid;
f85f8ebb 26
e51879e9 27struct ovsdb_jsonrpc_server *ovsdb_jsonrpc_server_create(bool read_only);
b4e8d170
BP
28bool ovsdb_jsonrpc_server_add_db(struct ovsdb_jsonrpc_server *,
29 struct ovsdb *);
0a3b723b
BP
30bool ovsdb_jsonrpc_server_remove_db(struct ovsdb_jsonrpc_server *,
31 struct ovsdb *);
23935e8b 32void ovsdb_jsonrpc_server_destroy(struct ovsdb_jsonrpc_server *);
b93d3b6c 33
94db5407
BP
34/* Options for a remote. */
35struct ovsdb_jsonrpc_options {
36 int max_backoff; /* Maximum reconnection backoff, in msec. */
37 int probe_interval; /* Max idle time before probing, in msec. */
9c1a1182 38 bool read_only; /* Only read-only transactions are allowed. */
f125905c 39 int dscp; /* Dscp value for manager connections */
d6db7b3c 40 char *role; /* Role, for role-based access controls */
94db5407 41};
f1936eb6
EJ
42struct ovsdb_jsonrpc_options *
43ovsdb_jsonrpc_default_options(const char *target);
94db5407 44
0b1fae1b
BP
45void ovsdb_jsonrpc_server_set_remotes(struct ovsdb_jsonrpc_server *,
46 const struct shash *);
b93d3b6c 47
0b3e7a8b
AE
48/* Status of a single remote connection. */
49struct ovsdb_jsonrpc_remote_status {
50 const char *state;
51 int last_error;
5eda645e
AE
52 unsigned int sec_since_connect;
53 unsigned int sec_since_disconnect;
0b3e7a8b 54 bool is_connected;
da897f41
BP
55 char *locks_held;
56 char *locks_waiting;
57 char *locks_lost;
a11f6164 58 int n_connections;
798e1352 59 ovs_be16 bound_port;
0b3e7a8b 60};
87fcbc60
BP
61bool ovsdb_jsonrpc_server_get_remote_status(
62 const struct ovsdb_jsonrpc_server *, const char *target,
63 struct ovsdb_jsonrpc_remote_status *);
da897f41
BP
64void ovsdb_jsonrpc_server_free_remote_status(
65 struct ovsdb_jsonrpc_remote_status *);
0b3e7a8b 66
e51879e9 67void ovsdb_jsonrpc_server_reconnect(struct ovsdb_jsonrpc_server *, bool read_only);
31d0b6c9 68
f85f8ebb
BP
69void ovsdb_jsonrpc_server_run(struct ovsdb_jsonrpc_server *);
70void ovsdb_jsonrpc_server_wait(struct ovsdb_jsonrpc_server *);
60e0cd04 71bool ovsdb_jsonrpc_server_is_read_only(struct ovsdb_jsonrpc_server *);
f85f8ebb 72
0d085684
BP
73void ovsdb_jsonrpc_server_get_memory_usage(const struct ovsdb_jsonrpc_server *,
74 struct simap *usage);
75
64fada26
AZ
76const struct uuid *ovsdb_jsonrpc_server_get_uuid(
77 const struct ovsdb_jsonrpc_server *);
78
2fa1df7b
AZ
79struct ovsdb_jsonrpc_monitor;
80void ovsdb_jsonrpc_monitor_destroy(struct ovsdb_jsonrpc_monitor *);
c383f3bf 81void ovsdb_jsonrpc_disable_monitor_cond(void);
2fa1df7b 82
f85f8ebb 83#endif /* ovsdb/jsonrpc-server.h */