ctdb-client: Remove client functions related to server_id
[sfrench/samba-autobuild/.git] / ctdb / client / client.h
1 /*
2    CTDB client code
3
4    Copyright (C) Amitay Isaacs  2015
5
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.
10
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.
15
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/>.
18 */
19
20 #ifndef __CTDB_CLIENT_H__
21 #define __CTDB_CLIENT_H__
22
23 #include <talloc.h>
24 #include <tevent.h>
25
26 #include "protocol/protocol.h"
27 #include "common/srvid.h"
28
29 struct ctdb_client_context;
30 struct ctdb_db_context;
31 struct ctdb_record_handle;
32
33 typedef void (*ctdb_client_callback_func_t)(void *private_data);
34
35 /* from client/client_connect.c */
36
37 int ctdb_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
38                      const char *sockpath, struct ctdb_client_context **ret);
39
40 void ctdb_client_set_disconnect_callback(struct ctdb_client_context *client,
41                                          ctdb_client_callback_func_t func,
42                                          void *private_data);
43
44 uint32_t ctdb_client_pnn(struct ctdb_client_context *client);
45
46 void ctdb_client_wait(struct tevent_context *ev, bool *done);
47
48 int ctdb_client_wait_timeout(struct tevent_context *ev, bool *done,
49                              struct timeval timeout);
50
51 struct tevent_req *ctdb_recovery_wait_send(TALLOC_CTX *mem_ctx,
52                                            struct tevent_context *ev,
53                                            struct ctdb_client_context *client);
54
55 bool ctdb_recovery_wait_recv(struct tevent_req *req, int *perr);
56
57 bool ctdb_recovery_wait(struct tevent_context *ev,
58                         struct ctdb_client_context *client);
59
60 /* from client/client_call.c */
61
62 struct tevent_req *ctdb_client_call_send(TALLOC_CTX *mem_ctx,
63                                          struct tevent_context *ev,
64                                          struct ctdb_client_context *client,
65                                          struct ctdb_req_call *request);
66
67 bool ctdb_client_call_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
68                            struct ctdb_reply_call **reply, int *perr);
69
70
71 /* from client/client_message.c */
72
73 struct tevent_req *ctdb_client_message_send(TALLOC_CTX *mem_ctx,
74                                             struct tevent_context *ev,
75                                             struct ctdb_client_context *client,
76                                             uint32_t destnode,
77                                             struct ctdb_req_message *message);
78
79 bool ctdb_client_message_recv(struct tevent_req *req, int *perr);
80
81 struct tevent_req *ctdb_client_message_multi_send(
82                                 TALLOC_CTX *mem_ctx,
83                                 struct tevent_context *ev,
84                                 struct ctdb_client_context *client,
85                                 uint32_t *pnn_list, int count,
86                                 struct ctdb_req_message *message);
87
88 bool ctdb_client_message_multi_recv(struct tevent_req *req, int *perr,
89                                     TALLOC_CTX *mem_ctx, int **perr_list);
90
91 int ctdb_client_message(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
92                         struct ctdb_client_context *client,
93                         uint32_t destnode, struct ctdb_req_message *message);
94
95 struct tevent_req *ctdb_client_set_message_handler_send(
96                                         TALLOC_CTX *mem_ctx,
97                                         struct tevent_context *ev,
98                                         struct ctdb_client_context *client,
99                                         uint64_t srvid,
100                                         srvid_handler_fn handler,
101                                         void *private_data);
102 bool ctdb_client_set_message_handler_recv(struct tevent_req *req, int *perr);
103
104 struct tevent_req *ctdb_client_remove_message_handler_send(
105                                         TALLOC_CTX *mem_ctx,
106                                         struct tevent_context *ev,
107                                         struct ctdb_client_context *client,
108                                         uint64_t srvid,
109                                         void *private_data);
110 bool ctdb_client_remove_message_handler_recv(struct tevent_req *req,
111                                              int *perr);
112
113 int ctdb_client_set_message_handler(struct tevent_context *ev,
114                                     struct ctdb_client_context *client,
115                                     uint64_t srvid, srvid_handler_fn handler,
116                                     void *private_data);
117
118 int ctdb_client_remove_message_handler(struct tevent_context *ev,
119                                        struct ctdb_client_context *client,
120                                        uint64_t srvid, void *private_data);
121
122 /* from client/client_message_sync.c */
123
124 int ctdb_message_recd_update_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
125                                 struct ctdb_client_context *client,
126                                 int destnode, struct ctdb_public_ip *pubip);
127
128 int ctdb_message_mem_dump(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
129                           struct ctdb_client_context *client,
130                           int destnode, struct ctdb_srvid_message *msg);
131
132 int ctdb_message_reload_nodes(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
133                               struct ctdb_client_context *client,
134                               int destnode);
135
136 int ctdb_message_takeover_run(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
137                               struct ctdb_client_context *client,
138                               int destnode, struct ctdb_srvid_message *msg);
139
140 int ctdb_message_rebalance_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
141                                 struct ctdb_client_context *client,
142                                 int destnode, uint32_t pnn);
143
144 int ctdb_message_disable_takeover_runs(TALLOC_CTX *mem_ctx,
145                                        struct tevent_context *ev,
146                                        struct ctdb_client_context *client,
147                                        int destnode,
148                                        struct ctdb_disable_message *disable);
149
150 int ctdb_message_disable_recoveries(TALLOC_CTX *mem_ctx,
151                                     struct tevent_context *ev,
152                                     struct ctdb_client_context *client,
153                                     int destnode,
154                                     struct ctdb_disable_message *disable);
155
156 int ctdb_message_disable_ip_check(TALLOC_CTX *mem_ctx,
157                                   struct tevent_context *ev,
158                                   struct ctdb_client_context *client,
159                                   int destnode, uint32_t timeout);
160
161 /* from client/client_control.c */
162
163 struct tevent_req *ctdb_client_control_send(TALLOC_CTX *mem_ctx,
164                                             struct tevent_context *ev,
165                                             struct ctdb_client_context *client,
166                                             uint32_t destnode,
167                                             struct timeval timeout,
168                                             struct ctdb_req_control *request);
169
170 bool ctdb_client_control_recv(struct tevent_req *req, int *perr,
171                               TALLOC_CTX *mem_ctx,
172                               struct ctdb_reply_control **preply);
173
174 struct tevent_req *ctdb_client_control_multi_send(
175                                 TALLOC_CTX *mem_ctx,
176                                 struct tevent_context *ev,
177                                 struct ctdb_client_context *client,
178                                 uint32_t *pnn_list, int count,
179                                 struct timeval timeout,
180                                 struct ctdb_req_control *request);
181
182 bool ctdb_client_control_multi_recv(struct tevent_req *req, int *perr,
183                                     TALLOC_CTX *mem_ctx, int **perr_list,
184                                     struct ctdb_reply_control ***preply);
185
186 int ctdb_client_control_multi_error(uint32_t *pnn_list, int count,
187                                     int *err_list, uint32_t *pnn);
188
189 int ctdb_client_control(TALLOC_CTX *mem_ctx,
190                         struct tevent_context *ev,
191                         struct ctdb_client_context *client,
192                         uint32_t destnode,
193                         struct timeval timeout,
194                         struct ctdb_req_control *c,
195                         struct ctdb_reply_control **preply);
196
197 int ctdb_client_control_multi(TALLOC_CTX *mem_ctx,
198                               struct tevent_context *ev,
199                               struct ctdb_client_context *client,
200                               uint32_t *pnn_list, int count,
201                               struct timeval timeout,
202                               struct ctdb_req_control *request,
203                               int **perr,
204                               struct ctdb_reply_control ***preply);
205
206 /* from client/client_control_sync.c */
207
208 int ctdb_ctrl_process_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
209                              struct ctdb_client_context *client,
210                              int destnode, struct timeval timeout,
211                              pid_t pid, int *status);
212
213 int ctdb_ctrl_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
214                          struct ctdb_client_context *client,
215                          int destnode, struct timeval timeout,
216                          struct ctdb_statistics **stats);
217
218 int ctdb_ctrl_ping(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
219                    struct ctdb_client_context *client,
220                    int destnode, struct timeval timeout,
221                    int *num_clients);
222
223 int ctdb_ctrl_getdbpath(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
224                         struct ctdb_client_context *client,
225                         int destnode, struct timeval timeout,
226                         uint32_t db_id, const char **db_path);
227
228 int ctdb_ctrl_getvnnmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
229                         struct ctdb_client_context *client,
230                         int destnode, struct timeval timeout,
231                         struct ctdb_vnn_map **vnnmap);
232
233 int ctdb_ctrl_getdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
234                        struct ctdb_client_context *client,
235                        int destnode, struct timeval timeout,
236                        uint32_t *loglevel);
237
238 int ctdb_ctrl_setdebug(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
239                        struct ctdb_client_context *client,
240                        int destnode, struct timeval timeout,
241                        uint32_t loglevel);
242
243 int ctdb_ctrl_get_dbmap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
244                         struct ctdb_client_context *client,
245                         int destnode, struct timeval timeout,
246                         struct ctdb_dbid_map **dbmap);
247
248 int ctdb_ctrl_pull_db(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
249                       struct ctdb_client_context *client, int destnode,
250                       struct timeval timeout, struct ctdb_pulldb *pulldb,
251                       struct ctdb_rec_buffer **recbuf);
252
253 int ctdb_ctrl_push_db(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
254                       struct ctdb_client_context *client, int destnode,
255                       struct timeval timeout, struct ctdb_rec_buffer *recbuf);
256
257 int ctdb_ctrl_get_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
258                           struct ctdb_client_context *client,
259                           int destnode, struct timeval timeout,
260                           int *recmode);
261
262 int ctdb_ctrl_set_recmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
263                           struct ctdb_client_context *client,
264                           int destnode, struct timeval timeout,
265                           int recmode);
266
267 int ctdb_ctrl_statistics_reset(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
268                                struct ctdb_client_context *client,
269                                int destnode, struct timeval timeout);
270
271 int ctdb_ctrl_db_attach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
272                         struct ctdb_client_context *client,
273                         int destnode, struct timeval timeout,
274                         const char *db_name, uint32_t tdb_flags,
275                         uint32_t *db_id);
276
277 int ctdb_ctrl_traverse_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
278                              struct ctdb_client_context *client,
279                              int destnode, struct timeval timeout,
280                              struct ctdb_traverse_start *traverse);
281
282 int ctdb_ctrl_register_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
283                              struct ctdb_client_context *client,
284                              int destnode, struct timeval timeout,
285                              uint64_t srvid);
286
287 int ctdb_ctrl_deregister_srvid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
288                                struct ctdb_client_context *client,
289                                int destnode, struct timeval timeout,
290                                uint64_t srvid);
291
292 int ctdb_ctrl_get_dbname(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
293                          struct ctdb_client_context *client,
294                          int destnode, struct timeval timeout,
295                          uint32_t db_id, const char **db_name);
296
297 int ctdb_ctrl_enable_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
298                             struct ctdb_client_context *client,
299                             int destnode, struct timeval timeout,
300                             uint32_t db_id);
301
302 int ctdb_ctrl_update_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
303                             struct ctdb_client_context *client,
304                             int destnode, struct timeval timeout,
305                             uint32_t db_id);
306
307 int ctdb_ctrl_dump_memory(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
308                           struct ctdb_client_context *client,
309                           int destnode, struct timeval timeout,
310                           const char **mem_str);
311
312 int ctdb_ctrl_get_pid(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
313                       struct ctdb_client_context *client,
314                       int destnode, struct timeval timeout,
315                       pid_t *pid);
316
317 int ctdb_ctrl_get_recmaster(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
318                             struct ctdb_client_context *client,
319                             int destnode, struct timeval timeout,
320                             uint32_t *recmaster);
321
322 int ctdb_ctrl_set_recmaster(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
323                             struct ctdb_client_context *client,
324                             int destnode, struct timeval timeout,
325                             uint32_t recmaster);
326
327 int ctdb_ctrl_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
328                      struct ctdb_client_context *client,
329                      int destnode, struct timeval timeout,
330                      int priority);
331
332 int ctdb_ctrl_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
333                    struct ctdb_client_context *client,
334                    int destnode, struct timeval timeout,
335                    int priority);
336
337 int ctdb_ctrl_get_pnn(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
338                       struct ctdb_client_context *client,
339                       int destnode, struct timeval timeout,
340                       uint32_t *pnn);
341
342 int ctdb_ctrl_shutdown(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
343                        struct ctdb_client_context *client,
344                        int destnode, struct timeval timeout);
345
346 int ctdb_ctrl_get_monmode(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
347                           struct ctdb_client_context *client,
348                           int destnode, struct timeval timeout,
349                           int *mon_mode);
350
351 int ctdb_ctrl_tcp_add(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
352                       struct ctdb_client_context *client,
353                       int destnode, struct timeval timeout,
354                       struct ctdb_connection *conn);
355
356 int ctdb_ctrl_tcp_remove(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
357                          struct ctdb_client_context *client,
358                          int destnode, struct timeval timeout,
359                          struct ctdb_connection *conn);
360
361 int ctdb_ctrl_set_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
362                           struct ctdb_client_context *client,
363                           int destnode, struct timeval timeout,
364                           struct ctdb_tunable *tunable);
365
366 int ctdb_ctrl_get_tunable(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
367                           struct ctdb_client_context *client,
368                           int destnode, struct timeval timeout,
369                           const char *var, uint32_t *value);
370
371 int ctdb_ctrl_list_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
372                             struct ctdb_client_context *client,
373                             int destnode, struct timeval timeout,
374                             struct ctdb_var_list **var_list);
375
376 int ctdb_ctrl_modify_flags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
377                            struct ctdb_client_context *client,
378                            int destnode, struct timeval timeout,
379                            uint32_t pnn, uint32_t old_flags,
380                            uint32_t new_flags);
381
382 int ctdb_ctrl_get_all_tunables(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
383                                struct ctdb_client_context *client,
384                                int destnode, struct timeval timeout,
385                                struct ctdb_tunable_list **tun_list);
386
387 int ctdb_ctrl_get_tcp_tickle_list(TALLOC_CTX *mem_ctx,
388                                   struct tevent_context *ev,
389                                   struct ctdb_client_context *client,
390                                   int destnode, struct timeval timeout,
391                                   ctdb_sock_addr *addr,
392                                   struct ctdb_tickle_list **tickles);
393
394 int ctdb_ctrl_set_tcp_tickle_list(TALLOC_CTX *mem_ctx,
395                                   struct tevent_context *ev,
396                                   struct ctdb_client_context *client,
397                                   int destnode, struct timeval timeout,
398                                   struct ctdb_tickle_list *tickles);
399
400 int ctdb_ctrl_db_attach_persistent(TALLOC_CTX *mem_ctx,
401                                    struct tevent_context *ev,
402                                    struct ctdb_client_context *client,
403                                    int destnode, struct timeval timeout,
404                                    const char *db_name, int tdb_flags,
405                                    uint32_t *db_id);
406
407 int ctdb_ctrl_send_gratuitous_arp(TALLOC_CTX *mem_ctx,
408                                   struct tevent_context *ev,
409                                   struct ctdb_client_context *client,
410                                   int destnode, struct timeval timeout,
411                                   struct ctdb_addr_info *addr_info);
412
413 int ctdb_ctrl_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
414                                 struct ctdb_client_context *client,
415                                 int destnode, struct timeval timeout,
416                                 uint32_t tid);
417
418 int ctdb_ctrl_transaction_commit(TALLOC_CTX *mem_ctx,
419                                  struct tevent_context *ev,
420                                  struct ctdb_client_context *client,
421                                  int destnode, struct timeval timeout,
422                                  uint32_t tid);
423
424 int ctdb_ctrl_wipe_database(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
425                             struct ctdb_client_context *client,
426                             int destnode, struct timeval timeout,
427                             uint32_t db_id, uint32_t tid);
428
429 int ctdb_ctrl_uptime(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
430                      struct ctdb_client_context *client,
431                      int destnode, struct timeval timeout,
432                      struct ctdb_uptime **uptime);
433
434 int ctdb_ctrl_start_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
435                              struct ctdb_client_context *client,
436                              int destnode, struct timeval timeout);
437
438 int ctdb_ctrl_end_recovery(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
439                            struct ctdb_client_context *client,
440                            int destnode, struct timeval timeout);
441
442 int ctdb_ctrl_reload_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
443                                 struct ctdb_client_context *client,
444                                 int destnode, struct timeval timeout);
445
446 int ctdb_ctrl_enable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
447                              struct ctdb_client_context *client,
448                              int destnode, struct timeval timeout);
449
450 int ctdb_ctrl_disable_monitor(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
451                               struct ctdb_client_context *client,
452                               int destnode, struct timeval timeout);
453
454 int ctdb_ctrl_add_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
455                             struct ctdb_client_context *client,
456                             int destnode, struct timeval timeout,
457                             struct ctdb_addr_info *addr_info);
458
459 int ctdb_ctrl_del_public_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
460                             struct ctdb_client_context *client,
461                             int destnode, struct timeval timeout,
462                             struct ctdb_addr_info *addr_info);
463
464 int ctdb_ctrl_run_eventscripts(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
465                                struct ctdb_client_context *client,
466                                int destnode, struct timeval timeout,
467                                const char *event);
468
469 int ctdb_ctrl_get_capabilities(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
470                                struct ctdb_client_context *client,
471                                int destnode, struct timeval timeout,
472                                uint32_t *caps);
473
474 int ctdb_ctrl_release_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
475                          struct ctdb_client_context *client,
476                          int destnode, struct timeval timeout,
477                          struct ctdb_public_ip *pubip);
478
479 int ctdb_ctrl_takeover_ip(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
480                           struct ctdb_client_context *client,
481                           int destnode, struct timeval timeout,
482                           struct ctdb_public_ip *pubip);
483
484 int ctdb_ctrl_get_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
485                              struct ctdb_client_context *client,
486                              int destnode, struct timeval timeout,
487                              struct ctdb_public_ip_list **pubip_list);
488
489 int ctdb_ctrl_get_nodemap(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
490                           struct ctdb_client_context *client,
491                           int destnode, struct timeval timeout,
492                           struct ctdb_node_map **nodemap);
493
494 int ctdb_ctrl_get_event_script_status(TALLOC_CTX *mem_ctx,
495                                       struct tevent_context *ev,
496                                       struct ctdb_client_context *client,
497                                       int destnode, struct timeval timeout,
498                                       enum ctdb_event event,
499                                       struct ctdb_script_list **slist);
500
501 int ctdb_ctrl_traverse_kill(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
502                             struct ctdb_client_context *client,
503                             int destnode, struct timeval timeout,
504                             struct ctdb_traverse_start *traverse);
505
506 int ctdb_ctrl_get_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
507                                struct ctdb_client_context *client,
508                                int destnode, struct timeval timeout,
509                                const char **reclock_file);
510
511 int ctdb_ctrl_set_reclock_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
512                                struct ctdb_client_context *client,
513                                int destnode, struct timeval timeout,
514                                const char *reclock_file);
515
516 int ctdb_ctrl_stop_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
517                         struct ctdb_client_context *client,
518                         int destnode, struct timeval timeout);
519
520 int ctdb_ctrl_continue_node(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
521                             struct ctdb_client_context *client,
522                             int destnode, struct timeval timeout);
523
524 int ctdb_ctrl_set_lmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
525                               struct ctdb_client_context *client,
526                               int destnode, struct timeval timeout,
527                               uint32_t lmaster_role);
528
529 int ctdb_ctrl_set_recmasterrole(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
530                                 struct ctdb_client_context *client,
531                                 int destnode, struct timeval timeout,
532                                 uint32_t recmaster_role);
533
534 int ctdb_ctrl_enable_script(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
535                             struct ctdb_client_context *client,
536                             int destnode, struct timeval timeout,
537                             const char *script);
538
539 int ctdb_ctrl_disable_script(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
540                              struct ctdb_client_context *client,
541                              int destnode, struct timeval timeout,
542                              const char *script);
543
544 int ctdb_ctrl_set_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
545                             struct ctdb_client_context *client,
546                             int destnode, struct timeval timeout,
547                             struct ctdb_ban_state *ban_state);
548
549 int ctdb_ctrl_get_ban_state(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
550                             struct ctdb_client_context *client,
551                             int destnode, struct timeval timeout,
552                             struct ctdb_ban_state **ban_state);
553
554 int ctdb_ctrl_set_db_priority(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
555                               struct ctdb_client_context *client,
556                               int destnode, struct timeval timeout,
557                               uint32_t db_id, int priority);
558
559 int ctdb_ctrl_get_db_priority(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
560                               struct ctdb_client_context *client,
561                               int destnode, struct timeval timeout,
562                               uint32_t db_id, uint32_t *priority);
563
564 int ctdb_ctrl_transaction_cancel(TALLOC_CTX *mem_ctx,
565                                  struct tevent_context *ev,
566                                  struct ctdb_client_context *client,
567                                  int destnode, struct timeval timeout,
568                                  uint32_t tid);
569
570 int ctdb_ctrl_register_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
571                               struct ctdb_client_context *client,
572                               int destnode, struct timeval timeout,
573                               struct ctdb_notify_data *notify);
574
575 int ctdb_ctrl_deregister_notify(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
576                                 struct ctdb_client_context *client,
577                                 int destnode, struct timeval timeout,
578                                 uint64_t srvid);
579
580 int ctdb_ctrl_trans3_commit(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
581                             struct ctdb_client_context *client,
582                             int destnode, struct timeval timeout,
583                             struct ctdb_rec_buffer *recbuf);
584
585 int ctdb_ctrl_get_db_seqnum(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
586                             struct ctdb_client_context *client,
587                             int destnode, struct timeval timeout,
588                             uint32_t db_id, uint64_t *seqnum);
589
590 int ctdb_ctrl_db_set_healthy(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
591                              struct ctdb_client_context *client,
592                              int destnode, struct timeval timeout,
593                              uint32_t db_id);
594
595 int ctdb_ctrl_db_get_health(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
596                             struct ctdb_client_context *client,
597                             int destnode, struct timeval timeout,
598                             uint32_t db_id, const char **reason);
599
600 int ctdb_ctrl_get_public_ip_info(TALLOC_CTX *mem_ctx,
601                                  struct tevent_context *ev,
602                                  struct ctdb_client_context *client,
603                                  int destnode, struct timeval timeout,
604                                  ctdb_sock_addr *addr,
605                                  struct ctdb_public_ip_info **ipinfo);
606
607 int ctdb_ctrl_get_ifaces(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
608                          struct ctdb_client_context *client,
609                          int destnode, struct timeval timeout,
610                          struct ctdb_iface_list **iface_list);
611
612 int ctdb_ctrl_set_iface_link_state(TALLOC_CTX *mem_ctx,
613                                    struct tevent_context *ev,
614                                    struct ctdb_client_context *client,
615                                    int destnode, struct timeval timeout,
616                                    struct ctdb_iface *iface);
617
618 int ctdb_ctrl_tcp_add_delayed_update(TALLOC_CTX *mem_ctx,
619                                      struct tevent_context *ev,
620                                      struct ctdb_client_context *client,
621                                      int destnode, struct timeval timeout,
622                                      struct ctdb_connection *conn);
623
624 int ctdb_ctrl_get_stat_history(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
625                                struct ctdb_client_context *client,
626                                int destnode, struct timeval timeout,
627                                struct ctdb_statistics_list **stats_list);
628
629 int ctdb_ctrl_schedule_for_deletion(TALLOC_CTX *mem_ctx,
630                                     struct tevent_context *ev,
631                                     struct ctdb_client_context *client,
632                                     int destnode, struct timeval timeout,
633                                     struct ctdb_key_data *key);
634
635 int ctdb_ctrl_set_db_readonly(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
636                               struct ctdb_client_context *client,
637                               int destnode, struct timeval timeout,
638                               uint32_t db_id);
639
640 int ctdb_ctrl_check_srvids(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
641                            struct ctdb_client_context *client,
642                            int destnode, struct timeval timeout,
643                            uint64_t *srvid, int count, uint8_t **result);
644
645 int ctdb_ctrl_traverse_start_ext(TALLOC_CTX *mem_ctx,
646                                  struct tevent_context *ev,
647                                  struct ctdb_client_context *client,
648                                  int destnode, struct timeval timeout,
649                                  struct ctdb_traverse_start_ext *traverse);
650
651 int ctdb_ctrl_get_db_statistics(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
652                                 struct ctdb_client_context *client,
653                                 int destnode, struct timeval timeout,
654                                 uint32_t db_id,
655                                 struct ctdb_db_statistics **dbstats);
656
657 int ctdb_ctrl_set_db_sticky(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
658                             struct ctdb_client_context *client,
659                             int destnode, struct timeval timeout,
660                             uint32_t db_id);
661
662 int ctdb_ctrl_reload_public_ips(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
663                                 struct ctdb_client_context *client,
664                                 int destnode, struct timeval timeout);
665
666 int ctdb_ctrl_ipreallocated(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
667                             struct ctdb_client_context *client,
668                             int destnode, struct timeval timeout);
669
670 int ctdb_ctrl_get_runstate(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
671                            struct ctdb_client_context *client,
672                            int destnode, struct timeval timeout,
673                            enum ctdb_runstate *runstate);
674
675 int ctdb_ctrl_db_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
676                         struct ctdb_client_context *client,
677                         int destnode, struct timeval timeout,
678                         uint32_t db_id);
679
680 int ctdb_ctrl_get_nodes_file(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
681                              struct ctdb_client_context *client,
682                              int destnode, struct timeval timeout,
683                              struct ctdb_node_map **nodemap);
684
685 int ctdb_ctrl_db_freeze(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
686                         struct ctdb_client_context *client,
687                         int destnode, struct timeval timeout, uint32_t db_id);
688
689 int ctdb_ctrl_db_thaw(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
690                       struct ctdb_client_context *client,
691                       int destnode, struct timeval timeout, uint32_t db_id);
692
693 int ctdb_ctrl_db_transaction_start(TALLOC_CTX *mem_ctx,
694                                    struct tevent_context *ev,
695                                    struct ctdb_client_context *client,
696                                    int destnode, struct timeval timeout,
697                                    struct ctdb_transdb *transdb);
698
699 int ctdb_ctrl_db_transaction_commit(TALLOC_CTX *mem_ctx,
700                                     struct tevent_context *ev,
701                                     struct ctdb_client_context *client,
702                                     int destnode, struct timeval timeout,
703                                     struct ctdb_transdb *transdb);
704
705 int ctdb_ctrl_db_transaction_cancel(TALLOC_CTX *mem_ctx,
706                                     struct tevent_context *ev,
707                                     struct ctdb_client_context *client,
708                                     int destnode, struct timeval timeout,
709                                     uint32_t db_id);
710
711 int ctdb_ctrl_db_pull(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
712                       struct ctdb_client_context *client,
713                       int destnode, struct timeval timeout,
714                       struct ctdb_pulldb_ext *pulldb, uint32_t *num_records);
715
716 int ctdb_ctrl_db_push_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
717                             struct ctdb_client_context *client,
718                             int destnode, struct timeval timeout,
719                             struct ctdb_pulldb_ext *pulldb);
720
721 int ctdb_ctrl_db_push_confirm(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
722                               struct ctdb_client_context *client,
723                               int destnode, struct timeval timeout,
724                               uint32_t db_id, uint32_t *num_records);
725
726 /* from client/client_db.c */
727
728 struct tevent_req *ctdb_attach_send(TALLOC_CTX *mem_ctx,
729                                     struct tevent_context *ev,
730                                     struct ctdb_client_context *client,
731                                     struct timeval timeout,
732                                     const char *db_name, uint8_t db_flags);
733
734 bool ctdb_attach_recv(struct tevent_req *req, int *perr,
735                       struct ctdb_db_context **out);
736
737 int ctdb_attach(struct tevent_context *ev,
738                 struct ctdb_client_context *client,
739                 struct timeval timeout,
740                 const char *db_name, uint8_t db_flags,
741                 struct ctdb_db_context **out);
742
743 int ctdb_detach(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
744                 struct ctdb_client_context *client,
745                 struct timeval timeout, uint32_t db_id);
746
747 uint32_t ctdb_db_id(struct ctdb_db_context *db);
748
749 int ctdb_db_traverse(struct ctdb_db_context *db, bool readonly,
750                      bool extract_header,
751                      ctdb_rec_parser_func_t parser, void *private_data);
752
753 struct tevent_req *ctdb_fetch_lock_send(TALLOC_CTX *mem_ctx,
754                                         struct tevent_context *ev,
755                                         struct ctdb_client_context *client,
756                                         struct ctdb_db_context *db,
757                                         TDB_DATA key, bool readonly);
758
759 struct ctdb_record_handle *ctdb_fetch_lock_recv(struct tevent_req *req,
760                                                 struct ctdb_ltdb_header *header,
761                                                 TALLOC_CTX *mem_ctx,
762                                                 TDB_DATA *data, int *perr);
763
764 int ctdb_fetch_lock(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
765                     struct ctdb_client_context *client,
766                     struct ctdb_db_context *db, TDB_DATA key, bool readonly,
767                     struct ctdb_record_handle **out,
768                     struct ctdb_ltdb_header *header, TDB_DATA *data);
769
770 int ctdb_store_record(struct ctdb_record_handle *h, TDB_DATA data);
771
772 int ctdb_delete_record(struct ctdb_record_handle *h);
773
774 struct tevent_req *ctdb_g_lock_lock_send(TALLOC_CTX *mem_ctx,
775                                          struct tevent_context *ev,
776                                          struct ctdb_client_context *client,
777                                          struct ctdb_db_context *db,
778                                          const char *keyname,
779                                          struct ctdb_server_id *sid,
780                                          bool readonly);
781
782 bool ctdb_g_lock_lock_recv(struct tevent_req *req, int *perr);
783
784 struct tevent_req *ctdb_g_lock_unlock_send(TALLOC_CTX *mem_ctx,
785                                            struct tevent_context *ev,
786                                            struct ctdb_client_context *client,
787                                            struct ctdb_db_context *db,
788                                            const char *keyname,
789                                            struct ctdb_server_id sid);
790
791 bool ctdb_g_lock_unlock_recv(struct tevent_req *req, int *perr);
792
793 struct tevent_req *ctdb_transaction_start_send(TALLOC_CTX *mem_ctx,
794                                                struct tevent_context *ev,
795                                                struct ctdb_client_context *client,
796                                                struct timeval timeout,
797                                                struct ctdb_db_context *db,
798                                                bool readonly);
799
800 struct ctdb_transaction_handle *ctdb_transaction_start_recv(
801                                         struct tevent_req *req,
802                                         int *perr);
803
804 int ctdb_transaction_start(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
805                            struct ctdb_client_context *client,
806                            struct timeval timeout,
807                            struct ctdb_db_context *db, bool readonly,
808                            struct ctdb_transaction_handle **out);
809
810 int ctdb_transaction_fetch_record(struct ctdb_transaction_handle *h,
811                                   TDB_DATA key,
812                                   TALLOC_CTX *mem_ctx, TDB_DATA *data);
813
814 int ctdb_transaction_store_record(struct ctdb_transaction_handle *h,
815                                   TDB_DATA key, TDB_DATA data);
816
817 int ctdb_transaction_delete_record(struct ctdb_transaction_handle *h,
818                                    TDB_DATA key);
819
820 struct tevent_req *ctdb_transaction_commit_send(
821                                         TALLOC_CTX *mem_ctx,
822                                         struct tevent_context *ev,
823                                         struct ctdb_transaction_handle *h);
824
825 bool ctdb_transaction_commit_recv(struct tevent_req *req, int *perr);
826
827 int ctdb_transaction_commit(struct ctdb_transaction_handle *h);
828
829 int ctdb_transaction_cancel(struct ctdb_transaction_handle *h);
830
831 /* from client/client_util.c */
832
833 int list_of_nodes(struct ctdb_node_map *nodemap,
834                   uint32_t flags_mask, uint32_t exclude_pnn,
835                   TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
836
837 int list_of_active_nodes(struct ctdb_node_map *nodemap, uint32_t exclude_pnn,
838                          TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
839
840 int list_of_connected_nodes(struct ctdb_node_map *nodemap,
841                             uint32_t exclude_pnn,
842                             TALLOC_CTX *mem_ctx, uint32_t **pnn_list);
843
844 int ctdb_ctrl_modflags(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
845                        struct ctdb_client_context *client,
846                        uint32_t destnode, struct timeval timeout,
847                        uint32_t set, uint32_t clear);
848
849 bool ctdb_server_id_equal(struct ctdb_server_id *sid1,
850                           struct ctdb_server_id *sid2);
851
852 int ctdb_server_id_exists(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
853                           struct ctdb_client_context *client,
854                           struct ctdb_server_id *sid, bool *exists);
855
856 #endif /* __CTDB_CLIENT_H__ */