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 struct tevent_req *ctdb_recovery_wait_send(TALLOC_CTX *mem_ctx,
49 struct tevent_context *ev,
50 struct ctdb_client_context *client);
52 bool ctdb_recovery_wait_recv(struct tevent_req *req, int *perr);
54 /* from client/client_call.c */
56 struct tevent_req *ctdb_client_call_send(TALLOC_CTX *mem_ctx,
57 struct tevent_context *ev,
58 struct ctdb_client_context *client,
59 struct ctdb_req_call *request);
61 bool ctdb_client_call_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
62 struct ctdb_reply_call **reply, int *perr);
65 /* from client/client_message.c */
67 struct tevent_req *ctdb_client_message_send(TALLOC_CTX *mem_ctx,
68 struct tevent_context *ev,
69 struct ctdb_client_context *client,
71 struct ctdb_req_message *message);
73 bool ctdb_client_message_recv(struct tevent_req *req, int *perr);
75 int ctdb_client_message(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
76 struct ctdb_client_context *client,
77 uint32_t destnode, struct ctdb_req_message *message);
79 int ctdb_client_set_message_handler(TALLOC_CTX *mem_ctx,
80 struct tevent_context *ev,
81 struct ctdb_client_context *client,
82 uint64_t srvid, srvid_handler_fn handler,
85 int ctdb_client_remove_message_handler(TALLOC_CTX *mem_ctx,
86 struct tevent_context *ev,
87 struct ctdb_client_context *client,
88 uint64_t srvid, void *private_data);
90 /* from client/client_message_sync.c */
92 int ctdb_message_recd_update_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
93 struct ctdb_client_context *client,
94 int destnode, struct ctdb_public_ip *pubip);
96 int ctdb_message_mem_dump(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
97 struct ctdb_client_context *client,
98 int destnode, struct ctdb_srvid_message *msg);
100 int ctdb_message_reload_nodes(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
101 struct ctdb_client_context *client,
104 int ctdb_message_takeover_run(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
105 struct ctdb_client_context *client,
106 int destnode, struct ctdb_srvid_message *msg);
108 int ctdb_message_rebalance_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
109 struct ctdb_client_context *client,
110 int destnode, uint32_t pnn);
112 int ctdb_message_disable_takeover_runs(TALLOC_CTX *mem_ctx,
113 struct tevent_context *ev,
114 struct ctdb_client_context *client,
116 struct ctdb_disable_message *disable);
118 int ctdb_message_disable_recoveries(TALLOC_CTX *mem_ctx,
119 struct tevent_context *ev,
120 struct ctdb_client_context *client,
122 struct ctdb_disable_message *disable);
124 int ctdb_message_disable_ip_check(TALLOC_CTX *mem_ctx,
125 struct tevent_context *ev,
126 struct ctdb_client_context *client,
127 int destnode, uint32_t timeout);
129 /* from client/client_control.c */
131 struct tevent_req *ctdb_client_control_send(TALLOC_CTX *mem_ctx,
132 struct tevent_context *ev,
133 struct ctdb_client_context *client,
135 struct timeval timeout,
136 struct ctdb_req_control *request);
138 bool ctdb_client_control_recv(struct tevent_req *req, int *perr,
140 struct ctdb_reply_control **preply);
142 struct tevent_req *ctdb_client_control_multi_send(
144 struct tevent_context *ev,
145 struct ctdb_client_context *client,
146 uint32_t *pnn_list, int count,
147 struct timeval timeout,
148 struct ctdb_req_control *request);
150 bool ctdb_client_control_multi_recv(struct tevent_req *req, int *perr,
151 TALLOC_CTX *mem_ctx, int **perr_list,
152 struct ctdb_reply_control ***preply);
154 int ctdb_client_control_multi_error(uint32_t *pnn_list, int count,
155 int *err_list, uint32_t *pnn);
157 int ctdb_client_control(TALLOC_CTX *mem_ctx,
158 struct tevent_context *ev,
159 struct ctdb_client_context *client,
161 struct timeval timeout,
162 struct ctdb_req_control *c,
163 struct ctdb_reply_control **preply);
165 int ctdb_client_control_multi(TALLOC_CTX *mem_ctx,
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 struct ctdb_reply_control ***preply);
174 /* from client/client_control_sync.c */
176 int ctdb_ctrl_process_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
177 struct ctdb_client_context *client,
178 int destnode, struct timeval timeout,
179 pid_t pid, int *status);
181 int ctdb_ctrl_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
182 struct ctdb_client_context *client,
183 int destnode, struct timeval timeout,
184 struct ctdb_statistics **stats);
186 int ctdb_ctrl_ping(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
187 struct ctdb_client_context *client,
188 int destnode, struct timeval timeout,
191 int ctdb_ctrl_getdbpath(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
192 struct ctdb_client_context *client,
193 int destnode, struct timeval timeout,
194 uint32_t db_id, const char **db_path);
196 int ctdb_ctrl_getvnnmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
197 struct ctdb_client_context *client,
198 int destnode, struct timeval timeout,
199 struct ctdb_vnn_map **vnnmap);
201 int ctdb_ctrl_getdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
202 struct ctdb_client_context *client,
203 int destnode, struct timeval timeout,
206 int ctdb_ctrl_setdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
207 struct ctdb_client_context *client,
208 int destnode, struct timeval timeout,
211 int ctdb_ctrl_get_dbmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
212 struct ctdb_client_context *client,
213 int destnode, struct timeval timeout,
214 struct ctdb_dbid_map **dbmap);
216 int ctdb_ctrl_pull_db(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
217 struct ctdb_client_context *client, int destnode,
218 struct timeval timeout, struct ctdb_pulldb *pulldb,
219 struct ctdb_rec_buffer **recbuf);
221 int ctdb_ctrl_push_db(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
222 struct ctdb_client_context *client, int destnode,
223 struct timeval timeout, struct ctdb_rec_buffer *recbuf);
225 int ctdb_ctrl_get_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
226 struct ctdb_client_context *client,
227 int destnode, struct timeval timeout,
230 int ctdb_ctrl_set_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
231 struct ctdb_client_context *client,
232 int destnode, struct timeval timeout,
235 int ctdb_ctrl_statistics_reset(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
236 struct ctdb_client_context *client,
237 int destnode, struct timeval timeout);
239 int ctdb_ctrl_db_attach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
240 struct ctdb_client_context *client,
241 int destnode, struct timeval timeout,
242 const char *db_name, uint32_t tdb_flags,
245 int ctdb_ctrl_traverse_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
246 struct ctdb_client_context *client,
247 int destnode, struct timeval timeout,
248 struct ctdb_traverse_start *traverse);
250 int ctdb_ctrl_register_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
251 struct ctdb_client_context *client,
252 int destnode, struct timeval timeout,
255 int ctdb_ctrl_deregister_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
256 struct ctdb_client_context *client,
257 int destnode, struct timeval timeout,
260 int ctdb_ctrl_get_dbname(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
261 struct ctdb_client_context *client,
262 int destnode, struct timeval timeout,
263 uint32_t db_id, const char **db_name);
265 int ctdb_ctrl_enable_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
266 struct ctdb_client_context *client,
267 int destnode, struct timeval timeout,
270 int ctdb_ctrl_update_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
271 struct ctdb_client_context *client,
272 int destnode, struct timeval timeout,
275 int ctdb_ctrl_dump_memory(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
276 struct ctdb_client_context *client,
277 int destnode, struct timeval timeout,
278 const char **mem_str);
280 int ctdb_ctrl_get_pid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
281 struct ctdb_client_context *client,
282 int destnode, struct timeval timeout,
285 int ctdb_ctrl_get_recmaster(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
286 struct ctdb_client_context *client,
287 int destnode, struct timeval timeout,
288 uint32_t *recmaster);
290 int ctdb_ctrl_set_recmaster(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
291 struct ctdb_client_context *client,
292 int destnode, struct timeval timeout,
295 int ctdb_ctrl_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
296 struct ctdb_client_context *client,
297 int destnode, struct timeval timeout,
300 int ctdb_ctrl_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
301 struct ctdb_client_context *client,
302 int destnode, struct timeval timeout,
305 int ctdb_ctrl_get_pnn(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
306 struct ctdb_client_context *client,
307 int destnode, struct timeval timeout,
310 int ctdb_ctrl_shutdown(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
311 struct ctdb_client_context *client,
312 int destnode, struct timeval timeout);
314 int ctdb_ctrl_get_monmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
315 struct ctdb_client_context *client,
316 int destnode, struct timeval timeout,
319 int ctdb_ctrl_tcp_add(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
320 struct ctdb_client_context *client,
321 int destnode, struct timeval timeout,
322 struct ctdb_connection *conn);
324 int ctdb_ctrl_tcp_remove(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
325 struct ctdb_client_context *client,
326 int destnode, struct timeval timeout,
327 struct ctdb_connection *conn);
329 int ctdb_ctrl_set_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
330 struct ctdb_client_context *client,
331 int destnode, struct timeval timeout,
332 struct ctdb_tunable *tunable);
334 int ctdb_ctrl_get_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
335 struct ctdb_client_context *client,
336 int destnode, struct timeval timeout,
337 const char *var, uint32_t *value);
339 int ctdb_ctrl_list_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
340 struct ctdb_client_context *client,
341 int destnode, struct timeval timeout,
342 struct ctdb_var_list **var_list);
344 int ctdb_ctrl_modify_flags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
345 struct ctdb_client_context *client,
346 int destnode, struct timeval timeout,
347 uint32_t pnn, uint32_t old_flags,
350 int ctdb_ctrl_get_all_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
351 struct ctdb_client_context *client,
352 int destnode, struct timeval timeout,
353 struct ctdb_tunable_list **tun_list);
355 int ctdb_ctrl_kill_tcp(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
356 struct ctdb_client_context *client,
357 int destnode, struct timeval timeout,
358 struct ctdb_connection *conn);
360 int ctdb_ctrl_get_tcp_tickle_list(TALLOC_CTX *mem_ctx,
361 struct tevent_context *ev,
362 struct ctdb_client_context *client,
363 int destnode, struct timeval timeout,
364 ctdb_sock_addr *addr,
365 struct ctdb_tickle_list **tickles);
367 int ctdb_ctrl_set_tcp_tickle_list(TALLOC_CTX *mem_ctx,
368 struct tevent_context *ev,
369 struct ctdb_client_context *client,
370 int destnode, struct timeval timeout,
371 struct ctdb_tickle_list *tickles);
373 int ctdb_ctrl_register_server_id(TALLOC_CTX *mem_ctx,
374 struct tevent_context *ev,
375 struct ctdb_client_context *client,
376 int destnode, struct timeval timeout,
377 struct ctdb_client_id *cid);
379 int ctdb_ctrl_unregister_server_id(TALLOC_CTX *mem_ctx,
380 struct tevent_context *ev,
381 struct ctdb_client_context *client,
382 int destnode, struct timeval timeout,
383 struct ctdb_client_id *cid);
385 int ctdb_ctrl_check_server_id(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
386 struct ctdb_client_context *client,
387 int destnode, struct timeval timeout,
388 struct ctdb_client_id *cid);
390 int ctdb_ctrl_get_server_id_list(TALLOC_CTX *mem_ctx,
391 struct tevent_context *ev,
392 struct ctdb_client_context *client,
393 int destnode, struct timeval timeout,
394 struct ctdb_client_id_map **cid_map);
396 int ctdb_ctrl_db_attach_persistent(TALLOC_CTX *mem_ctx,
397 struct tevent_context *ev,
398 struct ctdb_client_context *client,
399 int destnode, struct timeval timeout,
400 const char *db_name, int tdb_flags,
403 int ctdb_ctrl_send_gratuitous_arp(TALLOC_CTX *mem_ctx,
404 struct tevent_context *ev,
405 struct ctdb_client_context *client,
406 int destnode, struct timeval timeout,
407 struct ctdb_addr_info *addr_info);
409 int ctdb_ctrl_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
410 struct ctdb_client_context *client,
411 int destnode, struct timeval timeout,
414 int ctdb_ctrl_transaction_commit(TALLOC_CTX *mem_ctx,
415 struct tevent_context *ev,
416 struct ctdb_client_context *client,
417 int destnode, struct timeval timeout,
420 int ctdb_ctrl_wipe_database(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
421 struct ctdb_client_context *client,
422 int destnode, struct timeval timeout,
423 uint32_t db_id, uint32_t tid);
425 int ctdb_ctrl_uptime(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
426 struct ctdb_client_context *client,
427 int destnode, struct timeval timeout,
428 struct ctdb_uptime **uptime);
430 int ctdb_ctrl_start_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
431 struct ctdb_client_context *client,
432 int destnode, struct timeval timeout);
434 int ctdb_ctrl_end_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
435 struct ctdb_client_context *client,
436 int destnode, struct timeval timeout);
438 int ctdb_ctrl_reload_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
439 struct ctdb_client_context *client,
440 int destnode, struct timeval timeout);
442 int ctdb_ctrl_enable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
443 struct ctdb_client_context *client,
444 int destnode, struct timeval timeout);
446 int ctdb_ctrl_disable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
447 struct ctdb_client_context *client,
448 int destnode, struct timeval timeout);
450 int ctdb_ctrl_add_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_del_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
456 struct ctdb_client_context *client,
457 int destnode, struct timeval timeout,
458 struct ctdb_addr_info *addr_info);
460 int ctdb_ctrl_run_eventscripts(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
461 struct ctdb_client_context *client,
462 int destnode, struct timeval timeout,
465 int ctdb_ctrl_get_capabilities(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
466 struct ctdb_client_context *client,
467 int destnode, struct timeval timeout,
470 int ctdb_ctrl_release_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_takeover_ip(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 *pubip);
480 int ctdb_ctrl_get_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
481 struct ctdb_client_context *client,
482 int destnode, struct timeval timeout,
483 struct ctdb_public_ip_list **pubip_list);
485 int ctdb_ctrl_get_nodemap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
486 struct ctdb_client_context *client,
487 int destnode, struct timeval timeout,
488 struct ctdb_node_map **nodemap);
490 int ctdb_ctrl_get_event_script_status(TALLOC_CTX *mem_ctx,
491 struct tevent_context *ev,
492 struct ctdb_client_context *client,
493 int destnode, struct timeval timeout,
494 enum ctdb_event event,
495 struct ctdb_script_list **slist);
497 int ctdb_ctrl_traverse_kill(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
498 struct ctdb_client_context *client,
499 int destnode, struct timeval timeout,
500 struct ctdb_traverse_start *traverse);
502 int ctdb_ctrl_get_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
503 struct ctdb_client_context *client,
504 int destnode, struct timeval timeout,
505 const char **reclock_file);
507 int ctdb_ctrl_set_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
508 struct ctdb_client_context *client,
509 int destnode, struct timeval timeout,
510 const char *reclock_file);
512 int ctdb_ctrl_stop_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
513 struct ctdb_client_context *client,
514 int destnode, struct timeval timeout);
516 int ctdb_ctrl_continue_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
517 struct ctdb_client_context *client,
518 int destnode, struct timeval timeout);
520 int ctdb_ctrl_set_natgwstate(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
521 struct ctdb_client_context *client,
522 int destnode, struct timeval timeout,
523 uint32_t natgw_role);
525 int ctdb_ctrl_set_lmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
526 struct ctdb_client_context *client,
527 int destnode, struct timeval timeout,
528 uint32_t lmaster_role);
530 int ctdb_ctrl_set_recmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
531 struct ctdb_client_context *client,
532 int destnode, struct timeval timeout,
533 uint32_t recmaster_role);
535 int ctdb_ctrl_enable_script(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
536 struct ctdb_client_context *client,
537 int destnode, struct timeval timeout,
540 int ctdb_ctrl_disable_script(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
541 struct ctdb_client_context *client,
542 int destnode, struct timeval timeout,
545 int ctdb_ctrl_set_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
546 struct ctdb_client_context *client,
547 int destnode, struct timeval timeout,
548 struct ctdb_ban_state *ban_state);
550 int ctdb_ctrl_get_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
551 struct ctdb_client_context *client,
552 int destnode, struct timeval timeout,
553 struct ctdb_ban_state **ban_state);
555 int ctdb_ctrl_set_db_priority(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, int priority);
560 int ctdb_ctrl_get_db_priority(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
561 struct ctdb_client_context *client,
562 int destnode, struct timeval timeout,
563 uint32_t db_id, uint32_t *priority);
565 int ctdb_ctrl_transaction_cancel(TALLOC_CTX *mem_ctx,
566 struct tevent_context *ev,
567 struct ctdb_client_context *client,
568 int destnode, struct timeval timeout,
571 int ctdb_ctrl_register_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
572 struct ctdb_client_context *client,
573 int destnode, struct timeval timeout,
574 struct ctdb_notify_data *notify);
576 int ctdb_ctrl_deregister_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
577 struct ctdb_client_context *client,
578 int destnode, struct timeval timeout,
581 int ctdb_ctrl_trans3_commit(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
582 struct ctdb_client_context *client,
583 int destnode, struct timeval timeout,
584 struct ctdb_rec_buffer *recbuf);
586 int ctdb_ctrl_get_db_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
587 struct ctdb_client_context *client,
588 int destnode, struct timeval timeout,
589 uint32_t db_id, uint64_t *seqnum);
591 int ctdb_ctrl_db_set_healthy(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
592 struct ctdb_client_context *client,
593 int destnode, struct timeval timeout,
596 int ctdb_ctrl_db_get_health(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
597 struct ctdb_client_context *client,
598 int destnode, struct timeval timeout,
599 uint32_t db_id, const char **reason);
601 int ctdb_ctrl_get_public_ip_info(TALLOC_CTX *mem_ctx,
602 struct tevent_context *ev,
603 struct ctdb_client_context *client,
604 int destnode, struct timeval timeout,
605 ctdb_sock_addr *addr,
606 struct ctdb_public_ip_info **ipinfo);
608 int ctdb_ctrl_get_ifaces(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
609 struct ctdb_client_context *client,
610 int destnode, struct timeval timeout,
611 struct ctdb_iface_list **iface_list);
613 int ctdb_ctrl_set_iface_link_state(TALLOC_CTX *mem_ctx,
614 struct tevent_context *ev,
615 struct ctdb_client_context *client,
616 int destnode, struct timeval timeout,
617 struct ctdb_iface *iface);
619 int ctdb_ctrl_tcp_add_delayed_update(TALLOC_CTX *mem_ctx,
620 struct tevent_context *ev,
621 struct ctdb_client_context *client,
622 int destnode, struct timeval timeout,
623 struct ctdb_connection *conn);
625 int ctdb_ctrl_get_stat_history(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
626 struct ctdb_client_context *client,
627 int destnode, struct timeval timeout,
628 struct ctdb_statistics_list **stats_list);
630 int ctdb_ctrl_schedule_for_deletion(TALLOC_CTX *mem_ctx,
631 struct tevent_context *ev,
632 struct ctdb_client_context *client,
633 int destnode, struct timeval timeout,
634 struct ctdb_key_data *key);
636 int ctdb_ctrl_set_db_readonly(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
637 struct ctdb_client_context *client,
638 int destnode, struct timeval timeout,
641 int ctdb_ctrl_check_srvids(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
642 struct ctdb_client_context *client,
643 int destnode, struct timeval timeout,
644 uint64_t *srvid, int count, uint8_t **result);
646 int ctdb_ctrl_traverse_start_ext(TALLOC_CTX *mem_ctx,
647 struct tevent_context *ev,
648 struct ctdb_client_context *client,
649 int destnode, struct timeval timeout,
650 struct ctdb_traverse_start_ext *traverse);
652 int ctdb_ctrl_get_db_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
653 struct ctdb_client_context *client,
654 int destnode, struct timeval timeout,
656 struct ctdb_db_statistics **dbstats);
658 int ctdb_ctrl_set_db_sticky(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
659 struct ctdb_client_context *client,
660 int destnode, struct timeval timeout,
663 int ctdb_ctrl_reload_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
664 struct ctdb_client_context *client,
665 int destnode, struct timeval timeout);
667 int ctdb_ctrl_ipreallocated(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
668 struct ctdb_client_context *client,
669 int destnode, struct timeval timeout);
671 int ctdb_ctrl_get_runstate(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
672 struct ctdb_client_context *client,
673 int destnode, struct timeval timeout,
674 enum ctdb_runstate *runstate);
676 int ctdb_ctrl_db_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
677 struct ctdb_client_context *client,
678 int destnode, struct timeval timeout,
681 int ctdb_ctrl_get_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
682 struct ctdb_client_context *client,
683 int destnode, struct timeval timeout,
684 struct ctdb_node_map **nodemap);
686 int ctdb_ctrl_db_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
687 struct ctdb_client_context *client,
688 int destnode, struct timeval timeout, uint32_t db_id);
690 int ctdb_ctrl_db_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
691 struct ctdb_client_context *client,
692 int destnode, struct timeval timeout, uint32_t db_id);
694 int ctdb_ctrl_db_transaction_start(TALLOC_CTX *mem_ctx,
695 struct tevent_context *ev,
696 struct ctdb_client_context *client,
697 int destnode, struct timeval timeout,
698 struct ctdb_transdb *transdb);
700 int ctdb_ctrl_db_transaction_commit(TALLOC_CTX *mem_ctx,
701 struct tevent_context *ev,
702 struct ctdb_client_context *client,
703 int destnode, struct timeval timeout,
704 struct ctdb_transdb *transdb);
706 int ctdb_ctrl_db_transaction_cancel(TALLOC_CTX *mem_ctx,
707 struct tevent_context *ev,
708 struct ctdb_client_context *client,
709 int destnode, struct timeval timeout,
712 /* from client/client_db.c */
714 struct tevent_req *ctdb_attach_send(TALLOC_CTX *mem_ctx,
715 struct tevent_context *ev,
716 struct ctdb_client_context *client,
717 struct timeval timeout,
718 const char *db_name, uint8_t db_flags);
720 bool ctdb_attach_recv(struct tevent_req *req, int *perr,
721 struct ctdb_db_context **out);
723 int ctdb_attach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
724 struct ctdb_client_context *client,
725 struct timeval timeout,
726 const char *db_name, uint8_t db_flags,
727 struct ctdb_db_context **out);
729 int ctdb_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
730 struct ctdb_client_context *client,
731 struct timeval timeout, uint32_t db_id);
733 uint32_t ctdb_db_id(struct ctdb_db_context *db);
735 int ctdb_db_traverse(struct ctdb_db_context *db, bool readonly,
737 ctdb_rec_parser_func_t parser, void *private_data);
739 struct tevent_req *ctdb_fetch_lock_send(TALLOC_CTX *mem_ctx,
740 struct tevent_context *ev,
741 struct ctdb_client_context *client,
742 struct ctdb_db_context *db,
743 TDB_DATA key, bool readonly);
745 struct ctdb_record_handle *ctdb_fetch_lock_recv(struct tevent_req *req,
746 struct ctdb_ltdb_header *header,
748 TDB_DATA *data, int *perr);
750 int ctdb_fetch_lock(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
751 struct ctdb_client_context *client,
752 struct ctdb_db_context *db, TDB_DATA key, bool readonly,
753 struct ctdb_record_handle **out,
754 struct ctdb_ltdb_header *header, TDB_DATA *data);
756 int ctdb_store_record(struct ctdb_record_handle *h, TDB_DATA data);
758 int ctdb_delete_record(struct ctdb_record_handle *h);
760 struct tevent_req *ctdb_g_lock_lock_send(TALLOC_CTX *mem_ctx,
761 struct tevent_context *ev,
762 struct ctdb_client_context *client,
763 struct ctdb_db_context *db,
765 struct ctdb_server_id *sid,
768 bool ctdb_g_lock_lock_recv(struct tevent_req *req, int *perr);
770 struct tevent_req *ctdb_g_lock_unlock_send(TALLOC_CTX *mem_ctx,
771 struct tevent_context *ev,
772 struct ctdb_client_context *client,
773 struct ctdb_db_context *db,
775 struct ctdb_server_id sid);
777 bool ctdb_g_lock_unlock_recv(struct tevent_req *req, int *perr);
779 struct tevent_req *ctdb_transaction_start_send(TALLOC_CTX *mem_ctx,
780 struct tevent_context *ev,
781 struct ctdb_client_context *client,
782 struct timeval timeout,
783 struct ctdb_db_context *db,
786 struct ctdb_transaction_handle *ctdb_transaction_start_recv(
787 struct tevent_req *req,
790 int ctdb_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
791 struct ctdb_client_context *client,
792 struct timeval timeout,
793 struct ctdb_db_context *db, bool readonly,
794 struct ctdb_transaction_handle **out);
796 int ctdb_transaction_fetch_record(struct ctdb_transaction_handle *h,
798 TALLOC_CTX *mem_ctx, TDB_DATA *data);
800 int ctdb_transaction_store_record(struct ctdb_transaction_handle *h,
801 TDB_DATA key, TDB_DATA data);
803 int ctdb_transaction_delete_record(struct ctdb_transaction_handle *h,
806 struct tevent_req *ctdb_transaction_commit_send(
808 struct tevent_context *ev,
809 struct ctdb_transaction_handle *h);
811 bool ctdb_transaction_commit_recv(struct tevent_req *req, int *perr);
813 int ctdb_transaction_commit(struct ctdb_transaction_handle *h);
815 int ctdb_transaction_cancel(struct ctdb_transaction_handle *h);
817 /* from client/client_util.c */
819 int list_of_nodes(struct ctdb_node_map *nodemap,
820 uint32_t flags_mask, uint32_t exclude_pnn,
821 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
823 int list_of_active_nodes(struct ctdb_node_map *nodemap, uint32_t exclude_pnn,
824 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
826 int list_of_connected_nodes(struct ctdb_node_map *nodemap,
827 uint32_t exclude_pnn,
828 TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
830 int ctdb_ctrl_modflags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
831 struct ctdb_client_context *client,
832 uint32_t destnode, struct timeval timeout,
833 uint32_t set, uint32_t clear);
835 bool ctdb_server_id_equal(struct ctdb_server_id *sid1,
836 struct ctdb_server_id *sid2);
838 int ctdb_server_id_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
839 struct ctdb_client_context *client,
840 struct ctdb_server_id *sid, bool *exists);
842 #endif /* __CTDB_CLIENT_H__ */