blob: 4a170caa099d5ce5057c0796560daaee7aef3e9c (
plain)
| 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
 | #ifndef _MP_STATES_
#define _MP_STATES_
#include "../config.h"
#include <sys/param.h>
typedef enum state_enum {
	STATE_OK,
	STATE_WARNING,
	STATE_CRITICAL,
	STATE_UNKNOWN,
	STATE_DEPENDENT
} mp_state_enum;
/* **************************************************************************
 * max_state(STATE_x, STATE_y)
 * compares STATE_x to  STATE_y and returns result based on the following
 * STATE_UNKNOWN < STATE_OK < STATE_WARNING < STATE_CRITICAL
 *
 * Note that numerically the above does not hold
 ****************************************************************************/
static inline mp_state_enum max_state(mp_state_enum a, mp_state_enum b) {
	if (a == STATE_CRITICAL || b == STATE_CRITICAL) {
		return STATE_CRITICAL;
	}
	if (a == STATE_WARNING || b == STATE_WARNING) {
		return STATE_WARNING;
	}
	if (a == STATE_OK || b == STATE_OK) {
		return STATE_OK;
	}
	if (a == STATE_UNKNOWN || b == STATE_UNKNOWN) {
		return STATE_UNKNOWN;
	}
	if (a == STATE_DEPENDENT || b == STATE_DEPENDENT) {
		return STATE_DEPENDENT;
	}
	return MAX(a, b);
}
/* **************************************************************************
 * max_state_alt(STATE_x, STATE_y)
 * compares STATE_x to  STATE_y and returns result based on the following
 * STATE_OK < STATE_DEPENDENT < STATE_UNKNOWN < STATE_WARNING < STATE_CRITICAL
 *
 * The main difference between max_state_alt and max_state it that it doesn't
 * allow setting a default to UNKNOWN. It will instead prioritixe any valid
 * non-OK state.
 ****************************************************************************/
static inline mp_state_enum max_state_alt(mp_state_enum a, mp_state_enum b) {
	if (a == STATE_CRITICAL || b == STATE_CRITICAL) {
		return STATE_CRITICAL;
	}
	if (a == STATE_WARNING || b == STATE_WARNING) {
		return STATE_WARNING;
	}
	if (a == STATE_UNKNOWN || b == STATE_UNKNOWN) {
		return STATE_UNKNOWN;
	}
	if (a == STATE_DEPENDENT || b == STATE_DEPENDENT) {
		return STATE_DEPENDENT;
	}
	if (a == STATE_OK || b == STATE_OK) {
		return STATE_OK;
	}
	return MAX(a, b);
}
#endif
 |