libsmb: Use clistr_smb2_extract_snapshot_token() in cli_smb2_create_fnum_send()
[Samba.git] / ctdb / protocol / protocol_api.h
blob48e4e84391dfd0bfd52ba1018d602e2bc2a59a78
1 /*
2 CTDB protocol marshalling
4 Copyright (C) Amitay Isaacs 2015
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, see <http://www.gnu.org/licenses/>.
20 #ifndef __CTDB_PROTOCOL_API_H__
21 #define __CTDB_PROTOCOL_API_H__
23 #include <talloc.h>
25 #include "protocol/protocol.h"
27 /* From protocol/protocol_types.c */
29 size_t ctdb_ltdb_header_len(struct ctdb_ltdb_header *in);
30 void ctdb_ltdb_header_push(struct ctdb_ltdb_header *in, uint8_t *buf,
31 size_t *npush);
32 int ctdb_ltdb_header_pull(uint8_t *buf, size_t buflen,
33 struct ctdb_ltdb_header *out, size_t *npull);
35 int ctdb_ltdb_header_extract(TDB_DATA *data, struct ctdb_ltdb_header *header);
37 size_t ctdb_rec_data_len(struct ctdb_rec_data *in);
38 void ctdb_rec_data_push(struct ctdb_rec_data *in, uint8_t *buf, size_t *npush);
39 int ctdb_rec_data_pull(uint8_t *buf, size_t buflen, TALLOC_CTX *mem_ctx,
40 struct ctdb_rec_data **out, size_t *npull);
42 size_t ctdb_rec_buffer_len(struct ctdb_rec_buffer *in);
43 void ctdb_rec_buffer_push(struct ctdb_rec_buffer *in, uint8_t *buf,
44 size_t *npush);
45 int ctdb_rec_buffer_pull(uint8_t *buf, size_t buflen, TALLOC_CTX *mem_ctx,
46 struct ctdb_rec_buffer **out, size_t *npull);
48 struct ctdb_rec_buffer *ctdb_rec_buffer_init(TALLOC_CTX *mem_ctx,
49 uint32_t db_id);
50 int ctdb_rec_buffer_add(TALLOC_CTX *mem_ctx, struct ctdb_rec_buffer *recbuf,
51 uint32_t reqid, struct ctdb_ltdb_header *header,
52 TDB_DATA key, TDB_DATA data);
53 int ctdb_rec_buffer_traverse(struct ctdb_rec_buffer *recbuf,
54 ctdb_rec_parser_func_t func,
55 void *private_data);
57 int ctdb_rec_buffer_write(struct ctdb_rec_buffer *recbuf, int fd);
58 int ctdb_rec_buffer_read(int fd, TALLOC_CTX *mem_ctx,
59 struct ctdb_rec_buffer **out);
61 size_t ctdb_server_id_len(struct ctdb_server_id *in);
62 void ctdb_server_id_push(struct ctdb_server_id *in, uint8_t *buf,
63 size_t *npush);
64 int ctdb_server_id_pull(uint8_t *buf, size_t buflen,
65 struct ctdb_server_id *out, size_t *npull);
67 size_t ctdb_g_lock_len(struct ctdb_g_lock *in);
68 void ctdb_g_lock_push(struct ctdb_g_lock *in, uint8_t *buf, size_t *npush);
69 int ctdb_g_lock_pull(uint8_t *buf, size_t buflen, struct ctdb_g_lock *out,
70 size_t *npull);
72 size_t ctdb_g_lock_list_len(struct ctdb_g_lock_list *in);
73 void ctdb_g_lock_list_push(struct ctdb_g_lock_list *in, uint8_t *buf,
74 size_t *npush);
75 int ctdb_g_lock_list_pull(uint8_t *buf, size_t buflen, TALLOC_CTX *mem_ctx,
76 struct ctdb_g_lock_list **out, size_t *npull);
78 /* From protocol/protocol_header.c */
80 void ctdb_req_header_fill(struct ctdb_req_header *h, uint32_t generation,
81 uint32_t operation, uint32_t destnode,
82 uint32_t srcnode, uint32_t reqid);
84 size_t ctdb_req_header_len(struct ctdb_req_header *in);
85 void ctdb_req_header_push(struct ctdb_req_header *in, uint8_t *buf,
86 size_t *npush);
87 int ctdb_req_header_pull(uint8_t *buf, size_t buflen,
88 struct ctdb_req_header *out, size_t *npull);
90 int ctdb_req_header_verify(struct ctdb_req_header *h, uint32_t operation);
92 /* From protocol/protocol_call.c */
94 size_t ctdb_req_call_len(struct ctdb_req_header *h,
95 struct ctdb_req_call *c);
97 int ctdb_req_call_push(struct ctdb_req_header *h,
98 struct ctdb_req_call *c,
99 uint8_t *buf, size_t *buflen);
101 int ctdb_req_call_pull(uint8_t *buf, size_t buflen,
102 struct ctdb_req_header *h,
103 TALLOC_CTX *mem_ctx,
104 struct ctdb_req_call *c);
106 size_t ctdb_reply_call_len(struct ctdb_req_header *h,
107 struct ctdb_reply_call *c);
109 int ctdb_reply_call_push(struct ctdb_req_header *h,
110 struct ctdb_reply_call *c,
111 uint8_t *buf, size_t *buflen);
113 int ctdb_reply_call_pull(uint8_t *buf, size_t buflen,
114 struct ctdb_req_header *h,
115 TALLOC_CTX *mem_ctx,
116 struct ctdb_reply_call *c);
118 size_t ctdb_reply_error_len(struct ctdb_req_header *h,
119 struct ctdb_reply_error *c);
121 int ctdb_reply_error_push(struct ctdb_req_header *h,
122 struct ctdb_reply_error *c,
123 uint8_t *buf, size_t *buflen);
125 int ctdb_reply_error_pull(uint8_t *buf, size_t buflen,
126 struct ctdb_req_header *h,
127 TALLOC_CTX *mem_ctx,
128 struct ctdb_reply_error *c);
130 size_t ctdb_req_dmaster_len(struct ctdb_req_header *h,
131 struct ctdb_req_dmaster *c);
133 int ctdb_req_dmaster_push(struct ctdb_req_header *h,
134 struct ctdb_req_dmaster *c,
135 uint8_t *buf, size_t *buflen);
137 int ctdb_req_dmaster_pull(uint8_t *buf, size_t buflen,
138 struct ctdb_req_header *h,
139 TALLOC_CTX *mem_ctx,
140 struct ctdb_req_dmaster *c);
142 size_t ctdb_reply_dmaster_len(struct ctdb_req_header *h,
143 struct ctdb_reply_dmaster *c);
145 int ctdb_reply_dmaster_push(struct ctdb_req_header *h,
146 struct ctdb_reply_dmaster *c,
147 uint8_t *buf, size_t *buflen);
149 int ctdb_reply_dmaster_pull(uint8_t *buf, size_t buflen,
150 struct ctdb_req_header *h,
151 TALLOC_CTX *mem_ctx,
152 struct ctdb_reply_dmaster *c);
154 /* From protocol/protocol_control.c */
156 size_t ctdb_req_control_len(struct ctdb_req_header *h,
157 struct ctdb_req_control *c);
159 int ctdb_req_control_push(struct ctdb_req_header *h,
160 struct ctdb_req_control *c,
161 uint8_t *buf, size_t *buflen);
163 int ctdb_req_control_pull(uint8_t *buf, size_t buflen,
164 struct ctdb_req_header *h,
165 TALLOC_CTX *mem_ctx,
166 struct ctdb_req_control *c);
168 size_t ctdb_reply_control_len(struct ctdb_req_header *h,
169 struct ctdb_reply_control *c);
171 int ctdb_reply_control_push(struct ctdb_req_header *h,
172 struct ctdb_reply_control *c,
173 uint8_t *buf, size_t *buflen);
175 int ctdb_reply_control_pull(uint8_t *buf, size_t buflen, uint32_t opcode,
176 struct ctdb_req_header *h,
177 TALLOC_CTX *mem_ctx,
178 struct ctdb_reply_control *c);
180 /* From protocol/protocol_client.c */
182 void ctdb_req_control_process_exists(struct ctdb_req_control *request,
183 pid_t pid);
184 int ctdb_reply_control_process_exists(struct ctdb_reply_control *reply,
185 int *status);
187 void ctdb_req_control_statistics(struct ctdb_req_control *request);
189 int ctdb_reply_control_statistics(struct ctdb_reply_control *reply,
190 TALLOC_CTX *mem_ctx,
191 struct ctdb_statistics **stats);
193 void ctdb_req_control_ping(struct ctdb_req_control *request);
194 int ctdb_reply_control_ping(struct ctdb_reply_control *reply,
195 int *num_clients);
197 void ctdb_req_control_getdbpath(struct ctdb_req_control *request,
198 uint32_t db_id);
199 int ctdb_reply_control_getdbpath(struct ctdb_reply_control *reply,
200 TALLOC_CTX *mem_ctx, const char **db_path);
202 void ctdb_req_control_getvnnmap(struct ctdb_req_control *request);
203 int ctdb_reply_control_getvnnmap(struct ctdb_reply_control *reply,
204 TALLOC_CTX *mem_ctx,
205 struct ctdb_vnn_map **vnnmap);
207 void ctdb_req_control_setvnnmap(struct ctdb_req_control *request,
208 struct ctdb_vnn_map *vnnmap);
209 int ctdb_reply_control_setvnnmap(struct ctdb_reply_control *reply);
211 void ctdb_req_control_get_debug(struct ctdb_req_control *request);
212 int ctdb_reply_control_get_debug(struct ctdb_reply_control *reply,
213 int *debug_level);
215 void ctdb_req_control_set_debug(struct ctdb_req_control *request,
216 int debug_level);
217 int ctdb_reply_control_set_debug(struct ctdb_reply_control *reply);
219 void ctdb_req_control_get_dbmap(struct ctdb_req_control *request);
220 int ctdb_reply_control_get_dbmap(struct ctdb_reply_control *reply,
221 TALLOC_CTX *mem_ctx,
222 struct ctdb_dbid_map **dbmap);
224 void ctdb_req_control_get_recmode(struct ctdb_req_control *request);
225 int ctdb_reply_control_get_recmode(struct ctdb_reply_control *reply,
226 int *recmode);
228 void ctdb_req_control_set_recmode(struct ctdb_req_control *request,
229 int recmode);
230 int ctdb_reply_control_set_recmode(struct ctdb_reply_control *reply);
232 void ctdb_req_control_statistics_reset(struct ctdb_req_control *request);
233 int ctdb_reply_control_statistics_reset(struct ctdb_reply_control *reply);
235 void ctdb_req_control_db_attach(struct ctdb_req_control *request,
236 const char *db_name);
237 int ctdb_reply_control_db_attach(struct ctdb_reply_control *reply,
238 uint32_t *db_id);
240 void ctdb_req_control_traverse_start(struct ctdb_req_control *request,
241 struct ctdb_traverse_start *traverse);
242 int ctdb_reply_control_traverse_start(struct ctdb_reply_control *reply);
244 void ctdb_req_control_register_srvid(struct ctdb_req_control *request,
245 uint64_t srvid);
246 int ctdb_reply_control_register_srvid(struct ctdb_reply_control *reply);
248 void ctdb_req_control_deregister_srvid(struct ctdb_req_control *request,
249 uint64_t srvid);
250 int ctdb_reply_control_deregister_srvid(struct ctdb_reply_control *reply);
252 void ctdb_req_control_get_dbname(struct ctdb_req_control *request,
253 uint32_t db_id);
254 int ctdb_reply_control_get_dbname(struct ctdb_reply_control *reply,
255 TALLOC_CTX *mem_ctx, const char **db_name);
257 void ctdb_req_control_enable_seqnum(struct ctdb_req_control *request,
258 uint32_t db_id);
259 int ctdb_reply_control_enable_seqnum(struct ctdb_reply_control *reply);
261 void ctdb_req_control_update_seqnum(struct ctdb_req_control *request,
262 uint32_t db_id);
263 int ctdb_reply_control_update_seqnum(struct ctdb_reply_control *reply);
265 void ctdb_req_control_dump_memory(struct ctdb_req_control *request);
266 int ctdb_reply_control_dump_memory(struct ctdb_reply_control *reply,
267 TALLOC_CTX *mem_ctx, const char **mem_str);
269 void ctdb_req_control_get_pid(struct ctdb_req_control *request);
270 int ctdb_reply_control_get_pid(struct ctdb_reply_control *reply,
271 pid_t *pid);
273 void ctdb_req_control_freeze(struct ctdb_req_control *request,
274 uint32_t priority);
275 int ctdb_reply_control_freeze(struct ctdb_reply_control *reply);
277 void ctdb_req_control_get_pnn(struct ctdb_req_control *request);
278 int ctdb_reply_control_get_pnn(struct ctdb_reply_control *reply,
279 uint32_t *pnn);
281 void ctdb_req_control_shutdown(struct ctdb_req_control *request);
282 int ctdb_reply_control_shutdown(struct ctdb_reply_control *reply);
284 void ctdb_req_control_tcp_client(struct ctdb_req_control *request,
285 struct ctdb_connection *conn);
286 int ctdb_reply_control_tcp_client(struct ctdb_reply_control *reply);
288 void ctdb_req_control_tcp_add(struct ctdb_req_control *request,
289 struct ctdb_connection *conn);
290 int ctdb_reply_control_tcp_add(struct ctdb_reply_control *reply);
292 void ctdb_req_control_tcp_remove(struct ctdb_req_control *request,
293 struct ctdb_connection *conn);
294 int ctdb_reply_control_tcp_remove(struct ctdb_reply_control *reply);
296 void ctdb_req_control_startup(struct ctdb_req_control *request);
297 int ctdb_reply_control_startup(struct ctdb_reply_control *reply);
299 void ctdb_req_control_set_tunable(struct ctdb_req_control *request,
300 struct ctdb_tunable *tunable);
301 int ctdb_reply_control_set_tunable(struct ctdb_reply_control *reply);
303 void ctdb_req_control_get_tunable(struct ctdb_req_control *request,
304 const char *name);
305 int ctdb_reply_control_get_tunable(struct ctdb_reply_control *reply,
306 uint32_t *value);
308 void ctdb_req_control_list_tunables(struct ctdb_req_control *request);
309 int ctdb_reply_control_list_tunables(struct ctdb_reply_control *reply,
310 TALLOC_CTX *mem_ctx,
311 struct ctdb_var_list **tun_var_list);
313 void ctdb_req_control_modify_flags(struct ctdb_req_control *request,
314 struct ctdb_node_flag_change *flag_change);
315 int ctdb_reply_control_modify_flags(struct ctdb_reply_control *reply);
317 void ctdb_req_control_get_all_tunables(struct ctdb_req_control *request);
318 int ctdb_reply_control_get_all_tunables(struct ctdb_reply_control *reply,
319 TALLOC_CTX *mem_ctx,
320 struct ctdb_tunable_list **tun_list);
322 void ctdb_req_control_get_tcp_tickle_list(struct ctdb_req_control *request,
323 ctdb_sock_addr *addr);
324 int ctdb_reply_control_get_tcp_tickle_list(struct ctdb_reply_control *reply,
325 TALLOC_CTX *mem_ctx,
326 struct ctdb_tickle_list **tickles);
328 void ctdb_req_control_set_tcp_tickle_list(struct ctdb_req_control *request,
329 struct ctdb_tickle_list *tickles);
330 int ctdb_reply_control_set_tcp_tickle_list(struct ctdb_reply_control *reply);
332 void ctdb_req_control_db_attach_persistent(struct ctdb_req_control *request,
333 const char *name);
334 int ctdb_reply_control_db_attach_persistent(struct ctdb_reply_control *reply,
335 uint32_t *db_id);
337 void ctdb_req_control_update_record(struct ctdb_req_control *request,
338 struct ctdb_rec_buffer *recbuf);
339 int ctdb_reply_control_update_record(struct ctdb_reply_control *reply);
341 void ctdb_req_control_send_gratuitous_arp(struct ctdb_req_control *request,
342 struct ctdb_addr_info *addr_info);
343 int ctdb_reply_control_send_gratuitous_arp(struct ctdb_reply_control *reply);
345 void ctdb_req_control_wipe_database(struct ctdb_req_control *request,
346 struct ctdb_transdb *transdb);
347 int ctdb_reply_control_wipe_database(struct ctdb_reply_control *reply);
349 void ctdb_req_control_uptime(struct ctdb_req_control *request);
350 int ctdb_reply_control_uptime(struct ctdb_reply_control *reply,
351 TALLOC_CTX *mem_ctx,
352 struct ctdb_uptime **uptime);
354 void ctdb_req_control_start_recovery(struct ctdb_req_control *request);
355 int ctdb_reply_control_start_recovery(struct ctdb_reply_control *reply);
357 void ctdb_req_control_end_recovery(struct ctdb_req_control *request);
358 int ctdb_reply_control_end_recovery(struct ctdb_reply_control *reply);
360 void ctdb_req_control_reload_nodes_file(struct ctdb_req_control *request);
361 int ctdb_reply_control_reload_nodes_file(struct ctdb_reply_control *reply);
363 void ctdb_req_control_try_delete_records(struct ctdb_req_control *request,
364 struct ctdb_rec_buffer *recbuf);
365 int ctdb_reply_control_try_delete_records(struct ctdb_reply_control *reply,
366 TALLOC_CTX *mem_ctx,
367 struct ctdb_rec_buffer **recbuf);
369 void ctdb_req_control_add_public_ip(struct ctdb_req_control *request,
370 struct ctdb_addr_info *addr_info);
371 int ctdb_reply_control_add_public_ip(struct ctdb_reply_control *reply);
373 void ctdb_req_control_del_public_ip(struct ctdb_req_control *request,
374 struct ctdb_addr_info *addr_info);
375 int ctdb_reply_control_del_public_ip(struct ctdb_reply_control *reply);
377 void ctdb_req_control_get_capabilities(struct ctdb_req_control *request);
378 int ctdb_reply_control_get_capabilities(struct ctdb_reply_control *reply,
379 uint32_t *caps);
381 void ctdb_req_control_recd_ping(struct ctdb_req_control *request);
382 int ctdb_reply_control_recd_ping(struct ctdb_reply_control *reply);
384 void ctdb_req_control_release_ip(struct ctdb_req_control *request,
385 struct ctdb_public_ip *pubip);
386 int ctdb_reply_control_release_ip(struct ctdb_reply_control *reply);
388 void ctdb_req_control_takeover_ip(struct ctdb_req_control *request,
389 struct ctdb_public_ip *pubip);
390 int ctdb_reply_control_takeover_ip(struct ctdb_reply_control *reply);
392 void ctdb_req_control_get_public_ips(struct ctdb_req_control *request,
393 bool available_only);
394 int ctdb_reply_control_get_public_ips(struct ctdb_reply_control *reply,
395 TALLOC_CTX *mem_ctx,
396 struct ctdb_public_ip_list **pubip_list);
398 void ctdb_req_control_get_nodemap(struct ctdb_req_control *request);
399 int ctdb_reply_control_get_nodemap(struct ctdb_reply_control *reply,
400 TALLOC_CTX *mem_ctx,
401 struct ctdb_node_map **nodemap);
403 void ctdb_req_control_traverse_kill(struct ctdb_req_control *request,
404 struct ctdb_traverse_start *traverse);
405 int ctdb_reply_control_traverse_kill(struct ctdb_reply_control *reply);
407 void ctdb_req_control_recd_reclock_latency(struct ctdb_req_control *request,
408 double reclock_latency);
409 int ctdb_reply_control_recd_reclock_latency(struct ctdb_reply_control *reply);
411 void ctdb_req_control_get_reclock_file(struct ctdb_req_control *request);
412 int ctdb_reply_control_get_reclock_file(struct ctdb_reply_control *reply,
413 TALLOC_CTX *mem_ctx,
414 const char **reclock_file);
416 void ctdb_req_control_stop_node(struct ctdb_req_control *request);
417 int ctdb_reply_control_stop_node(struct ctdb_reply_control *reply);
419 void ctdb_req_control_continue_node(struct ctdb_req_control *request);
420 int ctdb_reply_control_continue_node(struct ctdb_reply_control *reply);
422 void ctdb_req_control_set_lmasterrole(struct ctdb_req_control *request,
423 uint32_t lmaster_role);
424 int ctdb_reply_control_set_lmasterrole(struct ctdb_reply_control *reply);
426 void ctdb_req_control_set_recmasterrole(struct ctdb_req_control *request,
427 uint32_t recmaster_role);
428 int ctdb_reply_control_set_recmasterrole(struct ctdb_reply_control *reply);
430 void ctdb_req_control_set_ban_state(struct ctdb_req_control *request,
431 struct ctdb_ban_state *ban_state);
432 int ctdb_reply_control_set_ban_state(struct ctdb_reply_control *reply);
434 void ctdb_req_control_get_ban_state(struct ctdb_req_control *request);
435 int ctdb_reply_control_get_ban_state(struct ctdb_reply_control *reply,
436 TALLOC_CTX *mem_ctx,
437 struct ctdb_ban_state **ban_state);
439 void ctdb_req_control_register_notify(struct ctdb_req_control *request,
440 struct ctdb_notify_data *notify);
441 int ctdb_reply_control_register_notify(struct ctdb_reply_control *reply);
443 void ctdb_req_control_deregister_notify(struct ctdb_req_control *request,
444 uint64_t srvid);
445 int ctdb_reply_control_deregister_notify(struct ctdb_reply_control *reply);
447 void ctdb_req_control_trans3_commit(struct ctdb_req_control *request,
448 struct ctdb_rec_buffer *recbuf);
449 int ctdb_reply_control_trans3_commit(struct ctdb_reply_control *reply);
451 void ctdb_req_control_get_db_seqnum(struct ctdb_req_control *request,
452 uint32_t db_id);
453 int ctdb_reply_control_get_db_seqnum(struct ctdb_reply_control *reply,
454 uint64_t *seqnum);
456 void ctdb_req_control_db_set_healthy(struct ctdb_req_control *request,
457 uint32_t db_id);
458 int ctdb_reply_control_db_set_healthy(struct ctdb_reply_control *reply);
460 void ctdb_req_control_db_get_health(struct ctdb_req_control *request,
461 uint32_t db_id);
462 int ctdb_reply_control_db_get_health(struct ctdb_reply_control *reply,
463 TALLOC_CTX *mem_ctx,
464 const char **reason);
466 void ctdb_req_control_get_public_ip_info(struct ctdb_req_control *request,
467 ctdb_sock_addr *addr);
468 int ctdb_reply_control_get_public_ip_info(struct ctdb_reply_control *reply,
469 TALLOC_CTX *mem_ctx,
470 struct ctdb_public_ip_info **ipinfo);
472 void ctdb_req_control_get_ifaces(struct ctdb_req_control *request);
473 int ctdb_reply_control_get_ifaces(struct ctdb_reply_control *reply,
474 TALLOC_CTX *mem_ctx,
475 struct ctdb_iface_list **iface_list);
477 void ctdb_req_control_set_iface_link_state(struct ctdb_req_control *request,
478 struct ctdb_iface *iface);
479 int ctdb_reply_control_set_iface_link_state(struct ctdb_reply_control *reply);
481 void ctdb_req_control_tcp_add_delayed_update(struct ctdb_req_control *request,
482 struct ctdb_connection *conn);
483 int ctdb_reply_control_tcp_add_delayed_update(struct ctdb_reply_control *reply);
485 void ctdb_req_control_get_stat_history(struct ctdb_req_control *request);
486 int ctdb_reply_control_get_stat_history(struct ctdb_reply_control *reply,
487 TALLOC_CTX *mem_ctx,
488 struct ctdb_statistics_list **stats_list);
490 void ctdb_req_control_schedule_for_deletion(struct ctdb_req_control *request,
491 struct ctdb_key_data *key);
492 int ctdb_reply_control_schedule_for_deletion(struct ctdb_reply_control *reply);
494 void ctdb_req_control_set_db_readonly(struct ctdb_req_control *request,
495 uint32_t db_id);
496 int ctdb_reply_control_set_db_readonly(struct ctdb_reply_control *reply);
498 void ctdb_req_control_traverse_start_ext(struct ctdb_req_control *request,
499 struct ctdb_traverse_start_ext *traverse);
500 int ctdb_reply_control_traverse_start_ext(struct ctdb_reply_control *reply);
502 void ctdb_req_control_get_db_statistics(struct ctdb_req_control *request,
503 uint32_t db_id);
504 int ctdb_reply_control_get_db_statistics(struct ctdb_reply_control *reply,
505 TALLOC_CTX *mem_ctx,
506 struct ctdb_db_statistics **dbstats);
508 void ctdb_req_control_set_db_sticky(struct ctdb_req_control *request,
509 uint32_t db_id);
510 int ctdb_reply_control_set_db_sticky(struct ctdb_reply_control *reply);
512 void ctdb_req_control_reload_public_ips(struct ctdb_req_control *request);
513 int ctdb_reply_control_reload_public_ips(struct ctdb_reply_control *reply);
515 void ctdb_req_control_ipreallocated(struct ctdb_req_control *request);
516 int ctdb_reply_control_ipreallocated(struct ctdb_reply_control *reply);
518 void ctdb_req_control_get_runstate(struct ctdb_req_control *request);
519 int ctdb_reply_control_get_runstate(struct ctdb_reply_control *reply,
520 enum ctdb_runstate *runstate);
522 void ctdb_req_control_db_detach(struct ctdb_req_control *request,
523 uint32_t db_id);
524 int ctdb_reply_control_db_detach(struct ctdb_reply_control *reply);
526 void ctdb_req_control_get_nodes_file(struct ctdb_req_control *request);
527 int ctdb_reply_control_get_nodes_file(struct ctdb_reply_control *reply,
528 TALLOC_CTX *mem_ctx,
529 struct ctdb_node_map **nodemap);
531 void ctdb_req_control_db_freeze(struct ctdb_req_control *request,
532 uint32_t db_id);
533 int ctdb_reply_control_db_freeze(struct ctdb_reply_control *reply);
535 void ctdb_req_control_db_thaw(struct ctdb_req_control *request,
536 uint32_t db_id);
537 int ctdb_reply_control_db_thaw(struct ctdb_reply_control *reply);
539 void ctdb_req_control_db_transaction_start(struct ctdb_req_control *request,
540 struct ctdb_transdb *transdb);
541 int ctdb_reply_control_db_transaction_start(struct ctdb_reply_control *reply);
543 void ctdb_req_control_db_transaction_commit(struct ctdb_req_control *request,
544 struct ctdb_transdb *transdb);
545 int ctdb_reply_control_db_transaction_commit(struct ctdb_reply_control *reply);
547 void ctdb_req_control_db_transaction_cancel(struct ctdb_req_control *request,
548 uint32_t db_id);
549 int ctdb_reply_control_db_transaction_cancel(struct ctdb_reply_control *reply);
551 void ctdb_req_control_db_pull(struct ctdb_req_control *request,
552 struct ctdb_pulldb_ext *pulldb_ext);
553 int ctdb_reply_control_db_pull(struct ctdb_reply_control *reply,
554 uint32_t *num_records);
556 void ctdb_req_control_db_push_start(struct ctdb_req_control *request,
557 struct ctdb_pulldb_ext *pulldb_ext);
558 int ctdb_reply_control_db_push_start(struct ctdb_reply_control *reply);
560 void ctdb_req_control_db_push_confirm(struct ctdb_req_control *request,
561 uint32_t db_id);
562 int ctdb_reply_control_db_push_confirm(struct ctdb_reply_control *reply,
563 uint32_t *num_records);
565 void ctdb_req_control_db_open_flags(struct ctdb_req_control *request,
566 uint32_t db_id);
567 int ctdb_reply_control_db_open_flags(struct ctdb_reply_control *reply,
568 int *tdb_flags);
570 void ctdb_req_control_db_attach_replicated(struct ctdb_req_control *request,
571 const char *db_name);
572 int ctdb_reply_control_db_attach_replicated(struct ctdb_reply_control *reply,
573 uint32_t *db_id);
575 void ctdb_req_control_check_pid_srvid(struct ctdb_req_control *request,
576 struct ctdb_pid_srvid *pid_srvid);
577 int ctdb_reply_control_check_pid_srvid(struct ctdb_reply_control *reply,
578 int *status);
580 void ctdb_req_control_tunnel_register(struct ctdb_req_control *request,
581 uint64_t tunnel_id);
582 int ctdb_reply_control_tunnel_register(struct ctdb_reply_control *reply);
584 void ctdb_req_control_tunnel_deregister(struct ctdb_req_control *request,
585 uint64_t tunnel_id);
586 int ctdb_reply_control_tunnel_deregister(struct ctdb_reply_control *reply);
588 void ctdb_req_control_vacuum_fetch(struct ctdb_req_control *request,
589 struct ctdb_rec_buffer *recbuf);
590 int ctdb_reply_control_vacuum_fetch(struct ctdb_reply_control *reply);
592 void ctdb_req_control_db_vacuum(struct ctdb_req_control *request,
593 struct ctdb_db_vacuum *db_vacuum);
594 int ctdb_reply_control_db_vacuum(struct ctdb_reply_control *reply);
596 void ctdb_req_control_echo_data(struct ctdb_req_control *request,
597 struct ctdb_echo_data *echo_data);
598 int ctdb_reply_control_echo_data(struct ctdb_reply_control *reply);
600 void ctdb_req_control_disable_node(struct ctdb_req_control *request);
601 int ctdb_reply_control_disable_node(struct ctdb_reply_control *reply);
603 void ctdb_req_control_enable_node(struct ctdb_req_control *request);
604 int ctdb_reply_control_enable_node(struct ctdb_reply_control *reply);
606 /* From protocol/protocol_debug.c */
608 void ctdb_packet_print(uint8_t *buf, size_t buflen, FILE *fp);
610 /* From protocol/protocol_message.c */
612 size_t ctdb_req_message_len(struct ctdb_req_header *h,
613 struct ctdb_req_message *c);
615 int ctdb_req_message_push(struct ctdb_req_header *h,
616 struct ctdb_req_message *c,
617 uint8_t *buf, size_t *buflen);
619 int ctdb_req_message_pull(uint8_t *buf, size_t buflen,
620 struct ctdb_req_header *h,
621 TALLOC_CTX *mem_ctx,
622 struct ctdb_req_message *c);
624 size_t ctdb_req_message_data_len(struct ctdb_req_header *h,
625 struct ctdb_req_message_data *c);
627 int ctdb_req_message_data_push(struct ctdb_req_header *h,
628 struct ctdb_req_message_data *c,
629 uint8_t *buf, size_t *buflen);
631 int ctdb_req_message_data_pull(uint8_t *buf, size_t buflen,
632 struct ctdb_req_header *h,
633 TALLOC_CTX *mem_ctx,
634 struct ctdb_req_message_data *c);
636 /* From protocol/protocol_keepalive.c */
638 size_t ctdb_req_keepalive_len(struct ctdb_req_header *h,
639 struct ctdb_req_keepalive *c);
641 int ctdb_req_keepalive_push(struct ctdb_req_header *h,
642 struct ctdb_req_keepalive *c,
643 uint8_t *buf, size_t *buflen);
645 int ctdb_req_keepalive_pull(uint8_t *buf, size_t buflen,
646 struct ctdb_req_header *h,
647 TALLOC_CTX *mem_ctx,
648 struct ctdb_req_keepalive *c);
650 /* From protocol/protocol_tunnel.c */
652 size_t ctdb_req_tunnel_len(struct ctdb_req_header *h,
653 struct ctdb_req_tunnel *c);
655 int ctdb_req_tunnel_push(struct ctdb_req_header *h,
656 struct ctdb_req_tunnel *c,
657 uint8_t *buf, size_t *buflen);
659 int ctdb_req_tunnel_pull(uint8_t *buf, size_t buflen,
660 struct ctdb_req_header *h,
661 TALLOC_CTX *mem_ctx,
662 struct ctdb_req_tunnel *c);
664 /* From protocol/protocol_packet.c */
666 int ctdb_allocate_pkt(TALLOC_CTX *mem_ctx, size_t datalen,
667 uint8_t **buf, size_t *buflen);
669 /* From protocol/protocol_sock.c */
671 size_t sock_packet_header_len(struct sock_packet_header *in);
672 void sock_packet_header_push(struct sock_packet_header *in, uint8_t *buf,
673 size_t *npush);
674 int sock_packet_header_pull(uint8_t *buf, size_t buflen,
675 struct sock_packet_header *out, size_t *npull);
677 void sock_packet_header_set_reqid(struct sock_packet_header *h,
678 uint32_t reqid);
679 void sock_packet_header_set_length(struct sock_packet_header *h,
680 uint32_t length);
682 #endif /* __CTDB_PROTOCOL_API_H__ */