smbd: trigger NOTIFY_ACTION_DIRLEASE_BREAK when closing a modified file
[samba4-gss.git] / ctdb / common / common.h
blob1f6f937663c8471d5dbb2de7f877a47e61df49ca
1 /*
2 ctdb database library
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 #include "lib/util/attr.h"
25 /* From common/ctdb_io.c */
27 typedef void (*ctdb_queue_cb_fn_t)(uint8_t *data, size_t length,
28 void *private_data);
30 uint32_t ctdb_queue_length(struct ctdb_queue *queue);
32 int ctdb_queue_send(struct ctdb_queue *queue, uint8_t *data, uint32_t length);
34 int ctdb_queue_set_fd(struct ctdb_queue *queue, int fd);
36 struct ctdb_queue *ctdb_queue_setup(struct ctdb_context *ctdb,
37 TALLOC_CTX *mem_ctx, int fd, int alignment,
38 ctdb_queue_cb_fn_t callback,
39 void *private_data, const char *fmt, ...)
40 PRINTF_ATTRIBUTE(7,8);
42 /* From common/ctdb_ltdb.c */
44 int ctdb_db_tdb_flags(uint8_t db_flags, bool with_valgrind, bool with_mutex);
46 struct ctdb_db_context *ctdb_db_handle(struct ctdb_context *ctdb,
47 const char *name);
49 bool ctdb_db_persistent(struct ctdb_db_context *ctdb_db);
50 bool ctdb_db_replicated(struct ctdb_db_context *ctdb_db);
51 bool ctdb_db_volatile(struct ctdb_db_context *ctdb_db);
53 bool ctdb_db_readonly(struct ctdb_db_context *ctdb_db);
54 void ctdb_db_set_readonly(struct ctdb_db_context *ctdb_db);
55 void ctdb_db_reset_readonly(struct ctdb_db_context *ctdb_db);
57 bool ctdb_db_sticky(struct ctdb_db_context *ctdb_db);
58 void ctdb_db_set_sticky(struct ctdb_db_context *ctdb_db);
60 uint32_t ctdb_lmaster(struct ctdb_context *ctdb, const TDB_DATA *key);
62 int ctdb_ltdb_fetch(struct ctdb_db_context *ctdb_db,
63 TDB_DATA key, struct ctdb_ltdb_header *header,
64 TALLOC_CTX *mem_ctx, TDB_DATA *data);
66 int ctdb_ltdb_store(struct ctdb_db_context *ctdb_db, TDB_DATA key,
67 struct ctdb_ltdb_header *header, TDB_DATA data);
69 int ctdb_ltdb_lock(struct ctdb_db_context *ctdb_db, TDB_DATA key);
71 int ctdb_ltdb_unlock(struct ctdb_db_context *ctdb_db, TDB_DATA key);
73 int ctdb_ltdb_delete(struct ctdb_db_context *ctdb_db, TDB_DATA key);
75 int ctdb_trackingdb_add_pnn(struct ctdb_context *ctdb, TDB_DATA *data, uint32_t pnn);
77 typedef void (*ctdb_trackingdb_cb)(struct ctdb_context *ctdb, uint32_t pnn,
78 void *private_data);
80 void ctdb_trackingdb_traverse(struct ctdb_context *ctdb, TDB_DATA data,
81 ctdb_trackingdb_cb cb, void *private_data);
83 int ctdb_null_func(struct ctdb_call_info *call);
85 int ctdb_fetch_func(struct ctdb_call_info *call);
87 int ctdb_fetch_with_header_func(struct ctdb_call_info *call);
89 /* from common/ctdb_util.c */
91 const char *ctdb_errstr(struct ctdb_context *ctdb);
93 void ctdb_set_error(struct ctdb_context *ctdb, const char *fmt, ...)
94 PRINTF_ATTRIBUTE(2,3);
96 void ctdb_fatal(struct ctdb_context *ctdb, const char *msg) _NORETURN_;
98 void ctdb_die(struct ctdb_context *ctdb, const char *msg) _NORETURN_;
100 bool ctdb_set_helper(const char *type, char *helper, size_t size,
101 const char *envvar,
102 const char *dir, const char *file);
104 bool ctdb_same_address(ctdb_sock_addr *a1, ctdb_sock_addr *a2);
106 uint32_t ctdb_hash(const TDB_DATA *key);
108 struct ctdb_rec_data_old *ctdb_marshall_record(TALLOC_CTX *mem_ctx,
109 uint32_t reqid,
110 TDB_DATA key,
111 struct ctdb_ltdb_header *header,
112 TDB_DATA data);
114 struct ctdb_marshall_buffer *ctdb_marshall_add(TALLOC_CTX *mem_ctx,
115 struct ctdb_marshall_buffer *m,
116 uint32_t db_id,
117 uint32_t reqid,
118 TDB_DATA key,
119 struct ctdb_ltdb_header *header,
120 TDB_DATA data);
122 TDB_DATA ctdb_marshall_finish(struct ctdb_marshall_buffer *m);
124 struct ctdb_rec_data_old *ctdb_marshall_loop_next(
125 struct ctdb_marshall_buffer *m,
126 struct ctdb_rec_data_old *r,
127 uint32_t *reqid,
128 struct ctdb_ltdb_header *header,
129 TDB_DATA *key, TDB_DATA *data);
131 void ctdb_canonicalize_ip(const ctdb_sock_addr *ip, ctdb_sock_addr *cip);
132 void ctdb_canonicalize_ip_inplace(ctdb_sock_addr *ip);
134 bool ctdb_same_ip(const ctdb_sock_addr *tip1, const ctdb_sock_addr *tip2);
136 bool ctdb_same_sockaddr(const ctdb_sock_addr *ip1, const ctdb_sock_addr *ip2);
138 char *ctdb_addr_to_str(ctdb_sock_addr *addr);
140 unsigned ctdb_addr_to_port(ctdb_sock_addr *addr);
142 struct ctdb_node_map_old *ctdb_node_list_to_map(struct ctdb_node **nodes,
143 uint32_t num_nodes,
144 TALLOC_CTX *mem_ctx);
146 void ctdb_set_runstate(struct ctdb_context *ctdb, enum ctdb_runstate runstate);
148 uint32_t *ctdb_key_to_idkey(TALLOC_CTX *mem_ctx, TDB_DATA key);
150 #endif /* __CTDB_COMMON_H__ */