2.11BSD/man/cat4/spp.0

Compare this file to the similar file:
Show the results in this format:




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 11/26/99	  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 11/26/99	  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 11/26/99	  July 30, 1985                         3