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_CLIENT_H__
21 #define __CTDB_CLIENT_H__
26 #include "protocol/protocol.h"
27 #include "common/srvid.h"
29 struct ctdb_client_context;
30 struct ctdb_db_context;
31 struct ctdb_record_handle;
33 typedef void (*ctdb_client_callback_func_t)(void *private_data);
35 /* from client/client_connect.c */
37 int ctdb_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
38 const char *sockpath, struct ctdb_client_context **ret);
40 void ctdb_client_set_disconnect_callback(struct ctdb_client_context *client,
41 ctdb_client_callback_func_t func,
44 uint32_t ctdb_client_pnn(struct ctdb_client_context *client);
46 void ctdb_client_wait(struct tevent_context *ev, bool *done);
48 int ctdb_client_wait_timeout(struct tevent_context *ev, bool *done,
49 struct timeval timeout);
51 struct tevent_req *ctdb_recovery_wait_send(TALLOC_CTX *mem_ctx,
52 struct tevent_context *ev,
53 struct ctdb_client_context *client);
55 bool ctdb_recovery_wait_recv(struct tevent_req *req, int *perr);
57 bool ctdb_recovery_wait(struct tevent_context *ev,
58 struct ctdb_client_context *client);
60 /* from client/client_call.c */
62 struct tevent_req *ctdb_client_call_send(TALLOC_CTX *mem_ctx,
63 struct tevent_context *ev,
64 struct ctdb_client_context *client,
65 struct ctdb_req_call *request);
67 bool ctdb_client_call_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
68 struct ctdb_reply_call **reply, int *perr);
71 /* from client/client_message.c */
73 struct tevent_req *ctdb_client_message_send(TALLOC_CTX *mem_ctx,
74 struct tevent_context *ev,
75 struct ctdb_client_context *client,
77 struct ctdb_req_message *message);
79 bool ctdb_client_message_recv(struct tevent_req *req, int *perr);
81 struct tevent_req *ctdb_client_message_multi_send(
83 struct tevent_context *ev,
84 struct ctdb_client_context *client,
85 uint32_t *pnn_list, int count,
86 struct ctdb_req_message *message);
88 bool ctdb_client_message_multi_recv(struct tevent_req *req, int *perr,
89 TALLOC_CTX *mem_ctx, int **perr_list);
91 int ctdb_client_message(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
92 struct ctdb_client_context *client,
93 uint32_t destnode, struct ctdb_req_message *message);
95 int ctdb_client_message_multi(TALLOC_CTX *mem_ctx,
96 struct tevent_context *ev,
97 struct ctdb_client_context *client,
98 uint32_t *pnn_list, int count,
99 struct ctdb_req_message *message,
102 struct tevent_req *ctdb_client_set_message_handler_send(
104 struct tevent_context *ev,
105 struct ctdb_client_context *client,
107 srvid_handler_fn handler,
109 bool ctdb_client_set_message_handler_recv(struct tevent_req *req, int *perr);
111 struct tevent_req *ctdb_client_remove_message_handler_send(
113 struct tevent_context *ev,
114 struct ctdb_client_context *client,
117 bool ctdb_client_remove_message_handler_recv(struct tevent_req *req,
120 int ctdb_client_set_message_handler(struct tevent_context *ev,
121 struct ctdb_client_context *client,
122 uint64_t srvid, srvid_handler_fn handler,
125 int ctdb_client_remove_message_handler(struct tevent_context *ev,
126 struct ctdb_client_context *client,
127 uint64_t srvid, void *private_data);
129 /* from client/client_message_sync.c */
131 int ctdb_message_recd_update_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
132 struct ctdb_client_context *client,
133 int destnode, struct ctdb_public_ip *pubip);
135 int ctdb_message_mem_dump(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
136 struct ctdb_client_context *client,
137 int destnode, struct ctdb_srvid_message *msg);
139 int ctdb_message_reload_nodes(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
140 struct ctdb_client_context *client,
143 int ctdb_message_takeover_run(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
144 struct ctdb_client_context *client,
145 int destnode, struct ctdb_srvid_message *msg);
147 int ctdb_message_rebalance_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
148 struct ctdb_client_context *client,
149 int destnode, uint32_t pnn);
151 int ctdb_message_disable_takeover_runs(TALLOC_CTX *mem_ctx,
152 struct tevent_context *ev,
153 struct ctdb_client_context *client,
155 struct ctdb_disable_message *disable);
157 int ctdb_message_disable_recoveries(TALLOC_CTX *mem_ctx,
158 struct tevent_context *ev,
159 struct ctdb_client_context *client,
161 struct ctdb_disable_message *disable);
163 int ctdb_message_disable_ip_check(TALLOC_CTX *mem_ctx,
164 struct tevent_context *ev,
165 struct ctdb_client_context *client,
166 int destnode, uint32_t timeout);
168 /* from client/client_control.c */
170 struct tevent_req *ctdb_client_control_send(TALLOC_CTX *mem_ctx,
171 struct tevent_context *ev,
172 struct ctdb_client_context *client,
174 struct timeval timeout,
175 struct ctdb_req_control *request);
177 bool ctdb_client_control_recv(struct tevent_req *req, int *perr,
179 struct ctdb_reply_control **preply);
181 struct tevent_req *ctdb_client_control_multi_send(
183 struct tevent_context *ev,
184 struct ctdb_client_context *client,
185 uint32_t *pnn_list, int count,
186 struct timeval timeout,
187 struct ctdb_req_control *request);
189 bool ctdb_client_control_multi_recv(struct tevent_req *req, int *perr,
190 TALLOC_CTX *mem_ctx, int **perr_list,
191 struct ctdb_reply_control ***preply);
193 int ctdb_client_control_multi_error(uint32_t *pnn_list, int count,
194 int *err_list, uint32_t *pnn);
196 int ctdb_client_control(TALLOC_CTX *mem_ctx,
197 struct tevent_context *ev,
198 struct ctdb_client_context *client,
200 struct timeval timeout,
201 struct ctdb_req_control *c,
202 struct ctdb_reply_control **preply);
204 int ctdb_client_control_multi(TALLOC_CTX *mem_ctx,
205 struct tevent_context *ev,
206 struct ctdb_client_context *client,
207 uint32_t *pnn_list, int count,
208 struct timeval timeout,
209 struct ctdb_req_control *request,
211 struct ctdb_reply_control ***preply);
213 /* from client/client_control_sync.c */
215 int ctdb_ctrl_process_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
216 struct ctdb_client_context *client,
217 int destnode, struct timeval timeout,
218 pid_t pid, int *status);
220 int ctdb_ctrl_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
221 struct ctdb_client_context *client,
222 int destnode, struct timeval timeout,
223 struct ctdb_statistics **stats);
225 int ctdb_ctrl_ping(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
226 struct ctdb_client_context *client,
227 int destnode, struct timeval timeout,
230 int ctdb_ctrl_getdbpath(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
231 struct ctdb_client_context *client,
232 int destnode, struct timeval timeout,
233 uint32_t db_id, const char **db_path);
235 int ctdb_ctrl_getvnnmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
236 struct ctdb_client_context *client,
237 int destnode, struct timeval timeout,
238 struct ctdb_vnn_map **vnnmap);
240 int ctdb_ctrl_getdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
241 struct ctdb_client_context *client,
242 int destnode, struct timeval timeout,
245 int ctdb_ctrl_setdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
246 struct ctdb_client_context *client,
247 int destnode, struct timeval timeout,
250 int ctdb_ctrl_get_dbmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
251 struct ctdb_client_context *client,
252 int destnode, struct timeval timeout,
253 struct ctdb_dbid_map **dbmap);
255 int ctdb_ctrl_pull_db(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
256 struct ctdb_client_context *client, int destnode,
257 struct timeval timeout, struct ctdb_pulldb *pulldb,
258 struct ctdb_rec_buffer **recbuf);
260 int ctdb_ctrl_push_db(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
261 struct ctdb_client_context *client, int destnode,
262 struct timeval timeout, struct ctdb_rec_buffer *recbuf);
264 int ctdb_ctrl_get_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
265 struct ctdb_client_context *client,
266 int destnode, struct timeval timeout,
269 int ctdb_ctrl_set_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
270 struct ctdb_client_context *client,
271 int destnode, struct timeval timeout,
274 int ctdb_ctrl_statistics_reset(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
275 struct ctdb_client_context *client,
276 int destnode, struct timeval timeout);
278 int ctdb_ctrl_db_attach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
279 struct ctdb_client_context *client,
280 int destnode, struct timeval timeout,
281 const char *db_name, uint32_t tdb_flags,
284 int ctdb_ctrl_traverse_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
285 struct ctdb_client_context *client,
286 int destnode, struct timeval timeout,
287 struct ctdb_traverse_start *traverse);
289 int ctdb_ctrl_register_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
290 struct ctdb_client_context *client,
291 int destnode, struct timeval timeout,
294 int ctdb_ctrl_deregister_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
295 struct ctdb_client_context *client,
296 int destnode, struct timeval timeout,
299 int ctdb_ctrl_get_dbname(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
300 struct ctdb_client_context *client,
301 int destnode, struct timeval timeout,
302 uint32_t db_id, const char **db_name);
304 int ctdb_ctrl_enable_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
305 struct ctdb_client_context *client,
306 int destnode, struct timeval timeout,
309 int ctdb_ctrl_update_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
310 struct ctdb_client_context *client,
311 int destnode, struct timeval timeout,
314 int ctdb_ctrl_dump_memory(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
315 struct ctdb_client_context *client,
316 int destnode, struct timeval timeout,
317 const char **mem_str);
319 int ctdb_ctrl_get_pid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
320 struct ctdb_client_context *client,
321 int destnode, struct timeval timeout,
324 int ctdb_ctrl_get_recmaster(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
325 struct ctdb_client_context *client,
326 int destnode, struct timeval timeout,
327 uint32_t *recmaster);
329 int ctdb_ctrl_set_recmaster(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
330 struct ctdb_client_context *client,
331 int destnode, struct timeval timeout,
334 int ctdb_ctrl_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
335 struct ctdb_client_context *client,
336 int destnode, struct timeval timeout,
339 int ctdb_ctrl_get_pnn(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
340 struct ctdb_client_context *client,
341 int destnode, struct timeval timeout,
344 int ctdb_ctrl_shutdown(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
345 struct ctdb_client_context *client,
346 int destnode, struct timeval timeout);
348 int ctdb_ctrl_get_monmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
349 struct ctdb_client_context *client,
350 int destnode, struct timeval timeout,
353 int ctdb_ctrl_tcp_add(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
354 struct ctdb_client_context *client,
355 int destnode, struct timeval timeout,
356 struct ctdb_connection *conn);
358 int ctdb_ctrl_tcp_remove(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
359 struct ctdb_client_context *client,
360 int destnode, struct timeval timeout,
361 struct ctdb_connection *conn);
363 int ctdb_ctrl_set_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
364 struct ctdb_client_context *client,
365 int destnode, struct timeval timeout,
366 struct ctdb_tunable *tunable);
368 int ctdb_ctrl_get_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
369 struct ctdb_client_context *client,
370 int destnode, struct timeval timeout,
371 const char *var, uint32_t *value);
373 int ctdb_ctrl_list_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
374 struct ctdb_client_context *client,
375 int destnode, struct timeval timeout,
376 struct ctdb_var_list **var_list);
378 int ctdb_ctrl_modify_flags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
379 struct ctdb_client_context *client,
380 int destnode, struct timeval timeout,
381 uint32_t pnn, uint32_t old_flags,
384 int ctdb_ctrl_get_all_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
385 struct ctdb_client_context *client,
386 int destnode, struct timeval timeout,
387 struct ctdb_tunable_list **tun_list);
389 int ctdb_ctrl_get_tcp_tickle_list(TALLOC_CTX *mem_ctx,
390 struct tevent_context *ev,
391 struct ctdb_client_context *client,
392 int destnode, struct timeval timeout,
393 ctdb_sock_addr *addr,
394 struct ctdb_tickle_list **tickles);
396 int ctdb_ctrl_set_tcp_tickle_list(TALLOC_CTX *mem_ctx,
397 struct tevent_context *ev,
398 struct ctdb_client_context *client,
399 int destnode, struct timeval timeout,
400 struct ctdb_tickle_list *tickles);
402 int ctdb_ctrl_db_attach_persistent(TALLOC_CTX *mem_ctx,
403 struct tevent_context *ev,
404 struct ctdb_client_context *client,
405 int destnode, struct timeval timeout,
406 const char *db_name, int tdb_flags,
409 int ctdb_ctrl_send_gratuitous_arp(TALLOC_CTX *mem_ctx,
410 struct tevent_context *ev,
411 struct ctdb_client_context *client,
412 int destnode, struct timeval timeout,
413 struct ctdb_addr_info *addr_info);
415 int ctdb_ctrl_wipe_database(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
416 struct ctdb_client_context *client,
417 int destnode, struct timeval timeout,
418 uint32_t db_id, uint32_t tid);
420 int ctdb_ctrl_uptime(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
421 struct ctdb_client_context *client,
422 int destnode, struct timeval timeout,
423 struct ctdb_uptime **uptime);
425 int ctdb_ctrl_start_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
426 struct ctdb_client_context *client,
427 int destnode, struct timeval timeout);
429 int ctdb_ctrl_end_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
430 struct ctdb_client_context *client,
431 int destnode, struct timeval timeout);
433 int ctdb_ctrl_reload_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
434 struct ctdb_client_context *client,
435 int destnode, struct timeval timeout);
437 int ctdb_ctrl_enable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
438 struct ctdb_client_context *client,
439 int destnode, struct timeval timeout);
441 int ctdb_ctrl_disable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
442 struct ctdb_client_context *client,
443 int destnode, struct timeval timeout);
445 int ctdb_ctrl_add_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
446 struct ctdb_client_context *client,
447 int destnode, struct timeval timeout,
448 struct ctdb_addr_info *addr_info);
450 int ctdb_ctrl_del_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
451 struct ctdb_client_context *client,
452 int destnode, struct timeval timeout,
453 struct ctdb_addr_info *addr_info);
455 int ctdb_ctrl_get_capabilities(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
456 struct ctdb_client_context *client,
457 int destnode, struct timeval timeout,
460 int ctdb_ctrl_release_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
461 struct ctdb_client_context *client,
462 int destnode, struct timeval timeout,
463 struct ctdb_public_ip *pubip);
465 int ctdb_ctrl_takeover_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
466 struct ctdb_client_context *client,
467 int destnode, struct timeval timeout,
468 struct ctdb_public_ip *pubip);
470 int ctdb_ctrl_get_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
471 struct ctdb_client_context *client,
472 int destnode, struct timeval timeout,
474 struct ctdb_public_ip_list **pubip_list);
476 int ctdb_ctrl_get_nodemap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
477 struct ctdb_client_context *client,
478 int destnode, struct timeval timeout,
479 struct ctdb_node_map **nodemap);
481 int ctdb_ctrl_traverse_kill(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
482 struct ctdb_client_context *client,
483 int destnode, struct timeval timeout,
484 struct ctdb_traverse_start *traverse);
486 int ctdb_ctrl_get_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
487 struct ctdb_client_context *client,
488 int destnode, struct timeval timeout,
489 const char **reclock_file);
491 int ctdb_ctrl_stop_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
492 struct ctdb_client_context *client,
493 int destnode, struct timeval timeout);
495 int ctdb_ctrl_continue_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
496 struct ctdb_client_context *client,
497 int destnode, struct timeval timeout);
499 int ctdb_ctrl_set_lmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
500 struct ctdb_client_context *client,
501 int destnode, struct timeval timeout,
502 uint32_t lmaster_role);
504 int ctdb_ctrl_set_recmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
505 struct ctdb_client_context *client,
506 int destnode, struct timeval timeout,
507 uint32_t recmaster_role);
509 int ctdb_ctrl_set_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
510 struct ctdb_client_context *client,
511 int destnode, struct timeval timeout,
512 struct ctdb_ban_state *ban_state);
514 int ctdb_ctrl_get_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
515 struct ctdb_client_context *client,
516 int destnode, struct timeval timeout,
517 struct ctdb_ban_state **ban_state);
519 int ctdb_ctrl_register_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
520 struct ctdb_client_context *client,
521 int destnode, struct timeval timeout,
522 struct ctdb_notify_data *notify);
524 int ctdb_ctrl_deregister_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
525 struct ctdb_client_context *client,
526 int destnode, struct timeval timeout,
529 int ctdb_ctrl_trans3_commit(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
530 struct ctdb_client_context *client,
531 int destnode, struct timeval timeout,
532 struct ctdb_rec_buffer *recbuf);
534 int ctdb_ctrl_get_db_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
535 struct ctdb_client_context *client,
536 int destnode, struct timeval timeout,
537 uint32_t db_id, uint64_t *seqnum);
539 int ctdb_ctrl_db_set_healthy(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
540 struct ctdb_client_context *client,
541 int destnode, struct timeval timeout,
544 int ctdb_ctrl_db_get_health(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
545 struct ctdb_client_context *client,
546 int destnode, struct timeval timeout,
547 uint32_t db_id, const char **reason);
549 int ctdb_ctrl_get_public_ip_info(TALLOC_CTX *mem_ctx,
550 struct tevent_context *ev,
551 struct ctdb_client_context *client,
552 int destnode, struct timeval timeout,
553 ctdb_sock_addr *addr,
554 struct ctdb_public_ip_info **ipinfo);
556 int ctdb_ctrl_get_ifaces(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
557 struct ctdb_client_context *client,
558 int destnode, struct timeval timeout,
559 struct ctdb_iface_list **iface_list);
561 int ctdb_ctrl_set_iface_link_state(TALLOC_CTX *mem_ctx,
562 struct tevent_context *ev,
563 struct ctdb_client_context *client,
564 int destnode, struct timeval timeout,
565 struct ctdb_iface *iface);
567 int ctdb_ctrl_tcp_add_delayed_update(TALLOC_CTX *mem_ctx,
568 struct tevent_context *ev,
569 struct ctdb_client_context *client,
570 int destnode, struct timeval timeout,
571 struct ctdb_connection *conn);
573 int ctdb_ctrl_get_stat_history(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
574 struct ctdb_client_context *client,
575 int destnode, struct timeval timeout,
576 struct ctdb_statistics_list **stats_list);
578 int ctdb_ctrl_schedule_for_deletion(TALLOC_CTX *mem_ctx,
579 struct tevent_context *ev,
580 struct ctdb_client_context *client,
581 int destnode, struct timeval timeout,
582 struct ctdb_key_data *key);
584 int ctdb_ctrl_set_db_readonly(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
585 struct ctdb_client_context *client,
586 int destnode, struct timeval timeout,
589 int ctdb_ctrl_check_srvids(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
590 struct ctdb_client_context *client,
591 int destnode, struct timeval timeout,
592 uint64_t *srvid, int count, uint8_t **result);
594 int ctdb_ctrl_traverse_start_ext(TALLOC_CTX *mem_ctx,
595 struct tevent_context *ev,
596 struct ctdb_client_context *client,
597 int destnode, struct timeval timeout,
598 struct ctdb_traverse_start_ext *traverse);
600 int ctdb_ctrl_get_db_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
601 struct ctdb_client_context *client,
602 int destnode, struct timeval timeout,
604 struct ctdb_db_statistics **dbstats);
606 int ctdb_ctrl_set_db_sticky(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
607 struct ctdb_client_context *client,
608 int destnode, struct timeval timeout,
611 int ctdb_ctrl_reload_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
612 struct ctdb_client_context *client,
613 int destnode, struct timeval timeout);
615 int ctdb_ctrl_ipreallocated(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
616 struct ctdb_client_context *client,
617 int destnode, struct timeval timeout);
619 int ctdb_ctrl_get_runstate(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
620 struct ctdb_client_context *client,
621 int destnode, struct timeval timeout,
622 enum ctdb_runstate *runstate);
624 int ctdb_ctrl_db_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
625 struct ctdb_client_context *client,
626 int destnode, struct timeval timeout,
629 int ctdb_ctrl_get_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
630 struct ctdb_client_context *client,
631 int destnode, struct timeval timeout,
632 struct ctdb_node_map **nodemap);
634 int ctdb_ctrl_db_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
635 struct ctdb_client_context *client,
636 int destnode, struct timeval timeout, uint32_t db_id);
638 int ctdb_ctrl_db_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
639 struct ctdb_client_context *client,
640 int destnode, struct timeval timeout, uint32_t db_id);
642 int ctdb_ctrl_db_transaction_start(TALLOC_CTX *mem_ctx,
643 struct tevent_context *ev,
644 struct ctdb_client_context *client,
645 int destnode, struct timeval timeout,
646 struct ctdb_transdb *transdb);
648 int ctdb_ctrl_db_transaction_commit(TALLOC_CTX *mem_ctx,
649 struct tevent_context *ev,
650 struct ctdb_client_context *client,
651 int destnode, struct timeval timeout,
652 struct ctdb_transdb *transdb);
654 int ctdb_ctrl_db_transaction_cancel(TALLOC_CTX *mem_ctx,
655 struct tevent_context *ev,
656 struct ctdb_client_context *client,
657 int destnode, struct timeval timeout,
660 int ctdb_ctrl_db_pull(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
661 struct ctdb_client_context *client,
662 int destnode, struct timeval timeout,
663 struct ctdb_pulldb_ext *pulldb, uint32_t *num_records);
665 int ctdb_ctrl_db_push_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
666 struct ctdb_client_context *client,
667 int destnode, struct timeval timeout,
668 struct ctdb_pulldb_ext *pulldb);
670 int ctdb_ctrl_db_push_confirm(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
671 struct ctdb_client_context *client,
672 int destnode, struct timeval timeout,
673 uint32_t db_id, uint32_t *num_records);
675 /* from client/client_db.c */
677 struct tevent_req *ctdb_attach_send(TALLOC_CTX *mem_ctx,
678 struct tevent_context *ev,
679 struct ctdb_client_context *client,
680 struct timeval timeout,
681 const char *db_name, uint8_t db_flags);
683 bool ctdb_attach_recv(struct tevent_req *req, int *perr,
684 struct ctdb_db_context **out);
686 int ctdb_attach(struct tevent_context *ev,
687 struct ctdb_client_context *client,
688 struct timeval timeout,
689 const char *db_name, uint8_t db_flags,
690 struct ctdb_db_context **out);
692 struct tevent_req *ctdb_detach_send(TALLOC_CTX *mem_ctx,
693 struct tevent_context *ev,
694 struct ctdb_client_context *client,
695 struct timeval timeout, uint32_t db_id);
697 bool ctdb_detach_recv(struct tevent_req *req, int *perr);
699 int ctdb_detach(struct tevent_context *ev,
700 struct ctdb_client_context *client,
701 struct timeval timeout, uint32_t db_id);
703 uint32_t ctdb_db_id(struct ctdb_db_context *db);
705 int ctdb_db_traverse_local(struct ctdb_db_context *db, bool readonly,
707 ctdb_rec_parser_func_t parser, void *private_data);
709 struct tevent_req *ctdb_db_traverse_send(TALLOC_CTX *mem_ctx,
710 struct tevent_context *ev,
711 struct ctdb_client_context *client,
712 struct ctdb_db_context *db,
714 struct timeval timeout,
715 ctdb_rec_parser_func_t parser,
718 bool ctdb_db_traverse_recv(struct tevent_req *req, int *perr);
720 int ctdb_db_traverse(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
721 struct ctdb_client_context *client,
722 struct ctdb_db_context *db,
723 uint32_t destnode, struct timeval timeout,
724 ctdb_rec_parser_func_t parser, void *private_data);
726 int ctdb_ltdb_fetch(struct ctdb_db_context *db, TDB_DATA key,
727 struct ctdb_ltdb_header *header,
728 TALLOC_CTX *mem_ctx, TDB_DATA *data);
730 struct tevent_req *ctdb_fetch_lock_send(TALLOC_CTX *mem_ctx,
731 struct tevent_context *ev,
732 struct ctdb_client_context *client,
733 struct ctdb_db_context *db,
734 TDB_DATA key, bool readonly);
736 struct ctdb_record_handle *ctdb_fetch_lock_recv(struct tevent_req *req,
737 struct ctdb_ltdb_header *header,
739 TDB_DATA *data, int *perr);
741 int ctdb_fetch_lock(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
742 struct ctdb_client_context *client,
743 struct ctdb_db_context *db, TDB_DATA key, bool readonly,
744 struct ctdb_record_handle **out,
745 struct ctdb_ltdb_header *header, TDB_DATA *data);
747 int ctdb_store_record(struct ctdb_record_handle *h, TDB_DATA data);
749 struct tevent_req *ctdb_delete_record_send(TALLOC_CTX *mem_ctx,
750 struct tevent_context *ev,
751 struct ctdb_record_handle *h);
753 bool ctdb_delete_record_recv(struct tevent_req *req, int *perr);
755 int ctdb_delete_record(struct ctdb_record_handle *h);
757 struct tevent_req *ctdb_g_lock_lock_send(TALLOC_CTX *mem_ctx,
758 struct tevent_context *ev,
759 struct ctdb_client_context *client,
760 struct ctdb_db_context *db,
762 struct ctdb_server_id *sid,
765 bool ctdb_g_lock_lock_recv(struct tevent_req *req, int *perr);
767 struct tevent_req *ctdb_g_lock_unlock_send(TALLOC_CTX *mem_ctx,
768 struct tevent_context *ev,
769 struct ctdb_client_context *client,
770 struct ctdb_db_context *db,
772 struct ctdb_server_id sid);
774 bool ctdb_g_lock_unlock_recv(struct tevent_req *req, int *perr);
776 struct tevent_req *ctdb_transaction_start_send(TALLOC_CTX *mem_ctx,
777 struct tevent_context *ev,
778 struct ctdb_client_context *client,
779 struct timeval timeout,
780 struct ctdb_db_context *db,
783 struct ctdb_transaction_handle *ctdb_transaction_start_recv(
784 struct tevent_req *req,
787 int ctdb_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
788 struct ctdb_client_context *client,
789 struct timeval timeout,
790 struct ctdb_db_context *db, bool readonly,
791 struct ctdb_transaction_handle **out);
793 int ctdb_transaction_fetch_record(struct ctdb_transaction_handle *h,
795 TALLOC_CTX *mem_ctx, TDB_DATA *data);
797 int ctdb_transaction_store_record(struct ctdb_transaction_handle *h,
798 TDB_DATA key, TDB_DATA data);
800 int ctdb_transaction_delete_record(struct ctdb_transaction_handle *h,
803 struct tevent_req *ctdb_transaction_commit_send(
805 struct tevent_context *ev,
806 struct timeval timeout,
807 struct ctdb_transaction_handle *h);
809 bool ctdb_transaction_commit_recv(struct tevent_req *req, int *perr);
811 int ctdb_transaction_commit(struct ctdb_transaction_handle *h);
813 struct tevent_req *ctdb_transaction_cancel_send(
815 struct tevent_context *ev,
816 struct timeval timeout,
817 struct ctdb_transaction_handle *h);
819 bool ctdb_transaction_cancel_recv(struct tevent_req *req, int *perr);
821 int ctdb_transaction_cancel(struct ctdb_transaction_handle *h);
823 /* from client/client_util.c */
825 int list_of_nodes(struct ctdb_node_map *nodemap,
826 uint32_t flags_mask, uint32_t exclude_pnn,
827 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
829 int list_of_active_nodes(struct ctdb_node_map *nodemap, uint32_t exclude_pnn,
830 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
832 int list_of_connected_nodes(struct ctdb_node_map *nodemap,
833 uint32_t exclude_pnn,
834 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
836 int ctdb_ctrl_modflags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
837 struct ctdb_client_context *client,
838 uint32_t destnode, struct timeval timeout,
839 uint32_t set, uint32_t clear);
841 struct ctdb_server_id ctdb_client_get_server_id(
842 struct ctdb_client_context *client,
845 bool ctdb_server_id_equal(struct ctdb_server_id *sid1,
846 struct ctdb_server_id *sid2);
848 int ctdb_server_id_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
849 struct ctdb_client_context *client,
850 struct ctdb_server_id *sid, bool *exists);
852 /* from client/client_event.c */
854 struct ctdb_event_context;
856 int ctdb_event_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
857 const char *sockpath, struct ctdb_event_context **out);
859 void ctdb_event_set_disconnect_callback(struct ctdb_event_context *eclient,
860 ctdb_client_callback_func_t callback,
863 struct tevent_req *ctdb_event_msg_send(TALLOC_CTX *mem_ctx,
864 struct tevent_context *ev,
865 struct ctdb_event_context *eclient,
866 struct ctdb_event_request *request);
868 bool ctdb_event_msg_recv(struct tevent_req *req, int *perr,
870 struct ctdb_event_reply **reply);
872 struct tevent_req *ctdb_event_run_send(TALLOC_CTX *mem_ctx,
873 struct tevent_context *ev,
874 struct ctdb_event_context *eclient,
875 enum ctdb_event event,
876 uint32_t timeout, const char *arg_str);
878 bool ctdb_event_run_recv(struct tevent_req *req, int *perr, int32_t *result);
880 struct tevent_req *ctdb_event_status_send(TALLOC_CTX *mem_ctx,
881 struct tevent_context *ev,
882 struct ctdb_event_context *eclient,
883 enum ctdb_event event,
884 enum ctdb_event_status_state state);
886 bool ctdb_event_status_recv(struct tevent_req *req, int *perr,
887 int32_t *result, int *event_result,
889 struct ctdb_script_list **script_list);
891 struct tevent_req *ctdb_event_script_list_send(
893 struct tevent_context *ev,
894 struct ctdb_event_context *eclient);
896 bool ctdb_event_script_list_recv(struct tevent_req *req, int *perr,
897 int32_t *result, TALLOC_CTX *mem_ctx,
898 struct ctdb_script_list **script_list);
900 struct tevent_req *ctdb_event_script_enable_send(
902 struct tevent_context *ev,
903 struct ctdb_event_context *eclient,
904 const char *script_name);
906 bool ctdb_event_script_enable_recv(struct tevent_req *req, int *perr,
909 struct tevent_req *ctdb_event_script_disable_send(
911 struct tevent_context *ev,
912 struct ctdb_event_context *eclient,
913 const char *script_name);
915 bool ctdb_event_script_disable_recv(struct tevent_req *req, int *perr,
918 #endif /* __CTDB_CLIENT_H__ */