summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2024-09-27 13:46:25 +0200
committerGitHub <noreply@github.com>2024-09-27 13:46:25 +0200
commit1f487e984e94c512cf00b9aa4d61d6c3d9d7b369 (patch)
tree159ab89885cf7eb8a9533ed7d5e08c6d75297a9a
parenta378134ddc042d72d6fde7b018de66e98d9e41d5 (diff)
parentb1e96a3bf30d148c33de8715ed30a3df4a829ecd (diff)
downloadmonitoring-plugins-1f487e9.tar.gz
Merge pull request #2020 from RincewindsHat/check_snmp_fixes
Check snmp fixes
-rw-r--r--plugins/check_snmp.c158
1 files changed, 78 insertions, 80 deletions
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
index 937b3a5d..90a04027 100644
--- a/plugins/check_snmp.c
+++ b/plugins/check_snmp.c
@@ -55,8 +55,6 @@ const char *email = "devel@monitoring-plugins.org";
55#define CRIT_STRING 2 55#define CRIT_STRING 2
56#define CRIT_REGEX 4 56#define CRIT_REGEX 4
57#define WARN_PRESENT 8 57#define WARN_PRESENT 8
58#define WARN_STRING 16
59#define WARN_REGEX 32
60 58
61#define OID_COUNT_STEP 8 59#define OID_COUNT_STEP 8
62 60
@@ -86,82 +84,82 @@ const char *email = "devel@monitoring-plugins.org";
86 84
87 85
88 86
89int process_arguments (int, char **); 87static int process_arguments (int, char **);
90int validate_arguments (void); 88static int validate_arguments (void);
91char *thisarg (char *str); 89static char *thisarg (char *str);
92char *nextarg (char *str); 90static char *nextarg (char *str);
93void print_usage (void); 91void print_usage (void);
94void print_help (void); 92static void print_help (void);
95char *multiply (char *str); 93static char *multiply (char *str);
96 94
97#include "regex.h" 95#include "regex.h"
98char regex_expect[MAX_INPUT_BUFFER] = ""; 96static char regex_expect[MAX_INPUT_BUFFER] = "";
99regex_t preg; 97static regex_t preg;
100regmatch_t pmatch[10]; 98static regmatch_t pmatch[10];
101char errbuf[MAX_INPUT_BUFFER] = ""; 99static char errbuf[MAX_INPUT_BUFFER] = "";
102char perfstr[MAX_INPUT_BUFFER] = "| "; 100static char perfstr[MAX_INPUT_BUFFER] = "| ";
103int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE; 101static int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE;
104int eflags = 0; 102static int eflags = 0;
105int errcode, excode; 103static int errcode, excode;
106 104
107char *server_address = NULL; 105static char *server_address = NULL;
108char *community = NULL; 106static char *community = NULL;
109char **contextargs = NULL; 107static char **contextargs = NULL;
110char *context = NULL; 108static char *context = NULL;
111char **authpriv = NULL; 109static char **authpriv = NULL;
112char *proto = NULL; 110static char *proto = NULL;
113char *seclevel = NULL; 111static char *seclevel = NULL;
114char *secname = NULL; 112static char *secname = NULL;
115char *authproto = NULL; 113static char *authproto = NULL;
116char *privproto = NULL; 114static char *privproto = NULL;
117char *authpasswd = NULL; 115static char *authpasswd = NULL;
118char *privpasswd = NULL; 116static char *privpasswd = NULL;
119int nulloid = STATE_UNKNOWN; 117static int nulloid = STATE_UNKNOWN;
120char **oids = NULL; 118static char **oids = NULL;
121size_t oids_size = 0; 119static size_t oids_size = 0;
122char *label; 120static char *label;
123char *units; 121static char *units;
124char *port; 122static char *port;
125char *snmpcmd; 123static char *snmpcmd;
126char string_value[MAX_INPUT_BUFFER] = ""; 124static char string_value[MAX_INPUT_BUFFER] = "";
127int invert_search=0; 125static int invert_search=0;
128char **labels = NULL; 126static char **labels = NULL;
129char **unitv = NULL; 127static char **unitv = NULL;
130size_t nlabels = 0; 128static size_t nlabels = 0;
131size_t labels_size = OID_COUNT_STEP; 129static size_t labels_size = OID_COUNT_STEP;
132size_t nunits = 0; 130static size_t nunits = 0;
133size_t unitv_size = OID_COUNT_STEP; 131static size_t unitv_size = OID_COUNT_STEP;
134size_t numoids = 0; 132static size_t numoids = 0;
135int numauthpriv = 0; 133static int numauthpriv = 0;
136int numcontext = 0; 134static int numcontext = 0;
137int verbose = 0; 135static int verbose = 0;
138bool usesnmpgetnext = false; 136static bool usesnmpgetnext = false;
139char *warning_thresholds = NULL; 137static char *warning_thresholds = NULL;
140char *critical_thresholds = NULL; 138static char *critical_thresholds = NULL;
141thresholds **thlds; 139static thresholds **thlds;
142size_t thlds_size = OID_COUNT_STEP; 140static size_t thlds_size = OID_COUNT_STEP;
143double *response_value; 141static double *response_value;
144size_t response_size = OID_COUNT_STEP; 142static size_t response_size = OID_COUNT_STEP;
145int retries = 0; 143static int retries = 0;
146int *eval_method; 144static int *eval_method;
147size_t eval_size = OID_COUNT_STEP; 145static size_t eval_size = OID_COUNT_STEP;
148char *delimiter; 146static char *delimiter;
149char *output_delim; 147static char *output_delim;
150char *miblist = NULL; 148static char *miblist = NULL;
151bool needmibs = false; 149static bool needmibs = false;
152int calculate_rate = 0; 150static int calculate_rate = 0;
153double offset = 0.0; 151static double offset = 0.0;
154int rate_multiplier = 1; 152static int rate_multiplier = 1;
155state_data *previous_state; 153static state_data *previous_state;
156double *previous_value; 154static double *previous_value;
157size_t previous_size = OID_COUNT_STEP; 155static size_t previous_size = OID_COUNT_STEP;
158int perf_labels = 1; 156static int perf_labels = 1;
159char* ip_version = ""; 157static char* ip_version = "";
160double multiplier = 1.0; 158static double multiplier = 1.0;
161char *fmtstr = ""; 159static char *fmtstr = "";
162bool fmtstr_set = false; 160static bool fmtstr_set = false;
163char buffer[DEFAULT_BUFFER_SIZE]; 161static char buffer[DEFAULT_BUFFER_SIZE];
164bool ignore_mib_parsing_errors = false; 162static bool ignore_mib_parsing_errors = false;
165 163
166static char *fix_snmp_range(char *th) 164static char *fix_snmp_range(char *th)
167{ 165{
@@ -1030,7 +1028,7 @@ selected.</para>
1030 1028
1031 1029
1032 1030
1033int 1031static int
1034validate_arguments () 1032validate_arguments ()
1035{ 1033{
1036 /* check whether to load locally installed MIBS (CPU/disk intensive) */ 1034 /* check whether to load locally installed MIBS (CPU/disk intensive) */
@@ -1139,7 +1137,7 @@ validate_arguments ()
1139/* trim leading whitespace 1137/* trim leading whitespace
1140 if there is a leading quote, make sure it balances */ 1138 if there is a leading quote, make sure it balances */
1141 1139
1142char * 1140static char *
1143thisarg (char *str) 1141thisarg (char *str)
1144{ 1142{
1145 str += strspn (str, " \t\r\n"); /* trim any leading whitespace */ 1143 str += strspn (str, " \t\r\n"); /* trim any leading whitespace */
@@ -1156,7 +1154,7 @@ thisarg (char *str)
1156 set the trailing quote to '\x0' 1154 set the trailing quote to '\x0'
1157 if the string continues, advance beyond the comma */ 1155 if the string continues, advance beyond the comma */
1158 1156
1159char * 1157static char *
1160nextarg (char *str) 1158nextarg (char *str)
1161{ 1159{
1162 if (str[0] == '\'') { 1160 if (str[0] == '\'') {
@@ -1188,7 +1186,7 @@ nextarg (char *str)
1188 1186
1189 1187
1190/* multiply result (values 0 < n < 1 work as divider) */ 1188/* multiply result (values 0 < n < 1 work as divider) */
1191char * 1189static char *
1192multiply (char *str) 1190multiply (char *str)
1193{ 1191{
1194 char *endptr; 1192 char *endptr;
@@ -1225,7 +1223,7 @@ multiply (char *str)
1225} 1223}
1226 1224
1227 1225
1228void 1226static void
1229print_help (void) 1227print_help (void)
1230{ 1228{
1231 print_revision (progname, NP_VERSION); 1229 print_revision (progname, NP_VERSION);