pacemaker  2.0.1-9e909a5bdd
Scalable High-Availability cluster resource manager
results.c
Go to the documentation of this file.
1 /*
2  * Copyright 2004-2018 Andrew Beekhof <andrew@beekhof.net>
3  *
4  * This source code is licensed under the GNU Lesser General Public License
5  * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
6  */
7 
8 #include <crm_internal.h>
9 
10 #ifndef _GNU_SOURCE
11 # define _GNU_SOURCE
12 #endif
13 
14 #include <bzlib.h>
15 #include <errno.h>
16 #include <stdlib.h>
17 #include <string.h>
18 #include <qb/qbdefs.h>
19 
20 #include <crm/common/mainloop.h>
21 #include <crm/common/xml.h>
22 
23 const char *
25 {
26  int error = abs(rc);
27 
28  switch (error) {
29  case E2BIG: return "E2BIG";
30  case EACCES: return "EACCES";
31  case EADDRINUSE: return "EADDRINUSE";
32  case EADDRNOTAVAIL: return "EADDRNOTAVAIL";
33  case EAFNOSUPPORT: return "EAFNOSUPPORT";
34  case EAGAIN: return "EAGAIN";
35  case EALREADY: return "EALREADY";
36  case EBADF: return "EBADF";
37  case EBADMSG: return "EBADMSG";
38  case EBUSY: return "EBUSY";
39  case ECANCELED: return "ECANCELED";
40  case ECHILD: return "ECHILD";
41  case ECOMM: return "ECOMM";
42  case ECONNABORTED: return "ECONNABORTED";
43  case ECONNREFUSED: return "ECONNREFUSED";
44  case ECONNRESET: return "ECONNRESET";
45  /* case EDEADLK: return "EDEADLK"; */
46  case EDESTADDRREQ: return "EDESTADDRREQ";
47  case EDOM: return "EDOM";
48  case EDQUOT: return "EDQUOT";
49  case EEXIST: return "EEXIST";
50  case EFAULT: return "EFAULT";
51  case EFBIG: return "EFBIG";
52  case EHOSTDOWN: return "EHOSTDOWN";
53  case EHOSTUNREACH: return "EHOSTUNREACH";
54  case EIDRM: return "EIDRM";
55  case EILSEQ: return "EILSEQ";
56  case EINPROGRESS: return "EINPROGRESS";
57  case EINTR: return "EINTR";
58  case EINVAL: return "EINVAL";
59  case EIO: return "EIO";
60  case EISCONN: return "EISCONN";
61  case EISDIR: return "EISDIR";
62  case ELIBACC: return "ELIBACC";
63  case ELOOP: return "ELOOP";
64  case EMFILE: return "EMFILE";
65  case EMLINK: return "EMLINK";
66  case EMSGSIZE: return "EMSGSIZE";
67 #ifdef EMULTIHOP // Not available on OpenBSD
68  case EMULTIHOP: return "EMULTIHOP";
69 #endif
70  case ENAMETOOLONG: return "ENAMETOOLONG";
71  case ENETDOWN: return "ENETDOWN";
72  case ENETRESET: return "ENETRESET";
73  case ENETUNREACH: return "ENETUNREACH";
74  case ENFILE: return "ENFILE";
75  case ENOBUFS: return "ENOBUFS";
76  case ENODATA: return "ENODATA";
77  case ENODEV: return "ENODEV";
78  case ENOENT: return "ENOENT";
79  case ENOEXEC: return "ENOEXEC";
80  case ENOKEY: return "ENOKEY";
81  case ENOLCK: return "ENOLCK";
82 #ifdef ENOLINK // Not available on OpenBSD
83  case ENOLINK: return "ENOLINK";
84 #endif
85  case ENOMEM: return "ENOMEM";
86  case ENOMSG: return "ENOMSG";
87  case ENOPROTOOPT: return "ENOPROTOOPT";
88  case ENOSPC: return "ENOSPC";
89  case ENOSR: return "ENOSR";
90  case ENOSTR: return "ENOSTR";
91  case ENOSYS: return "ENOSYS";
92  case ENOTBLK: return "ENOTBLK";
93  case ENOTCONN: return "ENOTCONN";
94  case ENOTDIR: return "ENOTDIR";
95  case ENOTEMPTY: return "ENOTEMPTY";
96  case ENOTSOCK: return "ENOTSOCK";
97  /* case ENOTSUP: return "ENOTSUP"; */
98  case ENOTTY: return "ENOTTY";
99  case ENOTUNIQ: return "ENOTUNIQ";
100  case ENXIO: return "ENXIO";
101  case EOPNOTSUPP: return "EOPNOTSUPP";
102  case EOVERFLOW: return "EOVERFLOW";
103  case EPERM: return "EPERM";
104  case EPFNOSUPPORT: return "EPFNOSUPPORT";
105  case EPIPE: return "EPIPE";
106  case EPROTO: return "EPROTO";
107  case EPROTONOSUPPORT: return "EPROTONOSUPPORT";
108  case EPROTOTYPE: return "EPROTOTYPE";
109  case ERANGE: return "ERANGE";
110  case EREMOTE: return "EREMOTE";
111  case EREMOTEIO: return "EREMOTEIO";
112 
113  case EROFS: return "EROFS";
114  case ESHUTDOWN: return "ESHUTDOWN";
115  case ESPIPE: return "ESPIPE";
116  case ESOCKTNOSUPPORT: return "ESOCKTNOSUPPORT";
117  case ESRCH: return "ESRCH";
118  case ESTALE: return "ESTALE";
119  case ETIME: return "ETIME";
120  case ETIMEDOUT: return "ETIMEDOUT";
121  case ETXTBSY: return "ETXTBSY";
122  case EUNATCH: return "EUNATCH";
123  case EUSERS: return "EUSERS";
124  /* case EWOULDBLOCK: return "EWOULDBLOCK"; */
125  case EXDEV: return "EXDEV";
126 
127 #ifdef EBADE
128  /* Not available on OSX */
129  case EBADE: return "EBADE";
130  case EBADFD: return "EBADFD";
131  case EBADSLT: return "EBADSLT";
132  case EDEADLOCK: return "EDEADLOCK";
133  case EBADR: return "EBADR";
134  case EBADRQC: return "EBADRQC";
135  case ECHRNG: return "ECHRNG";
136 #ifdef EISNAM /* Not available on Illumos/Solaris */
137  case EISNAM: return "EISNAM";
138  case EKEYEXPIRED: return "EKEYEXPIRED";
139  case EKEYREJECTED: return "EKEYREJECTED";
140  case EKEYREVOKED: return "EKEYREVOKED";
141 #endif
142  case EL2HLT: return "EL2HLT";
143  case EL2NSYNC: return "EL2NSYNC";
144  case EL3HLT: return "EL3HLT";
145  case EL3RST: return "EL3RST";
146  case ELIBBAD: return "ELIBBAD";
147  case ELIBMAX: return "ELIBMAX";
148  case ELIBSCN: return "ELIBSCN";
149  case ELIBEXEC: return "ELIBEXEC";
150 #ifdef ENOMEDIUM /* Not available on Illumos/Solaris */
151  case ENOMEDIUM: return "ENOMEDIUM";
152  case EMEDIUMTYPE: return "EMEDIUMTYPE";
153 #endif
154  case ENONET: return "ENONET";
155  case ENOPKG: return "ENOPKG";
156  case EREMCHG: return "EREMCHG";
157  case ERESTART: return "ERESTART";
158  case ESTRPIPE: return "ESTRPIPE";
159 #ifdef EUCLEAN /* Not available on Illumos/Solaris */
160  case EUCLEAN: return "EUCLEAN";
161 #endif
162  case EXFULL: return "EXFULL";
163 #endif
164 
165  case pcmk_err_generic: return "pcmk_err_generic";
166  case pcmk_err_no_quorum: return "pcmk_err_no_quorum";
167  case pcmk_err_schema_validation: return "pcmk_err_schema_validation";
168  case pcmk_err_transform_failed: return "pcmk_err_transform_failed";
169  case pcmk_err_old_data: return "pcmk_err_old_data";
170  case pcmk_err_diff_failed: return "pcmk_err_diff_failed";
171  case pcmk_err_diff_resync: return "pcmk_err_diff_resync";
172  case pcmk_err_cib_modified: return "pcmk_err_cib_modified";
173  case pcmk_err_cib_backup: return "pcmk_err_cib_backup";
174  case pcmk_err_cib_save: return "pcmk_err_cib_save";
175  case pcmk_err_cib_corrupt: return "pcmk_err_cib_corrupt";
176  case pcmk_err_multiple: return "pcmk_err_multiple";
177  case pcmk_err_node_unknown: return "pcmk_err_node_unknown";
178  case pcmk_err_already: return "pcmk_err_already";
179  }
180  return "Unknown";
181 }
182 
183 const char *
185 {
186  int error = abs(rc);
187 
188  if (error == 0) {
189  return "OK";
190  } else if (error < PCMK_ERROR_OFFSET) {
191  return strerror(error);
192  }
193 
194  switch (error) {
195  case pcmk_err_generic:
196  return "Generic Pacemaker error";
197  case pcmk_err_no_quorum:
198  return "Operation requires quorum";
200  return "Update does not conform to the configured schema";
202  return "Schema transform failed";
203  case pcmk_err_old_data:
204  return "Update was older than existing configuration";
206  return "Application of an update diff failed";
208  return "Application of an update diff failed, requesting a full refresh";
210  return "The on-disk configuration was manually modified";
211  case pcmk_err_cib_backup:
212  return "Could not archive the previous configuration";
213  case pcmk_err_cib_save:
214  return "Could not save the new configuration to disk";
216  return "Could not parse on-disk configuration";
217  case pcmk_err_multiple:
218  return "Resource active on multiple nodes";
220  return "Node not found";
221  case pcmk_err_already:
222  return "Situation already as requested";
224  return "Schema is already the latest available";
225 
226  /* The following cases will only be hit on systems for which they are non-standard */
227  /* coverity[dead_error_condition] False positive on non-Linux */
228  case ENOTUNIQ:
229  return "Name not unique on network";
230  /* coverity[dead_error_condition] False positive on non-Linux */
231  case ECOMM:
232  return "Communication error on send";
233  /* coverity[dead_error_condition] False positive on non-Linux */
234  case ELIBACC:
235  return "Can not access a needed shared library";
236  /* coverity[dead_error_condition] False positive on non-Linux */
237  case EREMOTEIO:
238  return "Remote I/O error";
239  /* coverity[dead_error_condition] False positive on non-Linux */
240  case EUNATCH:
241  return "Protocol driver not attached";
242  /* coverity[dead_error_condition] False positive on non-Linux */
243  case ENOKEY:
244  return "Required key not available";
245  }
246 
247  crm_err("Unknown error code: %d", rc);
248  return "Unknown error";
249 }
250 
251 const char *
253 {
254  switch (exit_code) {
255  case CRM_EX_OK: return "CRM_EX_OK";
256  case CRM_EX_ERROR: return "CRM_EX_ERROR";
257  case CRM_EX_INVALID_PARAM: return "CRM_EX_INVALID_PARAM";
258  case CRM_EX_UNIMPLEMENT_FEATURE: return "CRM_EX_UNIMPLEMENT_FEATURE";
259  case CRM_EX_INSUFFICIENT_PRIV: return "CRM_EX_INSUFFICIENT_PRIV";
260  case CRM_EX_NOT_INSTALLED: return "CRM_EX_NOT_INSTALLED";
261  case CRM_EX_NOT_CONFIGURED: return "CRM_EX_NOT_CONFIGURED";
262  case CRM_EX_NOT_RUNNING: return "CRM_EX_NOT_RUNNING";
263  case CRM_EX_USAGE: return "CRM_EX_USAGE";
264  case CRM_EX_DATAERR: return "CRM_EX_DATAERR";
265  case CRM_EX_NOINPUT: return "CRM_EX_NOINPUT";
266  case CRM_EX_NOUSER: return "CRM_EX_NOUSER";
267  case CRM_EX_NOHOST: return "CRM_EX_NOHOST";
268  case CRM_EX_UNAVAILABLE: return "CRM_EX_UNAVAILABLE";
269  case CRM_EX_SOFTWARE: return "CRM_EX_SOFTWARE";
270  case CRM_EX_OSERR: return "CRM_EX_OSERR";
271  case CRM_EX_OSFILE: return "CRM_EX_OSFILE";
272  case CRM_EX_CANTCREAT: return "CRM_EX_CANTCREAT";
273  case CRM_EX_IOERR: return "CRM_EX_IOERR";
274  case CRM_EX_TEMPFAIL: return "CRM_EX_TEMPFAIL";
275  case CRM_EX_PROTOCOL: return "CRM_EX_PROTOCOL";
276  case CRM_EX_NOPERM: return "CRM_EX_NOPERM";
277  case CRM_EX_CONFIG: return "CRM_EX_CONFIG";
278  case CRM_EX_FATAL: return "CRM_EX_FATAL";
279  case CRM_EX_PANIC: return "CRM_EX_PANIC";
280  case CRM_EX_DISCONNECT: return "CRM_EX_DISCONNECT";
281  case CRM_EX_DIGEST: return "CRM_EX_DIGEST";
282  case CRM_EX_NOSUCH: return "CRM_EX_NOSUCH";
283  case CRM_EX_QUORUM: return "CRM_EX_QUORUM";
284  case CRM_EX_UNSAFE: return "CRM_EX_UNSAFE";
285  case CRM_EX_EXISTS: return "CRM_EX_EXISTS";
286  case CRM_EX_MULTIPLE: return "CRM_EX_MULTIPLE";
287  case CRM_EX_OLD: return "CRM_EX_OLD";
288  case CRM_EX_TIMEOUT: return "CRM_EX_TIMEOUT";
289  case CRM_EX_MAX: return "CRM_EX_UNKNOWN";
290  }
291  return "CRM_EX_UNKNOWN";
292 }
293 
294 const char *
296 {
297  switch (exit_code) {
298  case CRM_EX_OK: return "OK";
299  case CRM_EX_ERROR: return "Error occurred";
300  case CRM_EX_INVALID_PARAM: return "Invalid parameter";
301  case CRM_EX_UNIMPLEMENT_FEATURE: return "Unimplemented";
302  case CRM_EX_INSUFFICIENT_PRIV: return "Insufficient privileges";
303  case CRM_EX_NOT_INSTALLED: return "Not installed";
304  case CRM_EX_NOT_CONFIGURED: return "Not configured";
305  case CRM_EX_NOT_RUNNING: return "Not running";
306  case CRM_EX_USAGE: return "Incorrect usage";
307  case CRM_EX_DATAERR: return "Invalid data given";
308  case CRM_EX_NOINPUT: return "Input file not available";
309  case CRM_EX_NOUSER: return "User does not exist";
310  case CRM_EX_NOHOST: return "Host does not exist";
311  case CRM_EX_UNAVAILABLE: return "Necessary service unavailable";
312  case CRM_EX_SOFTWARE: return "Internal software bug";
313  case CRM_EX_OSERR: return "Operating system error occurred";
314  case CRM_EX_OSFILE: return "System file not available";
315  case CRM_EX_CANTCREAT: return "Cannot create output file";
316  case CRM_EX_IOERR: return "I/O error occurred";
317  case CRM_EX_TEMPFAIL: return "Temporary failure, try again";
318  case CRM_EX_PROTOCOL: return "Protocol violated";
319  case CRM_EX_NOPERM: return "Insufficient privileges";
320  case CRM_EX_CONFIG: return "Invalid configuration";
321  case CRM_EX_FATAL: return "Fatal error occurred, will not respawn";
322  case CRM_EX_PANIC: return "System panic required";
323  case CRM_EX_DISCONNECT: return "Not connected";
324  case CRM_EX_DIGEST: return "Digest mismatch";
325  case CRM_EX_NOSUCH: return "No such object";
326  case CRM_EX_QUORUM: return "Quorum required";
327  case CRM_EX_UNSAFE: return "Operation not safe";
328  case CRM_EX_EXISTS: return "Requested item already exists";
329  case CRM_EX_MULTIPLE: return "Multiple items match request";
330  case CRM_EX_OLD: return "Update was older than existing configuration";
331  case CRM_EX_TIMEOUT: return "Timeout occurred";
332  case CRM_EX_MAX: return "Error occurred";
333  }
334  if (exit_code > 128) {
335  return "Interrupted by signal";
336  }
337  return "Unknown exit status";
338 }
339 
349 {
350  rc = abs(rc); // Convenience for functions that return -errno
351  if (rc == EOPNOTSUPP) {
352  rc = ENOTSUP; // Values are same on Linux, can't use both in case
353  }
354  switch (rc) {
355  case pcmk_ok:
356  return CRM_EX_OK;
357 
358  case pcmk_err_no_quorum:
359  return CRM_EX_QUORUM;
360 
361  case pcmk_err_old_data:
362  return CRM_EX_OLD;
363 
366  return CRM_EX_CONFIG;
367 
368  case EACCES:
370 
371  case EBADF:
372  case EINVAL:
373  case EFAULT:
374  case ENOSYS:
375  case EOVERFLOW:
376  return CRM_EX_SOFTWARE;
377 
378  case EBADMSG:
379  case EMSGSIZE:
380  case ENOMSG:
381  case ENOPROTOOPT:
382  case EPROTO:
383  case EPROTONOSUPPORT:
384  case EPROTOTYPE:
385  return CRM_EX_PROTOCOL;
386 
387  case ECOMM:
388  case ENOMEM:
389  return CRM_EX_OSERR;
390 
391  case ECONNABORTED:
392  case ECONNREFUSED:
393  case ECONNRESET:
394  case ENOTCONN:
395  return CRM_EX_DISCONNECT;
396 
397  case EEXIST:
398  case pcmk_err_already:
399  return CRM_EX_EXISTS;
400 
401  case EIO:
402  return CRM_EX_IOERR;
403 
404  case ENOTSUP:
406 
407  case ENOTUNIQ:
408  case pcmk_err_multiple:
409  return CRM_EX_MULTIPLE;
410 
411  case ENXIO:
413  return CRM_EX_NOSUCH;
414 
415  case ETIME:
416  case ETIMEDOUT:
417  return CRM_EX_TIMEOUT;
418 
419  default:
420  return CRM_EX_ERROR;
421  }
422 }
423 
424 const char *
426 {
427  /* http://www.bzip.org/1.0.3/html/err-handling.html */
428  switch (rc) {
429  case BZ_OK:
430  case BZ_RUN_OK:
431  case BZ_FLUSH_OK:
432  case BZ_FINISH_OK:
433  case BZ_STREAM_END:
434  return "Ok";
435  case BZ_CONFIG_ERROR:
436  return "libbz2 has been improperly compiled on your platform";
437  case BZ_SEQUENCE_ERROR:
438  return "library functions called in the wrong order";
439  case BZ_PARAM_ERROR:
440  return "parameter is out of range or otherwise incorrect";
441  case BZ_MEM_ERROR:
442  return "memory allocation failed";
443  case BZ_DATA_ERROR:
444  return "data integrity error is detected during decompression";
445  case BZ_DATA_ERROR_MAGIC:
446  return "the compressed stream does not start with the correct magic bytes";
447  case BZ_IO_ERROR:
448  return "error reading or writing in the compressed file";
449  case BZ_UNEXPECTED_EOF:
450  return "compressed file finishes before the logical end of stream is detected";
451  case BZ_OUTBUFF_FULL:
452  return "output data will not fit into the buffer provided";
453  }
454  return "Unknown error";
455 }
456 
459 {
460  /* A compiler could theoretically use any type for crm_exit_t, but an int
461  * should always hold it, so cast to int to keep static analysis happy.
462  */
463  if ((((int) rc) < 0) || (((int) rc) > CRM_EX_MAX)) {
464  rc = CRM_EX_ERROR;
465  }
466 
468  crm_xml_cleanup();
469 
470  qb_log_fini();
471  crm_args_fini();
472 
473  if (crm_system_name) {
474  crm_info("Exiting %s " CRM_XS " with status %d", crm_system_name, rc);
475  free(crm_system_name);
476  } else {
477  crm_trace("Exiting with status %d", rc);
478  }
479 
480  exit(rc);
481  return rc; /* Can never happen, but allows return crm_exit(rc)
482  * where "return rc" was used previously - which
483  * keeps compilers happy.
484  */
485 }
CRM_EX_TEMPFAIL
@ CRM_EX_TEMPFAIL
Definition: results.h:104
pcmk_err_already
#define pcmk_err_already
Definition: results.h:52
CRM_EX_OK
@ CRM_EX_OK
Definition: results.h:81
pcmk_err_schema_unchanged
#define pcmk_err_schema_unchanged
Definition: results.h:48
pcmk_err_node_unknown
#define pcmk_err_node_unknown
Definition: results.h:51
CRM_EX_CONFIG
@ CRM_EX_CONFIG
Definition: results.h:107
pcmk_err_generic
#define pcmk_err_generic
Definition: results.h:38
pcmk_strerror
const char * pcmk_strerror(int rc)
Definition: results.c:184
CRM_EX_INSUFFICIENT_PRIV
@ CRM_EX_INSUFFICIENT_PRIV
Definition: results.h:87
CRM_EX_ERROR
@ CRM_EX_ERROR
Definition: results.h:82
CRM_EX_UNIMPLEMENT_FEATURE
@ CRM_EX_UNIMPLEMENT_FEATURE
Definition: results.h:86
CRM_EX_UNAVAILABLE
@ CRM_EX_UNAVAILABLE
Definition: results.h:98
pcmk_err_schema_validation
#define pcmk_err_schema_validation
Definition: results.h:40
pcmk_err_cib_save
#define pcmk_err_cib_save
Definition: results.h:47
pcmk_err_transform_failed
#define pcmk_err_transform_failed
Definition: results.h:41
crm_err
#define crm_err(fmt, args...)
Definition: logging.h:249
crm_args_fini
void crm_args_fini(void)
Definition: utils.c:190
crm_trace
#define crm_trace(fmt, args...)
Definition: logging.h:255
pcmk_err_multiple
#define pcmk_err_multiple
Definition: results.h:50
crm_exit_name
const char * crm_exit_name(crm_exit_t exit_code)
Definition: results.c:252
CRM_EX_EXISTS
@ CRM_EX_EXISTS
Definition: results.h:118
xml.h
Wrappers for and extensions to libxml2.
CRM_EX_OSERR
@ CRM_EX_OSERR
Definition: results.h:100
CRM_EX_NOINPUT
@ CRM_EX_NOINPUT
Definition: results.h:95
CRM_EX_UNSAFE
@ CRM_EX_UNSAFE
Definition: results.h:117
mainloop.h
Wrappers for and extensions to glib mainloop.
CRM_EX_NOHOST
@ CRM_EX_NOHOST
Definition: results.h:97
strerror
char * strerror(int errnum)
CRM_EX_PANIC
@ CRM_EX_PANIC
Definition: results.h:111
ENOTUNIQ
#define ENOTUNIQ
Definition: portability.h:132
crm_exit
crm_exit_t crm_exit(crm_exit_t rc)
Definition: results.c:458
pcmk_err_cib_modified
#define pcmk_err_cib_modified
Definition: results.h:45
crm_exit_str
const char * crm_exit_str(crm_exit_t exit_code)
Definition: results.c:295
crm_info
#define crm_info(fmt, args...)
Definition: logging.h:252
ECOMM
#define ECOMM
Definition: portability.h:136
PCMK_ERROR_OFFSET
#define PCMK_ERROR_OFFSET
Definition: results.h:36
CRM_EX_NOPERM
@ CRM_EX_NOPERM
Definition: results.h:106
pcmk_err_diff_failed
#define pcmk_err_diff_failed
Definition: results.h:43
CRM_XS
#define CRM_XS
Definition: logging.h:43
pcmk_err_cib_backup
#define pcmk_err_cib_backup
Definition: results.h:46
CRM_EX_DIGEST
@ CRM_EX_DIGEST
Definition: results.h:114
CRM_EX_SOFTWARE
@ CRM_EX_SOFTWARE
Definition: results.h:99
EUNATCH
#define EUNATCH
Definition: portability.h:148
ENODATA
#define ENODATA
Definition: portability.h:156
CRM_EX_PROTOCOL
@ CRM_EX_PROTOCOL
Definition: results.h:105
ENOKEY
#define ENOKEY
Definition: portability.h:152
CRM_EX_IOERR
@ CRM_EX_IOERR
Definition: results.h:103
CRM_EX_NOT_INSTALLED
@ CRM_EX_NOT_INSTALLED
Definition: results.h:88
CRM_EX_TIMEOUT
@ CRM_EX_TIMEOUT
Definition: results.h:122
CRM_EX_MAX
@ CRM_EX_MAX
Definition: results.h:123
crm_system_name
char * crm_system_name
Definition: utils.c:59
EKEYREJECTED
#define EKEYREJECTED
Definition: portability.h:172
pcmk_err_diff_resync
#define pcmk_err_diff_resync
Definition: results.h:44
EREMOTEIO
#define EREMOTEIO
Definition: portability.h:144
CRM_EX_NOUSER
@ CRM_EX_NOUSER
Definition: results.h:96
CRM_EX_MULTIPLE
@ CRM_EX_MULTIPLE
Definition: results.h:119
CRM_EX_INVALID_PARAM
@ CRM_EX_INVALID_PARAM
Definition: results.h:85
ENOSTR
#define ENOSTR
Definition: portability.h:168
ENOSR
#define ENOSR
Definition: portability.h:164
CRM_EX_CANTCREAT
@ CRM_EX_CANTCREAT
Definition: results.h:102
ETIME
#define ETIME
Definition: portability.h:160
CRM_EX_NOT_CONFIGURED
@ CRM_EX_NOT_CONFIGURED
Definition: results.h:89
crm_exit_t
enum crm_exit_e crm_exit_t
CRM_EX_OSFILE
@ CRM_EX_OSFILE
Definition: results.h:101
crm_xml_cleanup
void crm_xml_cleanup(void)
Definition: xml.c:4186
ELIBACC
#define ELIBACC
Definition: portability.h:140
CRM_EX_NOT_RUNNING
@ CRM_EX_NOT_RUNNING
Definition: results.h:90
CRM_EX_DATAERR
@ CRM_EX_DATAERR
Definition: results.h:94
pcmk_errorname
const char * pcmk_errorname(int rc)
Definition: results.c:24
CRM_EX_OLD
@ CRM_EX_OLD
Definition: results.h:113
pcmk_err_cib_corrupt
#define pcmk_err_cib_corrupt
Definition: results.h:49
mainloop_cleanup
void mainloop_cleanup(void)
Definition: mainloop.c:400
pcmk_err_no_quorum
#define pcmk_err_no_quorum
Definition: results.h:39
CRM_EX_QUORUM
@ CRM_EX_QUORUM
Definition: results.h:116
CRM_EX_NOSUCH
@ CRM_EX_NOSUCH
Definition: results.h:115
CRM_EX_USAGE
@ CRM_EX_USAGE
Definition: results.h:93
pcmk_err_old_data
#define pcmk_err_old_data
Definition: results.h:42
crm_internal.h
bz2_strerror
const char * bz2_strerror(int rc)
Definition: results.c:425
crm_errno2exit
crm_exit_t crm_errno2exit(int rc)
Map an errno to a similar exit status.
Definition: results.c:348
pcmk_ok
#define pcmk_ok
Definition: results.h:35
CRM_EX_DISCONNECT
@ CRM_EX_DISCONNECT
Definition: results.h:112
CRM_EX_FATAL
@ CRM_EX_FATAL
Definition: results.h:110