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
|