corosync 3.1.9
ipc_cpg.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2006-2015 Red Hat, Inc.
3 *
4 * All rights reserved.
5 *
6 * Author: Christine Caulfield (ccaulfie@redhat.com)
7 * Author: Jan Friesse (jfriesse@redhat.com)
8 *
9 * This software licensed under BSD license, the text of which follows:
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions are met:
13 *
14 * - Redistributions of source code must retain the above copyright notice,
15 * this list of conditions and the following disclaimer.
16 * - Redistributions in binary form must reproduce the above copyright notice,
17 * this list of conditions and the following disclaimer in the documentation
18 * and/or other materials provided with the distribution.
19 * - Neither the name of the MontaVista Software, Inc. nor the names of its
20 * contributors may be used to endorse or promote products derived from this
21 * software without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
27 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
33 * THE POSSIBILITY OF SUCH DAMAGE.
34 */
35#ifndef IPC_CPG_H_DEFINED
36#define IPC_CPG_H_DEFINED
37
38#include <netinet/in.h>
39#include <qb/qbipc_common.h>
40#include <corosync/corotypes.h>
41#include <corosync/mar_gen.h>
42
43#define CPG_ZC_PATH_LEN 128
44
63
88
99
108
116
121static inline void swab_mar_cpg_name_t (mar_cpg_name_t *to_swab)
122{
123 swab_mar_uint32_t (&to_swab->length);
124}
125
131static inline void marshall_from_mar_cpg_name_t (
132 struct cpg_name *dest,
133 const mar_cpg_name_t *src)
134{
135 dest->length = src->length;
136 memcpy (&dest->value, &src->value, CPG_MAX_NAME_LENGTH);
137}
138
144static inline void marshall_to_mar_cpg_name_t (
146 const struct cpg_name *src)
147{
148 dest->length = src->length;
149 memcpy (&dest->value, &src->value, CPG_MAX_NAME_LENGTH);
150}
151
160
166static inline void marshall_from_mar_cpg_address_t (
167 struct cpg_address *dest,
168 const mar_cpg_address_t *src)
169{
170 dest->nodeid = src->nodeid;
171 dest->pid = src->pid;
172 dest->reason = src->reason;
173}
174
180static inline void marshall_to_mar_cpg_address_t (
182 const struct cpg_address *src)
183{
184 dest->nodeid = src->nodeid;
185 dest->pid = src->pid;
186 dest->reason = src->reason;
187}
188
195static inline int mar_name_compare (
196 const mar_cpg_name_t *g1,
197 const mar_cpg_name_t *g2)
198{
199 return (g1->length == g2->length?
200 memcmp (g1->value, g2->value, g1->length):
201 g1->length - g2->length);
202}
203
212
218static inline void marshall_from_mar_cpg_iteration_description_t(
221{
222 dest->nodeid = src->nodeid;
223 dest->pid = src->pid;
224 marshall_from_mar_cpg_name_t (&dest->group, &src->group);
225};
226
234
240static inline void marshall_from_mar_cpg_ring_id_t (
241 struct cpg_ring_id *dest,
242 const mar_cpg_ring_id_t *src)
243{
244 dest->nodeid = src->nodeid;
245 dest->seq = src->seq;
246}
247
257
264
271
278
285
293
300
310
322
329
341
355
363
371
380
394
404
413
420
429
437
445
453
461
468
477
486
494
502#endif /* IPC_CPG_H_DEFINED */
unsigned long long seq
Definition coroapi.h:1
unsigned int nodeid
Definition coroapi.h:0
#define PROCESSOR_COUNT_MAX
Definition coroapi.h:96
uint32_t flags
uint32_t value
#define CPG_MAX_NAME_LENGTH
Definition cpg.h:117
qb_handle_t hdb_handle_t
Definition hdb.h:52
lib_cpg_partial_types
The lib_cpg_partial_types enum.
Definition ipc_cpg.h:103
@ LIBCPG_PARTIAL_FIRST
Definition ipc_cpg.h:104
@ LIBCPG_PARTIAL_LAST
Definition ipc_cpg.h:106
@ LIBCPG_PARTIAL_CONTINUED
Definition ipc_cpg.h:105
#define CPG_ZC_PATH_LEN
Definition ipc_cpg.h:43
req_cpg_types
The req_cpg_types enum.
Definition ipc_cpg.h:48
@ MESSAGE_REQ_CPG_ZC_EXECUTE
Definition ipc_cpg.h:60
@ MESSAGE_REQ_CPG_LOCAL_GET
Definition ipc_cpg.h:53
@ MESSAGE_REQ_CPG_ITERATIONFINALIZE
Definition ipc_cpg.h:56
@ MESSAGE_REQ_CPG_PARTIAL_MCAST
Definition ipc_cpg.h:61
@ MESSAGE_REQ_CPG_ZC_ALLOC
Definition ipc_cpg.h:58
@ MESSAGE_REQ_CPG_JOIN
Definition ipc_cpg.h:49
@ MESSAGE_REQ_CPG_ZC_FREE
Definition ipc_cpg.h:59
@ MESSAGE_REQ_CPG_ITERATIONINITIALIZE
Definition ipc_cpg.h:54
@ MESSAGE_REQ_CPG_FINALIZE
Definition ipc_cpg.h:57
@ MESSAGE_REQ_CPG_MEMBERSHIP
Definition ipc_cpg.h:52
@ MESSAGE_REQ_CPG_LEAVE
Definition ipc_cpg.h:50
@ MESSAGE_REQ_CPG_ITERATIONNEXT
Definition ipc_cpg.h:55
@ MESSAGE_REQ_CPG_MCAST
Definition ipc_cpg.h:51
res_cpg_types
The res_cpg_types enum.
Definition ipc_cpg.h:67
@ MESSAGE_RES_CPG_ITERATIONFINALIZE
Definition ipc_cpg.h:79
@ MESSAGE_RES_CPG_MEMBERSHIP
Definition ipc_cpg.h:71
@ MESSAGE_RES_CPG_ZC_ALLOC
Definition ipc_cpg.h:82
@ MESSAGE_RES_CPG_LEAVE
Definition ipc_cpg.h:69
@ MESSAGE_RES_CPG_MCAST
Definition ipc_cpg.h:70
@ MESSAGE_RES_CPG_PARTIAL_DELIVER_CALLBACK
Definition ipc_cpg.h:85
@ MESSAGE_RES_CPG_ZC_EXECUTE
Definition ipc_cpg.h:84
@ MESSAGE_RES_CPG_FINALIZE
Definition ipc_cpg.h:80
@ MESSAGE_RES_CPG_DELIVER_CALLBACK
Definition ipc_cpg.h:73
@ MESSAGE_RES_CPG_TOTEM_CONFCHG_CALLBACK
Definition ipc_cpg.h:81
@ MESSAGE_RES_CPG_ZC_FREE
Definition ipc_cpg.h:83
@ MESSAGE_RES_CPG_ITERATIONNEXT
Definition ipc_cpg.h:78
@ MESSAGE_RES_CPG_CONFCHG_CALLBACK
Definition ipc_cpg.h:72
@ MESSAGE_RES_CPG_FLOWCONTROL_CALLBACK
Definition ipc_cpg.h:76
@ MESSAGE_RES_CPG_PARTIAL_SEND
Definition ipc_cpg.h:86
@ MESSAGE_RES_CPG_ITERATIONINITIALIZE
Definition ipc_cpg.h:77
@ MESSAGE_RES_CPG_LOCAL_GET
Definition ipc_cpg.h:75
@ MESSAGE_RES_CPG_JOIN
Definition ipc_cpg.h:68
@ MESSAGE_RES_CPG_FLOW_CONTROL_STATE_SET
Definition ipc_cpg.h:74
lib_cpg_confchg_reason
The lib_cpg_confchg_reason enum.
Definition ipc_cpg.h:92
@ CONFCHG_CPG_REASON_LEAVE
Definition ipc_cpg.h:94
@ CONFCHG_CPG_REASON_PROCDOWN
Definition ipc_cpg.h:97
@ CONFCHG_CPG_REASON_NODEUP
Definition ipc_cpg.h:96
@ CONFCHG_CPG_REASON_JOIN
Definition ipc_cpg.h:93
@ CONFCHG_CPG_REASON_NODEDOWN
Definition ipc_cpg.h:95
uint32_t mar_uint32_t
Definition mar_gen.h:53
uint8_t mar_uint8_t
Definition mar_gen.h:51
uint64_t mar_uint64_t
Definition mar_gen.h:54
coroipcs_zc_header struct
Definition ipc_cpg.h:498
uint64_t server_address
Definition ipc_cpg.h:500
The cpg_address struct.
Definition cpg.h:111
The cpg_iteration_description_t struct.
Definition cpg.h:131
The cpg_name struct.
Definition cpg.h:121
The cpg_ring_id struct.
Definition cpg.h:140
mar_cpg_address_t struct
Definition ipc_cpg.h:155
mar_uint32_t nodeid __attribute__((aligned(8)))
mar_uint32_t pid __attribute__((aligned(8)))
mar_uint32_t reason __attribute__((aligned(8)))
mar_cpg_iteration_description_t struct
Definition ipc_cpg.h:207
mar_cpg_name_t struct
Definition ipc_cpg.h:112
char value[CPG_MAX_NAME_LENGTH] __attribute__((aligned(8)))
uint32_t length __attribute__((aligned(8)))
mar_cpg_ring_id_t struct
Definition ipc_cpg.h:230
mar_uint64_t seq __attribute__((aligned(8)))
mar_uint32_t nodeid __attribute__((aligned(8)))
mar_req_coroipcc_zc_alloc_t struct
Definition ipc_cpg.h:472
size_t map_size __attribute__((aligned(8)))
char path_to_file[CPG_ZC_PATH_LEN] __attribute__((aligned(8)))
mar_req_coroipcc_zc_execute_t struct
Definition ipc_cpg.h:490
uint64_t server_address __attribute__((aligned(8)))
mar_req_coroipcc_zc_free_t struct
Definition ipc_cpg.h:481
uint64_t server_address __attribute__((aligned(8)))
size_t map_size __attribute__((aligned(8)))
The req_lib_cpg_finalize struct.
Definition ipc_cpg.h:268
The req_lib_cpg_iterationfinalize struct.
Definition ipc_cpg.h:457
hdb_handle_t iteration_handle __attribute__((aligned(8)))
The req_lib_cpg_iterationinitialize struct.
Definition ipc_cpg.h:424
mar_cpg_name_t group_name __attribute__((aligned(8)))
mar_uint32_t iteration_type __attribute__((aligned(8)))
The req_lib_cpg_iterationnext struct.
Definition ipc_cpg.h:441
hdb_handle_t iteration_handle __attribute__((aligned(8)))
The req_lib_cpg_join struct.
Definition ipc_cpg.h:251
mar_cpg_name_t group_name __attribute__((aligned(8)))
mar_uint32_t pid __attribute__((aligned(8)))
mar_uint32_t flags __attribute__((aligned(8)))
The req_lib_cpg_leave struct.
Definition ipc_cpg.h:408
mar_uint32_t pid __attribute__((aligned(8)))
mar_cpg_name_t group_name __attribute__((aligned(8)))
The req_lib_cpg_local_get struct.
Definition ipc_cpg.h:282
The req_lib_cpg_mcast struct.
Definition ipc_cpg.h:304
mar_uint32_t guarantee __attribute__((aligned(8)))
mar_uint32_t msglen __attribute__((aligned(8)))
mar_uint8_t message[] __attribute__((aligned(8)))
The req_lib_cpg_membership_get struct.
Definition ipc_cpg.h:367
mar_cpg_name_t group_name __attribute__((aligned(8)))
The req_lib_cpg_partial_mcast struct.
Definition ipc_cpg.h:314
mar_uint32_t msglen __attribute__((aligned(8)))
mar_uint32_t guarantee __attribute__((aligned(8)))
mar_uint8_t message[] __attribute__((aligned(8)))
mar_uint32_t type __attribute__((aligned(8)))
mar_uint32_t fraglen __attribute__((aligned(8)))
The res_lib_cpg_confchg_callback struct.
Definition ipc_cpg.h:384
mar_cpg_address_t member_list[]
Definition ipc_cpg.h:390
mar_cpg_name_t group_name __attribute__((aligned(8)))
mar_uint32_t member_list_entries __attribute__((aligned(8)))
mar_uint32_t left_list_entries __attribute__((aligned(8)))
mar_uint32_t joined_list_entries __attribute__((aligned(8)))
Message from another node.
Definition ipc_cpg.h:333
mar_uint32_t nodeid __attribute__((aligned(8)))
mar_cpg_name_t group_name __attribute__((aligned(8)))
mar_uint32_t msglen __attribute__((aligned(8)))
mar_uint32_t pid __attribute__((aligned(8)))
mar_uint8_t message[] __attribute__((aligned(8)))
The res_lib_cpg_finalize struct.
Definition ipc_cpg.h:275
The res_lib_cpg_flowcontrol_callback struct.
Definition ipc_cpg.h:359
mar_uint32_t flow_control_state __attribute__((aligned(8)))
The res_lib_cpg_iterationfinalize struct.
Definition ipc_cpg.h:465
The res_lib_cpg_iterationinitialize struct.
Definition ipc_cpg.h:433
hdb_handle_t iteration_handle __attribute__((aligned(8)))
The res_lib_cpg_iterationnext struct.
Definition ipc_cpg.h:449
mar_cpg_iteration_description_t description __attribute__((aligned(8)))
The res_lib_cpg_join struct.
Definition ipc_cpg.h:261
The res_lib_cpg_leave struct.
Definition ipc_cpg.h:417
The res_lib_cpg_local_get struct.
Definition ipc_cpg.h:289
mar_uint32_t local_nodeid __attribute__((aligned(8)))
The res_lib_cpg_mcast struct.
Definition ipc_cpg.h:326
The res_lib_cpg_membership_get struct.
Definition ipc_cpg.h:375
mar_uint32_t member_count __attribute__((aligned(8)))
mar_cpg_address_t member_list[PROCESSOR_COUNT_MAX]
Definition ipc_cpg.h:378
The res_lib_cpg_partial_deliver_callback struct.
Definition ipc_cpg.h:345
mar_uint32_t pid __attribute__((aligned(8)))
mar_uint32_t nodeid __attribute__((aligned(8)))
mar_uint32_t fraglen __attribute__((aligned(8)))
mar_uint32_t type __attribute__((aligned(8)))
mar_cpg_name_t group_name __attribute__((aligned(8)))
mar_uint32_t msglen __attribute__((aligned(8)))
mar_uint8_t message[] __attribute__((aligned(8)))
The res_lib_cpg_partial_send struct.
Definition ipc_cpg.h:297
The res_lib_cpg_totem_confchg_callback struct.
Definition ipc_cpg.h:398
mar_cpg_ring_id_t ring_id __attribute__((aligned(8)))
mar_uint32_t member_list_entries __attribute__((aligned(8)))
typedef __attribute__
char type
Definition totem.h:2
int guarantee
Definition totemsrp.c:6
struct memb_ring_id ring_id
Definition totemsrp.c:4
struct totem_message_header header
Definition totemsrp.c:0