aboutsummaryrefslogtreecommitdiff
path: root/ovsdb/ovsdb-server.c
diff options
context:
space:
mode:
Diffstat (limited to 'ovsdb/ovsdb-server.c')
-rw-r--r--ovsdb/ovsdb-server.c41
1 files changed, 15 insertions, 26 deletions
diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c
index 69940181..d8363a2c 100644
--- a/ovsdb/ovsdb-server.c
+++ b/ovsdb/ovsdb-server.c
@@ -319,12 +319,11 @@ get_datum(struct ovsdb_row *row, const char *column_name,
return &row->fields[column->index];
}
-/* This function is used to read the string-string key-values from a map.
- * Returns the true if the 'key' is found and returns the "value" associated
- * with the 'key' in 'stringp', else returns false. */
-static bool
+/* Read string-string key-values from a map. Returns the value associated with
+ * 'key', if found, or NULL */
+static const char *
read_map_string_column(const struct ovsdb_row *row, const char *column_name,
- const char **stringp, const char *key)
+ const char *key)
{
const struct ovsdb_datum *datum;
union ovsdb_atom *atom_key = NULL, *atom_value = NULL;
@@ -334,8 +333,7 @@ read_map_string_column(const struct ovsdb_row *row, const char *column_name,
OVSDB_TYPE_STRING, UINT_MAX);
if (!datum) {
- *stringp = NULL;
- return false;
+ return NULL;
}
for (i = 0; i < datum->n; i++) {
@@ -346,8 +344,7 @@ read_map_string_column(const struct ovsdb_row *row, const char *column_name,
}
}
- *stringp = atom_value ? atom_value->string : NULL;
- return atom_value != NULL;
+ return atom_value ? atom_value->string : NULL;
}
static const union ovsdb_atom *
@@ -427,21 +424,6 @@ write_string_string_column(struct ovsdb_row *row, const char *column_name,
ovsdb_datum_sort_assert(datum, column->type.key.type);
}
-/* Get the other config for the manager from the database. */
-static void
-manager_get_other_config(const struct ovsdb_row *row,
- struct ovsdb_jsonrpc_options *options)
-{
- const char *temp_string;
-
- /* Retrieve the configs and store in the options. */
- if (read_map_string_column(row, "other_config", &temp_string, "dscp")) {
- options->dscp = atoi(temp_string);
- } else {
- options->dscp = DSCP_DEFAULT;
- }
-}
-
/* Adds a remote and options to 'remotes', based on the Manager table row in
* 'row'. */
static void
@@ -450,7 +432,7 @@ add_manager_options(struct shash *remotes, const struct ovsdb_row *row)
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 1);
struct ovsdb_jsonrpc_options *options;
long long int max_backoff, probe_interval;
- const char *target;
+ const char *target, *dscp_string;
if (!read_string_column(row, "target", &target) || !target) {
VLOG_INFO_RL(&rl, "Table `%s' has missing or invalid `target' column",
@@ -466,7 +448,14 @@ add_manager_options(struct shash *remotes, const struct ovsdb_row *row)
options->probe_interval = probe_interval;
}
- manager_get_other_config(row, options);
+ options->dscp = DSCP_DEFAULT;
+ dscp_string = read_map_string_column(row, "other_config", "dscp");
+ if (dscp_string) {
+ int dscp = atoi(dscp_string);
+ if (dscp >= 0 && dscp <= 63) {
+ options->dscp = dscp;
+ }
+ }
}
static void