10#ifndef PCMK__CRM_COMMON_IPC__H
11#define PCMK__CRM_COMMON_IPC__H
214 pid_t *gotpid, uid_t *gotuid, gid_t *gotgid);
void(* pcmk_ipc_callback_t)(pcmk_ipc_api_t *api, enum pcmk_ipc_event event_type, crm_exit_t status, void *event_data, void *user_data)
Callback function type for Pacemaker daemon IPC APIs.
int pcmk_poll_ipc(const pcmk_ipc_api_t *api, int timeout_ms)
Check whether an IPC connection has data available (without main loop)
void crm_ipc_destroy(crm_ipc_t *client)
void pcmk_disconnect_ipc(pcmk_ipc_api_t *api)
Disconnect an IPC API instance.
const char * crm_ipc_name(crm_ipc_t *client)
int crm_ipc_send(crm_ipc_t *client, const xmlNode *message, enum crm_ipc_flags flags, int32_t ms_timeout, xmlNode **reply)
Send an IPC XML message.
int pcmk_connect_ipc(pcmk_ipc_api_t *api, enum pcmk_ipc_dispatch dispatch_type)
Connect to a Pacemaker daemon via IPC.
long crm_ipc_read(crm_ipc_t *client)
int crm_ipc_get_fd(crm_ipc_t *client)
unsigned int crm_ipc_default_buffer_size(void)
Return pacemaker's IPC buffer size.
@ crm_ipc_proxied_relay_response
@ crm_ipc_multipart
This is a multi-part IPC message.
@ crm_ipc_server_event
Send an Event instead of a Response.
@ crm_ipc_client_response
A response is expected in reply.
@ crm_ipc_proxied
ALL replies to proxied connections need to be sent as events
@ crm_ipc_server_free
Free the iovec after sending.
@ crm_ipc_multipart_end
This is the end of a multi-part IPC message.
void pcmk_free_ipc_event(struct iovec *event)
Free an I/O vector created by pcmk__ipc_prepare_iov()
int crm_ipc_ready(crm_ipc_t *client)
Check whether an IPC connection is ready to be read.
bool crm_ipc_connected(crm_ipc_t *client)
pcmk_ipc_event
Possible event types that an IPC event callback can be called for.
@ pcmk_ipc_event_notify
Notification from daemon.
@ pcmk_ipc_event_reply
Daemon's reply to client IPC request.
@ pcmk_ipc_event_connect
Result of asynchronous connection attempt.
@ pcmk_ipc_event_disconnect
Termination of IPC connection.
pcmk_ipc_server
Available IPC interfaces.
@ pcmk_ipc_schedulerd
Scheduler.
@ pcmk_ipc_based
CIB manager.
@ pcmk_ipc_execd
Executor.
@ pcmk_ipc_pacemakerd
Launcher.
@ pcmk_ipc_attrd
Attribute manager.
@ pcmk_ipc_controld
Controller.
@ pcmk_ipc_unknown
Unknown or invalid.
const char * pcmk_ipc_name(const pcmk_ipc_api_t *api, bool for_log)
Get the IPC name used with an IPC API connection.
int crm_ipc_is_authentic_process(int sock, uid_t refuid, gid_t refgid, pid_t *gotpid, uid_t *gotuid, gid_t *gotgid)
Check the authenticity of the IPC socket peer process (legacy)
void crm_ipc_close(crm_ipc_t *client)
void pcmk_free_ipc_api(pcmk_ipc_api_t *api)
Free the contents of an IPC API object.
pcmk_ipc_dispatch
How IPC replies should be dispatched.
@ pcmk_ipc_dispatch_sync
Sending a command will wait for any reply.
@ pcmk_ipc_dispatch_poll
Caller will poll and dispatch IPC.
@ pcmk_ipc_dispatch_main
Attach IPC to GMainLoop for dispatch.
uint32_t crm_ipc_buffer_flags(crm_ipc_t *client)
int pcmk_new_ipc_api(pcmk_ipc_api_t **api, enum pcmk_ipc_server server)
Create a new object for using Pacemaker daemon IPC.
const char * crm_ipc_buffer(crm_ipc_t *client)
struct crm_ipc_s crm_ipc_t
bool pcmk_ipc_is_connected(pcmk_ipc_api_t *api)
Check whether an IPC API connection is active.
void pcmk_dispatch_ipc(pcmk_ipc_api_t *api)
Dispatch available messages on an IPC connection (without main loop)
crm_ipc_t * crm_ipc_new(const char *name, size_t max_size)
Create a new (legacy) object for using Pacemaker daemon IPC.
int pcmk_ipc_purge_node(pcmk_ipc_api_t *api, const char *node_name, uint32_t nodeid)
Ask a Pacemaker daemon to purge a node from its peer cache.
void pcmk_register_ipc_callback(pcmk_ipc_api_t *api, pcmk_ipc_callback_t cb, void *user_data)
Register a callback for IPC API events.
enum crm_exit_e crm_exit_t
Exit status codes for tools and daemons.
enum pcmk_ipc_dispatch dispatch_type
enum pcmk_ipc_server server
Wrappers for and extensions to libxml2.