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_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
340 struct ctdb_client_context *client,
341 int destnode, struct timeval timeout,
344 int ctdb_ctrl_get_pnn(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
345 struct ctdb_client_context *client,
346 int destnode, struct timeval timeout,
349 int ctdb_ctrl_shutdown(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
350 struct ctdb_client_context *client,
351 int destnode, struct timeval timeout);
353 int ctdb_ctrl_get_monmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
354 struct ctdb_client_context *client,
355 int destnode, struct timeval timeout,
358 int ctdb_ctrl_tcp_add(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_tcp_remove(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
364 struct ctdb_client_context *client,
365 int destnode, struct timeval timeout,
366 struct ctdb_connection *conn);
368 int ctdb_ctrl_set_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
369 struct ctdb_client_context *client,
370 int destnode, struct timeval timeout,
371 struct ctdb_tunable *tunable);
373 int ctdb_ctrl_get_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
374 struct ctdb_client_context *client,
375 int destnode, struct timeval timeout,
376 const char *var, uint32_t *value);
378 int ctdb_ctrl_list_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
379 struct ctdb_client_context *client,
380 int destnode, struct timeval timeout,
381 struct ctdb_var_list **var_list);
383 int ctdb_ctrl_modify_flags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
384 struct ctdb_client_context *client,
385 int destnode, struct timeval timeout,
386 uint32_t pnn, uint32_t old_flags,
389 int ctdb_ctrl_get_all_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
390 struct ctdb_client_context *client,
391 int destnode, struct timeval timeout,
392 struct ctdb_tunable_list **tun_list);
394 int ctdb_ctrl_get_tcp_tickle_list(TALLOC_CTX *mem_ctx,
395 struct tevent_context *ev,
396 struct ctdb_client_context *client,
397 int destnode, struct timeval timeout,
398 ctdb_sock_addr *addr,
399 struct ctdb_tickle_list **tickles);
401 int ctdb_ctrl_set_tcp_tickle_list(TALLOC_CTX *mem_ctx,
402 struct tevent_context *ev,
403 struct ctdb_client_context *client,
404 int destnode, struct timeval timeout,
405 struct ctdb_tickle_list *tickles);
407 int ctdb_ctrl_db_attach_persistent(TALLOC_CTX *mem_ctx,
408 struct tevent_context *ev,
409 struct ctdb_client_context *client,
410 int destnode, struct timeval timeout,
411 const char *db_name, int tdb_flags,
414 int ctdb_ctrl_send_gratuitous_arp(TALLOC_CTX *mem_ctx,
415 struct tevent_context *ev,
416 struct ctdb_client_context *client,
417 int destnode, struct timeval timeout,
418 struct ctdb_addr_info *addr_info);
420 int ctdb_ctrl_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
421 struct ctdb_client_context *client,
422 int destnode, struct timeval timeout,
425 int ctdb_ctrl_transaction_commit(TALLOC_CTX *mem_ctx,
426 struct tevent_context *ev,
427 struct ctdb_client_context *client,
428 int destnode, struct timeval timeout,
431 int ctdb_ctrl_wipe_database(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
432 struct ctdb_client_context *client,
433 int destnode, struct timeval timeout,
434 uint32_t db_id, uint32_t tid);
436 int ctdb_ctrl_uptime(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
437 struct ctdb_client_context *client,
438 int destnode, struct timeval timeout,
439 struct ctdb_uptime **uptime);
441 int ctdb_ctrl_start_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
442 struct ctdb_client_context *client,
443 int destnode, struct timeval timeout);
445 int ctdb_ctrl_end_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
446 struct ctdb_client_context *client,
447 int destnode, struct timeval timeout);
449 int ctdb_ctrl_reload_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
450 struct ctdb_client_context *client,
451 int destnode, struct timeval timeout);
453 int ctdb_ctrl_enable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
454 struct ctdb_client_context *client,
455 int destnode, struct timeval timeout);
457 int ctdb_ctrl_disable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
458 struct ctdb_client_context *client,
459 int destnode, struct timeval timeout);
461 int ctdb_ctrl_add_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
462 struct ctdb_client_context *client,
463 int destnode, struct timeval timeout,
464 struct ctdb_addr_info *addr_info);
466 int ctdb_ctrl_del_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
467 struct ctdb_client_context *client,
468 int destnode, struct timeval timeout,
469 struct ctdb_addr_info *addr_info);
471 int ctdb_ctrl_run_eventscripts(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
472 struct ctdb_client_context *client,
473 int destnode, struct timeval timeout,
476 int ctdb_ctrl_get_capabilities(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
477 struct ctdb_client_context *client,
478 int destnode, struct timeval timeout,
481 int ctdb_ctrl_release_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
482 struct ctdb_client_context *client,
483 int destnode, struct timeval timeout,
484 struct ctdb_public_ip *pubip);
486 int ctdb_ctrl_takeover_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
487 struct ctdb_client_context *client,
488 int destnode, struct timeval timeout,
489 struct ctdb_public_ip *pubip);
491 int ctdb_ctrl_get_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
492 struct ctdb_client_context *client,
493 int destnode, struct timeval timeout,
494 struct ctdb_public_ip_list **pubip_list);
496 int ctdb_ctrl_get_nodemap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
497 struct ctdb_client_context *client,
498 int destnode, struct timeval timeout,
499 struct ctdb_node_map **nodemap);
501 int ctdb_ctrl_get_event_script_status(TALLOC_CTX *mem_ctx,
502 struct tevent_context *ev,
503 struct ctdb_client_context *client,
504 int destnode, struct timeval timeout,
505 enum ctdb_event event,
506 struct ctdb_script_list **slist);
508 int ctdb_ctrl_traverse_kill(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
509 struct ctdb_client_context *client,
510 int destnode, struct timeval timeout,
511 struct ctdb_traverse_start *traverse);
513 int ctdb_ctrl_get_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
514 struct ctdb_client_context *client,
515 int destnode, struct timeval timeout,
516 const char **reclock_file);
518 int ctdb_ctrl_stop_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
519 struct ctdb_client_context *client,
520 int destnode, struct timeval timeout);
522 int ctdb_ctrl_continue_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
523 struct ctdb_client_context *client,
524 int destnode, struct timeval timeout);
526 int ctdb_ctrl_set_lmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
527 struct ctdb_client_context *client,
528 int destnode, struct timeval timeout,
529 uint32_t lmaster_role);
531 int ctdb_ctrl_set_recmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
532 struct ctdb_client_context *client,
533 int destnode, struct timeval timeout,
534 uint32_t recmaster_role);
536 int ctdb_ctrl_enable_script(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
537 struct ctdb_client_context *client,
538 int destnode, struct timeval timeout,
541 int ctdb_ctrl_disable_script(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
542 struct ctdb_client_context *client,
543 int destnode, struct timeval timeout,
546 int ctdb_ctrl_set_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
547 struct ctdb_client_context *client,
548 int destnode, struct timeval timeout,
549 struct ctdb_ban_state *ban_state);
551 int ctdb_ctrl_get_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
552 struct ctdb_client_context *client,
553 int destnode, struct timeval timeout,
554 struct ctdb_ban_state **ban_state);
556 int ctdb_ctrl_set_db_priority(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
557 struct ctdb_client_context *client,
558 int destnode, struct timeval timeout,
559 uint32_t db_id, int priority);
561 int ctdb_ctrl_get_db_priority(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
562 struct ctdb_client_context *client,
563 int destnode, struct timeval timeout,
564 uint32_t db_id, uint32_t *priority);
566 int ctdb_ctrl_transaction_cancel(TALLOC_CTX *mem_ctx,
567 struct tevent_context *ev,
568 struct ctdb_client_context *client,
569 int destnode, struct timeval timeout,
572 int ctdb_ctrl_register_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
573 struct ctdb_client_context *client,
574 int destnode, struct timeval timeout,
575 struct ctdb_notify_data *notify);
577 int ctdb_ctrl_deregister_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
578 struct ctdb_client_context *client,
579 int destnode, struct timeval timeout,
582 int ctdb_ctrl_trans3_commit(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
583 struct ctdb_client_context *client,
584 int destnode, struct timeval timeout,
585 struct ctdb_rec_buffer *recbuf);
587 int ctdb_ctrl_get_db_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
588 struct ctdb_client_context *client,
589 int destnode, struct timeval timeout,
590 uint32_t db_id, uint64_t *seqnum);
592 int ctdb_ctrl_db_set_healthy(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
593 struct ctdb_client_context *client,
594 int destnode, struct timeval timeout,
597 int ctdb_ctrl_db_get_health(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
598 struct ctdb_client_context *client,
599 int destnode, struct timeval timeout,
600 uint32_t db_id, const char **reason);
602 int ctdb_ctrl_get_public_ip_info(TALLOC_CTX *mem_ctx,
603 struct tevent_context *ev,
604 struct ctdb_client_context *client,
605 int destnode, struct timeval timeout,
606 ctdb_sock_addr *addr,
607 struct ctdb_public_ip_info **ipinfo);
609 int ctdb_ctrl_get_ifaces(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
610 struct ctdb_client_context *client,
611 int destnode, struct timeval timeout,
612 struct ctdb_iface_list **iface_list);
614 int ctdb_ctrl_set_iface_link_state(TALLOC_CTX *mem_ctx,
615 struct tevent_context *ev,
616 struct ctdb_client_context *client,
617 int destnode, struct timeval timeout,
618 struct ctdb_iface *iface);
620 int ctdb_ctrl_tcp_add_delayed_update(TALLOC_CTX *mem_ctx,
621 struct tevent_context *ev,
622 struct ctdb_client_context *client,
623 int destnode, struct timeval timeout,
624 struct ctdb_connection *conn);
626 int ctdb_ctrl_get_stat_history(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
627 struct ctdb_client_context *client,
628 int destnode, struct timeval timeout,
629 struct ctdb_statistics_list **stats_list);
631 int ctdb_ctrl_schedule_for_deletion(TALLOC_CTX *mem_ctx,
632 struct tevent_context *ev,
633 struct ctdb_client_context *client,
634 int destnode, struct timeval timeout,
635 struct ctdb_key_data *key);
637 int ctdb_ctrl_set_db_readonly(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
638 struct ctdb_client_context *client,
639 int destnode, struct timeval timeout,
642 int ctdb_ctrl_check_srvids(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
643 struct ctdb_client_context *client,
644 int destnode, struct timeval timeout,
645 uint64_t *srvid, int count, uint8_t **result);
647 int ctdb_ctrl_traverse_start_ext(TALLOC_CTX *mem_ctx,
648 struct tevent_context *ev,
649 struct ctdb_client_context *client,
650 int destnode, struct timeval timeout,
651 struct ctdb_traverse_start_ext *traverse);
653 int ctdb_ctrl_get_db_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
654 struct ctdb_client_context *client,
655 int destnode, struct timeval timeout,
657 struct ctdb_db_statistics **dbstats);
659 int ctdb_ctrl_set_db_sticky(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
660 struct ctdb_client_context *client,
661 int destnode, struct timeval timeout,
664 int ctdb_ctrl_reload_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
665 struct ctdb_client_context *client,
666 int destnode, struct timeval timeout);
668 int ctdb_ctrl_ipreallocated(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
669 struct ctdb_client_context *client,
670 int destnode, struct timeval timeout);
672 int ctdb_ctrl_get_runstate(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
673 struct ctdb_client_context *client,
674 int destnode, struct timeval timeout,
675 enum ctdb_runstate *runstate);
677 int ctdb_ctrl_db_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
678 struct ctdb_client_context *client,
679 int destnode, struct timeval timeout,
682 int ctdb_ctrl_get_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
683 struct ctdb_client_context *client,
684 int destnode, struct timeval timeout,
685 struct ctdb_node_map **nodemap);
687 int ctdb_ctrl_db_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
688 struct ctdb_client_context *client,
689 int destnode, struct timeval timeout, uint32_t db_id);
691 int ctdb_ctrl_db_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
692 struct ctdb_client_context *client,
693 int destnode, struct timeval timeout, uint32_t db_id);
695 int ctdb_ctrl_db_transaction_start(TALLOC_CTX *mem_ctx,
696 struct tevent_context *ev,
697 struct ctdb_client_context *client,
698 int destnode, struct timeval timeout,
699 struct ctdb_transdb *transdb);
701 int ctdb_ctrl_db_transaction_commit(TALLOC_CTX *mem_ctx,
702 struct tevent_context *ev,
703 struct ctdb_client_context *client,
704 int destnode, struct timeval timeout,
705 struct ctdb_transdb *transdb);
707 int ctdb_ctrl_db_transaction_cancel(TALLOC_CTX *mem_ctx,
708 struct tevent_context *ev,
709 struct ctdb_client_context *client,
710 int destnode, struct timeval timeout,
713 int ctdb_ctrl_db_pull(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
714 struct ctdb_client_context *client,
715 int destnode, struct timeval timeout,
716 struct ctdb_pulldb_ext *pulldb, uint32_t *num_records);
718 int ctdb_ctrl_db_push_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
719 struct ctdb_client_context *client,
720 int destnode, struct timeval timeout,
721 struct ctdb_pulldb_ext *pulldb);
723 int ctdb_ctrl_db_push_confirm(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
724 struct ctdb_client_context *client,
725 int destnode, struct timeval timeout,
726 uint32_t db_id, uint32_t *num_records);
728 /* from client/client_db.c */
730 struct tevent_req *ctdb_attach_send(TALLOC_CTX *mem_ctx,
731 struct tevent_context *ev,
732 struct ctdb_client_context *client,
733 struct timeval timeout,
734 const char *db_name, uint8_t db_flags);
736 bool ctdb_attach_recv(struct tevent_req *req, int *perr,
737 struct ctdb_db_context **out);
739 int ctdb_attach(struct tevent_context *ev,
740 struct ctdb_client_context *client,
741 struct timeval timeout,
742 const char *db_name, uint8_t db_flags,
743 struct ctdb_db_context **out);
745 int ctdb_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
746 struct ctdb_client_context *client,
747 struct timeval timeout, uint32_t db_id);
749 uint32_t ctdb_db_id(struct ctdb_db_context *db);
751 int ctdb_db_traverse(struct ctdb_db_context *db, bool readonly,
753 ctdb_rec_parser_func_t parser, void *private_data);
755 struct tevent_req *ctdb_fetch_lock_send(TALLOC_CTX *mem_ctx,
756 struct tevent_context *ev,
757 struct ctdb_client_context *client,
758 struct ctdb_db_context *db,
759 TDB_DATA key, bool readonly);
761 struct ctdb_record_handle *ctdb_fetch_lock_recv(struct tevent_req *req,
762 struct ctdb_ltdb_header *header,
764 TDB_DATA *data, int *perr);
766 int ctdb_fetch_lock(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
767 struct ctdb_client_context *client,
768 struct ctdb_db_context *db, TDB_DATA key, bool readonly,
769 struct ctdb_record_handle **out,
770 struct ctdb_ltdb_header *header, TDB_DATA *data);
772 int ctdb_store_record(struct ctdb_record_handle *h, TDB_DATA data);
774 struct tevent_req *ctdb_delete_record_send(TALLOC_CTX *mem_ctx,
775 struct tevent_context *ev,
776 struct ctdb_record_handle *h);
778 bool ctdb_delete_record_recv(struct tevent_req *req, int *perr);
780 int ctdb_delete_record(struct ctdb_record_handle *h);
782 struct tevent_req *ctdb_g_lock_lock_send(TALLOC_CTX *mem_ctx,
783 struct tevent_context *ev,
784 struct ctdb_client_context *client,
785 struct ctdb_db_context *db,
787 struct ctdb_server_id *sid,
790 bool ctdb_g_lock_lock_recv(struct tevent_req *req, int *perr);
792 struct tevent_req *ctdb_g_lock_unlock_send(TALLOC_CTX *mem_ctx,
793 struct tevent_context *ev,
794 struct ctdb_client_context *client,
795 struct ctdb_db_context *db,
797 struct ctdb_server_id sid);
799 bool ctdb_g_lock_unlock_recv(struct tevent_req *req, int *perr);
801 struct tevent_req *ctdb_transaction_start_send(TALLOC_CTX *mem_ctx,
802 struct tevent_context *ev,
803 struct ctdb_client_context *client,
804 struct timeval timeout,
805 struct ctdb_db_context *db,
808 struct ctdb_transaction_handle *ctdb_transaction_start_recv(
809 struct tevent_req *req,
812 int ctdb_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
813 struct ctdb_client_context *client,
814 struct timeval timeout,
815 struct ctdb_db_context *db, bool readonly,
816 struct ctdb_transaction_handle **out);
818 int ctdb_transaction_fetch_record(struct ctdb_transaction_handle *h,
820 TALLOC_CTX *mem_ctx, TDB_DATA *data);
822 int ctdb_transaction_store_record(struct ctdb_transaction_handle *h,
823 TDB_DATA key, TDB_DATA data);
825 int ctdb_transaction_delete_record(struct ctdb_transaction_handle *h,
828 struct tevent_req *ctdb_transaction_commit_send(
830 struct tevent_context *ev,
831 struct timeval timeout,
832 struct ctdb_transaction_handle *h);
834 bool ctdb_transaction_commit_recv(struct tevent_req *req, int *perr);
836 int ctdb_transaction_commit(struct ctdb_transaction_handle *h);
838 int ctdb_transaction_cancel(struct ctdb_transaction_handle *h);
840 /* from client/client_util.c */
842 int list_of_nodes(struct ctdb_node_map *nodemap,
843 uint32_t flags_mask, uint32_t exclude_pnn,
844 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
846 int list_of_active_nodes(struct ctdb_node_map *nodemap, uint32_t exclude_pnn,
847 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
849 int list_of_connected_nodes(struct ctdb_node_map *nodemap,
850 uint32_t exclude_pnn,
851 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
853 int ctdb_ctrl_modflags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
854 struct ctdb_client_context *client,
855 uint32_t destnode, struct timeval timeout,
856 uint32_t set, uint32_t clear);
858 struct ctdb_server_id ctdb_client_get_server_id(
859 struct ctdb_client_context *client,
862 bool ctdb_server_id_equal(struct ctdb_server_id *sid1,
863 struct ctdb_server_id *sid2);
865 int ctdb_server_id_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
866 struct ctdb_client_context *client,
867 struct ctdb_server_id *sid, bool *exists);
869 #endif /* __CTDB_CLIENT_H__ */