corosync 3.1.9
|
#include <config.h>
#include <assert.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <netdb.h>
#include <sys/un.h>
#include <sys/ioctl.h>
#include <sys/param.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <sched.h>
#include <time.h>
#include <sys/time.h>
#include <sys/poll.h>
#include <sys/uio.h>
#include <limits.h>
#include <qb/qblist.h>
#include <qb/qbdefs.h>
#include <qb/qbutil.h>
#include <qb/qbloop.h>
#include <corosync/swab.h>
#include <corosync/sq.h>
#include <corosync/logsys.h>
#include "totemsrp.h"
#include "totemnet.h"
#include "icmap.h"
#include "totemconfig.h"
#include "cs_queue.h"
Go to the source code of this file.
Data Structures | |
struct | srp_addr |
struct | consensus_list_item |
struct | token_callback_instance |
struct | totemsrp_socket |
struct | mcast |
struct | rtr_item |
struct | orf_token |
struct | memb_join |
struct | memb_merge_detect |
struct | token_hold_cancel |
struct | memb_commit_token_memb_entry |
struct | memb_commit_token |
struct | message_item |
struct | sort_queue_item |
struct | totemsrp_instance |
struct | message_handlers |
Macros | |
#define | LOGSYS_UTILS_ONLY 1 |
#define | LOCALHOST_IP inet_addr("127.0.0.1") |
#define | QUEUE_RTR_ITEMS_SIZE_MAX 16384 /* allow 16384 retransmit items */ |
#define | RETRANS_MESSAGE_QUEUE_SIZE_MAX 16384 /* allow 500 messages to be queued */ |
#define | RECEIVED_MESSAGE_QUEUE_SIZE_MAX 500 /* allow 500 messages to be queued */ |
#define | MAXIOVS 5 |
#define | RETRANSMIT_ENTRIES_MAX 30 |
#define | TOKEN_SIZE_MAX 64000 /* bytes */ |
#define | LEAVE_DUMMY_NODEID 0 |
#define | SEQNO_START_MSG 0x0 |
#define | SEQNO_START_TOKEN 0x0 |
#define | ENDIAN_LOCAL 0xff22 |
#define | log_printf(level, format, args...) |
#define | LOGSYS_PERROR(err_num, level, fmt, args...) |
#define ENDIAN_LOCAL 0xff22 |
Definition at line 144 of file totemsrp.c.
#define LEAVE_DUMMY_NODEID 0 |
Definition at line 102 of file totemsrp.c.
Definition at line 95 of file totemsrp.c.
Definition at line 690 of file totemsrp.c.
Definition at line 697 of file totemsrp.c.
#define LOGSYS_UTILS_ONLY 1 |
Definition at line 84 of file totemsrp.c.
#define MAXIOVS 5 |
Definition at line 99 of file totemsrp.c.
#define QUEUE_RTR_ITEMS_SIZE_MAX 16384 /* allow 16384 retransmit items */ |
Definition at line 96 of file totemsrp.c.
Definition at line 98 of file totemsrp.c.
Definition at line 97 of file totemsrp.c.
#define RETRANSMIT_ENTRIES_MAX 30 |
Definition at line 100 of file totemsrp.c.
#define SEQNO_START_MSG 0x0 |
Definition at line 121 of file totemsrp.c.
#define SEQNO_START_TOKEN 0x0 |
Definition at line 122 of file totemsrp.c.
Definition at line 101 of file totemsrp.c.
Enumerator | |
---|---|
MESSAGE_ENCAPSULATED | |
MESSAGE_NOT_ENCAPSULATED |
Definition at line 155 of file totemsrp.c.
Definition at line 542 of file totemsrp.c.
Enumerator | |
---|---|
MEMB_STATE_OPERATIONAL | |
MEMB_STATE_GATHER | |
MEMB_STATE_COMMIT | |
MEMB_STATE_RECOVERY |
Definition at line 277 of file totemsrp.c.
Enumerator | |
---|---|
MESSAGE_TYPE_ORF_TOKEN | |
MESSAGE_TYPE_MCAST | |
MESSAGE_TYPE_MEMB_MERGE_DETECT | |
MESSAGE_TYPE_MEMB_JOIN | |
MESSAGE_TYPE_MEMB_COMMIT_TOKEN | |
MESSAGE_TYPE_TOKEN_HOLD_CANCEL |
Definition at line 146 of file totemsrp.c.
int main_deliver_fn | ( | void * | context, |
const void * | msg, | ||
unsigned int | msg_len, | ||
const struct sockaddr_storage * | system_from | ||
) |
Definition at line 5053 of file totemsrp.c.
References message_handlers::handler_functions, log_printf, totemsrp_stats_t::mcast_rx, totemsrp_stats_t::memb_commit_token_rx, totemsrp_stats_t::memb_join_rx, totemsrp_stats_t::memb_merge_detect_rx, MESSAGE_TYPE_MCAST, MESSAGE_TYPE_MEMB_COMMIT_TOKEN, MESSAGE_TYPE_MEMB_JOIN, MESSAGE_TYPE_MEMB_MERGE_DETECT, MESSAGE_TYPE_ORF_TOKEN, MESSAGE_TYPE_TOKEN_HOLD_CANCEL, nodeid, totemsrp_stats_t::orf_token_rx, totemsrp_stats_t::rx_msg_dropped, totemsrp_instance::stats, system_from, totemsrp_stats_t::token_hold_cancel_rx, TOTEM_MH_MAGIC, totemip_sa_print(), totemsrp_instance::totemsrp_log_level_security, and totemsrp_message_handlers.
Referenced by totemsrp_initialize().
int main_iface_change_fn | ( | void * | context, |
const struct totem_ip_address * | iface_address, | ||
unsigned int | iface_no | ||
) |
Definition at line 5125 of file totemsrp.c.
References totem_interface::configured, CS_PRI_RING_ID, icmap_get_global_map(), totemsrp_instance::iface_changes, INTERFACE_MAX, totem_config::interfaces, log_printf, totemsrp_instance::memb_ring_id_create_or_load, totemsrp_instance::my_addrs, totemsrp_instance::my_id, totemsrp_instance::my_ring_id, srp_addr::nodeid, nodeid, totem_config::orig_interfaces, memb_ring_id::rep, memb_ring_id::seq, totemsrp_instance::token_ring_id_seq, totemsrp_instance::totem_config, totemconfig_commit_new_params(), totemip_copy(), TOTEMSRP_GSFROM_INTERFACE_CHANGE, totemsrp_instance::totemsrp_log_level_debug, and totemsrp_instance::totemsrp_service_ready_fn.
Referenced by totemsrp_initialize().
Return number of available messages that can be queued.
Definition at line 2568 of file totemsrp.c.
References totemsrp_instance::new_message_queue, totemsrp_instance::new_message_queue_trans, nodeid, and totemsrp_instance::waiting_trans_ack.
Referenced by totempg_initialize().
int totemsrp_callback_token_create | ( | void * | srp_context, |
void ** | handle_out, | ||
enum totem_callback_token_type | type, | ||
int | delete, | ||
int(*)(enum totem_callback_token_type type, const void *) | callback_fn, | ||
const void * | data | ||
) |
Definition at line 3496 of file totemsrp.c.
References token_callback_instance::callback_fn, token_callback_instance::callback_type, token_callback_instance::data, token_callback_instance::delete, token_callback_instance::list, nodeid, totemsrp_instance::token_callback_received_listhead, totemsrp_instance::token_callback_sent_listhead, TOTEM_CALLBACK_TOKEN_RECEIVED, TOTEM_CALLBACK_TOKEN_SENT, and type.
Referenced by totempg_callback_token_create(), totempg_initialize(), and totemsrp_initialize().
Definition at line 3531 of file totemsrp.c.
References nodeid.
Referenced by totempg_callback_token_destroy().
int totemsrp_crypto_reconfigure_phase | ( | void * | context, |
struct totem_config * | totem_config, | ||
cfg_message_crypto_reconfig_phase_t | phase | ||
) |
Definition at line 5248 of file totemsrp.c.
References nodeid, totemsrp_instance::totemnet_context, and totemnet_crypto_reconfigure_phase().
Referenced by totempg_crypto_reconfigure_phase().
Definition at line 1108 of file totemsrp.c.
References nodeid, totemsrp_instance::totemnet_context, and totemnet_crypto_set().
Referenced by totempg_crypto_set().
void totemsrp_event_signal | ( | void * | srp_context, |
enum totem_event_type | type, | ||
int | value | ||
) |
Definition at line 2488 of file totemsrp.c.
References nodeid.
Referenced by totempg_event_signal().
Definition at line 1026 of file totemsrp.c.
References totemsrp_instance::new_message_queue, totemsrp_instance::new_message_queue_trans, nodeid, totemsrp_instance::recovery_sort_queue, totemsrp_instance::regular_sort_queue, totemsrp_instance::retrans_message_queue, totemsrp_instance::totemnet_context, and totemnet_finalize().
Referenced by totempg_finalize().
Definition at line 5267 of file totemsrp.c.
Referenced by totempg_force_gather().
int totemsrp_iface_set | ( | void * | context, |
const struct totem_ip_address * | interface_addr, | ||
unsigned short | ip_port, | ||
unsigned int | iface_no | ||
) |
Definition at line 5104 of file totemsrp.c.
References totemsrp_instance::my_addrs, nodeid, totemip_copy(), totemsrp_instance::totemnet_context, and totemnet_iface_set().
Referenced by totempg_iface_set().
int totemsrp_ifaces_get | ( | void * | srp_context, |
unsigned int | nodeid, | ||
unsigned int * | interface_id, | ||
struct totem_ip_address * | interfaces, | ||
unsigned int | interfaces_size, | ||
char *** | status, | ||
unsigned int * | iface_count | ||
) |
Definition at line 1070 of file totemsrp.c.
References totem_interface::configured, INTERFACE_MAX, totem_config::interfaces, totem_interface::member_count, totem_interface::member_list, nodeid, totem_ip_address::nodeid, totemsrp_instance::totem_config, totemsrp_instance::totemnet_context, and totemnet_ifaces_get().
Referenced by totempg_ifaces_get().
int totemsrp_initialize | ( | qb_loop_t * | poll_handle, |
void ** | srp_context, | ||
struct totem_config * | totem_config, | ||
totempg_stats_t * | stats, | ||
void(*)(unsigned int nodeid, const void *msg, unsigned int msg_len, int endian_conversion_required) | deliver_fn, | ||
void(*)(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) | confchg_fn, | ||
void(*)(int waiting_trans_ack) | waiting_trans_ack_cb_fn | ||
) |
Create a protocol instance.
Definition at line 818 of file totemsrp.c.
References totem_interface::boundto, totem_config::consensus_timeout, totem_config::downcheck_timeout, totemsrp_stats_t::earliest_token, totem_config::fail_to_recv_const, totem_config::heartbeat_failures_allowed, totemsrp_instance::heartbeat_timeout, totem_config::interfaces, totem_config::join_timeout, totemsrp_stats_t::latest_token, totem_logging_configuration::log_level_debug, totem_logging_configuration::log_level_error, totem_logging_configuration::log_level_notice, totem_logging_configuration::log_level_security, totem_logging_configuration::log_level_trace, totem_logging_configuration::log_level_warning, log_printf, totem_logging_configuration::log_printf, totem_logging_configuration::log_subsys_id, LOGSYS_LEVEL_DEBUG, totemsrp_instance::lowest_active_if, main_deliver_fn(), main_iface_change_fn(), totem_config::max_messages, totem_config::max_network_delay, totem_interface::mcast_addr, totemsrp_instance::mcast_address, totemsrp_instance::memb_ring_id_create_or_load, totemsrp_instance::memb_ring_id_store, totem_config::merge_timeout, MESSAGE_QUEUE_MAX, totem_config::miss_count_const, totemsrp_instance::my_id, totem_config::net_mtu, totemsrp_instance::new_message_queue, totemsrp_instance::new_message_queue_trans, srp_addr::nodeid, nodeid, totem_ip_address::nodeid, QUEUE_RTR_ITEMS_SIZE_MAX, totemsrp_instance::recovery_sort_queue, totemsrp_instance::regular_sort_queue, totemsrp_instance::retrans_message_queue, RETRANS_MESSAGE_QUEUE_SIZE_MAX, totem_config::send_join_timeout, totem_config::seqno_unchanged_const, totemsrp_instance::stats, totemsrp_instance::threaded_mode_enabled, totem_config::threads, totem_config::token_hold_timeout, totemsrp_instance::token_recv_event_handle, totem_config::token_retransmit_timeout, totem_config::token_retransmits_before_loss_const, totemsrp_instance::token_sent_event_handle, totem_config::token_timeout, totem_config::token_warning, TOTEM_CALLBACK_TOKEN_RECEIVED, TOTEM_CALLBACK_TOKEN_SENT, totemsrp_instance::totem_config, totem_config::totem_logging_configuration, totem_config::totem_memb_ring_id_create_or_load, totem_config::totem_memb_ring_id_store, totemip_copy(), totemsrp_instance::totemnet_context, totemnet_initialize(), totemsrp_callback_token_create(), totemsrp_instance::totemsrp_confchg_fn, totemsrp_instance::totemsrp_deliver_fn, totemsrp_instance::totemsrp_log_level_debug, totemsrp_instance::totemsrp_log_level_error, totemsrp_instance::totemsrp_log_level_notice, totemsrp_instance::totemsrp_log_level_security, totemsrp_instance::totemsrp_log_level_trace, totemsrp_instance::totemsrp_log_level_warning, totemsrp_instance::totemsrp_log_printf, totemsrp_instance::totemsrp_poll_handle, totemsrp_instance::totemsrp_subsys_id, totemsrp_instance::totemsrp_waiting_trans_ack_cb_fn, totemsrp_instance::use_heartbeat, and totem_config::window_size.
Referenced by totempg_initialize().
int totemsrp_mcast | ( | void * | srp_context, |
struct iovec * | iovec, | ||
unsigned int | iov_len, | ||
int | guarantee | ||
) |
Multicast a message.
Definition at line 2497 of file totemsrp.c.
References addr, totem_message_header::encapsulated, guarantee, mcast::guarantee, mcast::header, log_printf, totem_message_header::magic, message_item::mcast, totemsrp_stats_t::mcast_tx, MESSAGE_NOT_ENCAPSULATED, MESSAGE_TYPE_MCAST, message_item::msg_len, totemsrp_instance::my_id, totemsrp_instance::new_message_queue, totemsrp_instance::new_message_queue_trans, srp_addr::nodeid, nodeid, totem_message_header::nodeid, totemsrp_instance::stats, mcast::system_from, TOTEM_MH_MAGIC, TOTEM_MH_VERSION, totemsrp_instance::totemsrp_log_level_debug, totemsrp_instance::totemsrp_log_level_trace, totem_message_header::type, totem_message_header::version, and totemsrp_instance::waiting_trans_ack.
Definition at line 5197 of file totemsrp.c.
References totemsrp_instance::my_addrs, nodeid, totemsrp_instance::totemnet_context, and totemnet_member_add().
Referenced by totempg_member_add().
Definition at line 5210 of file totemsrp.c.
References nodeid, totemsrp_instance::totemnet_context, and totemnet_member_remove().
Referenced by totempg_member_remove().
Definition at line 1133 of file totemsrp.c.
References totem_interface::boundto, totem_ip_address::family, totem_config::interfaces, totemsrp_instance::lowest_active_if, nodeid, and totemsrp_instance::totem_config.
Referenced by totempg_my_family_get().
Definition at line 1122 of file totemsrp.c.
References totemsrp_instance::my_id, srp_addr::nodeid, and nodeid.
Referenced by totempg_my_nodeid_get().
void totemsrp_net_mtu_adjust | ( | struct totem_config * | totem_config | ) |
Definition at line 5184 of file totemsrp.c.
References totem_config::net_mtu.
Referenced by totempg_initialize().
int totemsrp_nodestatus_get | ( | void * | srp_context, |
unsigned int | nodeid, | ||
struct totem_node_status * | node_status | ||
) |
Definition at line 1041 of file totemsrp.c.
References totemsrp_instance::my_proc_list, totemsrp_instance::my_proc_list_entries, srp_addr::nodeid, nodeid, TOTEM_NODE_STATUS_STRUCTURE_VERSION, totemsrp_instance::totemnet_context, and totemnet_nodestatus_get().
Referenced by totempg_nodestatus_get().
int totemsrp_reconfigure | ( | void * | context, |
struct totem_config * | totem_config | ||
) |
Definition at line 5239 of file totemsrp.c.
References nodeid, totemsrp_instance::totemnet_context, and totemnet_reconfigure().
Referenced by totempg_reconfigure().
Definition at line 5188 of file totemsrp.c.
References nodeid, and totemsrp_instance::totemsrp_service_ready_fn.
Referenced by totempg_service_ready_register().
Definition at line 5257 of file totemsrp.c.
References flags, nodeid, totemsrp_instance::stats, totemsrp_instance::totemnet_context, totemnet_stats_clear(), and TOTEMPG_STATS_CLEAR_TRANSPORT.
Referenced by totempg_stats_clear().
Definition at line 5223 of file totemsrp.c.
References totemsrp_instance::threaded_mode_enabled.
Referenced by totempg_threaded_mode_enable().
Definition at line 5230 of file totemsrp.c.
References totemsrp_instance::totemsrp_waiting_trans_ack_cb_fn, and totemsrp_instance::waiting_trans_ack.
Referenced by totempg_trans_ack().
struct message_item __attribute__ |
int addr_entries |
Definition at line 5 of file totemsrp.c.
Definition at line 3 of file totemsrp.c.
Definition at line 4 of file totemsrp.c.
Definition at line 6 of file totemsrp.c.
Definition at line 6 of file totemsrp.c.
Definition at line 5 of file totemsrp.c.
Definition at line 3 of file totemsrp.c.
Definition at line 7 of file totemsrp.c.
Definition at line 562 of file totemsrp.c.
int guarantee |
Definition at line 6 of file totemsrp.c.
Referenced by cpg_mcast_joined(), cpg_zcb_mcast_joined(), main_mcast(), totempg_groups_mcast_groups(), totempg_groups_mcast_joined(), and totemsrp_mcast().
struct totem_message_header header |
Definition at line 0 of file totemsrp.c.
Referenced by corosync_sending_allowed(), and cpg_zcb_free().
Definition at line 2 of file totemsrp.c.
int memb_index |
Definition at line 4 of file totemsrp.c.
Definition at line 5 of file totemsrp.c.
Definition at line 2 of file totemsrp.c.
Definition at line 3 of file totemsrp.c.
Definition at line 8 of file totemsrp.c.
struct memb_ring_id ring_id |
Definition at line 4 of file totemsrp.c.
Referenced by cpg_dispatch(), quorum_dispatch(), sync_start(), votequorum_dispatch(), and votequorum_qdevice_poll().
Definition at line 4 of file totemsrp.c.
Definition at line 10 of file totemsrp.c.
int rtr_list_entries |
Definition at line 9 of file totemsrp.c.
Definition at line 2 of file totemsrp.c.
Definition at line 1 of file totemsrp.c.
Referenced by main_deliver_fn(), totemknet_recv_mcast_empty(), totemudp_recv_mcast_empty(), and totemudpu_recv_mcast_empty().
int this_seqno |
Definition at line 3 of file totemsrp.c.
Definition at line 2 of file totemsrp.c.
struct message_handlers totemsrp_message_handlers |
Definition at line 678 of file totemsrp.c.
Referenced by main_deliver_fn().