projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
odp-util: Fix parsing of actions encapsulated within "sample" actions.
[openvswitch]
/
lib
/
ovsdb-data.c
diff --git
a/lib/ovsdb-data.c
b/lib/ovsdb-data.c
index 150ae618ef83106ea4fc6bc8754f0990a0f118dc..58c2a10a076fc98936ea398c6b28b3ed42d07089 100644
(file)
--- a/
lib/ovsdb-data.c
+++ b/
lib/ovsdb-data.c
@@
-1,4
+1,4
@@
-/* Copyright (c) 2009, 2010, 2011
Nicira Networks
+/* Copyright (c) 2009, 2010, 2011
, 2012 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-590,6
+590,7
@@
ovsdb_atom_from_string(union ovsdb_atom *atom,
error = ovsdb_atom_check_constraints(atom, base);
if (error) {
error = ovsdb_atom_check_constraints(atom, base);
if (error) {
+ ovsdb_atom_destroy(atom, base->type);
msg = ovsdb_error_to_string(error);
ovsdb_error_destroy(error);
}
msg = ovsdb_error_to_string(error);
ovsdb_error_destroy(error);
}
@@
-690,8
+691,7
@@
check_string_constraints(const char *s,
struct ovsdb_error *error;
error = ovsdb_error("constraint violation",
struct ovsdb_error *error;
error = ovsdb_error("constraint violation",
- "\"%s\" is not a valid UTF-8 string: %s",
- s, msg);
+ "not a valid UTF-8 string: %s", msg);
free(msg);
return error;
}
free(msg);
return error;
}
@@
-1279,30
+1279,30
@@
struct json *
ovsdb_datum_to_json(const struct ovsdb_datum *datum,
const struct ovsdb_type *type)
{
ovsdb_datum_to_json(const struct ovsdb_datum *datum,
const struct ovsdb_type *type)
{
- if (datum->n == 1 && !ovsdb_type_is_map(type)) {
- return ovsdb_atom_to_json(&datum->keys[0], type->key.type);
- } else if (type->value.type == OVSDB_TYPE_VOID) {
+ if (ovsdb_type_is_map(type)) {
struct json **elems;
size_t i;
elems = xmalloc(datum->n * sizeof *elems);
for (i = 0; i < datum->n; i++) {
struct json **elems;
size_t i;
elems = xmalloc(datum->n * sizeof *elems);
for (i = 0; i < datum->n; i++) {
- elems[i] = ovsdb_atom_to_json(&datum->keys[i], type->key.type);
+ elems[i] = json_array_create_2(
+ ovsdb_atom_to_json(&datum->keys[i], type->key.type),
+ ovsdb_atom_to_json(&datum->values[i], type->value.type));
}
}
- return wrap_json("set", json_array_create(elems, datum->n));
+ return wrap_json("map", json_array_create(elems, datum->n));
+ } else if (datum->n == 1) {
+ return ovsdb_atom_to_json(&datum->keys[0], type->key.type);
} else {
struct json **elems;
size_t i;
elems = xmalloc(datum->n * sizeof *elems);
for (i = 0; i < datum->n; i++) {
} else {
struct json **elems;
size_t i;
elems = xmalloc(datum->n * sizeof *elems);
for (i = 0; i < datum->n; i++) {
- elems[i] = json_array_create_2(
- ovsdb_atom_to_json(&datum->keys[i], type->key.type),
- ovsdb_atom_to_json(&datum->values[i], type->value.type));
+ elems[i] = ovsdb_atom_to_json(&datum->keys[i], type->key.type);
}
}
- return wrap_json("
map
", json_array_create(elems, datum->n));
+ return wrap_json("
set
", json_array_create(elems, datum->n));
}
}
}
}
@@
-1688,6
+1688,9
@@
ovsdb_datum_includes_all(const struct ovsdb_datum *a,
{
size_t i;
{
size_t i;
+ if (a->n > b->n) {
+ return false;
+ }
for (i = 0; i < a->n; i++) {
if (ovsdb_datum_find(a, i, b, type) == UINT_MAX) {
return false;
for (i = 0; i < a->n; i++) {
if (ovsdb_datum_find(a, i, b, type) == UINT_MAX) {
return false;