22 #ifndef CRM_INTERNAL__H 23 # define CRM_INTERNAL__H 30 # include <libxml/tree.h> 49 static inline gboolean
50 is_privileged(
const char *user)
56 }
else if (strcmp(user,
"root") == 0) {
67 # define no_argument 0 68 # define required_argument 1 71 # define pcmk_option_default 0x00000 72 # define pcmk_option_hidden 0x00001 73 # define pcmk_option_paragraph 0x00002 74 # define pcmk_option_example 0x00004 96 const char *app_desc);
99 int crm_help(
char cmd,
int exit_code);
109 gboolean(*is_valid) (
const char *);
116 const char *
cluster_option(GHashTable * options, gboolean(*validate) (
const char *),
117 const char *
name,
const char *old_name,
const char *def_value);
139 const char * caller_version,
int target_rc,
const char * node,
140 const char * origin,
int level);
150 crm_strlen_zero(
const char *s)
152 return !s || *s ==
'\0';
160 char *
generate_op_key(
const char *rsc_id,
const char *op_type,
int interval);
161 char *
generate_notify_key(
const char *rsc_id,
const char *notify_type,
const char *op_type);
166 static inline long long 167 crm_clear_bit(
const char *
function,
const char *target,
long long word,
long long bit)
169 long long rc = (word & ~bit);
174 crm_trace(
"Bit 0x%.8llx for %s cleared by %s", bit, target,
function);
176 crm_trace(
"Bit 0x%.8llx cleared by %s", bit,
function);
182 static inline long long 183 crm_set_bit(
const char *
function,
const char *target,
long long word,
long long bit)
185 long long rc = (word | bit);
190 crm_trace(
"Bit 0x%.8llx for %s set by %s", bit, target,
function);
192 crm_trace(
"Bit 0x%.8llx set by %s", bit,
function);
198 # define set_bit(word, bit) word = crm_set_bit(__FUNCTION__, NULL, word, bit) 199 # define clear_bit(word, bit) word = crm_clear_bit(__FUNCTION__, NULL, word, bit) 204 char *
crm_concat(
const char *prefix,
const char *suffix,
char join);
208 unsigned int *result_len);
219 int *timer_id,
void *userdata,
void (*callback) (
void *userdata,
int sock));
221 # ifdef HAVE_GNUTLS_GNUTLS_H 257 # define REMOTE_MSG_TERMINATOR "\r\n\r\n" 269 # define crm_config_err(fmt...) { crm_config_error = TRUE; crm_err(fmt); } 270 # define crm_config_warn(fmt...) { crm_config_warning = TRUE; crm_warn(fmt); } 272 # define attrd_channel T_ATTRD 273 # define F_ATTRD_KEY "attr_key" 274 # define F_ATTRD_ATTRIBUTE "attr_name" 275 # define F_ATTRD_REGEX "attr_regex" 276 # define F_ATTRD_TASK "task" 277 # define F_ATTRD_VALUE "attr_value" 278 # define F_ATTRD_SET "attr_set" 279 # define F_ATTRD_IS_REMOTE "attr_is_remote" 280 # define F_ATTRD_IS_PRIVATE "attr_is_private" 281 # define F_ATTRD_SECTION "attr_section" 282 # define F_ATTRD_DAMPEN "attr_dampening" 283 # define F_ATTRD_IGNORE_LOCALLY "attr_ignore_locally" 284 # define F_ATTRD_HOST "attr_host" 285 # define F_ATTRD_HOST_ID "attr_host_id" 286 # define F_ATTRD_USER "attr_user" 287 # define F_ATTRD_WRITER "attr_writer" 288 # define F_ATTRD_VERSION "attr_version" 291 # define ATTRD_OP_PEER_REMOVE "peer-remove" 292 # define ATTRD_OP_UPDATE "update" 293 # define ATTRD_OP_QUERY "query" 294 # define ATTRD_OP_REFRESH "refresh" 295 # define ATTRD_OP_FLUSH "flush" 296 # define ATTRD_OP_SYNC "sync" 297 # define ATTRD_OP_SYNC_RESPONSE "sync-response" 299 # if SUPPORT_COROSYNC 301 # include <qb/qbipc_common.h> 302 # include <corosync/corotypes.h> 306 # include <corosync/corodefs.h> 307 # include <corosync/coroipcc.h> 308 # include <corosync/coroipc_types.h> 310 qb_to_cs_error(
int a)
341 qb_ipcs_service_t **ipcs_rw,
342 qb_ipcs_service_t **ipcs_shm,
343 struct qb_ipcs_service_handlers *ro_cb,
344 struct qb_ipcs_service_handlers *rw_cb);
347 qb_ipcs_service_t *ipcs_rw,
348 qb_ipcs_service_t *ipcs_shm);
350 static inline void *realloc_safe(
void *ptr,
size_t size)
352 void *ret = realloc(ptr, size);
362 void crm_xml_dump(xmlNode *
data,
int options,
char **buffer,
int *offset,
int *max,
int depth);
gboolean daemon_option_enabled(const char *daemon, const char *option)
char * generate_transition_magic(const char *transition_key, int op_status, int op_rc)
void remote_proxy_relay_response(lrmd_t *lrmd, const char *session_id, xmlNode *msg, int msg_id)
char * crm_compat_realpath(const char *path)
void * find_library_function(void **handle, const char *lib, const char *fn, int fatal)
void remote_proxy_end_session(const char *session)
void remote_proxy_notify_destroy(lrmd_t *lrmd, const char *session_id)
int crm_pid_active(long pid, const char *daemon)
int crm_remote_ready(crm_remote_t *remote, int total_timeout)
gboolean crm_remote_recv(crm_remote_t *remote, int total_timeout, int *disconnected)
void crm_buffer_add_char(char **buffer, int *offset, int *max, char c)
struct pe_cluster_option_s pe_cluster_option
internal procfs utilities
void crm_make_daemon(const char *name, gboolean daemonize, const char *pidfile)
char * generate_transition_magic_v202(const char *transition_key, int op_status)
struct mainloop_io_s mainloop_io_t
int crm_help(char cmd, int exit_code)
void stonith_ipc_server_init(qb_ipcs_service_t **ipcs, struct qb_ipcs_service_handlers *cb)
char * add_list_element(char *list, const char *value)
gboolean crm_digest_verify(xmlNode *input, const char *expected)
Return whether calculated digest of XML tree matches expected digest.
void g_hash_destroy_str(gpointer data)
char * generate_notify_key(const char *rsc_id, const char *notify_type, const char *op_type)
void remote_proxy_relay_event(lrmd_t *lrmd, const char *session_id, xmlNode *msg)
void crm_set_options(const char *short_options, const char *usage, struct crm_option *long_options, const char *app_desc)
gboolean check_number(const char *value)
void filter_action_parameters(xmlNode *param_set, const char *version)
int crm_remote_tcp_connect(const char *host, int port)
int crm_read_pidfile(const char *filename)
void * convert_const_pointer(const void *ptr)
Wrappers for and extensions to libqb logging.
void cib_ipc_servers_init(qb_ipcs_service_t **ipcs_ro, qb_ipcs_service_t **ipcs_rw, qb_ipcs_service_t **ipcs_shm, struct qb_ipcs_service_handlers *ro_cb, struct qb_ipcs_service_handlers *rw_cb)
char * generate_transition_key(int action, int transition_id, int target_rc, const char *node)
void config_metadata(const char *name, const char *version, const char *desc_short, const char *desc_long, pe_cluster_option *option_list, int len)
int daemon(int nochdir, int noclose)
const char * default_value
void determine_request_user(const char *user, xmlNode *request, const char *field)
int crm_initiate_client_tls_handshake(crm_remote_t *remote, int timeout_ms)
struct crm_ipc_s crm_ipc_t
int crm_pidfile_inuse(const char *filename, long mypid, const char *daemon)
xmlNode * crm_remote_parse_buffer(crm_remote_t *remote)
gboolean check_quorum(const char *value)
#define crm_trace(fmt, args...)
enum crm_proc_flag __attribute__
void pcmk_panic(const char *origin)
void cib_ipc_servers_destroy(qb_ipcs_service_t *ipcs_ro, qb_ipcs_service_t *ipcs_rw, qb_ipcs_service_t *ipcs_shm)
gboolean check_time(const char *value)
struct qb_ipc_response_header cs_ipc_header_response_t
gboolean check_boolean(const char *value)
int crm_remote_tcp_connect_async(const char *host, int port, int timeout, int *timer_id, void *userdata, void(*callback)(void *userdata, int sock))
const char * description_long
int crm_get_option_long(int argc, char **argv, int *index, const char **longname)
struct remote_proxy_s remote_proxy_t
const char * daemon_option(const char *option)
void attrd_ipc_server_init(qb_ipcs_service_t **ipcs, struct qb_ipcs_service_handlers *cb)
qb_ipcs_service_t * crmd_ipc_server_init(struct qb_ipcs_service_handlers *cb)
const char * cluster_option(GHashTable *options, gboolean(*validate)(const char *), const char *name, const char *old_name, const char *def_value)
const char * description_short
bool crm_compress_string(const char *data, int length, int max, char **result, unsigned int *result_len)
gboolean check_script(const char *value)
void remote_proxy_free(gpointer data)
void set_daemon_option(const char *option, const char *value)
gboolean check_utilization(const char *value)
xmlNode * create_operation_update(xmlNode *parent, lrmd_event_data_t *event, const char *caller_version, int target_rc, const char *node, const char *origin, int level)
void * create_psk_tls_session(int csock, int type, void *credentials)
void verify_all_options(GHashTable *options, pe_cluster_option *option_list, int len)
void strip_text_nodes(xmlNode *xml)
char * generate_hash_key(const char *crm_msg_reference, const char *sys)
const char * crm_acl_get_set_user(xmlNode *request, const char *field, const char *peer_user)
pid_t pcmk_locate_sbd(void)
gboolean check_timer(const char *value)
int crm_get_option(int argc, char **argv, int *index)
char * crm_concat(const char *prefix, const char *suffix, char join)
char * generate_op_key(const char *rsc_id, const char *op_type, int interval)
void * crm_create_anon_tls_session(int sock, int type, void *credentials)
const char * get_cluster_pref(GHashTable *options, pe_cluster_option *option_list, int len, const char *name)
int crm_remote_send(crm_remote_t *remote, xmlNode *msg)
long long crm_int_helper(const char *text, char **end_text)
const char * crm_xml_add_last_written(xmlNode *xml_node)
char * uid2username(uid_t uid)
enum crm_ais_msg_types type
struct qb_ipc_request_header cs_ipc_header_request_t
void crm_xml_dump(xmlNode *data, int options, char **buffer, int *offset, int *max, int depth)