diff options
Diffstat (limited to 'web/attachments/38638-patch-nagiosplug-tcp_refusal')
| -rw-r--r-- | web/attachments/38638-patch-nagiosplug-tcp_refusal | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/web/attachments/38638-patch-nagiosplug-tcp_refusal b/web/attachments/38638-patch-nagiosplug-tcp_refusal new file mode 100644 index 0000000..a7629f2 --- /dev/null +++ b/web/attachments/38638-patch-nagiosplug-tcp_refusal | |||
| @@ -0,0 +1,142 @@ | |||
| 1 | Index: nagiosplug/plugins/check_tcp.c | ||
| 2 | =================================================================== | ||
| 3 | RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/check_tcp.c,v | ||
| 4 | retrieving revision 1.10 | ||
| 5 | diff -u -r1.10 check_tcp.c | ||
| 6 | --- nagiosplug/plugins/check_tcp.c 19 Dec 2002 19:30:52 -0000 1.10 | ||
| 7 | +++ nagiosplug/plugins/check_tcp.c 30 Dec 2002 23:07:44 -0000 | ||
| 8 | @@ -307,9 +307,11 @@ | ||
| 9 | alarm (0); | ||
| 10 | |||
| 11 | printf | ||
| 12 | - ("%s %s - %7.3f second response time on port %d", | ||
| 13 | + ("%s %s%s - %7.3f second response time on port %d", | ||
| 14 | SERVICE, | ||
| 15 | - state_text (result), elapsed_time, server_port); | ||
| 16 | + state_text (result), | ||
| 17 | + (was_refused)?" (refused)":"", | ||
| 18 | + elapsed_time, server_port); | ||
| 19 | |||
| 20 | if (status && strlen(status) > 0) | ||
| 21 | printf (" [%s]", status); | ||
| 22 | @@ -346,6 +348,7 @@ | ||
| 23 | {"expect", required_argument, 0, 'e'}, | ||
| 24 | {"quit", required_argument, 0, 'q'}, | ||
| 25 | {"delay", required_argument, 0, 'd'}, | ||
| 26 | + {"refuse", required_argument, 0, 'r'}, | ||
| 27 | {"verbose", no_argument, 0, 'v'}, | ||
| 28 | {"version", no_argument, 0, 'V'}, | ||
| 29 | {"help", no_argument, 0, 'h'}, | ||
| 30 | @@ -376,10 +379,10 @@ | ||
| 31 | while (1) { | ||
| 32 | #ifdef HAVE_GETOPT_H | ||
| 33 | c = | ||
| 34 | - getopt_long (argc, argv, "+hVvH:s:e:q:c:w:t:p:C:W:d:S", long_options, | ||
| 35 | + getopt_long (argc, argv, "+hVvH:s:e:q:c:w:t:p:C:W:d:Sr:", long_options, | ||
| 36 | &option_index); | ||
| 37 | #else | ||
| 38 | - c = getopt (argc, argv, "+hVvH:s:e:q:c:w:t:p:C:W:d:S"); | ||
| 39 | + c = getopt (argc, argv, "+hVvH:s:e:q:c:w:t:p:C:W:d:Sr:"); | ||
| 40 | #endif | ||
| 41 | |||
| 42 | if (c == -1 || c == EOF || c == 1) | ||
| 43 | @@ -448,6 +451,16 @@ | ||
| 44 | case 'q': | ||
| 45 | server_quit = optarg; | ||
| 46 | break; | ||
| 47 | + case 'r': | ||
| 48 | + if (!strncmp(optarg,"ok",2)) | ||
| 49 | + econn_refuse_state = STATE_OK; | ||
| 50 | + else if (!strncmp(optarg,"warn",4)) | ||
| 51 | + econn_refuse_state = STATE_WARNING; | ||
| 52 | + else if (!strncmp(optarg,"crit",4)) | ||
| 53 | + econn_refuse_state = STATE_CRITICAL; | ||
| 54 | + else | ||
| 55 | + usage ("Refuse mut be one of ok, warn, crit\n"); | ||
| 56 | + break; | ||
| 57 | case 'd': | ||
| 58 | if (is_intpos (optarg)) | ||
| 59 | delay = atoi (optarg); | ||
| 60 | @@ -479,7 +492,8 @@ | ||
| 61 | { | ||
| 62 | printf | ||
| 63 | ("Usage: %s -H host -p port [-w warn_time] [-c crit_time] [-s send]\n" | ||
| 64 | - " [-e expect] [-W wait] [-t to_sec] [-v]\n", PROGNAME); | ||
| 65 | + " [-e expect] [-W wait] [-t to_sec] [-R refuse_state] [-v]\n", | ||
| 66 | + PROGNAME); | ||
| 67 | } | ||
| 68 | |||
| 69 | |||
| 70 | @@ -514,6 +528,8 @@ | ||
| 71 | " Response time to result in critical status (seconds)\n" | ||
| 72 | " -t, --timeout=INTEGER\n" | ||
| 73 | " Seconds before connection times out (default: %d)\n" | ||
| 74 | + " -r, --refuse=ok|warn|crit\n" | ||
| 75 | + " Accept tcp refusals with states ok,warn, crit (default: crit)\n" | ||
| 76 | " -v" | ||
| 77 | " Show details for command-line debugging (do not use with nagios server)\n" | ||
| 78 | " -h, --help\n" | ||
| 79 | @@ -549,7 +565,7 @@ | ||
| 80 | time (&start_time); | ||
| 81 | |||
| 82 | /* Make TCP connection */ | ||
| 83 | - if (my_tcp_connect (server_address, server_port, &sd) == STATE_OK) | ||
| 84 | + if (my_tcp_connect (server_address, server_port, &sd) == STATE_OK && was_refused == FALSE) | ||
| 85 | { | ||
| 86 | /* Do the SSL handshake */ | ||
| 87 | if ((ssl = SSL_new (ctx)) != NULL) | ||
| 88 | Index: nagiosplug/plugins/netutils.c | ||
| 89 | =================================================================== | ||
| 90 | RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/netutils.c,v | ||
| 91 | retrieving revision 1.1.1.1 | ||
| 92 | diff -u -r1.1.1.1 netutils.c | ||
| 93 | --- nagiosplug/plugins/netutils.c 28 Feb 2002 06:42:59 -0000 1.1.1.1 | ||
| 94 | +++ nagiosplug/plugins/netutils.c 30 Dec 2002 23:07:44 -0000 | ||
| 95 | @@ -39,6 +39,9 @@ | ||
| 96 | extern int socket_timeout; | ||
| 97 | RETSIGTYPE socket_timeout_alarm_handler (int); | ||
| 98 | |||
| 99 | +extern int econn_refuse_state; | ||
| 100 | +extern int was_refused; | ||
| 101 | + | ||
| 102 | int process_tcp_request2 (char *, int, char *, char *, int); | ||
| 103 | int process_tcp_request (char *, int, char *, char *, int); | ||
| 104 | int process_udp_request (char *, int, char *, char *, int); | ||
| 105 | @@ -307,7 +310,14 @@ | ||
| 106 | if (result < 0) { | ||
| 107 | switch (errno) { | ||
| 108 | case ECONNREFUSED: | ||
| 109 | - printf ("Connection refused by host\n"); | ||
| 110 | + switch (econn_refuse_state) { | ||
| 111 | + case STATE_OK: | ||
| 112 | + case STATE_WARNING: | ||
| 113 | + was_refused = TRUE; | ||
| 114 | + return econn_refuse_state; | ||
| 115 | + default: | ||
| 116 | + printf ("Connection refused by host\n"); | ||
| 117 | + } | ||
| 118 | break; | ||
| 119 | case ETIMEDOUT: | ||
| 120 | printf ("Timeout while attempting connection\n"); | ||
| 121 | @@ -316,7 +326,7 @@ | ||
| 122 | printf ("Network is unreachable\n"); | ||
| 123 | break; | ||
| 124 | default: | ||
| 125 | - printf ("Connection refused or timed out\n"); | ||
| 126 | + printf ("Connection refused or timed out: %s\n",strerror (errno)); | ||
| 127 | } | ||
| 128 | |||
| 129 | return STATE_CRITICAL; | ||
| 130 | Index: nagiosplug/plugins/netutils.h.in | ||
| 131 | =================================================================== | ||
| 132 | RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/netutils.h.in,v | ||
| 133 | retrieving revision 1.1.1.1 | ||
| 134 | diff -u -r1.1.1.1 netutils.h.in | ||
| 135 | --- nagiosplug/plugins/netutils.h.in 28 Feb 2002 06:42:59 -0000 1.1.1.1 | ||
| 136 | +++ nagiosplug/plugins/netutils.h.in 30 Dec 2002 23:07:44 -0000 | ||
| 137 | @@ -61,3 +61,5 @@ | ||
| 138 | #include "common.h" | ||
| 139 | #endif | ||
| 140 | int socket_timeout = DEFAULT_SOCKET_TIMEOUT; | ||
| 141 | +int econn_refuse_state = STATE_CRITICAL; | ||
| 142 | +int was_refused = FALSE; | ||
