[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.227.46.87: ~ $
 /*
  * @(#) tcpd.h 1.5 96/03/19 16:22:24
  * 
  * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
  */

#ifndef _TCPWRAPPERS_TCPD_H
#define _TCPWRAPPERS_TCPD_H

/* someone else may have defined this */
#undef  __P

/* use prototypes if we have an ANSI C compiler or are using C++ */
#if defined(__STDC__) || defined(__cplusplus)
#define __P(args)       args
#else
#define __P(args)       ()
#endif

/* Need definitions of struct sockaddr_in and FILE. */
#include <netinet/in.h>
#include <stdio.h>

__BEGIN_DECLS

/* Structure to describe one communications endpoint. */

#define STRING_LENGTH	128		/* hosts, users, processes */

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

typedef struct sockaddr_gen {
    union {
	struct sockaddr	_sg_sa;
	struct sockaddr_in	_sg_sin;
#ifdef HAVE_IPV6
	struct sockaddr_in6	_sg_sin6;
#endif
    } sg_addr;
} sockaddr_gen;

typedef union gen_addr {
    struct in_addr	ga_in;
#ifdef HAVE_IPV6
    struct in6_addr	ga_in6;
#endif
} 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
#ifdef HAVE_IPV6
#define SGADDRSZ(sag)		((sag)->sg_family == AF_INET6 ? \
				    sizeof (struct in6_addr) : \
				    sizeof (struct in_addr))
#define SGSOCKADDRSZ(sag)	((sag)->sg_family == AF_INET6 ? \
				    sizeof (struct sockaddr_in6) : \
				    sizeof (struct sockaddr_in))
#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 ? \
				    AF_INET6 : AF_INET)

#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)

#ifndef IPV6_ABITS
#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 VALID_ADDRTYPE(t)	((t) == AF_INET)

#endif /* HAVE_IPV6 */

struct host_info {
    char    name[STRING_LENGTH];	/* access via eval_hostname(host) */
    char    addr[STRING_LENGTH];	/* access via eval_hostaddr(host) */
    struct sockaddr_gen *sin;		/* socket address or 0 */
    struct t_unitdata *unit;		/* TLI transport address or 0 */
    struct request_info *request;	/* for shared information */
};

/* Structure to describe what we know about a service request. */

struct request_info {
    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) */
    struct host_info client[1];		/* client endpoint info */
    struct host_info server[1];		/* server endpoint info */
    void  (*sink) __P((int));		/* datagram sink function or 0 */
    void  (*hostname) __P((struct host_info *)); /* address to printable hostname */
    void  (*hostaddr) __P((struct host_info *)); /* address to printable address */
    void  (*cleanup) __P((struct request_info *)); /* cleanup function or 0 */
    struct netconfig *config;		/* netdir handle */
};

/* 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_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".
  */

#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))

#ifdef HAVE_IPV6
#define NOT_INADDR(s) (strchr(s,':') == 0 && s[strspn(s,"0123456789./")] != 0)
#else
#define NOT_INADDR(s) (s[strspn(s,"0123456789./")] != 0)
#endif

/* Global functions. */

#if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
extern void fromhost __P((struct request_info *));			/* get/validate client host info */
#else
#define fromhost sock_host		/* no TLI support needed */
#endif

extern void shell_cmd __P((char *));		/* execute shell command */
extern char *percent_x __P((char *, int, char *, struct request_info *));		/* do %<char> expansion */
extern void rfc931 __P((struct sockaddr_gen *, struct sockaddr_gen *, char *));			/* client name from RFC 931 daemon */
extern void clean_exit __P((struct request_info *));		/* clean up and exit */
extern void refuse __P((struct request_info *));			/* clean up and exit */
extern char *xgets __P((char *, int, FILE *));			/* fgets() on steroids */
extern char *split_at __P((char *, int));		/* strchr() and split */
extern unsigned long dot_quad_addr __P((char *));	/* restricted inet_addr() */
extern unsigned long prefix_to_netmask __P((char *)); /* 0-32 prefix length */
extern int numeric_addr __P((char *, union gen_addr *, int *, int *));		/* IP4/IP6 inet_addr (restricted) */
extern struct hostent *tcpd_gethostbyname __P((char *, int));
					/* IP4/IP6 gethostbyname */
#ifdef HAVE_IPV6
extern char *skip_ipv6_addrs __P((char *));		/* skip over colons in IPv6 addrs */
#else
#define skip_ipv6_addrs(x)	x
#endif

/* Global variables. */

#ifdef HAVE_WEAKSYMS
extern int allow_severity __attribute__ ((weak)); /* for connection logging */
extern int deny_severity __attribute__ ((weak)); /* for connection logging */
#else
extern int allow_severity;		/* for connection logging */
extern int deny_severity;		/* for connection logging */
#endif

extern char *hosts_allow_table;		/* for verification mode redirection */
extern char *hosts_deny_table;		/* for verification mode redirection */
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.
  */

#ifdef __STDC__
extern int hosts_access(struct request_info *request);
extern int hosts_ctl(char *daemon, char *client_name, char *client_addr, 
                     char *client_user);
extern struct request_info *request_init(struct request_info *,...);
extern struct request_info *request_set(struct request_info *,...);
#else
extern int hosts_access();
extern int hosts_ctl();
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.
  */

extern char *eval_user __P((struct request_info *));	/* client user */
extern char *eval_hostname __P((struct host_info *));	/* printable hostname */
extern char *eval_hostaddr __P((struct host_info *));	/* printable host address */
extern char *eval_hostinfo __P((struct host_info *));	/* host name or address */
extern char *eval_client __P((struct request_info *));	/* whatever is available */
extern char *eval_server __P((struct request_info *));	/* whatever is available */
#define eval_daemon(r)	((r)->daemon)	/* daemon process name */
#define eval_pid(r)	((r)->pid)	/* process id */

/* Socket-specific methods, including DNS hostname lookups. */

/* look up endpoint addresses */
extern void sock_host __P((struct request_info *));
extern void sock_hostnofd __P((struct request_info *));
/* translate address to hostname */
extern void sock_hostname __P((struct host_info *));
/* address to printable address */
extern void sock_hostaddr __P((struct host_info *));

#define sock_methods(r) \
	{ (r)->hostname = sock_hostname; (r)->hostaddr = sock_hostaddr; }

/* The System V Transport-Level Interface (TLI) interface. */

#if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
extern void tli_host __P((struct request_info *));	/* 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>.
  */

#ifdef __STDC__
extern void tcpd_warn(char *, ...);	/* report problem and proceed */
extern void tcpd_jump(char *, ...);	/* report problem and jump */
#else
extern void tcpd_warn();
extern void tcpd_jump();
#endif

struct tcpd_context {
    char   *file;			/* current file */
    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().
  */

#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.
  */

extern void process_options __P((char *, struct request_info *)); /* execute options */
extern int dry_run;			/* verification flag */

/* Bug workarounds. */

#ifdef INET_ADDR_BUG			/* inet_addr() returns struct */
#define inet_addr fix_inet_addr
extern long fix_inet_addr();
#endif

#ifdef BROKEN_FGETS			/* partial reads from sockets */
#define fgets fix_fgets
extern char *fix_fgets();
#endif

#ifdef RECVFROM_BUG			/* no address family info */
#define recvfrom fix_recvfrom
extern int fix_recvfrom();
#endif

#ifdef GETPEERNAME_BUG			/* claims success with UDP */
#define getpeername fix_getpeername
extern int fix_getpeername();
#endif

#ifdef SOLARIS_24_GETHOSTBYNAME_BUG	/* lists addresses as aliases */
#define gethostbyname fix_gethostbyname
extern struct hostent *fix_gethostbyname();
#endif

#ifdef USE_STRSEP			/* libc calls strtok() */
#define strtok	fix_strtok
extern char *fix_strtok();
#endif

#ifdef LIBC_CALLS_STRTOK		/* libc calls strtok() */
#define strtok	my_strtok
extern char *my_strtok();
#endif

__END_DECLS

#endif /* tcpd.h */

Filemanager

Name Type Size Permission Actions
GL Folder 0755
X11 Folder 0755
arpa Folder 0755
asm Folder 0755
asm-generic Folder 0755
bind9 Folder 0755
bits Folder 0755
blkid Folder 0755
c++ Folder 0755
db4.7.25 Folder 0755
drm Folder 0755
e2p Folder 0755
et Folder 0755
ext2fs Folder 0755
fontconfig Folder 0755
freetype2 Folder 0755
gdbm Folder 0755
gnu Folder 0755
gssapi Folder 0755
gssrpc Folder 0755
kadm5 Folder 0755
krb5 Folder 0755
libdb Folder 0755
libexslt Folder 0755
libltdl Folder 0755
libmount Folder 0755
libpng15 Folder 0755
libxml2 Folder 0755
libxslt Folder 0755
linux Folder 0755
lzma Folder 0755
misc Folder 0755
mtd Folder 0755
mysql Folder 0755
ncurses Folder 0755
ncursesw Folder 0755
net Folder 0755
netash Folder 0755
netatalk Folder 0755
netax25 Folder 0755
neteconet Folder 0755
netinet Folder 0755
netipx Folder 0755
netiucv Folder 0755
netpacket Folder 0755
netrom Folder 0755
netrose Folder 0755
nfs Folder 0755
openssl Folder 0755
protocols Folder 0755
python2.7 Folder 0755
quota Folder 0755
rdma Folder 0755
rpc Folder 0755
rpcsvc Folder 0755
scsi Folder 0755
security Folder 0755
selinux Folder 0755
sepol Folder 0755
sound Folder 0755
sys Folder 0755
uapi Folder 0755
uuid Folder 0755
video Folder 0755
xcb Folder 0755
xen Folder 0755
FlexLexer.h File 6.07 KB 0644
_G_config.h File 1.26 KB 0644
a.out.h File 4.25 KB 0644
aio.h File 7.27 KB 0644
aliases.h File 2 KB 0644
alloca.h File 1.19 KB 0644
ar.h File 1.68 KB 0644
argp.h File 24.75 KB 0644
argz.h File 6.96 KB 0644
assert.h File 3.52 KB 0644
autosprintf.h File 2.33 KB 0644
byteswap.h File 1.41 KB 0644
com_err.h File 2.07 KB 0644
complex.h File 3.62 KB 0644
cpio.h File 2.21 KB 0644
cpufreq.h File 5.8 KB 0644
crypt.h File 2.22 KB 0644
ctype.h File 11.52 KB 0644
curses.h File 93.19 KB 0644
cursesapp.h File 6.62 KB 0644
cursesf.h File 27.05 KB 0644
cursesm.h File 19.09 KB 0644
cursesp.h File 8.3 KB 0644
cursesw.h File 48.24 KB 0644
cursslk.h File 7.13 KB 0644
db.h File 120.21 KB 0444
db_185.h File 5.84 KB 0444
dbm.h File 1.37 KB 0644
dirent.h File 12.34 KB 0644
dlfcn.h File 6.88 KB 0644
elf.h File 141.01 KB 0644
endian.h File 2.95 KB 0644
entities.h File 4.56 KB 0644
envz.h File 2.82 KB 0644
err.h File 2.18 KB 0644
errno.h File 2.33 KB 0644
error.h File 2.01 KB 0644
eti.h File 2.82 KB 0644
etip.h File 9.04 KB 0644
execinfo.h File 1.5 KB 0644
expat.h File 40.92 KB 0644
expat_external.h File 3.29 KB 0644
fam.h File 6.71 KB 0644
fcntl.h File 9.89 KB 0644
features.h File 12.87 KB 0644
fenv.h File 4.5 KB 0644
fmtmsg.h File 3.18 KB 0644
fnmatch.h File 2.27 KB 0644
form.h File 17.56 KB 0644
fpu_control.h File 3.5 KB 0644
fstab.h File 3.04 KB 0644
fts.h File 5.17 KB 0644
ftw.h File 5.15 KB 0644
gconv.h File 5.16 KB 0644
gcrypt-module.h File 7.18 KB 0644
gcrypt.h File 76.51 KB 0644
gd.h File 32.02 KB 0644
gd_io.h File 1.13 KB 0644
gdbm.h File 5.75 KB 0644
gdcache.h File 2.75 KB 0644
gdfontg.h File 623 B 0644
gdfontl.h File 621 B 0644
gdfontmb.h File 590 B 0644
gdfonts.h File 585 B 0644
gdfontt.h File 617 B 0644
gdfx.h File 2.34 KB 0644
getopt.h File 6.53 KB 0644
gettext-po.h File 15.17 KB 0644
glob.h File 6.51 KB 0644
gnu-versions.h File 2.29 KB 0644
gpg-error.h File 23.66 KB 0644
grp.h File 6.75 KB 0644
gshadow.h File 4.43 KB 0644
gssapi.h File 181 B 0644
iconv.h File 1.83 KB 0644
idn-free.h File 2.41 KB 0644
idn-int.h File 20 B 0644
idna.h File 3.48 KB 0644
ieee754.h File 4.81 KB 0644
ifaddrs.h File 2.77 KB 0644
inttypes.h File 11.61 KB 0644
jconfig.h File 1.7 KB 0644
jerror.h File 14.4 KB 0644
jmorecfg.h File 13.5 KB 0644
jpeglib.h File 49.12 KB 0644
kdb.h File 60.12 KB 0644
keyutils.h File 7.08 KB 0644
krad.h File 8.72 KB 0644
krb5.h File 402 B 0644
langinfo.h File 15.57 KB 0644
lastlog.h File 126 B 0644
libaio.h File 7.8 KB 0644
libgen.h File 1.37 KB 0644
libintl.h File 4.49 KB 0644
libio.h File 16.87 KB 0644
libssh2.h File 51.09 KB 0644
libssh2_publickey.h File 4.8 KB 0644
libssh2_sftp.h File 15.35 KB 0644
limits.h File 4.42 KB 0644
link.h File 6.99 KB 0644
locale.h File 7.78 KB 0644
ltdl.h File 5.58 KB 0644
lzma.h File 9.51 KB 0644
malloc.h File 6.44 KB 0644
math.h File 15.7 KB 0644
mcheck.h File 2.4 KB 0644
memory.h File 962 B 0644
menu.h File 11.67 KB 0644
mntent.h File 3.3 KB 0644
monetary.h File 1.73 KB 0644
mqueue.h File 3.7 KB 0644
nc_tparm.h File 4.05 KB 0644
ncurses.h File 93.19 KB 0644
ncurses_dll.h File 3.83 KB 0644
ndbm.h File 2.39 KB 0644
netdb.h File 27.46 KB 0644
nl_types.h File 1.73 KB 0644
nss.h File 1.85 KB 0644
obstack.h File 18.84 KB 0644
panel.h File 3.97 KB 0644
paths.h File 2.91 KB 0644
pcre.h File 29.73 KB 0644
pcre_scanner.h File 6.45 KB 0644
pcre_stringpiece.h File 6.11 KB 0644
pcrecpp.h File 25.91 KB 0644
pcrecpparg.h File 6.62 KB 0644
pcreposix.h File 5.32 KB 0644
png.h File 113.36 KB 0644
pngconf.h File 20.94 KB 0644
pnglibconf.h File 6.3 KB 0644
poll.h File 22 B 0644
pr29.h File 2.07 KB 0644
printf.h File 6.56 KB 0644
profile.h File 11.87 KB 0644
pthread.h File 39.95 KB 0644
pty.h File 1.51 KB 0644
punycode.h File 9.36 KB 0644
pwd.h File 5.87 KB 0644
re_comp.h File 957 B 0644
regex.h File 21.58 KB 0644
regexp.h File 6.89 KB 0644
resolv.h File 14.67 KB 0644
sched.h File 4.55 KB 0644
search.h File 5.11 KB 0644
semaphore.h File 2.36 KB 0644
setjmp.h File 3.97 KB 0644
sgtty.h File 1.33 KB 0644
shadow.h File 5.1 KB 0644
signal.h File 13.3 KB 0644
spawn.h File 6.53 KB 0644
stab.h File 264 B 0644
stdc-predef.h File 1.59 KB 0644
stdint.h File 7.94 KB 0644
stdio.h File 30.9 KB 0644
stdio_ext.h File 2.74 KB 0644
stdlib.h File 33.23 KB 0644
string.h File 21.75 KB 0644
stringprep.h File 8 KB 0644
strings.h File 4.55 KB 0644
syscall.h File 25 B 0644
sysexits.h File 5.11 KB 0644
syslog.h File 24 B 0644
tar.h File 3.67 KB 0644
tcpd.h File 11.48 KB 0644
term.h File 38.63 KB 0644
term_entry.h File 7.91 KB 0644
termcap.h File 3.4 KB 0644
termio.h File 214 B 0644
termios.h File 3.52 KB 0644
tgmath.h File 18.11 KB 0644
thread_db.h File 15.65 KB 0644
tic.h File 12.35 KB 0644
tiff.h File 34.95 KB 0644
tiffconf-64.h File 3.35 KB 0644
tiffconf.h File 250 B 0644
tiffio.h File 23.14 KB 0644
tiffio.hxx File 1.66 KB 0644
tiffvers.h File 410 B 0644
time.h File 13.4 KB 0644
tld.h File 4.54 KB 0644
ttyent.h File 2.44 KB 0644
uchar.h File 2.42 KB 0644
ucontext.h File 1.92 KB 0644
ulimit.h File 1.55 KB 0644
unctrl.h File 3.03 KB 0644
unistd.h File 41.78 KB 0644
ustat.h File 23 B 0644
utime.h File 1.5 KB 0644
utmp.h File 3.16 KB 0644
utmpx.h File 4.02 KB 0644
values.h File 1.92 KB 0644
verto-module.h File 6.48 KB 0644
verto.h File 18.57 KB 0644
wait.h File 22 B 0644
wchar.h File 31.37 KB 0644
wctype.h File 10.89 KB 0644
wordexp.h File 2.47 KB 0644
xlocale.h File 1.66 KB 0644
yaml.h File 52.95 KB 0644
zconf.h File 14.92 KB 0644
zlib.h File 84.68 KB 0644