summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ovsdb-data.c17
-rw-r--r--lib/ovsdb-data.h5
2 files changed, 22 insertions, 0 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 *);