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