corosync 3.1.7
coroapi.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2008-2012 Red Hat, Inc.
3 *
4 * All rights reserved.
5 *
6 * Author: Steven Dake (sdake@redhat.com)
7 *
8 * This software licensed under BSD license, the text of which follows:
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions are met:
12 *
13 * - Redistributions of source code must retain the above copyright notice,
14 * this list of conditions and the following disclaimer.
15 * - Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 * - Neither the name of the MontaVista Software, Inc. nor the names of its
19 * contributors may be used to endorse or promote products derived from this
20 * software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32 * THE POSSIBILITY OF SUCH DAMAGE.
33 */
34#ifndef COROAPI_H_DEFINED
35#define COROAPI_H_DEFINED
36
37#include <config.h>
38
39#include <stdio.h>
40#ifdef HAVE_SYS_UIO_H
41#include <sys/uio.h>
42#endif
43#include <corosync/hdb.h>
44#include <qb/qbloop.h>
45#include <corosync/swab.h>
46
50typedef struct {
51 uint32_t nodeid __attribute__((aligned(8)));
52 void *conn __attribute__((aligned(8)));
54
59static inline void swab_mar_message_source_t (mar_message_source_t *to_swab)
60{
61 swab32 (to_swab->nodeid);
62 /*
63 * if it is from a byteswapped machine, then we can safely
64 * ignore its conn info data structure since this is only
65 * local to the machine
66 */
67 to_swab->conn = NULL;
68}
69
70#ifndef TIMER_HANDLE_T
74typedef qb_loop_timer_handle corosync_timer_handle_t;
75#define TIMER_HANDLE_T 1
76#endif
77
82 const void *group;
83 size_t group_len;
84};
85
86#define TOTEMIP_ADDRLEN (sizeof(struct in6_addr))
87
88#define INTERFACE_MAX 8
89
90#ifndef MESSAGE_QUEUE_MAX
91#ifdef HAVE_SMALL_MEMORY_FOOTPRINT
92#define PROCESSOR_COUNT_MAX 16
93#define MESSAGE_SIZE_MAX 1024*64
94#define MESSAGE_QUEUE_MAX 512
95#else
96#define PROCESSOR_COUNT_MAX 384
97#define MESSAGE_SIZE_MAX 1024*1024
98#define MESSAGE_QUEUE_MAX ((4 * MESSAGE_SIZE_MAX) / totem_config->net_mtu)
99#endif /* HAVE_SMALL_MEMORY_FOOTPRINT */
100#endif /* MESSAGE_QUEUE_MAX */
101
102#define TOTEM_AGREED 0
103#define TOTEM_SAFE 1
104
105#define MILLI_2_NANO_SECONDS 1000000ULL
106
107#if !defined(TOTEM_IP_ADDRESS)
112 unsigned int nodeid;
113 unsigned short family;
114 unsigned char addr[TOTEMIP_ADDRLEN];
115} __attribute__((packed));
116#endif
117
118#if !defined(MEMB_RING_ID)
123 unsigned int nodeid;
124 unsigned long long seq;
125} __attribute__((packed));
126#endif
127
128#if !defined(TOTEM_CONFIGURATION_TYPE)
136#endif
137
138#if !defined(TOTEM_CALLBACK_TOKEN_TYPE)
146#endif
147
155#define corosync_lib_flow_control cs_lib_flow_control
156#define COROSYNC_LIB_FLOW_CONTROL_REQUIRED CS_LIB_FLOW_CONTROL_REQUIRED
157#define COROSYNC_LIB_FLOW_CONTROL_NOT_REQUIRED CS_LIB_FLOW_CONTROL_NOT_REQUIRED
158
163 CS_LIB_DISALLOW_INQUORATE = 0, /* default */
166
167#if !defined (COROSYNC_FLOW_CONTROL_STATE)
175#define corosync_flow_control_state cs_flow_control_state
176#define CS_FLOW_CONTROL_STATE_DISABLED CS_FLOW_CONTROL_STATE_DISABLED
177#define CS_FLOW_CONTROL_STATE_ENABLED CS_FLOW_CONTROL_STATE_ENABLED
178
179#endif /* COROSYNC_FLOW_CONTROL_STATE */
183typedef enum {
193#define corosync_fatal_error_t cs_fatal_error_t;
194
195#ifndef QUORUM_H_DEFINED
199typedef void (*quorum_callback_fn_t) (int quorate, void *context);
200
205 int (*quorate) (void);
206 int (*register_callback) (quorum_callback_fn_t callback_fn, void *contexxt);
207 int (*unregister_callback) (quorum_callback_fn_t callback_fn, void *context);
208};
209
213typedef void (*sync_callback_fn_t) (
214 const unsigned int *view_list,
215 size_t view_list_entries,
216 int primary_designated,
217 struct memb_ring_id *ring_id);
218
219#endif /* QUORUM_H_DEFINED */
220
221
226 /*
227 * Time and timer APIs
228 */
230 unsigned long long nanoseconds_in_future,
231 void *data,
232 void (*timer_nf) (void *data),
234
236 unsigned long long nanoseconds_from_epoch,
237 void *data,
238 void (*timer_fn) (void *data),
240
241 void (*timer_delete) (
242 corosync_timer_handle_t timer_handle);
243
244 unsigned long long (*timer_time_get) (void);
245
246 unsigned long long (*timer_expire_time_get) (
247 corosync_timer_handle_t timer_handle);
248
249 /*
250 * IPC APIs
251 */
252 void (*ipc_source_set) (mar_message_source_t *source, void *conn);
253
255
256 void *(*ipc_private_data_get) (void *conn);
257
258 int (*ipc_response_send) (void *conn, const void *msg, size_t mlen);
259
260 int (*ipc_response_iov_send) (void *conn,
261 const struct iovec *iov, unsigned int iov_len);
262
263 int (*ipc_dispatch_send) (void *conn, const void *msg, size_t mlen);
264
265 int (*ipc_dispatch_iov_send) (void *conn,
266 const struct iovec *iov, unsigned int iov_len);
267
268 void (*ipc_refcnt_inc) (void *conn);
269
270 void (*ipc_refcnt_dec) (void *conn);
271
272 /*
273 * Totem APIs
274 */
275 unsigned int (*totem_nodeid_get) (void);
276
277 int (*totem_family_get) (void);
278
279 int (*totem_mcast) (const struct iovec *iovec,
280 unsigned int iov_len, unsigned int guarantee);
281
283 unsigned int nodeid,
284 unsigned int *interface_ids,
285 struct totem_ip_address *interfaces,
286 unsigned int interfaces_size,
287 char ***status,
288 unsigned int *iface_count);
289
290 const char *(*totem_ifaces_print) (unsigned int nodeid);
291
292 const char *(*totem_ip_print) (const struct totem_ip_address *addr);
293
294 int (*totem_crypto_set) (const char *cipher_type, const char *hash_type);
295
297 void **handle_out,
299 int delete,
300 int (*callback_fn) (enum totem_callback_token_type type,
301 const void *),
302 const void *data);
303
304 /*
305 * Totem open process groups API for those service engines
306 * wanting their own groups
307 */
308 int (*tpg_init) (
309 void **instance,
310
311 void (*deliver_fn) (
312 unsigned int nodeid,
313 const void *msg,
314 unsigned int msg_len,
315 int endian_conversion_required),
316
317 void (*confchg_fn) (
318 enum totem_configuration_type configuration_type,
319 const unsigned int *member_list,
320 size_t member_list_entries,
321 const unsigned int *left_list,
322 size_t left_list_entries,
323 const unsigned int *joined_list,
324 size_t joined_list_entries,
325 const struct memb_ring_id *ring_id));
326
327 int (*tpg_exit) (
328 void *instance);
329
330 int (*tpg_join) (
331 void *instance,
332 const struct corosync_tpg_group *groups,
333 size_t group_cnt);
334
335 int (*tpg_leave) (
336 void *instance,
337 const struct corosync_tpg_group *groups,
338 size_t group_cnt);
339
341 void *totempg_groups_instance,
342 const struct iovec *iovec,
343 unsigned int iov_len,
344 int guarantee);
345
347 void *totempg_groups_instance,
348 const struct iovec *iovec,
349 unsigned int iov_len);
350
352 int reserved_msgs);
353
355 void *instance,
356 int guarantee,
357 const struct corosync_tpg_group *groups,
358 size_t groups_cnt,
359 const struct iovec *iovec,
360 unsigned int iov_len);
361
363 void *instance,
364 const struct corosync_tpg_group *groups,
365 size_t groups_cnt,
366 const struct iovec *iovec,
367 unsigned int iov_len);
368
370 int reserved_msgs);
371
373 hdb_handle_t *handle,
374 int (schedwrk_fn) (const void *),
375 const void *context);
376
378
380 const char *service_name);
381
382 /*
383 * User plugin-callable functions for quorum
384 */
385 int (*quorum_is_quorate) (void);
386 int (*quorum_register_callback) (quorum_callback_fn_t callback_fn, void *context);
387 int (*quorum_unregister_callback) (quorum_callback_fn_t callback_fn, void *context);
388
389 /*
390 * This one is for the quorum management plugin's use
391 */
393
394 /*
395 * Plugin loading and unloading
396 */
398 hdb_handle_t *handle,
399 const char *iface_name,
400 int version,
401 void **interface,
402 void *context);
403
405
406 /*
407 * Service loading and unloading APIs
408 */
409 unsigned int (*service_link_and_init) (
411 const char *service_name,
412 unsigned int service_ver);
413
414 unsigned int (*service_unlink_and_exit) (
416 const char *service_name,
417 unsigned int service_ver);
418
419 /*
420 * Error handling APIs
421 */
422 void (*error_memory_failure) (void) __attribute__ ((noreturn));
423
424#define corosync_fatal_error(err) api->fatal_error ((err), __FILE__, __LINE__)
426 const char *file,
427 unsigned int line) __attribute__ ((noreturn));
428
429 void (*shutdown_request) (void);
430
431 void (*state_dump) (void);
432
433 qb_loop_t *(*poll_handle_get) (void);
434
435 void *(*totem_get_stats)(void);
436
438 hdb_handle_t *handle,
439 int (schedwrk_fn) (const void *),
440 const void *context);
441
442 int (*poll_dispatch_add) (qb_loop_t * handle,
443 int fd,
444 int events,
445 void *data,
446
447 int (*dispatch_fn) (int fd,
448 int revents,
449 void *data));
450
451
453 qb_loop_t * handle,
454 int fd);
455
456};
457
458#define SERVICE_ID_MAKE(a,b) ( ((a)<<16) | (b) )
459
460#define SERVICE_HANDLER_MAXIMUM_COUNT 64
461
462#define SERVICES_COUNT_MAX 64
463
468 void (*lib_handler_fn) (void *conn, const void *msg);
470};
471
476 void (*exec_handler_fn) (const void *msg, unsigned int nodeid);
477 void (*exec_endian_convert_fn) (void *msg);
478};
479
484 struct corosync_service_engine *(*corosync_get_service_engine_ver0) (void);
485};
486
491 const char *name;
492 unsigned short id;
493 unsigned short priority; /* Lower priority are loaded first, unloaded last.
494 * 0 is a special case which always loaded _and_ unloaded last
495 */
499 char *(*exec_init_fn) (struct corosync_api_v1 *);
500 int (*exec_exit_fn) (void);
501 void (*exec_dump_fn) (void);
502 int (*lib_init_fn) (void *conn);
503 int (*lib_exit_fn) (void *conn);
509 void (*confchg_fn) (
510 enum totem_configuration_type configuration_type,
511 const unsigned int *member_list, size_t member_list_entries,
512 const unsigned int *left_list, size_t left_list_entries,
513 const unsigned int *joined_list, size_t joined_list_entries,
514 const struct memb_ring_id *ring_id);
515 void (*sync_init) (
516 const unsigned int *trans_list,
517 size_t trans_list_entries,
518 const unsigned int *member_list,
519 size_t member_list_entries,
520 const struct memb_ring_id *ring_id);
521 int (*sync_process) (void);
522 void (*sync_activate) (void);
523 void (*sync_abort) (void);
524};
525
526#endif /* COROAPI_H_DEFINED */
totem_configuration_type
The totem_configuration_type enum.
Definition: coroapi.h:132
@ TOTEM_CONFIGURATION_REGULAR
Definition: coroapi.h:133
@ TOTEM_CONFIGURATION_TRANSITIONAL
Definition: coroapi.h:134
#define CS_FLOW_CONTROL_STATE_ENABLED
Definition: coroapi.h:177
cs_lib_allow_inquorate
The cs_lib_allow_inquorate enum.
Definition: coroapi.h:162
@ CS_LIB_DISALLOW_INQUORATE
Definition: coroapi.h:163
@ CS_LIB_ALLOW_INQUORATE
Definition: coroapi.h:164
qb_loop_timer_handle corosync_timer_handle_t
corosync_timer_handle_t
Definition: coroapi.h:74
unsigned int nodeid
Definition: coroapi.h:0
enum totem_configuration_type __attribute__
unsigned char addr[TOTEMIP_ADDRLEN]
Definition: coroapi.h:2
void(* quorum_callback_fn_t)(int quorate, void *context)
The quorum_callback_fn_t callback.
Definition: coroapi.h:199
totem_callback_token_type
The totem_callback_token_type enum.
Definition: coroapi.h:142
@ TOTEM_CALLBACK_TOKEN_SENT
Definition: coroapi.h:144
@ TOTEM_CALLBACK_TOKEN_RECEIVED
Definition: coroapi.h:143
cs_lib_flow_control
The cs_lib_flow_control enum.
Definition: coroapi.h:151
@ CS_LIB_FLOW_CONTROL_REQUIRED
Definition: coroapi.h:152
@ CS_LIB_FLOW_CONTROL_NOT_REQUIRED
Definition: coroapi.h:153
void(* sync_callback_fn_t)(const unsigned int *view_list, size_t view_list_entries, int primary_designated, struct memb_ring_id *ring_id)
The sync_callback_fn_t callback.
Definition: coroapi.h:213
cs_fatal_error_t
The cs_fatal_error_t enum.
Definition: coroapi.h:183
@ COROSYNC_DYNAMICLOAD
Definition: coroapi.h:189
@ COROSYNC_OUT_OF_MEMORY
Definition: coroapi.h:190
@ COROSYNC_READKEY
Definition: coroapi.h:187
@ COROSYNC_INVALID_CONFIG
Definition: coroapi.h:188
@ COROSYNC_LIBAIS_SOCKET
Definition: coroapi.h:185
@ COROSYNC_FATAL_ERR
Definition: coroapi.h:191
@ COROSYNC_LIBAIS_BIND
Definition: coroapi.h:186
@ COROSYNC_FATAL_ERROR_EXIT
Definition: coroapi.h:184
cs_flow_control_state
The cs_flow_control_state enum.
Definition: coroapi.h:171
#define CS_FLOW_CONTROL_STATE_DISABLED
Definition: coroapi.h:176
#define TOTEMIP_ADDRLEN
Definition: coroapi.h:86
qb_handle_t hdb_handle_t
Definition: hdb.h:52
uint32_t quorate
Definition: sam.c:134
The corosync_api_v1 struct.
Definition: coroapi.h:225
int(* timer_add_duration)(unsigned long long nanoseconds_in_future, void *data, void(*timer_nf)(void *data), corosync_timer_handle_t *handle)
Definition: coroapi.h:229
int(* totem_crypto_set)(const char *cipher_type, const char *hash_type)
Definition: coroapi.h:294
unsigned long long(* timer_time_get)(void)
Definition: coroapi.h:244
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)
Definition: coroapi.h:354
int(* totem_mcast)(const struct iovec *iovec, unsigned int iov_len, unsigned int guarantee)
Definition: coroapi.h:279
int(* poll_dispatch_delete)(qb_loop_t *handle, int fd)
Definition: coroapi.h:452
int(* quorum_initialize)(struct quorum_callin_functions *fns)
Definition: coroapi.h:392
int(* ipc_source_is_local)(const mar_message_source_t *source)
Definition: coroapi.h:254
int(* plugin_interface_reference)(hdb_handle_t *handle, const char *iface_name, int version, void **interface, void *context)
Definition: coroapi.h:397
void(* timer_delete)(corosync_timer_handle_t timer_handle)
Definition: coroapi.h:241
int(* tpg_join)(void *instance, const struct corosync_tpg_group *groups, size_t group_cnt)
Definition: coroapi.h:330
int(* tpg_joined_release)(int reserved_msgs)
Definition: coroapi.h:351
unsigned int(* totem_nodeid_get)(void)
Definition: coroapi.h:275
unsigned int(* service_link_and_init)(struct corosync_api_v1 *corosync_api_v1, const char *service_name, unsigned int service_ver)
Definition: coroapi.h:409
int(* tpg_groups_release)(int reserved_msgs)
Definition: coroapi.h:369
void(* fatal_error)(cs_fatal_error_t err, const char *file, unsigned int line) __attribute__((noreturn))
Definition: coroapi.h:425
int(* tpg_leave)(void *instance, const struct corosync_tpg_group *groups, size_t group_cnt)
Definition: coroapi.h:335
void(* ipc_refcnt_dec)(void *conn)
Definition: coroapi.h:270
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))
Definition: coroapi.h:308
void(* schedwrk_destroy)(hdb_handle_t handle)
Definition: coroapi.h:377
int(* ipc_response_iov_send)(void *conn, const struct iovec *iov, unsigned int iov_len)
Definition: coroapi.h:260
void(* ipc_source_set)(mar_message_source_t *source, void *conn)
Definition: coroapi.h:252
int(* schedwrk_create_nolock)(hdb_handle_t *handle, int(schedwrk_fn)(const void *), const void *context)
Definition: coroapi.h:437
void(* shutdown_request)(void)
Definition: coroapi.h:429
int(* totem_ifaces_get)(unsigned int nodeid, unsigned int *interface_ids, struct totem_ip_address *interfaces, unsigned int interfaces_size, char ***status, unsigned int *iface_count)
Definition: coroapi.h:282
int(* plugin_interface_release)(hdb_handle_t handle)
Definition: coroapi.h:404
int(* quorum_register_callback)(quorum_callback_fn_t callback_fn, void *context)
Definition: coroapi.h:386
void(* ipc_refcnt_inc)(void *conn)
Definition: coroapi.h:268
int(* tpg_exit)(void *instance)
Definition: coroapi.h:327
int(* ipc_dispatch_send)(void *conn, const void *msg, size_t mlen)
Definition: coroapi.h:263
int(* schedwrk_create)(hdb_handle_t *handle, int(schedwrk_fn)(const void *), const void *context)
Definition: coroapi.h:372
int(* tpg_joined_reserve)(void *totempg_groups_instance, const struct iovec *iovec, unsigned int iov_len)
Definition: coroapi.h:346
int(* tpg_joined_mcast)(void *totempg_groups_instance, const struct iovec *iovec, unsigned int iov_len, int guarantee)
Definition: coroapi.h:340
int(* totem_family_get)(void)
Definition: coroapi.h:277
int(* sync_request)(const char *service_name)
Definition: coroapi.h:379
int(* poll_dispatch_add)(qb_loop_t *handle, int fd, int events, void *data, int(*dispatch_fn)(int fd, int revents, void *data))
Definition: coroapi.h:442
unsigned long long(* timer_expire_time_get)(corosync_timer_handle_t timer_handle)
Definition: coroapi.h:246
int(* ipc_response_send)(void *conn, const void *msg, size_t mlen)
Definition: coroapi.h:258
void(* error_memory_failure)(void) __attribute__((noreturn))
Definition: coroapi.h:422
void(* state_dump)(void)
Definition: coroapi.h:431
int(* ipc_dispatch_iov_send)(void *conn, const struct iovec *iov, unsigned int iov_len)
Definition: coroapi.h:265
int(* tpg_groups_reserve)(void *instance, const struct corosync_tpg_group *groups, size_t groups_cnt, const struct iovec *iovec, unsigned int iov_len)
Definition: coroapi.h:362
int(* quorum_unregister_callback)(quorum_callback_fn_t callback_fn, void *context)
Definition: coroapi.h:387
unsigned int(* service_unlink_and_exit)(struct corosync_api_v1 *corosync_api_v1, const char *service_name, unsigned int service_ver)
Definition: coroapi.h:414
int(* quorum_is_quorate)(void)
Definition: coroapi.h:385
int(* timer_add_absolute)(unsigned long long nanoseconds_from_epoch, void *data, void(*timer_fn)(void *data), corosync_timer_handle_t *handle)
Definition: coroapi.h:235
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)
Definition: coroapi.h:296
The corosync_exec_handler struct.
Definition: coroapi.h:475
void(* exec_handler_fn)(const void *msg, unsigned int nodeid)
Definition: coroapi.h:476
void(* exec_endian_convert_fn)(void *msg)
Definition: coroapi.h:477
The corosync_lib_handler struct.
Definition: coroapi.h:467
enum cs_lib_flow_control flow_control
Definition: coroapi.h:469
void(* lib_handler_fn)(void *conn, const void *msg)
Definition: coroapi.h:468
The corosync_service_engine_iface_ver0 struct.
Definition: coroapi.h:483
The corosync_service_engine struct.
Definition: coroapi.h:490
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)
Definition: coroapi.h:515
unsigned short id
Definition: coroapi.h:492
int(* lib_exit_fn)(void *conn)
Definition: coroapi.h:503
int(* config_init_fn)(struct corosync_api_v1 *)
Definition: coroapi.h:508
unsigned short priority
Definition: coroapi.h:493
const char * name
Definition: coroapi.h:491
void(* sync_activate)(void)
Definition: coroapi.h:522
enum cs_lib_allow_inquorate allow_inquorate
Definition: coroapi.h:498
int(* lib_init_fn)(void *conn)
Definition: coroapi.h:502
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)
Definition: coroapi.h:509
void(* sync_abort)(void)
Definition: coroapi.h:523
enum cs_lib_flow_control flow_control
Definition: coroapi.h:497
struct corosync_exec_handler * exec_engine
Definition: coroapi.h:506
int(* exec_exit_fn)(void)
Definition: coroapi.h:500
void(* exec_dump_fn)(void)
Definition: coroapi.h:501
struct corosync_lib_handler * lib_engine
Definition: coroapi.h:504
int(* sync_process)(void)
Definition: coroapi.h:521
The corosync_tpg_group struct.
Definition: coroapi.h:81
size_t group_len
Definition: coroapi.h:83
const void * group
Definition: coroapi.h:82
The mar_message_source_t struct.
Definition: coroapi.h:50
void *conn __attribute__((aligned(8)))
uint32_t nodeid __attribute__((aligned(8)))
The memb_ring_id struct.
Definition: coroapi.h:122
unsigned long long seq
Definition: coroapi.h:124
unsigned int nodeid
Definition: coroapi.h:123
The quorum_callin_functions struct.
Definition: coroapi.h:204
int(* quorate)(void)
Definition: coroapi.h:205
int(* unregister_callback)(quorum_callback_fn_t callback_fn, void *context)
Definition: coroapi.h:207
int(* register_callback)(quorum_callback_fn_t callback_fn, void *contexxt)
Definition: coroapi.h:206
The totem_ip_address struct.
Definition: coroapi.h:111
unsigned int nodeid
Definition: coroapi.h:112
unsigned char addr[TOTEMIP_ADDRLEN]
Definition: coroapi.h:114
unsigned short family
Definition: coroapi.h:113
#define swab32(x)
The swab32 macro.
Definition: swab.h:51
char version
Definition: totem.h:1
char type
Definition: totem.h:2
int guarantee
Definition: totemsrp.c:6
struct memb_ring_id ring_id
Definition: totemsrp.c:4