-/* Copyright (c) 2009, 2010, 2011 Nicira Networks
+/* Copyright (c) 2009, 2010, 2011 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
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;
OVSDB_TYPE_STRING, UINT_MAX);
if (!datum) {
- *stringp = NULL;
- return false;
+ return NULL;
}
for (i = 0; i < datum->n; i++) {
}
}
- *stringp = atom_value ? atom_value->string : NULL;
- return atom_value != NULL;
+ return atom_value ? atom_value->string : NULL;
}
static const union ovsdb_atom *
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
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",
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