$Header: /cvsroot/tcpd/doc/MEMO,v 1.2 2000/02/24 15:07:38 misiek Exp $

tcp/udp wrapper

  /usr/include/tcpd.h

    struct request_info {
	int sock; /* socket or file descriptor */
	int isudp; /* udp ? */
	struct sockaddr_storage src;
	struct sockaddr_storage dst;
	char service[];
	char src_name[];
	char dst_name[];
    };


  /usr/lib/libwrap.a
    struct request_info *request_init(struct requestinfo * req, args)
	args ... command + argument
		RQ_FILE   ... specify file descriptor
		RQ_DAEMON ... specify service name
		NULL      ... end of args
		RQ_END    ... end of args
		RQ_IGNOREP ... ignore next argument
		RQ_SETTABLE ... set another access table file
	    for test only
		RQ_USER        ... specify username
		RQ_CLIENT_SIN  ... specify (sockaddr_in *)client address
		RQ_SERVER_SIN  ... specify (sockaddr_in *)server address
		RQ_CLIENT_NAME ... specify client FDQN
		RQ_SERVER_NAME ... specify server FDQN
	    ignored
		RQ_CLIENT_ADDR ... specify clientr address(dot notation)
		RQ_SERVER_ADDR ... specify server address(dot notation)

    void fromhost(struct request_info *req)
	get socket infomation

    int hosts_access(struct request_info *req)
	judge

    int hosts_access_tcpd(struct request_info *req, char *options, int optlen)
	judge and returns tcpd option string

    void refuse(struct request_info *req)
	refuse and exit(0) with leave syslog

    void clean_request(struct request_info *req)
	drop request (when udp)

    void clean_exit(struct request_info *req)
	drop request and exit(0)

    int allow_severity ... syslog priority when allow
    int deny_severity  ... syslog priority when deny

  /usr/libexec/tcpd

Caution:
	sockets except AF_INET, AF_INET6 causes error.

use functions:
	fopen, fgets, fclose, 
	getaddrinfo, getnameinfo, htons, inet_pton,
	longjmp, setjmp, memcpy, snprintf, sprintf, sscanf,
	strcasecmp, strchr, strcmp, strcpy, strncasecmp, strncpy,
	strtoul, signal, syslog

use syscalls:
	getpeername, getsockname, recvfrom, read, write, socket,
	alarm, sleep
