Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ listen(1m) — Atari System V 1.1-06

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

nlsadmin(1M)

pmadm(1M)

sac(1M)

sacadm(1M)

doconfig(3N)

nlsprovider(3N)

streamio(7)





   listen(1M)                                                       listen(1M)


   NAME
         listen - network listener daemon

   SYNOPSIS
         /usr/lib/saf/listen [ -m devstem ] net_spec

   DESCRIPTION
         The listen process ``listens'' to a network for service requests,
         accepts requests when they arrive, and invokes servers in response to
         those service requests.  The network listener process may be used
         with any connection-oriented network (more precisely, with any
         connection-oriented transport provider) that conforms to the
         Transport Interface (TLI) specification.

         The listener internally generates a pathname for the minor device for
         each connection; it is this pathname that is used in the utmp entry
         for a service, if one is created.  By default, this pathname is the
         concatenation of the prefix /dev/netspec with the decimal
         representation of the minor device number.  When the -m devstem
         option is specified, the listener will use devstem as the prefix for
         the pathname.  In either case, the representation of the minor device
         number will be at least two digits (e.g., 05 or 27), but will be
         longer when necessary to accommodate minor device numbers larger than
         99.

   SERVER INVOCATION
         When a connection indication is received, the listener creates a new
         transport endpoint and accepts the connection on that endpoint.
         Before giving the file descriptor for this new connection to the
         server, any designated STREAMS modules are pushed and the
         configuration script is executed, if one exists.  This file
         descriptor is appropriate for use with either TLI (see especially
         tsync(3N)) or the sockets interface library.

         By default, a new instance of the server is invoked for each
         connection.  When the server is invoked, file descriptor 0 refers to
         the transport endpoint, and is open for reading and writing.  File
         descriptors 1 and 2 are copies of file descriptor 0; no other file
         descriptors are open.  The service is invoked with the user and group
         IDs of the user name under which the service was registered with the
         listener, and with the current directory set to the HOME directory of
         that user.

         Alternatively, a service may be registered so that the listener will
         pass connections to a standing server process through a FIFO or a
         named STREAM, instead of invoking the server anew for each
         connection.  In this case, the connection is passed in the form of a
         file descriptor that refers to the new transport endpoint.  Before
         the file descriptor is sent to the server, the listener interprets
         any configuration script registered for that service using
         doconfig(3N), although doconfig is invoked with both the NORUN and


   8/91                                                                 Page 1









   listen(1M)                                                       listen(1M)


         NOASSIGN flags.  The server receives the file descriptor for the
         connection in a strrecvfd structure via an I_RECVFD ioctl(2).

         For more details about the listener and its administration, see
         nlsadmin(1M).

   FILES
         /etc/saf/pmtag/*

   SEE ALSO
         nlsadmin(1M), pmadm(1M), sac(1M), sacadm(1M),
         doconfig(3N), nlsgetcall, nlsprovider(3N),
         streamio(7).
         Programmer's Guide: Networking Interfaces

   NOTES
         When passing a connection to a standing server, the user and group
         IDs contained in the strrecvfd structure will be those for the
         listener (that is, they will both be 0); the user name under which
         the service was registered with the listener is not reflected in
         these IDs.

         When operating multiple instances of the listener on a single
         transport provider, there is a potential race condition in the
         binding of addresses during initialization of the listeners if any of
         their services have dynamically assigned addresses.  This condition
         would appear as an inability of the listener to bind a static-address
         service to its otherwise valid address, and would result from a
         dynamic-address service having been bound to that address by a
         different instance of the listener.























   Page 2                                                                 8/91





Typewritten Software • bear@typewritten.org • Edmonds, WA 98026