34 #ifndef COROAPI_H_DEFINED
35 #define COROAPI_H_DEFINED
44 #include <qb/qbloop.h>
63 #ifndef TIMER_HANDLE_T
65 #define TIMER_HANDLE_T 1
73 #define TOTEMIP_ADDRLEN (sizeof(struct in6_addr))
75 #define INTERFACE_MAX 2
77 #ifndef MESSAGE_QUEUE_MAX
78 #ifdef HAVE_SMALL_MEMORY_FOOTPRINT
79 #define PROCESSOR_COUNT_MAX 16
80 #define MESSAGE_SIZE_MAX 1024*64
81 #define MESSAGE_QUEUE_MAX 512
83 #define PROCESSOR_COUNT_MAX 384
84 #define MESSAGE_SIZE_MAX 1024*1024
85 #define MESSAGE_QUEUE_MAX ((4 * MESSAGE_SIZE_MAX) / totem_config->net_mtu)
89 #define TOTEM_AGREED 0
92 #define MILLI_2_NANO_SECONDS 1000000ULL
94 #if !defined(TOTEM_IP_ADDRESS)
102 #if !defined(MEMB_RING_ID)
109 #if !defined(TOTEM_CONFIGURATION_TYPE)
116 #if !defined(TOTEM_CALLBACK_TOKEN_TYPE)
127 #define corosync_lib_flow_control cs_lib_flow_control
128 #define COROSYNC_LIB_FLOW_CONTROL_REQUIRED CS_LIB_FLOW_CONTROL_REQUIRED
129 #define COROSYNC_LIB_FLOW_CONTROL_NOT_REQUIRED CS_LIB_FLOW_CONTROL_NOT_REQUIRED
136 #if !defined (COROSYNC_FLOW_CONTROL_STATE)
141 #define corosync_flow_control_state cs_flow_control_state
142 #define CS_FLOW_CONTROL_STATE_DISABLED CS_FLOW_CONTROL_STATE_DISABLED
143 #define CS_FLOW_CONTROL_STATE_ENABLED CS_FLOW_CONTROL_STATE_ENABLED
157 #define corosync_fatal_error_t cs_fatal_error_t;
159 #ifndef QUORUM_H_DEFINED
163 int (*quorate) (void);
169 const unsigned int *view_list,
170 size_t view_list_entries,
171 int primary_designated,
182 unsigned long long nanoseconds_in_future,
184 void (*timer_nf) (
void *data),
185 corosync_timer_handle_t *handle);
188 unsigned long long nanoseconds_from_epoch,
190 void (*timer_fn) (
void *data),
191 corosync_timer_handle_t *handle);
194 corosync_timer_handle_t timer_handle);
199 corosync_timer_handle_t timer_handle);
208 void *(*ipc_private_data_get) (
void *conn);
213 const struct iovec *iov,
unsigned int iov_len);
218 const struct iovec *iov,
unsigned int iov_len);
234 unsigned int iov_len,
unsigned int guarantee);
239 unsigned int interfaces_size,
241 unsigned int *iface_count);
243 const char *(*totem_ifaces_print) (
unsigned int nodeid);
267 unsigned int msg_len,
268 int endian_conversion_required),
272 const unsigned int *member_list,
273 size_t member_list_entries,
274 const unsigned int *left_list,
275 size_t left_list_entries,
276 const unsigned int *joined_list,
277 size_t joined_list_entries,
294 void *totempg_groups_instance,
295 const struct iovec *iovec,
296 unsigned int iov_len,
300 void *totempg_groups_instance,
301 const struct iovec *iovec,
302 unsigned int iov_len);
312 const struct iovec *iovec,
313 unsigned int iov_len);
319 const struct iovec *iovec,
320 unsigned int iov_len);
327 int (schedwrk_fn) (
const void *),
328 const void *context);
333 const char *service_name);
352 const char *iface_name,
364 const char *service_name,
365 unsigned int service_ver);
368 struct corosync_api_v1 *corosync_api_v1,
369 const char *service_name,
370 unsigned int service_ver);
377 #define corosync_fatal_error(err) api->fatal_error ((err), __FILE__, __LINE__)
386 qb_loop_t *(*poll_handle_get) (void);
388 void *(*totem_get_stats)(void);
392 int (schedwrk_fn) (
const void *),
393 const void *context);
400 int (*dispatch_fn) (
int fd,
411 #define SERVICE_ID_MAKE(a,b) ( ((a)<<16) | (b) )
413 #define SERVICE_HANDLER_MAXIMUM_COUNT 64
415 #define SERVICES_COUNT_MAX 64
440 char *(*exec_init_fn) (
struct corosync_api_v1 *);
452 const unsigned int *member_list,
size_t member_list_entries,
453 const unsigned int *left_list,
size_t left_list_entries,
454 const unsigned int *joined_list,
size_t joined_list_entries,
457 const unsigned int *trans_list,
458 size_t trans_list_entries,
459 const unsigned int *member_list,
460 size_t member_list_entries,
int(* poll_dispatch_add)(qb_loop_t *handle, int fd, int events, void *data, int(*dispatch_fn)(int fd, int revents, void *data))
void(* schedwrk_destroy)(hdb_handle_t handle)
enum totem_configuration_type __attribute__
void(* timer_delete)(corosync_timer_handle_t timer_handle)
int(* timer_add_duration)(unsigned long long nanoseconds_in_future, void *data, void(*timer_nf)(void *data), corosync_timer_handle_t *handle)
#define CS_FLOW_CONTROL_STATE_DISABLED
int(* sync_request)(const char *service_name)
void(* exec_dump_fn)(void)
unsigned char addr[TOTEMIP_ADDRLEN]
void(* sync_init)(const unsigned int *trans_list, size_t trans_list_entries, const unsigned int *member_list, size_t member_list_entries, const struct memb_ring_id *ring_id)
void(* shutdown_request)(void)
int(* ipc_dispatch_iov_send)(void *conn, const struct iovec *iov, unsigned int iov_len)
int(* plugin_interface_reference)(hdb_handle_t *handle, const char *iface_name, int version, void **interface, void *context)
int(* ipc_response_send)(void *conn, const void *msg, size_t mlen)
void(* fatal_error)(cs_fatal_error_t err, const char *file, unsigned int line) __attribute__((noreturn))
unsigned int(* service_link_and_init)(struct corosync_api_v1 *corosync_api_v1, const char *service_name, unsigned int service_ver)
int(* totem_ifaces_get)(unsigned int nodeid, struct totem_ip_address *interfaces, unsigned int interfaces_size, char ***status, unsigned int *iface_count)
int(* quorum_register_callback)(quorum_callback_fn_t callback_fn, void *context)
enum cs_lib_flow_control flow_control
int(* tpg_groups_reserve)(void *instance, const struct corosync_tpg_group *groups, size_t groups_cnt, const struct iovec *iovec, unsigned int iov_len)
unsigned char addr[TOTEMIP_ADDRLEN]
void(* sync_activate)(void)
int(* plugin_interface_release)(hdb_handle_t handle)
void(* confchg_fn)(enum totem_configuration_type configuration_type, const unsigned int *member_list, size_t member_list_entries, const unsigned int *left_list, size_t left_list_entries, const unsigned int *joined_list, size_t joined_list_entries, const struct memb_ring_id *ring_id)
int(* totem_mcast)(const struct iovec *iovec, unsigned int iov_len, unsigned int guarantee)
unsigned long long(* timer_expire_time_get)(corosync_timer_handle_t timer_handle)
void(* exec_handler_fn)(const void *msg, unsigned int nodeid)
int(* tpg_joined_release)(int reserved_msgs)
int(* timer_add_absolute)(unsigned long long nanoseconds_from_epoch, void *data, void(*timer_fn)(void *data), corosync_timer_handle_t *handle)
int(* ipc_source_is_local)(const mar_message_source_t *source)
int(* lib_exit_fn)(void *conn)
int(* tpg_join)(void *instance, const struct corosync_tpg_group *groups, size_t group_cnt)
#define CS_FLOW_CONTROL_STATE_ENABLED
void(* error_memory_failure)(void) __attribute__((noreturn))
int(* totem_crypto_set)(const char *cipher_type, const char *hash_type)
struct corosync_exec_handler * exec_engine
struct corosync_lib_handler * lib_engine
int(* tpg_leave)(void *instance, const struct corosync_tpg_group *groups, size_t group_cnt)
unsigned int(* totem_nodeid_get)(void)
int(* sync_process)(void)
void(* ipc_refcnt_dec)(void *conn)
int(* quorum_initialize)(struct quorum_callin_functions *fns)
int(* config_init_fn)(struct corosync_api_v1 *)
struct totem_ip_address rep
int(* quorum_unregister_callback)(quorum_callback_fn_t callback_fn, void *context)
int(* tpg_groups_release)(int reserved_msgs)
void(* quorum_callback_fn_t)(int quorate, void *context)
int(* schedwrk_create)(hdb_handle_t *handle, int(schedwrk_fn)(const void *), const void *context)
void(* sync_callback_fn_t)(const unsigned int *view_list, size_t view_list_entries, int primary_designated, struct memb_ring_id *ring_id)
int(* totem_family_get)(void)
int(* schedwrk_create_nolock)(hdb_handle_t *handle, int(schedwrk_fn)(const void *), const void *context)
int(* quorum_is_quorate)(void)
int(* unregister_callback)(quorum_callback_fn_t callback_fn, void *context)
void(* exec_endian_convert_fn)(void *msg)
enum cs_lib_allow_inquorate allow_inquorate
int(* register_callback)(quorum_callback_fn_t callback_fn, void *contexxt)
qb_loop_timer_handle corosync_timer_handle_t
int(* lib_init_fn)(void *conn)
int(* tpg_groups_mcast)(void *instance, int guarantee, const struct corosync_tpg_group *groups, size_t groups_cnt, const struct iovec *iovec, unsigned int iov_len)
enum cs_lib_flow_control flow_control
int(* totem_ring_reenable)(void)
unsigned long long(* timer_time_get)(void)
void(* lib_handler_fn)(void *conn, const void *msg)
int(* ipc_response_iov_send)(void *conn, const struct iovec *iov, unsigned int iov_len)
int(* ipc_dispatch_send)(void *conn, const void *msg, size_t mlen)
int(* totem_callback_token_create)(void **handle_out, enum totem_callback_token_type type, int delete, int(*callback_fn)(enum totem_callback_token_type type, const void *), const void *data)
unsigned int private_data_size
int(* tpg_init)(void **instance, void(*deliver_fn)(unsigned int nodeid, const void *msg, unsigned int msg_len, int endian_conversion_required), void(*confchg_fn)(enum totem_configuration_type configuration_type, const unsigned int *member_list, size_t member_list_entries, const unsigned int *left_list, size_t left_list_entries, const unsigned int *joined_list, size_t joined_list_entries, const struct memb_ring_id *ring_id))
int(* exec_exit_fn)(void)
struct memb_ring_id ring_id
int(* poll_dispatch_delete)(qb_loop_t *handle, int fd)
int(* tpg_joined_reserve)(void *totempg_groups_instance, const struct iovec *iovec, unsigned int iov_len)
void(* ipc_source_set)(mar_message_source_t *source, void *conn)
unsigned int(* service_unlink_and_exit)(struct corosync_api_v1 *corosync_api_v1, const char *service_name, unsigned int service_ver)
int(* tpg_exit)(void *instance)
int(* tpg_joined_mcast)(void *totempg_groups_instance, const struct iovec *iovec, unsigned int iov_len, int guarantee)
totem_callback_token_type
void(* ipc_refcnt_inc)(void *conn)