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 int ctdb_client_message(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
82 struct ctdb_client_context *client,
83 uint32_t destnode, struct ctdb_req_message *message);
85 struct tevent_req *ctdb_client_set_message_handler_send(
87 struct tevent_context *ev,
88 struct ctdb_client_context *client,
90 srvid_handler_fn handler,
92 bool ctdb_client_set_message_handler_recv(struct tevent_req *req, int *perr);
94 struct tevent_req *ctdb_client_remove_message_handler_send(
96 struct tevent_context *ev,
97 struct ctdb_client_context *client,
100 bool ctdb_client_remove_message_handler_recv(struct tevent_req *req,
103 int ctdb_client_set_message_handler(struct tevent_context *ev,
104 struct ctdb_client_context *client,
105 uint64_t srvid, srvid_handler_fn handler,
108 int ctdb_client_remove_message_handler(struct tevent_context *ev,
109 struct ctdb_client_context *client,
110 uint64_t srvid, void *private_data);
112 /* from client/client_message_sync.c */
114 int ctdb_message_recd_update_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
115 struct ctdb_client_context *client,
116 int destnode, struct ctdb_public_ip *pubip);
118 int ctdb_message_mem_dump(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
119 struct ctdb_client_context *client,
120 int destnode, struct ctdb_srvid_message *msg);
122 int ctdb_message_reload_nodes(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
123 struct ctdb_client_context *client,
126 int ctdb_message_takeover_run(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
127 struct ctdb_client_context *client,
128 int destnode, struct ctdb_srvid_message *msg);
130 int ctdb_message_rebalance_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
131 struct ctdb_client_context *client,
132 int destnode, uint32_t pnn);
134 int ctdb_message_disable_takeover_runs(TALLOC_CTX *mem_ctx,
135 struct tevent_context *ev,
136 struct ctdb_client_context *client,
138 struct ctdb_disable_message *disable);
140 int ctdb_message_disable_recoveries(TALLOC_CTX *mem_ctx,
141 struct tevent_context *ev,
142 struct ctdb_client_context *client,
144 struct ctdb_disable_message *disable);
146 int ctdb_message_disable_ip_check(TALLOC_CTX *mem_ctx,
147 struct tevent_context *ev,
148 struct ctdb_client_context *client,
149 int destnode, uint32_t timeout);
151 /* from client/client_control.c */
153 struct tevent_req *ctdb_client_control_send(TALLOC_CTX *mem_ctx,
154 struct tevent_context *ev,
155 struct ctdb_client_context *client,
157 struct timeval timeout,
158 struct ctdb_req_control *request);
160 bool ctdb_client_control_recv(struct tevent_req *req, int *perr,
162 struct ctdb_reply_control **preply);
164 struct tevent_req *ctdb_client_control_multi_send(
166 struct tevent_context *ev,
167 struct ctdb_client_context *client,
168 uint32_t *pnn_list, int count,
169 struct timeval timeout,
170 struct ctdb_req_control *request);
172 bool ctdb_client_control_multi_recv(struct tevent_req *req, int *perr,
173 TALLOC_CTX *mem_ctx, int **perr_list,
174 struct ctdb_reply_control ***preply);
176 int ctdb_client_control_multi_error(uint32_t *pnn_list, int count,
177 int *err_list, uint32_t *pnn);
179 int ctdb_client_control(TALLOC_CTX *mem_ctx,
180 struct tevent_context *ev,
181 struct ctdb_client_context *client,
183 struct timeval timeout,
184 struct ctdb_req_control *c,
185 struct ctdb_reply_control **preply);
187 int ctdb_client_control_multi(TALLOC_CTX *mem_ctx,
188 struct tevent_context *ev,
189 struct ctdb_client_context *client,
190 uint32_t *pnn_list, int count,
191 struct timeval timeout,
192 struct ctdb_req_control *request,
194 struct ctdb_reply_control ***preply);
196 /* from client/client_control_sync.c */
198 int ctdb_ctrl_process_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
199 struct ctdb_client_context *client,
200 int destnode, struct timeval timeout,
201 pid_t pid, int *status);
203 int ctdb_ctrl_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
204 struct ctdb_client_context *client,
205 int destnode, struct timeval timeout,
206 struct ctdb_statistics **stats);
208 int ctdb_ctrl_ping(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
209 struct ctdb_client_context *client,
210 int destnode, struct timeval timeout,
213 int ctdb_ctrl_getdbpath(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
214 struct ctdb_client_context *client,
215 int destnode, struct timeval timeout,
216 uint32_t db_id, const char **db_path);
218 int ctdb_ctrl_getvnnmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
219 struct ctdb_client_context *client,
220 int destnode, struct timeval timeout,
221 struct ctdb_vnn_map **vnnmap);
223 int ctdb_ctrl_getdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
224 struct ctdb_client_context *client,
225 int destnode, struct timeval timeout,
228 int ctdb_ctrl_setdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
229 struct ctdb_client_context *client,
230 int destnode, struct timeval timeout,
233 int ctdb_ctrl_get_dbmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
234 struct ctdb_client_context *client,
235 int destnode, struct timeval timeout,
236 struct ctdb_dbid_map **dbmap);
238 int ctdb_ctrl_pull_db(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
239 struct ctdb_client_context *client, int destnode,
240 struct timeval timeout, struct ctdb_pulldb *pulldb,
241 struct ctdb_rec_buffer **recbuf);
243 int ctdb_ctrl_push_db(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
244 struct ctdb_client_context *client, int destnode,
245 struct timeval timeout, struct ctdb_rec_buffer *recbuf);
247 int ctdb_ctrl_get_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
248 struct ctdb_client_context *client,
249 int destnode, struct timeval timeout,
252 int ctdb_ctrl_set_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
253 struct ctdb_client_context *client,
254 int destnode, struct timeval timeout,
257 int ctdb_ctrl_statistics_reset(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
258 struct ctdb_client_context *client,
259 int destnode, struct timeval timeout);
261 int ctdb_ctrl_db_attach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
262 struct ctdb_client_context *client,
263 int destnode, struct timeval timeout,
264 const char *db_name, uint32_t tdb_flags,
267 int ctdb_ctrl_traverse_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
268 struct ctdb_client_context *client,
269 int destnode, struct timeval timeout,
270 struct ctdb_traverse_start *traverse);
272 int ctdb_ctrl_register_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
273 struct ctdb_client_context *client,
274 int destnode, struct timeval timeout,
277 int ctdb_ctrl_deregister_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
278 struct ctdb_client_context *client,
279 int destnode, struct timeval timeout,
282 int ctdb_ctrl_get_dbname(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
283 struct ctdb_client_context *client,
284 int destnode, struct timeval timeout,
285 uint32_t db_id, const char **db_name);
287 int ctdb_ctrl_enable_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
288 struct ctdb_client_context *client,
289 int destnode, struct timeval timeout,
292 int ctdb_ctrl_update_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
293 struct ctdb_client_context *client,
294 int destnode, struct timeval timeout,
297 int ctdb_ctrl_dump_memory(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
298 struct ctdb_client_context *client,
299 int destnode, struct timeval timeout,
300 const char **mem_str);
302 int ctdb_ctrl_get_pid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
303 struct ctdb_client_context *client,
304 int destnode, struct timeval timeout,
307 int ctdb_ctrl_get_recmaster(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
308 struct ctdb_client_context *client,
309 int destnode, struct timeval timeout,
310 uint32_t *recmaster);
312 int ctdb_ctrl_set_recmaster(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
313 struct ctdb_client_context *client,
314 int destnode, struct timeval timeout,
317 int ctdb_ctrl_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
318 struct ctdb_client_context *client,
319 int destnode, struct timeval timeout,
322 int ctdb_ctrl_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
323 struct ctdb_client_context *client,
324 int destnode, struct timeval timeout,
327 int ctdb_ctrl_get_pnn(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
328 struct ctdb_client_context *client,
329 int destnode, struct timeval timeout,
332 int ctdb_ctrl_shutdown(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
333 struct ctdb_client_context *client,
334 int destnode, struct timeval timeout);
336 int ctdb_ctrl_get_monmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
337 struct ctdb_client_context *client,
338 int destnode, struct timeval timeout,
341 int ctdb_ctrl_tcp_add(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
342 struct ctdb_client_context *client,
343 int destnode, struct timeval timeout,
344 struct ctdb_connection *conn);
346 int ctdb_ctrl_tcp_remove(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
347 struct ctdb_client_context *client,
348 int destnode, struct timeval timeout,
349 struct ctdb_connection *conn);
351 int ctdb_ctrl_set_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
352 struct ctdb_client_context *client,
353 int destnode, struct timeval timeout,
354 struct ctdb_tunable *tunable);
356 int ctdb_ctrl_get_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
357 struct ctdb_client_context *client,
358 int destnode, struct timeval timeout,
359 const char *var, uint32_t *value);
361 int ctdb_ctrl_list_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
362 struct ctdb_client_context *client,
363 int destnode, struct timeval timeout,
364 struct ctdb_var_list **var_list);
366 int ctdb_ctrl_modify_flags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
367 struct ctdb_client_context *client,
368 int destnode, struct timeval timeout,
369 uint32_t pnn, uint32_t old_flags,
372 int ctdb_ctrl_get_all_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
373 struct ctdb_client_context *client,
374 int destnode, struct timeval timeout,
375 struct ctdb_tunable_list **tun_list);
377 int ctdb_ctrl_kill_tcp(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
378 struct ctdb_client_context *client,
379 int destnode, struct timeval timeout,
380 struct ctdb_connection *conn);
382 int ctdb_ctrl_get_tcp_tickle_list(TALLOC_CTX *mem_ctx,
383 struct tevent_context *ev,
384 struct ctdb_client_context *client,
385 int destnode, struct timeval timeout,
386 ctdb_sock_addr *addr,
387 struct ctdb_tickle_list **tickles);
389 int ctdb_ctrl_set_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 struct ctdb_tickle_list *tickles);
395 int ctdb_ctrl_register_server_id(TALLOC_CTX *mem_ctx,
396 struct tevent_context *ev,
397 struct ctdb_client_context *client,
398 int destnode, struct timeval timeout,
399 struct ctdb_client_id *cid);
401 int ctdb_ctrl_unregister_server_id(TALLOC_CTX *mem_ctx,
402 struct tevent_context *ev,
403 struct ctdb_client_context *client,
404 int destnode, struct timeval timeout,
405 struct ctdb_client_id *cid);
407 int ctdb_ctrl_check_server_id(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
408 struct ctdb_client_context *client,
409 int destnode, struct timeval timeout,
410 struct ctdb_client_id *cid);
412 int ctdb_ctrl_get_server_id_list(TALLOC_CTX *mem_ctx,
413 struct tevent_context *ev,
414 struct ctdb_client_context *client,
415 int destnode, struct timeval timeout,
416 struct ctdb_client_id_map **cid_map);
418 int ctdb_ctrl_db_attach_persistent(TALLOC_CTX *mem_ctx,
419 struct tevent_context *ev,
420 struct ctdb_client_context *client,
421 int destnode, struct timeval timeout,
422 const char *db_name, int tdb_flags,
425 int ctdb_ctrl_send_gratuitous_arp(TALLOC_CTX *mem_ctx,
426 struct tevent_context *ev,
427 struct ctdb_client_context *client,
428 int destnode, struct timeval timeout,
429 struct ctdb_addr_info *addr_info);
431 int ctdb_ctrl_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
432 struct ctdb_client_context *client,
433 int destnode, struct timeval timeout,
436 int ctdb_ctrl_transaction_commit(TALLOC_CTX *mem_ctx,
437 struct tevent_context *ev,
438 struct ctdb_client_context *client,
439 int destnode, struct timeval timeout,
442 int ctdb_ctrl_wipe_database(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
443 struct ctdb_client_context *client,
444 int destnode, struct timeval timeout,
445 uint32_t db_id, uint32_t tid);
447 int ctdb_ctrl_uptime(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
448 struct ctdb_client_context *client,
449 int destnode, struct timeval timeout,
450 struct ctdb_uptime **uptime);
452 int ctdb_ctrl_start_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
453 struct ctdb_client_context *client,
454 int destnode, struct timeval timeout);
456 int ctdb_ctrl_end_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
457 struct ctdb_client_context *client,
458 int destnode, struct timeval timeout);
460 int ctdb_ctrl_reload_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
461 struct ctdb_client_context *client,
462 int destnode, struct timeval timeout);
464 int ctdb_ctrl_enable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
465 struct ctdb_client_context *client,
466 int destnode, struct timeval timeout);
468 int ctdb_ctrl_disable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
469 struct ctdb_client_context *client,
470 int destnode, struct timeval timeout);
472 int ctdb_ctrl_add_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
473 struct ctdb_client_context *client,
474 int destnode, struct timeval timeout,
475 struct ctdb_addr_info *addr_info);
477 int ctdb_ctrl_del_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
478 struct ctdb_client_context *client,
479 int destnode, struct timeval timeout,
480 struct ctdb_addr_info *addr_info);
482 int ctdb_ctrl_run_eventscripts(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
483 struct ctdb_client_context *client,
484 int destnode, struct timeval timeout,
487 int ctdb_ctrl_get_capabilities(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
488 struct ctdb_client_context *client,
489 int destnode, struct timeval timeout,
492 int ctdb_ctrl_release_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
493 struct ctdb_client_context *client,
494 int destnode, struct timeval timeout,
495 struct ctdb_public_ip *pubip);
497 int ctdb_ctrl_takeover_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
498 struct ctdb_client_context *client,
499 int destnode, struct timeval timeout,
500 struct ctdb_public_ip *pubip);
502 int ctdb_ctrl_get_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
503 struct ctdb_client_context *client,
504 int destnode, struct timeval timeout,
505 struct ctdb_public_ip_list **pubip_list);
507 int ctdb_ctrl_get_nodemap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
508 struct ctdb_client_context *client,
509 int destnode, struct timeval timeout,
510 struct ctdb_node_map **nodemap);
512 int ctdb_ctrl_get_event_script_status(TALLOC_CTX *mem_ctx,
513 struct tevent_context *ev,
514 struct ctdb_client_context *client,
515 int destnode, struct timeval timeout,
516 enum ctdb_event event,
517 struct ctdb_script_list **slist);
519 int ctdb_ctrl_traverse_kill(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
520 struct ctdb_client_context *client,
521 int destnode, struct timeval timeout,
522 struct ctdb_traverse_start *traverse);
524 int ctdb_ctrl_get_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
525 struct ctdb_client_context *client,
526 int destnode, struct timeval timeout,
527 const char **reclock_file);
529 int ctdb_ctrl_set_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
530 struct ctdb_client_context *client,
531 int destnode, struct timeval timeout,
532 const char *reclock_file);
534 int ctdb_ctrl_stop_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
535 struct ctdb_client_context *client,
536 int destnode, struct timeval timeout);
538 int ctdb_ctrl_continue_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
539 struct ctdb_client_context *client,
540 int destnode, struct timeval timeout);
542 int ctdb_ctrl_set_lmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
543 struct ctdb_client_context *client,
544 int destnode, struct timeval timeout,
545 uint32_t lmaster_role);
547 int ctdb_ctrl_set_recmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
548 struct ctdb_client_context *client,
549 int destnode, struct timeval timeout,
550 uint32_t recmaster_role);
552 int ctdb_ctrl_enable_script(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
553 struct ctdb_client_context *client,
554 int destnode, struct timeval timeout,
557 int ctdb_ctrl_disable_script(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
558 struct ctdb_client_context *client,
559 int destnode, struct timeval timeout,
562 int ctdb_ctrl_set_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
563 struct ctdb_client_context *client,
564 int destnode, struct timeval timeout,
565 struct ctdb_ban_state *ban_state);
567 int ctdb_ctrl_get_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
568 struct ctdb_client_context *client,
569 int destnode, struct timeval timeout,
570 struct ctdb_ban_state **ban_state);
572 int ctdb_ctrl_set_db_priority(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
573 struct ctdb_client_context *client,
574 int destnode, struct timeval timeout,
575 uint32_t db_id, int priority);
577 int ctdb_ctrl_get_db_priority(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
578 struct ctdb_client_context *client,
579 int destnode, struct timeval timeout,
580 uint32_t db_id, uint32_t *priority);
582 int ctdb_ctrl_transaction_cancel(TALLOC_CTX *mem_ctx,
583 struct tevent_context *ev,
584 struct ctdb_client_context *client,
585 int destnode, struct timeval timeout,
588 int ctdb_ctrl_register_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
589 struct ctdb_client_context *client,
590 int destnode, struct timeval timeout,
591 struct ctdb_notify_data *notify);
593 int ctdb_ctrl_deregister_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
594 struct ctdb_client_context *client,
595 int destnode, struct timeval timeout,
598 int ctdb_ctrl_trans3_commit(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
599 struct ctdb_client_context *client,
600 int destnode, struct timeval timeout,
601 struct ctdb_rec_buffer *recbuf);
603 int ctdb_ctrl_get_db_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
604 struct ctdb_client_context *client,
605 int destnode, struct timeval timeout,
606 uint32_t db_id, uint64_t *seqnum);
608 int ctdb_ctrl_db_set_healthy(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
609 struct ctdb_client_context *client,
610 int destnode, struct timeval timeout,
613 int ctdb_ctrl_db_get_health(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
614 struct ctdb_client_context *client,
615 int destnode, struct timeval timeout,
616 uint32_t db_id, const char **reason);
618 int ctdb_ctrl_get_public_ip_info(TALLOC_CTX *mem_ctx,
619 struct tevent_context *ev,
620 struct ctdb_client_context *client,
621 int destnode, struct timeval timeout,
622 ctdb_sock_addr *addr,
623 struct ctdb_public_ip_info **ipinfo);
625 int ctdb_ctrl_get_ifaces(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
626 struct ctdb_client_context *client,
627 int destnode, struct timeval timeout,
628 struct ctdb_iface_list **iface_list);
630 int ctdb_ctrl_set_iface_link_state(TALLOC_CTX *mem_ctx,
631 struct tevent_context *ev,
632 struct ctdb_client_context *client,
633 int destnode, struct timeval timeout,
634 struct ctdb_iface *iface);
636 int ctdb_ctrl_tcp_add_delayed_update(TALLOC_CTX *mem_ctx,
637 struct tevent_context *ev,
638 struct ctdb_client_context *client,
639 int destnode, struct timeval timeout,
640 struct ctdb_connection *conn);
642 int ctdb_ctrl_get_stat_history(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
643 struct ctdb_client_context *client,
644 int destnode, struct timeval timeout,
645 struct ctdb_statistics_list **stats_list);
647 int ctdb_ctrl_schedule_for_deletion(TALLOC_CTX *mem_ctx,
648 struct tevent_context *ev,
649 struct ctdb_client_context *client,
650 int destnode, struct timeval timeout,
651 struct ctdb_key_data *key);
653 int ctdb_ctrl_set_db_readonly(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
654 struct ctdb_client_context *client,
655 int destnode, struct timeval timeout,
658 int ctdb_ctrl_check_srvids(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
659 struct ctdb_client_context *client,
660 int destnode, struct timeval timeout,
661 uint64_t *srvid, int count, uint8_t **result);
663 int ctdb_ctrl_traverse_start_ext(TALLOC_CTX *mem_ctx,
664 struct tevent_context *ev,
665 struct ctdb_client_context *client,
666 int destnode, struct timeval timeout,
667 struct ctdb_traverse_start_ext *traverse);
669 int ctdb_ctrl_get_db_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
670 struct ctdb_client_context *client,
671 int destnode, struct timeval timeout,
673 struct ctdb_db_statistics **dbstats);
675 int ctdb_ctrl_set_db_sticky(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
676 struct ctdb_client_context *client,
677 int destnode, struct timeval timeout,
680 int ctdb_ctrl_reload_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
681 struct ctdb_client_context *client,
682 int destnode, struct timeval timeout);
684 int ctdb_ctrl_ipreallocated(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
685 struct ctdb_client_context *client,
686 int destnode, struct timeval timeout);
688 int ctdb_ctrl_get_runstate(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
689 struct ctdb_client_context *client,
690 int destnode, struct timeval timeout,
691 enum ctdb_runstate *runstate);
693 int ctdb_ctrl_db_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
694 struct ctdb_client_context *client,
695 int destnode, struct timeval timeout,
698 int ctdb_ctrl_get_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
699 struct ctdb_client_context *client,
700 int destnode, struct timeval timeout,
701 struct ctdb_node_map **nodemap);
703 int ctdb_ctrl_db_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
704 struct ctdb_client_context *client,
705 int destnode, struct timeval timeout, uint32_t db_id);
707 int ctdb_ctrl_db_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
708 struct ctdb_client_context *client,
709 int destnode, struct timeval timeout, uint32_t db_id);
711 int ctdb_ctrl_db_transaction_start(TALLOC_CTX *mem_ctx,
712 struct tevent_context *ev,
713 struct ctdb_client_context *client,
714 int destnode, struct timeval timeout,
715 struct ctdb_transdb *transdb);
717 int ctdb_ctrl_db_transaction_commit(TALLOC_CTX *mem_ctx,
718 struct tevent_context *ev,
719 struct ctdb_client_context *client,
720 int destnode, struct timeval timeout,
721 struct ctdb_transdb *transdb);
723 int ctdb_ctrl_db_transaction_cancel(TALLOC_CTX *mem_ctx,
724 struct tevent_context *ev,
725 struct ctdb_client_context *client,
726 int destnode, struct timeval timeout,
729 /* from client/client_db.c */
731 struct tevent_req *ctdb_attach_send(TALLOC_CTX *mem_ctx,
732 struct tevent_context *ev,
733 struct ctdb_client_context *client,
734 struct timeval timeout,
735 const char *db_name, uint8_t db_flags);
737 bool ctdb_attach_recv(struct tevent_req *req, int *perr,
738 struct ctdb_db_context **out);
740 int ctdb_attach(struct tevent_context *ev,
741 struct ctdb_client_context *client,
742 struct timeval timeout,
743 const char *db_name, uint8_t db_flags,
744 struct ctdb_db_context **out);
746 int ctdb_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
747 struct ctdb_client_context *client,
748 struct timeval timeout, uint32_t db_id);
750 uint32_t ctdb_db_id(struct ctdb_db_context *db);
752 int ctdb_db_traverse(struct ctdb_db_context *db, bool readonly,
754 ctdb_rec_parser_func_t parser, void *private_data);
756 struct tevent_req *ctdb_fetch_lock_send(TALLOC_CTX *mem_ctx,
757 struct tevent_context *ev,
758 struct ctdb_client_context *client,
759 struct ctdb_db_context *db,
760 TDB_DATA key, bool readonly);
762 struct ctdb_record_handle *ctdb_fetch_lock_recv(struct tevent_req *req,
763 struct ctdb_ltdb_header *header,
765 TDB_DATA *data, int *perr);
767 int ctdb_fetch_lock(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
768 struct ctdb_client_context *client,
769 struct ctdb_db_context *db, TDB_DATA key, bool readonly,
770 struct ctdb_record_handle **out,
771 struct ctdb_ltdb_header *header, TDB_DATA *data);
773 int ctdb_store_record(struct ctdb_record_handle *h, TDB_DATA data);
775 int ctdb_delete_record(struct ctdb_record_handle *h);
777 struct tevent_req *ctdb_g_lock_lock_send(TALLOC_CTX *mem_ctx,
778 struct tevent_context *ev,
779 struct ctdb_client_context *client,
780 struct ctdb_db_context *db,
782 struct ctdb_server_id *sid,
785 bool ctdb_g_lock_lock_recv(struct tevent_req *req, int *perr);
787 struct tevent_req *ctdb_g_lock_unlock_send(TALLOC_CTX *mem_ctx,
788 struct tevent_context *ev,
789 struct ctdb_client_context *client,
790 struct ctdb_db_context *db,
792 struct ctdb_server_id sid);
794 bool ctdb_g_lock_unlock_recv(struct tevent_req *req, int *perr);
796 struct tevent_req *ctdb_transaction_start_send(TALLOC_CTX *mem_ctx,
797 struct tevent_context *ev,
798 struct ctdb_client_context *client,
799 struct timeval timeout,
800 struct ctdb_db_context *db,
803 struct ctdb_transaction_handle *ctdb_transaction_start_recv(
804 struct tevent_req *req,
807 int ctdb_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
808 struct ctdb_client_context *client,
809 struct timeval timeout,
810 struct ctdb_db_context *db, bool readonly,
811 struct ctdb_transaction_handle **out);
813 int ctdb_transaction_fetch_record(struct ctdb_transaction_handle *h,
815 TALLOC_CTX *mem_ctx, TDB_DATA *data);
817 int ctdb_transaction_store_record(struct ctdb_transaction_handle *h,
818 TDB_DATA key, TDB_DATA data);
820 int ctdb_transaction_delete_record(struct ctdb_transaction_handle *h,
823 struct tevent_req *ctdb_transaction_commit_send(
825 struct tevent_context *ev,
826 struct ctdb_transaction_handle *h);
828 bool ctdb_transaction_commit_recv(struct tevent_req *req, int *perr);
830 int ctdb_transaction_commit(struct ctdb_transaction_handle *h);
832 int ctdb_transaction_cancel(struct ctdb_transaction_handle *h);
834 /* from client/client_util.c */
836 int list_of_nodes(struct ctdb_node_map *nodemap,
837 uint32_t flags_mask, uint32_t exclude_pnn,
838 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
840 int list_of_active_nodes(struct ctdb_node_map *nodemap, uint32_t exclude_pnn,
841 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
843 int list_of_connected_nodes(struct ctdb_node_map *nodemap,
844 uint32_t exclude_pnn,
845 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
847 int ctdb_ctrl_modflags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
848 struct ctdb_client_context *client,
849 uint32_t destnode, struct timeval timeout,
850 uint32_t set, uint32_t clear);
852 bool ctdb_server_id_equal(struct ctdb_server_id *sid1,
853 struct ctdb_server_id *sid2);
855 int ctdb_server_id_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
856 struct ctdb_client_context *client,
857 struct ctdb_server_id *sid, bool *exists);
859 #endif /* __CTDB_CLIENT_H__ */