File: mpath_cmd.h

package info (click to toggle)
multipath-tools 0.14.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,088 kB
  • sloc: ansic: 64,885; perl: 1,622; makefile: 742; sh: 732; pascal: 155
file content (131 lines) | stat: -rw-r--r-- 3,476 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// SPDX-License-Identifier: LGPL-2.1-or-later
/*
 * Copyright (C) 2015 Red Hat, Inc.
 *
 * This file is part of the device-mapper multipath userspace tools.
 */

#ifndef MPATH_CMD_H_INCLUDED
#define MPATH_CMD_H_INCLUDED

/*
 * This should be sufficient for json output for >10000 maps,
 * and >60000 paths.
 */
#define MAX_REPLY_LEN (32 * 1024 * 1024)

#ifdef __cplusplus
extern "C" {
#endif

#define DEFAULT_REPLY_TIMEOUT	4000


/*
 * DESCRIPTION:
 *	Same as mpath_connect() (see below) except for the "nonblocking"
 *	parameter.
 *	If "nonblocking" is set, connects in non-blocking mode. This is
 *	useful to avoid blocking if the listening socket's backlog is
 *	exceeded. In this case, errno will be set to EAGAIN.
 *	In case of success, the returned file descriptor is in in blocking
 *	mode, even if "nonblocking" was true.
 *
 * RETURNS:
 *	A file descriptor on success. -1 on failure (with errno set).
 */
int mpath_connect__(int nonblocking);

/*
 * DESCRIPTION:
 *	Connect to the running multipathd daemon. On systems with the
 *	multipathd.socket systemd unit file installed, this command will
 *	start multipathd if it is not already running. This function
 *	must be run before any of the others in this library
 *
 * RETURNS:
 *	A file descriptor on success. -1 on failure (with errno set).
 */
int mpath_connect(void);


/*
 * DESCRIPTION:
 *	Disconnect from the multipathd daemon. This function must be
 *	run after processing all the multipath commands.
 *
 * RETURNS:
 *	0 on success. -1 on failure (with errno set).
 */
int mpath_disconnect(int fd);


/*
 * DESCRIPTION
 *	Send multipathd a command and return the reply. This function
 *	does the same as calling mpath_send_cmd() and then
 *	mpath_recv_reply()
 *
 * RETURNS:
 *	0 on success, and reply will either be NULL (if there was no
 *	reply data), or point to the reply string, which must be freed by
 *	the caller. -1 on failure (with errno set).
 */
int mpath_process_cmd(int fd, const char *cmd, char **reply,
		      unsigned int timeout);


/*
 * DESCRIPTION:
 *	Send a command to multipathd
 *
 * RETURNS:
 *	0 on success. -1 on failure (with errno set)
 */
int mpath_send_cmd(int fd, const char *cmd);


/*
 * DESCRIPTION:
 *	Return a reply from multipathd for a previously sent command.
 *	This is equivalent to calling mpath_recv_reply_len(), allocating
 *	a buffer of the appropriate size, and then calling
 *	mpath_recv_reply_data() with that buffer.
 *
 * RETURNS:
 *	0 on success, and reply will either be NULL (if there was no
 *	reply data), or point to the reply string, which must be freed by
 *	the caller, -1 on failure (with errno set).
 */
int mpath_recv_reply(int fd, char **reply, unsigned int timeout);


/*
 * DESCRIPTION:
 *	Return the size of the upcoming reply data from the sent multipath
 *	command. This must be called before calling mpath_recv_reply_data().
 *
 * RETURNS:
 *	The required size of the reply data buffer on success. -1 on
 *	failure (with errno set).
 */
ssize_t mpath_recv_reply_len(int fd, unsigned int timeout);


/*
 * DESCRIPTION:
 *	Return the reply data from the sent multipath command.
 *	mpath_recv_reply_len must be called first. reply must point to a
 *	buffer of len size.
 *
 * RETURNS:
 *	0 on success, and reply will contain the reply data string. -1
 *	on failure (with errno set).
 */
int mpath_recv_reply_data(int fd, char *reply, size_t len,
			  unsigned int timeout);

#ifdef __cplusplus
}
#endif
#endif /* MPATH_CMD_H_INCLUDED */