tcpsvd(8)               OpenBSD System Manager's Manual              tcpsvd(8)



NAME
       tcpsvd - TCP/IP service daemon

SYNOPSIS
       tcpsvd [-hpEvv] [-c n] [-C n:msg] [-b n] [-u user] [-l name] [-i dir|-x
       cdb] [ -t sec] host port prog

DESCRIPTION
       tcpsvd creates a TCP/IP socket, binds it to the address host:port, and
       listens on the socket for incoming connections.

       On each incoming connection, tcpsvd conditionally runs a program, with
       standard input reading from the socket, and standard output writing to
       the socket, to handle this connection.  tcpsvd keeps listening on the
       socket for new connections, and can handle multiple connections
       simultaneously.

       tcpsvd optionally checks for special instructions depending on the IP
       address or hostname of the client that initiated the connection, see
       ipsvd-instruct(5).

OPTIONS
       host   host either is a hostname, or a dotted-decimal IP address, or 0.
              If host is 0, tcpsvd accepts connections to any local IP
              address.

       port   tcpsvd accepts connections to host:port.  port may be a name
              from /etc/services or a number.

       prog   prog consists of one or more arguments.  For each connection,
              tcpsvd normally runs prog, with file descriptor 0 reading from
              the network, and file descriptor 1 writing to the network.  By
              default it also sets up TCP-related environment variables, see
              tcp-environ(5)

       -i dir read instructions for handling new connections from the
              instructions directory dir.  See ipsvd-instruct(5) for details.

       -x cdb read instructions for handling new connections from the constant
              database cdb.  The constant database normally is created from an
              instructions directory by running ipsvd-cdb(8).

       -t sec timeout.  This option only takes effect if the -i option is
              given.  While checking the instructions directory, check the
              time of last access of the file that matches the clients address
              or hostname if any, discard and remove the file if it wasn't
              accessed within the last sec seconds; tcpsvd does not discard or
              remove a file if the user's write permission is not set, for
              those files the timeout is disabled.  Default is 0, which means
              that the timeout is disabled.

       -l name
              local hostname.  Do not look up the local hostname in DNS, but
              use name as hostname.  This option must be set if tcpsvd listens
              on port 53 to avoid loops.

       -u user[:group]
              drop permissions.  Switch user ID to user's UID, and group ID to
              user's primary GID after creating and binding to the socket.  If
              user is followed by a colon and a group name, the group ID is
              switched to the GID of group instead.  All supplementary groups
              are removed.

       -c n   concurrency.  Handle up to n connections simultaneously.
              Default is 30.  If there are n connections active, tcpsvd defers
              acceptance of a new connection until an active connection is
              closed.

       -C n[:msg]
              per host concurrency.  Allow only up to n connections from the
              same IP address simultaneously.  If there are n active
              connections from one IP address, new incoming connections from
              this IP address are closed immediately.  If n is followed by
              :msg, the message msg is written to the client if possible,
              before closing the connection.  By default msg is empty.  See
              ipsvd-instruct(5) for supported escape sequences in msg.

              For each accepted connection, the current per host concurrency
              is available through the environment variable TCPCONCURRENCY.  n
              and msg can be overwritten by ipsvd(7) instructions, see ipsvd-
              instruct(5).  By default tcpsvd doesn't keep track of
              connections.

       -h     Look up the client's hostname in DNS.

       -p     paranoid.  After looking up the client's hostname in DNS, look
              up the IP addresses in DNS for that hostname, and forget about
              the hostname if none of the addresses match the client's IP
              address.  You should set this option if you use hostname based
              instructions.  The -p option implies the -h option.

       -b n   backlog.  Allow a backlog of approximately n TCP SYNs.  On some
              systems n is silently limited.  Default is 20.

       -E     no special environment.  Do not set up TCP-related environment
              variables.

       -v     verbose.  Print verbose messsages to standard output.

       -vv    more verbose.  Print more verbose messages to standard output.

SEE ALSO
       ipsvd(7), sslsvd(8), udpsvd(8), ipsvd-instruct(5), ipsvd-cdb(8),
       sslio(8)

       http://smarden.org/ipsvd/

AUTHOR
       Gerrit Pape <pape@smarden.org>



                                                                     tcpsvd(8)
