📄 ctdb_private.h
字号:
allocate a packet for use in client<->daemon communication */struct ctdb_req_header *_ctdbd_allocate_pkt(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, enum ctdb_operation operation, size_t length, size_t slength, const char *type);#define ctdbd_allocate_pkt(ctdb, mem_ctx, operation, length, type) \ (type *)_ctdbd_allocate_pkt(ctdb, mem_ctx, operation, length, sizeof(type), #type)struct ctdb_req_header *_ctdb_transport_allocate(struct ctdb_context *ctdb, TALLOC_CTX *mem_ctx, enum ctdb_operation operation, size_t length, size_t slength, const char *type);#define ctdb_transport_allocate(ctdb, mem_ctx, operation, length, type) \ (type *)_ctdb_transport_allocate(ctdb, mem_ctx, operation, length, sizeof(type), #type)/* lock a record in the ltdb, given a key */int ctdb_ltdb_lock(struct ctdb_db_context *ctdb_db, TDB_DATA key);/* unlock a record in the ltdb, given a key */int ctdb_ltdb_unlock(struct ctdb_db_context *ctdb_db, TDB_DATA key);/* make a ctdb call to the local daemon - async send. Called from client context. This constructs a ctdb_call request and queues it for processing. This call never blocks.*/struct ctdb_call_state *ctdb_client_call_send(struct ctdb_db_context *ctdb_db, struct ctdb_call *call);/* make a recv call to the local ctdb daemon - called from client context This is called when the program wants to wait for a ctdb_call to complete and get the results. This call will block unless the call has already completed.*/int ctdb_client_call_recv(struct ctdb_call_state *state, struct ctdb_call *call);int ctdb_daemon_set_message_handler(struct ctdb_context *ctdb, uint64_t srvid, ctdb_message_fn_t handler, void *private_data);int ctdb_client_send_message(struct ctdb_context *ctdb, uint32_t vnn, uint64_t srvid, TDB_DATA data);/* send a ctdb message*/int ctdb_daemon_send_message(struct ctdb_context *ctdb, uint32_t vnn, uint64_t srvid, TDB_DATA data);struct lockwait_handle *ctdb_lockwait(struct ctdb_db_context *ctdb_db, TDB_DATA key, void (*callback)(void *), void *private_data);struct ctdb_call_state *ctdb_daemon_call_send(struct ctdb_db_context *ctdb_db, struct ctdb_call *call);int ctdb_daemon_call_recv(struct ctdb_call_state *state, struct ctdb_call *call);struct ctdb_call_state *ctdb_daemon_call_send_remote(struct ctdb_db_context *ctdb_db, struct ctdb_call *call, struct ctdb_ltdb_header *header);int ctdb_call_local(struct ctdb_db_context *ctdb_db, struct ctdb_call *call, struct ctdb_ltdb_header *header, TALLOC_CTX *mem_ctx, TDB_DATA *data, uint32_t caller);#define ctdb_reqid_find(ctdb, reqid, type) (type *)_ctdb_reqid_find(ctdb, reqid, #type, __location__)void ctdb_recv_raw_pkt(void *p, uint8_t *data, uint32_t length);int ctdb_socket_connect(struct ctdb_context *ctdb);void ctdb_latency(double *latency, struct timeval t);uint32_t ctdb_reqid_new(struct ctdb_context *ctdb, void *state);void *_ctdb_reqid_find(struct ctdb_context *ctdb, uint32_t reqid, const char *type, const char *location);void ctdb_reqid_remove(struct ctdb_context *ctdb, uint32_t reqid);void ctdb_request_control(struct ctdb_context *ctdb, struct ctdb_req_header *hdr);void ctdb_reply_control(struct ctdb_context *ctdb, struct ctdb_req_header *hdr);int ctdb_daemon_send_control(struct ctdb_context *ctdb, uint32_t destnode, uint64_t srvid, uint32_t opcode, uint32_t client_id, uint32_t flags, TDB_DATA data, ctdb_control_callback_fn_t callback, void *private_data);int32_t ctdb_control_db_attach(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata);int ctdb_daemon_set_call(struct ctdb_context *ctdb, uint32_t db_id, ctdb_fn_t fn, int id);int ctdb_control(struct ctdb_context *ctdb, uint32_t destnode, uint64_t srvid, uint32_t opcode, uint32_t flags, TDB_DATA data, TALLOC_CTX *mem_ctx, TDB_DATA *outdata, int32_t *status, struct timeval *timeout, char **errormsg);#define CHECK_CONTROL_DATA_SIZE(size) do { \ if (indata.dsize != size) { \ DEBUG(0,(__location__ " Invalid data size in opcode %u. Got %u expected %u\n", \ opcode, (unsigned)indata.dsize, (unsigned)size)); \ return -1; \ } \ } while (0)int ctdb_control_getvnnmap(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indata, TDB_DATA *outdata);int ctdb_control_setvnnmap(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indata, TDB_DATA *outdata);int ctdb_control_getdbmap(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indata, TDB_DATA *outdata);int ctdb_control_getnodemap(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indata, TDB_DATA *outdata);int ctdb_control_writerecord(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indata, TDB_DATA *outdata);struct ctdb_traverse_start { uint32_t db_id; uint32_t reqid; uint64_t srvid;};/* structure used to pass record data between the child and parent */struct ctdb_rec_data { uint32_t length; uint32_t reqid; uint32_t keylen; uint32_t datalen; uint8_t data[1];}; /* structure used for pulldb control */struct ctdb_control_pulldb { uint32_t db_id; uint32_t lmaster;};/* structure used for pulldb control */struct ctdb_control_pulldb_reply { uint32_t db_id; uint32_t count; uint8_t data[1];};/* set dmaster control structure */struct ctdb_control_set_dmaster { uint32_t db_id; uint32_t dmaster;};/* structure for setting a tunable */struct ctdb_control_set_tunable { uint32_t value; uint32_t length; uint8_t name[1];};/* structure for getting a tunable */struct ctdb_control_get_tunable { uint32_t length; uint8_t name[1];};/* structure for listing tunables */struct ctdb_control_list_tunable { uint32_t length; /* returns a : separated list of tunable names */ uint8_t data[1];};/* table that contains a list of all nodes a ctdb knows about and their status */struct ctdb_node_and_flags { uint32_t vnn; uint32_t flags; struct sockaddr_in sin;};struct ctdb_node_map { uint32_t num; struct ctdb_node_and_flags nodes[1];};int32_t ctdb_control_traverse_start(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata, uint32_t srcnode);int32_t ctdb_control_traverse_all(struct ctdb_context *ctdb, TDB_DATA data, TDB_DATA *outdata);int32_t ctdb_control_traverse_data(struct ctdb_context *ctdb, TDB_DATA data, TDB_DATA *outdata);int ctdb_dispatch_message(struct ctdb_context *ctdb, uint64_t srvid, TDB_DATA data);int daemon_register_message_handler(struct ctdb_context *ctdb, uint32_t client_id, uint64_t srvid);int ctdb_deregister_message_handler(struct ctdb_context *ctdb, uint64_t srvid, void *private_data);int daemon_deregister_message_handler(struct ctdb_context *ctdb, uint32_t client_id, uint64_t srvid);int32_t ctdb_ltdb_enable_seqnum(struct ctdb_context *ctdb, uint32_t db_id);int32_t ctdb_ltdb_update_seqnum(struct ctdb_context *ctdb, uint32_t db_id, uint32_t srcnode);int32_t ctdb_ltdb_set_seqnum_frequency(struct ctdb_context *ctdb, uint32_t frequency);struct ctdb_rec_data *ctdb_marshall_record(TALLOC_CTX *mem_ctx, uint32_t reqid, TDB_DATA key, TDB_DATA data);int32_t ctdb_control_pull_db(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata);int32_t ctdb_control_push_db(struct ctdb_context *ctdb, TDB_DATA indata);int32_t ctdb_control_set_dmaster(struct ctdb_context *ctdb, TDB_DATA indata);int32_t ctdb_control_set_recmode(struct ctdb_context *ctdb, struct ctdb_req_control *c, TDB_DATA indata, bool *async_reply, const char **errormsg);void ctdb_request_control_reply(struct ctdb_context *ctdb, struct ctdb_req_control *c, TDB_DATA *outdata, int32_t status, const char *errormsg);int32_t ctdb_control_freeze(struct ctdb_context *ctdb, struct ctdb_req_control *c, bool *async_reply);int32_t ctdb_control_thaw(struct ctdb_context *ctdb);int ctdb_start_recoverd(struct ctdb_context *ctdb);uint32_t ctdb_get_num_active_nodes(struct ctdb_context *ctdb);void ctdb_stop_monitoring(struct ctdb_context *ctdb);void ctdb_start_monitoring(struct ctdb_context *ctdb);void ctdb_start_tcp_tickle_update(struct ctdb_context *ctdb);void ctdb_send_keepalive(struct ctdb_context *ctdb, uint32_t destnode);void ctdb_daemon_cancel_controls(struct ctdb_context *ctdb, struct ctdb_node *node);void ctdb_call_resend_all(struct ctdb_context *ctdb);void ctdb_node_dead(struct ctdb_node *node);void ctdb_node_connected(struct ctdb_node *node);bool ctdb_blocking_freeze(struct ctdb_context *ctdb);int32_t ctdb_control_max_rsn(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata);int32_t ctdb_control_set_rsn_nonempty(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata);int32_t ctdb_control_delete_low_rsn(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata);int ctdb_ctrl_get_max_rsn(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t db_id, uint64_t *max_rsn);int ctdb_ctrl_set_rsn_nonempty(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t db_id, uint64_t rsn);int ctdb_ctrl_delete_low_rsn(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, uint32_t db_id, uint64_t rsn);void ctdb_set_scheduler(struct ctdb_context *ctdb);void ctdb_restore_scheduler(struct ctdb_context *ctdb);int32_t ctdb_control_takeover_ip(struct ctdb_context *ctdb, struct ctdb_req_control *c, TDB_DATA indata, bool *async_reply);int32_t ctdb_control_release_ip(struct ctdb_context *ctdb, struct ctdb_req_control *c, TDB_DATA indata, bool *async_reply);struct ctdb_public_ip { uint32_t vnn; uint32_t takeover_vnn; struct sockaddr_in sin;};int ctdb_ctrl_takeover_ip(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, struct ctdb_public_ip *ip);int ctdb_ctrl_release_ip(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, struct ctdb_public_ip *ip);struct ctdb_all_public_ips { uint32_t num; struct ctdb_public_ip ips[1];};int32_t ctdb_control_get_public_ips(struct ctdb_context *ctdb, struct ctdb_req_control *c, TDB_DATA *outdata);int ctdb_ctrl_get_public_ips(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, TALLOC_CTX *mem_ctx, struct ctdb_all_public_ips **ips);/* from takeover/system.c */int ctdb_sys_send_arp(const struct sockaddr_in *saddr, const char *iface);bool ctdb_sys_have_ip(const char *ip);int ctdb_sys_send_tcp(int fd, const struct sockaddr_in *dest, const struct sockaddr_in *src, uint32_t seq, uint32_t ack, int rst);int ctdb_set_public_addresses(struct ctdb_context *ctdb, const char *alist);int ctdb_set_event_script(struct ctdb_context *ctdb, const char *script);int ctdb_takeover_run(struct ctdb_context *ctdb, struct ctdb_node_map *nodemap);int32_t ctdb_control_tcp_client(struct ctdb_context *ctdb, uint32_t client_id, TDB_DATA indata);int32_t ctdb_control_tcp_add(struct ctdb_context *ctdb, TDB_DATA indata);int32_t ctdb_control_tcp_remove(struct ctdb_context *ctdb, TDB_DATA indata);int32_t ctdb_control_startup(struct ctdb_context *ctdb, uint32_t vnn);int32_t ctdb_control_kill_tcp(struct ctdb_context *ctdb, TDB_DATA indata);int32_t ctdb_control_get_tcp_tickle_list(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata);int32_t ctdb_control_set_tcp_tickle_list(struct ctdb_context *ctdb, TDB_DATA indata);void ctdb_takeover_client_destructor_hook(struct ctdb_client *client);int ctdb_event_script(struct ctdb_context *ctdb, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);int ctdb_event_script_callback(struct ctdb_context *ctdb, struct timeval timeout, TALLOC_CTX *mem_ctx, void (*callback)(struct ctdb_context *, int, void *), void *private_data, const char *fmt, ...) PRINTF_ATTRIBUTE(6,7);void ctdb_release_all_ips(struct ctdb_context *ctdb);void set_nonblocking(int fd);void set_close_on_exec(int fd);bool ctdb_recovery_lock(struct ctdb_context *ctdb, bool keep);int ctdb_set_recovery_lock_file(struct ctdb_context *ctdb, const char *file);int32_t ctdb_control_get_tunable(struct ctdb_context *ctdb, TDB_DATA indata, TDB_DATA *outdata);int32_t ctdb_control_set_tunable(struct ctdb_context *ctdb, TDB_DATA indata);int32_t ctdb_control_list_tunables(struct ctdb_context *ctdb, TDB_DATA *outdata);void ctdb_tunables_set_defaults(struct ctdb_context *ctdb);int32_t ctdb_control_modflags(struct ctdb_context *ctdb, TDB_DATA indata);int ctdb_ctrl_get_all_tunables(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, struct ctdb_tunable *tunables);void ctdb_start_freeze(struct ctdb_context *ctdb);bool parse_ip_port(const char *s, struct sockaddr_in *ip);int ctdb_sys_open_capture_socket(const char *iface, void **private_data);int ctdb_sys_close_capture_socket(void *private_data);int ctdb_sys_open_sending_socket(void);int ctdb_sys_read_tcp_packet(int s, void *private_data, struct sockaddr_in *src, struct sockaddr_in *dst, uint32_t *ack_seq, uint32_t *seq);int ctdb_ctrl_killtcp(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, struct ctdb_control_killtcp *killtcp);int ctdb_ctrl_get_tcp_tickles(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode, TALLOC_CTX *mem_ctx, uint32_t vnn, struct ctdb_control_tcp_tickle_list **list);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -