summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/check_ssh.c15
-rw-r--r--plugins/check_tcp.c16
-rw-r--r--plugins/netutils.c3
-rw-r--r--plugins/netutils.h1
4 files changed, 30 insertions, 5 deletions
diff --git a/plugins/check_ssh.c b/plugins/check_ssh.c
index f3a351e6..421fc01c 100644
--- a/plugins/check_ssh.c
+++ b/plugins/check_ssh.c
@@ -68,6 +68,8 @@ process_arguments (int argc, char **argv)
68 static struct option long_options[] = { 68 static struct option long_options[] = {
69 {"version", no_argument, 0, 'V'}, 69 {"version", no_argument, 0, 'V'},
70 {"help", no_argument, 0, 'h'}, 70 {"help", no_argument, 0, 'h'},
71 {"use-ipv4", no_argument, 0, '4'},
72 {"use-ipv6", no_argument, 0, '6'},
71 {"verbose", no_argument, 0, 'v'}, 73 {"verbose", no_argument, 0, 'v'},
72 {"timeout", required_argument, 0, 't'}, 74 {"timeout", required_argument, 0, 't'},
73 {"host", required_argument, 0, 'H'}, 75 {"host", required_argument, 0, 'H'},
@@ -82,7 +84,7 @@ process_arguments (int argc, char **argv)
82 strcpy (argv[c], "-t"); 84 strcpy (argv[c], "-t");
83 85
84 while (1) { 86 while (1) {
85 c = getopt_long (argc, argv, "+Vhvt:H:p:", long_options, &option_index); 87 c = getopt_long (argc, argv, "+Vhv46t:H:p:", long_options, &option_index);
86 88
87 if (c == -1 || c == EOF) 89 if (c == -1 || c == EOF)
88 break; 90 break;
@@ -104,6 +106,12 @@ process_arguments (int argc, char **argv)
104 usage ("Timeout Interval must be an integer!\n\n"); 106 usage ("Timeout Interval must be an integer!\n\n");
105 socket_timeout = atoi (optarg); 107 socket_timeout = atoi (optarg);
106 break; 108 break;
109 case '4':
110 address_family = AF_INET;
111 break;
112 case '6':
113 address_family = AF_INET6;
114 break;
107 case 'H': /* host */ 115 case 'H': /* host */
108 if (is_host (optarg) == FALSE) 116 if (is_host (optarg) == FALSE)
109 usage ("Invalid hostname/address\n"); 117 usage ("Invalid hostname/address\n");
@@ -217,7 +225,10 @@ print_usage (void)
217 ("Usage:\n" 225 ("Usage:\n"
218 " %s -t [timeout] -p [port] <host>\n" 226 " %s -t [timeout] -p [port] <host>\n"
219 " %s -V prints version info\n" 227 " %s -V prints version info\n"
220 " %s -h prints more detailed help\n", progname, progname, progname); 228 " %s -4 use IPv4 connection\n"
229 " %s -6 use IPv6 connection\n"
230 " %s -h prints more detailed help\n",
231 progname, progname, progname, progname, progname);
221} 232}
222 233
223/* end of check_ssh.c */ 234/* end of check_ssh.c */
diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c
index f4fe5f40..0f19c01e 100644
--- a/plugins/check_tcp.c
+++ b/plugins/check_tcp.c
@@ -29,7 +29,7 @@ This plugin tests %s connections with the specified host.\n";
29const char *option_summary = "\ 29const char *option_summary = "\
30-H host -p port [-w warn_time] [-c crit_time] [-s send_string]\n\ 30-H host -p port [-w warn_time] [-c crit_time] [-s send_string]\n\
31 [-e expect_string] [-q quit_string] [-m maxbytes] [-d delay]\n\ 31 [-e expect_string] [-q quit_string] [-m maxbytes] [-d delay]\n\
32 [-t to_sec] [-r refuse_state] [-v]\n"; 32 [-t to_sec] [-r refuse_state] [-v] [-4] [-6]\n";
33 33
34const char *options = "\ 34const char *options = "\
35 -H, --hostname=ADDRESS\n\ 35 -H, --hostname=ADDRESS\n\
@@ -37,6 +37,10 @@ const char *options = "\
37 address if possible to bypass DNS lookup).\n\ 37 address if possible to bypass DNS lookup).\n\
38 -p, --port=INTEGER\n\ 38 -p, --port=INTEGER\n\
39 Port number\n\ 39 Port number\n\
40 -4, --use-ipv4\n\
41 Use IPv4 connection\n\
42 -6, --use-ipv6\n\
43 Use IPv6 connection\n\
40 -s, --send=STRING\n\ 44 -s, --send=STRING\n\
41 String to send to the server\n\ 45 String to send to the server\n\
42 -e, --expect=STRING\n\ 46 -e, --expect=STRING\n\
@@ -392,6 +396,8 @@ process_arguments (int argc, char **argv)
392 {"quit", required_argument, 0, 'q'}, 396 {"quit", required_argument, 0, 'q'},
393 {"delay", required_argument, 0, 'd'}, 397 {"delay", required_argument, 0, 'd'},
394 {"refuse", required_argument, 0, 'r'}, 398 {"refuse", required_argument, 0, 'r'},
399 {"use-ipv4", no_argument, 0, '4'},
400 {"use-ipv6", no_argument, 0, '6'},
395 {"verbose", no_argument, 0, 'v'}, 401 {"verbose", no_argument, 0, 'v'},
396 {"version", no_argument, 0, 'V'}, 402 {"version", no_argument, 0, 'V'},
397 {"help", no_argument, 0, 'h'}, 403 {"help", no_argument, 0, 'h'},
@@ -419,7 +425,7 @@ process_arguments (int argc, char **argv)
419 } 425 }
420 426
421 while (1) { 427 while (1) {
422 c = getopt_long (argc, argv, "+hVvH:s:e:q:m:c:w:t:p:C:W:d:Sr:", 428 c = getopt_long (argc, argv, "+hVv46H:s:e:q:m:c:w:t:p:C:W:d:Sr:",
423 long_options, &option_index); 429 long_options, &option_index);
424 430
425 if (c == -1 || c == EOF || c == 1) 431 if (c == -1 || c == EOF || c == 1)
@@ -439,6 +445,12 @@ process_arguments (int argc, char **argv)
439 case 'v': /* verbose mode */ 445 case 'v': /* verbose mode */
440 verbose = TRUE; 446 verbose = TRUE;
441 break; 447 break;
448 case '4':
449 address_family = AF_INET;
450 break;
451 case '6':
452 address_family = AF_INET6;
453 break;
442 case 'H': /* hostname */ 454 case 'H': /* hostname */
443 if (is_host (optarg) == FALSE) 455 if (is_host (optarg) == FALSE)
444 usage2 ("invalid host name or address", optarg); 456 usage2 ("invalid host name or address", optarg);
diff --git a/plugins/netutils.c b/plugins/netutils.c
index c567df53..dc679e2a 100644
--- a/plugins/netutils.c
+++ b/plugins/netutils.c
@@ -35,6 +35,7 @@
35int socket_timeout = DEFAULT_SOCKET_TIMEOUT; 35int socket_timeout = DEFAULT_SOCKET_TIMEOUT;
36int econn_refuse_state = STATE_CRITICAL; 36int econn_refuse_state = STATE_CRITICAL;
37int was_refused = FALSE; 37int was_refused = FALSE;
38int address_family = AF_UNSPEC;
38 39
39/* handles socket timeouts */ 40/* handles socket timeouts */
40void 41void
@@ -254,7 +255,7 @@ my_connect (char *host_name, int port, int *sd, int proto)
254 int result; 255 int result;
255 256
256 memset (&hints, 0, sizeof (hints)); 257 memset (&hints, 0, sizeof (hints));
257 hints.ai_family = PF_UNSPEC; 258 hints.ai_family = address_family;
258 hints.ai_protocol = proto; 259 hints.ai_protocol = proto;
259 hints.ai_socktype = (proto == IPPROTO_UDP) ? SOCK_DGRAM : SOCK_STREAM; 260 hints.ai_socktype = (proto == IPPROTO_UDP) ? SOCK_DGRAM : SOCK_STREAM;
260 261
diff --git a/plugins/netutils.h b/plugins/netutils.h
index 2ad0dba2..8f534976 100644
--- a/plugins/netutils.h
+++ b/plugins/netutils.h
@@ -61,3 +61,4 @@ int is_hostname (char *);
61extern int socket_timeout; 61extern int socket_timeout;
62extern int econn_refuse_state; 62extern int econn_refuse_state;
63extern int was_refused; 63extern int was_refused;
64extern int address_family;