xref: /freebsd/contrib/tcp_wrappers/fromhost.c (revision 2aef693010b252e8cff0ce46a6ebf15b74c82219)
12aef6930SMark Murray  /*
22aef6930SMark Murray   * On socket-only systems, fromhost() is nothing but an alias for the
32aef6930SMark Murray   * socket-specific sock_host() function.
42aef6930SMark Murray   *
52aef6930SMark Murray   * On systems with sockets and TLI, fromhost() determines the type of API
62aef6930SMark Murray   * (sockets, TLI), then invokes the appropriate API-specific routines.
72aef6930SMark Murray   *
82aef6930SMark Murray   * Diagnostics are reported through syslog(3).
92aef6930SMark Murray   *
102aef6930SMark Murray   * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
112aef6930SMark Murray   */
122aef6930SMark Murray 
132aef6930SMark Murray #ifndef lint
142aef6930SMark Murray static char sccsid[] = "@(#) fromhost.c 1.17 94/12/28 17:42:23";
152aef6930SMark Murray #endif
162aef6930SMark Murray 
172aef6930SMark Murray #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
182aef6930SMark Murray 
192aef6930SMark Murray /* System libraries. */
202aef6930SMark Murray 
212aef6930SMark Murray #include <sys/types.h>
222aef6930SMark Murray #include <sys/tiuser.h>
232aef6930SMark Murray #include <stropts.h>
242aef6930SMark Murray 
252aef6930SMark Murray /* Local stuff. */
262aef6930SMark Murray 
272aef6930SMark Murray #include "tcpd.h"
282aef6930SMark Murray 
292aef6930SMark Murray /* fromhost - find out what network API we should use */
302aef6930SMark Murray 
312aef6930SMark Murray void    fromhost(request)
322aef6930SMark Murray struct request_info *request;
332aef6930SMark Murray {
342aef6930SMark Murray 
352aef6930SMark Murray     /*
362aef6930SMark Murray      * On systems with streams support the IP network protocol family may be
372aef6930SMark Murray      * accessible via more than one programming interface: Berkeley sockets
382aef6930SMark Murray      * and the Transport Level Interface (TLI).
392aef6930SMark Murray      *
402aef6930SMark Murray      * Thus, we must first find out what programming interface to use: sockets
412aef6930SMark Murray      * or TLI. On some systems, sockets are not part of the streams system,
422aef6930SMark Murray      * so if request->fd is not a stream we simply assume sockets.
432aef6930SMark Murray      */
442aef6930SMark Murray 
452aef6930SMark Murray     if (ioctl(request->fd, I_FIND, "timod") > 0) {
462aef6930SMark Murray 	tli_host(request);
472aef6930SMark Murray     } else {
482aef6930SMark Murray 	sock_host(request);
492aef6930SMark Murray     }
502aef6930SMark Murray }
512aef6930SMark Murray 
522aef6930SMark Murray #endif /* TLI || PTX || TLI_SEQUENT */
53