ipc_quorum.h
Go to the documentation of this file.
/*
* Copyright (c) 2008-2020 Red Hat, Inc.
*
* All rights reserved.
*
* Author: Christine Caulfield (ccaulfie@redhat.com)
*
* This software licensed under BSD license, the text of which follows:
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of the MontaVista Software, Inc. nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef IPC_QUORUM_H_DEFINED
#define IPC_QUORUM_H_DEFINED
#include <corosync/corotypes.h>
#include <corosync/mar_gen.h>
enum req_quorum_types {
MESSAGE_REQ_QUORUM_GETQUORATE = 0,
MESSAGE_REQ_QUORUM_TRACKSTART,
MESSAGE_REQ_QUORUM_TRACKSTOP,
MESSAGE_REQ_QUORUM_GETTYPE,
MESSAGE_REQ_QUORUM_MODEL_GETTYPE
};
enum res_quorum_types {
MESSAGE_RES_QUORUM_GETQUORATE = 0,
MESSAGE_RES_QUORUM_TRACKSTART,
MESSAGE_RES_QUORUM_TRACKSTOP,
MESSAGE_RES_QUORUM_NOTIFICATION,
MESSAGE_RES_QUORUM_GETTYPE,
MESSAGE_RES_QUORUM_MODEL_GETTYPE,
MESSAGE_RES_QUORUM_V1_QUORUM_NOTIFICATION,
MESSAGE_RES_QUORUM_V1_NODELIST_NOTIFICATION
};
/*
* Must be in sync with definition in quorum.h
*/
enum lib_quorum_model {
LIB_QUORUM_MODEL_V0 = 0,
LIB_QUORUM_MODEL_V1 = 1,
};
typedef struct {
mar_uint32_t nodeid __attribute__((aligned(8)));
mar_uint64_t seq __attribute__((aligned(8)));
} mar_quorum_ring_id_t;
struct req_lib_quorum_trackstart {
struct qb_ipc_request_header header __attribute__((aligned(8)));
unsigned int track_flags;
};
struct res_lib_quorum_getquorate {
struct qb_ipc_response_header header __attribute__((aligned(8)));
mar_uint32_t quorate;
};
struct res_lib_quorum_notification {
struct qb_ipc_response_header header __attribute__((aligned(8)));
mar_int32_t quorate __attribute__((aligned(8)));
mar_uint64_t ring_seq __attribute__((aligned(8)));
mar_uint32_t view_list_entries __attribute__((aligned(8)));
mar_uint32_t view_list[];
};
struct res_lib_quorum_v1_quorum_notification {
struct qb_ipc_response_header header __attribute__((aligned(8)));
mar_int32_t quorate __attribute__((aligned(8)));
mar_quorum_ring_id_t ring_id __attribute__((aligned(8)));
mar_uint32_t view_list_entries __attribute__((aligned(8)));
mar_uint32_t view_list[];
};
struct res_lib_quorum_v1_nodelist_notification {
struct qb_ipc_response_header header __attribute__((aligned(8)));
mar_quorum_ring_id_t ring_id __attribute__((aligned(8)));
mar_uint32_t member_list_entries __attribute__((aligned(8)));
mar_uint32_t joined_list_entries __attribute__((aligned(8)));
mar_uint32_t left_list_entries __attribute__((aligned(8)));
mar_uint32_t member_list[];
// mar_uint32_t joined_list[];
// mar_uint32_t left_list[];
};
struct res_lib_quorum_gettype {
struct qb_ipc_response_header header __attribute__((aligned(8)));
mar_uint32_t quorum_type;
};
struct req_lib_quorum_model_gettype {
struct qb_ipc_request_header header __attribute__((aligned(8)));
mar_uint32_t model __attribute__((aligned(8)));
};
struct res_lib_quorum_model_gettype {
struct qb_ipc_response_header header __attribute__((aligned(8)));
mar_uint32_t quorum_type __attribute__((aligned(8)));
};
#endif
seq
unsigned long long seq
Definition coroapi.h:1
nodeid
unsigned int nodeid
Definition coroapi.h:0
corotypes.h
res_quorum_types
res_quorum_types
The res_quorum_types enum.
Definition ipc_quorum.h:54
MESSAGE_RES_QUORUM_TRACKSTART
@ MESSAGE_RES_QUORUM_TRACKSTART
Definition ipc_quorum.h:56
MESSAGE_RES_QUORUM_V1_QUORUM_NOTIFICATION
@ MESSAGE_RES_QUORUM_V1_QUORUM_NOTIFICATION
Definition ipc_quorum.h:61
MESSAGE_RES_QUORUM_TRACKSTOP
@ MESSAGE_RES_QUORUM_TRACKSTOP
Definition ipc_quorum.h:57
MESSAGE_RES_QUORUM_V1_NODELIST_NOTIFICATION
@ MESSAGE_RES_QUORUM_V1_NODELIST_NOTIFICATION
Definition ipc_quorum.h:62
MESSAGE_RES_QUORUM_GETTYPE
@ MESSAGE_RES_QUORUM_GETTYPE
Definition ipc_quorum.h:59
MESSAGE_RES_QUORUM_NOTIFICATION
@ MESSAGE_RES_QUORUM_NOTIFICATION
Definition ipc_quorum.h:58
MESSAGE_RES_QUORUM_MODEL_GETTYPE
@ MESSAGE_RES_QUORUM_MODEL_GETTYPE
Definition ipc_quorum.h:60
MESSAGE_RES_QUORUM_GETQUORATE
@ MESSAGE_RES_QUORUM_GETQUORATE
Definition ipc_quorum.h:55
lib_quorum_model
lib_quorum_model
Definition ipc_quorum.h:68
LIB_QUORUM_MODEL_V1
@ LIB_QUORUM_MODEL_V1
Definition ipc_quorum.h:70
LIB_QUORUM_MODEL_V0
@ LIB_QUORUM_MODEL_V0
Definition ipc_quorum.h:69
req_quorum_types
req_quorum_types
The req_quorum_types enum.
Definition ipc_quorum.h:43
MESSAGE_REQ_QUORUM_GETTYPE
@ MESSAGE_REQ_QUORUM_GETTYPE
Definition ipc_quorum.h:47
MESSAGE_REQ_QUORUM_TRACKSTART
@ MESSAGE_REQ_QUORUM_TRACKSTART
Definition ipc_quorum.h:45
MESSAGE_REQ_QUORUM_TRACKSTOP
@ MESSAGE_REQ_QUORUM_TRACKSTOP
Definition ipc_quorum.h:46
MESSAGE_REQ_QUORUM_GETQUORATE
@ MESSAGE_REQ_QUORUM_GETQUORATE
Definition ipc_quorum.h:44
MESSAGE_REQ_QUORUM_MODEL_GETTYPE
@ MESSAGE_REQ_QUORUM_MODEL_GETTYPE
Definition ipc_quorum.h:48
mar_gen.h
mar_int32_t
int32_t mar_int32_t
Definition mar_gen.h:48
mar_uint32_t
uint32_t mar_uint32_t
Definition mar_gen.h:53
mar_uint64_t
uint64_t mar_uint64_t
Definition mar_gen.h:54
quorate
uint32_t quorate
Definition sam.c:134
mar_quorum_ring_id_t
Definition ipc_quorum.h:73
mar_quorum_ring_id_t::__attribute__
mar_uint64_t seq __attribute__((aligned(8)))
mar_quorum_ring_id_t::__attribute__
mar_uint32_t nodeid __attribute__((aligned(8)))
req_lib_quorum_model_gettype
Definition ipc_quorum.h:132
req_lib_quorum_model_gettype::__attribute__
mar_uint32_t model __attribute__((aligned(8)))
req_lib_quorum_model_gettype::__attribute__
struct qb_ipc_request_header header __attribute__((aligned(8)))
req_lib_quorum_trackstart
The req_lib_quorum_trackstart struct.
Definition ipc_quorum.h:81
req_lib_quorum_trackstart::track_flags
unsigned int track_flags
Definition ipc_quorum.h:83
req_lib_quorum_trackstart::__attribute__
struct qb_ipc_request_header header __attribute__((aligned(8)))
res_lib_quorum_getquorate
The res_lib_quorum_getquorate struct.
Definition ipc_quorum.h:89
res_lib_quorum_getquorate::__attribute__
struct qb_ipc_response_header header __attribute__((aligned(8)))
res_lib_quorum_getquorate::quorate
mar_uint32_t quorate
Definition ipc_quorum.h:91
res_lib_quorum_gettype
The res_lib_quorum_gettype struct.
Definition ipc_quorum.h:127
res_lib_quorum_gettype::quorum_type
mar_uint32_t quorum_type
Definition ipc_quorum.h:129
res_lib_quorum_gettype::__attribute__
struct qb_ipc_response_header header __attribute__((aligned(8)))
res_lib_quorum_model_gettype
Definition ipc_quorum.h:137
res_lib_quorum_model_gettype::__attribute__
mar_uint32_t quorum_type __attribute__((aligned(8)))
res_lib_quorum_model_gettype::__attribute__
struct qb_ipc_response_header header __attribute__((aligned(8)))
res_lib_quorum_notification
The res_lib_quorum_notification struct.
Definition ipc_quorum.h:97
res_lib_quorum_notification::__attribute__
mar_uint64_t ring_seq __attribute__((aligned(8)))
res_lib_quorum_notification::__attribute__
mar_uint32_t view_list_entries __attribute__((aligned(8)))
res_lib_quorum_notification::__attribute__
struct qb_ipc_response_header header __attribute__((aligned(8)))
res_lib_quorum_notification::view_list
mar_uint32_t view_list[]
Definition ipc_quorum.h:102
res_lib_quorum_notification::__attribute__
mar_int32_t quorate __attribute__((aligned(8)))
res_lib_quorum_v1_nodelist_notification
Definition ipc_quorum.h:113
res_lib_quorum_v1_nodelist_notification::__attribute__
mar_uint32_t member_list_entries __attribute__((aligned(8)))
res_lib_quorum_v1_nodelist_notification::__attribute__
mar_quorum_ring_id_t ring_id __attribute__((aligned(8)))
res_lib_quorum_v1_nodelist_notification::__attribute__
mar_uint32_t joined_list_entries __attribute__((aligned(8)))
res_lib_quorum_v1_nodelist_notification::member_list
mar_uint32_t member_list[]
Definition ipc_quorum.h:119
res_lib_quorum_v1_nodelist_notification::__attribute__
struct qb_ipc_response_header header __attribute__((aligned(8)))
res_lib_quorum_v1_nodelist_notification::__attribute__
mar_uint32_t left_list_entries __attribute__((aligned(8)))
res_lib_quorum_v1_quorum_notification
Definition ipc_quorum.h:105
res_lib_quorum_v1_quorum_notification::__attribute__
mar_int32_t quorate __attribute__((aligned(8)))
res_lib_quorum_v1_quorum_notification::__attribute__
mar_uint32_t view_list_entries __attribute__((aligned(8)))
res_lib_quorum_v1_quorum_notification::view_list
mar_uint32_t view_list[]
Definition ipc_quorum.h:110
res_lib_quorum_v1_quorum_notification::__attribute__
mar_quorum_ring_id_t ring_id __attribute__((aligned(8)))
res_lib_quorum_v1_quorum_notification::__attribute__
struct qb_ipc_response_header header __attribute__((aligned(8)))
ring_seq
unsigned long long ring_seq
Definition totemsrp.c:4
ring_id
struct memb_ring_id ring_id
Definition totemsrp.c:4
header
struct totem_message_header header
Definition totemsrp.c:0