summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ovsdb-data.c17
-rw-r--r--lib/ovsdb-data.h5
-rw-r--r--ovsdb/ovsdb-client.c5
3 files changed, 24 insertions, 3 deletions
diff --git a/lib/ovsdb-data.c b/lib/ovsdb-data.c
index cdd1bb653..87d8effd1 100644
--- a/lib/ovsdb-data.c
+++ b/lib/ovsdb-data.c
@@ -1341,6 +1341,23 @@ ovsdb_transient_datum_from_json(struct ovsdb_datum *datum,
return ovsdb_datum_from_json(datum, &relaxed_type, json, NULL);
}
+/* Parses 'json' as a datum of the type described by 'type', but ignoring all
+ * constraints. */
+struct ovsdb_error * OVS_WARN_UNUSED_RESULT
+ovsdb_unconstrained_datum_from_json(struct ovsdb_datum *datum,
+ const struct ovsdb_type *type,
+ const struct json *json)
+{
+ struct ovsdb_type relaxed_type;
+
+ ovsdb_base_type_init(&relaxed_type.key, type->key.type);
+ ovsdb_base_type_init(&relaxed_type.value, type->value.type);
+ relaxed_type.n_min = 0;
+ relaxed_type.n_max = UINT_MAX;
+
+ return ovsdb_datum_from_json(datum, &relaxed_type, json, NULL);
+}
+
static struct json *
ovsdb_base_to_json(const union ovsdb_atom *atom,
const struct ovsdb_base_type *base,
diff --git a/lib/ovsdb-data.h b/lib/ovsdb-data.h
index 84639c4a3..c842fe28f 100644
--- a/lib/ovsdb-data.h
+++ b/lib/ovsdb-data.h
@@ -173,6 +173,11 @@ struct ovsdb_error *ovsdb_transient_datum_from_json(
const struct ovsdb_type *,
const struct json *)
OVS_WARN_UNUSED_RESULT;
+struct ovsdb_error *
+ovsdb_unconstrained_datum_from_json(struct ovsdb_datum *,
+ const struct ovsdb_type *,
+ const struct json *)
+ OVS_WARN_UNUSED_RESULT;
struct json *ovsdb_datum_to_json(const struct ovsdb_datum *,
const struct ovsdb_type *);
diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c
index 947cad0c7..f930c0e09 100644
--- a/ovsdb/ovsdb-client.c
+++ b/ovsdb/ovsdb-client.c
@@ -1312,9 +1312,8 @@ dump_table(const char *table_name, const struct shash *cols,
y, table_name, columns[x]->name);
}
- check_ovsdb_error(ovsdb_datum_from_json(&data[y][x],
- &columns[x]->type,
- json, NULL));
+ check_ovsdb_error(ovsdb_unconstrained_datum_from_json(
+ &data[y][x], &columns[x]->type, json));
}
}