-/* Copyright (c) 2009 Nicira Networks
+/* Copyright (c) 2009, 2010 Nicira Networks
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
struct ovsdb_row *row = xmalloc(row_size);
row->table = (struct ovsdb_table *) table;
row->txn_row = NULL;
+ list_init(&row->src_refs);
+ list_init(&row->dst_refs);
+ row->n_refs = 0;
return row;
}
{
if (row) {
const struct ovsdb_table *table = row->table;
+ struct ovsdb_weak_ref *weak, *next;
const struct shash_node *node;
+ LIST_FOR_EACH_SAFE (weak, next, struct ovsdb_weak_ref, dst_node,
+ &row->dst_refs) {
+ list_remove(&weak->src_node);
+ list_remove(&weak->dst_node);
+ free(weak);
+ }
+
+ LIST_FOR_EACH_SAFE (weak, next, struct ovsdb_weak_ref, src_node,
+ &row->src_refs) {
+ list_remove(&weak->src_node);
+ list_remove(&weak->dst_node);
+ free(weak);
+ }
+
SHASH_FOR_EACH (node, &table->schema->columns) {
const struct ovsdb_column *column = node->data;
ovsdb_datum_destroy(&row->fields[column->index], &column->type);
struct ovsdb_error *
ovsdb_row_from_json(struct ovsdb_row *row, const struct json *json,
- const struct ovsdb_symbol_table *symtab,
+ struct ovsdb_symbol_table *symtab,
struct ovsdb_column_set *included)
{
struct ovsdb_table_schema *schema = row->table->schema;