diff options
Diffstat (limited to 'plugins-root')
| -rw-r--r-- | plugins-root/check_icmp.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/plugins-root/check_icmp.c b/plugins-root/check_icmp.c index f3e5f0d3..5fb9c364 100644 --- a/plugins-root/check_icmp.c +++ b/plugins-root/check_icmp.c | |||
| @@ -203,7 +203,9 @@ extern char **environ; | |||
| 203 | static struct rta_host **table, *cursor, *list; | 203 | static struct rta_host **table, *cursor, *list; |
| 204 | static threshold crit = {80, 500000}, warn = {40, 200000}; | 204 | static threshold crit = {80, 500000}, warn = {40, 200000}; |
| 205 | static int mode, protocols, sockets, debug = 0, timeout = 10; | 205 | static int mode, protocols, sockets, debug = 0, timeout = 10; |
| 206 | static unsigned short icmp_pkt_size, icmp_data_size = DEFAULT_PING_DATA_SIZE; | 206 | static unsigned short icmp_data_size = DEFAULT_PING_DATA_SIZE; |
| 207 | static unsigned short icmp_pkt_size = DEFAULT_PING_DATA_SIZE + ICMP_MINLEN; | ||
| 208 | |||
| 207 | static unsigned int icmp_sent = 0, icmp_recv = 0, icmp_lost = 0; | 209 | static unsigned int icmp_sent = 0, icmp_recv = 0, icmp_lost = 0; |
| 208 | #define icmp_pkts_en_route (icmp_sent - (icmp_recv + icmp_lost)) | 210 | #define icmp_pkts_en_route (icmp_sent - (icmp_recv + icmp_lost)) |
| 209 | static unsigned short targets_down = 0, targets = 0, packets = 0; | 211 | static unsigned short targets_down = 0, targets = 0, packets = 0; |
| @@ -453,12 +455,22 @@ main(int argc, char **argv) | |||
| 453 | /* parse the arguments */ | 455 | /* parse the arguments */ |
| 454 | for(i = 1; i < argc; i++) { | 456 | for(i = 1; i < argc; i++) { |
| 455 | while((arg = getopt(argc, argv, "vhVw:c:n:p:t:H:s:i:b:I:l:m:")) != EOF) { | 457 | while((arg = getopt(argc, argv, "vhVw:c:n:p:t:H:s:i:b:I:l:m:")) != EOF) { |
| 458 | long size; | ||
| 456 | switch(arg) { | 459 | switch(arg) { |
| 457 | case 'v': | 460 | case 'v': |
| 458 | debug++; | 461 | debug++; |
| 459 | break; | 462 | break; |
| 460 | case 'b': | 463 | case 'b': |
| 461 | /* silently ignored for now */ | 464 | size = strtol(optarg,NULL,0); |
| 465 | if (size >= (sizeof(struct icmp) + sizeof(struct icmp_ping_data)) && | ||
| 466 | size <= MAX_PING_DATA + ICMP_MINLEN) { | ||
| 467 | icmp_pkt_size = size; | ||
| 468 | icmp_data_size = icmp_pkt_size - ICMP_MINLEN; | ||
| 469 | } else | ||
| 470 | usage_va("ICMP packet size must be between: %d and %d", | ||
| 471 | sizeof(struct icmp) + sizeof(struct icmp_ping_data), | ||
| 472 | MAX_PING_DATA + ICMP_MINLEN); | ||
| 473 | |||
| 462 | break; | 474 | break; |
| 463 | case 'i': | 475 | case 'i': |
| 464 | pkt_interval = get_timevar(optarg); | 476 | pkt_interval = get_timevar(optarg); |
| @@ -587,13 +599,6 @@ main(int argc, char **argv) | |||
| 587 | } | 599 | } |
| 588 | } | 600 | } |
| 589 | 601 | ||
| 590 | icmp_pkt_size = icmp_data_size + ICMP_MINLEN; | ||
| 591 | if(debug > 2) printf("icmp_pkt_size = %u\n", icmp_pkt_size); | ||
| 592 | if(icmp_pkt_size < sizeof(struct icmp) + sizeof(struct icmp_ping_data)) { | ||
| 593 | icmp_pkt_size = sizeof(struct icmp) + sizeof(struct icmp_ping_data); | ||
| 594 | } | ||
| 595 | if(debug > 2) printf("icmp_pkt_size = %u\n", icmp_pkt_size); | ||
| 596 | |||
| 597 | if(debug) { | 602 | if(debug) { |
| 598 | printf("crit = {%u, %u%%}, warn = {%u, %u%%}\n", | 603 | printf("crit = {%u, %u%%}, warn = {%u, %u%%}\n", |
| 599 | crit.rta, crit.pl, warn.rta, warn.pl); | 604 | crit.rta, crit.pl, warn.rta, warn.pl); |
| @@ -1296,7 +1301,8 @@ print_help(void) | |||
| 1296 | printf (" %s",_("timeout value (seconds, currently ")); | 1301 | printf (" %s",_("timeout value (seconds, currently ")); |
| 1297 | printf ("%u)\n", timeout); | 1302 | printf ("%u)\n", timeout); |
| 1298 | printf (" %s\n", "-b"); | 1303 | printf (" %s\n", "-b"); |
| 1299 | printf (" %s\n", _("icmp packet size (currenly ignored)")); | 1304 | printf (" %s", _("icmp packet size (bytes, currently ")); |
| 1305 | printf ("%u)\n", icmp_pkt_size); | ||
| 1300 | printf (" %s\n", "-v"); | 1306 | printf (" %s\n", "-v"); |
| 1301 | printf (" %s\n", _("verbose")); | 1307 | printf (" %s\n", _("verbose")); |
| 1302 | 1308 | ||
