NAME
	  spp -	Xerox sequenced	packet protocol	(SPP)

     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 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 address formats.

	  Sockets utilizing the	SPP 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() function must be used after binding the
	  socket with the bind() function.  Only passive sockets may
	  use the accept() function to accept incoming connections.
	  Only active sockets may use the connect() function to	ini-
	  tiate	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 includes the	actual 12-byte sequenced packet	header
	  for the user to inspect.  This facilitates the implementa-
	  tion of higher level Xerox protocols which make use of the
	  data stream type field and the end of	message	bit.  Con-
	  versely, the user is required	to supply a 12-byte header,
	  the only parts of which are inspected	are the	data stream
	  type and the end of message fields.

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

	  The following	socket options are available:

	  SO_DEFAULT_HEADERS  Determines the data stream type and
			      whether the end of message bit is	to be
			      set on every ensuing packet.

	  SO_MTU	      Specifies	the maximum amount of user
			      data in a	single packet.	The default is
			      576 bytes	- sizeof(struct	spidp).	 This
			      quantity affects windowing; increasing
			      it without increasing the	amount of
			      buffering	in the socket will lower the
			      number of	unread packets accepted.  Any-
			      thing larger than	the default will not
			      be forwarded by a	bona fide Xerox	pro-
			      duct internetwork	router.	 The data
			      argument for the setsockopt() function
			      must be an unsigned short.

     ERRORS
	  If a socket option fails, errno may be set to	one of the
	  following values:

	  [EISCONN]	      The socket to be connected already has a
			      connection.

	  [ENOBUFS]	      The system ran out of memory for an
			      internal data structure.

	  [ETIMEDOUT]	      The connection was dropped due to	exces-
			      sive retransmissions.

	  [ECONNRESET]	      The remote peer forced the connection to
			      be closed.

	  [ECONNREFUSED]      The remote peer actively refused estab-
			      lishment of a connection (usually
			      because no process is listening to the
			      port).

	  [EADDRINUSE]	      An attempt was made to create a socket
			      with a port which	has already been allo-
			      cated.

	  [EADDRNOTAVAIL]     An attempt was made to create a socket
			      with a network address for which no net-
			      work interface exists.

     RELATED INFORMATION
	  Files: netintro(7), ns(7)
Acknowledgement and Disclaimer