2 CTDB protocol marshalling
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"
27 #include "protocol_api.h"
28 #include "protocol_private.h"
31 void ctdb_req_call_fill(struct ctdb_req_call *c,
32 uint32_t db_id, uint32_t flags,
33 uint32_t call_id, TDB_DATA key)
35 request->flags = flags;
39 c->calldata = tdb_null;
43 static int ctdb_reply_control_generic(struct ctdb_reply_control
*reply
)
48 /* CTDB_CONTROL_PROCESS_EXISTS */
50 void ctdb_req_control_process_exists(struct ctdb_req_control
*request
,
53 request
->opcode
= CTDB_CONTROL_PROCESS_EXISTS
;
56 request
->client_id
= 0;
59 request
->rdata
.opcode
= CTDB_CONTROL_PROCESS_EXISTS
;
60 request
->rdata
.data
.pid
= pid
;
64 int ctdb_reply_control_process_exists(struct ctdb_reply_control
*reply
,
67 if (reply
->rdata
.opcode
== CTDB_CONTROL_PROCESS_EXISTS
) {
68 *status
= reply
->status
;
75 /* CTDB_CONTROL_STATISTICS */
77 void ctdb_req_control_statistics(struct ctdb_req_control
*request
)
79 request
->opcode
= CTDB_CONTROL_STATISTICS
;
82 request
->client_id
= 0;
85 request
->rdata
.opcode
= CTDB_CONTROL_STATISTICS
;
88 int ctdb_reply_control_statistics(struct ctdb_reply_control
*reply
,
90 struct ctdb_statistics
**stats
)
92 if (reply
->status
== 0 &&
93 reply
->rdata
.opcode
== CTDB_CONTROL_STATISTICS
) {
94 *stats
= talloc_steal(mem_ctx
, reply
->rdata
.data
.stats
);
99 /* CTDB_CONTROL_PING */
101 void ctdb_req_control_ping(struct ctdb_req_control
*request
)
103 request
->opcode
= CTDB_CONTROL_PING
;
106 request
->client_id
= 0;
109 request
->rdata
.opcode
= CTDB_CONTROL_PING
;
112 int ctdb_reply_control_ping(struct ctdb_reply_control
*reply
,
115 if (reply
->status
>= 0) {
116 *num_clients
= reply
->status
;
119 return reply
->status
;
122 /* CTDB_CONTROL_GETDBPATH */
124 void ctdb_req_control_getdbpath(struct ctdb_req_control
*request
,
127 request
->opcode
= CTDB_CONTROL_GETDBPATH
;
130 request
->client_id
= 0;
133 request
->rdata
.opcode
= CTDB_CONTROL_GETDBPATH
;
134 request
->rdata
.data
.db_id
= db_id
;
137 int ctdb_reply_control_getdbpath(struct ctdb_reply_control
*reply
,
138 TALLOC_CTX
*mem_ctx
, const char **db_path
)
140 if (reply
->status
== 0 &&
141 reply
->rdata
.opcode
== CTDB_CONTROL_GETDBPATH
) {
142 *db_path
= talloc_steal(mem_ctx
, reply
->rdata
.data
.db_path
);
144 return reply
->status
;
147 /* CTDB_CONTROL_GETVNNMAP */
149 void ctdb_req_control_getvnnmap(struct ctdb_req_control
*request
)
151 request
->opcode
= CTDB_CONTROL_GETVNNMAP
;
154 request
->client_id
= 0;
157 request
->rdata
.opcode
= CTDB_CONTROL_GETVNNMAP
;
160 int ctdb_reply_control_getvnnmap(struct ctdb_reply_control
*reply
,
162 struct ctdb_vnn_map
**vnnmap
)
164 if (reply
->status
== 0 &&
165 reply
->rdata
.opcode
== CTDB_CONTROL_GETVNNMAP
) {
166 *vnnmap
= talloc_steal(mem_ctx
, reply
->rdata
.data
.vnnmap
);
168 return reply
->status
;
171 /* CTDB_CONTROL_SETVNNMAP */
173 void ctdb_req_control_setvnnmap(struct ctdb_req_control
*request
,
174 struct ctdb_vnn_map
*vnnmap
)
176 request
->opcode
= CTDB_CONTROL_SETVNNMAP
;
179 request
->client_id
= 0;
182 request
->rdata
.opcode
= CTDB_CONTROL_SETVNNMAP
;
183 request
->rdata
.data
.vnnmap
= vnnmap
;
186 int ctdb_reply_control_setvnnmap(struct ctdb_reply_control
*reply
)
188 return ctdb_reply_control_generic(reply
);
191 /* CTDB_CONTROL_GET_DEBUG */
193 void ctdb_req_control_get_debug(struct ctdb_req_control
*request
)
195 request
->opcode
= CTDB_CONTROL_GET_DEBUG
;
198 request
->client_id
= 0;
201 request
->rdata
.opcode
= CTDB_CONTROL_GET_DEBUG
;
204 int ctdb_reply_control_get_debug(struct ctdb_reply_control
*reply
,
207 if (reply
->status
== 0 &&
208 reply
->rdata
.opcode
== CTDB_CONTROL_GET_DEBUG
) {
209 *loglevel
= reply
->rdata
.data
.loglevel
;
211 return reply
->status
;
214 /* CTDB_CONTROL_SET_DEBUG */
216 void ctdb_req_control_set_debug(struct ctdb_req_control
*request
,
219 request
->opcode
= CTDB_CONTROL_SET_DEBUG
;
222 request
->client_id
= 0;
225 request
->rdata
.opcode
= CTDB_CONTROL_SET_DEBUG
;
226 request
->rdata
.data
.loglevel
= loglevel
;
229 int ctdb_reply_control_set_debug(struct ctdb_reply_control
*reply
)
231 return ctdb_reply_control_generic(reply
);
234 /* CTDB_CONTROL_GET_DBMAP */
236 void ctdb_req_control_get_dbmap(struct ctdb_req_control
*request
)
238 request
->opcode
= CTDB_CONTROL_GET_DBMAP
;
241 request
->client_id
= 0;
244 request
->rdata
.opcode
= CTDB_CONTROL_GET_DBMAP
;
247 int ctdb_reply_control_get_dbmap(struct ctdb_reply_control
*reply
,
249 struct ctdb_dbid_map
**dbmap
)
251 if (reply
->status
== 0 &&
252 reply
->rdata
.opcode
== CTDB_CONTROL_GET_DBMAP
) {
253 *dbmap
= talloc_steal(mem_ctx
, reply
->rdata
.data
.dbmap
);
255 return reply
->status
;
258 /* CTDB_CONTROL_PULL_DB */
260 void ctdb_req_control_pull_db(struct ctdb_req_control
*request
,
261 struct ctdb_pulldb
*pulldb
)
263 request
->opcode
= CTDB_CONTROL_PULL_DB
;
266 request
->client_id
= 0;
269 request
->rdata
.opcode
= CTDB_CONTROL_PULL_DB
;
270 request
->rdata
.data
.pulldb
= pulldb
;
273 int ctdb_reply_control_pull_db(struct ctdb_reply_control
*reply
,
275 struct ctdb_rec_buffer
**recbuf
)
277 if (reply
->status
== 0 &&
278 reply
->rdata
.opcode
== CTDB_CONTROL_PULL_DB
) {
279 *recbuf
= talloc_steal(mem_ctx
, reply
->rdata
.data
.recbuf
);
281 return reply
->status
;
284 /* CTDB_CONTROL_PUSH_DB */
286 void ctdb_req_control_push_db(struct ctdb_req_control
*request
,
287 struct ctdb_rec_buffer
*recbuf
)
289 request
->opcode
= CTDB_CONTROL_PUSH_DB
;
292 request
->client_id
= 0;
295 request
->rdata
.opcode
= CTDB_CONTROL_PUSH_DB
;
296 request
->rdata
.data
.recbuf
= recbuf
;
299 int ctdb_reply_control_push_db(struct ctdb_reply_control
*reply
)
301 return ctdb_reply_control_generic(reply
);
304 /* CTDB_CONTROL_GET_RECMODE */
306 void ctdb_req_control_get_recmode(struct ctdb_req_control
*request
)
308 request
->opcode
= CTDB_CONTROL_GET_RECMODE
;
311 request
->client_id
= 0;
314 request
->rdata
.opcode
= CTDB_CONTROL_GET_RECMODE
;
317 int ctdb_reply_control_get_recmode(struct ctdb_reply_control
*reply
,
320 if (reply
->status
>= 0) {
321 *recmode
= reply
->status
;
324 return reply
->status
;
327 /* CTDB_CONTROL_SET_RECMODE */
329 void ctdb_req_control_set_recmode(struct ctdb_req_control
*request
,
332 request
->opcode
= CTDB_CONTROL_SET_RECMODE
;
335 request
->client_id
= 0;
338 request
->rdata
.opcode
= CTDB_CONTROL_SET_RECMODE
;
339 request
->rdata
.data
.recmode
= recmode
;
342 int ctdb_reply_control_set_recmode(struct ctdb_reply_control
*reply
)
344 return ctdb_reply_control_generic(reply
);
347 /* CTDB_CONTROL_STATISTICS_RESET */
349 void ctdb_req_control_statistics_reset(struct ctdb_req_control
*request
)
351 request
->opcode
= CTDB_CONTROL_STATISTICS_RESET
;
354 request
->client_id
= 0;
357 request
->rdata
.opcode
= CTDB_CONTROL_STATISTICS_RESET
;
360 int ctdb_reply_control_statistics_reset(struct ctdb_reply_control
*reply
)
362 return ctdb_reply_control_generic(reply
);
365 /* CTDB_CONTROL_DB_ATTACH */
367 void ctdb_req_control_db_attach(struct ctdb_req_control
*request
,
368 const char *db_name
, uint32_t tdb_flags
)
370 request
->opcode
= CTDB_CONTROL_DB_ATTACH
;
372 request
->srvid
= tdb_flags
;
373 request
->client_id
= 0;
376 request
->rdata
.opcode
= CTDB_CONTROL_DB_ATTACH
;
377 request
->rdata
.data
.db_name
= db_name
;
380 int ctdb_reply_control_db_attach(struct ctdb_reply_control
*reply
,
383 if (reply
->status
== 0 &&
384 reply
->rdata
.opcode
== CTDB_CONTROL_DB_ATTACH
) {
385 *db_id
= reply
->rdata
.data
.db_id
;
387 return reply
->status
;
390 /* CTDB_CONTROL_SET_CALL */
392 /* CTDB_CONTROL_TRAVERSE_START */
394 void ctdb_req_control_traverse_start(struct ctdb_req_control
*request
,
395 struct ctdb_traverse_start
*traverse
)
397 request
->opcode
= CTDB_CONTROL_TRAVERSE_START
;
400 request
->client_id
= 0;
403 request
->rdata
.opcode
= CTDB_CONTROL_TRAVERSE_START
;
404 request
->rdata
.data
.traverse_start
= traverse
;
407 int ctdb_reply_control_traverse_start(struct ctdb_reply_control
*reply
)
409 return ctdb_reply_control_generic(reply
);
412 /* CTDB_CONTROL_TRAVERSE_ALL */
413 /* CTDB_CONTROL_TRAVERSE_DATA */
415 /* CTDB_CONTROL_REGISTER_SRVID */
417 void ctdb_req_control_register_srvid(struct ctdb_req_control
*request
,
420 request
->opcode
= CTDB_CONTROL_REGISTER_SRVID
;
422 request
->srvid
= srvid
;
423 request
->client_id
= 0;
426 request
->rdata
.opcode
= CTDB_CONTROL_REGISTER_SRVID
;
429 int ctdb_reply_control_register_srvid(struct ctdb_reply_control
*reply
)
431 return ctdb_reply_control_generic(reply
);
434 /* CTDB_CONTROL_DEREGISTER_SRVID */
436 void ctdb_req_control_deregister_srvid(struct ctdb_req_control
*request
,
439 request
->opcode
= CTDB_CONTROL_DEREGISTER_SRVID
;
441 request
->srvid
= srvid
;
442 request
->client_id
= 0;
445 request
->rdata
.opcode
= CTDB_CONTROL_DEREGISTER_SRVID
;
448 int ctdb_reply_control_deregister_srvid(struct ctdb_reply_control
*reply
)
450 return ctdb_reply_control_generic(reply
);
453 /* CTDB_CONTROL_GET_DBNAME */
455 void ctdb_req_control_get_dbname(struct ctdb_req_control
*request
,
458 request
->opcode
= CTDB_CONTROL_GET_DBNAME
;
461 request
->client_id
= 0;
464 request
->rdata
.opcode
= CTDB_CONTROL_GET_DBNAME
;
465 request
->rdata
.data
.db_id
= db_id
;
468 int ctdb_reply_control_get_dbname(struct ctdb_reply_control
*reply
,
469 TALLOC_CTX
*mem_ctx
, const char **db_name
)
471 if (reply
->status
== 0 &&
472 reply
->rdata
.opcode
== CTDB_CONTROL_GET_DBNAME
) {
473 *db_name
= talloc_steal(mem_ctx
, reply
->rdata
.data
.db_name
);
475 return reply
->status
;
478 /* CTDB_CONTROL_ENABLE_SEQNUM */
480 void ctdb_req_control_enable_seqnum(struct ctdb_req_control
*request
,
483 request
->opcode
= CTDB_CONTROL_ENABLE_SEQNUM
;
486 request
->client_id
= 0;
489 request
->rdata
.opcode
= CTDB_CONTROL_ENABLE_SEQNUM
;
490 request
->rdata
.data
.db_id
= db_id
;
493 int ctdb_reply_control_enable_seqnum(struct ctdb_reply_control
*reply
)
495 return ctdb_reply_control_generic(reply
);
498 /* CTDB_CONTROL_UPDATE_SEQNUM */
500 void ctdb_req_control_update_seqnum(struct ctdb_req_control
*request
,
503 request
->opcode
= CTDB_CONTROL_UPDATE_SEQNUM
;
506 request
->client_id
= 0;
509 request
->rdata
.opcode
= CTDB_CONTROL_UPDATE_SEQNUM
;
510 request
->rdata
.data
.db_id
= db_id
;
513 int ctdb_reply_control_update_seqnum(struct ctdb_reply_control
*reply
)
515 return ctdb_reply_control_generic(reply
);
518 /* CTDB_CONTROL_DUMP_MEMORY */
520 void ctdb_req_control_dump_memory(struct ctdb_req_control
*request
)
522 request
->opcode
= CTDB_CONTROL_DUMP_MEMORY
;
525 request
->client_id
= 0;
528 request
->rdata
.opcode
= CTDB_CONTROL_DUMP_MEMORY
;
531 int ctdb_reply_control_dump_memory(struct ctdb_reply_control
*reply
,
532 TALLOC_CTX
*mem_ctx
, const char **mem_str
)
534 if (reply
->status
== 0 &&
535 reply
->rdata
.opcode
== CTDB_CONTROL_DUMP_MEMORY
) {
536 *mem_str
= talloc_steal(mem_ctx
, reply
->rdata
.data
.mem_str
);
538 return reply
->status
;
541 /* CTDB_CONTROL_GET_PID */
543 void ctdb_req_control_get_pid(struct ctdb_req_control
*request
)
545 request
->opcode
= CTDB_CONTROL_GET_PID
;
548 request
->client_id
= 0;
551 request
->rdata
.opcode
= CTDB_CONTROL_GET_PID
;
554 int ctdb_reply_control_get_pid(struct ctdb_reply_control
*reply
,
557 if (reply
->rdata
.opcode
== CTDB_CONTROL_GET_PID
) {
558 *pid
= reply
->status
;
561 return reply
->status
;
564 /* CTDB_CONTROL_GET_RECMASTER */
566 void ctdb_req_control_get_recmaster(struct ctdb_req_control
*request
)
568 request
->opcode
= CTDB_CONTROL_GET_RECMASTER
;
571 request
->client_id
= 0;
574 request
->rdata
.opcode
= CTDB_CONTROL_GET_RECMASTER
;
577 int ctdb_reply_control_get_recmaster(struct ctdb_reply_control
*reply
,
580 if (reply
->rdata
.opcode
== CTDB_CONTROL_GET_RECMASTER
) {
581 *recmaster
= reply
->status
;
584 return reply
->status
;
587 /* CTDB_CONTROL_SET_RECMASTER */
589 void ctdb_req_control_set_recmaster(struct ctdb_req_control
*request
,
592 request
->opcode
= CTDB_CONTROL_SET_RECMASTER
;
595 request
->client_id
= 0;
598 request
->rdata
.opcode
= CTDB_CONTROL_SET_RECMASTER
;
599 request
->rdata
.data
.recmaster
= recmaster
;
602 int ctdb_reply_control_set_recmaster(struct ctdb_reply_control
*reply
)
604 return ctdb_reply_control_generic(reply
);
607 /* CTDB_CONTROL_FREEZE */
609 void ctdb_req_control_freeze(struct ctdb_req_control
*request
,
612 request
->opcode
= CTDB_CONTROL_FREEZE
;
614 request
->srvid
= priority
;
615 request
->client_id
= 0;
618 request
->rdata
.opcode
= CTDB_CONTROL_FREEZE
;
621 int ctdb_reply_control_freeze(struct ctdb_reply_control
*reply
)
623 return ctdb_reply_control_generic(reply
);
626 /* CTDB_CONTROL_THAW */
628 void ctdb_req_control_thaw(struct ctdb_req_control
*request
,
631 request
->opcode
= CTDB_CONTROL_THAW
;
633 request
->srvid
= priority
;
634 request
->client_id
= 0;
637 request
->rdata
.opcode
= CTDB_CONTROL_THAW
;
640 int ctdb_reply_control_thaw(struct ctdb_reply_control
*reply
)
642 return ctdb_reply_control_generic(reply
);
645 /* CTDB_CONTROL_GET_PNN */
647 void ctdb_req_control_get_pnn(struct ctdb_req_control
*request
)
649 request
->opcode
= CTDB_CONTROL_GET_PNN
;
652 request
->client_id
= 0;
655 request
->rdata
.opcode
= CTDB_CONTROL_GET_PNN
;
658 int ctdb_reply_control_get_pnn(struct ctdb_reply_control
*reply
,
661 if (reply
->status
>= 0) {
662 *pnn
= reply
->status
;
665 return reply
->status
;
668 /* CTDB_CONTROL_SHUTDOWN */
670 void ctdb_req_control_shutdown(struct ctdb_req_control
*request
)
672 request
->opcode
= CTDB_CONTROL_SHUTDOWN
;
675 request
->client_id
= 0;
678 request
->rdata
.opcode
= CTDB_CONTROL_SHUTDOWN
;
681 int ctdb_reply_control_shutdown(struct ctdb_reply_control
*reply
)
683 return ctdb_reply_control_generic(reply
);
686 /* CTDB_CONTROL_GET_MONMODE */
688 void ctdb_req_control_get_monmode(struct ctdb_req_control
*request
)
690 request
->opcode
= CTDB_CONTROL_GET_MONMODE
;
693 request
->client_id
= 0;
696 request
->rdata
.opcode
= CTDB_CONTROL_GET_MONMODE
;
699 int ctdb_reply_control_get_monmode(struct ctdb_reply_control
*reply
,
702 if (reply
->status
>= 0) {
703 *mon_mode
= reply
->status
;
706 return reply
->status
;
709 /* CTDB_CONTROL_TCP_CLIENT */
711 void ctdb_req_control_tcp_client(struct ctdb_req_control
*request
,
712 struct ctdb_connection
*conn
)
714 request
->opcode
= CTDB_CONTROL_TCP_CLIENT
;
717 request
->client_id
= 0;
720 request
->rdata
.opcode
= CTDB_CONTROL_TCP_CLIENT
;
721 request
->rdata
.data
.conn
= conn
;
724 int ctdb_reply_control_tcp_client(struct ctdb_reply_control
*reply
)
726 return ctdb_reply_control_generic(reply
);
729 /* CTDB_CONTROL_TCP_ADD */
731 void ctdb_req_control_tcp_add(struct ctdb_req_control
*request
,
732 struct ctdb_connection
*conn
)
734 request
->opcode
= CTDB_CONTROL_TCP_ADD
;
737 request
->client_id
= 0;
740 request
->rdata
.opcode
= CTDB_CONTROL_TCP_ADD
;
741 request
->rdata
.data
.conn
= conn
;
744 int ctdb_reply_control_tcp_add(struct ctdb_reply_control
*reply
)
746 return ctdb_reply_control_generic(reply
);
749 /* CTDB_CONTROL_TCP_REMOVE */
751 void ctdb_req_control_tcp_remove(struct ctdb_req_control
*request
,
752 struct ctdb_connection
*conn
)
754 request
->opcode
= CTDB_CONTROL_TCP_REMOVE
;
757 request
->client_id
= 0;
760 request
->rdata
.opcode
= CTDB_CONTROL_TCP_REMOVE
;
761 request
->rdata
.data
.conn
= conn
;
764 int ctdb_reply_control_tcp_remove(struct ctdb_reply_control
*reply
)
766 return ctdb_reply_control_generic(reply
);
769 /* CTDB_CONTROL_STARTUP */
771 void ctdb_req_control_startup(struct ctdb_req_control
*request
)
773 request
->opcode
= CTDB_CONTROL_STARTUP
;
776 request
->client_id
= 0;
779 request
->rdata
.opcode
= CTDB_CONTROL_STARTUP
;
782 int ctdb_reply_control_startup(struct ctdb_reply_control
*reply
)
784 return ctdb_reply_control_generic(reply
);
787 /* CTDB_CONTROL_SET_TUNABLE */
789 void ctdb_req_control_set_tunable(struct ctdb_req_control
*request
,
790 struct ctdb_tunable
*tunable
)
792 request
->opcode
= CTDB_CONTROL_SET_TUNABLE
;
795 request
->client_id
= 0;
798 request
->rdata
.opcode
= CTDB_CONTROL_SET_TUNABLE
;
799 request
->rdata
.data
.tunable
= tunable
;
802 int ctdb_reply_control_set_tunable(struct ctdb_reply_control
*reply
)
804 return ctdb_reply_control_generic(reply
);
807 /* CTDB_CONTROL_GET_TUNABLE */
809 void ctdb_req_control_get_tunable(struct ctdb_req_control
*request
,
812 request
->opcode
= CTDB_CONTROL_GET_TUNABLE
;
815 request
->client_id
= 0;
818 request
->rdata
.opcode
= CTDB_CONTROL_GET_TUNABLE
;
819 request
->rdata
.data
.tun_var
= discard_const(name
);
822 int ctdb_reply_control_get_tunable(struct ctdb_reply_control
*reply
,
825 if (reply
->status
== 0 &&
826 reply
->rdata
.opcode
== CTDB_CONTROL_GET_TUNABLE
) {
827 *value
= reply
->rdata
.data
.tun_value
;
829 return reply
->status
;
832 /* CTDB_CONTROL_LIST_TUNABLES */
834 void ctdb_req_control_list_tunables(struct ctdb_req_control
*request
)
836 request
->opcode
= CTDB_CONTROL_LIST_TUNABLES
;
839 request
->client_id
= 0;
842 request
->rdata
.opcode
= CTDB_CONTROL_LIST_TUNABLES
;
845 int ctdb_reply_control_list_tunables(struct ctdb_reply_control
*reply
,
847 struct ctdb_var_list
**tun_var_list
)
849 if (reply
->status
== 0 &&
850 reply
->rdata
.opcode
== CTDB_CONTROL_LIST_TUNABLES
) {
851 *tun_var_list
= talloc_steal(mem_ctx
,
852 reply
->rdata
.data
.tun_var_list
);
854 return reply
->status
;
857 /* CTDB_CONTROL_MODIFY_FLAGS */
859 void ctdb_req_control_modify_flags(struct ctdb_req_control
*request
,
860 struct ctdb_node_flag_change
*flag_change
)
862 request
->opcode
= CTDB_CONTROL_MODIFY_FLAGS
;
865 request
->client_id
= 0;
868 request
->rdata
.opcode
= CTDB_CONTROL_MODIFY_FLAGS
;
869 request
->rdata
.data
.flag_change
= flag_change
;
872 int ctdb_reply_control_modify_flags(struct ctdb_reply_control
*reply
)
874 return ctdb_reply_control_generic(reply
);
877 /* CTDB_CONTROL_GET_ALL_TUNABLES */
879 void ctdb_req_control_get_all_tunables(struct ctdb_req_control
*request
)
881 request
->opcode
= CTDB_CONTROL_GET_ALL_TUNABLES
;
884 request
->client_id
= 0;
887 request
->rdata
.opcode
= CTDB_CONTROL_GET_ALL_TUNABLES
;
890 int ctdb_reply_control_get_all_tunables(struct ctdb_reply_control
*reply
,
892 struct ctdb_tunable_list
**tun_list
)
894 if (reply
->status
== 0 &&
895 reply
->rdata
.opcode
== CTDB_CONTROL_GET_ALL_TUNABLES
) {
896 *tun_list
= talloc_steal(mem_ctx
, reply
->rdata
.data
.tun_list
);
898 return reply
->status
;
901 /* CTDB_CONTROL_KILL_TCP */
903 void ctdb_req_control_kill_tcp(struct ctdb_req_control
*request
,
904 struct ctdb_connection
*conn
)
906 request
->opcode
= CTDB_CONTROL_KILL_TCP
;
909 request
->client_id
= 0;
912 request
->rdata
.opcode
= CTDB_CONTROL_KILL_TCP
;
913 request
->rdata
.data
.conn
= conn
;
916 int ctdb_reply_control_kill_tcp(struct ctdb_reply_control
*reply
)
918 return ctdb_reply_control_generic(reply
);
921 /* CTDB_CONTROL_GET_TCP_TICKLE_LIST */
923 void ctdb_req_control_get_tcp_tickle_list(struct ctdb_req_control
*request
,
924 ctdb_sock_addr
*addr
)
926 request
->opcode
= CTDB_CONTROL_GET_TCP_TICKLE_LIST
;
929 request
->client_id
= 0;
932 request
->rdata
.opcode
= CTDB_CONTROL_GET_TCP_TICKLE_LIST
;
933 request
->rdata
.data
.addr
= addr
;
936 int ctdb_reply_control_get_tcp_tickle_list(struct ctdb_reply_control
*reply
,
938 struct ctdb_tickle_list
**tickles
)
940 if (reply
->status
== 0 &&
941 reply
->rdata
.opcode
== CTDB_CONTROL_GET_TCP_TICKLE_LIST
) {
942 *tickles
= talloc_steal(mem_ctx
, reply
->rdata
.data
.tickles
);
944 return reply
->status
;
947 /* CTDB_CONTROL_SET_TCP_TICKLE_LIST */
949 void ctdb_req_control_set_tcp_tickle_list(struct ctdb_req_control
*request
,
950 struct ctdb_tickle_list
*tickles
)
952 request
->opcode
= CTDB_CONTROL_SET_TCP_TICKLE_LIST
;
955 request
->client_id
= 0;
958 request
->rdata
.opcode
= CTDB_CONTROL_SET_TCP_TICKLE_LIST
;
959 request
->rdata
.data
.tickles
= tickles
;
962 int ctdb_reply_control_set_tcp_tickle_list(struct ctdb_reply_control
*reply
)
964 return ctdb_reply_control_generic(reply
);
967 /* CTDB_CONTROL_REGISTER_SERVER_ID */
969 void ctdb_req_control_register_server_id(struct ctdb_req_control
*request
,
970 struct ctdb_client_id
*cid
)
972 request
->opcode
= CTDB_CONTROL_REGISTER_SERVER_ID
;
975 request
->client_id
= 0;
978 request
->rdata
.opcode
= CTDB_CONTROL_REGISTER_SERVER_ID
;
979 request
->rdata
.data
.cid
= cid
;
982 int ctdb_reply_control_register_server_id(struct ctdb_reply_control
*reply
)
984 return ctdb_reply_control_generic(reply
);
987 /* CTDB_CONTROL_UNREGISTER_SERVER_ID */
989 void ctdb_req_control_unregister_server_id(struct ctdb_req_control
*request
,
990 struct ctdb_client_id
*cid
)
992 request
->opcode
= CTDB_CONTROL_UNREGISTER_SERVER_ID
;
995 request
->client_id
= 0;
998 request
->rdata
.opcode
= CTDB_CONTROL_UNREGISTER_SERVER_ID
;
999 request
->rdata
.data
.cid
= cid
;
1002 int ctdb_reply_control_unregister_server_id(struct ctdb_reply_control
*reply
)
1004 return ctdb_reply_control_generic(reply
);
1007 /* CTDB_CONTROL_CHECK_SERVER_ID */
1009 void ctdb_req_control_check_server_id(struct ctdb_req_control
*request
,
1010 struct ctdb_client_id
*cid
)
1012 request
->opcode
= CTDB_CONTROL_CHECK_SERVER_ID
;
1015 request
->client_id
= 0;
1018 request
->rdata
.opcode
= CTDB_CONTROL_CHECK_SERVER_ID
;
1019 request
->rdata
.data
.cid
= cid
;
1022 int ctdb_reply_control_check_server_id(struct ctdb_reply_control
*reply
)
1024 return reply
->status
;
1027 /* CTDB_CONTROL_GET_SERVER_ID_LIST */
1029 void ctdb_req_control_get_server_id_list(struct ctdb_req_control
*request
)
1031 request
->opcode
= CTDB_CONTROL_GET_SERVER_ID_LIST
;
1034 request
->client_id
= 0;
1037 request
->rdata
.opcode
= CTDB_CONTROL_GET_SERVER_ID_LIST
;
1040 int ctdb_reply_control_get_server_id_list(struct ctdb_reply_control
*reply
,
1041 TALLOC_CTX
*mem_ctx
,
1042 struct ctdb_client_id_map
**cid_map
)
1044 if (reply
->status
== 0 &&
1045 reply
->rdata
.opcode
== CTDB_CONTROL_GET_SERVER_ID_LIST
) {
1046 *cid_map
= talloc_steal(mem_ctx
, reply
->rdata
.data
.cid_map
);
1048 return reply
->status
;
1051 /* CTDB_CONTROL_DB_ATTACH_PERSISTENT */
1053 void ctdb_req_control_db_attach_persistent(struct ctdb_req_control
*request
,
1054 const char *db_name
,
1057 request
->opcode
= CTDB_CONTROL_DB_ATTACH_PERSISTENT
;
1059 request
->srvid
= tdb_flags
;
1060 request
->client_id
= 0;
1063 request
->rdata
.opcode
= CTDB_CONTROL_DB_ATTACH_PERSISTENT
;
1064 request
->rdata
.data
.db_name
= db_name
;
1067 int ctdb_reply_control_db_attach_persistent(struct ctdb_reply_control
*reply
,
1070 if (reply
->status
== 0 &&
1071 reply
->rdata
.opcode
== CTDB_CONTROL_DB_ATTACH_PERSISTENT
) {
1072 *db_id
= reply
->rdata
.data
.db_id
;
1074 return reply
->status
;
1077 /* CTDB_CONTROL_UPDATE_RECORD */
1079 void ctdb_req_control_update_record(struct ctdb_req_control
*request
,
1080 struct ctdb_rec_buffer
*recbuf
)
1082 request
->opcode
= CTDB_CONTROL_UPDATE_RECORD
;
1085 request
->client_id
= 0;
1088 request
->rdata
.opcode
= CTDB_CONTROL_UPDATE_RECORD
;
1089 request
->rdata
.data
.recbuf
= recbuf
;
1092 int ctdb_reply_control_update_record(struct ctdb_reply_control
*reply
)
1094 return ctdb_reply_control_generic(reply
);
1097 /* CTDB_CONTROL_SEND_GRATUITOUS_ARP */
1099 void ctdb_req_control_send_gratuitous_arp(struct ctdb_req_control
*request
,
1100 struct ctdb_addr_info
*addr_info
)
1102 request
->opcode
= CTDB_CONTROL_SEND_GRATUITOUS_ARP
;
1105 request
->client_id
= 0;
1108 request
->rdata
.opcode
= CTDB_CONTROL_SEND_GRATUITOUS_ARP
;
1109 request
->rdata
.data
.addr_info
= addr_info
;
1112 int ctdb_reply_control_send_gratuitous_arp(struct ctdb_reply_control
*reply
)
1114 return ctdb_reply_control_generic(reply
);
1117 /* CTDB_CONTROL_TRANSACTION_START */
1119 void ctdb_req_control_transaction_start(struct ctdb_req_control
*request
,
1122 request
->opcode
= CTDB_CONTROL_TRANSACTION_START
;
1125 request
->client_id
= 0;
1128 request
->rdata
.opcode
= CTDB_CONTROL_TRANSACTION_START
;
1129 request
->rdata
.data
.tid
= tid
;
1132 int ctdb_reply_control_transaction_start(struct ctdb_reply_control
*reply
)
1134 return ctdb_reply_control_generic(reply
);
1137 /* CTDB_CONTROL_TRANSACTION_COMMIT */
1139 void ctdb_req_control_transaction_commit(struct ctdb_req_control
*request
,
1142 request
->opcode
= CTDB_CONTROL_TRANSACTION_COMMIT
;
1145 request
->client_id
= 0;
1148 request
->rdata
.opcode
= CTDB_CONTROL_TRANSACTION_COMMIT
;
1149 request
->rdata
.data
.tid
= tid
;
1152 int ctdb_reply_control_transaction_commit(struct ctdb_reply_control
*reply
)
1154 return ctdb_reply_control_generic(reply
);
1157 /* CTDB_CONTROL_WIPE_DATABASE */
1159 void ctdb_req_control_wipe_database(struct ctdb_req_control
*request
,
1160 struct ctdb_transdb
*transdb
)
1162 request
->opcode
= CTDB_CONTROL_WIPE_DATABASE
;
1165 request
->client_id
= 0;
1168 request
->rdata
.opcode
= CTDB_CONTROL_WIPE_DATABASE
;
1169 request
->rdata
.data
.transdb
= transdb
;
1172 int ctdb_reply_control_wipe_database(struct ctdb_reply_control
*reply
)
1174 return ctdb_reply_control_generic(reply
);
1177 /* CTDB_CONTROL_UPTIME */
1179 void ctdb_req_control_uptime(struct ctdb_req_control
*request
)
1181 request
->opcode
= CTDB_CONTROL_UPTIME
;
1184 request
->client_id
= 0;
1187 request
->rdata
.opcode
= CTDB_CONTROL_UPTIME
;
1190 int ctdb_reply_control_uptime(struct ctdb_reply_control
*reply
,
1191 TALLOC_CTX
*mem_ctx
, struct ctdb_uptime
**uptime
)
1193 if (reply
->status
== 0 &&
1194 reply
->rdata
.opcode
== CTDB_CONTROL_UPTIME
) {
1195 *uptime
= talloc_steal(mem_ctx
, reply
->rdata
.data
.uptime
);
1197 return reply
->status
;
1200 /* CTDB_CONTROL_START_RECOVERY */
1202 void ctdb_req_control_start_recovery(struct ctdb_req_control
*request
)
1204 request
->opcode
= CTDB_CONTROL_START_RECOVERY
;
1207 request
->client_id
= 0;
1210 request
->rdata
.opcode
= CTDB_CONTROL_START_RECOVERY
;
1213 int ctdb_reply_control_start_recovery(struct ctdb_reply_control
*reply
)
1215 return ctdb_reply_control_generic(reply
);
1218 /* CTDB_CONTROL_END_RECOVERY */
1220 void ctdb_req_control_end_recovery(struct ctdb_req_control
*request
)
1222 request
->opcode
= CTDB_CONTROL_END_RECOVERY
;
1225 request
->client_id
= 0;
1228 request
->rdata
.opcode
= CTDB_CONTROL_END_RECOVERY
;
1231 int ctdb_reply_control_end_recovery(struct ctdb_reply_control
*reply
)
1233 return ctdb_reply_control_generic(reply
);
1236 /* CTDB_CONTROL_RELOAD_NODES_FILE */
1238 void ctdb_req_control_reload_nodes_file(struct ctdb_req_control
*request
)
1240 request
->opcode
= CTDB_CONTROL_RELOAD_NODES_FILE
;
1243 request
->client_id
= 0;
1246 request
->rdata
.opcode
= CTDB_CONTROL_RELOAD_NODES_FILE
;
1249 int ctdb_reply_control_reload_nodes_file(struct ctdb_reply_control
*reply
)
1251 return ctdb_reply_control_generic(reply
);
1254 /* CTDB_CONTROL_TRY_DELETE_RECORDS */
1256 void ctdb_req_control_try_delete_records(struct ctdb_req_control
*request
,
1257 struct ctdb_rec_buffer
*recbuf
)
1259 request
->opcode
= CTDB_CONTROL_TRY_DELETE_RECORDS
;
1262 request
->client_id
= 0;
1265 request
->rdata
.opcode
= CTDB_CONTROL_TRY_DELETE_RECORDS
;
1266 request
->rdata
.data
.recbuf
= recbuf
;
1269 int ctdb_reply_control_try_delete_records(struct ctdb_reply_control
*reply
,
1270 TALLOC_CTX
*mem_ctx
,
1271 struct ctdb_rec_buffer
**recbuf
)
1273 if (reply
->status
== 0 &&
1274 reply
->rdata
.opcode
== CTDB_CONTROL_TRY_DELETE_RECORDS
) {
1275 *recbuf
= talloc_steal(mem_ctx
, reply
->rdata
.data
.recbuf
);
1277 return reply
->status
;
1280 /* CTDB_CONTROL_ENABLE_MONITOR */
1282 void ctdb_req_control_enable_monitor(struct ctdb_req_control
*request
)
1284 request
->opcode
= CTDB_CONTROL_ENABLE_MONITOR
;
1287 request
->client_id
= 0;
1290 request
->rdata
.opcode
= CTDB_CONTROL_ENABLE_MONITOR
;
1293 int ctdb_reply_control_enable_monitor(struct ctdb_reply_control
*reply
)
1295 return ctdb_reply_control_generic(reply
);
1298 /* CTDB_CONTROL_DISABLE_MONITOR */
1300 void ctdb_req_control_disable_monitor(struct ctdb_req_control
*request
)
1302 request
->opcode
= CTDB_CONTROL_DISABLE_MONITOR
;
1305 request
->client_id
= 0;
1308 request
->rdata
.opcode
= CTDB_CONTROL_DISABLE_MONITOR
;
1311 int ctdb_reply_control_disable_monitor(struct ctdb_reply_control
*reply
)
1313 return ctdb_reply_control_generic(reply
);
1316 /* CTDB_CONTROL_ADD_PUBLIC_IP */
1318 void ctdb_req_control_add_public_ip(struct ctdb_req_control
*request
,
1319 struct ctdb_addr_info
*addr_info
)
1321 request
->opcode
= CTDB_CONTROL_ADD_PUBLIC_IP
;
1324 request
->client_id
= 0;
1327 request
->rdata
.opcode
= CTDB_CONTROL_ADD_PUBLIC_IP
;
1328 request
->rdata
.data
.addr_info
= addr_info
;
1331 int ctdb_reply_control_add_public_ip(struct ctdb_reply_control
*reply
)
1333 return ctdb_reply_control_generic(reply
);
1336 /* CTDB_CONTROL_DEL_PUBLIC_IP */
1338 void ctdb_req_control_del_public_ip(struct ctdb_req_control
*request
,
1339 struct ctdb_addr_info
*addr_info
)
1341 request
->opcode
= CTDB_CONTROL_DEL_PUBLIC_IP
;
1344 request
->client_id
= 0;
1347 request
->rdata
.opcode
= CTDB_CONTROL_DEL_PUBLIC_IP
;
1348 request
->rdata
.data
.addr_info
= addr_info
;
1351 int ctdb_reply_control_del_public_ip(struct ctdb_reply_control
*reply
)
1353 return ctdb_reply_control_generic(reply
);
1356 /* CTDB_CONTROL_RUN_EVENTSCRIPTS */
1358 void ctdb_req_control_run_eventscripts(struct ctdb_req_control
*request
,
1359 const char *event_str
)
1361 request
->opcode
= CTDB_CONTROL_RUN_EVENTSCRIPTS
;
1364 request
->client_id
= 0;
1367 request
->rdata
.opcode
= CTDB_CONTROL_RUN_EVENTSCRIPTS
;
1368 request
->rdata
.data
.event_str
= event_str
;
1371 int ctdb_reply_control_run_eventscripts(struct ctdb_reply_control
*reply
)
1373 return ctdb_reply_control_generic(reply
);
1376 /* CTDB_CONTROL_GET_CAPABILITIES */
1378 void ctdb_req_control_get_capabilities(struct ctdb_req_control
*request
)
1380 request
->opcode
= CTDB_CONTROL_GET_CAPABILITIES
;
1383 request
->client_id
= 0;
1386 request
->rdata
.opcode
= CTDB_CONTROL_GET_CAPABILITIES
;
1389 int ctdb_reply_control_get_capabilities(struct ctdb_reply_control
*reply
,
1392 if (reply
->status
== 0 &&
1393 reply
->rdata
.opcode
== CTDB_CONTROL_GET_CAPABILITIES
) {
1394 *caps
= reply
->rdata
.data
.caps
;
1396 return reply
->status
;
1399 /* CTDB_CONTROL_RECD_PING */
1401 void ctdb_req_control_recd_ping(struct ctdb_req_control
*request
)
1403 request
->opcode
= CTDB_CONTROL_RECD_PING
;
1406 request
->client_id
= 0;
1409 request
->rdata
.opcode
= CTDB_CONTROL_RECD_PING
;
1412 int ctdb_reply_control_recd_ping(struct ctdb_reply_control
*reply
)
1414 return ctdb_reply_control_generic(reply
);
1417 /* CTDB_CONTROL_RELEASE_IP */
1419 void ctdb_req_control_release_ip(struct ctdb_req_control
*request
,
1420 struct ctdb_public_ip
*pubip
)
1422 request
->opcode
= CTDB_CONTROL_RELEASE_IP
;
1425 request
->client_id
= 0;
1428 request
->rdata
.opcode
= CTDB_CONTROL_RELEASE_IP
;
1429 request
->rdata
.data
.pubip
= pubip
;
1432 int ctdb_reply_control_release_ip(struct ctdb_reply_control
*reply
)
1434 return ctdb_reply_control_generic(reply
);
1437 /* CTDB_CONTROL_TAKEOVER_IP */
1439 void ctdb_req_control_takeover_ip(struct ctdb_req_control
*request
,
1440 struct ctdb_public_ip
*pubip
)
1442 request
->opcode
= CTDB_CONTROL_TAKEOVER_IP
;
1445 request
->client_id
= 0;
1448 request
->rdata
.opcode
= CTDB_CONTROL_TAKEOVER_IP
;
1449 request
->rdata
.data
.pubip
= pubip
;
1452 int ctdb_reply_control_takeover_ip(struct ctdb_reply_control
*reply
)
1454 return ctdb_reply_control_generic(reply
);
1457 /* CTDB_CONTROL_GET_PUBLIC_IPS */
1459 void ctdb_req_control_get_public_ips(struct ctdb_req_control
*request
)
1461 request
->opcode
= CTDB_CONTROL_GET_PUBLIC_IPS
;
1464 request
->client_id
= 0;
1467 request
->rdata
.opcode
= CTDB_CONTROL_GET_PUBLIC_IPS
;
1470 int ctdb_reply_control_get_public_ips(struct ctdb_reply_control
*reply
,
1471 TALLOC_CTX
*mem_ctx
,
1472 struct ctdb_public_ip_list
**pubip_list
)
1474 if (reply
->status
== 0 &&
1475 reply
->rdata
.opcode
== CTDB_CONTROL_GET_PUBLIC_IPS
) {
1476 *pubip_list
= talloc_steal(mem_ctx
, reply
->rdata
.data
.pubip_list
);
1478 return reply
->status
;
1481 /* CTDB_CONTROL_GET_NODEMAP */
1483 void ctdb_req_control_get_nodemap(struct ctdb_req_control
*request
)
1485 request
->opcode
= CTDB_CONTROL_GET_NODEMAP
;
1488 request
->client_id
= 0;
1491 request
->rdata
.opcode
= CTDB_CONTROL_GET_NODEMAP
;
1494 int ctdb_reply_control_get_nodemap(struct ctdb_reply_control
*reply
,
1495 TALLOC_CTX
*mem_ctx
,
1496 struct ctdb_node_map
**nodemap
)
1498 if (reply
->status
== 0 &&
1499 reply
->rdata
.opcode
== CTDB_CONTROL_GET_NODEMAP
) {
1500 *nodemap
= talloc_steal(mem_ctx
, reply
->rdata
.data
.nodemap
);
1502 return reply
->status
;
1505 /* CTDB_CONTROL_GET_EVENT_SCRIPT_STATUS */
1507 void ctdb_req_control_get_event_script_status(struct ctdb_req_control
*request
,
1510 request
->opcode
= CTDB_CONTROL_GET_EVENT_SCRIPT_STATUS
;
1513 request
->client_id
= 0;
1516 request
->rdata
.opcode
= CTDB_CONTROL_GET_EVENT_SCRIPT_STATUS
;
1517 request
->rdata
.data
.event
= event
;
1520 int ctdb_reply_control_get_event_script_status(struct ctdb_reply_control
*reply
,
1521 TALLOC_CTX
*mem_ctx
,
1522 struct ctdb_script_list
**slist
)
1524 if (reply
->status
== 0 &&
1525 reply
->rdata
.opcode
== CTDB_CONTROL_GET_EVENT_SCRIPT_STATUS
) {
1526 *slist
= talloc_steal(mem_ctx
, reply
->rdata
.data
.script_list
);
1528 return reply
->status
;
1531 /* CTDB_CONTROL_TRAVERSE_KILL */
1533 void ctdb_req_control_traverse_kill(struct ctdb_req_control
*request
,
1534 struct ctdb_traverse_start
*traverse
)
1536 request
->opcode
= CTDB_CONTROL_TRAVERSE_KILL
;
1539 request
->client_id
= 0;
1542 request
->rdata
.opcode
= CTDB_CONTROL_TRAVERSE_KILL
;
1543 request
->rdata
.data
.traverse_start
= traverse
;
1546 int ctdb_reply_control_traverse_kill(struct ctdb_reply_control
*reply
)
1548 return ctdb_reply_control_generic(reply
);
1551 /* CTDB_CONTROL_RECD_RECLOCK_LATENCY */
1553 void ctdb_req_control_recd_reclock_latency(struct ctdb_req_control
*request
,
1554 double reclock_latency
)
1556 request
->opcode
= CTDB_CONTROL_RECD_RECLOCK_LATENCY
;
1559 request
->client_id
= 0;
1562 request
->rdata
.opcode
= CTDB_CONTROL_RECD_RECLOCK_LATENCY
;
1563 request
->rdata
.data
.reclock_latency
= reclock_latency
;
1566 int ctdb_reply_control_recd_reclock_latency(struct ctdb_reply_control
*reply
)
1568 return ctdb_reply_control_generic(reply
);
1571 /* CTDB_CONTROL_GET_RECLOCK_FILE */
1573 void ctdb_req_control_get_reclock_file(struct ctdb_req_control
*request
)
1575 request
->opcode
= CTDB_CONTROL_GET_RECLOCK_FILE
;
1578 request
->client_id
= 0;
1581 request
->rdata
.opcode
= CTDB_CONTROL_GET_RECLOCK_FILE
;
1584 int ctdb_reply_control_get_reclock_file(struct ctdb_reply_control
*reply
,
1585 TALLOC_CTX
*mem_ctx
,
1586 const char **reclock_file
)
1588 if (reply
->status
== 0 &&
1589 reply
->rdata
.opcode
== CTDB_CONTROL_GET_RECLOCK_FILE
) {
1590 *reclock_file
= talloc_steal(mem_ctx
,
1591 reply
->rdata
.data
.reclock_file
);
1593 return reply
->status
;
1596 /* CTDB_CONTROL_SET_RECLOCK_FILE */
1598 void ctdb_req_control_set_reclock_file(struct ctdb_req_control
*request
,
1599 const char *reclock_file
)
1601 request
->opcode
= CTDB_CONTROL_SET_RECLOCK_FILE
;
1604 request
->client_id
= 0;
1607 request
->rdata
.opcode
= CTDB_CONTROL_SET_RECLOCK_FILE
;
1608 request
->rdata
.data
.reclock_file
= reclock_file
;
1611 int ctdb_reply_control_set_reclock_file(struct ctdb_reply_control
*reply
)
1613 return ctdb_reply_control_generic(reply
);
1617 /* CTDB_CONTROL_STOP_NODE */
1619 void ctdb_req_control_stop_node(struct ctdb_req_control
*request
)
1621 request
->opcode
= CTDB_CONTROL_STOP_NODE
;
1624 request
->client_id
= 0;
1627 request
->rdata
.opcode
= CTDB_CONTROL_STOP_NODE
;
1630 int ctdb_reply_control_stop_node(struct ctdb_reply_control
*reply
)
1632 return ctdb_reply_control_generic(reply
);
1635 /* CTDB_CONTROL_CONTINUE_NODE */
1637 void ctdb_req_control_continue_node(struct ctdb_req_control
*request
)
1639 request
->opcode
= CTDB_CONTROL_CONTINUE_NODE
;
1642 request
->client_id
= 0;
1645 request
->rdata
.opcode
= CTDB_CONTROL_CONTINUE_NODE
;
1648 int ctdb_reply_control_continue_node(struct ctdb_reply_control
*reply
)
1650 return ctdb_reply_control_generic(reply
);
1653 /* CTDB_CONTROL_SET_NATGWSTATE */
1655 void ctdb_req_control_set_natgwstate(struct ctdb_req_control
*request
,
1656 uint32_t natgw_role
)
1658 request
->opcode
= CTDB_CONTROL_SET_NATGWSTATE
;
1661 request
->client_id
= 0;
1664 request
->rdata
.opcode
= CTDB_CONTROL_SET_NATGWSTATE
;
1665 request
->rdata
.data
.role
= natgw_role
;
1668 int ctdb_reply_control_set_natgwstate(struct ctdb_reply_control
*reply
)
1670 return ctdb_reply_control_generic(reply
);
1673 /* CTDB_CONTROL_SET_LMASTERROLE */
1675 void ctdb_req_control_set_lmasterrole(struct ctdb_req_control
*request
,
1676 uint32_t lmaster_role
)
1678 request
->opcode
= CTDB_CONTROL_SET_LMASTERROLE
;
1681 request
->client_id
= 0;
1684 request
->rdata
.opcode
= CTDB_CONTROL_SET_LMASTERROLE
;
1685 request
->rdata
.data
.role
= lmaster_role
;
1688 int ctdb_reply_control_set_lmasterrole(struct ctdb_reply_control
*reply
)
1690 return ctdb_reply_control_generic(reply
);
1693 /* CTDB_CONTROL_SET_RECMASTERROLE */
1695 void ctdb_req_control_set_recmasterrole(struct ctdb_req_control
*request
,
1696 uint32_t recmaster_role
)
1698 request
->opcode
= CTDB_CONTROL_SET_RECMASTERROLE
;
1701 request
->client_id
= 0;
1704 request
->rdata
.opcode
= CTDB_CONTROL_SET_RECMASTERROLE
;
1705 request
->rdata
.data
.role
= recmaster_role
;
1708 int ctdb_reply_control_set_recmasterrole(struct ctdb_reply_control
*reply
)
1710 return ctdb_reply_control_generic(reply
);
1713 /* CTDB_CONTROL_ENABLE_SCRIPT */
1715 void ctdb_req_control_enable_script(struct ctdb_req_control
*request
,
1718 request
->opcode
= CTDB_CONTROL_ENABLE_SCRIPT
;
1721 request
->client_id
= 0;
1724 request
->rdata
.opcode
= CTDB_CONTROL_ENABLE_SCRIPT
;
1725 request
->rdata
.data
.script
= script
;
1728 int ctdb_reply_control_enable_script(struct ctdb_reply_control
*reply
)
1730 return ctdb_reply_control_generic(reply
);
1733 /* CTDB_CONTROL_DISABLE_SCRIPT */
1735 void ctdb_req_control_disable_script(struct ctdb_req_control
*request
,
1738 request
->opcode
= CTDB_CONTROL_DISABLE_SCRIPT
;
1741 request
->client_id
= 0;
1744 request
->rdata
.opcode
= CTDB_CONTROL_DISABLE_SCRIPT
;
1745 request
->rdata
.data
.script
= script
;
1748 int ctdb_reply_control_disable_script(struct ctdb_reply_control
*reply
)
1750 return ctdb_reply_control_generic(reply
);
1753 /* CTDB_CONTROL_SET_BAN_STATE */
1755 void ctdb_req_control_set_ban_state(struct ctdb_req_control
*request
,
1756 struct ctdb_ban_state
*ban_state
)
1758 request
->opcode
= CTDB_CONTROL_SET_BAN_STATE
;
1761 request
->client_id
= 0;
1764 request
->rdata
.opcode
= CTDB_CONTROL_SET_BAN_STATE
;
1765 request
->rdata
.data
.ban_state
= ban_state
;
1768 int ctdb_reply_control_set_ban_state(struct ctdb_reply_control
*reply
)
1770 return ctdb_reply_control_generic(reply
);
1773 /* CTDB_CONTROL_GET_BAN_STATE */
1775 void ctdb_req_control_get_ban_state(struct ctdb_req_control
*request
)
1777 request
->opcode
= CTDB_CONTROL_GET_BAN_STATE
;
1780 request
->client_id
= 0;
1783 request
->rdata
.opcode
= CTDB_CONTROL_GET_BAN_STATE
;
1786 int ctdb_reply_control_get_ban_state(struct ctdb_reply_control
*reply
,
1787 TALLOC_CTX
*mem_ctx
,
1788 struct ctdb_ban_state
**ban_state
)
1790 if (reply
->status
== 0 &&
1791 reply
->rdata
.opcode
== CTDB_CONTROL_GET_BAN_STATE
) {
1792 *ban_state
= talloc_steal(mem_ctx
,
1793 reply
->rdata
.data
.ban_state
);
1795 return reply
->status
;
1798 /* CTDB_CONTROL_SET_DB_PRIORITY */
1800 void ctdb_req_control_set_db_priority(struct ctdb_req_control
*request
,
1801 struct ctdb_db_priority
*db_prio
)
1803 request
->opcode
= CTDB_CONTROL_SET_DB_PRIORITY
;
1806 request
->client_id
= 0;
1809 request
->rdata
.opcode
= CTDB_CONTROL_SET_DB_PRIORITY
;
1810 request
->rdata
.data
.db_prio
= db_prio
;
1813 int ctdb_reply_control_set_db_priority(struct ctdb_reply_control
*reply
)
1815 return ctdb_reply_control_generic(reply
);
1818 /* CTDB_CONTROL_GET_DB_PRIORITY */
1820 void ctdb_req_control_get_db_priority(struct ctdb_req_control
*request
,
1823 request
->opcode
= CTDB_CONTROL_GET_DB_PRIORITY
;
1826 request
->client_id
= 0;
1829 request
->rdata
.opcode
= CTDB_CONTROL_GET_DB_PRIORITY
;
1830 request
->rdata
.data
.db_id
= db_id
;
1833 int ctdb_reply_control_get_db_priority(struct ctdb_reply_control
*reply
,
1836 if (reply
->rdata
.opcode
== CTDB_CONTROL_GET_DB_PRIORITY
) {
1837 *priority
= reply
->status
;
1840 return reply
->status
;
1843 /* CTDB_CONTROL_TRANSACTION_CANCEL */
1845 void ctdb_req_control_transaction_cancel(struct ctdb_req_control
*request
,
1848 request
->opcode
= CTDB_CONTROL_TRANSACTION_CANCEL
;
1851 request
->client_id
= 0;
1854 request
->rdata
.opcode
= CTDB_CONTROL_TRANSACTION_CANCEL
;
1855 request
->rdata
.data
.tid
= tid
;
1858 int ctdb_reply_control_transaction_cancel(struct ctdb_reply_control
*reply
)
1860 return ctdb_reply_control_generic(reply
);
1863 /* CTDB_CONTROL_REGISTER_NOTIFY */
1865 void ctdb_req_control_register_notify(struct ctdb_req_control
*request
,
1866 struct ctdb_notify_data
*notify
)
1868 request
->opcode
= CTDB_CONTROL_REGISTER_NOTIFY
;
1871 request
->client_id
= 0;
1874 request
->rdata
.opcode
= CTDB_CONTROL_REGISTER_NOTIFY
;
1875 request
->rdata
.data
.notify
= notify
;
1878 int ctdb_reply_control_register_notify(struct ctdb_reply_control
*reply
)
1880 return ctdb_reply_control_generic(reply
);
1883 /* CTDB_CONTROL_DEREGISTER_NOTIFY */
1885 void ctdb_req_control_deregister_notify(struct ctdb_req_control
*request
,
1888 request
->opcode
= CTDB_CONTROL_DEREGISTER_NOTIFY
;
1891 request
->client_id
= 0;
1894 request
->rdata
.opcode
= CTDB_CONTROL_DEREGISTER_NOTIFY
;
1895 request
->rdata
.data
.srvid
= srvid
;
1898 int ctdb_reply_control_deregister_notify(struct ctdb_reply_control
*reply
)
1900 return ctdb_reply_control_generic(reply
);
1903 /* CTDB_CONTROL_TRANS3_COMMIT */
1905 void ctdb_req_control_trans3_commit(struct ctdb_req_control
*request
,
1906 struct ctdb_rec_buffer
*recbuf
)
1908 request
->opcode
= CTDB_CONTROL_TRANS3_COMMIT
;
1911 request
->client_id
= 0;
1914 request
->rdata
.opcode
= CTDB_CONTROL_TRANS3_COMMIT
;
1915 request
->rdata
.data
.recbuf
= recbuf
;
1918 int ctdb_reply_control_trans3_commit(struct ctdb_reply_control
*reply
)
1920 return ctdb_reply_control_generic(reply
);
1923 /* CTDB_CONTROL_GET_DB_SEQNUM */
1925 void ctdb_req_control_get_db_seqnum(struct ctdb_req_control
*request
,
1928 request
->opcode
= CTDB_CONTROL_GET_DB_SEQNUM
;
1931 request
->client_id
= 0;
1934 request
->rdata
.opcode
= CTDB_CONTROL_GET_DB_SEQNUM
;
1935 request
->rdata
.data
.db_id
= db_id
;
1938 int ctdb_reply_control_get_db_seqnum(struct ctdb_reply_control
*reply
,
1941 if (reply
->status
== 0 &&
1942 reply
->rdata
.opcode
== CTDB_CONTROL_GET_DB_SEQNUM
) {
1943 *seqnum
= reply
->rdata
.data
.seqnum
;
1945 return reply
->status
;
1948 /* CTDB_CONTROL_DB_SET_HEALTHY */
1950 void ctdb_req_control_db_set_healthy(struct ctdb_req_control
*request
,
1953 request
->opcode
= CTDB_CONTROL_DB_SET_HEALTHY
;
1956 request
->client_id
= 0;
1959 request
->rdata
.opcode
= CTDB_CONTROL_DB_SET_HEALTHY
;
1960 request
->rdata
.data
.db_id
= db_id
;
1963 int ctdb_reply_control_db_set_healthy(struct ctdb_reply_control
*reply
)
1965 return ctdb_reply_control_generic(reply
);
1968 /* CTDB_CONTROL_DB_GET_HEALTH */
1970 void ctdb_req_control_db_get_health(struct ctdb_req_control
*request
,
1973 request
->opcode
= CTDB_CONTROL_DB_GET_HEALTH
;
1976 request
->client_id
= 0;
1979 request
->rdata
.opcode
= CTDB_CONTROL_DB_GET_HEALTH
;
1980 request
->rdata
.data
.db_id
= db_id
;
1983 int ctdb_reply_control_db_get_health(struct ctdb_reply_control
*reply
,
1984 TALLOC_CTX
*mem_ctx
, const char **reason
)
1986 if (reply
->status
== 0 &&
1987 reply
->rdata
.opcode
== CTDB_CONTROL_DB_GET_HEALTH
) {
1988 *reason
= talloc_steal(mem_ctx
, reply
->rdata
.data
.reason
);
1990 return reply
->status
;
1993 /* CTDB_CONTROL_GET_PUBLIC_IP_INFO */
1995 void ctdb_req_control_get_public_ip_info(struct ctdb_req_control
*request
,
1996 ctdb_sock_addr
*addr
)
1998 request
->opcode
= CTDB_CONTROL_GET_PUBLIC_IP_INFO
;
2001 request
->client_id
= 0;
2004 request
->rdata
.opcode
= CTDB_CONTROL_GET_PUBLIC_IP_INFO
;
2005 request
->rdata
.data
.addr
= addr
;
2008 int ctdb_reply_control_get_public_ip_info(struct ctdb_reply_control
*reply
,
2009 TALLOC_CTX
*mem_ctx
,
2010 struct ctdb_public_ip_info
**ipinfo
)
2012 if (reply
->status
== 0 &&
2013 reply
->rdata
.opcode
== CTDB_CONTROL_GET_PUBLIC_IP_INFO
) {
2014 *ipinfo
= talloc_steal(mem_ctx
, reply
->rdata
.data
.ipinfo
);
2016 return reply
->status
;
2019 /* CTDB_CONTROL_GET_IFACES */
2021 void ctdb_req_control_get_ifaces(struct ctdb_req_control
*request
)
2023 request
->opcode
= CTDB_CONTROL_GET_IFACES
;
2026 request
->client_id
= 0;
2029 request
->rdata
.opcode
= CTDB_CONTROL_GET_IFACES
;
2032 int ctdb_reply_control_get_ifaces(struct ctdb_reply_control
*reply
,
2033 TALLOC_CTX
*mem_ctx
,
2034 struct ctdb_iface_list
**iface_list
)
2036 if (reply
->status
== 0 &&
2037 reply
->rdata
.opcode
== CTDB_CONTROL_GET_IFACES
) {
2038 *iface_list
= talloc_steal(mem_ctx
,
2039 reply
->rdata
.data
.iface_list
);
2041 return reply
->status
;
2044 /* CTDB_CONTROL_SET_IFACE_LINK_STATE */
2046 void ctdb_req_control_set_iface_link_state(struct ctdb_req_control
*request
,
2047 struct ctdb_iface
*iface
)
2049 request
->opcode
= CTDB_CONTROL_SET_IFACE_LINK_STATE
;
2052 request
->client_id
= 0;
2055 request
->rdata
.opcode
= CTDB_CONTROL_SET_IFACE_LINK_STATE
;
2056 request
->rdata
.data
.iface
= iface
;
2059 int ctdb_reply_control_set_iface_link_state(struct ctdb_reply_control
*reply
)
2061 return ctdb_reply_control_generic(reply
);
2064 /* CTDB_CONTROL_TCP_ADD_DELAYED_UPDATE */
2066 void ctdb_req_control_tcp_add_delayed_update(struct ctdb_req_control
*request
,
2067 struct ctdb_connection
*conn
)
2069 request
->opcode
= CTDB_CONTROL_TCP_ADD_DELAYED_UPDATE
;
2072 request
->client_id
= 0;
2075 request
->rdata
.opcode
= CTDB_CONTROL_TCP_ADD_DELAYED_UPDATE
;
2076 request
->rdata
.data
.conn
= conn
;
2079 int ctdb_reply_control_tcp_add_delayed_update(struct ctdb_reply_control
*reply
)
2081 return ctdb_reply_control_generic(reply
);
2084 /* CTDB_CONTROL_GET_STAT_HISTORY */
2086 void ctdb_req_control_get_stat_history(struct ctdb_req_control
*request
)
2088 request
->opcode
= CTDB_CONTROL_GET_STAT_HISTORY
;
2091 request
->client_id
= 0;
2094 request
->rdata
.opcode
= CTDB_CONTROL_GET_STAT_HISTORY
;
2097 int ctdb_reply_control_get_stat_history(struct ctdb_reply_control
*reply
,
2098 TALLOC_CTX
*mem_ctx
,
2099 struct ctdb_statistics_list
**stats_list
)
2101 if (reply
->status
== 0 &&
2102 reply
->rdata
.opcode
== CTDB_CONTROL_GET_STAT_HISTORY
) {
2103 *stats_list
= talloc_steal(mem_ctx
,
2104 reply
->rdata
.data
.stats_list
);
2106 return reply
->status
;
2109 /* CTDB_CONTROL_SCHEDULE_FOR_DELETION */
2111 void ctdb_req_control_schedule_for_deletion(struct ctdb_req_control
*request
,
2112 struct ctdb_key_data
*key
)
2114 request
->opcode
= CTDB_CONTROL_SCHEDULE_FOR_DELETION
;
2117 request
->client_id
= 0;
2120 request
->rdata
.opcode
= CTDB_CONTROL_SCHEDULE_FOR_DELETION
;
2121 request
->rdata
.data
.key
= key
;
2124 int ctdb_reply_control_schedule_for_deletion(struct ctdb_reply_control
*reply
)
2126 return ctdb_reply_control_generic(reply
);
2129 /* CTDB_CONTROL_SET_DB_READONLY */
2131 void ctdb_req_control_set_db_readonly(struct ctdb_req_control
*request
,
2134 request
->opcode
= CTDB_CONTROL_SET_DB_READONLY
;
2137 request
->client_id
= 0;
2140 request
->rdata
.opcode
= CTDB_CONTROL_SET_DB_READONLY
;
2141 request
->rdata
.data
.db_id
= db_id
;
2144 int ctdb_reply_control_set_db_readonly(struct ctdb_reply_control
*reply
)
2146 return ctdb_reply_control_generic(reply
);
2149 /* CTDB_CONTROL_CHECK_SRVIDS */
2151 void ctdb_req_control_check_srvids(struct ctdb_req_control
*request
,
2152 struct ctdb_uint64_array
*u64_array
)
2154 request
->opcode
= CTDB_CONTROL_CHECK_SRVIDS
;
2157 request
->client_id
= 0;
2160 request
->rdata
.opcode
= CTDB_CONTROL_CHECK_SRVIDS
;
2161 request
->rdata
.data
.u64_array
= u64_array
;
2164 int ctdb_reply_control_check_srvids(struct ctdb_reply_control
*reply
,
2165 TALLOC_CTX
*mem_ctx
,
2166 struct ctdb_uint8_array
**u8_array
)
2168 if (reply
->status
== 0 &&
2169 reply
->rdata
.opcode
== CTDB_CONTROL_CHECK_SRVIDS
) {
2170 *u8_array
= talloc_steal(mem_ctx
, reply
->rdata
.data
.u8_array
);
2172 return reply
->status
;
2175 /* CTDB_CONTROL_TRAVERSE_START_EXT */
2177 void ctdb_req_control_traverse_start_ext(struct ctdb_req_control
*request
,
2178 struct ctdb_traverse_start_ext
*traverse
)
2180 request
->opcode
= CTDB_CONTROL_TRAVERSE_START_EXT
;
2183 request
->client_id
= 0;
2186 request
->rdata
.opcode
= CTDB_CONTROL_TRAVERSE_START_EXT
;
2187 request
->rdata
.data
.traverse_start_ext
= traverse
;
2190 int ctdb_reply_control_traverse_start_ext(struct ctdb_reply_control
*reply
)
2192 return ctdb_reply_control_generic(reply
);
2195 /* CTDB_CONTROL_GET_DB_STATISTICS */
2197 void ctdb_req_control_get_db_statistics(struct ctdb_req_control
*request
,
2200 request
->opcode
= CTDB_CONTROL_GET_DB_STATISTICS
;
2203 request
->client_id
= 0;
2206 request
->rdata
.opcode
= CTDB_CONTROL_GET_DB_STATISTICS
;
2207 request
->rdata
.data
.db_id
= db_id
;
2210 int ctdb_reply_control_get_db_statistics(struct ctdb_reply_control
*reply
,
2211 TALLOC_CTX
*mem_ctx
,
2212 struct ctdb_db_statistics
**dbstats
)
2214 if (reply
->status
== 0 &&
2215 reply
->rdata
.opcode
== CTDB_CONTROL_GET_DB_STATISTICS
) {
2216 *dbstats
= talloc_steal(mem_ctx
, reply
->rdata
.data
.dbstats
);
2218 return reply
->status
;
2221 /* CTDB_CONTROL_SET_DB_STICKY */
2223 void ctdb_req_control_set_db_sticky(struct ctdb_req_control
*request
,
2226 request
->opcode
= CTDB_CONTROL_SET_DB_STICKY
;
2229 request
->client_id
= 0;
2232 request
->rdata
.opcode
= CTDB_CONTROL_SET_DB_STICKY
;
2233 request
->rdata
.data
.db_id
= db_id
;
2236 int ctdb_reply_control_set_db_sticky(struct ctdb_reply_control
*reply
)
2238 return ctdb_reply_control_generic(reply
);
2241 /* CTDB_CONTROL_RELOAD_PUBLIC_IPS */
2243 void ctdb_req_control_reload_public_ips(struct ctdb_req_control
*request
)
2245 request
->opcode
= CTDB_CONTROL_RELOAD_PUBLIC_IPS
;
2248 request
->client_id
= 0;
2251 request
->rdata
.opcode
= CTDB_CONTROL_RELOAD_PUBLIC_IPS
;
2254 int ctdb_reply_control_reload_public_ips(struct ctdb_reply_control
*reply
)
2256 return ctdb_reply_control_generic(reply
);
2259 /* CTDB_CONTROL_TRAVERSE_ALL_EXT */
2261 /* CTDB_CONTROL_RECEIVE_RECORDS */
2263 void ctdb_req_control_receive_records(struct ctdb_req_control
*request
,
2264 struct ctdb_rec_buffer
*recbuf
)
2266 request
->opcode
= CTDB_CONTROL_RECEIVE_RECORDS
;
2269 request
->client_id
= 0;
2272 request
->rdata
.opcode
= CTDB_CONTROL_RECEIVE_RECORDS
;
2273 request
->rdata
.data
.recbuf
= recbuf
;
2276 int ctdb_reply_control_receive_records(struct ctdb_reply_control
*reply
,
2277 TALLOC_CTX
*mem_ctx
,
2278 struct ctdb_rec_buffer
**recbuf
)
2280 if (reply
->status
== 0 &&
2281 reply
->rdata
.opcode
== CTDB_CONTROL_RECEIVE_RECORDS
) {
2282 *recbuf
= talloc_steal(mem_ctx
, reply
->rdata
.data
.recbuf
);
2284 return reply
->status
;
2287 /* CTDB_CONTROL_IPREALLOCATED */
2289 void ctdb_req_control_ipreallocated(struct ctdb_req_control
*request
)
2291 request
->opcode
= CTDB_CONTROL_IPREALLOCATED
;
2294 request
->client_id
= 0;
2297 request
->rdata
.opcode
= CTDB_CONTROL_IPREALLOCATED
;
2300 int ctdb_reply_control_ipreallocated(struct ctdb_reply_control
*reply
)
2302 return ctdb_reply_control_generic(reply
);
2305 /* CTDB_CONTROL_GET_RUNSTATE */
2307 void ctdb_req_control_get_runstate(struct ctdb_req_control
*request
)
2309 request
->opcode
= CTDB_CONTROL_GET_RUNSTATE
;
2312 request
->client_id
= 0;
2315 request
->rdata
.opcode
= CTDB_CONTROL_GET_RUNSTATE
;
2318 int ctdb_reply_control_get_runstate(struct ctdb_reply_control
*reply
,
2319 enum ctdb_runstate
*runstate
)
2321 if (reply
->status
== 0 &&
2322 reply
->rdata
.opcode
== CTDB_CONTROL_GET_RUNSTATE
) {
2323 *runstate
= reply
->rdata
.data
.runstate
;
2325 return reply
->status
;
2328 /* CTDB_CONTROL_DB_DETACH */
2330 void ctdb_req_control_db_detach(struct ctdb_req_control
*request
,
2333 request
->opcode
= CTDB_CONTROL_DB_DETACH
;
2336 request
->client_id
= 0;
2339 request
->rdata
.opcode
= CTDB_CONTROL_DB_DETACH
;
2340 request
->rdata
.data
.db_id
= db_id
;
2343 int ctdb_reply_control_db_detach(struct ctdb_reply_control
*reply
)
2345 return ctdb_reply_control_generic(reply
);
2348 /* CTDB_CONTROL_GET_NODES_FILE */
2350 void ctdb_req_control_get_nodes_file(struct ctdb_req_control
*request
)
2352 request
->opcode
= CTDB_CONTROL_GET_NODES_FILE
;
2355 request
->client_id
= 0;
2358 request
->rdata
.opcode
= CTDB_CONTROL_GET_NODES_FILE
;
2361 int ctdb_reply_control_get_nodes_file(struct ctdb_reply_control
*reply
,
2362 TALLOC_CTX
*mem_ctx
,
2363 struct ctdb_node_map
**nodemap
)
2365 if (reply
->status
== 0 &&
2366 reply
->rdata
.opcode
== CTDB_CONTROL_GET_NODES_FILE
) {
2367 *nodemap
= talloc_steal(mem_ctx
, reply
->rdata
.data
.nodemap
);
2369 return reply
->status
;
2372 /* CTDB_CONTROL_DB_FREEZE */
2374 void ctdb_req_control_db_freeze(struct ctdb_req_control
*request
,
2377 request
->opcode
= CTDB_CONTROL_DB_FREEZE
;
2380 request
->client_id
= 0;
2383 request
->rdata
.opcode
= CTDB_CONTROL_DB_FREEZE
;
2384 request
->rdata
.data
.db_id
= db_id
;
2387 int ctdb_reply_control_db_freeze(struct ctdb_reply_control
*reply
)
2389 return ctdb_reply_control_generic(reply
);
2392 /* CTDB_CONTROL_DB_THAW */
2394 void ctdb_req_control_db_thaw(struct ctdb_req_control
*request
,
2397 request
->opcode
= CTDB_CONTROL_DB_THAW
;
2400 request
->client_id
= 0;
2403 request
->rdata
.opcode
= CTDB_CONTROL_DB_THAW
;
2404 request
->rdata
.data
.db_id
= db_id
;
2407 int ctdb_reply_control_db_thaw(struct ctdb_reply_control
*reply
)
2409 return ctdb_reply_control_generic(reply
);
2412 /* CTDB_CONTROL_DB_TRANSACTION_START */
2414 void ctdb_req_control_db_transaction_start(struct ctdb_req_control
*request
,
2415 struct ctdb_transdb
*transdb
)
2417 request
->opcode
= CTDB_CONTROL_DB_TRANSACTION_START
;
2420 request
->client_id
= 0;
2423 request
->rdata
.opcode
= CTDB_CONTROL_DB_TRANSACTION_START
;
2424 request
->rdata
.data
.transdb
= transdb
;
2427 int ctdb_reply_control_db_transaction_start(struct ctdb_reply_control
*reply
)
2429 return ctdb_reply_control_generic(reply
);
2432 /* CTDB_CONTROL_DB_TRANSACTION_COMMIT */
2434 void ctdb_req_control_db_transaction_commit(struct ctdb_req_control
*request
,
2435 struct ctdb_transdb
*transdb
)
2437 request
->opcode
= CTDB_CONTROL_DB_TRANSACTION_COMMIT
;
2440 request
->client_id
= 0;
2443 request
->rdata
.opcode
= CTDB_CONTROL_DB_TRANSACTION_COMMIT
;
2444 request
->rdata
.data
.transdb
= transdb
;
2447 int ctdb_reply_control_db_transaction_commit(struct ctdb_reply_control
*reply
)
2449 return ctdb_reply_control_generic(reply
);
2452 /* CTDB_CONTROL_DB_TRANSACTION_CANCEL */
2454 void ctdb_req_control_db_transaction_cancel(struct ctdb_req_control
*request
,
2457 request
->opcode
= CTDB_CONTROL_DB_TRANSACTION_CANCEL
;
2460 request
->client_id
= 0;
2463 request
->rdata
.opcode
= CTDB_CONTROL_DB_TRANSACTION_CANCEL
;
2464 request
->rdata
.data
.db_id
= db_id
;
2467 int ctdb_reply_control_db_transaction_cancel(struct ctdb_reply_control
*reply
)
2469 return ctdb_reply_control_generic(reply
);