4.3BSD-UWisc/man/cat4/spp.4p




SPP(4P)             UNIX Programmer's Manual              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
     transmission 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 _l_i_s_t_e_n(2) system call must be
     used after binding the socket with the _b_i_n_d(2) system call.
     Only passive sockets may use the _a_c_c_e_p_t(2) call to accept
     incoming connections.  Only active sockets may use the _c_o_n_-
     _n_e_c_t(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
     system will assign one.  Once a connection has been esta-
     blished the socket's address is fixed by the peer entity's
     location.   The address assigned the socket is the address
     associated with the network interface through which packets
     are being transmitted and received.  Normally 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;         /* _c_o_n_n_e_c_t_i_o_n _c_o_n_t_r_o_l */
     #define   SP_EM     0x10           /* _e_n_d _o_f _m_e_s_s_a_g_e */
          u_char         sp_dt;         /* _d_a_t_a_s_t_r_e_a_m _t_y_p_e */
          u_short        sp_sid;
          u_short        sp_did;
          u_short        sp_seq;
          u_short        sp_ack;
          u_short        sp_alo;



Printed 12/27/86          July 30, 1985                         1






SPP(4P)             UNIX Programmer's Manual              SPP(4P)



     };
     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 connec-
                         tion to be closed;

     [ECONNREFUSED]      when the remote peer actively refuses
                         connection establishment (usually
                         because no process is listening 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 mes-
                         sage 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 windowing
                         -- increasing it without increasing the



Printed 12/27/86          July 30, 1985                         2






SPP(4P)             UNIX Programmer's Manual              SPP(4P)



                         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.







































Printed 12/27/86          July 30, 1985                         3