[monitoring-plugins] check_icmp: process protocol version args first

Jacob Hansen git at monitoring-plugins.org
Tue Feb 19 15:50:16 CET 2019


 Module: monitoring-plugins
 Branch: master
 Commit: e3ade3374a99155c8c70d89a8d8116240d5c8df0
 Author: Jacob Hansen <jhansen at op5.com>
   Date: Mon Dec  3 14:19:27 2018 +0000
    URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=e3ade33

check_icmp: process protocol version args first

Detection of protocol version is in the previous patch implemented in
the add_target() function, which is called when adding the -H command
line argument. That means that if a protocal version argument (-4, -6)
is added after the -H then the protocol version might be incorrectly
set.

This patch ensures that we first process the protocol version arguments,
and then we process the rest of the arguments.

Signed-off-by: Jacob Hansen <jhansen at op5.com>

---

 plugins-root/check_icmp.c | 32 ++++++++++++++++++++++----------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/plugins-root/check_icmp.c b/plugins-root/check_icmp.c
index cab69fd..b978ee1 100644
--- a/plugins-root/check_icmp.c
+++ b/plugins-root/check_icmp.c
@@ -460,6 +460,28 @@ main(int argc, char **argv)
 		packets = 5;
 	}
 
+	/* Parse protocol arguments first */
+	for(i = 1; i < argc; i++) {
+		while((arg = getopt(argc, argv, "vhVw:c:n:p:t:H:s:i:b:I:l:m:64")) != EOF) {
+			unsigned short size;
+			switch(arg) {
+			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;
+			}
+		}
+	}
+
+	/* Reset argument scanning */
+	optind = 1;
+
 	/* parse the arguments */
 	for(i = 1; i < argc; i++) {
 		while((arg = getopt(argc, argv, "vhVw:c:n:p:t:H:s:i:b:I:l:m:64")) != EOF) {
@@ -524,16 +546,6 @@ main(int argc, char **argv)
 				print_help ();
 				exit (STATE_UNKNOWN);
 				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;
 			}
 		}
 	}



More information about the Commits mailing list