X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ovsdb%2Ftable.h;h=fab9c5b6378dbc1415def951a19699a43186c64b;hb=c5cf10598f8c9f4428291e9df3ecd72a05fb1ccf;hp=ff99cf17c34ba012a6a075d51758b6dee33949bd;hpb=2e57b537305cbaa6f724a28957510a6d86aa2d0f;p=sliver-openvswitch.git diff --git a/ovsdb/table.h b/ovsdb/table.h index ff99cf17c..fab9c5b63 100644 --- a/ovsdb/table.h +++ b/ovsdb/table.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2009, 2010 Nicira Networks +/* Copyright (c) 2009, 2010, 2011 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,10 +29,14 @@ struct ovsdb_table_schema { char *name; bool mutable; struct shash columns; /* Contains "struct ovsdb_column *"s. */ + unsigned int max_rows; /* Maximum number of rows. */ + bool is_root; /* Part of garbage collection root set? */ + struct ovsdb_column_set *indexes; + size_t n_indexes; }; -struct ovsdb_table_schema *ovsdb_table_schema_create(const char *name, - bool mutable); +struct ovsdb_table_schema *ovsdb_table_schema_create( + const char *name, bool mutable, unsigned int max_rows, bool is_root); struct ovsdb_table_schema *ovsdb_table_schema_clone( const struct ovsdb_table_schema *); void ovsdb_table_schema_destroy(struct ovsdb_table_schema *); @@ -41,7 +45,8 @@ struct ovsdb_error *ovsdb_table_schema_from_json(const struct json *, const char *name, struct ovsdb_table_schema **) WARN_UNUSED_RESULT; -struct json *ovsdb_table_schema_to_json(const struct ovsdb_table_schema *); +struct json *ovsdb_table_schema_to_json(const struct ovsdb_table_schema *, + bool default_is_root); const struct ovsdb_column *ovsdb_table_schema_get_column( const struct ovsdb_table_schema *, const char *name); @@ -52,6 +57,11 @@ struct ovsdb_table { struct ovsdb_table_schema *schema; struct ovsdb_txn_table *txn_table; /* Only if table is in a transaction. */ struct hmap rows; /* Contains "struct ovsdb_row"s. */ + + /* An array of schema->n_indexes hmaps, each of which contains "struct + * ovsdb_row"s. Each of the hmap_nodes in indexes[i] are at index 'i' at + * the end of struct ovsdb_row, following the 'fields' member. */ + struct hmap *indexes; }; struct ovsdb_table *ovsdb_table_create(struct ovsdb_table_schema *); @@ -59,6 +69,5 @@ void ovsdb_table_destroy(struct ovsdb_table *); const struct ovsdb_row *ovsdb_table_get_row(const struct ovsdb_table *, const struct uuid *); -bool ovsdb_table_put_row(struct ovsdb_table *, struct ovsdb_row *); #endif /* ovsdb/table.h */