diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ovsdb-data.c | 17 | ||||
-rw-r--r-- | lib/ovsdb-data.h | 5 |
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 *); |