Several remote config options are configurable via the DB, e.g. inactivity_probe and max_backoff. This patch adds the ability to configure these options via the CLI as well, e.g.:
--remote="pssl:6640;inactivity_probe=10000,max_backoff=4000" Signed-off-by: Terry Wilson <twil...@redhat.com> --- ovsdb/ovsdb-server.1.in | 4 ++++ ovsdb/ovsdb-server.c | 42 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/ovsdb/ovsdb-server.1.in b/ovsdb/ovsdb-server.1.in index da7a6fd5d..aaa3059a9 100644 --- a/ovsdb/ovsdb-server.1.in +++ b/ovsdb/ovsdb-server.1.in @@ -103,6 +103,10 @@ It is an error for \fIcolumn\fR to have another type. .RE . .IP +When specifying a remote via the CLI, the options configurable via the +above columns may be added as a comma-separated list following a +semi-colon, e.g. \fB"pssl:6640;inactivity_probe=10000,max_backoff=4000"\fR. + To connect or listen on multiple connection methods, use multiple \fB\-\-remote\fR options. . diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c index 5549b4e3a..0e0d45fa1 100644 --- a/ovsdb/ovsdb-server.c +++ b/ovsdb/ovsdb-server.c @@ -998,6 +998,46 @@ add_manager_options(struct shash *remotes, const struct ovsdb_row *row) } } +static void +add_cli_remote(struct shash *remotes, const char *target_str) +{ + struct ovsdb_jsonrpc_options *options; + char *save_ptr = NULL; + char *target; + char *opt; + + target = xstrdup(target_str); + strtok_r(target, ";", &save_ptr); + options = add_remote(remotes, target); + for (opt = strtok_r(NULL, ",", &save_ptr); opt != NULL; + opt = strtok_r(NULL, ",", &save_ptr)) { + char *save_ptr2 = NULL; + char *key, *value; + + key = strtok_r(opt, "=", &save_ptr2); + value = strtok_r(NULL, ",", &save_ptr2); + if (value == NULL) { + continue; + } + if (!strcmp(key, "max_backoff")) { + options->max_backoff = atoi(value); + } else if (!strcmp(key, "inactivity_probe")) { + options->probe_interval = atoi(value); + } else if (!strcmp(key, "read_only")) { + options->read_only = !strcmp(value, "true"); + } else if (!strcmp(key, "role")) { + free(options->role); + options->role = xstrdup(value); + } else if (!strcmp(key, "dscp")) { + int dscp = atoi(value); + if (dscp >= 0 && dscp <= 63) { + options->dscp = dscp; + } + } + } + free(target); +} + static void query_db_remotes(const char *name, const struct shash *all_dbs, struct shash *remotes, struct ds *errors) @@ -1308,7 +1348,7 @@ reconfigure_remotes(struct ovsdb_jsonrpc_server *jsonrpc, if (!strncmp(name, "db:", 3)) { query_db_remotes(name, all_dbs, &resolved_remotes, &errors); } else { - add_remote(&resolved_remotes, name); + add_cli_remote(&resolved_remotes, name); } } ovsdb_jsonrpc_server_set_remotes(jsonrpc, &resolved_remotes); -- 2.34.3 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev