BSD 4_4_Lite2 development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Wed, 30 Nov 1988 03:11:41 +0000 (19:11 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Wed, 30 Nov 1988 03:11:41 +0000 (19:11 -0800)
Work on file usr/src/share/doc/iso/wiscman/cons.4p
Work on file usr/src/share/doc/iso/wiscman/clnp.4p
Work on file usr/src/share/doc/iso/wiscman/iso.4f
Work on file usr/src/share/doc/iso/wiscman/tp.4p

Synthesized-from: CSRG/cd3/4.4BSD-Lite2

usr/src/share/doc/iso/wiscman/clnp.4p [new file with mode: 0644]
usr/src/share/doc/iso/wiscman/cons.4p [new file with mode: 0644]
usr/src/share/doc/iso/wiscman/iso.4f [new file with mode: 0644]
usr/src/share/doc/iso/wiscman/tp.4p [new file with mode: 0644]

diff --git a/usr/src/share/doc/iso/wiscman/clnp.4p b/usr/src/share/doc/iso/wiscman/clnp.4p
new file mode 100644 (file)
index 0000000..07efd1a
--- /dev/null
@@ -0,0 +1,91 @@
+.TH CLNP 4P "9 December 1988"
+.ds ]W Wisconsin ARGO 1.0
+.UC 4
+.SH NAME
+clnp \- Connectionless-Mode Network Protocol
+.SH SYNOPSIS
+.B #include <sys/socket.h>
+.br
+.B #include <netargo/iso.h>
+.br
+.B #include <netargo/clnp.h>
+.PP
+.B s = socket(AF_ISO, SOCK_RAW, 0);
+.SH DESCRIPTION
+CLNP is the connectionless-mode network protocol used by the 
+connectionless-mode network service. This protocol is specified in
+ISO 8473.
+It may be accessed
+through a \*(lqraw socket\*(rq for debugging purposes only.
+CLNP sockets are connectionless,
+and are normally used with the
+.I sendto 
+and
+.I recvfrom 
+calls, though the
+.IR connect (2)
+call may also be used to fix the destination for future
+packets (in which case the 
+.IR read (2)
+or
+.IR recv (2)
+and 
+.IR write (2)
+or
+.IR send (2)
+system calls may be used).
+.PP
+Outgoing packets automatically have a CLNP header prepended to
+them. Incoming packets received by the user contain the full CLNP header.
+The following \fIsetsockopt\fR options apply to CLNP:
+.TP
+CLNPOPT_FLAGS
+Sets the flags which are passed to clnp when sending a datagram.
+Valid flags are:
+.nf
+.br
+CLNP_NO_SEG-Do not allow segmentation
+CLNP_NO_ER-Suppress ER pdus
+CLNP_NO_CKSUM-Do not generate the CLNP checksum
+.br
+.fi
+.TP
+CLNPOPT_OPTS
+Sets CLNP options. The options must be formatted exactly as specified by
+ISO 8473, section 7.5 "Options Part." Once an option has been set, it will
+be sent on all packets until a different option is set.
+.SH DIAGNOSTICS
+A socket operation may fail with one of the following errors returned:
+.TP 15
+[EISCONN]
+when trying to establish a connection on a socket which
+already has one, or when trying to send a datagram with the destination
+address specified and the socket is already connected;
+.TP 15
+[ENOTCONN]
+when trying to send a datagram, but
+no destination address is specified, and the socket hasn't been
+connected;
+.TP 15
+[ENOBUFS]
+when the system runs out of memory for
+an internal data structure;
+.TP 15
+[EADDRNOTAVAIL]
+when an attempt is made to create a 
+socket with a network address for which no network interface
+exists;
+.TP 15
+[EHOSTUNREACH]
+when trying to send a datagram, but no route to the destination
+address exists.
+.TP 15
+[EINVAL]
+when specifying unsupported options.
+.SH SEE ALSO
+send(2), recv(2), intro(4N), iso(4F)
+.SH BUGS
+Packets are sent with the type code of 0x1d (technically an invalid
+packet type) for lack of a better way to identify raw CLNP packets.
+.PP
+No more than MLEN bytes of options can be specified.
diff --git a/usr/src/share/doc/iso/wiscman/cons.4p b/usr/src/share/doc/iso/wiscman/cons.4p
new file mode 100644 (file)
index 0000000..c8b152b
--- /dev/null
@@ -0,0 +1,196 @@
+.TH CONS 4P "9 December 1988"
+.ds ]W Wisconsin ARGO 1.0
+.UC 4
+.SH NAME
+CONS \- Connection Oriented Network Service 
+.SH SYNOPSIS
+For use as a network service (CONS):
+.nf
+.sp
+\fB#include <sys/socket.h>\fR
+\fB#include <sys/mbuf.h>\fR
+\fB#include <netargo/iso.h>\fR
+\fB#include <netargo/cons.h>\fR
+\fB#include <netargo/iso_errno.h>\fR
+.sp
+\fBint cons_output(isop, m, len, isdatagram)\fR
+.sp
+or for use as a subnetwork service (COSNS):
+.sp
+\fB#include <sys/socket.h>\fR
+\fB#include <sys/mbuf.h>\fR
+\fB#include <netargo/iso.h>\fR
+\fB#include <net/if.h>\fR
+\fB#include <netargo/cons.h>\fR
+\fB#include <netargo/iso_errno.h>\fR
+.sp
+\fBint cosns_output(ifp, m, dst)
+.fi
+.SH DESCRIPTION
+.PP
+The Connection Oriented Network Service (CONS) implemented for the AOS R2
+at the University of Wisconsin - Madison
+supports transport protocols, acting as a network service,
+and it also supports other network protocols, acting as a subnetwork
+service or link-layer service.
+Several software modules are combined to provide these services.
+.TP 10
+X.25
+The CCITT X.25 packet layer and link layer protocols run on
+a coprocessor (the EICON Network Adapter), which serves as a DTE.
+.TP 10
+Ecn driver
+A device driver manages the interaction between
+the coprocessor and the PC/RT.
+.TP 10
+CONS "glue"
+A software module implements portions of the OSI CONS (ISO 8878),
+which describes a way to use the X.25 protocols to support the
+OSI connection-oriented network service.
+.PP
+The OSI CONS contains several "service elements"
+that ARGO does not use or support.
+Expedited data,
+quality of service  maintenance, 
+call collision resolution,
+permanent virtual circuits,
+user data on connect and release,
+user-level acknowledgement
+("receipt confirmation" in CCITT/ISO argot), and reset/resynchronize
+are not supported.
+Several of the service primitives for connection establishment
+and release are not supported, and 
+numerous parameters to other primitives specified in the OSI CONS
+are not supported.
+The CONS glue does provide all the support necessary to run
+ISO transport classes 0 and 4 over X.25, and ISO CLNP (also called
+ISO IP) over X.25.
+The subnetwork dependent convergence functions implemented in the glue
+permit interoperability with
+OSINET and EAN at this writing.
+Interoperability with other networks will be established in the future.
+.PP
+The coprocessor that implements the X.25 link and packet layers
+is the Eicon Technologies Access/X.25 Stand-Alone Network Adaper 
+(see \fIecn(4)\fR).
+.PP
+The glue module provides two interfaces to higher layers:
+a "subnetwork service" (COSNS) used by network layer protocols, which
+has a typical BSD kernel device driver interface
+and
+a "network service" (CONS) used by transport protocols, which has
+a procedure call interface similar to that of IP and CLNP.
+.PP
+The network service is reliable and sequenced but does not
+provide a graceful close service; it provides only an abort service.
+.PP
+The subnetwork service is neither reliable nor sequenced.
+The subnetwork service implemented by the glue hides the
+connection-oriented aspects of the protocols; nevertheless, 
+we call it the "connection-oriented subnetwork service" (COSNS)
+here, for lack of a better name.
+.SS "LIBRARIES
+No libraries are needed to use the CONS, however,
+the numerous error values returned by X.25 cannot be accommodated
+by the standard \fIperror()\fR in the C library.
+The ISO library 
+.nf
+.sp
+.in +5
+\fC/usr/argo/lib/libisodir.a\fR
+.in -5
+.sp
+.fi
+provides an expanded perror() to handle the additional error return codes.
+.SS "ERROR VALUES
+.PP
+The error codes returned by the CONS are taken from
+the diagnostic code of the X.25 level 3 packets, as
+descibed in figure 14-B of ISO 8208 (the ISO standard which
+is equivalent to CCITT X.25).
+The actual error value returned in 
+\fIerrno\fR
+is the X.25 diagnostic code in the lower 10 bits
+logically "or"ed with the hexadecimal value 0x8400 (bits
+10 and 15 set, counting from zero at the the least significant bit).
+The error values can be found in 
+the file
+.nf
+.in +5
+.sp
+\fC<netargo/iso_errno.h>\fR
+.sp
+.in -5
+.fi
+.SS "PROTOCOL IDENTIFICATION
+.PP
+The purpose of this section is to describe how incoming packets
+are forwarded from the glue to the various higher
+layers (ISO transport, CLNP), how
+routes are chosen from the higher layers to the glue, and
+how NSAP-addresses are related to all this.
+.SS Outgoing path:
+The ARGO transport entity routes packets either to
+the CONS glue, to the CLNP module, or to the DARPA Internet IP
+module, based on the value of the network service parameter
+given to the transport layer by the user.
+The \fInetserv\fR property of records in the ARGO
+directory service database
+can be used to determine the network service to be used by the
+transport layer.  See also \fIisodir(5)\fR and \fIisodir(3)\fR.
+.PP
+The connectionless network layer entity routes packets to the 
+COSNS based on the routing table entries in the connectionless network layer.
+This means that any type of NSAP-address supported by the kernel
+may be used with a CLNP packet
+that is routed over X.25.
+.PP
+When the glue creates an X.25 Call Request packet, it
+places an X.121 address (DTE address)
+in both the Calling and Called DTE address fields.
+The X.121 addresses are extracted from the \fISNPA cache\fR,
+a table that maps NSAP-addresses to SNPA-addresses, and
+is maintained by the ES-IS protocol module of the OSI network layer.
+In addition to placing a DTE address in the X.25 packet,
+the "glue" may 
+uses the 1984 Called Address Extension facility to convey the 
+NSAP-addresses.
+Whether or not this is done depends on the compile-time option -DX25_1984.
+.SS Incoming path:
+The X.25 Call Request User Data field and the
+1984 X.25 Address Extension Facility are used
+to determing the incoming path through the network layer.
+The NSAP addresses passed up along with the packet are taken from the
+Address Extension facility, if present.
+If the facility is absent, the glue creates two type-37 NSAP-addresses,
+filling in the X.121 address from the called and
+calling DTE-addresses on the Call Request packet, if present.
+The glue then requests of the ES-IS module to add an entry to the 
+SNPA cache to associate the calling DTE address with its 
+derived NSAP-address.
+These cache entries have a holding of 5 minutes, and get
+refreshed as long as there is activity on the virtual circuit
+resulting from the call request.
+.PP
+If a Call Request packet contains a protocol identifier
+as described in ISO PTDR 9577, this protocol identifier is used
+to route the packet to the higher layers.
+If there is no protocol identifier, the higher layer is assumed to be ISO
+transport.
+.SH "BUGS
+.PP
+If an incoming X.25 Call Request contains no DTE-addresses and 
+no NSAP-addresses (in the Address Extension facility)
+the kernel panics.
+.SH "SEE ALSO
+.PP
+isodir(3),
+ecn(4),
+clnp(4),
+tp(4),
+isodir(5),
+isoroute(8),
+ifconfig(8),
+netstat(1),
+xstat(8),
+"ARGO 1.0 Kernel Programmer's Manual"
diff --git a/usr/src/share/doc/iso/wiscman/iso.4f b/usr/src/share/doc/iso/wiscman/iso.4f
new file mode 100644 (file)
index 0000000..5e7ca88
--- /dev/null
@@ -0,0 +1,87 @@
+.TH ISO 4F "9 December 1988"
+.ds ]W Wisconsin ARGO 1.0
+.UC  4
+.SH NAME
+iso \- ISO protocol family
+.SH SYNOPSIS
+.B #include <sys/types.h>
+.br
+.B #include <netargo/iso.h>
+.SH DESCRIPTION
+The ISO protocol family is a collection of protocols
+that uses the ISO address format.
+The ISO family provides protocol support for the
+SOCK_SEQPACKET abstraction through the TP protocol (ISO 8073), 
+and for the SOCK_RAW abstraction
+by providing direct access (for debugging) to the
+CLNP (ISO 8473) network layer protocol.
+.SH ADDRESSING
+ISO addresses are based upon ISO 8348/AD2, 
+"Addendum to the Network Service Definition Covering Network Layer Addressing."
+.PP
+Sockets bound to the OSI protocol family use
+the following address structure:
+.sp 1
+.nf
+._f
+struct sockaddr_iso {
+       short   siso_family;
+       u_short siso_tsuffix;
+       struct  iso_addr siso_addr;
+};
+.sp 1
+.fi
+.PP
+This fields of this structure are:
+.TP 10
+\fIsiso_family:\fR
+Identifies the domain: AF_ISO or AF_INET.
+.TP 10
+\fIsiso_tsuffix:\fR
+The transport part of the address, described below.
+.TP 10
+\fIsiso_addr:\fR
+The network part of the address, described below.
+.SS TRANSPORT ADDRESSING
+.PP
+The above structure describes a simple form of 
+ISO \fItransport\fR addresses.
+An ISO transport address is similar to an Internet address in that
+it contains a network-address portion and a portion that the
+transport layer uses to multiplex its services among clients.
+In the Internet domain, this portion of the address is called a \fIport\fR.
+In the ISO domain, this is called a \fItransport selector\fR
+(also known at one time as a \fItransport suffix\fR).
+While ports are always 16 bits, 
+transport selectors may be
+of (almost) arbitrary size.
+ARGO supports two forms of transport selectors:
+"normal" or 16-bit selectors, and
+"extended" selectors, or selectors that may be from 1-64 bytes
+in length.
+The default mode of operation is to use 16-bit transport selectors.
+These addresses can be represented with the above structure.
+When transport selectors of any other size are used, the transport
+selector is kept in a separate structure.
+See the manual page \fItp(4p)\fR.
+.SS NETWORK ADDRESSING
+.PP
+ISO network addresses are limited to 20 bytes in length.
+ISO network addresses can take any format.
+ARGO 1.0 supports three formats.
+See \fIisodir(3)\fR and \fIisodir(5)\fR.
+.SH PROTOCOLS
+The ARGO 1.0 implementation of the 
+ISO protocol family comprises
+the Connectionless-Mode Network Protocol (CLNP), 
+and the Transport Protocol (TP), classes 4 and 0,
+and X.25.
+TP is used to support the SOCK_SEQPACKET
+abstraction.
+A raw interface to CLNP is available
+by creating an ISO socket of type SOCK_RAW.
+This is used for CLNP debugging only.
+.SH SEE ALSO
+tp(4P), cons(4p), clnp(4P), isodir(3), iso(4f), isodir(5),
+"The ARGO 1.0 Kernel Programmer's Guide",
+"Installing ARGO 1.0 on Academic Operating Systems 4.3 Release 2"
diff --git a/usr/src/share/doc/iso/wiscman/tp.4p b/usr/src/share/doc/iso/wiscman/tp.4p
new file mode 100644 (file)
index 0000000..64dbf2f
--- /dev/null
@@ -0,0 +1,609 @@
+.TH TP 4P "9 December 1988"
+.ds ]W Wisconsin ARGO 1.0
+.UC 4
+.SH NAME
+TP \- ISO Transport Protocol
+.SH SYNOPSIS
+.nf
+\fB#include <sys/socket.h>\fR
+\fB#include <netargo/iso_errno.h>\fR
+\fB#include <netargo/tp_param.h>\fR
+\fB#include <netargo/tp_user.h>\fR
+.PP
+\fBs = socket( [ AF_INET, AF_ISO ] , SOCK_SEQPACKET, 0);\fR
+.SH DESCRIPTION
+.PP
+The ISO Transport Protocol implemented for AOS R2
+at the University of Wisconsin - Madison
+includes classes 0 and 4 
+of the ISO transport protocols
+as specified in
+the September 1984 version of DIS 8073.
+Class 4 of the protocol provides reliable, sequenced,
+flow-controlled, two-way
+transmission of data packets with an alternate stop-and-wait data path called
+the "expedited data" service.
+Class 0 is essentially a null transport protocol, which is used
+when the underlying network service provides reliable, sequenced,
+flow-controlled, two-way data transmission.
+Class 0 does not provide the expedited data service.
+The protocols are implemented as a single transport layer entity 
+that coexists with the Internet protocol suite.
+Class 0 may be used only in the ISO domain.
+Class 4 may be used in the Internet domain as well as in the ISO domain.
+.PP
+The user interface to this protocol is the Berkeley interprocess communication
+interface (see \fIsocket(2)\fR.)
+Two new system calls for sending and receiving
+were added to this interface to
+to permit the support the end-of-transport-service-data-unit (EOTSDU)
+indication. 
+See \fIsendv(2)\fR and \fIrecvv(2)\fR.
+If the EOTSDU is not needed, the Berkeley 4.3BSD interface
+can be used. 
+See \fIsend(2)\fR and \fIrecv(2)\fR.
+.PP
+Through the 
+\fIgetsockopt\fR and \fIsetsockopt\fR
+system calls,
+TP supports several options 
+to control such things as negotiable options
+in the protocol and protocol strategies.
+.\"These system calls are used
+.\"to submit data for inclusion on connect and disconnect TPDUs. 
+The options are defined in \fB<netargo/tp_user.h>\fR,
+and are described below.
+.\".PP
+.\"The options marked with a percent sign ( \fB%\fR )
+.\"are limited to use by the super-user.
+.PP
+In the tables below,
+the options marked with a pound sign ( \fB#\fR )
+may be used 
+with \fIsetsockopt()\fR
+after a connection is established.
+Others must be used before the connection
+is established, in other words,
+before calling
+\fIconnect()\fR or 
+\fIaccept()\fR.
+All options may be used 
+with \fIgetsockopt()\fR
+before or
+after a connection is established.
+.\"
+.\" .PP
+.\" The options marked with an exclamation point ( \fB!\fR )
+.\" may be used after a connection is released,
+.\" but before 
+.\" the TP reference timer (which generally
+.\" has a value in minutes) expires, and before
+.\" a \fIclose()\fR system call.
+.\" In other words, these commands may be used when the peer closes
+.\" a connection (possibly causing a disconnect indication), as long as the command
+.\" is issued "soon" after the disconnection occurred.  
+.\" Disconnect data may be sent by the side initiating the close
+.\" but not by the passive side ("passive" with respect to the closing
+.\" of the connection), so there is no need to read disconnect data
+.\" after calling \fIclose()\fR.
+.\" .PP
+.\" The implementation of data on connect and disconnect is incomplete
+.\" and is not supported.
+.sp 1
+.TP 25
+\fBName\fR
+\fBValue [default]\fR
+.IP
+\fBDescription\fR
+.\".TP 25
+.\"TPOPT_CONN_DATA
+.\"(char *) [none]
+.\".IP
+.\"Data to send on \fIconnect()\fR.
+.\".TP 25
+.\"TPOPT_DISC_DATA\fB # !\fR
+.\"(char *) [none]
+.\".IP
+.\"Data to send on \fIclose()\fR.
+.\".TP 25
+.\"TPOPT_CDDATA_CLEAR\fB #\fR
+.\"No associated value.
+.\".IP
+.\"Erase outgoing connect or disconnect data.
+.TP 25
+TPOPT_MY_TSEL\fB \fR
+1-64 bytes.
+.IP
+An "extended" transport selector (tsel) for this socket.
+This option is used to set or get the local tsel.
+When this option is used to set a tsel, 
+the default the 2-byte tsel
+that may have been allocated by \fIbind()\fR
+is retained, but this "extended" tsel is the
+tsel that is transmitted in a connection request
+When this option is used to get a tsel, 
+it will return whatever transport tsel exists;
+if no "extended" tsel was given to this socket,
+the 2-byte tsel is returned.
+.TP 25
+TPOPT_PEER_TSEL\fB \fR
+1-64 bytes.
+.IP
+An "extended" transport selector (tsel) for the
+peer transport entity.
+This option is used to get the peer's tsel after
+a connection is established. 
+When used before a connection
+is established, this option can set the tsel that
+will be transmitted as the "called" tsel
+in a connection request.
+.TP 25
+TPOPT_PERF_MEAS\fB #\fR
+Boolean.
+.IP
+When \fBtrue\fR, performance measurements will be kept
+for this connection.  
+When set before a connection is established, the
+active side will use a locally defined parameter on the
+connect request packet; if the peer is another ARGO
+implementation, this will cause performance measurement to be
+turned on 
+on the passive side as well.
+See \fItpperf(8)\fR.
+.TP 25
+TPOPT_PSTATISTICS\fB\fR
+No associated value on input.
+On output, struct tp_pmeas.
+.IP
+This command is used to read the performance statistics accumulated
+during a connection's lifetime.
+It can only be used with \fIgetsockopt()\fR.
+The structure it returns is described in \fB<netargo/tp_stat.h>\fR.
+See \fItpperf(8)\fR.
+.TP 25
+TPOPT_FLAGS
+unsigned integer. [ 0x0 ]
+.IP
+This command can only be used with \fIgetsockopt()\fR.
+See the description of the flags below.
+.TP 25
+TPOPT_PARAMS\fB\fR
+struct tp_conn_param.
+.IP
+Used to get or set a group parameters for a connection.
+The struct tp_conn_param is the argument used with the
+\fIgetsockopt()\fR or \fIsetsockopt()\fR system call. 
+It is described in 
+\fB<netargo/tp_user.h>\fR.
+.PP
+The fields of the \fItp_conn_param\fR structure are
+described below.
+.nf
+.sp 1
+\fIValues for TPOPT_PARAMS:\fR
+.fi
+.TP 25
+\fBField\fR
+\fBValue [default]\fR
+.IP
+\fBDescription\fR
+.\" ******************8
+.TP 25
+p_Nretrans
+nonzero short integer [ 1 ]
+.IP
+Number of times a TPDU will be retransmitted before the
+local TP entity closes a connection.
+.\" ******************8
+.TP 25
+p_dr_ticks
+nonzero short integer [ various ]
+.IP
+Number of clock ticks between retransmissions of disconnect request TPDUs.
+.\" ******************8
+.TP 25
+p_dt_ticks
+nonzero short integer [ various ]
+.IP
+Number of clock ticks between retransmissions of data TPDUs.
+This parameter applies only to class 4.
+.\" ******************8
+.TP 25
+p_cr_ticks
+nonzero short integer [ various ]
+.IP
+Number of clock ticks between retransmissions of connection request TPDUs.
+.\" ******************8
+.TP 25
+p_cc_ticks
+nonzero short integer [ various ]
+.IP
+Number of clock ticks between retransmissions of connection confirm TPDUs.
+This parameter applies only to class 4.
+.\" ******************8
+.TP 25
+p_x_ticks
+nonzero short integer [ various ]
+.IP
+Number of clock ticks between retransmissions of expedited data TPDUs.
+This parameter applies only to class 4.
+.\" ******************8
+.TP 25
+p_sendack_ticks
+nonzero short integer [ various ]
+.IP
+Number of clock ticks that the local TP entity
+will wait before sending an acknowledgment for normal data
+(not applicable if the acknowlegement strategy is TPACK_EACH).
+This parameter applies only to class 4.
+.\" ******************8
+.TP 25
+p_ref_ticks
+nonzero short integer [ various ]
+.IP
+Number of clock ticks for which a reference will
+be considered frozen after the connection to which
+it applied is closed.
+This parameter applies to classes 4 and 0 in the 
+ARGO implementation, despite the fact that
+the frozen reference function is required only for
+class 4.
+.\" ******************8
+.TP 25
+p_inact_ticks
+nonzero short integer [ various ]
+.IP
+Number of clock ticks without an incoming packet from the peer after which 
+TP close the connection.
+This parameter applies only to class 4.
+.\" ******************8
+.TP 25
+p_keepalive_ticks
+nonzero short integer [ various ]
+.IP
+nonzero short integer [ various ]
+Number of clock ticks between acknowledgments that are sent
+to keep an inactive connection open (to prevent the peer's
+inactivity control function from closing the connection).
+This parameter applies only to class 4.
+.\" ******************8
+.TP 25
+p_winsize
+short integer between 128 and 16384. [4096 bytes]
+.IP
+The buffer space limits in bytes for incoming and outgoing data.
+There is no way to specify different limits for incoming and outgoing
+paths.
+The actual window size at any time
+during the lifetime of a connection
+is a function of the buffer size limit, the negotiated
+maximum TPDU size, and the 
+rate at which the user program receives data.
+This parameter applies only to class 4.
+.\" ******************8
+.TP 25
+p_tpdusize
+unsigned char between 0x7 and 0xd. 
+[ 0xc for class 4 ] [ 0xb for class 0 ]
+.IP
+Log 2 of the maximum TPDU size to be negotiated.
+The TP standard (ISO 8473) gives an upper bound of 
+0xd for class 4 and 0xb for class 0.
+The ARGO implementation places upper bounds of
+0xc on class 4 and 0xb on class 0.
+.\" ******************8
+.TP 25
+p_ack_strat
+TPACK_EACH or TPACK_WINDOW.  [ TPACK_WINDOW ]
+.IP
+This parameter applies only to class 4.
+Two acknowledgment strategies are supported:
+.IP
+TPACK_EACH means that each data TPDU is acknowledged
+with an AK TPDU.
+.IP
+TPACK_WINDOW
+means that upon receipt of the packet that represents
+the high edge of the last window advertised, and AK TPDU is generated.
+.\" ******************8
+.TP 25
+p_rx_strat
+4 bit mask
+[ TPRX_USE_CW | TPRX_FASTSTART over
+connectionless network protocols ]
+[ TPRX_USE_CW over
+connection-oriented network protocols ]
+.IP
+This parameter applies only to class 4.
+The bit mask may include the following values:
+.IP
+TPRX_EACH: When a retransmission timer expires, retransmit
+each packet in the send window rather than
+just the first unacknowledged packet.
+.IP
+TPRX_USE_CW: Use a "congestion window" strategy borrowed
+from Van Jacobson's congestion window strategy for TCP.
+The congestion window size is set to one whenever
+a retransmission occurs.
+.IP
+TPRX_FASTSTART: Begin sending the maximum amount of data permitted
+by the peer (subject to availability).
+The alternative is to start sending slowly by 
+pretending the peer's window is smaller than it is, and letting
+it slowly grow up to the real peer's window size.
+This is to smooth the effect of new connections on a congested network
+by preventing a transport connection from suddenly 
+overloading the network with a burst of packets.
+This strategy is also due to Van Jacobson.
+.\" ******************8
+.TP 25
+p_class
+5 bit mask
+[ TP_CLASS_4 | TP_CLASS_0 ]
+.IP
+Bit mask including one or both of the values TP_CLASS_4 and TP_CLASS_0.
+The higher class indicated is the preferred class.
+If only one class is indicated, negotiation will not occur
+during connection establishment.
+.\" ******************8
+.TP 25
+p_xtd_format
+Boolean.
+[ false ]
+.IP
+Boolean indicating that extended format shall be negotiated.
+This parameter applies only to class 4.
+.\" ******************8
+.TP 25
+p_xpd_service
+Boolean.
+[ true ]
+.IP
+Boolean indicating that 
+the expedited data transport service will be negotiated.
+This parameter applies only to class 4.
+.\" ******************8
+.TP 25
+p_use_checksum
+Boolean.
+[ true ]
+.IP
+Boolean indicating the the use of checksums will be negotiated.
+This parameter applies only to class 4.
+.\" ******************8
+.TP 25
+p_use_nxpd
+Reserved for future use.
+.\" ******************8
+.TP 25
+p_use_rcc
+Reserved for future use.
+.\" ******************8
+.TP 25
+p_use_efc
+Reserved for future use.
+.\" ******************8
+.TP 25
+p_no_disc_indications
+Boolean.
+[ false ]
+.IP
+Boolean indicating that the local TP entity shall not issue
+indications (signals) when a TP connection is disconnected.
+.\" ******************8
+.TP 25
+p_dont_change_params
+Boolean.
+[ false ]
+.IP
+If \fBtrue\fR the TP entity will not override
+any of the other values given in this structure.
+If the values cannot be used, the TP entity will drop, disconnect,
+or refuse to establish the connection to which this structure pertains.
+.\" ******************8
+.TP 25
+p_netservice
+One of { ISO_CLNS, ISO_CONS, ISO_COSNS, IN_CLNS }.
+[ ISO_CLNS ]
+.IP
+Indicates which network service is to be used.
+.IP
+ISO_CLNS indicates the connectionless network service provided
+by CLNP (ISO 8473).
+.IP
+ISO_CONS indicates the connection-oriented network service provided
+by X.25 (ISO 8208) and ISO 8878.
+.IP
+ISO_COSNS indicates the 
+connectionless network service running over a
+connection-oriented subnetwork service : CLNP (ISO 8473) over X.25 (ISO 8208).
+.IP
+IN_CLNS indicates the 
+DARPA Internet connectionless network service provided by IP (RFC 791).
+.\" ******************8
+.TP 25
+p_dummy
+Reserved for future use.
+.sp 1
+.PP
+The TPOPT_FLAGS option is used for obtaining
+various boolean-valued options.
+Its meaning is as follows.
+The bit numbering used is that of the PC/RT, which means that bit
+0 is the most significant bit, while bit 8 is the least significant bit.
+.nf
+.sp 1
+\fIValues for TPOPT_FLAGS:\fR
+.fi
+.TP 10
+\fBBits\fR
+\fBDescription [Default]\fR
+.TP 10
+0
+TPFLAG_NLQOS_PDN : set when the quality of the 
+network service is
+similar to that of a public data network.
+.TP 10
+1
+TPFLAG_PEER_ON_SAMENET : set when the peer TP entity
+is considered to be on the same network as the local
+TP entity.
+.TP 10
+2
+Not used.
+.TP 10
+3
+TPFLAG_XPD_PRES : set when expedited data are present
+[ 0 ]
+.TP 10
+4..7
+Reserved.
+.\".TP 10
+.\"4
+.\"Reserved.
+.\".TP 10
+.\"5
+.\"TPFLAG_DISC_DATA_IN : read only flag, if set indicates that
+.\"data from a disconnect TPDU are present.
+.\".TP 10
+.\"6
+.\"Reserved.
+.\".TP 10
+.\"7
+.\"TPFLAG_CONN_DATA_IN : read only flag, if set indicates that
+.\"data from a connect TPDU are present.
+.SH "LIBRARIES
+.PP
+The new system calls \fIrecvv\fR and \fIsendv\fR are supported by a
+library, \fIlibtp.a\fR (rather than a modified C library).  
+Also in this
+library are new optional interfaces to the \fIconnect\fR and \fIaccept\fR
+system calls.  See LIBTP(3).
+.SH FILES
+.PP
+The following files in have entries necessary for the correct operation
+of the TP utilities.
+.nf
+\fC
+       /etc/isodir
+       /etc/protocols
+\fR
+.fi
+.PP
+The symbolic link is needed for users to write programs using IPC
+with TP:
+.nf
+\fC
+       /usr/include/netargo@  ->  /sys/netargo
+\fR
+.fi
+.PP
+The following utilities have changed:
+.nf
+       netstat
+       ifconfig
+       config
+.fi
+.PP
+The following are new utilities and daemons:
+.nf
+       isoroute
+       rlogin.iso, rcp.iso, rsh.iso, isod, rlogind
+       tpdiscard
+       tpping
+       tppt (for maintenance and debugging)
+       bark (for maintenance and debugging)
+       tpfileget, tpfileput (for debugging)
+       tpstat, tpmon
+       tpset
+       tppkt
+       viid
+.fi
+.PP
+In the kernel source, many files have changed or been added.
+For a list of these, see the installation guide,
+"Installing Wisconsin ARGO 1.0 on Academic Operating System 4.3
+Release 2".
+.SH "ERROR VALUES
+.PP
+The TP entity returns \fIerrno\fR error values as defined in
+\fB<sys/errno.h>\fR
+and
+\fB<netargo/iso_errno.h>\fR.
+User programs may print messages associated with these value by
+using an expanded version of \fIperror()\fR
+found in the ISO library, \fIlibisodir.a\fR.
+.PP
+If the TP entity encounters asynchronous events
+that will cause a transport connection to be closed,
+such as
+timing out while retransmitting a connect request TPDU,
+or receiving a DR TPDU,
+the TP entity issues a SIGURG signal, indicating that
+disconnection has occurred.
+If the signal is issued during a 
+a system call, the system call may be interrupted,
+in which case the
+\fIerrno\fR value upon return from the system call is EINTR.
+If the signal SIGURG
+is being handled by reading
+from the socket, and it was a \fIaccept()\fR that
+timed out, the read may result in ENOTSOCK,
+because the \fIaccept()\fR call had not yet returned a
+legitimate socket descriptor when the signal was handled.
+ETIMEDOUT (or a some other errno value appropriate to the
+type of error) is returned if SIGURG is blocked
+for the duration of the system call.
+A user program should take one of the following approaches:
+.IP "Block SIGURG." 5
+If the program is servicing
+only one connection, it can block or ignore SIGURG during connection 
+establishment.
+The advantage of this is that the \fIerrno\fR value
+returned is somewhat meaningful.
+The disadvantage of this is that
+if ignored, disconnection and expedited data indications could be
+missed.
+For some programs this is not a problem.
+.IP "Handle SIGURG." 5
+If the program is servicing more than one connection at a time
+or expedited data may arrive or both, the program must
+service SIGURG.
+It can use the \fIgetsockopt(...TPOPT_FLAGS...)\fR system 
+call to see if the signal
+was due to the arrival of expedited data or due to a disconnection.
+In the latter case, 
+\fIgetsockopt()\fR
+will return ENOTCONN.
+.SH BUGS
+.PP
+When running TP over the token ring, if checksumming
+is NOT used, the TP entity sents packets to the lan driver faster than
+the driver can reasonably handle them.
+A bug in the lan driver causes it to reorder the packets in this
+situation, causing an overall degradation of TP performance.
+In general, this is not a problem because very few applications
+will actually be able to send packets this fast.
+Nevertheless,
+in order to prevent this reordering, 
+one may induce a delay in the TP entity by setting the 1-byte
+value
+\fItp_delay\fR
+to 1
+using the debugger.
+Hit the <pause> key, then
+type \fB/b tp_delay\fR followed by the <enter key>.
+The debugger will print the value 00.  
+You then type \fB1\fR followed by the <enter key>.
+Then type \fBend\fR <enter key>.
+Then type \fBgo\fR <enter key>.
+.SH SEE ALSO
+.PP
+tcp(4P), sendv(2), recvv(2), libtp(3),
+isodir(3), isodir(5), netstat(1),
+iso(4F), clnp(4P), viid(8)
+tppt(8), tpstat(8), bark(8), tppkt(8), tpset(8), tpperf(8)
+isoroute(8), ifconfig(8), isod(8), rlogin.iso(1),
+"Installing Wisconsin ARGO 1.0 on Academic Operating System 4.3
+Release 2",
+"ARGO 1.0 Kernel Programmer's Manual"