07e360c74b58094b0c916a89932acef2b18dea7f
[obnox/samba/samba-obnox.git] / ctdb / include / ctdb_client.h
1 /*
2    ctdb database library: old client interface
3
4    Copyright (C) Andrew Tridgell  2006
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 "common/srvid.h"
24 #include "ctdb_protocol.h"
25
26 enum control_state {CTDB_CONTROL_WAIT, CTDB_CONTROL_DONE, CTDB_CONTROL_ERROR, CTDB_CONTROL_TIMEOUT};
27
28 struct ctdb_client_control_state {
29         struct ctdb_context *ctdb;
30         uint32_t reqid;
31         int32_t status;
32         TDB_DATA outdata;
33         enum control_state state;
34         char *errormsg;
35         struct ctdb_req_control *c;
36
37         /* if we have a callback registered for the completion (or failure) of
38            this control
39            if a callback is used, it MUST talloc_free the cb_data passed to it
40         */
41         struct {
42                 void (*fn)(struct ctdb_client_control_state *);
43                 void *private_data;
44         } async;
45 };
46
47 struct tevent_context;
48
49 /*
50   initialise ctdb subsystem
51 */
52 struct ctdb_context *ctdb_init(struct tevent_context *ev);
53
54 /*
55   set some flags
56 */
57 void ctdb_set_flags(struct ctdb_context *ctdb, unsigned flags);
58
59 int ctdb_set_socketname(struct ctdb_context *ctdb, const char *socketname);
60 const char *ctdb_get_socketname(struct ctdb_context *ctdb);
61
62 /*
63   attach to a ctdb database
64 */
65 struct ctdb_db_context *ctdb_attach(struct ctdb_context *ctdb,
66                                     struct timeval timeout,
67                                     const char *name,
68                                     bool persistent,
69                                     uint32_t tdb_flags);
70
71 int ctdb_detach(struct ctdb_context *ctdb, uint32_t db_id);
72
73 /* a ctdb call function */
74 typedef int (*ctdb_fn_t)(struct ctdb_call_info *);
75
76 /*
77   setup a ctdb call function
78 */
79 int ctdb_set_call(struct ctdb_db_context *ctdb_db, ctdb_fn_t fn, uint32_t id);
80
81
82
83 /*
84   make a ctdb call. The associated ctdb call function will be called on the DMASTER
85   for the given record
86 */
87 int ctdb_call(struct ctdb_db_context *ctdb_db, struct ctdb_call *call);
88
89 /* return pnn of this node */
90 uint32_t ctdb_get_pnn(struct ctdb_context *ctdb);
91
92 /* setup a handler for ctdb messages */
93 typedef void (*ctdb_msg_fn_t)(struct ctdb_context *, uint64_t srvid,
94                                   TDB_DATA data, void *);
95 int ctdb_client_set_message_handler(struct ctdb_context *ctdb, uint64_t srvid,
96                                     srvid_handler_fn handler,
97                                     void *private_data);
98 int ctdb_client_remove_message_handler(struct ctdb_context *ctdb,
99                                        uint64_t srvid, void *private_data);
100 int ctdb_client_check_message_handlers(struct ctdb_context *ctdb,
101                                        uint64_t *ids, uint32_t num,
102                                        uint8_t *result);
103
104 int ctdb_call(struct ctdb_db_context *ctdb_db, struct ctdb_call *call);
105 struct ctdb_client_call_state *ctdb_call_send(struct ctdb_db_context *ctdb_db, struct ctdb_call *call);
106 int ctdb_call_recv(struct ctdb_client_call_state *state, struct ctdb_call *call);
107
108 /* send a ctdb message */
109 int ctdb_client_send_message(struct ctdb_context *ctdb, uint32_t pnn,
110                       uint64_t srvid, TDB_DATA data);
111
112
113 /*
114    Fetch a ctdb record from a remote node
115  . Underneath this will force the
116    dmaster for the record to be moved to the local node.
117 */
118 struct ctdb_record_handle *ctdb_fetch_lock(struct ctdb_db_context *ctdb_db, TALLOC_CTX *mem_ctx,
119                                            TDB_DATA key, TDB_DATA *data);
120
121 struct ctdb_record_handle *ctdb_fetch_readonly_lock(struct ctdb_db_context *ctdb_db, TALLOC_CTX *mem_ctx, TDB_DATA key, TDB_DATA *data, int read_only);
122
123 int ctdb_record_store(struct ctdb_record_handle *h, TDB_DATA data);
124
125 int ctdb_fetch(struct ctdb_db_context *ctdb_db, TALLOC_CTX *mem_ctx,
126                TDB_DATA key, TDB_DATA *data);
127
128
129 struct ctdb_statistics;
130 int ctdb_ctrl_statistics(struct ctdb_context *ctdb, uint32_t destnode, struct ctdb_statistics *status);
131 int ctdb_ctrl_dbstatistics(struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid,
132                            TALLOC_CTX *mem_ctx, struct ctdb_db_statistics **dbstat);
133
134 int ctdb_ctrl_shutdown(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode);
135
136 struct ctdb_vnn_map;
137 int ctdb_ctrl_getvnnmap(struct ctdb_context *ctdb,
138                 struct timeval timeout, uint32_t destnode,
139                 TALLOC_CTX *mem_ctx, struct ctdb_vnn_map **vnnmap);
140 int ctdb_ctrl_setvnnmap(struct ctdb_context *ctdb,
141                 struct timeval timeout, uint32_t destnode,
142                 TALLOC_CTX *mem_ctx, struct ctdb_vnn_map *vnnmap);
143
144 int ctdb_ctrl_getdbmap(struct ctdb_context *ctdb,
145         struct timeval timeout, uint32_t destnode,
146         TALLOC_CTX *mem_ctx, struct ctdb_dbid_map **dbmap);
147
148
149 struct ctdb_node_map;
150
151 int ctdb_ctrl_getnodemap(struct ctdb_context *ctdb,
152                     struct timeval timeout, uint32_t destnode,
153                     TALLOC_CTX *mem_ctx, struct ctdb_node_map **nodemap);
154
155 int ctdb_ctrl_getnodesfile(struct ctdb_context *ctdb,
156                            struct timeval timeout, uint32_t destnode,
157                            TALLOC_CTX *mem_ctx, struct ctdb_node_map **nodemap);
158
159 int ctdb_ctrl_reload_nodes_file(struct ctdb_context *ctdb,
160                     struct timeval timeout, uint32_t destnode);
161
162 struct ctdb_key_list {
163         uint32_t dbid;
164         uint32_t num;
165         TDB_DATA *keys;
166         struct ctdb_ltdb_header *headers;
167         TDB_DATA *data;
168 };
169
170 int ctdb_ctrl_pulldb(
171        struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid,
172        uint32_t lmaster, TALLOC_CTX *mem_ctx,
173        struct timeval timeout, TDB_DATA *outdata);
174
175 struct ctdb_client_control_state *ctdb_ctrl_pulldb_send(
176        struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid,
177        uint32_t lmaster, TALLOC_CTX *mem_ctx, struct timeval timeout);
178
179 int ctdb_ctrl_pulldb_recv(
180        struct ctdb_context *ctdb,
181        TALLOC_CTX *mem_ctx, struct ctdb_client_control_state *state,
182        TDB_DATA *outdata);
183
184 int ctdb_ctrl_getdbpath(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t dbid, TALLOC_CTX *mem_ctx, const char **path);
185 int ctdb_ctrl_getdbname(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t dbid, TALLOC_CTX *mem_ctx, const char **name);
186 int ctdb_ctrl_getdbhealth(struct ctdb_context *ctdb,
187                           struct timeval timeout,
188                           uint32_t destnode,
189                           uint32_t dbid, TALLOC_CTX *mem_ctx,
190                           const char **reason);
191 int ctdb_ctrl_getdbseqnum(struct ctdb_context *ctdb, struct timeval timeout,
192                           uint32_t destnode, uint32_t dbid, uint64_t *seqnum);
193 int ctdb_ctrl_createdb(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, TALLOC_CTX *mem_ctx, const char *name, bool persistent);
194
195 int ctdb_ctrl_process_exists(struct ctdb_context *ctdb, uint32_t destnode, pid_t pid);
196
197 int ctdb_ctrl_ping(struct ctdb_context *ctdb, uint32_t destnode);
198
199 int ctdb_ctrl_get_runstate(struct ctdb_context *ctdb, 
200                            struct timeval timeout, 
201                            uint32_t destnode,
202                            uint32_t *runstate);
203
204 int ctdb_ctrl_get_debuglevel(struct ctdb_context *ctdb, uint32_t destnode, int32_t *level);
205 int ctdb_ctrl_set_debuglevel(struct ctdb_context *ctdb, uint32_t destnode, int32_t level);
206
207 /*
208   change dmaster for all keys in the database to the new value
209  */
210 int ctdb_ctrl_setdmaster(struct ctdb_context *ctdb,
211         struct timeval timeout, uint32_t destnode,
212         TALLOC_CTX *mem_ctx, uint32_t dbid, uint32_t dmaster);
213
214 /*
215   get the recovery mode of a remote node
216  */
217 int ctdb_ctrl_getrecmode(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, uint32_t destnode, uint32_t *recmode);
218
219 struct ctdb_client_control_state *ctdb_ctrl_getrecmode_send(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, uint32_t destnode);
220
221 int ctdb_ctrl_getrecmode_recv(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct ctdb_client_control_state *state, uint32_t *recmode);
222
223
224 /*
225   set the recovery mode of a remote node
226  */
227 int ctdb_ctrl_setrecmode(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t recmode);
228 /*
229   get the monitoring mode of a remote node
230  */
231 int ctdb_ctrl_getmonmode(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t *monmode);
232
233 /*
234   set the monitoring mode of a remote node to active
235  */
236 int ctdb_ctrl_enable_monmode(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode);
237
238 /*
239   set the monitoring mode of a remote node to disabled
240  */
241 int ctdb_ctrl_disable_monmode(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode);
242
243
244 /*
245   get the recovery master of a remote node
246  */
247 int ctdb_ctrl_getrecmaster(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, uint32_t destnode, uint32_t *recmaster);
248
249 struct ctdb_client_control_state *ctdb_ctrl_getrecmaster_send(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, uint32_t destnode);
250
251 int ctdb_ctrl_getrecmaster_recv(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct ctdb_client_control_state *state, uint32_t *recmaster);
252
253
254
255 /*
256   set the recovery master of a remote node
257  */
258 int ctdb_ctrl_setrecmaster(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t recmaster);
259
260 uint32_t *ctdb_get_connected_nodes(struct ctdb_context *ctdb,
261                                    struct timeval timeout,
262                                    TALLOC_CTX *mem_ctx,
263                                    uint32_t *num_nodes);
264
265 int ctdb_statistics_reset(struct ctdb_context *ctdb, uint32_t destnode);
266
267 typedef int (*ctdb_traverse_func)(TDB_DATA, TDB_DATA, void *);
268 int ctdb_traverse(struct ctdb_db_context *ctdb_db, ctdb_traverse_func fn, void *private_data);
269
270 struct ctdb_dump_db_context {
271         struct ctdb_context *ctdb;
272         FILE *f;
273         bool printemptyrecords;
274         bool printdatasize;
275         bool printlmaster;
276         bool printhash;
277         bool printrecordflags;
278 };
279
280 int ctdb_dumpdb_record(TDB_DATA key, TDB_DATA data, void *p);
281 int ctdb_dump_db(struct ctdb_db_context *ctdb_db,
282                  struct ctdb_dump_db_context *ctx);
283
284 /*
285   get the pid of a ctdb daemon
286  */
287 int ctdb_ctrl_getpid(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t *pid);
288
289 int ctdb_ctrl_freeze(struct ctdb_context *ctdb, struct timeval timeout,
290                         uint32_t destnode);
291 int ctdb_ctrl_freeze_priority(struct ctdb_context *ctdb, struct timeval timeout,
292                               uint32_t destnode, uint32_t priority);
293
294 struct ctdb_client_control_state *
295 ctdb_ctrl_freeze_send(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx,
296                       struct timeval timeout, uint32_t destnode,
297                       uint32_t priority);
298
299 int ctdb_ctrl_freeze_recv(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx,
300                         struct ctdb_client_control_state *state);
301
302 int ctdb_ctrl_thaw_priority(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t priority);
303 int ctdb_ctrl_thaw(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode);
304
305 int ctdb_ctrl_getpnn(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode);
306
307 int ctdb_ctrl_get_tunable(struct ctdb_context *ctdb,
308                           struct timeval timeout,
309                           uint32_t destnode,
310                           const char *name, uint32_t *value);
311
312 int ctdb_ctrl_set_tunable(struct ctdb_context *ctdb,
313                           struct timeval timeout,
314                           uint32_t destnode,
315                           const char *name, uint32_t value);
316
317 int ctdb_ctrl_list_tunables(struct ctdb_context *ctdb,
318                             struct timeval timeout,
319                             uint32_t destnode,
320                             TALLOC_CTX *mem_ctx,
321                             const char ***list, uint32_t *count);
322
323 int ctdb_ctrl_modflags(struct ctdb_context *ctdb,
324                        struct timeval timeout,
325                        uint32_t destnode,
326                        uint32_t set, uint32_t clear);
327
328 int ctdb_ctrl_register_server_id(struct ctdb_context *ctdb,
329                 struct timeval timeout,
330                 struct ctdb_server_id *id);
331 int ctdb_ctrl_unregister_server_id(struct ctdb_context *ctdb,
332                 struct timeval timeout,
333                 struct ctdb_server_id *id);
334 int ctdb_ctrl_check_server_id(struct ctdb_context *ctdb,
335                 struct timeval timeout, uint32_t destnode,
336                 struct ctdb_server_id *id, uint32_t *status);
337 int ctdb_ctrl_get_server_id_list(struct ctdb_context *ctdb,
338                 TALLOC_CTX *mem_ctx,
339                 struct timeval timeout, uint32_t destnode,
340                 struct ctdb_server_id_list **svid_list);
341
342 int ctdb_socket_connect(struct ctdb_context *ctdb);
343
344 /*
345   get the uptime of a remote node
346  */
347 int ctdb_ctrl_uptime(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, uint32_t destnode, struct ctdb_uptime **uptime);
348
349 struct ctdb_client_control_state *ctdb_ctrl_uptime_send(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, uint32_t destnode);
350
351 int ctdb_ctrl_uptime_recv(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct ctdb_client_control_state *state, struct ctdb_uptime **uptime);
352
353 int ctdb_ctrl_end_recovery(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode);
354
355 int ctdb_ctrl_getreclock(struct ctdb_context *ctdb,
356         struct timeval timeout, uint32_t destnode,
357         TALLOC_CTX *mem_ctx, const char **reclock);
358 int ctdb_ctrl_setreclock(struct ctdb_context *ctdb,
359         struct timeval timeout, uint32_t destnode,
360         const char *reclock);
361
362 struct ctdb_node_capabilities {
363         bool retrieved;
364         uint32_t capabilities;
365 };
366
367 /* Retrieve capabilities for all connected nodes.  The length of the
368  * returned array can be calculated using talloc_array_length(). */
369 struct ctdb_node_capabilities *
370 ctdb_get_capabilities(struct ctdb_context *ctdb,
371                       TALLOC_CTX *mem_ctx,
372                       struct timeval timeout,
373                       struct ctdb_node_map *nodemap);
374
375 /* Get capabilities for specified node, NULL if not found */
376 uint32_t *
377 ctdb_get_node_capabilities(struct ctdb_node_capabilities *caps,
378                            uint32_t pnn);
379
380 /* True if the given node has all of the required capabilities */
381 bool ctdb_node_has_capabilities(struct ctdb_node_capabilities *caps,
382                                 uint32_t pnn,
383                                 uint32_t capabilities_required);
384
385 uint32_t *list_of_nodes(struct ctdb_context *ctdb,
386                         struct ctdb_node_map *node_map,
387                         TALLOC_CTX *mem_ctx,
388                         uint32_t mask,
389                         int exclude_pnn);
390 uint32_t *list_of_connected_nodes(struct ctdb_context *ctdb,
391                                 struct ctdb_node_map *node_map,
392                                 TALLOC_CTX *mem_ctx,
393                                 bool include_self);
394 uint32_t *list_of_active_nodes(struct ctdb_context *ctdb,
395                                 struct ctdb_node_map *node_map,
396                                 TALLOC_CTX *mem_ctx,
397                                 bool include_self);
398 uint32_t *list_of_vnnmap_nodes(struct ctdb_context *ctdb,
399                                 struct ctdb_vnn_map *vnn_map,
400                                 TALLOC_CTX *mem_ctx,
401                                 bool include_self);
402
403 int ctdb_read_pnn_lock(int fd, int32_t pnn);
404
405 /*
406   get capabilities of a remote node
407  */
408 int ctdb_ctrl_getcapabilities(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t *capabilities);
409
410 struct ctdb_client_control_state *ctdb_ctrl_getcapabilities_send(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, uint32_t destnode);
411
412 int ctdb_ctrl_getcapabilities_recv(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct ctdb_client_control_state *state, uint32_t *capabilities);
413
414 struct ctdb_transaction_handle *ctdb_transaction_start(struct ctdb_db_context *ctdb_db,
415                                                        TALLOC_CTX *mem_ctx);
416 int ctdb_transaction_fetch(struct ctdb_transaction_handle *h,
417                            TALLOC_CTX *mem_ctx,
418                            TDB_DATA key, TDB_DATA *data);
419 int ctdb_transaction_store(struct ctdb_transaction_handle *h,
420                            TDB_DATA key, TDB_DATA data);
421 int ctdb_transaction_commit(struct ctdb_transaction_handle *h);
422 int ctdb_transaction_cancel(struct ctdb_transaction_handle *h);
423
424 int ctdb_ctrl_recd_ping(struct ctdb_context *ctdb);
425
426 int switch_from_server_to_client(struct ctdb_context *ctdb, const char *fmt,
427                                  ...);
428
429 int ctdb_ctrl_getscriptstatus(struct ctdb_context *ctdb,
430                     struct timeval timeout, uint32_t destnode,
431                     TALLOC_CTX *mem_ctx, enum ctdb_eventscript_call type,
432                     struct ctdb_scripts_wire **script_status);
433
434
435 int ctdb_ctrl_stop_node(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode);
436 int ctdb_ctrl_continue_node(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode);
437
438 int ctdb_ctrl_setnatgwstate(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t natgwstate);
439 int ctdb_ctrl_setlmasterrole(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t lmasterrole);
440 int ctdb_ctrl_setrecmasterrole(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t recmasterrole);
441
442 int ctdb_ctrl_enablescript(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, const char *script);
443 int ctdb_ctrl_disablescript(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, const char *script);
444
445 int ctdb_ctrl_set_ban(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, struct ctdb_ban_time *bantime);
446 int ctdb_ctrl_get_ban(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, TALLOC_CTX *mem_ctx, struct ctdb_ban_time **bantime);
447
448 int ctdb_ctrl_set_db_priority(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, struct ctdb_db_priority *db_prio);
449 int ctdb_ctrl_get_db_priority(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t db_id, uint32_t *priority);
450
451 int ctdb_ctrl_getstathistory(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, TALLOC_CTX *mem_ctx, struct ctdb_statistics_wire **stats);
452
453
454
455 struct ctdb_client_control_state *
456 ctdb_ctrl_updaterecord_send(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, uint32_t destnode, struct ctdb_db_context *ctdb_db, TDB_DATA key, struct ctdb_ltdb_header *header, TDB_DATA data);
457
458 int ctdb_ctrl_updaterecord_recv(struct ctdb_context *ctdb, struct ctdb_client_control_state *state);
459
460 int
461 ctdb_ctrl_updaterecord(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, struct timeval timeout, uint32_t destnode, struct ctdb_db_context *ctdb_db, TDB_DATA key, struct ctdb_ltdb_header *header, TDB_DATA data);
462
463
464 struct ctdb_client_control_state *
465 ctdb_ctrl_set_db_readonly_send(struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid);
466 int ctdb_ctrl_set_db_readonly_recv(struct ctdb_context *ctdb, struct ctdb_client_control_state *state);
467 int ctdb_ctrl_set_db_readonly(struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid);
468
469 struct ctdb_client_control_state *
470 ctdb_ctrl_set_db_sticky_send(struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid);
471 int ctdb_ctrl_set_db_sticky_recv(struct ctdb_context *ctdb, struct ctdb_client_control_state *state);
472 int ctdb_ctrl_set_db_sticky(struct ctdb_context *ctdb, uint32_t destnode, uint32_t dbid);
473
474 #endif /* _CTDB_CLIENT_H */