4 Copyright (C) Amitay Isaacs 2015
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, see <http://www.gnu.org/licenses/>.
20 #ifndef __CTDB_COMMON_H__
21 #define __CTDB_COMMON_H__
23 /* From common/ctdb_io.c */
25 typedef void (*ctdb_queue_cb_fn_t
)(uint8_t *data
, size_t length
,
28 int ctdb_queue_length(struct ctdb_queue
*queue
);
30 int ctdb_queue_send(struct ctdb_queue
*queue
, uint8_t *data
, uint32_t length
);
32 int ctdb_queue_set_fd(struct ctdb_queue
*queue
, int fd
);
34 struct ctdb_queue
*ctdb_queue_setup(struct ctdb_context
*ctdb
,
35 TALLOC_CTX
*mem_ctx
, int fd
, int alignment
,
36 ctdb_queue_cb_fn_t callback
,
37 void *private_data
, const char *fmt
, ...)
38 PRINTF_ATTRIBUTE(7,8);
40 /* From common/ctdb_ltdb.c */
42 int ctdb_db_tdb_flags(uint8_t db_flags
, bool with_valgrind
, bool with_mutex
);
44 struct ctdb_db_context
*ctdb_db_handle(struct ctdb_context
*ctdb
,
47 bool ctdb_db_persistent(struct ctdb_db_context
*ctdb_db
);
48 bool ctdb_db_replicated(struct ctdb_db_context
*ctdb_db
);
49 bool ctdb_db_volatile(struct ctdb_db_context
*ctdb_db
);
51 bool ctdb_db_readonly(struct ctdb_db_context
*ctdb_db
);
52 void ctdb_db_set_readonly(struct ctdb_db_context
*ctdb_db
);
53 void ctdb_db_reset_readonly(struct ctdb_db_context
*ctdb_db
);
55 bool ctdb_db_sticky(struct ctdb_db_context
*ctdb_db
);
56 void ctdb_db_set_sticky(struct ctdb_db_context
*ctdb_db
);
58 uint32_t ctdb_lmaster(struct ctdb_context
*ctdb
, const TDB_DATA
*key
);
60 int ctdb_ltdb_fetch(struct ctdb_db_context
*ctdb_db
,
61 TDB_DATA key
, struct ctdb_ltdb_header
*header
,
62 TALLOC_CTX
*mem_ctx
, TDB_DATA
*data
);
64 int ctdb_ltdb_fetch_with_header(struct ctdb_db_context
*ctdb_db
,
65 TDB_DATA key
, struct ctdb_ltdb_header
*header
,
66 TALLOC_CTX
*mem_ctx
, TDB_DATA
*data
);
68 int ctdb_ltdb_store(struct ctdb_db_context
*ctdb_db
, TDB_DATA key
,
69 struct ctdb_ltdb_header
*header
, TDB_DATA data
);
71 int ctdb_ltdb_lock(struct ctdb_db_context
*ctdb_db
, TDB_DATA key
);
73 int ctdb_ltdb_unlock(struct ctdb_db_context
*ctdb_db
, TDB_DATA key
);
75 int ctdb_ltdb_delete(struct ctdb_db_context
*ctdb_db
, TDB_DATA key
);
77 int ctdb_trackingdb_add_pnn(struct ctdb_context
*ctdb
, TDB_DATA
*data
, uint32_t pnn
);
79 typedef void (*ctdb_trackingdb_cb
)(struct ctdb_context
*ctdb
, uint32_t pnn
,
82 void ctdb_trackingdb_traverse(struct ctdb_context
*ctdb
, TDB_DATA data
,
83 ctdb_trackingdb_cb cb
, void *private_data
);
85 int ctdb_null_func(struct ctdb_call_info
*call
);
87 int ctdb_fetch_func(struct ctdb_call_info
*call
);
89 int ctdb_fetch_with_header_func(struct ctdb_call_info
*call
);
91 /* from common/ctdb_util.c */
93 const char *ctdb_errstr(struct ctdb_context
*ctdb
);
95 void ctdb_set_error(struct ctdb_context
*ctdb
, const char *fmt
, ...)
96 PRINTF_ATTRIBUTE(2,3);
98 void ctdb_fatal(struct ctdb_context
*ctdb
, const char *msg
);
100 void ctdb_die(struct ctdb_context
*ctdb
, const char *msg
);
102 bool ctdb_set_helper(const char *type
, char *helper
, size_t size
,
104 const char *dir
, const char *file
);
106 void ctdb_external_trace(void);
108 int ctdb_parse_address(TALLOC_CTX
*mem_ctx
, const char *str
,
109 ctdb_sock_addr
*address
);
111 bool ctdb_same_address(ctdb_sock_addr
*a1
, ctdb_sock_addr
*a2
);
113 uint32_t ctdb_hash(const TDB_DATA
*key
);
115 struct ctdb_rec_data_old
*ctdb_marshall_record(TALLOC_CTX
*mem_ctx
,
118 struct ctdb_ltdb_header
*header
,
121 struct ctdb_marshall_buffer
*ctdb_marshall_add(TALLOC_CTX
*mem_ctx
,
122 struct ctdb_marshall_buffer
*m
,
126 struct ctdb_ltdb_header
*header
,
129 TDB_DATA
ctdb_marshall_finish(struct ctdb_marshall_buffer
*m
);
131 struct ctdb_rec_data_old
*ctdb_marshall_loop_next(
132 struct ctdb_marshall_buffer
*m
,
133 struct ctdb_rec_data_old
*r
,
135 struct ctdb_ltdb_header
*header
,
136 TDB_DATA
*key
, TDB_DATA
*data
);
138 void ctdb_canonicalize_ip(const ctdb_sock_addr
*ip
, ctdb_sock_addr
*cip
);
140 bool ctdb_same_ip(const ctdb_sock_addr
*tip1
, const ctdb_sock_addr
*tip2
);
142 bool ctdb_same_sockaddr(const ctdb_sock_addr
*ip1
, const ctdb_sock_addr
*ip2
);
144 char *ctdb_addr_to_str(ctdb_sock_addr
*addr
);
146 unsigned ctdb_addr_to_port(ctdb_sock_addr
*addr
);
148 struct ctdb_node_map_old
*ctdb_read_nodes_file(TALLOC_CTX
*mem_ctx
,
151 struct ctdb_node_map_old
*ctdb_node_list_to_map(struct ctdb_node
**nodes
,
153 TALLOC_CTX
*mem_ctx
);
155 const char *runstate_to_string(enum ctdb_runstate runstate
);
157 enum ctdb_runstate
runstate_from_string(const char *label
);
159 void ctdb_set_runstate(struct ctdb_context
*ctdb
, enum ctdb_runstate runstate
);
161 uint32_t *ctdb_key_to_idkey(TALLOC_CTX
*mem_ctx
, TDB_DATA key
);
163 #endif /* __CTDB_COMMON_H__ */