From 35f2cfd6e82407eb64e80ef3311fbc1e86829112 Mon Sep 17 00:00:00 2001
From: "M. Sean Finney" <seanius@users.sourceforge.net>
Date: Tue, 24 May 2005 20:25:19 +0000
Subject: optimizations and cleanup from andreas

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1173 f882894a-f735-0410-b71e-b25c423dba1c

diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c
index fd2fe66..1bf1f4c 100644
--- a/plugins/check_tcp.c
+++ b/plugins/check_tcp.c
@@ -57,11 +57,7 @@ int connect_SSL (void);
 int check_certificate (X509 **);
 #endif
 
-enum {
-	TCP_PROTOCOL = 1,
-	UDP_PROTOCOL = 2,
-	MAXBUF = 1024
-};
+#define MAXBUF 1024
 
 int process_arguments (int, char **);
 int my_recv (void);
@@ -120,7 +116,7 @@ main (int argc, char **argv)
 		SEND = NULL;
 		EXPECT = NULL;
 		QUIT = NULL;
-		PROTOCOL = UDP_PROTOCOL;
+		PROTOCOL = IPPROTO_UDP;
 		PORT = 0;
 	}
 	else if (strstr (argv[0], "check_tcp")) {
@@ -129,7 +125,7 @@ main (int argc, char **argv)
 		SEND = NULL;
 		EXPECT = NULL;
 		QUIT = NULL;
-		PROTOCOL = TCP_PROTOCOL;
+		PROTOCOL = IPPROTO_TCP;
 		PORT = 0;
 	}
 	else if (strstr (argv[0], "check_ftp")) {
@@ -138,7 +134,7 @@ main (int argc, char **argv)
 		SEND = NULL;
 		EXPECT = strdup ("220");
 		QUIT = strdup ("QUIT\r\n");
-		PROTOCOL = TCP_PROTOCOL;
+		PROTOCOL = IPPROTO_TCP;
 		PORT = 21;
 	}
 	else if (strstr (argv[0], "check_smtp")) {
@@ -147,7 +143,7 @@ main (int argc, char **argv)
 		SEND = NULL;
 		EXPECT = strdup ("220");
 		QUIT = strdup ("QUIT\r\n");
-		PROTOCOL = TCP_PROTOCOL;
+		PROTOCOL = IPPROTO_TCP;
 		PORT = 25;
 	}
 	else if (strstr (argv[0], "check_pop")) {
@@ -156,7 +152,7 @@ main (int argc, char **argv)
 		SEND = NULL;
 		EXPECT = strdup ("+OK");
 		QUIT = strdup ("QUIT\r\n");
-		PROTOCOL = TCP_PROTOCOL;
+		PROTOCOL = IPPROTO_TCP;
 		PORT = 110;
 	}
 	else if (strstr (argv[0], "check_imap")) {
@@ -165,7 +161,7 @@ main (int argc, char **argv)
 		SEND = NULL;
 		EXPECT = strdup ("* OK");
 		QUIT = strdup ("a1 LOGOUT\r\n");
-		PROTOCOL = TCP_PROTOCOL;
+		PROTOCOL = IPPROTO_TCP;
 		PORT = 143;
 	}
 #ifdef HAVE_SSL
@@ -175,7 +171,7 @@ main (int argc, char **argv)
 		SEND=NULL;
 		EXPECT = strdup ("* OK");
 		QUIT = strdup ("a1 LOGOUT\r\n");
-		PROTOCOL=TCP_PROTOCOL;
+		PROTOCOL=IPPROTO_TCP;
 		use_ssl=TRUE;
 		PORT=993;
 	}
@@ -185,7 +181,7 @@ main (int argc, char **argv)
 		SEND=NULL;
 		EXPECT = strdup ("+OK");
 		QUIT = strdup ("QUIT\r\n");
-		PROTOCOL=TCP_PROTOCOL;
+		PROTOCOL=IPPROTO_TCP;
 		use_ssl=TRUE;
 		PORT=995;
 	}
@@ -195,7 +191,7 @@ main (int argc, char **argv)
 		SEND=NULL;
 		EXPECT = strdup ("220");
 		QUIT = strdup ("QUIT\r\n");
-		PROTOCOL=TCP_PROTOCOL;
+		PROTOCOL=IPPROTO_TCP;
 		use_ssl=TRUE;
 		PORT=465;
 	}
@@ -205,7 +201,7 @@ main (int argc, char **argv)
 		SEND = strdup("<stream:stream to=\'host\' xmlns=\'jabber:client\' xmlns:stream=\'http://etherx.jabber.org/streams\'>\n");
 		EXPECT = strdup("<?xml version=\'1.0\'?><stream:stream xmlns:stream=\'http://etherx.jabber.org/streams\'");
 		QUIT = strdup("</stream:stream>\n");
-		PROTOCOL=TCP_PROTOCOL;
+		PROTOCOL=IPPROTO_TCP;
 		use_ssl=TRUE;
 		PORT = 5222;
 	}
@@ -219,7 +215,7 @@ main (int argc, char **argv)
 		server_expect = realloc (server_expect, ++server_expect_count);
 		asprintf (&server_expect[server_expect_count - 1], "201");
 		QUIT = strdup("QUIT\r\n");
-		PROTOCOL = TCP_PROTOCOL;
+		PROTOCOL = IPPROTO_TCP;
 		use_ssl=TRUE;
 		PORT = 563;
 }
@@ -235,7 +231,7 @@ main (int argc, char **argv)
 		server_expect = realloc (server_expect, sizeof (char *) * (++server_expect_count));
 		asprintf (&server_expect[server_expect_count - 1], "201");
 		asprintf (&QUIT, "QUIT\r\n");
-		PROTOCOL = TCP_PROTOCOL;
+		PROTOCOL = IPPROTO_TCP;
 		PORT = 119;
 	}
 	else {
@@ -288,13 +284,7 @@ main (int argc, char **argv)
 		result = connect_SSL ();
 	else
 #endif
-		{
-			if (PROTOCOL == UDP_PROTOCOL)
-				result = my_udp_connect (server_address, server_port, &sd);
-			else
-				/* default is TCP */
-				result = my_tcp_connect (server_address, server_port, &sd);
-		}
+		result = my_connect (server_address, server_port, &sd, PROTOCOL);
 
 	if (result == STATE_CRITICAL)
 		return STATE_CRITICAL;
diff --git a/plugins/netutils.c b/plugins/netutils.c
index 1231c1e..e7d5ba7 100644
--- a/plugins/netutils.c
+++ b/plugins/netutils.c
@@ -39,7 +39,6 @@ int econn_refuse_state = STATE_CRITICAL;
 int was_refused = FALSE;
 int address_family = AF_UNSPEC;
 
-static int my_connect(const char *address, int port, int *sd, int proto);
 /* handles socket timeouts */
 void
 socket_timeout_alarm_handler (int sig)
@@ -53,37 +52,6 @@ socket_timeout_alarm_handler (int sig)
 }
 
 
-/* connects to a host on a specified TCP port, sends a string,
-   and gets a response */
-int
-process_tcp_request (const char *server_address, int server_port,
-	const char *send_buffer, char *recv_buffer, int recv_size)
-{
-	int result;
-
-	result = process_request (server_address, server_port,
-			IPPROTO_TCP, send_buffer, recv_buffer, recv_size);
-
-	return result;
-}
-
-
-/* connects to a host on a specified UDP port, sends a string, and gets a
-    response */
-int
-process_udp_request (const char *server_address, int server_port,
-	const char *send_buffer, char *recv_buffer, int recv_size)
-{
-	int result;
-
-	result = process_request (server_address, server_port,
-			IPPROTO_UDP, send_buffer, recv_buffer, recv_size);
-
-	return result;
-}
-
-
-
 /* connects to a host on a specified tcp port, sends a string, and gets a 
 	 response. loops on select-recv until timeout or eof to get all of a 
 	 multi-packet answer */
@@ -163,6 +131,7 @@ process_tcp_request2 (const char *server_address, int server_port,
 	return result;
 }
 
+
 /* connects to a host on a specified port, sends a string, and gets a 
    response */
 int
@@ -186,32 +155,8 @@ process_request (const char *server_address, int server_port, int proto,
 }
 
 
-/* opens a connection to a remote host/tcp port */
-int
-my_tcp_connect (const char *host_name, int port, int *sd)
-{
-	int result;
-
-	result = my_connect (host_name, port, sd, IPPROTO_TCP);
-
-	return result;
-}
-
-
-/* opens a connection to a remote host/udp port */
-int
-my_udp_connect (const char *host_name, int port, int *sd)
-{
-	int result;
-
-	result = my_connect (host_name, port, sd, IPPROTO_UDP);
-
-	return result;
-}
-
-
 /* opens a tcp or udp connection to a remote host */
-static int
+int
 my_connect (const char *host_name, int port, int *sd, int proto)
 {
 	struct addrinfo hints;
@@ -291,20 +236,6 @@ my_connect (const char *host_name, int port, int *sd, int proto)
 
 
 int
-send_tcp_request (int sd, const char *send_buffer, char *recv_buffer, int recv_size)
-{
-	return send_request (sd, IPPROTO_TCP, send_buffer, recv_buffer, recv_size);
-}
-
-
-int
-send_udp_request (int sd, const char *send_buffer, char *recv_buffer, int recv_size)
-{
-	return send_request (sd, IPPROTO_UDP, send_buffer, recv_buffer, recv_size);
-}
-
-
-int
 send_request (int sd, int proto, const char *send_buffer, char *recv_buffer, int recv_size)
 {
 	int result = STATE_OK;
@@ -397,28 +328,3 @@ resolve_host_or_addr (const char *address, int family)
 		return TRUE;
 	}
 }
-
-int
-is_inet_addr (const char *address)
-{
-	return resolve_host_or_addr (address, AF_INET);
-}
-
-#ifdef USE_IPV6
-int
-is_inet6_addr (const char *address)
-{
-	return resolve_host_or_addr (address, AF_INET6);
-}
-#endif
-
-int
-is_hostname (const char *s1)
-{
-#ifdef USE_IPV6
-	return resolve_host_or_addr (s1, address_family);
-#else
-	return resolve_host_or_addr (s1, AF_INET);
-#endif
-}
-
diff --git a/plugins/netutils.h b/plugins/netutils.h
index 2f31bdc..bd53201 100644
--- a/plugins/netutils.h
+++ b/plugins/netutils.h
@@ -38,30 +38,40 @@
 
 RETSIGTYPE socket_timeout_alarm_handler (int) __attribute__((noreturn));
 
+/* process_request and wrapper macros */
+#define process_tcp_request(addr, port, sbuf, rbuf, rsize) \
+	process_request(addr, port, IPPROTO_TCP, sbuf, rbuf, rsize)
+#define process_udp_request(addr, port, sbuf, rbuf, rsize) \
+	process_request(addr, port, IPPROTO_UDP, sbuf, rbuf, rsize)
 int process_tcp_request2 (const char *address, int port,
   const char *sbuffer, char *rbuffer, int rsize);
-int process_tcp_request (const char *address, int port,
-  const char *sbuffer, char *rbuffer, int rsize);
-int process_udp_request (const char *address, int port,
-  const char *sbuffer, char *rbuffer, int rsize);
 int process_request (const char *address, int port, int proto,
   const char *sbuffer, char *rbuffer, int rsize);
 
-int my_tcp_connect (const char *address, int port, int *sd);
-int my_udp_connect (const char *address, int port, int *sd);
+/* my_connect and wrapper macros */
+#define my_tcp_connect(addr, port, s) my_connect(addr, port, s, IPPROTO_TCP)
+#define my_udp_connect(addr, port, s) my_connect(addr, port, s, IPPROTO_UDP)
+int my_connect(const char *address, int port, int *sd, int proto);
 
-int send_tcp_request (int sd, const char *send_buffer, char *recv_buffer, int recv_size);
-int send_udp_request (int sd, const char *send_buffer, char *recv_buffer, int recv_size);
+/* send_request and wrapper macros */
+#define send_tcp_request(s, sbuf, rbuf, rsize) \
+	send_request(s, IPPROTO_TCP, sbuf, rbuf, rsize)
+#define send_udp_request(s, sbuf, rbuf, rsize) \
+	send_request(s, IPPROTO_UDP, sbuf, rbuf, rsize)
 int send_request (int sd, int proto, const char *send_buffer, char *recv_buffer, int recv_size);
 
+
+/* "is_*" wrapper macros and functions */
 int is_host (const char *);
 int is_addr (const char *);
 int resolve_host_or_addr (const char *, int);
-int is_inet_addr (const char *);
+#define is_inet_addr(addr) resolve_host_or_addr(addr, AF_INET)
 #ifdef USE_IPV6
-int is_inet6_addr (const char *);
+#  define is_inet6_addr(addr) resolve_host_or_addr(addr, AF_INET6)
+#  define is_hostname(addr) resolve_host_or_addr(addr, address_family)
+#else
+#  define is_hostname(addr) resolve_host_or_addr(addr, AF_INET)
 #endif
-int is_hostname (const char *);
 
 extern unsigned int socket_timeout;
 extern int econn_refuse_state;
-- 
cgit v0.10-9-g596f

