glenda.party
term% ls -F
term% pwd
$home/manuals/plan9_2nd/3/ip
term% cat index.txt
IP(3)                      Library Functions Manual                      IP(3)

NAME
       ip - TCP, UDP, IL network protocols over IP

SYNOPSIS
       bind -a #Itcp /net
       bind -a #Iudp /net
       bind -a #Iil /net

       /net/tcp/clone
       /net/tcp/n
       /net/tcp/n/data
       /net/tcp/n/ctl
       /net/tcp/n/local
       /net/tcp/n/remote
       /net/tcp/n/status
       /net/tcp/n/listen
       ...

DESCRIPTION
       The  IP  device  provides  the interface for several protocols that run
       over IP on an Ethernet.  TCP and UDP provide the standard Internet pro‐
       tocols for reliable stream and unreliable datagram  communication.   IL
       provides  a  reliable datagram service for communication between Plan 9
       machines.  IL is the protocol of choice for most Plan 9 services.

       Each of the protocols is served by the IP device, which represents each
       connection by a set of device files.  The top level directory  of  each
       protocol contains a clone file and subdirectories numbered from zero to
       the number of connections configured for this protocol.

       Opening  the clone file reserves a connection.  The file descriptor re‐
       turned from the open(2) will point to the control  file,  ctl,  of  the
       newly allocated connection.  Reading the ctl file returns a text string
       representing the number of the connection.  Connections may be used ei‐
       ther  to  listen  for  incoming calls or to initiate calls to other ma‐
       chines.

       A connection is controlled by writing text strings  to  the  associated
       ctl  file.   After  a  connection has been established data may be read
       from and written to the data file.  For the datagram services,  IL  and
       UDP, a read of less than the length of a datagram will cause the entire
       datagram  to be consumed.  Each write to the data file will send a sin‐
       gle datagram on the network.  The TCP protocol provides a  stream  con‐
       nection that does not preserve read/write boundaries.

       Prior  to  sending data, remote and local addresses must be set for the
       connection.  For outgoing calls the local port number will be allocated
       randomly if none is set.  Addresses are set by writing control messages
       to the ctl file of the connection.  The connection is  not  established
       until  the  data file is opened.  For IL and TCP the process will block
       until the remote host has acknowledged the connection.  UDP  opens  al‐
       ways succeed.

       The following control messages are supported:

       connect ipaddress!port[!r]
              Set  the  remote  IP address and port number for the connection.
              If the r flag is supplied and no local address has  been  speci‐
              fied  the  system  will  allocate a restricted port number (less
              than 1024) for the connection to allow communication  with  Unix
              machines' login and exec services.

       disconnect
              (UDP only) Clear the remote address of a UDP connection.

       announce X
              X is a decimal port number or Set the local port number to X and
              accept  calls  to  X.  If X is accept calls for any port that no
              process has explicitly announced.  The local IP  address  cannot
              be  set.   Announce fails if the connection is already announced
              or connnected.

       bind X X is a decimal port number or Set the local port  number  to  X.
              This  exists  to support library emulation of BSD sockets and is
              not otherwise used.

       backlog n
              (IL and TCP only) Set the maximum number of pending requests for
              a given service to n.  By default n is set  to  five.   If  more
              than  n  connections are pending, further requests for a service
              will be rejected.

       Port numbers must be in the range 1 to 32767.  If a local port has  not
       been announced prior to a connect a local port number will be allocated
       automatically.  Local ports are allocated from 5000 up.

       Several  files report the status of a connection.  The remote and local
       files contain the IP address and port number for the remote  and  local
       side  of  the  connection.  The status file contains protocol-dependent
       information to help debug network connections.

       A process may accept incoming connections by calling open on the listen
       file.  The open will block until  a  new  connection  request  arrives.
       Then  open will return an open file descriptor which points to the con‐
       trol file of the newly accepted connection.  This procedure will accept
       all calls for the given protocol.

SEE ALSO
       listen(8), dial(2), ndb(6)

SOURCE
       /sys/src/9/port/devip.c
       /sys/src/9/port/stil.c
       /sys/src/9/port/stip.c
       /sys/src/9/port/tcp*.c

                                                                         IP(3)