From 08106664e35e74d511e05cf9cd24809a30f2818d Mon Sep 17 00:00:00 2001 From: CSRG Date: Tue, 29 Nov 1988 19:11:41 -0800 Subject: [PATCH] BSD 4_4_Lite2 development 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 | 91 ++++ usr/src/share/doc/iso/wiscman/cons.4p | 196 +++++++++ usr/src/share/doc/iso/wiscman/iso.4f | 87 ++++ usr/src/share/doc/iso/wiscman/tp.4p | 609 ++++++++++++++++++++++++++ 4 files changed, 983 insertions(+) create mode 100644 usr/src/share/doc/iso/wiscman/clnp.4p create mode 100644 usr/src/share/doc/iso/wiscman/cons.4p create mode 100644 usr/src/share/doc/iso/wiscman/iso.4f create mode 100644 usr/src/share/doc/iso/wiscman/tp.4p diff --git a/usr/src/share/doc/iso/wiscman/clnp.4p b/usr/src/share/doc/iso/wiscman/clnp.4p new file mode 100644 index 0000000000..07efd1a633 --- /dev/null +++ b/usr/src/share/doc/iso/wiscman/clnp.4p @@ -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 +.br +.B #include +.br +.B #include +.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 index 0000000000..c8b152bef0 --- /dev/null +++ b/usr/src/share/doc/iso/wiscman/cons.4p @@ -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 \fR +\fB#include \fR +\fB#include \fR +\fB#include \fR +\fB#include \fR +.sp +\fBint cons_output(isop, m, len, isdatagram)\fR +.sp +or for use as a subnetwork service (COSNS): +.sp +\fB#include \fR +\fB#include \fR +\fB#include \fR +\fB#include \fR +\fB#include \fR +\fB#include \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\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 index 0000000000..5e7ca88fac --- /dev/null +++ b/usr/src/share/doc/iso/wiscman/iso.4f @@ -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 +.br +.B #include +.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 index 0000000000..64dbf2f73f --- /dev/null +++ b/usr/src/share/doc/iso/wiscman/tp.4p @@ -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 \fR +\fB#include \fR +\fB#include \fR +\fB#include \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\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\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\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\fR +and +\fB\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 key, then +type \fB/b tp_delay\fR followed by the . +The debugger will print the value 00. +You then type \fB1\fR followed by the . +Then type \fBend\fR . +Then type \fBgo\fR . +.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" -- 2.20.1