libctdb: add ctdb arg to more functions.
[ctdb.git] / libctdb / control.c
1 /*
2    Misc control routines of libctdb
3
4    Copyright (C) Rusty Russell 2010
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 #include <ctdb.h>
20 #include <ctdb_protocol.h>
21 #include "libctdb_private.h"
22
23 /* Remove type-safety macros. */
24 #undef ctdb_getrecmaster_send
25 #undef ctdb_getpnn_send
26
27 int ctdb_getrecmaster_recv(struct ctdb_connection *ctdb,
28                            struct ctdb_request *req, uint32_t *recmaster)
29 {
30         struct ctdb_reply_control *reply;
31
32         reply = unpack_reply_control(ctdb, req, CTDB_CONTROL_GET_RECMASTER);
33         if (!reply || reply->status == -1)
34                 return -1;
35         *recmaster = reply->status;
36         return 0;
37 }
38
39 struct ctdb_request *ctdb_getrecmaster_send(struct ctdb_connection *ctdb,
40                                             uint32_t destnode,
41                                             ctdb_callback_t callback,
42                                             void *private_data)
43 {
44         return new_ctdb_control_request(ctdb, CTDB_CONTROL_GET_RECMASTER,
45                                         destnode, NULL, 0,
46                                         callback, private_data);
47 }
48
49 int ctdb_getpnn_recv(struct ctdb_connection *ctdb,
50                      struct ctdb_request *req, uint32_t *pnn)
51 {
52         struct ctdb_reply_control *reply;
53
54         reply = unpack_reply_control(ctdb, req, CTDB_CONTROL_GET_PNN);
55         if (!reply || reply->status == -1)
56                 return -1;
57         *pnn = reply->status;
58         return 0;
59 }
60
61 struct ctdb_request *ctdb_getpnn_send(struct ctdb_connection *ctdb,
62                                       uint32_t destnode,
63                                       ctdb_callback_t callback,
64                                       void *private_data)
65 {
66         return new_ctdb_control_request(ctdb, CTDB_CONTROL_GET_PNN, destnode,
67                                         NULL, 0, callback, private_data);
68 }