pacemaker  1.1.16-94ff4df
Scalable High-Availability cluster resource manager
Macros | Typedefs | Functions | Variables
plugin.c File Reference
#include <crm_internal.h>
#include <crm/cluster/internal.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <sys/socket.h>
#include <sys/un.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 <signal.h>
#include <string.h>
#include <corosync/totem/totempg.h>
#include <corosync/engine/objdb.h>
#include <corosync/engine/config.h>
#include <config.h>
#include "plugin.h"
#include "utils.h"
#include <glib.h>
#include <sys/resource.h>
#include <sys/utsname.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <pthread.h>
#include <bzlib.h>
#include <pwd.h>
Include dependency graph for plugin.c:

Go to the source code of this file.

Macros

#define MAX_RESPAWN   100
 
#define LOOPBACK_ID   16777343
 
#define crm_flag_none   0x00000000
 
#define crm_flag_members   0x00000001
 
#define min(x, y)   (x)<(y)?(x):(y)
 

Typedefs

typedef const void ais_void_ptr
 

Functions

struct crm_identify_msg_s __attribute__ ((packed))
 
cs_ipc_header_request_t header __attribute__ ((aligned(8)))
 
void send_cluster_id (void)
 
int send_plugin_msg_raw (const AIS_Message *ais_msg)
 
char * pcmk_generate_membership_data (void)
 
gboolean check_message_sanity (const AIS_Message *msg, const char *data)
 
int pcmk_shutdown (void)
 
void pcmk_peer_update (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)
 
int pcmk_startup (struct corosync_api_v1 *corosync_api)
 
int pcmk_config_init (struct corosync_api_v1 *corosync_api)
 
int pcmk_ipc_exit (void *conn)
 
int pcmk_ipc_connect (void *conn)
 
void pcmk_ipc (void *conn, ais_void_ptr *msg)
 
void pcmk_exec_dump (void)
 
void pcmk_cluster_swab (void *msg)
 
void pcmk_cluster_callback (ais_void_ptr *message, unsigned int nodeid)
 
void pcmk_nodeid (void *conn, ais_void_ptr *msg)
 
void pcmk_nodes (void *conn, ais_void_ptr *msg)
 
void pcmk_notify (void *conn, ais_void_ptr *msg)
 
void pcmk_remove_member (void *conn, ais_void_ptr *msg)
 
void pcmk_quorum (void *conn, ais_void_ptr *msg)
 
void pcmk_cluster_id_swab (void *msg)
 
void pcmk_cluster_id_callback (ais_void_ptr *message, unsigned int nodeid)
 
void ais_remove_peer (char *node_id)
 
void ais_remove_peer_by_name (const char *node_name)
 
struct corosync_service_engine * pcmk_get_handler_ver0 (void)
 
 __attribute__ ((constructor))
 
void member_loop_fn (gpointer key, gpointer value, gpointer user_data)
 
void send_member_notification (void)
 
gboolean route_ais_message (const AIS_Message *msg, gboolean local_origin)
 
gboolean process_ais_message (const AIS_Message *msg)
 

Variables

struct corosync_api_v1 * pcmk_api = NULL
 
uint32_t plugin_has_votes = 0
 
uint32_t plugin_expected_votes = 2
 
int use_mgmtd = 0
 
int plugin_log_level = LOG_DEBUG
 
char * local_uname = NULL
 
int local_uname_len = 0
 
char * local_cname = NULL
 
int local_cname_len = 0
 
uint32_t local_nodeid = 0
 
char * ipc_channel_name = NULL
 
uint64_t membership_seq = 0
 
pthread_t pcmk_wait_thread
 
gboolean use_mcp = FALSE
 
gboolean wait_active = TRUE
 
gboolean have_reliable_membership_id = FALSE
 
GHashTable * ipc_client_list = NULL
 
GHashTable * membership_list = NULL
 
GHashTable * membership_notify_list = NULL
 
uint32_t id
 
uint32_t pid
 
int32_t votes
 
uint32_t processes
 
char uname [256]
 
char version [256]
 
uint64_t born_on
 
struct corosync_service_engine pcmk_service_handler
 
struct corosync_service_engine_iface_ver0 pcmk_service_handler_iface
 
struct res_overlay __attribute__
 
struct res_overlay * res_overlay = NULL
 

Macro Definition Documentation

◆ crm_flag_members

#define crm_flag_members   0x00000001

Definition at line 82 of file plugin.c.

◆ crm_flag_none

#define crm_flag_none   0x00000000

Definition at line 81 of file plugin.c.

◆ LOOPBACK_ID

#define LOOPBACK_ID   16777343

Definition at line 80 of file plugin.c.

◆ MAX_RESPAWN

#define MAX_RESPAWN   100

Definition at line 79 of file plugin.c.

◆ min

#define min (   x,
 
)    (x)<(y)?(x):(y)

Definition at line 1617 of file plugin.c.

Typedef Documentation

◆ ais_void_ptr

typedef const void ais_void_ptr

Definition at line 115 of file plugin.c.

Function Documentation

◆ __attribute__() [1/3]

struct crm_identify_msg_s __attribute__ ( (packed)  )

◆ __attribute__() [2/3]

cs_ipc_header_request_t header __attribute__::__attribute__ ( (aligned(8))  )

◆ __attribute__() [3/3]

__attribute__ ( (constructor)  )

Definition at line 274 of file plugin.c.

◆ ais_remove_peer()

void ais_remove_peer ( char *  node_id)

Definition at line 1699 of file plugin.c.

◆ ais_remove_peer_by_name()

void ais_remove_peer_by_name ( const char *  node_name)

Definition at line 1724 of file plugin.c.

◆ check_message_sanity()

gboolean check_message_sanity ( const AIS_Message msg,
const char *  data 
)

Definition at line 1372 of file plugin.c.

◆ member_loop_fn()

void member_loop_fn ( gpointer  key,
gpointer  value,
gpointer  user_data 
)

Definition at line 1183 of file plugin.c.

◆ pcmk_cluster_callback()

void pcmk_cluster_callback ( ais_void_ptr message,
unsigned int  nodeid 
)

Definition at line 915 of file plugin.c.

◆ pcmk_cluster_id_callback()

void pcmk_cluster_id_callback ( ais_void_ptr message,
unsigned int  nodeid 
)

Definition at line 953 of file plugin.c.

◆ pcmk_cluster_id_swab()

void pcmk_cluster_id_swab ( void *  msg)

Definition at line 937 of file plugin.c.

◆ pcmk_cluster_swab()

void pcmk_cluster_swab ( void *  msg)

Definition at line 887 of file plugin.c.

◆ pcmk_config_init()

int pcmk_config_init ( struct corosync_api_v1 *  corosync_api)

Definition at line 439 of file plugin.c.

◆ pcmk_exec_dump()

void pcmk_exec_dump ( void  )

Definition at line 1794 of file plugin.c.

◆ pcmk_generate_membership_data()

char * pcmk_generate_membership_data ( void  )

Definition at line 1193 of file plugin.c.

◆ pcmk_get_handler_ver0()

struct corosync_service_engine * pcmk_get_handler_ver0 ( void  )

Definition at line 269 of file plugin.c.

◆ pcmk_ipc()

void pcmk_ipc ( void *  conn,
ais_void_ptr msg 
)

Definition at line 994 of file plugin.c.

◆ pcmk_ipc_connect()

int pcmk_ipc_connect ( void *  conn)

Definition at line 875 of file plugin.c.

◆ pcmk_ipc_exit()

int pcmk_ipc_exit ( void *  conn)

Definition at line 842 of file plugin.c.

◆ pcmk_nodeid()

void pcmk_nodeid ( void *  conn,
ais_void_ptr msg 
)

Definition at line 1329 of file plugin.c.

◆ pcmk_nodes()

void pcmk_nodes ( void *  conn,
ais_void_ptr msg 
)

Definition at line 1223 of file plugin.c.

◆ pcmk_notify()

void pcmk_notify ( void *  conn,
ais_void_ptr msg 
)

Definition at line 1302 of file plugin.c.

◆ pcmk_peer_update()

void pcmk_peer_update ( 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 at line 735 of file plugin.c.

◆ pcmk_quorum()

void pcmk_quorum ( void *  conn,
ais_void_ptr msg 
)

Definition at line 1277 of file plugin.c.

◆ pcmk_remove_member()

void pcmk_remove_member ( void *  conn,
ais_void_ptr msg 
)

Definition at line 1241 of file plugin.c.

◆ pcmk_shutdown()

int pcmk_shutdown ( void  )

Definition at line 1080 of file plugin.c.

◆ pcmk_startup()

int pcmk_startup ( struct corosync_api_v1 *  corosync_api)

Definition at line 573 of file plugin.c.

◆ process_ais_message()

gboolean process_ais_message ( const AIS_Message msg)

Definition at line 1760 of file plugin.c.

◆ route_ais_message()

gboolean route_ais_message ( const AIS_Message msg,
gboolean  local_origin 
)

Definition at line 1470 of file plugin.c.

◆ send_cluster_id()

void send_cluster_id ( void  )

Definition at line 1620 of file plugin.c.

◆ send_member_notification()

void send_member_notification ( void  )

Definition at line 1360 of file plugin.c.

◆ send_plugin_msg_raw()

int send_plugin_msg_raw ( const AIS_Message ais_msg)

Definition at line 1576 of file plugin.c.

Variable Documentation

◆ __attribute__

struct res_overlay __attribute__

◆ born_on

uint64_t born_on

Definition at line 85 of file plugin.c.

◆ have_reliable_membership_id

gboolean have_reliable_membership_id = FALSE

Definition at line 74 of file plugin.c.

◆ id

Definition at line 79 of file plugin.c.

◆ ipc_channel_name

char* ipc_channel_name = NULL

Definition at line 66 of file plugin.c.

◆ ipc_client_list

GHashTable* ipc_client_list = NULL

Definition at line 75 of file plugin.c.

◆ local_cname

char* local_cname = NULL

Definition at line 63 of file plugin.c.

◆ local_cname_len

int local_cname_len = 0

Definition at line 64 of file plugin.c.

◆ local_nodeid

uint32_t local_nodeid = 0

Definition at line 65 of file plugin.c.

◆ local_uname

char* local_uname = NULL

Definition at line 61 of file plugin.c.

◆ local_uname_len

int local_uname_len = 0

Definition at line 62 of file plugin.c.

◆ membership_list

GHashTable* membership_list = NULL

Definition at line 76 of file plugin.c.

◆ membership_notify_list

GHashTable* membership_notify_list = NULL

Definition at line 77 of file plugin.c.

◆ membership_seq

uint64_t membership_seq = 0

Definition at line 69 of file plugin.c.

◆ pcmk_api

struct corosync_api_v1* pcmk_api = NULL

Definition at line 54 of file plugin.c.

◆ pcmk_service_handler

struct corosync_service_engine pcmk_service_handler
Initial value:
= {
.name = (char *)"Pacemaker Cluster Manager "PACEMAKER_VERSION,
.private_data_size = 0,
.flow_control = COROSYNC_LIB_FLOW_CONTROL_NOT_REQUIRED,
.allow_inquorate = CS_LIB_ALLOW_INQUORATE,
.lib_init_fn = pcmk_ipc_connect,
.lib_exit_fn = pcmk_ipc_exit,
.exec_init_fn = pcmk_startup,
.exec_exit_fn = pcmk_shutdown,
.config_init_fn = pcmk_config_init,
.priority = 50,
.lib_engine = pcmk_lib_service,
.lib_engine_count = sizeof (pcmk_lib_service) / sizeof (struct corosync_lib_handler),
.exec_engine = pcmk_exec_service,
.exec_engine_count = sizeof (pcmk_exec_service) / sizeof (struct corosync_exec_handler),
.confchg_fn = pcmk_peer_update,
.exec_dump_fn = pcmk_exec_dump,
}
void pcmk_exec_dump(void)
Definition: plugin.c:1794
int pcmk_config_init(struct corosync_api_v1 *corosync_api)
Definition: plugin.c:439
#define PACEMAKER_VERSION
Definition: config.h:523
#define PCMK_SERVICE_ID
Definition: config.h:550
int pcmk_ipc_connect(void *conn)
Definition: plugin.c:875
void pcmk_peer_update(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: plugin.c:735
int pcmk_shutdown(void)
Definition: plugin.c:1080
int pcmk_startup(struct corosync_api_v1 *corosync_api)
Definition: plugin.c:573
int pcmk_ipc_exit(void *conn)
Definition: plugin.c:842

Definition at line 203 of file plugin.c.

◆ pcmk_service_handler_iface

struct corosync_service_engine_iface_ver0 pcmk_service_handler_iface
Initial value:
= {
.corosync_get_service_engine_ver0 = pcmk_get_handler_ver0
}
struct corosync_service_engine * pcmk_get_handler_ver0(void)
Definition: plugin.c:269

Definition at line 233 of file plugin.c.

◆ pcmk_wait_thread

pthread_t pcmk_wait_thread

Definition at line 70 of file plugin.c.

◆ pid

uint32_t pid

Definition at line 80 of file plugin.c.

◆ plugin_expected_votes

uint32_t plugin_expected_votes = 2

Definition at line 57 of file plugin.c.

◆ plugin_has_votes

uint32_t plugin_has_votes = 0

Definition at line 56 of file plugin.c.

◆ plugin_log_level

int plugin_log_level = LOG_DEBUG

Definition at line 60 of file plugin.c.

◆ processes

uint32_t processes

Definition at line 82 of file plugin.c.

◆ res_overlay

struct res_overlay* res_overlay = NULL

Definition at line 977 of file plugin.c.

◆ uname

char uname[256]

Definition at line 83 of file plugin.c.

◆ use_mcp

gboolean use_mcp = FALSE

Definition at line 72 of file plugin.c.

◆ use_mgmtd

int use_mgmtd = 0

Definition at line 59 of file plugin.c.

◆ version

char version[256]

Definition at line 84 of file plugin.c.

◆ votes

int32_t votes

Definition at line 81 of file plugin.c.

◆ wait_active

gboolean wait_active = TRUE

Definition at line 73 of file plugin.c.