summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorSachidananda Urs <sacchi@gmail.com>2014-01-01 08:13:37 +0530
committerRichard Lowe <richlowe@richlowe.net>2014-01-05 16:00:31 -0500
commit9b5f5885b666050a9ec3f0ff18de2c6bf4703232 (patch)
tree2b1f796142cd2117de998ce035c38bf50a0a21a6 /usr/src
parent7ab03f887ff62508a7f59fd9c235aaeb3e17866a (diff)
downloadillumos-joyent-9b5f5885b666050a9ec3f0ff18de2c6bf4703232.tar.gz
4385 Missing hosts_ctl() prototype in tcpd.h
Reviewed by: Gary Mills <gary_mills@fastmail.fm> Reviewed by: Saso Kiselkov <skiselkov.ml@gmail.com> Approved by: Richard Lowe <richlowe@richlowe.net>
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/lib/libwrap/tcpd.h210
1 files changed, 108 insertions, 102 deletions
diff --git a/usr/src/lib/libwrap/tcpd.h b/usr/src/lib/libwrap/tcpd.h
index 03cce19ae8..2cda9e01e2 100644
--- a/usr/src/lib/libwrap/tcpd.h
+++ b/usr/src/lib/libwrap/tcpd.h
@@ -1,14 +1,17 @@
/*
+ * Copyright 2014 Sachidananda Urs <sacchi@gmail.com>
* Copyright 2001 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
- /*
- * @(#) tcpd.h 1.5 96/03/19 16:22:24
- *
- * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
- */
+/*
+ * @(#) tcpd.h 1.5 96/03/19 16:22:24
+ *
+ * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
+ */
+
+#ifndef _TCPD_H
+#define _TCPD_H
/*
* HAVE_IPV6 is traditionally configured at tcp_wrappers build time but for
@@ -19,7 +22,7 @@
/* Structure to describe one communications endpoint. */
-#define STRING_LENGTH 128 /* hosts, users, processes */
+#define STRING_LENGTH 128 /* hosts, users, processes */
#include <sys/socket.h>
#include <netinet/in.h>
@@ -31,7 +34,7 @@ typedef struct sockaddr_gen {
#ifdef HAVE_IPV6
struct sockaddr_in6 _sg_sin6;
#endif
- } sg_addr;
+ } sg_addr;
} sockaddr_gen;
typedef union gen_addr {
@@ -43,47 +46,47 @@ typedef union gen_addr {
extern void sockgen_simplify();
-#define sg_sa sg_addr._sg_sa
-#define sg_sin sg_addr._sg_sin
-#define sg_sin6 sg_addr._sg_sin6
-#define sg_family sg_sa.sa_family
+#define sg_sa sg_addr._sg_sa
+#define sg_sin sg_addr._sg_sin
+#define sg_sin6 sg_addr._sg_sin6
+#define sg_family sg_sa.sa_family
#ifdef HAVE_IPV6
-#define SGADDRSZ(sag) ((sag)->sg_family == AF_INET6 ? \
+#define SGADDRSZ(sag) ((sag)->sg_family == AF_INET6 ? \
sizeof (struct in6_addr) : \
sizeof (struct in_addr))
-#define SGSOCKADDRSZ(sag) ((sag)->sg_family == AF_INET6 ? \
+#define SGSOCKADDRSZ(sag) ((sag)->sg_family == AF_INET6 ? \
sizeof (struct sockaddr_in6) : \
sizeof (struct sockaddr_in))
-#define SGPORT(sag) (*((sag)->sg_family == AF_INET6 ? \
+#define SGPORT(sag) (*((sag)->sg_family == AF_INET6 ? \
&(sag)->sg_sin6.sin6_port : \
&(sag)->sg_sin.sin_port))
-#define SGADDRP(sag) (((sag)->sg_family == AF_INET6 ? \
- (char *) &(sag)->sg_sin6.sin6_addr : \
- (char *) &(sag)->sg_sin.sin_addr))
-#define SGFAM(sag) ((sag)->sg_family == AF_INET6 ? \
+#define SGADDRP(sag) (((sag)->sg_family == AF_INET6 ? \
+ (char *)&(sag)->sg_sin6.sin6_addr : \
+ (char *)&(sag)->sg_sin.sin_addr))
+#define SGFAM(sag) ((sag)->sg_family == AF_INET6 ? \
AF_INET6 : AF_INET)
-#define SG_IS_UNSPECIFIED(sag) \
+#define SG_IS_UNSPECIFIED(sag) \
((sag)->sg_family == AF_INET6 ? \
IN6_IS_ADDR_UNSPECIFIED(&(sag)->sg_sin6.sin6_addr) : \
(sag)->sg_sin.sin_addr.s_addr == 0)
-#define VALID_ADDRTYPE(t) ((t) == AF_INET || (t) == AF_INET6)
+#define VALID_ADDRTYPE(t) ((t) == AF_INET || (t) == AF_INET6)
#ifndef IPV6_ABITS
-#define IPV6_ABITS 128 /* Size of IPV6 address in bits */
+#define IPV6_ABITS 128 /* Size of IPV6 address in bits */
#endif
#else /* HAVE_IPV6 */
-#define SGADDRSZ(sag) sizeof(struct in_addr)
-#define SGSOCKADDRSZ(sag) sizeof(struct sockaddr_in)
-#define SGPORT(sag) ((sag)->sg_sin.sin_port)
-#define SGADDRP(sag) ((char*) &(sag)->sg_sin.sin_addr)
-#define SGFAM(sag) AF_INET
-#define SG_IS_UNSPECIFIED(sag) ((sag)->sg_sin.sin_addr.s_addr == 0)
+#define SGADDRSZ(sag) sizeof (struct in_addr)
+#define SGSOCKADDRSZ(sag) sizeof (struct sockaddr_in)
+#define SGPORT(sag) ((sag)->sg_sin.sin_port)
+#define SGADDRP(sag) ((char *)&(sag)->sg_sin.sin_addr)
+#define SGFAM(sag) AF_INET
+#define SG_IS_UNSPECIFIED(sag) ((sag)->sg_sin.sin_addr.s_addr == 0)
-#define VALID_ADDRTYPE(t) ((t) == AF_INET)
+#define VALID_ADDRTYPE(t) ((t) == AF_INET)
#endif /* HAVE_IPV6 */
@@ -98,7 +101,7 @@ struct host_info {
/* Structure to describe what we know about a service request. */
struct request_info {
- int fd; /* socket handle */
+ int fd; /* socket handle */
char user[STRING_LENGTH]; /* access via eval_user(request) */
char daemon[STRING_LENGTH]; /* access via eval_daemon(request) */
char pid[10]; /* access via eval_pid(request) */
@@ -113,32 +116,32 @@ struct request_info {
/* Common string operations. Less clutter should be more readable. */
-#define STRN_CPY(d,s,l) { strncpy((d),(s),(l)); (d)[(l)-1] = 0; }
+#define STRN_CPY(d, s, l) { strncpy((d), (s), (l)); (d)[(l)-1] = 0; }
-#define STRN_EQ(x,y,l) (strncasecmp((x),(y),(l)) == 0)
-#define STRN_NE(x,y,l) (strncasecmp((x),(y),(l)) != 0)
-#define STR_EQ(x,y) (strcasecmp((x),(y)) == 0)
-#define STR_NE(x,y) (strcasecmp((x),(y)) != 0)
+#define STRN_EQ(x, y, l) (strncasecmp((x), (y), (l)) == 0)
+#define STRN_NE(x, y, l) (strncasecmp((x), (y), (l)) != 0)
+#define STR_EQ(x, y) (strcasecmp((x), (y)) == 0)
+#define STR_NE(x, y) (strcasecmp((x), (y)) != 0)
- /*
- * Initially, all above strings have the empty value. Information that
- * cannot be determined at runtime is set to "unknown", so that we can
- * distinguish between `unavailable' and `not yet looked up'. A hostname
- * that we do not believe in is set to "paranoid".
- */
+/*
+ * Initially, all above strings have the empty value. Information that
+ * cannot be determined at runtime is set to "unknown", so that we can
+ * distinguish between `unavailable' and `not yet looked up'. A hostname
+ * that we do not believe in is set to "paranoid".
+ */
-#define STRING_UNKNOWN "unknown" /* lookup failed */
-#define STRING_PARANOID "paranoid" /* hostname conflict */
+#define STRING_UNKNOWN "unknown" /* lookup failed */
+#define STRING_PARANOID "paranoid" /* hostname conflict */
extern char unknown[];
extern char paranoid[];
-#define HOSTNAME_KNOWN(s) (STR_NE((s),unknown) && STR_NE((s),paranoid))
+#define HOSTNAME_KNOWN(s) (STR_NE((s), unknown) && STR_NE((s), paranoid))
#ifdef HAVE_IPV6
-#define NOT_INADDR(s) (strchr(s,':') == 0 && s[strspn(s,"0123456789./")] != 0)
+#define NOT_INADDR(s) (strchr(s, ':') == 0 && s[strspn(s, "0123456789./")] != 0)
#else
-#define NOT_INADDR(s) (s[strspn(s,"0123456789./")] != 0)
+#define NOT_INADDR(s) (s[strspn(s, "0123456789./")] != 0)
#endif
/* Global functions. */
@@ -146,9 +149,10 @@ extern char paranoid[];
#if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
extern void fromhost(); /* get/validate client host info */
#else
-#define fromhost sock_host /* no TLI support needed */
+#define fromhost sock_host /* no TLI support needed */
#endif
+extern int hosts_ctl(); /* wrapper around request_init() */
extern int hosts_access(); /* access control */
extern void shell_cmd(); /* execute shell command */
extern char *percent_x(); /* do %<char> expansion */
@@ -164,7 +168,7 @@ extern struct hostent *tcpd_gethostbyname();
#ifdef HAVE_IPV6
extern char *skip_ipv6_addrs(); /* skip over colons in IPv6 addrs */
#else
-#define skip_ipv6_addrs(x) x
+#define skip_ipv6_addrs(x) x
#endif
/* Global variables. */
@@ -177,36 +181,36 @@ extern int hosts_access_verbose; /* for verbose matching mode */
extern int rfc931_timeout; /* user lookup timeout */
extern int resident; /* > 0 if resident process */
- /*
- * Routines for controlled initialization and update of request structure
- * attributes. Each attribute has its own key.
- */
+/*
+ * Routines for controlled initialization and update of request structure
+ * attributes. Each attribute has its own key.
+ */
#ifdef __STDC__
-extern struct request_info *request_init(struct request_info *,...);
-extern struct request_info *request_set(struct request_info *,...);
+extern struct request_info *request_init(struct request_info *, ...);
+extern struct request_info *request_set(struct request_info *, ...);
#else
extern struct request_info *request_init(); /* initialize request */
extern struct request_info *request_set(); /* update request structure */
#endif
-#define RQ_FILE 1 /* file descriptor */
-#define RQ_DAEMON 2 /* server process (argv[0]) */
-#define RQ_USER 3 /* client user name */
-#define RQ_CLIENT_NAME 4 /* client host name */
-#define RQ_CLIENT_ADDR 5 /* client host address */
-#define RQ_CLIENT_SIN 6 /* client endpoint (internal) */
-#define RQ_SERVER_NAME 7 /* server host name */
-#define RQ_SERVER_ADDR 8 /* server host address */
-#define RQ_SERVER_SIN 9 /* server endpoint (internal) */
-
- /*
- * Routines for delayed evaluation of request attributes. Each attribute
- * type has its own access method. The trivial ones are implemented by
- * macros. The other ones are wrappers around the transport-specific host
- * name, address, and client user lookup methods. The request_info and
- * host_info structures serve as caches for the lookup results.
- */
+#define RQ_FILE 1 /* file descriptor */
+#define RQ_DAEMON 2 /* server process (argv[0]) */
+#define RQ_USER 3 /* client user name */
+#define RQ_CLIENT_NAME 4 /* client host name */
+#define RQ_CLIENT_ADDR 5 /* client host address */
+#define RQ_CLIENT_SIN 6 /* client endpoint (internal) */
+#define RQ_SERVER_NAME 7 /* server host name */
+#define RQ_SERVER_ADDR 8 /* server host address */
+#define RQ_SERVER_SIN 9 /* server endpoint (internal) */
+
+/*
+ * Routines for delayed evaluation of request attributes. Each attribute
+ * type has its own access method. The trivial ones are implemented by
+ * macros. The other ones are wrappers around the transport-specific host
+ * name, address, and client user lookup methods. The request_info and
+ * host_info structures serve as caches for the lookup results.
+ */
extern char *eval_user(); /* client user */
extern char *eval_hostname(); /* printable hostname */
@@ -214,15 +218,15 @@ extern char *eval_hostaddr(); /* printable host address */
extern char *eval_hostinfo(); /* host name or address */
extern char *eval_client(); /* whatever is available */
extern char *eval_server(); /* whatever is available */
-#define eval_daemon(r) ((r)->daemon) /* daemon process name */
-#define eval_pid(r) ((r)->pid) /* process id */
+#define eval_daemon(r) ((r)->daemon) /* daemon process name */
+#define eval_pid(r) ((r)->pid) /* process id */
/* Socket-specific methods, including DNS hostname lookups. */
extern void sock_host(); /* look up endpoint addresses */
extern void sock_hostname(); /* translate address to hostname */
extern void sock_hostaddr(); /* address to printable address */
-#define sock_methods(r) \
+#define sock_methods(r) \
{ (r)->hostname = sock_hostname; (r)->hostaddr = sock_hostaddr; }
/* The System V Transport-Level Interface (TLI) interface. */
@@ -231,11 +235,11 @@ extern void sock_hostaddr(); /* address to printable address */
extern void tli_host(); /* look up endpoint addresses etc. */
#endif
- /*
- * Problem reporting interface. Additional file/line context is reported
- * when available. The jump buffer (tcpd_buf) is not declared here, or
- * everyone would have to include <setjmp.h>.
- */
+/*
+ * Problem reporting interface. Additional file/line context is reported
+ * when available. The jump buffer (tcpd_buf) is not declared here, or
+ * everyone would have to include <setjmp.h>.
+ */
#ifdef __STDC__
extern void tcpd_warn(char *, ...); /* report problem and proceed */
@@ -247,27 +251,27 @@ extern void tcpd_jump();
struct tcpd_context {
char *file; /* current file */
- int line; /* current line */
+ int line; /* current line */
};
extern struct tcpd_context tcpd_context;
- /*
- * While processing access control rules, error conditions are handled by
- * jumping back into the hosts_access() routine. This is cleaner than
- * checking the return value of each and every silly little function. The
- * (-1) returns are here because zero is already taken by longjmp().
- */
+/*
+ * While processing access control rules, error conditions are handled by
+ * jumping back into the hosts_access() routine. This is cleaner than
+ * checking the return value of each and every silly little function. The
+ * (-1) returns are here because zero is already taken by longjmp().
+ */
-#define AC_PERMIT 1 /* permit access */
-#define AC_DENY (-1) /* deny_access */
-#define AC_ERROR AC_DENY /* XXX */
+#define AC_PERMIT 1 /* permit access */
+#define AC_DENY (-1) /* deny_access */
+#define AC_ERROR AC_DENY /* XXX */
- /*
- * In verification mode an option function should just say what it would do,
- * instead of really doing it. An option function that would not return
- * should clear the dry_run flag to inform the caller of this unusual
- * behavior.
- */
+/*
+ * In verification mode an option function should just say what it would do,
+ * instead of really doing it. An option function that would not return
+ * should clear the dry_run flag to inform the caller of this unusual
+ * behavior.
+ */
extern void process_options(); /* execute options */
extern int dry_run; /* verification flag */
@@ -275,36 +279,38 @@ extern int dry_run; /* verification flag */
/* Bug workarounds. */
#ifdef INET_ADDR_BUG /* inet_addr() returns struct */
-#define inet_addr fix_inet_addr
+#define inet_addr fix_inet_addr
extern long fix_inet_addr();
#endif
#ifdef BROKEN_FGETS /* partial reads from sockets */
-#define fgets fix_fgets
+#define fgets fix_fgets
extern char *fix_fgets();
#endif
#ifdef RECVFROM_BUG /* no address family info */
-#define recvfrom fix_recvfrom
+#define recvfrom fix_recvfrom
extern int fix_recvfrom();
#endif
#ifdef GETPEERNAME_BUG /* claims success with UDP */
-#define getpeername fix_getpeername
+#define getpeername fix_getpeername
extern int fix_getpeername();
#endif
#ifdef SOLARIS_24_GETHOSTBYNAME_BUG /* lists addresses as aliases */
-#define gethostbyname fix_gethostbyname
+#define gethostbyname fix_gethostbyname
extern struct hostent *fix_gethostbyname();
#endif
#ifdef USE_STRSEP /* libc calls strtok() */
-#define strtok fix_strtok
+#define strtok fix_strtok
extern char *fix_strtok();
#endif
#ifdef LIBC_CALLS_STRTOK /* libc calls strtok() */
-#define strtok my_strtok
+#define strtok my_strtok
extern char *my_strtok();
#endif
+
+#endif /* _TCPD_H */