/src/openvswitch/lib/ovsdb-server-idl.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* Generated automatically -- do not modify! -*- buffer-read-only: t -*- */ |
2 | | |
3 | | #ifndef SERVERREC_IDL_HEADER |
4 | | #define SERVERREC_IDL_HEADER 1 |
5 | | |
6 | | #include <stdbool.h> |
7 | | #include <stddef.h> |
8 | | #include <stdint.h> |
9 | | #include "openvswitch/json.h" |
10 | | #include "ovsdb-data.h" |
11 | | #include "ovsdb-idl-provider.h" |
12 | | #include "smap.h" |
13 | | #include "uuid.h" |
14 | | |
15 | | #ifdef __cplusplus |
16 | | extern "C" { |
17 | | #endif |
18 | | |
19 | | struct ovsdb_type; |
20 | | |
21 | | |
22 | | /* Database table. */ |
23 | | struct serverrec_database { |
24 | | struct ovsdb_idl_row header_; |
25 | | |
26 | | /* cid column. */ |
27 | | struct uuid *cid; |
28 | | size_t n_cid; |
29 | | |
30 | | /* connected column. */ |
31 | | bool connected; |
32 | | |
33 | | /* index column. */ |
34 | | int64_t *index; |
35 | | size_t n_index; |
36 | | |
37 | | /* leader column. */ |
38 | | bool leader; |
39 | | |
40 | | /* model column. */ |
41 | | char *model; /* Always nonnull. */ |
42 | | |
43 | | /* name column. */ |
44 | | char *name; /* Always nonnull. */ |
45 | | |
46 | | /* schema column. */ |
47 | | char *schema; |
48 | | |
49 | | /* sid column. */ |
50 | | struct uuid *sid; |
51 | | size_t n_sid; |
52 | | }; |
53 | | |
54 | | enum serverrec_database_column_id { |
55 | | SERVERREC_DATABASE_COL_CID, |
56 | | SERVERREC_DATABASE_COL_CONNECTED, |
57 | | SERVERREC_DATABASE_COL_INDEX, |
58 | | SERVERREC_DATABASE_COL_LEADER, |
59 | | SERVERREC_DATABASE_COL_MODEL, |
60 | | SERVERREC_DATABASE_COL_NAME, |
61 | | SERVERREC_DATABASE_COL_SCHEMA, |
62 | | SERVERREC_DATABASE_COL_SID, |
63 | | SERVERREC_DATABASE_N_COLUMNS |
64 | | }; |
65 | | |
66 | | #define serverrec_database_col_cid (serverrec_database_columns[SERVERREC_DATABASE_COL_CID]) |
67 | | #define serverrec_database_col_connected (serverrec_database_columns[SERVERREC_DATABASE_COL_CONNECTED]) |
68 | | #define serverrec_database_col_index (serverrec_database_columns[SERVERREC_DATABASE_COL_INDEX]) |
69 | | #define serverrec_database_col_leader (serverrec_database_columns[SERVERREC_DATABASE_COL_LEADER]) |
70 | | #define serverrec_database_col_model (serverrec_database_columns[SERVERREC_DATABASE_COL_MODEL]) |
71 | | #define serverrec_database_col_name (serverrec_database_columns[SERVERREC_DATABASE_COL_NAME]) |
72 | | #define serverrec_database_col_schema (serverrec_database_columns[SERVERREC_DATABASE_COL_SCHEMA]) |
73 | | #define serverrec_database_col_sid (serverrec_database_columns[SERVERREC_DATABASE_COL_SID]) |
74 | | |
75 | | extern struct ovsdb_idl_column serverrec_database_columns[SERVERREC_DATABASE_N_COLUMNS]; |
76 | | bool serverrec_server_has_database_table_col_cid(const struct ovsdb_idl *); |
77 | | const struct ovsdb_type *serverrec_database_cid_server_type(const struct ovsdb_idl *); |
78 | | bool serverrec_server_has_database_table_col_connected(const struct ovsdb_idl *); |
79 | | const struct ovsdb_type *serverrec_database_connected_server_type(const struct ovsdb_idl *); |
80 | | bool serverrec_server_has_database_table_col_index(const struct ovsdb_idl *); |
81 | | const struct ovsdb_type *serverrec_database_index_server_type(const struct ovsdb_idl *); |
82 | | bool serverrec_server_has_database_table_col_leader(const struct ovsdb_idl *); |
83 | | const struct ovsdb_type *serverrec_database_leader_server_type(const struct ovsdb_idl *); |
84 | | bool serverrec_server_has_database_table_col_model(const struct ovsdb_idl *); |
85 | | const struct ovsdb_type *serverrec_database_model_server_type(const struct ovsdb_idl *); |
86 | | bool serverrec_server_has_database_table_col_name(const struct ovsdb_idl *); |
87 | | const struct ovsdb_type *serverrec_database_name_server_type(const struct ovsdb_idl *); |
88 | | bool serverrec_server_has_database_table_col_schema(const struct ovsdb_idl *); |
89 | | const struct ovsdb_type *serverrec_database_schema_server_type(const struct ovsdb_idl *); |
90 | | bool serverrec_server_has_database_table_col_sid(const struct ovsdb_idl *); |
91 | | const struct ovsdb_type *serverrec_database_sid_server_type(const struct ovsdb_idl *); |
92 | | |
93 | | bool serverrec_server_has_database_table(const struct ovsdb_idl *); |
94 | | const struct serverrec_database_table *serverrec_database_table_get(const struct ovsdb_idl *); |
95 | | const struct serverrec_database *serverrec_database_table_first(const struct serverrec_database_table *); |
96 | | |
97 | | #define SERVERREC_DATABASE_TABLE_FOR_EACH(ROW, TABLE) \ |
98 | | for ((ROW) = serverrec_database_table_first(TABLE); \ |
99 | | (ROW); \ |
100 | | (ROW) = serverrec_database_next(ROW)) |
101 | | #define SERVERREC_DATABASE_TABLE_FOR_EACH_SAFE_LONG(ROW, NEXT, TABLE) \ |
102 | | for ((ROW) = serverrec_database_table_first(TABLE); \ |
103 | | (ROW) ? ((NEXT) = serverrec_database_next(ROW), 1) : 0; \ |
104 | | (ROW) = (NEXT)) |
105 | | #define SERVERREC_DATABASE_TABLE_FOR_EACH_SAFE_SHORT(ROW, TABLE) \ |
106 | | for (const struct serverrec_database * ROW__next = ((ROW) = serverrec_database_table_first(TABLE), NULL); \ |
107 | | (ROW) ? (ROW__next = serverrec_database_next(ROW), 1) : (ROW__next = NULL, 0); \ |
108 | | (ROW) = ROW__next) |
109 | | #define SERVERREC_DATABASE_TABLE_FOR_EACH_SAFE(...) \ |
110 | | OVERLOAD_SAFE_MACRO(SERVERREC_DATABASE_TABLE_FOR_EACH_SAFE_LONG, \ |
111 | | SERVERREC_DATABASE_TABLE_FOR_EACH_SAFE_SHORT, 3, __VA_ARGS__) |
112 | | |
113 | | |
114 | | const struct serverrec_database *serverrec_database_get_for_uuid(const struct ovsdb_idl *, const struct uuid *); |
115 | | const struct serverrec_database *serverrec_database_table_get_for_uuid(const struct serverrec_database_table *, const struct uuid *); |
116 | | const struct serverrec_database *serverrec_database_first(const struct ovsdb_idl *); |
117 | | const struct serverrec_database *serverrec_database_next(const struct serverrec_database *); |
118 | | #define SERVERREC_DATABASE_FOR_EACH(ROW, IDL) \ |
119 | | for ((ROW) = serverrec_database_first(IDL); \ |
120 | | (ROW); \ |
121 | | (ROW) = serverrec_database_next(ROW)) |
122 | | #define SERVERREC_DATABASE_FOR_EACH_SAFE_LONG(ROW, NEXT, IDL) \ |
123 | | for ((ROW) = serverrec_database_first(IDL); \ |
124 | | (ROW) ? ((NEXT) = serverrec_database_next(ROW), 1) : 0; \ |
125 | | (ROW) = (NEXT)) |
126 | | #define SERVERREC_DATABASE_FOR_EACH_SAFE_SHORT(ROW, IDL) \ |
127 | | for (const struct serverrec_database * ROW__next = ((ROW) = serverrec_database_first(IDL), NULL); \ |
128 | | (ROW) ? (ROW__next = serverrec_database_next(ROW), 1) : (ROW__next = NULL, 0); \ |
129 | | (ROW) = ROW__next) |
130 | | #define SERVERREC_DATABASE_FOR_EACH_SAFE(...) \ |
131 | | OVERLOAD_SAFE_MACRO(SERVERREC_DATABASE_FOR_EACH_SAFE_LONG, \ |
132 | | SERVERREC_DATABASE_FOR_EACH_SAFE_SHORT, 3, __VA_ARGS__) |
133 | | |
134 | | unsigned int serverrec_database_get_seqno(const struct ovsdb_idl *); |
135 | | unsigned int serverrec_database_row_get_seqno(const struct serverrec_database *row, enum ovsdb_idl_change change); |
136 | | const struct serverrec_database *serverrec_database_track_get_first(const struct ovsdb_idl *); |
137 | | const struct serverrec_database *serverrec_database_track_get_next(const struct serverrec_database *); |
138 | | #define SERVERREC_DATABASE_FOR_EACH_TRACKED(ROW, IDL) \ |
139 | | for ((ROW) = serverrec_database_track_get_first(IDL); \ |
140 | | (ROW); \ |
141 | | (ROW) = serverrec_database_track_get_next(ROW)) |
142 | | |
143 | | const struct serverrec_database *serverrec_database_table_track_get_first(const struct serverrec_database_table *); |
144 | | #define SERVERREC_DATABASE_TABLE_FOR_EACH_TRACKED(ROW, TABLE) \ |
145 | | for ((ROW) = serverrec_database_table_track_get_first(TABLE); \ |
146 | | (ROW); \ |
147 | | (ROW) = serverrec_database_track_get_next(ROW)) |
148 | | |
149 | | |
150 | | /* Returns true if 'row' was inserted since the last change tracking reset. |
151 | | * |
152 | | * Note: This can only be used to test rows of tracked changes. This cannot be |
153 | | * used to test if an uncommitted row that has been added locally is new or it |
154 | | * may given unexpected results. */ |
155 | | static inline bool serverrec_database_is_new(const struct serverrec_database *row) |
156 | 0 | { |
157 | 0 | return serverrec_database_row_get_seqno(row, OVSDB_IDL_CHANGE_INSERT) > 0; |
158 | 0 | } |
159 | | |
160 | | /* Returns true if 'row' was deleted since the last change tracking reset. |
161 | | * |
162 | | * Note: This can only be used to test rows of tracked changes. This cannot be |
163 | | * used to test if an uncommitted row that has been added locally has been |
164 | | * deleted or it may given unexpected results. */ |
165 | | static inline bool serverrec_database_is_deleted(const struct serverrec_database *row) |
166 | 0 | { |
167 | 0 | return serverrec_database_row_get_seqno(row, OVSDB_IDL_CHANGE_DELETE) > 0; |
168 | 0 | } |
169 | | |
170 | | void serverrec_database_index_destroy_row(const struct serverrec_database *); |
171 | | |
172 | | struct serverrec_database *serverrec_database_index_find(struct ovsdb_idl_index *, const struct serverrec_database *); |
173 | | |
174 | | int serverrec_database_index_compare( |
175 | | struct ovsdb_idl_index *, |
176 | | const struct serverrec_database *, |
177 | | const struct serverrec_database *); |
178 | | struct ovsdb_idl_cursor serverrec_database_cursor_first(struct ovsdb_idl_index *); |
179 | | struct ovsdb_idl_cursor serverrec_database_cursor_first_eq( |
180 | | struct ovsdb_idl_index *, const struct serverrec_database *); |
181 | | struct ovsdb_idl_cursor serverrec_database_cursor_first_ge( |
182 | | struct ovsdb_idl_index *, const struct serverrec_database *); |
183 | | |
184 | | struct serverrec_database *serverrec_database_cursor_data(struct ovsdb_idl_cursor *); |
185 | | |
186 | | #define SERVERREC_DATABASE_FOR_EACH_RANGE(ROW, FROM, TO, INDEX) \ |
187 | | for (struct ovsdb_idl_cursor cursor__ = serverrec_database_cursor_first_ge(INDEX, FROM); \ |
188 | | (cursor__.position \ |
189 | | && ((ROW) = serverrec_database_cursor_data(&cursor__), \ |
190 | | !(TO) || serverrec_database_index_compare(INDEX, ROW, TO) <= 0)); \ |
191 | | ovsdb_idl_cursor_next(&cursor__)) |
192 | | #define SERVERREC_DATABASE_FOR_EACH_EQUAL(ROW, KEY, INDEX) \ |
193 | | for (struct ovsdb_idl_cursor cursor__ = serverrec_database_cursor_first_eq(INDEX, KEY); \ |
194 | | (cursor__.position \ |
195 | | ? ((ROW) = serverrec_database_cursor_data(&cursor__), \ |
196 | | ovsdb_idl_cursor_next_eq(&cursor__), \ |
197 | | true) \ |
198 | | : false); \ |
199 | | ) |
200 | | #define SERVERREC_DATABASE_FOR_EACH_BYINDEX(ROW, INDEX) \ |
201 | | for (struct ovsdb_idl_cursor cursor__ = serverrec_database_cursor_first(INDEX); \ |
202 | | (cursor__.position \ |
203 | | ? ((ROW) = serverrec_database_cursor_data(&cursor__), \ |
204 | | ovsdb_idl_cursor_next(&cursor__), \ |
205 | | true) \ |
206 | | : false); \ |
207 | | ) |
208 | | |
209 | | void serverrec_database_init(struct serverrec_database *); |
210 | | void serverrec_database_delete(const struct serverrec_database *); |
211 | | struct serverrec_database *serverrec_database_insert(struct ovsdb_idl_txn *); |
212 | | struct serverrec_database *serverrec_database_insert_persist_uuid( |
213 | | struct ovsdb_idl_txn *txn, const struct uuid *uuid); |
214 | | |
215 | | /* Returns true if the tracked column referenced by 'enum serverrec_database_column_id' of |
216 | | * the row referenced by 'struct serverrec_database *' was updated since the last change |
217 | | * tracking reset. |
218 | | * |
219 | | * Note: This can only be used to test rows of tracked changes. This cannot be |
220 | | * used to test if an uncommitted row that has been added locally has been |
221 | | * updated or it may given unexpected results. */ |
222 | | bool serverrec_database_is_updated(const struct serverrec_database *, enum serverrec_database_column_id); |
223 | | |
224 | | void serverrec_database_verify_cid(const struct serverrec_database *); |
225 | | void serverrec_database_verify_connected(const struct serverrec_database *); |
226 | | void serverrec_database_verify_index(const struct serverrec_database *); |
227 | | void serverrec_database_verify_leader(const struct serverrec_database *); |
228 | | void serverrec_database_verify_model(const struct serverrec_database *); |
229 | | void serverrec_database_verify_name(const struct serverrec_database *); |
230 | | void serverrec_database_verify_schema(const struct serverrec_database *); |
231 | | void serverrec_database_verify_sid(const struct serverrec_database *); |
232 | | |
233 | | const struct ovsdb_datum *serverrec_database_get_cid(const struct serverrec_database *, enum ovsdb_atomic_type key_type); |
234 | | const struct ovsdb_datum *serverrec_database_get_connected(const struct serverrec_database *, enum ovsdb_atomic_type key_type); |
235 | | const struct ovsdb_datum *serverrec_database_get_index(const struct serverrec_database *, enum ovsdb_atomic_type key_type); |
236 | | const struct ovsdb_datum *serverrec_database_get_leader(const struct serverrec_database *, enum ovsdb_atomic_type key_type); |
237 | | const struct ovsdb_datum *serverrec_database_get_model(const struct serverrec_database *, enum ovsdb_atomic_type key_type); |
238 | | const struct ovsdb_datum *serverrec_database_get_name(const struct serverrec_database *, enum ovsdb_atomic_type key_type); |
239 | | const struct ovsdb_datum *serverrec_database_get_schema(const struct serverrec_database *, enum ovsdb_atomic_type key_type); |
240 | | const struct ovsdb_datum *serverrec_database_get_sid(const struct serverrec_database *, enum ovsdb_atomic_type key_type); |
241 | | |
242 | | void serverrec_database_set_cid(const struct serverrec_database *, const struct uuid *cid, size_t n_cid); |
243 | | void serverrec_database_set_connected(const struct serverrec_database *, bool connected); |
244 | | void serverrec_database_set_index(const struct serverrec_database *, const int64_t *index, size_t n_index); |
245 | | void serverrec_database_set_leader(const struct serverrec_database *, bool leader); |
246 | | void serverrec_database_set_model(const struct serverrec_database *, const char *model); |
247 | | void serverrec_database_set_name(const struct serverrec_database *, const char *name); |
248 | | void serverrec_database_set_schema(const struct serverrec_database *, const char *schema); |
249 | | void serverrec_database_set_sid(const struct serverrec_database *, const struct uuid *sid, size_t n_sid); |
250 | | |
251 | | void serverrec_database_update_cid_addvalue(const struct serverrec_database *, struct uuid ); |
252 | | void serverrec_database_update_cid_delvalue(const struct serverrec_database *, struct uuid ); |
253 | | void serverrec_database_add_clause_cid(struct ovsdb_idl_condition *, enum ovsdb_function function, const struct uuid *cid, size_t n_cid); |
254 | | unsigned int serverrec_database_set_condition(struct ovsdb_idl *, struct ovsdb_idl_condition *); |
255 | | void serverrec_database_add_clause_connected(struct ovsdb_idl_condition *, enum ovsdb_function function, bool connected); |
256 | | unsigned int serverrec_database_set_condition(struct ovsdb_idl *, struct ovsdb_idl_condition *); |
257 | | void serverrec_database_update_index_addvalue(const struct serverrec_database *, int64_t ); |
258 | | void serverrec_database_update_index_delvalue(const struct serverrec_database *, int64_t ); |
259 | | void serverrec_database_add_clause_index(struct ovsdb_idl_condition *, enum ovsdb_function function, const int64_t *index, size_t n_index); |
260 | | unsigned int serverrec_database_set_condition(struct ovsdb_idl *, struct ovsdb_idl_condition *); |
261 | | void serverrec_database_add_clause_leader(struct ovsdb_idl_condition *, enum ovsdb_function function, bool leader); |
262 | | unsigned int serverrec_database_set_condition(struct ovsdb_idl *, struct ovsdb_idl_condition *); |
263 | | void serverrec_database_add_clause_model(struct ovsdb_idl_condition *, enum ovsdb_function function, const char *model); |
264 | | unsigned int serverrec_database_set_condition(struct ovsdb_idl *, struct ovsdb_idl_condition *); |
265 | | void serverrec_database_add_clause_name(struct ovsdb_idl_condition *, enum ovsdb_function function, const char *name); |
266 | | unsigned int serverrec_database_set_condition(struct ovsdb_idl *, struct ovsdb_idl_condition *); |
267 | | void serverrec_database_update_schema_addvalue(const struct serverrec_database *, const char *); |
268 | | void serverrec_database_update_schema_delvalue(const struct serverrec_database *, const char *); |
269 | | void serverrec_database_add_clause_schema(struct ovsdb_idl_condition *, enum ovsdb_function function, const char *schema); |
270 | | unsigned int serverrec_database_set_condition(struct ovsdb_idl *, struct ovsdb_idl_condition *); |
271 | | void serverrec_database_update_sid_addvalue(const struct serverrec_database *, struct uuid ); |
272 | | void serverrec_database_update_sid_delvalue(const struct serverrec_database *, struct uuid ); |
273 | | void serverrec_database_add_clause_sid(struct ovsdb_idl_condition *, enum ovsdb_function function, const struct uuid *sid, size_t n_sid); |
274 | | unsigned int serverrec_database_set_condition(struct ovsdb_idl *, struct ovsdb_idl_condition *); |
275 | | |
276 | | struct serverrec_database *serverrec_database_index_init_row(struct ovsdb_idl_index *); |
277 | | void serverrec_database_index_set_cid(const struct serverrec_database *, |
278 | | const struct uuid *cid, size_t n_cid); |
279 | | void serverrec_database_index_set_connected(const struct serverrec_database *, |
280 | | bool connected); |
281 | | void serverrec_database_index_set_index(const struct serverrec_database *, |
282 | | const int64_t *index, size_t n_index); |
283 | | void serverrec_database_index_set_leader(const struct serverrec_database *, |
284 | | bool leader); |
285 | | void serverrec_database_index_set_model(const struct serverrec_database *, |
286 | | const char *model); |
287 | | void serverrec_database_index_set_name(const struct serverrec_database *, |
288 | | const char *name); |
289 | | void serverrec_database_index_set_schema(const struct serverrec_database *, |
290 | | const char *schema); |
291 | | void serverrec_database_index_set_sid(const struct serverrec_database *, |
292 | | const struct uuid *sid, size_t n_sid); |
293 | | |
294 | | enum serverrec_table_id { |
295 | | SERVERREC_TABLE_DATABASE, |
296 | | SERVERREC_N_TABLES |
297 | | }; |
298 | | |
299 | | #define serverrec_table_database (serverrec_table_classes[SERVERREC_TABLE_DATABASE]) |
300 | | |
301 | | extern struct ovsdb_idl_table_class serverrec_table_classes[SERVERREC_N_TABLES]; |
302 | | |
303 | | extern struct ovsdb_idl_class serverrec_idl_class; |
304 | | |
305 | | const char * serverrec_get_db_version(void); |
306 | | |
307 | | #ifdef __cplusplus |
308 | | } |
309 | | #endif |
310 | | |
311 | | #endif /* SERVERREC_IDL_HEADER */ |