totempg.h File Reference

Totem Single Ring Protocol. More...

`#include <sys/types.h>`
`#include <netinet/in.h>`
`#include "totem.h"`
`#include <qb/qbloop.h>`
Include dependency graph for totempg.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | totempg_group

## Macros

#define | TOTEMPG_AGREED 0
#define | TOTEMPG_SAFE 1

## Typedefs

typedef void(* | totem_queue_level_changed_fn) (enum totem_q_level level)

## Enumerations

enum | totem_q_level { TOTEM_Q_LEVEL_LOW , TOTEM_Q_LEVEL_GOOD , TOTEM_Q_LEVEL_HIGH , TOTEM_Q_LEVEL_CRITICAL }

## Functions

int | totempg_initialize (qb_loop_t *poll_handle, struct totem_config *totem_config)
| Initialize the totem process groups abstraction.
void | totempg_finalize (void)
int | totempg_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)
void | totempg_callback_token_destroy (void *handle)

int

totempg_groups_initialize (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))

| Initialize a groups instance.
int | totempg_groups_finalize (void *instance)
int | totempg_groups_join (void *instance, const struct totempg_group *groups, size_t group_cnt)
int | totempg_groups_leave (void *instance, const struct totempg_group *groups, size_t group_cnt)
int | totempg_groups_mcast_joined (void *instance, const struct iovec *iovec, unsigned int iov_len, int guarantee)
int | totempg_groups_joined_reserve (void *instance, const struct iovec *iovec, unsigned int iov_len)
int | totempg_groups_joined_release (int msg_count)
int | totempg_groups_mcast_groups (void *instance, int guarantee, const struct totempg_group *groups, size_t groups_cnt, const struct iovec *iovec, unsigned int iov_len)
int | totempg_groups_send_ok_groups (void *instance, const struct totempg_group *groups, size_t groups_cnt, const struct iovec *iovec, unsigned int iov_len)
int | totempg_ifaces_get (unsigned int nodeid, unsigned int *interface_id, struct totem_ip_address *interfaces, unsigned int interfaces_size, char ***status, unsigned int *iface_count)
int | totempg_nodestatus_get (unsigned int nodeid, struct totem_node_status *node_status)
void * | totempg_get_stats (void)
void | totempg_event_signal (enum totem_event_type type, int value)
const char * | totempg_ifaces_print (unsigned int nodeid)
unsigned int | totempg_my_nodeid_get (void)
int | totempg_my_family_get (void)
int | totempg_crypto_set (const char *cipher_type, const char *hash_type)
void | totempg_service_ready_register (void(*totem_service_ready)(void))
int | totempg_iface_set (struct totem_ip_address *interface_addr, unsigned short ip_port, unsigned int iface_no)
int | totempg_member_add (const struct totem_ip_address *member, int ring_no)
int | totempg_member_remove (const struct totem_ip_address *member, int ring_no)
void | totempg_check_q_level (void *instance)
void | totempg_queue_level_register_callback (totem_queue_level_changed_fn)
void | totempg_threaded_mode_enable (void)
void | totempg_trans_ack (void)
int | totempg_reconfigure (void)
int | totempg_crypto_reconfigure_phase (cfg_message_crypto_reconfig_phase_t phase)
void | totempg_force_gather (void)
void | totempg_get_config (struct totem_config *config)
void | totempg_put_config (struct totem_config *config)

## Detailed Description

Totem Single Ring Protocol.

depends on poll abstraction, POSIX, IPV4

Definition in file totempg.h.

## Macro Definition Documentation

## TOTEMPG_AGREED

#define TOTEMPG_AGREED 0

Definition at line 60 of file totempg.h.

## TOTEMPG_SAFE

#define TOTEMPG_SAFE 1

Definition at line 61 of file totempg.h.

## Typedef Documentation

## totem_queue_level_changed_fn

typedef void(* totem_queue_level_changed_fn) (enum totem_q_level level)

Definition at line 189 of file totempg.h.

## Enumeration Type Documentation

## totem_q_level

enum totem_q_level

Enumerator
TOTEM_Q_LEVEL_LOW |
TOTEM_Q_LEVEL_GOOD |
TOTEM_Q_LEVEL_HIGH |
TOTEM_Q_LEVEL_CRITICAL |

Definition at line 180 of file totempg.h.

## Function Documentation

## totempg_callback_token_create()

int totempg_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 )

extern

Definition at line 1099 of file totempg.c.

References totemsrp_callback_token_create(), and type.

## totempg_callback_token_destroy()

void totempg_callback_token_destroy | ( | void * | handle | ) |

extern

Definition at line 1118 of file totempg.c.

References totemsrp_callback_token_destroy().

## totempg_check_q_level()

void totempg_check_q_level | ( | void * | instance | ) |

Definition at line 1294 of file totempg.c.

Referenced by corosync_recheck_the_q_level().

## totempg_crypto_reconfigure_phase()

int totempg_crypto_reconfigure_phase | ( | cfg_message_crypto_reconfig_phase_t | phase | ) |

extern

Definition at line 1571 of file totempg.c.

References totempg_totem_config, and totemsrp_crypto_reconfigure_phase().

## totempg_crypto_set()

int totempg_crypto_set | ( | const char * | cipher_type,
|  | const char * | hash_type )

extern

Definition at line 1489 of file totempg.c.

References totemsrp_crypto_set().

## totempg_event_signal()

void totempg_event_signal | ( | enum totem_event_type | type,
|  | int | value )

Definition at line 1479 of file totempg.c.

References totemsrp_event_signal(), type, and value.

## totempg_finalize()

void totempg_finalize | ( | void |  | ) |

extern

Definition at line 855 of file totempg.c.

References totemsrp_finalize().

Referenced by main().

## totempg_force_gather()

void totempg_force_gather | ( | void |  | ) |

extern

Definition at line 1596 of file totempg.c.

References totemsrp_force_gather().

## totempg_get_config()

void totempg_get_config | ( | struct totem_config * | config | ) |

extern

Definition at line 1602 of file totempg.c.

References INTERFACE_MAX, totem_config::interfaces, totem_config::orig_interfaces, and totempg_totem_config.

## totempg_get_stats()

void * totempg_get_stats | ( | void |  | ) |

extern

Definition at line 1484 of file totempg.c.

## totempg_groups_finalize()

int totempg_groups_finalize | ( | void * | instance | ) |

extern

References guarantee, nodeid, type, and value.

## totempg_groups_initialize()

int totempg_groups_initialize | ( | 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) )

extern

Initialize a groups instance.

Definition at line 1134 of file totempg.c.

References totempg_group_instance::confchg_fn, totempg_group_instance::deliver_fn, totempg_group_instance::groups, totempg_group_instance::groups_cnt, totempg_group_instance::list, nodeid, totempg_group_instance::q_level, and ring_id.

Referenced by main(), and sync_init().

## totempg_groups_join()

int totempg_groups_join | ( | void * | instance,
|  | const struct totempg_group * | groups,
|  | size_t | group_cnt )

extern

Definition at line 1182 of file totempg.c.

References totempg_group_instance::groups, and totempg_group_instance::groups_cnt.

Referenced by main(), and sync_init().

## totempg_groups_joined_release()

int totempg_groups_joined_release | ( | int | msg_count | ) |

extern

Definition at line 1346 of file totempg.c.

Referenced by corosync_sending_allowed_release().

## totempg_groups_joined_reserve()

int totempg_groups_joined_reserve | ( | void * | instance,
|  | const struct iovec * | iovec,
|  | unsigned int | iov_len )

extern

Definition at line 1302 of file totempg.c.

References totempg_group::group_len, totempg_group_instance::groups, and totempg_group_instance::groups_cnt.

Referenced by corosync_sending_allowed().

## totempg_groups_leave()

int totempg_groups_leave | ( | void * | instance,
|  | const struct totempg_group * | groups,
|  | size_t | group_cnt )

extern

Definition at line 1214 of file totempg.c.

## totempg_groups_mcast_groups()

int totempg_groups_mcast_groups | ( | void * | instance,
|  | int | guarantee,
|  | const struct totempg_group * | groups,
|  | size_t | groups_cnt,
|  | const struct iovec * | iovec,
|  | unsigned int | iov_len )

extern

Definition at line 1360 of file totempg.c.

References totempg_group::group_len, guarantee, MAX_GROUPS_PER_MSG, and MAX_IOVECS_FROM_APP.

## totempg_groups_mcast_joined()

int totempg_groups_mcast_joined | ( | void * | instance,
|  | const struct iovec * | iovec,
|  | unsigned int | iov_len,
|  | int | guarantee )

extern

Definition at line 1232 of file totempg.c.

References totempg_group::group, totempg_group::group_len, totempg_group_instance::groups, totempg_group_instance::groups_cnt, guarantee, MAX_GROUPS_PER_MSG, and MAX_IOVECS_FROM_APP.

Referenced by main_mcast().

## totempg_groups_send_ok_groups()

int totempg_groups_send_ok_groups | ( | void * | instance,
|  | const struct totempg_group * | groups,
|  | size_t | groups_cnt,
|  | const struct iovec * | iovec,
|  | unsigned int | iov_len )

extern

Definition at line 1404 of file totempg.c.

References totempg_group::group_len.

## totempg_iface_set()

int totempg_iface_set | ( | struct totem_ip_address * | interface_addr,
|  | unsigned short | ip_port,
|  | unsigned int | iface_no )

extern

Definition at line 1434 of file totempg.c.

References totemsrp_iface_set().

## totempg_ifaces_get()

int totempg_ifaces_get | ( | unsigned int | nodeid,
|  | unsigned int * | interface_id,
|  | struct totem_ip_address * | interfaces,
|  | unsigned int | interfaces_size,
|  | char *** | status,
|  | unsigned int * | iface_count )

extern

Definition at line 1457 of file totempg.c.

References nodeid, and totemsrp_ifaces_get().

Referenced by totempg_ifaces_print().

## totempg_ifaces_print()

const char * totempg_ifaces_print | ( | unsigned int | nodeid | ) |

extern

Definition at line 1501 of file totempg.c.

References family, INTERFACE_MAX, nodeid, ONE_IFACE_LEN, totemip_print(), and totempg_ifaces_get().

## totempg_initialize()

int totempg_initialize | ( | qb_loop_t * | poll_handle,
|  | struct totem_config * | totem_config )

extern

Initialize the totem process groups abstraction.

Definition at line 802 of file totempg.c.

References callback_token_received_handle, 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_warning, totem_logging_configuration::log_printf, totem_logging_configuration::log_subsys_id, TOTEM_CALLBACK_TOKEN_RECEIVED, totem_config::totem_logging_configuration, TOTEMPG_PACKET_SIZE, totempg_totem_config, totemsrp_avail(), totemsrp_callback_token_create(), totemsrp_initialize(), and totemsrp_net_mtu_adjust().

Referenced by main().

## totempg_member_add()

int totempg_member_add | ( | const struct totem_ip_address * | member,
|  | int | ring_no )

extern

Definition at line 1552 of file totempg.c.

References totemsrp_member_add().

## totempg_member_remove()

int totempg_member_remove | ( | const struct totem_ip_address * | member,
|  | int | ring_no )

extern

Definition at line 1559 of file totempg.c.

References totemsrp_member_remove().

## totempg_my_family_get()

int totempg_my_family_get | ( | void |  | ) |

extern

Definition at line 1537 of file totempg.c.

References totemsrp_my_family_get().

## totempg_my_nodeid_get()

unsigned int totempg_my_nodeid_get | ( | void |  | ) |

extern

Definition at line 1532 of file totempg.c.

References totemsrp_my_nodeid_get().

Referenced by message_source_is_local(), and message_source_set().

## totempg_nodestatus_get()

int totempg_nodestatus_get | ( | unsigned int | nodeid,
|  | struct totem_node_status * | node_status )

extern

Definition at line 1450 of file totempg.c.

References nodeid, and totemsrp_nodestatus_get().

## totempg_put_config()

void totempg_put_config | ( | struct totem_config * | config | ) |

extern

Definition at line 1612 of file totempg.c.

References INTERFACE_MAX, totem_config::interfaces, and totempg_totem_config.

## totempg_queue_level_register_callback()

void totempg_queue_level_register_callback | ( | totem_queue_level_changed_fn | fn | ) |

extern

Definition at line 1547 of file totempg.c.

Referenced by cs_ipcs_init().

## totempg_reconfigure()

int totempg_reconfigure | ( | void |  | ) |

extern

Definition at line 1566 of file totempg.c.

References totempg_totem_config, and totemsrp_reconfigure().

Referenced by totemconfig_commit_new_params().

## totempg_service_ready_register()

void totempg_service_ready_register | ( | void(* | totem_service_ready )(void) | ) |

extern

Definition at line 1541 of file totempg.c.

References totemsrp_service_ready_register().

Referenced by main().

## totempg_threaded_mode_enable()

void totempg_threaded_mode_enable | ( | void |  | ) |

extern

Definition at line 1585 of file totempg.c.

References totemsrp_threaded_mode_enable().

## totempg_trans_ack()

void totempg_trans_ack | ( | void |  | ) |

extern

Definition at line 1591 of file totempg.c.

References totemsrp_trans_ack().