mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-04-21 06:08:38 -04:00
optimizations and cleanup from andreas
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1173 f882894a-f735-0410-b71e-b25c423dba1c
This commit is contained in:
parent
9d0badbb50
commit
35f2cfd6e8
3 changed files with 37 additions and 131 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -290,20 +235,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)
|
||||
{
|
||||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue