X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fnetutils.h;h=572a3ae2253c9417bd2d764b372387213cc2f17a;hb=1a5a83bb82c35d888229fe9f815fbc663c0f4d3c;hp=22542a77ac16cf15c2f032d3d3108d946c6d1786;hpb=33cce285cbfd1d7ca79f2369f9bb735c1720e673;p=nagiosplug.git diff --git a/plugins/netutils.h b/plugins/netutils.h index 22542a7..572a3ae 100644 --- a/plugins/netutils.h +++ b/plugins/netutils.h @@ -1,64 +1,109 @@ -/****************************************************************************** -* +/***************************************************************************** +* * Nagios plugins net utilities include file -* +* * License: GPL * Copyright (c) 1999 Ethan Galstad (nagios@nagios.org) -* -* Last Modified: $Date$ -* +* Copyright (c) 2003-2007 Nagios Plugins Development Team +* * Description: -* +* * This file contains common include files and function definitions * used in many of the plugins. -* -* License Information: -* -* This program is free software; you can redistribute it and/or modify +* +* +* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or +* the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. -* +* * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. -* +* * You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -* -******************************************************************************/ +* along with this program. If not, see . +* +* +*****************************************************************************/ + +#ifndef _NETUTILS_H_ +#define _NETUTILS_H_ -#include "config.h" #include "common.h" +#include "utils.h" #include #include +#include + +#ifdef HAVE_SYS_UN_H +# include +# ifndef UNIX_PATH_MAX + /* linux uses this, on sun it's hard-coded at 108 without a define */ +# define UNIX_PATH_MAX 108 +# endif /* UNIX_PATH_MAX */ +#endif /* HAVE_SYS_UN_H */ -RETSIGTYPE socket_timeout_alarm_handler (int); +/* 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_request (const char *address, int port, int proto, + const char *sbuffer, char *rbuffer, int rsize); -int process_tcp_request2 (char *address, int port, char *sbuffer, - char *rbuffer, int rsize); -int process_tcp_request (char *address, int port, char *sbuffer, - char *rbuffer, int rsize); -int process_udp_request (char *address, int port, char *sbuffer, - char *rbuffer, int rsize); -int process_request (char *address, int port, int proto, char *sbuffer, - char *rbuffer, int rsize); +/* my_connect and wrapper macros */ +#define my_tcp_connect(addr, port, s) np_net_connect(addr, port, s, IPPROTO_TCP) +#define my_udp_connect(addr, port, s) np_net_connect(addr, port, s, IPPROTO_UDP) +int np_net_connect(const char *address, int port, int *sd, int proto); -int my_tcp_connect (char *address, int port, int *sd); -int my_udp_connect (char *address, int port, int *sd); -int my_connect (char *address, int port, int *sd, int proto); +/* 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); -int is_host (char *); -int is_addr (char *); -int resolve_host_or_addr (char *, int); -int is_inet_addr (char *); + +/* "is_*" wrapper macros and functions */ +int is_host (const char *); +int is_addr (const char *); +int resolve_host_or_addr (const char *, int); +void host_or_die(const char *str); +#define is_inet_addr(addr) resolve_host_or_addr(addr, AF_INET) #ifdef USE_IPV6 -int is_inet6_addr (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 + +#ifdef LOCAL_TIMEOUT_ALARM_HANDLER +extern unsigned int socket_timeout; +extern int socket_timeout_state; +RETSIGTYPE socket_timeout_alarm_handler (int) __attribute__((noreturn)); +#else +unsigned int socket_timeout = DEFAULT_SOCKET_TIMEOUT; +unsigned int socket_timeout_state = STATE_CRITICAL; +extern RETSIGTYPE socket_timeout_alarm_handler (int) __attribute__((noreturn)); #endif -int is_hostname (char *); -extern int socket_timeout; extern int econn_refuse_state; extern int was_refused; +extern int address_family; + +/* SSL-Related functionality */ +#ifdef HAVE_SSL +/* maybe this could be merged with the above np_net_connect, via some flags */ +int np_net_ssl_init(int sd); +int np_net_ssl_init_with_hostname(int sd, char *host_name); +void np_net_ssl_cleanup(); +int np_net_ssl_write(const void *buf, int num); +int np_net_ssl_read(void *buf, int num); +int np_net_ssl_check_cert(int days_till_exp); +#endif /* HAVE_SSL */ + +#endif /* _NETUTILS_H_ */