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