SPP(4P)                                                                SPP(4P)


NAME
       spp - Xerox Sequenced Packet Protocol

SYNOPSIS
       #include <sys/socket.h>
       #include <netns/ns.h>
       s = socket(AF_NS, SOCK_STREAM, 0);

       #include <netns/sp.h>
       s = socket(AF_NS, SOCK_SEQPACKET, 0);

DESCRIPTION
       The  SPP protocol provides reliable, flow-controlled, two-way transmis‐
       sion of data.  It  is  a  byte-stream  protocol  used  to  support  the
       SOCK_STREAM abstraction.  SPP uses the standard NS(tm) address formats.

       Sockets utilizing the SPP protocol are either  “active”  or  “passive”.
       Active sockets initiate connections to passive sockets.  By default SPP
       sockets are created active; to create a passive  socket  the  listen(2)
       system call must be used after binding the socket with the bind(2) sys‐
       tem call.  Only passive sockets may use the accept(2)  call  to  accept
       incoming  connections.  Only active sockets may use the connect(2) call
       to initiate connections.

       Passive sockets may “underspecify” their  location  to  match  incoming
       connection  requests  from  multiple  networks.  This technique, termed
       “wildcard addressing”, allows a single server  to  provide  service  to
       clients  on multiple networks.  To create a socket which listens on all
       networks, the NS address of all zeroes must be bound.  The SPP port may
       still  be specified at this time; if the port is not specified the sys‐
       tem will assign one.   Once  a  connection  has  been  established  the
       socket’s  address is fixed by the peer entity’s location.   The address
       assigned the socket is the address associated with the  network  inter‐
       face  through  which  packets are being transmitted and received.  Nor‐
       mally this address corresponds to the peer entity’s network.

       If the SOCK_SEQPACKET socket type is specified,  each  packet  received
       has  the  actual  12  byte sequenced packet header left for the user to
       inspect:
       struct sphdr {
            u_char         sp_cc;         /* connection control */
       #define   SP_EM     0x10           /* end of message */
            u_char         sp_dt;         /* datastream type */
            u_short        sp_sid;
            u_short        sp_did;
            u_short        sp_seq;
            u_short        sp_ack;
            u_short        sp_alo;
       };
       This facilitates the implementation of  higher  level  Xerox  protocols
       which  make  use  of  the data stream type field and the end of message
       bit.  Conversely, the user is required to supply a 12 byte header,  the
       only part of which inspected is the data stream type and end of message
       fields.

       For either socket type, packets received with the  Attention  bit  sent
       are  interpreted  as  out  of band data.  Data sent with send(..., ...,
       ..., MSG_OOB) cause the attention bit to be set.

DIAGNOSTICS
       A socket operation may fail with one of the following errors returned:

       [EISCONN]           when trying to establish a connection on  a  socket
                           which already has one;

       [ENOBUFS]           when  the system runs out of memory for an internal
                           data structure;

       [ETIMEDOUT]         when a connection  was  dropped  due  to  excessive
                           retransmissions;

       [ECONNRESET]        when  the  remote  peer forces the connection to be
                           closed;

       [ECONNREFUSED]      when the remote peer  actively  refuses  connection
                           establishment  (usually  because no process is lis‐
                           tening to the port);

       [EADDRINUSE]        when an attempt is made to create a socket  with  a
                           port which has already been allocated;

       [EADDRNOTAVAIL]     when  an  attempt is made to create a socket with a
                           network address  for  which  no  network  interface
                           exists.

SOCKET OPTIONS
       SO_DEFAULT_HEADERS  when  set, this determines the data stream type and
                           whether the end of message bit  is  to  be  set  on
                           every ensuing packet.

       SO_MTU              This  specifies the maximum ammount of user data in
                           a single  packet.   The  default  is  576  bytes  -
                           sizeof(struct  spidp).   This quantity affects win‐
                           dowing --  increasing  it  without  increasing  the
                           amount  of  buffering  in the socket will lower the
                           number of unread packets accepted.  Anything larger
                           than  the  default  will not be forwarded by a bona
                           fide XEROX product internetwork router.   The  data
                           argument   for  the  setsockopt  call  must  be  an
                           unsigned short.

SEE ALSO
       intro(4N), ns(4F)

BUGS
       There should be some way to reflect record boundaries in a stream.  For
       stream  mode,  there should be an option to get the data stream type of
       the record the user process is about to receive.


4.3 Berkeley Distribution        July 30, 1985                         SPP(4P)
 
Generated: 2016-12-26
Generated by man2html V0.25
page hit count: 643
Valid CSS Valid XHTML 1.0 Strict