|
|
1.1 root 1: .\" Copyright (c) 1985 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)spp.4p 1.2 (Berkeley) 9/17/85
6: .\"
7: .TH SPP 4P "July 30, 1985"
8: .UC 6
9: .SH NAME
10: spp \- Xerox Sequenced Packet Protocol
11: .SH SYNOPSIS
12: .B #include <sys/socket.h>
13: .br
14: .B #include <netns/ns.h>
15: .br
16: .B s = socket(AF_NS, SOCK_STREAM, 0);
17: .PP
18: .B #include <netns/sp.h>
19: .br
20: .B s = socket(AF_NS, SOCK_SEQPACKET, 0);
21: .SH DESCRIPTION
22: The SPP protocol provides reliable, flow-controlled, two-way
23: transmission of data. It is a byte-stream protocol used to
24: support the SOCK_STREAM abstraction. SPP uses the standard
25: NS(tm) address formats.
26: .PP
27: Sockets utilizing the SPP protocol are either \*(lqactive\*(rq or
28: \*(lqpassive\*(rq. Active sockets initiate connections to passive
29: sockets. By default SPP sockets are created active; to create a
30: passive socket the
31: .IR listen (2)
32: system call must be used
33: after binding the socket with the
34: .IR bind (2)
35: system call. Only
36: passive sockets may use the
37: .IR accept (2)
38: call to accept incoming connections. Only active sockets may
39: use the
40: .IR connect (2)
41: call to initiate connections.
42: .PP
43: Passive sockets may \*(lqunderspecify\*(rq their location to match
44: incoming connection requests from multiple networks. This
45: technique, termed \*(lqwildcard addressing\*(rq, allows a single
46: server to provide service to clients on multiple networks.
47: To create a socket which listens on all networks, the NS
48: address of all zeroes must be bound.
49: The SPP port may still be specified
50: at this time; if the port is not specified the system will assign one.
51: Once a connection has been established the socket's address is
52: fixed by the peer entity's location. The address assigned the
53: socket is the address associated with the network interface
54: through which packets are being transmitted and received. Normally
55: this address corresponds to the peer entity's network.
56: .LP
57: If the SOCK_SEQPACKET socket type is specified,
58: each packet received has the actual 12 byte sequenced packet header
59: left for the user to inspect:
60: .nf
61: struct sphdr {
62: u_char sp_cc; /* \fIconnection control\fP */
63: #define SP_EM 0x10 /* \fIend of message\fP */
64: u_char sp_dt; /* \fIdatastream type\fP */
65: u_short sp_sid;
66: u_short sp_did;
67: u_short sp_seq;
68: u_short sp_ack;
69: u_short sp_alo;
70: };
71: .fi
72: This facilitates the implementation of higher level Xerox protocols
73: which make use of the data stream type field and the end of message bit.
74: Conversely, the user is required to supply a 12 byte header,
75: the only part of which inspected is the data stream type and end of message
76: fields.
77: .LP
78: For either socket type,
79: packets received with the Attention bit sent are interpreted as
80: out of band data. Data sent with send(..., ..., ..., MSG_OOB)
81: cause the attention bit to be set.
82: .SH DIAGNOSTICS
83: A socket operation may fail with one of the following errors returned:
84: .TP 20
85: [EISCONN]
86: when trying to establish a connection on a socket which
87: already has one;
88: .TP 20
89: [ENOBUFS]
90: when the system runs out of memory for
91: an internal data structure;
92: .TP 20
93: [ETIMEDOUT]
94: when a connection was dropped
95: due to excessive retransmissions;
96: .TP 20
97: [ECONNRESET]
98: when the remote peer
99: forces the connection to be closed;
100: .TP 20
101: [ECONNREFUSED]
102: when the remote
103: peer actively refuses connection establishment (usually because
104: no process is listening to the port);
105: .TP 20
106: [EADDRINUSE]
107: when an attempt
108: is made to create a socket with a port which has already been
109: allocated;
110: .TP 20
111: [EADDRNOTAVAIL]
112: when an attempt is made to create a
113: socket with a network address for which no network interface
114: exists.
115: .SH SOCKET OPTIONS
116: .TP 20
117: SO_DEFAULT_HEADERS
118: when set, this determines the data stream type and whether
119: the end of message bit is to be set on every ensuing packet.
120: .TP 20
121: SO_MTU
122: This specifies the maximum ammount of user data in a single packet.
123: The default is 576 bytes - sizeof(struct spidp). This quantity
124: affects windowing -- increasing it without increasing the amount
125: of buffering in the socket will lower the number of unread packets
126: accepted. Anything larger than the default will not be forwarded
127: by a bona fide XEROX product internetwork router.
128: The data argument for the setsockopt call must be
129: an unsigned short.
130: .SH SEE ALSO
131: intro(4N), ns(4F)
132: .SH BUGS
133: There should be some way to reflect record boundaries in
134: a stream.
135: For stream mode, there should be an option to get the data stream type of
136: the record the user process is about to receive.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.