summaryrefslogtreecommitdiffstats
path: root/plugins/check_mrtgtraf.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/check_mrtgtraf.c')
-rw-r--r--plugins/check_mrtgtraf.c135
1 files changed, 55 insertions, 80 deletions
diff --git a/plugins/check_mrtgtraf.c b/plugins/check_mrtgtraf.c
index 11f5146b..d33ebd9c 100644
--- a/plugins/check_mrtgtraf.c
+++ b/plugins/check_mrtgtraf.c
@@ -55,7 +55,6 @@
55#define PROGNAME "check_mrtgtraf" 55#define PROGNAME "check_mrtgtraf"
56 56
57int process_arguments (int, char **); 57int process_arguments (int, char **);
58int call_getopt (int, char **);
59int validate_arguments (void); 58int validate_arguments (void);
60void print_help (void); 59void print_help (void);
61void print_usage (void); 60void print_usage (void);
@@ -77,7 +76,7 @@ main (int argc, char **argv)
77 char input_buffer[MAX_INPUT_BUFFER]; 76 char input_buffer[MAX_INPUT_BUFFER];
78 char *temp_buffer; 77 char *temp_buffer;
79 time_t current_time; 78 time_t current_time;
80 char error_message[MAX_INPUT_BUFFER]; 79 char *error_message;
81 time_t timestamp = 0L; 80 time_t timestamp = 0L;
82 unsigned long average_incoming_rate = 0L; 81 unsigned long average_incoming_rate = 0L;
83 unsigned long average_outgoing_rate = 0L; 82 unsigned long average_outgoing_rate = 0L;
@@ -198,7 +197,7 @@ main (int argc, char **argv)
198 if (incoming_rate > incoming_critical_threshold 197 if (incoming_rate > incoming_critical_threshold
199 || outgoing_rate > outgoing_critical_threshold) { 198 || outgoing_rate > outgoing_critical_threshold) {
200 result = STATE_CRITICAL; 199 result = STATE_CRITICAL;
201 sprintf (error_message, "%s. In = %0.1f %s, %s. Out = %0.1f %s", 200 asprintf (&error_message, "%s. In = %0.1f %s, %s. Out = %0.1f %s",
202 (use_average == TRUE) ? "Ave" : "Max", adjusted_incoming_rate, 201 (use_average == TRUE) ? "Ave" : "Max", adjusted_incoming_rate,
203 incoming_speed_rating, (use_average == TRUE) ? "Ave" : "Max", 202 incoming_speed_rating, (use_average == TRUE) ? "Ave" : "Max",
204 adjusted_outgoing_rate, outgoing_speed_rating); 203 adjusted_outgoing_rate, outgoing_speed_rating);
@@ -206,7 +205,7 @@ main (int argc, char **argv)
206 else if (incoming_rate > incoming_warning_threshold 205 else if (incoming_rate > incoming_warning_threshold
207 || outgoing_rate > outgoing_warning_threshold) { 206 || outgoing_rate > outgoing_warning_threshold) {
208 result = STATE_WARNING; 207 result = STATE_WARNING;
209 sprintf (error_message, "%s. In = %0.1f %s, %s. Out = %0.1f %s", 208 asprintf (&error_message, "%s. In = %0.1f %s, %s. Out = %0.1f %s",
210 (use_average == TRUE) ? "Ave" : "Max", adjusted_incoming_rate, 209 (use_average == TRUE) ? "Ave" : "Max", adjusted_incoming_rate,
211 incoming_speed_rating, (use_average == TRUE) ? "Ave" : "Max", 210 incoming_speed_rating, (use_average == TRUE) ? "Ave" : "Max",
212 adjusted_outgoing_rate, outgoing_speed_rating); 211 adjusted_outgoing_rate, outgoing_speed_rating);
@@ -233,68 +232,9 @@ process_arguments (int argc, char **argv)
233{ 232{
234 int c; 233 int c;
235 234
236 if (argc < 2)
237 return ERROR;
238
239 for (c = 1; c < argc; c++) {
240 if (strcmp ("-to", argv[c]) == 0)
241 strcpy (argv[c], "-t");
242 else if (strcmp ("-wt", argv[c]) == 0)
243 strcpy (argv[c], "-w");
244 else if (strcmp ("-ct", argv[c]) == 0)
245 strcpy (argv[c], "-c");
246 }
247
248
249
250 c = 0;
251 while ((c += (call_getopt (argc - c, &argv[c]))) < argc) {
252
253 if (is_option (argv[c]))
254 continue;
255
256 if (log_file == NULL) {
257 log_file = argv[c];
258 }
259 else if (expire_minutes == -1) {
260 expire_minutes = atoi (optarg);
261 }
262 else if (strcmp (argv[c], "MAX") == 0) {
263 use_average = FALSE;
264 }
265 else if (strcmp (argv[c], "AVG") == 0) {
266 use_average = TRUE;
267 }
268 else if (incoming_warning_threshold == 0) {
269 incoming_warning_threshold = strtoul (argv[c], NULL, 10);
270 }
271 else if (incoming_critical_threshold == 0) {
272 incoming_critical_threshold = strtoul (argv[c], NULL, 10);
273 }
274 else if (outgoing_warning_threshold == 0) {
275 outgoing_warning_threshold = strtoul (argv[c], NULL, 10);
276 }
277 else if (outgoing_critical_threshold == 0) {
278 outgoing_critical_threshold = strtoul (argv[c], NULL, 10);
279 }
280 }
281
282 return validate_arguments ();
283}
284
285
286
287
288
289
290int
291call_getopt (int argc, char **argv)
292{
293 int c, i = 0;
294
295#ifdef HAVE_GETOPT_H 235#ifdef HAVE_GETOPT_H
296 int option_index = 0; 236 int option_index = 0;
297 static struct option long_options[] = { 237 static struct option longopts[] = {
298 {"logfile", required_argument, 0, 'F'}, 238 {"logfile", required_argument, 0, 'F'},
299 {"expires", required_argument, 0, 'e'}, 239 {"expires", required_argument, 0, 'e'},
300 {"aggregation", required_argument, 0, 'a'}, 240 {"aggregation", required_argument, 0, 'a'},
@@ -308,29 +248,29 @@ call_getopt (int argc, char **argv)
308 }; 248 };
309#endif 249#endif
310 250
251 if (argc < 2)
252 return ERROR;
253
254 for (c = 1; c < argc; c++) {
255 if (strcmp ("-to", argv[c]) == 0)
256 strcpy (argv[c], "-t");
257 else if (strcmp ("-wt", argv[c]) == 0)
258 strcpy (argv[c], "-w");
259 else if (strcmp ("-ct", argv[c]) == 0)
260 strcpy (argv[c], "-c");
261 }
262
311 while (1) { 263 while (1) {
312#ifdef HAVE_GETOPT_H 264#ifdef HAVE_GETOPT_H
313 c = 265 c = getopt_long (argc, argv, "hVF:e:a:c:w:", longopts, &option_index);
314 getopt_long (argc, argv, "+hVF:e:a:c:w:", long_options, &option_index);
315#else 266#else
316 c = getopt (argc, argv, "+hVF:e:a:c:w:"); 267 c = getopt (argc, argv, "hVF:e:a:c:w:");
317#endif 268#endif
318 269
319 i++; 270 if (c == -1 || c == EOF)
320
321 if (c == -1 || c == EOF || c == 1)
322 break; 271 break;
323 272
324 switch (c) { 273 switch (c) {
325 case 'F':
326 case 'e':
327 case 'a':
328 case 'c':
329 case 'w':
330 i++;
331 }
332
333 switch (c) {
334 case 'F': /* input file */ 274 case 'F': /* input file */
335 log_file = optarg; 275 log_file = optarg;
336 break; 276 break;
@@ -361,7 +301,42 @@ call_getopt (int argc, char **argv)
361 usage ("Invalid argument\n"); 301 usage ("Invalid argument\n");
362 } 302 }
363 } 303 }
364 return i; 304
305 c = optind;
306 if (argc > c && log_file == NULL) {
307 log_file = argv[c++];
308 }
309
310 if (argc > c && expire_minutes == -1) {
311 expire_minutes = atoi (argv[c++]);
312 }
313
314 if (argc > c && strcmp (argv[c], "MAX") == 0) {
315 use_average = FALSE;
316 c++;
317 }
318 else if (argc > c && strcmp (argv[c], "AVG") == 0) {
319 use_average = TRUE;
320 c++;
321 }
322
323 if (argc > c && incoming_warning_threshold == 0) {
324 incoming_warning_threshold = strtoul (argv[c++], NULL, 10);
325 }
326
327 if (argc > c && incoming_critical_threshold == 0) {
328 incoming_critical_threshold = strtoul (argv[c++], NULL, 10);
329 }
330
331 if (argc > c && outgoing_warning_threshold == 0) {
332 outgoing_warning_threshold = strtoul (argv[c++], NULL, 10);
333 }
334
335 if (argc > c && outgoing_critical_threshold == 0) {
336 outgoing_critical_threshold = strtoul (argv[c++], NULL, 10);
337 }
338
339 return validate_arguments ();
365} 340}
366 341
367 342