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_run_eventscripts(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
456 struct ctdb_client_context *client,
457 int destnode, struct timeval timeout,
460 int ctdb_ctrl_get_capabilities(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
461 struct ctdb_client_context *client,
462 int destnode, struct timeval timeout,
465 int ctdb_ctrl_release_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_takeover_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
471 struct ctdb_client_context *client,
472 int destnode, struct timeval timeout,
473 struct ctdb_public_ip *pubip);
475 int ctdb_ctrl_get_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
476 struct ctdb_client_context *client,
477 int destnode, struct timeval timeout,
478 struct ctdb_public_ip_list **pubip_list);
480 int ctdb_ctrl_get_nodemap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
481 struct ctdb_client_context *client,
482 int destnode, struct timeval timeout,
483 struct ctdb_node_map **nodemap);
485 int ctdb_ctrl_get_event_script_status(TALLOC_CTX *mem_ctx,
486 struct tevent_context *ev,
487 struct ctdb_client_context *client,
488 int destnode, struct timeval timeout,
489 enum ctdb_event event,
490 struct ctdb_script_list **slist);
492 int ctdb_ctrl_traverse_kill(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
493 struct ctdb_client_context *client,
494 int destnode, struct timeval timeout,
495 struct ctdb_traverse_start *traverse);
497 int ctdb_ctrl_get_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
498 struct ctdb_client_context *client,
499 int destnode, struct timeval timeout,
500 const char **reclock_file);
502 int ctdb_ctrl_stop_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
503 struct ctdb_client_context *client,
504 int destnode, struct timeval timeout);
506 int ctdb_ctrl_continue_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
507 struct ctdb_client_context *client,
508 int destnode, struct timeval timeout);
510 int ctdb_ctrl_set_lmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
511 struct ctdb_client_context *client,
512 int destnode, struct timeval timeout,
513 uint32_t lmaster_role);
515 int ctdb_ctrl_set_recmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
516 struct ctdb_client_context *client,
517 int destnode, struct timeval timeout,
518 uint32_t recmaster_role);
520 int ctdb_ctrl_enable_script(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
521 struct ctdb_client_context *client,
522 int destnode, struct timeval timeout,
525 int ctdb_ctrl_disable_script(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
526 struct ctdb_client_context *client,
527 int destnode, struct timeval timeout,
530 int ctdb_ctrl_set_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
531 struct ctdb_client_context *client,
532 int destnode, struct timeval timeout,
533 struct ctdb_ban_state *ban_state);
535 int ctdb_ctrl_get_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
536 struct ctdb_client_context *client,
537 int destnode, struct timeval timeout,
538 struct ctdb_ban_state **ban_state);
540 int ctdb_ctrl_register_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
541 struct ctdb_client_context *client,
542 int destnode, struct timeval timeout,
543 struct ctdb_notify_data *notify);
545 int ctdb_ctrl_deregister_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
546 struct ctdb_client_context *client,
547 int destnode, struct timeval timeout,
550 int ctdb_ctrl_trans3_commit(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
551 struct ctdb_client_context *client,
552 int destnode, struct timeval timeout,
553 struct ctdb_rec_buffer *recbuf);
555 int ctdb_ctrl_get_db_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
556 struct ctdb_client_context *client,
557 int destnode, struct timeval timeout,
558 uint32_t db_id, uint64_t *seqnum);
560 int ctdb_ctrl_db_set_healthy(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
561 struct ctdb_client_context *client,
562 int destnode, struct timeval timeout,
565 int ctdb_ctrl_db_get_health(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
566 struct ctdb_client_context *client,
567 int destnode, struct timeval timeout,
568 uint32_t db_id, const char **reason);
570 int ctdb_ctrl_get_public_ip_info(TALLOC_CTX *mem_ctx,
571 struct tevent_context *ev,
572 struct ctdb_client_context *client,
573 int destnode, struct timeval timeout,
574 ctdb_sock_addr *addr,
575 struct ctdb_public_ip_info **ipinfo);
577 int ctdb_ctrl_get_ifaces(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
578 struct ctdb_client_context *client,
579 int destnode, struct timeval timeout,
580 struct ctdb_iface_list **iface_list);
582 int ctdb_ctrl_set_iface_link_state(TALLOC_CTX *mem_ctx,
583 struct tevent_context *ev,
584 struct ctdb_client_context *client,
585 int destnode, struct timeval timeout,
586 struct ctdb_iface *iface);
588 int ctdb_ctrl_tcp_add_delayed_update(TALLOC_CTX *mem_ctx,
589 struct tevent_context *ev,
590 struct ctdb_client_context *client,
591 int destnode, struct timeval timeout,
592 struct ctdb_connection *conn);
594 int ctdb_ctrl_get_stat_history(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
595 struct ctdb_client_context *client,
596 int destnode, struct timeval timeout,
597 struct ctdb_statistics_list **stats_list);
599 int ctdb_ctrl_schedule_for_deletion(TALLOC_CTX *mem_ctx,
600 struct tevent_context *ev,
601 struct ctdb_client_context *client,
602 int destnode, struct timeval timeout,
603 struct ctdb_key_data *key);
605 int ctdb_ctrl_set_db_readonly(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
606 struct ctdb_client_context *client,
607 int destnode, struct timeval timeout,
610 int ctdb_ctrl_check_srvids(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
611 struct ctdb_client_context *client,
612 int destnode, struct timeval timeout,
613 uint64_t *srvid, int count, uint8_t **result);
615 int ctdb_ctrl_traverse_start_ext(TALLOC_CTX *mem_ctx,
616 struct tevent_context *ev,
617 struct ctdb_client_context *client,
618 int destnode, struct timeval timeout,
619 struct ctdb_traverse_start_ext *traverse);
621 int ctdb_ctrl_get_db_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
622 struct ctdb_client_context *client,
623 int destnode, struct timeval timeout,
625 struct ctdb_db_statistics **dbstats);
627 int ctdb_ctrl_set_db_sticky(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
628 struct ctdb_client_context *client,
629 int destnode, struct timeval timeout,
632 int ctdb_ctrl_reload_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
633 struct ctdb_client_context *client,
634 int destnode, struct timeval timeout);
636 int ctdb_ctrl_ipreallocated(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
637 struct ctdb_client_context *client,
638 int destnode, struct timeval timeout);
640 int ctdb_ctrl_get_runstate(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
641 struct ctdb_client_context *client,
642 int destnode, struct timeval timeout,
643 enum ctdb_runstate *runstate);
645 int ctdb_ctrl_db_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
646 struct ctdb_client_context *client,
647 int destnode, struct timeval timeout,
650 int ctdb_ctrl_get_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
651 struct ctdb_client_context *client,
652 int destnode, struct timeval timeout,
653 struct ctdb_node_map **nodemap);
655 int ctdb_ctrl_db_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
656 struct ctdb_client_context *client,
657 int destnode, struct timeval timeout, uint32_t db_id);
659 int ctdb_ctrl_db_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
660 struct ctdb_client_context *client,
661 int destnode, struct timeval timeout, uint32_t db_id);
663 int ctdb_ctrl_db_transaction_start(TALLOC_CTX *mem_ctx,
664 struct tevent_context *ev,
665 struct ctdb_client_context *client,
666 int destnode, struct timeval timeout,
667 struct ctdb_transdb *transdb);
669 int ctdb_ctrl_db_transaction_commit(TALLOC_CTX *mem_ctx,
670 struct tevent_context *ev,
671 struct ctdb_client_context *client,
672 int destnode, struct timeval timeout,
673 struct ctdb_transdb *transdb);
675 int ctdb_ctrl_db_transaction_cancel(TALLOC_CTX *mem_ctx,
676 struct tevent_context *ev,
677 struct ctdb_client_context *client,
678 int destnode, struct timeval timeout,
681 int ctdb_ctrl_db_pull(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
682 struct ctdb_client_context *client,
683 int destnode, struct timeval timeout,
684 struct ctdb_pulldb_ext *pulldb, uint32_t *num_records);
686 int ctdb_ctrl_db_push_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
687 struct ctdb_client_context *client,
688 int destnode, struct timeval timeout,
689 struct ctdb_pulldb_ext *pulldb);
691 int ctdb_ctrl_db_push_confirm(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
692 struct ctdb_client_context *client,
693 int destnode, struct timeval timeout,
694 uint32_t db_id, uint32_t *num_records);
696 /* from client/client_db.c */
698 struct tevent_req *ctdb_attach_send(TALLOC_CTX *mem_ctx,
699 struct tevent_context *ev,
700 struct ctdb_client_context *client,
701 struct timeval timeout,
702 const char *db_name, uint8_t db_flags);
704 bool ctdb_attach_recv(struct tevent_req *req, int *perr,
705 struct ctdb_db_context **out);
707 int ctdb_attach(struct tevent_context *ev,
708 struct ctdb_client_context *client,
709 struct timeval timeout,
710 const char *db_name, uint8_t db_flags,
711 struct ctdb_db_context **out);
713 int ctdb_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
714 struct ctdb_client_context *client,
715 struct timeval timeout, uint32_t db_id);
717 uint32_t ctdb_db_id(struct ctdb_db_context *db);
719 int ctdb_db_traverse(struct ctdb_db_context *db, bool readonly,
721 ctdb_rec_parser_func_t parser, void *private_data);
723 int ctdb_ltdb_fetch(struct ctdb_db_context *db, TDB_DATA key,
724 struct ctdb_ltdb_header *header,
725 TALLOC_CTX *mem_ctx, TDB_DATA *data);
727 struct tevent_req *ctdb_fetch_lock_send(TALLOC_CTX *mem_ctx,
728 struct tevent_context *ev,
729 struct ctdb_client_context *client,
730 struct ctdb_db_context *db,
731 TDB_DATA key, bool readonly);
733 struct ctdb_record_handle *ctdb_fetch_lock_recv(struct tevent_req *req,
734 struct ctdb_ltdb_header *header,
736 TDB_DATA *data, int *perr);
738 int ctdb_fetch_lock(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
739 struct ctdb_client_context *client,
740 struct ctdb_db_context *db, TDB_DATA key, bool readonly,
741 struct ctdb_record_handle **out,
742 struct ctdb_ltdb_header *header, TDB_DATA *data);
744 int ctdb_store_record(struct ctdb_record_handle *h, TDB_DATA data);
746 struct tevent_req *ctdb_delete_record_send(TALLOC_CTX *mem_ctx,
747 struct tevent_context *ev,
748 struct ctdb_record_handle *h);
750 bool ctdb_delete_record_recv(struct tevent_req *req, int *perr);
752 int ctdb_delete_record(struct ctdb_record_handle *h);
754 struct tevent_req *ctdb_g_lock_lock_send(TALLOC_CTX *mem_ctx,
755 struct tevent_context *ev,
756 struct ctdb_client_context *client,
757 struct ctdb_db_context *db,
759 struct ctdb_server_id *sid,
762 bool ctdb_g_lock_lock_recv(struct tevent_req *req, int *perr);
764 struct tevent_req *ctdb_g_lock_unlock_send(TALLOC_CTX *mem_ctx,
765 struct tevent_context *ev,
766 struct ctdb_client_context *client,
767 struct ctdb_db_context *db,
769 struct ctdb_server_id sid);
771 bool ctdb_g_lock_unlock_recv(struct tevent_req *req, int *perr);
773 struct tevent_req *ctdb_transaction_start_send(TALLOC_CTX *mem_ctx,
774 struct tevent_context *ev,
775 struct ctdb_client_context *client,
776 struct timeval timeout,
777 struct ctdb_db_context *db,
780 struct ctdb_transaction_handle *ctdb_transaction_start_recv(
781 struct tevent_req *req,
784 int ctdb_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
785 struct ctdb_client_context *client,
786 struct timeval timeout,
787 struct ctdb_db_context *db, bool readonly,
788 struct ctdb_transaction_handle **out);
790 int ctdb_transaction_fetch_record(struct ctdb_transaction_handle *h,
792 TALLOC_CTX *mem_ctx, TDB_DATA *data);
794 int ctdb_transaction_store_record(struct ctdb_transaction_handle *h,
795 TDB_DATA key, TDB_DATA data);
797 int ctdb_transaction_delete_record(struct ctdb_transaction_handle *h,
800 struct tevent_req *ctdb_transaction_commit_send(
802 struct tevent_context *ev,
803 struct timeval timeout,
804 struct ctdb_transaction_handle *h);
806 bool ctdb_transaction_commit_recv(struct tevent_req *req, int *perr);
808 int ctdb_transaction_commit(struct ctdb_transaction_handle *h);
810 struct tevent_req *ctdb_transaction_cancel_send(
812 struct tevent_context *ev,
813 struct timeval timeout,
814 struct ctdb_transaction_handle *h);
816 bool ctdb_transaction_cancel_recv(struct tevent_req *req, int *perr);
818 int ctdb_transaction_cancel(struct ctdb_transaction_handle *h);
820 /* from client/client_util.c */
822 int list_of_nodes(struct ctdb_node_map *nodemap,
823 uint32_t flags_mask, uint32_t exclude_pnn,
824 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
826 int list_of_active_nodes(struct ctdb_node_map *nodemap, uint32_t exclude_pnn,
827 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
829 int list_of_connected_nodes(struct ctdb_node_map *nodemap,
830 uint32_t exclude_pnn,
831 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
833 int ctdb_ctrl_modflags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
834 struct ctdb_client_context *client,
835 uint32_t destnode, struct timeval timeout,
836 uint32_t set, uint32_t clear);
838 struct ctdb_server_id ctdb_client_get_server_id(
839 struct ctdb_client_context *client,
842 bool ctdb_server_id_equal(struct ctdb_server_id *sid1,
843 struct ctdb_server_id *sid2);
845 int ctdb_server_id_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
846 struct ctdb_client_context *client,
847 struct ctdb_server_id *sid, bool *exists);
849 /* from client/client_event.c */
851 struct ctdb_event_context;
853 int ctdb_event_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
854 const char *sockpath, struct ctdb_event_context **out);
856 void ctdb_event_set_disconnect_callback(struct ctdb_event_context *eclient,
857 ctdb_client_callback_func_t callback,
860 struct tevent_req *ctdb_event_msg_send(TALLOC_CTX *mem_ctx,
861 struct tevent_context *ev,
862 struct ctdb_event_context *eclient,
863 struct ctdb_event_request *request);
865 bool ctdb_event_msg_recv(struct tevent_req *req, int *perr,
867 struct ctdb_event_reply **reply);
869 struct tevent_req *ctdb_event_run_send(TALLOC_CTX *mem_ctx,
870 struct tevent_context *ev,
871 struct ctdb_event_context *eclient,
872 enum ctdb_event event,
873 uint32_t timeout, const char *arg_str);
875 bool ctdb_event_run_recv(struct tevent_req *req, int *perr, int32_t *result);
877 struct tevent_req *ctdb_event_status_send(TALLOC_CTX *mem_ctx,
878 struct tevent_context *ev,
879 struct ctdb_event_context *eclient,
880 enum ctdb_event event,
881 enum ctdb_event_status_state state);
883 bool ctdb_event_status_recv(struct tevent_req *req, int *perr,
884 int32_t *result, int *event_result,
886 struct ctdb_script_list **script_list);
888 struct tevent_req *ctdb_event_script_list_send(
890 struct tevent_context *ev,
891 struct ctdb_event_context *eclient);
893 bool ctdb_event_script_list_recv(struct tevent_req *req, int *perr,
894 int32_t *result, TALLOC_CTX *mem_ctx,
895 struct ctdb_script_list **script_list);
897 struct tevent_req *ctdb_event_script_enable_send(
899 struct tevent_context *ev,
900 struct ctdb_event_context *eclient,
901 const char *script_name);
903 bool ctdb_event_script_enable_recv(struct tevent_req *req, int *perr,
906 struct tevent_req *ctdb_event_script_disable_send(
908 struct tevent_context *ev,
909 struct ctdb_event_context *eclient,
910 const char *script_name);
912 bool ctdb_event_script_disable_recv(struct tevent_req *req, int *perr,
915 #endif /* __CTDB_CLIENT_H__ */