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