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/>.
21 #include "system/network.h"
22 #include "system/filesys.h"
28 #include "common/logging.h"
30 #include "lib/util/debug.h"
32 #include "protocol/protocol.h"
33 #include "protocol/protocol_api.h"
34 #include "client/client_private.h"
35 #include "client/client.h"
36 #include "client/client_sync.h"
38 int ctdb_ctrl_process_exists(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
39 struct ctdb_client_context
*client
,
40 int destnode
, struct timeval timeout
,
41 pid_t pid
, int *status
)
43 struct ctdb_req_control request
;
44 struct ctdb_reply_control
*reply
;
47 ctdb_req_control_process_exists(&request
, pid
);
48 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
52 ("Control PROCESS_EXISTS failed to node %u, ret=%d\n",
57 ret
= ctdb_reply_control_process_exists(reply
, status
);
60 ("Control PROCESS_EXISTS failed, ret=%d\n", ret
));
67 int ctdb_ctrl_statistics(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
68 struct ctdb_client_context
*client
,
69 int destnode
, struct timeval timeout
,
70 struct ctdb_statistics
**stats
)
72 struct ctdb_req_control request
;
73 struct ctdb_reply_control
*reply
;
76 ctdb_req_control_statistics(&request
);
77 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
81 ("Control STATISTICS failed to node %u, ret=%d\n",
86 ret
= ctdb_reply_control_statistics(reply
, mem_ctx
, stats
);
89 ("Control STATISTICS failed, ret=%d\n", ret
));
96 int ctdb_ctrl_ping(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
97 struct ctdb_client_context
*client
,
98 int destnode
, struct timeval timeout
,
101 struct ctdb_req_control request
;
102 struct ctdb_reply_control
*reply
;
105 ctdb_req_control_ping(&request
);
106 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
110 ("Control PING failed to node %u, ret=%d\n",
115 ret
= ctdb_reply_control_ping(reply
, num_clients
);
118 ("Control PING failed, ret=%d\n", ret
));
125 int ctdb_ctrl_getdbpath(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
126 struct ctdb_client_context
*client
,
127 int destnode
, struct timeval timeout
,
129 const char **db_path
)
131 struct ctdb_req_control request
;
132 struct ctdb_reply_control
*reply
;
135 ctdb_req_control_getdbpath(&request
, db_id
);
136 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
140 ("Control GETDBPATH failed to node %u, ret=%d\n",
145 ret
= ctdb_reply_control_getdbpath(reply
, mem_ctx
, db_path
);
148 ("Control GETDBPATH failed, ret=%d\n", ret
));
155 int ctdb_ctrl_getvnnmap(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
156 struct ctdb_client_context
*client
,
157 int destnode
, struct timeval timeout
,
158 struct ctdb_vnn_map
**vnnmap
)
160 struct ctdb_req_control request
;
161 struct ctdb_reply_control
*reply
;
164 ctdb_req_control_getvnnmap(&request
);
165 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
169 ("Control GETVNNMAP failed to node %u, ret=%d\n",
174 ret
= ctdb_reply_control_getvnnmap(reply
, mem_ctx
, vnnmap
);
177 ("Control GETVNNMAP failed, ret=%d\n", ret
));
184 int ctdb_ctrl_getdebug(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
185 struct ctdb_client_context
*client
,
186 int destnode
, struct timeval timeout
,
189 struct ctdb_req_control request
;
190 struct ctdb_reply_control
*reply
;
193 ctdb_req_control_get_debug(&request
);
194 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
198 ("Control GET_DEBUG failed to node %u, ret=%d\n",
203 ret
= ctdb_reply_control_get_debug(reply
, loglevel
);
206 ("Control GET_DEBUG failed, ret=%d\n", ret
));
213 int ctdb_ctrl_setdebug(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
214 struct ctdb_client_context
*client
,
215 int destnode
, struct timeval timeout
,
218 struct ctdb_req_control request
;
219 struct ctdb_reply_control
*reply
;
222 ctdb_req_control_set_debug(&request
, loglevel
);
223 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
227 ("Control SET_DEBUG failed to node %u, ret=%d\n",
232 ret
= ctdb_reply_control_set_debug(reply
);
235 ("Control SET_DEBUG failed, ret=%d\n", ret
));
242 int ctdb_ctrl_get_dbmap(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
243 struct ctdb_client_context
*client
,
244 int destnode
, struct timeval timeout
,
245 struct ctdb_dbid_map
**dbmap
)
247 struct ctdb_req_control request
;
248 struct ctdb_reply_control
*reply
;
251 ctdb_req_control_get_dbmap(&request
);
252 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
256 ("Control GET_DBMAP failed to node %u, ret=%d\n",
261 ret
= ctdb_reply_control_get_dbmap(reply
, mem_ctx
, dbmap
);
264 ("Control GET_DBMAP failed, ret=%d\n", ret
));
271 int ctdb_ctrl_get_recmode(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
272 struct ctdb_client_context
*client
,
273 int destnode
, struct timeval timeout
,
276 struct ctdb_req_control request
;
277 struct ctdb_reply_control
*reply
;
280 ctdb_req_control_get_recmode(&request
);
281 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
285 ("Control GET_RECMODE failed to node %u, ret=%d\n",
290 ret
= ctdb_reply_control_get_recmode(reply
, recmode
);
293 ("Control GET_RECMODE failed, ret=%d\n", ret
));
300 int ctdb_ctrl_set_recmode(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
301 struct ctdb_client_context
*client
,
302 int destnode
, struct timeval timeout
,
305 struct ctdb_req_control request
;
306 struct ctdb_reply_control
*reply
;
309 ctdb_req_control_set_recmode(&request
, recmode
);
310 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
314 ("Control SET_RECMODE failed to node %u, ret=%d\n",
319 ret
= ctdb_reply_control_set_recmode(reply
);
322 ("Control SET_RECMODE failed, ret=%d\n", ret
));
329 int ctdb_ctrl_statistics_reset(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
330 struct ctdb_client_context
*client
,
331 int destnode
, struct timeval timeout
)
333 struct ctdb_req_control request
;
334 struct ctdb_reply_control
*reply
;
337 ctdb_req_control_statistics_reset(&request
);
338 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
342 ("Control STATISTICS_RESET failed to node %u, ret=%d\n",
347 ret
= ctdb_reply_control_statistics_reset(reply
);
350 ("Control STATISTICS_RESET failed, ret=%d\n", ret
));
357 int ctdb_ctrl_db_attach(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
358 struct ctdb_client_context
*client
,
359 int destnode
, struct timeval timeout
,
360 const char *db_name
, uint32_t *db_id
)
362 struct ctdb_req_control request
;
363 struct ctdb_reply_control
*reply
;
366 ctdb_req_control_db_attach(&request
, db_name
);
367 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
371 ("Control DB_ATTACH failed to node %u, ret=%d\n",
376 ret
= ctdb_reply_control_db_attach(reply
, db_id
);
379 ("Control DB_ATTACH failed, ret=%d\n", ret
));
386 int ctdb_ctrl_traverse_start(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
387 struct ctdb_client_context
*client
,
388 int destnode
, struct timeval timeout
,
389 struct ctdb_traverse_start
*traverse
)
391 struct ctdb_req_control request
;
392 struct ctdb_reply_control
*reply
;
395 ctdb_req_control_traverse_start(&request
, traverse
);
396 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
400 ("Control TRAVERSE_START failed to node %u, ret=%d\n",
405 ret
= ctdb_reply_control_traverse_start(reply
);
408 ("Control TRAVERSE_START failed, ret=%d\n", ret
));
415 int ctdb_ctrl_register_srvid(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
416 struct ctdb_client_context
*client
,
417 int destnode
, struct timeval timeout
,
420 struct ctdb_req_control request
;
421 struct ctdb_reply_control
*reply
;
424 ctdb_req_control_register_srvid(&request
, srvid
);
425 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
429 ("Control REGISTER_SRVID failed to node %u, ret=%d\n",
434 ret
= ctdb_reply_control_register_srvid(reply
);
437 ("Control REGISTER_SRVID failed, ret=%d\n", ret
));
444 int ctdb_ctrl_deregister_srvid(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
445 struct ctdb_client_context
*client
,
446 int destnode
, struct timeval timeout
,
449 struct ctdb_req_control request
;
450 struct ctdb_reply_control
*reply
;
453 ctdb_req_control_deregister_srvid(&request
, srvid
);
454 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
458 ("Control DEREGISTER_SRVID failed to node %u, ret=%d\n",
463 ret
= ctdb_reply_control_deregister_srvid(reply
);
466 ("Control DEREGISTER_SRVID failed, ret=%d\n", ret
));
473 int ctdb_ctrl_get_dbname(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
474 struct ctdb_client_context
*client
,
475 int destnode
, struct timeval timeout
,
476 uint32_t db_id
, const char **db_name
)
478 struct ctdb_req_control request
;
479 struct ctdb_reply_control
*reply
;
482 ctdb_req_control_get_dbname(&request
, db_id
);
483 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
487 ("Control GET_DBNAME failed to node %u, ret=%d\n",
492 ret
= ctdb_reply_control_get_dbname(reply
, mem_ctx
, db_name
);
495 ("Control GET_DBNAME failed, ret=%d\n", ret
));
502 int ctdb_ctrl_enable_seqnum(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
503 struct ctdb_client_context
*client
,
504 int destnode
, struct timeval timeout
,
507 struct ctdb_req_control request
;
508 struct ctdb_reply_control
*reply
;
511 ctdb_req_control_enable_seqnum(&request
, db_id
);
512 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
516 ("Control ENABLE_SEQNUM failed to node %u, ret=%d\n",
521 ret
= ctdb_reply_control_enable_seqnum(reply
);
524 ("Control ENABLE_SEQNUM failed, ret=%d\n", ret
));
531 int ctdb_ctrl_update_seqnum(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
532 struct ctdb_client_context
*client
,
533 int destnode
, struct timeval timeout
,
536 struct ctdb_req_control request
;
537 struct ctdb_reply_control
*reply
;
540 ctdb_req_control_update_seqnum(&request
, db_id
);
541 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
545 ("Control UPDATE_SEQNUM failed to node %u, ret=%d\n",
550 ret
= ctdb_reply_control_update_seqnum(reply
);
553 ("Control UPDATE_SEQNUM failed, ret=%d\n", ret
));
560 int ctdb_ctrl_dump_memory(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
561 struct ctdb_client_context
*client
,
562 int destnode
, struct timeval timeout
,
563 const char **mem_str
)
565 struct ctdb_req_control request
;
566 struct ctdb_reply_control
*reply
;
569 ctdb_req_control_dump_memory(&request
);
570 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
574 ("Control DUMP_MEMORY failed to node %u, ret=%d\n",
579 ret
= ctdb_reply_control_dump_memory(reply
, mem_ctx
, mem_str
);
582 ("Control DUMP_MEMORY failed, ret=%d\n", ret
));
589 int ctdb_ctrl_get_pid(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
590 struct ctdb_client_context
*client
,
591 int destnode
, struct timeval timeout
,
594 struct ctdb_req_control request
;
595 struct ctdb_reply_control
*reply
;
598 ctdb_req_control_get_pid(&request
);
599 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
603 ("Control GET_PID failed to node %u, ret=%d\n",
608 ret
= ctdb_reply_control_get_pid(reply
, pid
);
611 ("Control GET_PID failed, ret=%d\n", ret
));
618 int ctdb_ctrl_freeze(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
619 struct ctdb_client_context
*client
,
620 int destnode
, struct timeval timeout
,
623 struct ctdb_req_control request
;
624 struct ctdb_reply_control
*reply
;
627 ctdb_req_control_freeze(&request
, priority
);
628 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
632 ("Control FREEZE failed to node %u, ret=%d\n",
637 ret
= ctdb_reply_control_freeze(reply
);
640 ("Control FREEZE failed, ret=%d\n", ret
));
647 int ctdb_ctrl_get_pnn(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
648 struct ctdb_client_context
*client
,
649 int destnode
, struct timeval timeout
,
652 struct ctdb_req_control request
;
653 struct ctdb_reply_control
*reply
;
656 ctdb_req_control_get_pnn(&request
);
657 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
661 ("Control GET_PNN failed to node %u, ret=%d\n",
666 ret
= ctdb_reply_control_get_pnn(reply
, pnn
);
669 ("Control GET_PNN failed, ret=%d\n", ret
));
676 int ctdb_ctrl_shutdown(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
677 struct ctdb_client_context
*client
,
678 int destnode
, struct timeval timeout
)
680 struct ctdb_req_control request
;
681 struct ctdb_reply_control
*reply
;
684 ctdb_req_control_shutdown(&request
);
685 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
689 ("Control SHUTDOWN failed to node %u, ret=%d\n",
694 ret
= ctdb_reply_control_shutdown(reply
);
697 ("Control SHUTDOWN failed, ret=%d\n", ret
));
704 int ctdb_ctrl_tcp_add(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
705 struct ctdb_client_context
*client
,
706 int destnode
, struct timeval timeout
,
707 struct ctdb_connection
*conn
)
709 struct ctdb_req_control request
;
710 struct ctdb_reply_control
*reply
;
713 ctdb_req_control_tcp_add(&request
, conn
);
714 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
718 ("Control TCP_ADD failed to node %u, ret=%d\n",
723 ret
= ctdb_reply_control_tcp_add(reply
);
726 ("Control TCP_ADD failed, ret=%d\n", ret
));
733 int ctdb_ctrl_tcp_remove(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
734 struct ctdb_client_context
*client
,
735 int destnode
, struct timeval timeout
,
736 struct ctdb_connection
*conn
)
738 struct ctdb_req_control request
;
739 struct ctdb_reply_control
*reply
;
742 ctdb_req_control_tcp_remove(&request
, conn
);
743 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
747 ("Control TCP_REMOVE failed to node %u, ret=%d\n",
752 ret
= ctdb_reply_control_tcp_remove(reply
);
755 ("Control TCP_REMOVE failed, ret=%d\n", ret
));
762 int ctdb_ctrl_set_tunable(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
763 struct ctdb_client_context
*client
,
764 int destnode
, struct timeval timeout
,
765 struct ctdb_tunable
*tunable
)
767 struct ctdb_req_control request
;
768 struct ctdb_reply_control
*reply
;
771 ctdb_req_control_set_tunable(&request
, tunable
);
772 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
776 ("Control SET_TUNABLE failed to node %u, ret=%d\n",
781 ret
= ctdb_reply_control_set_tunable(reply
);
784 ("Control SET_TUNABLE failed, ret=%d\n", ret
));
791 int ctdb_ctrl_get_tunable(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
792 struct ctdb_client_context
*client
,
793 int destnode
, struct timeval timeout
,
794 const char *var
, uint32_t *value
)
796 struct ctdb_req_control request
;
797 struct ctdb_reply_control
*reply
;
800 ctdb_req_control_get_tunable(&request
, var
);
801 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
805 ("Control GET_TUNABLE failed to node %u, ret=%d\n",
810 ret
= ctdb_reply_control_get_tunable(reply
, value
);
813 ("Control GET_TUNABLE failed, ret=%d\n", ret
));
820 int ctdb_ctrl_list_tunables(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
821 struct ctdb_client_context
*client
,
822 int destnode
, struct timeval timeout
,
823 struct ctdb_var_list
**var_list
)
825 struct ctdb_req_control request
;
826 struct ctdb_reply_control
*reply
;
829 ctdb_req_control_list_tunables(&request
);
830 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
834 ("Control LIST_TUNABLES failed to node %u, ret=%d\n",
839 ret
= ctdb_reply_control_list_tunables(reply
, mem_ctx
, var_list
);
842 ("Control LIST_TUNABLES failed, ret=%d\n", ret
));
849 int ctdb_ctrl_modify_flags(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
850 struct ctdb_client_context
*client
,
851 int destnode
, struct timeval timeout
,
852 uint32_t pnn
, uint32_t old_flags
,
855 struct ctdb_req_control request
;
856 struct ctdb_reply_control
*reply
;
857 struct ctdb_node_flag_change flag_change
;
860 flag_change
.pnn
= pnn
;
861 flag_change
.old_flags
= old_flags
;
862 flag_change
.new_flags
= new_flags
;
864 ctdb_req_control_modify_flags(&request
, &flag_change
);
865 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
869 ("Control MODIFY_FLAGS failed to node %u, ret=%d\n",
874 ret
= ctdb_reply_control_modify_flags(reply
);
877 ("Control MODIFY_FLAGS failed, ret=%d\n", ret
));
884 int ctdb_ctrl_get_all_tunables(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
885 struct ctdb_client_context
*client
,
886 int destnode
, struct timeval timeout
,
887 struct ctdb_tunable_list
**tun_list
)
889 struct ctdb_req_control request
;
890 struct ctdb_reply_control
*reply
;
893 ctdb_req_control_get_all_tunables(&request
);
894 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
898 ("Control GET_ALL_TUNABLES failed to node %u, ret=%d\n",
903 ret
= ctdb_reply_control_get_all_tunables(reply
, mem_ctx
, tun_list
);
906 ("Control GET_ALL_TUNABLES failed, ret=%d\n", ret
));
913 int ctdb_ctrl_get_tcp_tickle_list(TALLOC_CTX
*mem_ctx
,
914 struct tevent_context
*ev
,
915 struct ctdb_client_context
*client
,
916 int destnode
, struct timeval timeout
,
917 ctdb_sock_addr
*addr
,
918 struct ctdb_tickle_list
**tickles
)
920 struct ctdb_req_control request
;
921 struct ctdb_reply_control
*reply
;
924 ctdb_req_control_get_tcp_tickle_list(&request
, addr
);
925 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
929 ("Control GET_TCP_TICKLE_LIST failed to node %u, ret=%d\n",
934 ret
= ctdb_reply_control_get_tcp_tickle_list(reply
, mem_ctx
, tickles
);
937 ("Control GET_TCP_TICKLE_LIST failed, ret=%d\n", ret
));
944 int ctdb_ctrl_set_tcp_tickle_list(TALLOC_CTX
*mem_ctx
,
945 struct tevent_context
*ev
,
946 struct ctdb_client_context
*client
,
947 int destnode
, struct timeval timeout
,
948 struct ctdb_tickle_list
*tickles
)
950 struct ctdb_req_control request
;
951 struct ctdb_reply_control
*reply
;
954 ctdb_req_control_set_tcp_tickle_list(&request
, tickles
);
955 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
959 ("Control SET_TCP_TICKLE_LIST failed to node %u, ret=%d\n",
964 ret
= ctdb_reply_control_set_tcp_tickle_list(reply
);
967 ("Control SET_TCP_TICKLE_LIST failed, ret=%d\n", ret
));
974 int ctdb_ctrl_db_attach_persistent(TALLOC_CTX
*mem_ctx
,
975 struct tevent_context
*ev
,
976 struct ctdb_client_context
*client
,
977 int destnode
, struct timeval timeout
,
978 const char *db_name
, uint32_t *db_id
)
980 struct ctdb_req_control request
;
981 struct ctdb_reply_control
*reply
;
984 ctdb_req_control_db_attach_persistent(&request
, db_name
);
985 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
989 ("Control DB_ATTACH_PERSISTENT failed to node %u, ret=%d\n",
994 ret
= ctdb_reply_control_db_attach_persistent(reply
, db_id
);
997 ("Control DB_ATTACH_PERSISTENT failed, ret=%d\n", ret
));
1004 int ctdb_ctrl_send_gratuitous_arp(TALLOC_CTX
*mem_ctx
,
1005 struct tevent_context
*ev
,
1006 struct ctdb_client_context
*client
,
1007 int destnode
, struct timeval timeout
,
1008 struct ctdb_addr_info
*addr_info
)
1010 struct ctdb_req_control request
;
1011 struct ctdb_reply_control
*reply
;
1014 ctdb_req_control_send_gratuitous_arp(&request
, addr_info
);
1015 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1019 ("Control SEND_GRATUITOUS_ARP failed to node %u, ret=%d\n",
1024 ret
= ctdb_reply_control_send_gratuitous_arp(reply
);
1027 ("Control SEND_GRATUITOUS_ARP failed, ret=%d\n", ret
));
1034 int ctdb_ctrl_wipe_database(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1035 struct ctdb_client_context
*client
,
1036 int destnode
, struct timeval timeout
,
1037 uint32_t db_id
, uint32_t tid
)
1039 struct ctdb_req_control request
;
1040 struct ctdb_reply_control
*reply
;
1041 struct ctdb_transdb transdb
;
1044 transdb
.db_id
= db_id
;
1047 ctdb_req_control_wipe_database(&request
, &transdb
);
1048 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1052 ("Control WIPE_DATABASE failed to node %u, ret=%d\n",
1057 ret
= ctdb_reply_control_wipe_database(reply
);
1060 ("Control WIPE_DATABASE failed, ret=%d\n", ret
));
1067 int ctdb_ctrl_uptime(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1068 struct ctdb_client_context
*client
,
1069 int destnode
, struct timeval timeout
,
1070 struct ctdb_uptime
**uptime
)
1072 struct ctdb_req_control request
;
1073 struct ctdb_reply_control
*reply
;
1076 ctdb_req_control_uptime(&request
);
1077 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1081 ("Control UPTIME failed to node %u, ret=%d\n",
1086 ret
= ctdb_reply_control_uptime(reply
, mem_ctx
, uptime
);
1089 ("Control UPTIME failed, ret=%d\n", ret
));
1096 int ctdb_ctrl_start_recovery(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1097 struct ctdb_client_context
*client
,
1098 int destnode
, struct timeval timeout
)
1100 struct ctdb_req_control request
;
1101 struct ctdb_reply_control
*reply
;
1104 ctdb_req_control_start_recovery(&request
);
1105 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1109 ("Control START_RECOVERY failed to node %u, ret=%d\n",
1114 ret
= ctdb_reply_control_start_recovery(reply
);
1117 ("Control START_RECOVERY failed, ret=%d\n", ret
));
1124 int ctdb_ctrl_end_recovery(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1125 struct ctdb_client_context
*client
,
1126 int destnode
, struct timeval timeout
)
1128 struct ctdb_req_control request
;
1129 struct ctdb_reply_control
*reply
;
1132 ctdb_req_control_end_recovery(&request
);
1133 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1137 ("Control END_RECOVERY failed to node %u, ret=%d\n",
1142 ret
= ctdb_reply_control_end_recovery(reply
);
1145 ("Control END_RECOVERY failed, ret=%d\n", ret
));
1152 int ctdb_ctrl_reload_nodes_file(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1153 struct ctdb_client_context
*client
,
1154 int destnode
, struct timeval timeout
)
1156 struct ctdb_req_control request
;
1157 struct ctdb_reply_control
*reply
;
1160 ctdb_req_control_reload_nodes_file(&request
);
1161 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1165 ("Control RELOAD_NODES_FILE failed to node %u, ret=%d\n",
1170 ret
= ctdb_reply_control_reload_nodes_file(reply
);
1173 ("Control RELOAD_NODES_FILE failed, ret=%d\n", ret
));
1180 int ctdb_ctrl_add_public_ip(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1181 struct ctdb_client_context
*client
,
1182 int destnode
, struct timeval timeout
,
1183 struct ctdb_addr_info
*addr_info
)
1185 struct ctdb_req_control request
;
1186 struct ctdb_reply_control
*reply
;
1189 ctdb_req_control_add_public_ip(&request
, addr_info
);
1190 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1194 ("Control ADD_PUBLIC_IP failed to node %u, ret=%d\n",
1199 ret
= ctdb_reply_control_add_public_ip(reply
);
1202 ("Control ADD_PUBLIC_IP failed, ret=%d\n", ret
));
1209 int ctdb_ctrl_del_public_ip(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1210 struct ctdb_client_context
*client
,
1211 int destnode
, struct timeval timeout
,
1212 struct ctdb_addr_info
*addr_info
)
1214 struct ctdb_req_control request
;
1215 struct ctdb_reply_control
*reply
;
1218 ctdb_req_control_del_public_ip(&request
, addr_info
);
1219 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1223 ("Control DEL_PUBLIC_IP failed to node %u, ret=%d\n",
1228 ret
= ctdb_reply_control_del_public_ip(reply
);
1231 ("Control DEL_PUBLIC_IP failed, ret=%d\n", ret
));
1238 int ctdb_ctrl_get_capabilities(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1239 struct ctdb_client_context
*client
,
1240 int destnode
, struct timeval timeout
,
1243 struct ctdb_req_control request
;
1244 struct ctdb_reply_control
*reply
;
1247 ctdb_req_control_get_capabilities(&request
);
1248 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1252 ("Control GET_CAPABILITIES failed to node %u, ret=%d\n",
1257 ret
= ctdb_reply_control_get_capabilities(reply
, caps
);
1260 ("Control GET_CAPABILITIES failed, ret=%d\n", ret
));
1267 int ctdb_ctrl_release_ip(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1268 struct ctdb_client_context
*client
,
1269 int destnode
, struct timeval timeout
,
1270 struct ctdb_public_ip
*pubip
)
1272 struct ctdb_req_control request
;
1273 struct ctdb_reply_control
*reply
;
1276 ctdb_req_control_release_ip(&request
, pubip
);
1277 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1281 ("Control RELEASE_IP failed to node %u, ret=%d\n",
1286 ret
= ctdb_reply_control_release_ip(reply
);
1289 ("Control RELEASE_IP failed, ret=%d\n", ret
));
1296 int ctdb_ctrl_takeover_ip(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1297 struct ctdb_client_context
*client
,
1298 int destnode
, struct timeval timeout
,
1299 struct ctdb_public_ip
*pubip
)
1301 struct ctdb_req_control request
;
1302 struct ctdb_reply_control
*reply
;
1305 ctdb_req_control_takeover_ip(&request
, pubip
);
1306 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1310 ("Control TAKEOVER_IP failed to node %u, ret=%d\n",
1315 ret
= ctdb_reply_control_takeover_ip(reply
);
1318 ("Control TAKEOVER_IP failed, ret=%d\n", ret
));
1325 int ctdb_ctrl_get_public_ips(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1326 struct ctdb_client_context
*client
,
1327 int destnode
, struct timeval timeout
,
1328 bool available_only
,
1329 struct ctdb_public_ip_list
**pubip_list
)
1331 struct ctdb_req_control request
;
1332 struct ctdb_reply_control
*reply
;
1335 ctdb_req_control_get_public_ips(&request
, available_only
);
1336 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1340 ("Control GET_PUBLIC_IPS failed to node %u, ret=%d\n",
1345 ret
= ctdb_reply_control_get_public_ips(reply
, mem_ctx
, pubip_list
);
1348 ("Control GET_PUBLIC_IPS failed, ret=%d\n", ret
));
1355 int ctdb_ctrl_get_nodemap(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1356 struct ctdb_client_context
*client
,
1357 int destnode
, struct timeval timeout
,
1358 struct ctdb_node_map
**nodemap
)
1360 struct ctdb_req_control request
;
1361 struct ctdb_reply_control
*reply
;
1364 ctdb_req_control_get_nodemap(&request
);
1365 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1369 ("Control GET_NODEMAP failed to node %u, ret=%d\n",
1374 ret
= ctdb_reply_control_get_nodemap(reply
, mem_ctx
, nodemap
);
1377 ("Control GET_NODEMAP failed, ret=%d\n", ret
));
1384 int ctdb_ctrl_traverse_kill(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1385 struct ctdb_client_context
*client
,
1386 int destnode
, struct timeval timeout
,
1387 struct ctdb_traverse_start
*traverse
)
1389 struct ctdb_req_control request
;
1390 struct ctdb_reply_control
*reply
;
1393 ctdb_req_control_traverse_kill(&request
, traverse
);
1394 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1398 ("Control TRAVERSE_KILL failed to node %u, ret=%d\n",
1403 ret
= ctdb_reply_control_traverse_kill(reply
);
1406 ("Control TRAVERSE_KILL failed, ret=%d\n", ret
));
1413 int ctdb_ctrl_get_reclock_file(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1414 struct ctdb_client_context
*client
,
1415 int destnode
, struct timeval timeout
,
1416 const char **reclock_file
)
1418 struct ctdb_req_control request
;
1419 struct ctdb_reply_control
*reply
;
1422 ctdb_req_control_get_reclock_file(&request
);
1423 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1427 ("Control GET_RECLOCK_FILE failed to node %u, ret=%d\n",
1432 ret
= ctdb_reply_control_get_reclock_file(reply
, mem_ctx
, reclock_file
);
1435 ("Control GET_RECLOCK_FILE failed, ret=%d\n", ret
));
1442 int ctdb_ctrl_stop_node(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1443 struct ctdb_client_context
*client
,
1444 int destnode
, struct timeval timeout
)
1446 struct ctdb_req_control request
;
1447 struct ctdb_reply_control
*reply
;
1450 ctdb_req_control_stop_node(&request
);
1451 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1455 ("Control STOP_NODE failed to node %u, ret=%d\n",
1460 ret
= ctdb_reply_control_stop_node(reply
);
1463 ("Control STOP_NODE failed, ret=%d\n", ret
));
1470 int ctdb_ctrl_continue_node(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1471 struct ctdb_client_context
*client
,
1472 int destnode
, struct timeval timeout
)
1474 struct ctdb_req_control request
;
1475 struct ctdb_reply_control
*reply
;
1478 ctdb_req_control_continue_node(&request
);
1479 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1483 ("Control CONTINUE_NODE failed to node %u, ret=%d\n",
1488 ret
= ctdb_reply_control_continue_node(reply
);
1491 ("Control CONTINUE_NODE failed, ret=%d\n", ret
));
1498 int ctdb_ctrl_set_lmasterrole(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1499 struct ctdb_client_context
*client
,
1500 int destnode
, struct timeval timeout
,
1501 uint32_t lmaster_role
)
1503 struct ctdb_req_control request
;
1504 struct ctdb_reply_control
*reply
;
1507 ctdb_req_control_set_lmasterrole(&request
, lmaster_role
);
1508 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1512 ("Control SET_LMASTERROLE failed to node %u, ret=%d\n",
1517 ret
= ctdb_reply_control_set_lmasterrole(reply
);
1520 ("Control SET_LMASTERROLE failed, ret=%d\n", ret
));
1527 int ctdb_ctrl_set_recmasterrole(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1528 struct ctdb_client_context
*client
,
1529 int destnode
, struct timeval timeout
,
1530 uint32_t recmaster_role
)
1532 struct ctdb_req_control request
;
1533 struct ctdb_reply_control
*reply
;
1536 ctdb_req_control_set_recmasterrole(&request
, recmaster_role
);
1537 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1541 ("Control SET_RECMASTERROLE failed to node %u, ret=%d\n",
1546 ret
= ctdb_reply_control_set_recmasterrole(reply
);
1549 ("Control SET_RECMASTERROLE failed, ret=%d\n", ret
));
1556 int ctdb_ctrl_set_ban_state(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1557 struct ctdb_client_context
*client
,
1558 int destnode
, struct timeval timeout
,
1559 struct ctdb_ban_state
*ban_state
)
1561 struct ctdb_req_control request
;
1562 struct ctdb_reply_control
*reply
;
1565 ctdb_req_control_set_ban_state(&request
, ban_state
);
1566 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1570 ("Control SET_BAN_STATE failed to node %u, ret=%d\n",
1575 ret
= ctdb_reply_control_set_ban_state(reply
);
1578 ("Control SET_BAN_STATE failed, ret=%d\n", ret
));
1585 int ctdb_ctrl_get_ban_state(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1586 struct ctdb_client_context
*client
,
1587 int destnode
, struct timeval timeout
,
1588 struct ctdb_ban_state
**ban_state
)
1590 struct ctdb_req_control request
;
1591 struct ctdb_reply_control
*reply
;
1594 ctdb_req_control_get_ban_state(&request
);
1595 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1599 ("Control GET_BAN_STATE failed to node %u, ret=%d\n",
1604 ret
= ctdb_reply_control_get_ban_state(reply
, mem_ctx
, ban_state
);
1607 ("Control GET_BAN_STATE failed, ret=%d\n", ret
));
1614 int ctdb_ctrl_register_notify(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1615 struct ctdb_client_context
*client
,
1616 int destnode
, struct timeval timeout
,
1617 struct ctdb_notify_data
*notify
)
1619 struct ctdb_req_control request
;
1620 struct ctdb_reply_control
*reply
;
1623 ctdb_req_control_register_notify(&request
, notify
);
1624 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1628 ("Control REGISTER_NOTIFY failed to node %u, ret=%d\n",
1633 ret
= ctdb_reply_control_register_notify(reply
);
1636 ("Control REGISTER_NOTIFY failed, ret=%d\n", ret
));
1643 int ctdb_ctrl_deregister_notify(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1644 struct ctdb_client_context
*client
,
1645 int destnode
, struct timeval timeout
,
1648 struct ctdb_req_control request
;
1649 struct ctdb_reply_control
*reply
;
1652 ctdb_req_control_deregister_notify(&request
, srvid
);
1653 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1657 ("Control DEREGISTER_NOTIFY failed to node %u, ret=%d\n",
1662 ret
= ctdb_reply_control_deregister_notify(reply
);
1665 ("Control DEREGISTER_NOTIFY failed, ret=%d\n", ret
));
1672 int ctdb_ctrl_trans3_commit(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1673 struct ctdb_client_context
*client
,
1674 int destnode
, struct timeval timeout
,
1675 struct ctdb_rec_buffer
*recbuf
)
1677 struct ctdb_req_control request
;
1678 struct ctdb_reply_control
*reply
;
1681 ctdb_req_control_trans3_commit(&request
, recbuf
);
1682 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1686 ("Control TRANS3_COMMIT failed to node %u, ret=%d\n",
1691 ret
= ctdb_reply_control_trans3_commit(reply
);
1694 ("Control TRANS3_COMMIT failed, ret=%d\n", ret
));
1701 int ctdb_ctrl_get_db_seqnum(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1702 struct ctdb_client_context
*client
,
1703 int destnode
, struct timeval timeout
,
1704 uint32_t db_id
, uint64_t *seqnum
)
1706 struct ctdb_req_control request
;
1707 struct ctdb_reply_control
*reply
;
1710 ctdb_req_control_get_db_seqnum(&request
, db_id
);
1711 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1715 ("Control GET_DB_SEQNUM failed to node %u, ret=%d\n",
1720 ret
= ctdb_reply_control_get_db_seqnum(reply
, seqnum
);
1723 ("Control GET_DB_SEQNUM failed, ret=%d\n", ret
));
1730 int ctdb_ctrl_db_set_healthy(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1731 struct ctdb_client_context
*client
,
1732 int destnode
, struct timeval timeout
,
1735 struct ctdb_req_control request
;
1736 struct ctdb_reply_control
*reply
;
1739 ctdb_req_control_db_set_healthy(&request
, db_id
);
1740 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1744 ("Control DB_SET_HEALTHY failed to node %u, ret=%d\n",
1749 ret
= ctdb_reply_control_db_set_healthy(reply
);
1752 ("Control DB_SET_HEALTHY failed, ret=%d\n", ret
));
1759 int ctdb_ctrl_db_get_health(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1760 struct ctdb_client_context
*client
,
1761 int destnode
, struct timeval timeout
,
1762 uint32_t db_id
, const char **reason
)
1764 struct ctdb_req_control request
;
1765 struct ctdb_reply_control
*reply
;
1768 ctdb_req_control_db_get_health(&request
, db_id
);
1769 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1773 ("Control DB_GET_HEALTH failed to node %u, ret=%d\n",
1778 ret
= ctdb_reply_control_db_get_health(reply
, mem_ctx
, reason
);
1781 ("Control DB_GET_HEALTH failed, ret=%d\n", ret
));
1788 int ctdb_ctrl_get_public_ip_info(TALLOC_CTX
*mem_ctx
,
1789 struct tevent_context
*ev
,
1790 struct ctdb_client_context
*client
,
1791 int destnode
, struct timeval timeout
,
1792 ctdb_sock_addr
*addr
,
1793 struct ctdb_public_ip_info
**ipinfo
)
1795 struct ctdb_req_control request
;
1796 struct ctdb_reply_control
*reply
;
1799 ctdb_req_control_get_public_ip_info(&request
, addr
);
1800 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1804 ("Control GET_PUBLIC_IP_INFO failed to node %u, ret=%d\n",
1809 ret
= ctdb_reply_control_get_public_ip_info(reply
, mem_ctx
, ipinfo
);
1812 ("Control GET_PUBLIC_IP_INFO failed, ret=%d\n", ret
));
1819 int ctdb_ctrl_get_ifaces(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1820 struct ctdb_client_context
*client
,
1821 int destnode
, struct timeval timeout
,
1822 struct ctdb_iface_list
**iface_list
)
1824 struct ctdb_req_control request
;
1825 struct ctdb_reply_control
*reply
;
1828 ctdb_req_control_get_ifaces(&request
);
1829 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1833 ("Control GET_IFACES failed to node %u, ret=%d\n",
1838 ret
= ctdb_reply_control_get_ifaces(reply
, mem_ctx
, iface_list
);
1841 ("Control GET_IFACES failed, ret=%d\n", ret
));
1848 int ctdb_ctrl_set_iface_link_state(TALLOC_CTX
*mem_ctx
,
1849 struct tevent_context
*ev
,
1850 struct ctdb_client_context
*client
,
1851 int destnode
, struct timeval timeout
,
1852 struct ctdb_iface
*iface
)
1854 struct ctdb_req_control request
;
1855 struct ctdb_reply_control
*reply
;
1858 ctdb_req_control_set_iface_link_state(&request
, iface
);
1859 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1863 ("Control SET_IFACE_LINK_STATE failed to node %u, ret=%d\n",
1868 ret
= ctdb_reply_control_set_iface_link_state(reply
);
1871 ("Control SET_IFACE_LINK_STATE failed, ret=%d\n", ret
));
1878 int ctdb_ctrl_tcp_add_delayed_update(TALLOC_CTX
*mem_ctx
,
1879 struct tevent_context
*ev
,
1880 struct ctdb_client_context
*client
,
1881 int destnode
, struct timeval timeout
,
1882 struct ctdb_connection
*conn
)
1884 struct ctdb_req_control request
;
1885 struct ctdb_reply_control
*reply
;
1888 ctdb_req_control_tcp_add_delayed_update(&request
, conn
);
1889 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1893 ("Control TCP_ADD_DELAYED_UPDATE failed to node %u, ret=%d\n",
1898 ret
= ctdb_reply_control_tcp_add_delayed_update(reply
);
1901 ("Control TCP_ADD_DELAYED_UPDATE failed, ret=%d\n", ret
));
1908 int ctdb_ctrl_get_stat_history(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1909 struct ctdb_client_context
*client
,
1910 int destnode
, struct timeval timeout
,
1911 struct ctdb_statistics_list
**stats_list
)
1913 struct ctdb_req_control request
;
1914 struct ctdb_reply_control
*reply
;
1917 ctdb_req_control_get_stat_history(&request
);
1918 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1922 ("Control GET_STAT_HISTORY failed to node %u, ret=%d\n",
1927 ret
= ctdb_reply_control_get_stat_history(reply
, mem_ctx
, stats_list
);
1930 ("Control GET_STAT_HISTORY failed, ret=%d\n", ret
));
1937 int ctdb_ctrl_schedule_for_deletion(TALLOC_CTX
*mem_ctx
,
1938 struct tevent_context
*ev
,
1939 struct ctdb_client_context
*client
,
1940 int destnode
, struct timeval timeout
,
1941 struct ctdb_key_data
*key
)
1943 struct ctdb_req_control request
;
1944 struct ctdb_reply_control
*reply
;
1947 ctdb_req_control_schedule_for_deletion(&request
, key
);
1948 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1952 ("Control SCHEDULE_FOR_DELETION failed to node %u, ret=%d\n",
1957 ret
= ctdb_reply_control_schedule_for_deletion(reply
);
1960 ("Control SCHEDULE_FOR_DELETION failed, ret=%d\n", ret
));
1967 int ctdb_ctrl_set_db_readonly(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
1968 struct ctdb_client_context
*client
,
1969 int destnode
, struct timeval timeout
,
1972 struct ctdb_req_control request
;
1973 struct ctdb_reply_control
*reply
;
1976 ctdb_req_control_set_db_readonly(&request
, db_id
);
1977 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
1981 ("Control SET_DB_READONY failed to node %u, ret=%d\n",
1986 ret
= ctdb_reply_control_set_db_readonly(reply
);
1989 ("Control SET_DB_READONY failed, ret=%d\n", ret
));
1996 int ctdb_ctrl_traverse_start_ext(TALLOC_CTX
*mem_ctx
,
1997 struct tevent_context
*ev
,
1998 struct ctdb_client_context
*client
,
1999 int destnode
, struct timeval timeout
,
2000 struct ctdb_traverse_start_ext
*traverse
)
2002 struct ctdb_req_control request
;
2003 struct ctdb_reply_control
*reply
;
2006 ctdb_req_control_traverse_start_ext(&request
, traverse
);
2007 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2011 ("Control TRAVERSE_START_EXT failed to node %u, ret=%d\n",
2016 ret
= ctdb_reply_control_traverse_start_ext(reply
);
2019 ("Control TRAVERSE_START_EXT failed, ret=%d\n", ret
));
2026 int ctdb_ctrl_get_db_statistics(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2027 struct ctdb_client_context
*client
,
2028 int destnode
, struct timeval timeout
,
2030 struct ctdb_db_statistics
**dbstats
)
2032 struct ctdb_req_control request
;
2033 struct ctdb_reply_control
*reply
;
2036 ctdb_req_control_get_db_statistics(&request
, db_id
);
2037 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2041 ("Control GET_DB_STATISTICS failed to node %u, ret=%d\n",
2046 ret
= ctdb_reply_control_get_db_statistics(reply
, mem_ctx
, dbstats
);
2049 ("Control GET_DB_STATISTICS failed, ret=%d\n", ret
));
2056 int ctdb_ctrl_set_db_sticky(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2057 struct ctdb_client_context
*client
,
2058 int destnode
, struct timeval timeout
,
2061 struct ctdb_req_control request
;
2062 struct ctdb_reply_control
*reply
;
2065 ctdb_req_control_set_db_sticky(&request
, db_id
);
2066 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2070 ("Control SET_DB_STICKY failed to node %u, ret=%d\n",
2075 ret
= ctdb_reply_control_set_db_sticky(reply
);
2078 ("Control SET_DB_STICKY failed, ret=%d\n", ret
));
2085 int ctdb_ctrl_reload_public_ips(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2086 struct ctdb_client_context
*client
,
2087 int destnode
, struct timeval timeout
)
2089 struct ctdb_req_control request
;
2090 struct ctdb_reply_control
*reply
;
2093 ctdb_req_control_reload_public_ips(&request
);
2094 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2098 ("Control RELOAD_PUBLIC_IPS failed to node %u, ret=%d\n",
2103 ret
= ctdb_reply_control_reload_public_ips(reply
);
2106 ("Control RELOAD_PUBLIC_IPS failed, ret=%d\n", ret
));
2113 int ctdb_ctrl_get_runstate(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2114 struct ctdb_client_context
*client
,
2115 int destnode
, struct timeval timeout
,
2116 enum ctdb_runstate
*runstate
)
2118 struct ctdb_req_control request
;
2119 struct ctdb_reply_control
*reply
;
2122 ctdb_req_control_get_runstate(&request
);
2123 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2127 ("Control GET_RUNSTATE failed to node %u, ret=%d\n",
2132 ret
= ctdb_reply_control_get_runstate(reply
, runstate
);
2135 ("Control GET_RUNSTATE failed, ret=%d\n", ret
));
2142 int ctdb_ctrl_db_detach(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2143 struct ctdb_client_context
*client
,
2144 int destnode
, struct timeval timeout
,
2147 struct ctdb_req_control request
;
2148 struct ctdb_reply_control
*reply
;
2151 ctdb_req_control_db_detach(&request
, db_id
);
2152 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2156 ("Control DB_DETACH failed to node %u, ret=%d\n",
2161 ret
= ctdb_reply_control_db_detach(reply
);
2164 ("Control DB_DETACH failed, ret=%d\n", ret
));
2171 int ctdb_ctrl_get_nodes_file(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2172 struct ctdb_client_context
*client
,
2173 int destnode
, struct timeval timeout
,
2174 struct ctdb_node_map
**nodemap
)
2176 struct ctdb_req_control request
;
2177 struct ctdb_reply_control
*reply
;
2180 ctdb_req_control_get_nodes_file(&request
);
2181 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2185 ("Control GET_NODES_FILE failed to node %u, ret=%d\n",
2190 ret
= ctdb_reply_control_get_nodes_file(reply
, mem_ctx
, nodemap
);
2193 ("Control GET_NODES_FILE failed, ret=%d\n", ret
));
2200 int ctdb_ctrl_db_freeze(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2201 struct ctdb_client_context
*client
,
2202 int destnode
, struct timeval timeout
, uint32_t db_id
)
2204 struct ctdb_req_control request
;
2205 struct ctdb_reply_control
*reply
;
2208 ctdb_req_control_db_freeze(&request
, db_id
);
2209 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2213 ("Control DB_FREEZE failed to node %u, ret=%d\n",
2218 ret
= ctdb_reply_control_db_freeze(reply
);
2221 ("Control DB_FREEZE failed, ret=%d\n", ret
));
2228 int ctdb_ctrl_db_thaw(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2229 struct ctdb_client_context
*client
,
2230 int destnode
, struct timeval timeout
, uint32_t db_id
)
2232 struct ctdb_req_control request
;
2233 struct ctdb_reply_control
*reply
;
2236 ctdb_req_control_db_thaw(&request
, db_id
);
2237 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2241 ("Control DB_THAW failed to node %u, ret=%d\n",
2246 ret
= ctdb_reply_control_db_thaw(reply
);
2249 ("Control DB_THAW failed, ret=%d\n", ret
));
2256 int ctdb_ctrl_db_transaction_start(TALLOC_CTX
*mem_ctx
,
2257 struct tevent_context
*ev
,
2258 struct ctdb_client_context
*client
,
2259 int destnode
, struct timeval timeout
,
2260 struct ctdb_transdb
*transdb
)
2262 struct ctdb_req_control request
;
2263 struct ctdb_reply_control
*reply
;
2266 ctdb_req_control_db_transaction_start(&request
, transdb
);
2267 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2271 ("Control DB_TRANSACTION_START failed to node %u, ret=%d\n",
2276 ret
= ctdb_reply_control_db_transaction_start(reply
);
2279 ("Control DB_TRANSACTION_START failed, ret=%d\n", ret
));
2286 int ctdb_ctrl_db_transaction_commit(TALLOC_CTX
*mem_ctx
,
2287 struct tevent_context
*ev
,
2288 struct ctdb_client_context
*client
,
2289 int destnode
, struct timeval timeout
,
2290 struct ctdb_transdb
*transdb
)
2292 struct ctdb_req_control request
;
2293 struct ctdb_reply_control
*reply
;
2296 ctdb_req_control_db_transaction_commit(&request
, transdb
);
2297 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2301 ("Control DB_TRANSACTION_COMMIT failed to node %u, ret=%d\n",
2306 ret
= ctdb_reply_control_db_transaction_commit(reply
);
2309 ("Control DB_TRANSACTION_COMMIT failed, ret=%d\n", ret
));
2316 int ctdb_ctrl_db_transaction_cancel(TALLOC_CTX
*mem_ctx
,
2317 struct tevent_context
*ev
,
2318 struct ctdb_client_context
*client
,
2319 int destnode
, struct timeval timeout
,
2322 struct ctdb_req_control request
;
2323 struct ctdb_reply_control
*reply
;
2326 ctdb_req_control_db_transaction_cancel(&request
, db_id
);
2327 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2331 ("Control DB_TRANSACTION_CANCEL failed to node %u, ret=%d\n",
2336 ret
= ctdb_reply_control_db_transaction_cancel(reply
);
2339 ("Control DB_TRANSACTION_CANCEL failed, ret=%d\n", ret
));
2346 int ctdb_ctrl_db_pull(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2347 struct ctdb_client_context
*client
,
2348 int destnode
, struct timeval timeout
,
2349 struct ctdb_pulldb_ext
*pulldb
, uint32_t *num_records
)
2351 struct ctdb_req_control request
;
2352 struct ctdb_reply_control
*reply
;
2355 ctdb_req_control_db_pull(&request
, pulldb
);
2356 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2360 ("Control DB_PULL failed to node %u, ret=%d\n",
2365 ret
= ctdb_reply_control_db_pull(reply
, num_records
);
2367 DEBUG(DEBUG_ERR
, ("Control DB_PULL failed, ret=%d\n", ret
));
2374 int ctdb_ctrl_db_push_start(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2375 struct ctdb_client_context
*client
,
2376 int destnode
, struct timeval timeout
,
2377 struct ctdb_pulldb_ext
*pulldb
)
2379 struct ctdb_req_control request
;
2380 struct ctdb_reply_control
*reply
;
2383 ctdb_req_control_db_push_start(&request
, pulldb
);
2384 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2388 ("Control DB_PUSH_START failed to node %u, ret=%d\n",
2393 ret
= ctdb_reply_control_db_push_start(reply
);
2396 ("Control DB_PUSH_START failed, ret=%d\n", ret
));
2403 int ctdb_ctrl_db_push_confirm(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2404 struct ctdb_client_context
*client
,
2405 int destnode
, struct timeval timeout
,
2406 uint32_t db_id
, uint32_t *num_records
)
2408 struct ctdb_req_control request
;
2409 struct ctdb_reply_control
*reply
;
2412 ctdb_req_control_db_push_confirm(&request
, db_id
);
2413 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2417 ("Control DB_PUSH_CONFIRM failed to node %u, ret=%d\n",
2422 ret
= ctdb_reply_control_db_push_confirm(reply
, num_records
);
2425 ("Control DB_PUSH_CONFIRM failed, ret=%d\n", ret
));
2432 int ctdb_ctrl_db_open_flags(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2433 struct ctdb_client_context
*client
,
2434 int destnode
, struct timeval timeout
,
2435 uint32_t db_id
, int *tdb_flags
)
2437 struct ctdb_req_control request
;
2438 struct ctdb_reply_control
*reply
;
2441 ctdb_req_control_db_open_flags(&request
, db_id
);
2442 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2446 ("Control DB_OPEN_FLAGS failed to node %u, ret=%d\n",
2451 ret
= ctdb_reply_control_db_open_flags(reply
, tdb_flags
);
2454 ("Control DB_OPEN_FLAGS failed, ret=%d\n", ret
));
2461 int ctdb_ctrl_db_attach_replicated(TALLOC_CTX
*mem_ctx
,
2462 struct tevent_context
*ev
,
2463 struct ctdb_client_context
*client
,
2464 int destnode
, struct timeval timeout
,
2465 const char *db_name
, uint32_t *db_id
)
2467 struct ctdb_req_control request
;
2468 struct ctdb_reply_control
*reply
;
2471 ctdb_req_control_db_attach_replicated(&request
, db_name
);
2472 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2476 ("Control DB_ATTACH_REPLICATED failed to node %u,"
2477 " ret=%d\n", destnode
, ret
));
2481 ret
= ctdb_reply_control_db_attach_replicated(reply
, db_id
);
2484 ("Control DB_ATTACH_REPLICATED failed, ret=%d\n", ret
));
2491 int ctdb_ctrl_check_pid_srvid(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2492 struct ctdb_client_context
*client
,
2493 int destnode
, struct timeval timeout
,
2494 struct ctdb_pid_srvid
*pid_srvid
, int *status
)
2496 struct ctdb_req_control request
;
2497 struct ctdb_reply_control
*reply
;
2500 ctdb_req_control_check_pid_srvid(&request
, pid_srvid
);
2501 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2505 ("Control CHECK_PID_SRVID failed to node %u, ret=%d\n",
2510 ret
= ctdb_reply_control_check_pid_srvid(reply
, status
);
2513 ("Control CHECK_PID_SRVID failed, ret=%d\n", ret
));
2520 int ctdb_ctrl_tunnel_register(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2521 struct ctdb_client_context
*client
,
2522 int destnode
, struct timeval timeout
,
2525 struct ctdb_req_control request
;
2526 struct ctdb_reply_control
*reply
;
2529 ctdb_req_control_tunnel_register(&request
, tunnel_id
);
2530 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2534 ("Control TUNNEL_REGISTER failed to node %u, ret=%d\n",
2539 ret
= ctdb_reply_control_tunnel_register(reply
);
2542 ("Control TUNNEL_REGISTER failed, ret=%d\n", ret
));
2549 int ctdb_ctrl_tunnel_deregister(TALLOC_CTX
*mem_ctx
, struct tevent_context
*ev
,
2550 struct ctdb_client_context
*client
,
2551 int destnode
, struct timeval timeout
,
2554 struct ctdb_req_control request
;
2555 struct ctdb_reply_control
*reply
;
2558 ctdb_req_control_tunnel_deregister(&request
, tunnel_id
);
2559 ret
= ctdb_client_control(mem_ctx
, ev
, client
, destnode
, timeout
,
2563 ("Control TUNNEL_DEREGISTER failed to node %u, ret=%d\n",
2568 ret
= ctdb_reply_control_tunnel_deregister(reply
);
2571 ("Control TUNNEL_DEREGISTER failed, ret=%d\n", ret
));
2578 int ctdb_ctrl_disable_node(TALLOC_CTX
*mem_ctx
,
2579 struct tevent_context
*ev
,
2580 struct ctdb_client_context
*client
,
2582 struct timeval timeout
)
2584 struct ctdb_req_control request
= {
2587 struct ctdb_reply_control
*reply
= NULL
;
2590 ctdb_req_control_disable_node(&request
);
2591 ret
= ctdb_client_control(mem_ctx
,
2599 D_ERR("Control DISABLE_NODE failed to node %u, ret=%d\n",
2605 ret
= ctdb_reply_control_disable_node(reply
);
2607 D_ERR("Control DISABLE_NODE failed, ret=%d\n", ret
);
2614 int ctdb_ctrl_enable_node(TALLOC_CTX
*mem_ctx
,
2615 struct tevent_context
*ev
,
2616 struct ctdb_client_context
*client
,
2618 struct timeval timeout
)
2620 struct ctdb_req_control request
= {
2623 struct ctdb_reply_control
*reply
= NULL
;
2626 ctdb_req_control_enable_node(&request
);
2627 ret
= ctdb_client_control(mem_ctx
,
2635 D_ERR("Control ENABLE_NODE failed to node %u, ret=%d\n",
2641 ret
= ctdb_reply_control_enable_node(reply
);
2643 D_ERR("Control ENABLE_NODE failed, ret=%d\n", ret
);