X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ovsdb%2Fjsonrpc-server.c;h=73c3c1c0591abdc976b4af8a95e7876463714324;hb=87eeed4c03ebb0847c093eeb8a6b7af5f2fd33af;hp=26fabe52e6f294b03178564fb59c89099a814adf;hpb=9cb53f2613d0194b85dddfdafc11d7193d6561e3;p=openvswitch diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c index 26fabe52..73c3c1c0 100644 --- a/ovsdb/jsonrpc-server.c +++ b/ovsdb/jsonrpc-server.c @@ -20,6 +20,7 @@ #include #include +#include "bitmap.h" #include "column.h" #include "json.h" #include "jsonrpc.h" @@ -804,6 +805,7 @@ struct ovsdb_jsonrpc_monitor_aux { static bool ovsdb_jsonrpc_monitor_change_cb(const struct ovsdb_row *old, const struct ovsdb_row *new, + const unsigned long int *changed, void *aux_) { struct ovsdb_jsonrpc_monitor_aux *aux = aux_; @@ -841,14 +843,13 @@ ovsdb_jsonrpc_monitor_change_cb(const struct ovsdb_row *old, for (i = 0; i < aux->mt->columns.n_columns; i++) { const struct ovsdb_column *column = aux->mt->columns.columns[i]; unsigned int idx = column->index; - bool changed = false; + bool column_changed = false; if (type == OJMS_MODIFY) { - changed = !ovsdb_datum_equals(&old->fields[idx], - &new->fields[idx], &column->type); - n_changed += changed; + column_changed = bitmap_is_set(changed, idx); + n_changed += column_changed; } - if (changed || type == OJMS_DELETE) { + if (column_changed || type == OJMS_DELETE) { if (!old_json) { old_json = json_object_create(); } @@ -915,7 +916,8 @@ ovsdb_jsonrpc_monitor_init_aux(struct ovsdb_jsonrpc_monitor_aux *aux, static struct ovsdb_error * ovsdb_jsonrpc_monitor_commit(struct ovsdb_replica *replica, - const struct ovsdb_txn *txn, bool durable UNUSED) + const struct ovsdb_txn *txn, + bool durable OVS_UNUSED) { struct ovsdb_jsonrpc_monitor *m = ovsdb_jsonrpc_monitor_cast(replica); struct ovsdb_jsonrpc_monitor_aux aux; @@ -950,7 +952,7 @@ ovsdb_jsonrpc_monitor_get_initial(const struct ovsdb_jsonrpc_monitor *m) HMAP_FOR_EACH (row, struct ovsdb_row, hmap_node, &mt->table->rows) { - ovsdb_jsonrpc_monitor_change_cb(NULL, row, &aux); + ovsdb_jsonrpc_monitor_change_cb(NULL, row, NULL, &aux); } } }