diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/check_http.c | 20 | ||||
-rw-r--r-- | plugins/check_ldap.c | 30 | ||||
-rw-r--r-- | plugins/check_smtp.c | 20 |
3 files changed, 60 insertions, 10 deletions
diff --git a/plugins/check_http.c b/plugins/check_http.c index 468e4c22..038ac68a 100644 --- a/plugins/check_http.c +++ b/plugins/check_http.c @@ -45,13 +45,17 @@ certificate expiration times.\n" [-w <warn time>] [-c <critical time>] [-t <timeout>] [-L]\n\ [-a auth] [-f <ok | warn | critcal | follow>] [-e <expect>]\n\ [-s string] [-l] [-r <regex> | -R <case-insensitive regex>]\n\ - [-P string] [-m min_pg_size]" + [-P string] [-m min_pg_size] [-4|-6]" #define LONGOPTIONS "\ -H, --hostname=ADDRESS\n\ Host name argument for servers using host headers (virtual host)\n\ -I, --IP-address=ADDRESS\n\ IP address or name (use numeric address if possible to bypass DNS lookup).\n\ + -4, --use-ipv4\n\ + Use IPv4 protocol\n\ + -6, --use-ipv6\n\ + Use IPv6 protocol\n\ -e, --expect=STRING\n\ String to expect in first (status) line of server response (default: %s)\n\ If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)\n\ @@ -316,6 +320,8 @@ process_arguments (int argc, char **argv) {"onredirect", required_argument, 0, 'f'}, {"certificate", required_argument, 0, 'C'}, {"min", required_argument, 0, 'm'}, + {"use-ipv4", no_argument, 0, '4'}, + {"use-ipv6", no_argument, 0, '6'}, {0, 0, 0, 0} }; @@ -336,7 +342,7 @@ process_arguments (int argc, char **argv) } while (1) { - c = getopt_long (argc, argv, "Vvht:c:w:H:P:I:a:e:p:s:R:r:u:f:C:nlLSm:", long_options, &option_index); + c = getopt_long (argc, argv, "Vvh46t:c:w:H:P:I:a:e:p:s:R:r:u:f:C:nlLSm:", long_options, &option_index); if (c == -1 || c == EOF) break; @@ -464,6 +470,16 @@ process_arguments (int argc, char **argv) } break; #endif + case '4': + address_family = AF_INET; + break; + case '6': +#ifdef USE_IPV6 + address_family = AF_INET6; +#else + usage ("IPv6 support not available\n"); +#endif + break; case 'v': /* verbose */ verbose = TRUE; break; diff --git a/plugins/check_ldap.c b/plugins/check_ldap.c index 8eb89569..af919f27 100644 --- a/plugins/check_ldap.c +++ b/plugins/check_ldap.c @@ -159,6 +159,8 @@ process_arguments (int argc, char **argv) {"ver2", no_argument, 0, '2'}, {"ver3", no_argument, 0, '3'}, #endif + {"use-ipv4", no_argument, 0, '4'}, + {"use-ipv6", no_argument, 0, '6'}, {"port", required_argument, 0, 'p'}, {"warn", required_argument, 0, 'w'}, {"crit", required_argument, 0, 'c'}, @@ -174,7 +176,7 @@ process_arguments (int argc, char **argv) } while (1) { - c = getopt_long (argc, argv, "hV23t:c:w:H:b:p:a:D:P:", longopts, &option_index); + c = getopt_long (argc, argv, "hV2346t:c:w:H:b:p:a:D:P:", longopts, &option_index); if (c == -1 || c == EOF) break; @@ -223,14 +225,28 @@ process_arguments (int argc, char **argv) ld_protocol = 3; break; #endif + case '4': + address_family = AF_INET; + break; + case '6': +#ifdef USE_IPV6 + address_family = AF_INET6; +#else + usage ("IPv6 support not available\n"); +#endif + break; default: usage ("check_ldap: could not parse unknown arguments\n"); break; } } - if (ld_host[0] == 0) { - asprintf (&ld_host, "%s", argv[c]); + c = optind; + if (strlen(ld_host) == 0 && is_host(argv[c])) { + asprintf (&ld_host, "%s", argv[c++]); + } + if (strlen(ld_base) == 0 && argv[c]) { + asprintf (&ld_base, "%s", argv[c++]); } return validate_arguments (); @@ -271,8 +287,10 @@ print_help () "\t-P [--pass] ... ldap password (if required)\n" "\t-p [--port] ... ldap port (default: %d)\n" #ifdef HAVE_LDAP_SET_OPTION - "\t-2 [--ver2] ... use ldap porotocol version 2\n" - "\t-3 [--ver3] ... use ldap porotocol version 3\n" + "\t-2 [--ver2] ... use ldap protocol version 2\n" + "\t-3 [--ver3] ... use ldap protocol version 3\n" + "\t-4 [--use-ipv4] ... use IPv4 protocol\n" + "\t-6 [--use-ipv6] ... use IPv6 protocol\n" "\t\t(default protocol version: %d)\n" #endif "\t-w [--warn] ... time in secs. - if the exceeds <warn> the STATE_WARNING will be returned\n" @@ -292,7 +310,7 @@ print_usage () ("Usage: %s -H <host> -b <base_dn> [-p <port>] [-a <attr>] [-D <binddn>]\n" " [-P <password>] [-w <warn_time>] [-c <crit_time>] [-t timeout]\n" #ifdef HAVE_LDAP_SET_OPTION - " [-2|-3]\n" + " [-2|-3] [-4|-6]\n" #endif "(Note: all times are in seconds.)\n", progname); } diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c index dd9f19bc..7562c4c6 100644 --- a/plugins/check_smtp.c +++ b/plugins/check_smtp.c @@ -33,11 +33,15 @@ STATE_WARNING return values.\n"; const char *option_summary = "\ -H host [-p port] [-e expect] [-C command] [-f from addr]\n\ - [-w warn] [-c crit] [-t timeout] [-n] [-v]"; + [-w warn] [-c crit] [-t timeout] [-n] [-v] [-4|-6]"; const char *options = "\ -H, --hostname=STRING or IPADDRESS\n\ Check server on the indicated host\n\ + -4, --use-ipv4\n\ + Use IPv4 protocol\n\ + -6, --use-ipv6\n\ + Use IPv6 protocol\n\ -p, --port=INTEGER\n\ Make connection on the indicated port (default: %d)\n\ -e, --expect=STRING\n\ @@ -233,6 +237,8 @@ process_arguments (int argc, char **argv) {"nocommand", required_argument, 0, 'n'}, {"verbose", no_argument, 0, 'v'}, {"version", no_argument, 0, 'V'}, + {"use-ipv4", no_argument, 0, '4'}, + {"use-ipv6", no_argument, 0, '6'}, {"help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; @@ -250,7 +256,7 @@ process_arguments (int argc, char **argv) } while (1) { - c = getopt_long (argc, argv, "+hVvt:p:f:e:c:w:H:C:", + c = getopt_long (argc, argv, "+hVv46t:p:f:e:c:w:H:C:", long_options, &option_index); if (c == -1 || c == EOF) @@ -315,6 +321,16 @@ process_arguments (int argc, char **argv) usage ("Time interval must be a nonnegative integer\n"); } break; + case '4': + address_family = AF_INET; + break; + case '6': +#ifdef USE_IPV6 + address_family = AF_INET6; +#else + usage ("IPv6 support not available\n"); +#endif + break; case 'V': /* version */ print_revision (progname, revision); exit (STATE_OK); |