summaryrefslogtreecommitdiffstats
path: root/share/doc/iso/wisc/errors.nr
diff options
context:
space:
mode:
Diffstat (limited to 'share/doc/iso/wisc/errors.nr')
-rw-r--r--share/doc/iso/wisc/errors.nr363
1 files changed, 363 insertions, 0 deletions
diff --git a/share/doc/iso/wisc/errors.nr b/share/doc/iso/wisc/errors.nr
new file mode 100644
index 0000000..51b5eb5
--- /dev/null
+++ b/share/doc/iso/wisc/errors.nr
@@ -0,0 +1,363 @@
+.\"$Header: errors.nr,v 1.2 88/12/06 16:06:07 nhall Exp $
+.\"$Source: /usr/argo/doc/kernel/RCS/errors.nr,v $
+.NC "Error Handling"
+This section describes the various ways that the ARGO kernel
+handles errors.
+For the purpose of this description,
+errors are divided into
+three classes : user errors, remote-end errors, and internal errors.
+These three classes of errors and the way
+the ARGO kernel handles them are described below.
+.sh 1 "Network Layer Errors"
+.pp
+The following section describes how errors are handled by CLNP.
+.sh 2 "User Errors"
+.pp
+User errors occur when attempting to send a CLNP packet. These errors
+are reflected back to the caller of \fIclnp_output()\fR as the return value
+of the function. The following table indicates the types of errors possible
+and their associated return codes:
+.(b L
+.TS
+tab(+), expand box;
+l l.
+Problem+Return Code
+=
+Unsupported option selected+EINVAL
+Incorrect address+ENAMETOOLONG
+Insufficient \fImbufs\fR+ENOBUFS
+Can't route packet+ENETUNREACH,EHOSTUNREACH
+Insufficient \fImbufs\fR+ENOBUFS
+.TE
+.)b
+.sh 2 "Remote-end Errors"
+.pp
+An error that occurs as the result of incoming NPDU
+is a remote-end error.
+.pp
+In the case of CONS,
+the majority of these are addressing problems,
+PDN-generated errors (network or gateway congestion, number busy),
+or higher layer negotiation problems.
+All ISO 8208 diagnostic codes that may appear in a call clearing packet
+are passed up to the higher layer.
+Some of the higher layer protocols pass this error indication to the
+user level program as well.
+The CONS statistics that are maintained by the "glue" module
+include counters for each of the possible
+ISO 8208 diagnostic codes seen on incoming packets.
+In addition to these error codes, there are some codes that may appear
+due to device driver problems when an NPDU arrives, for example,
+the driver may run out of buffers.
+All possible errors that may occur in the CONS module are listed
+in the file
+\fC<netargo/iso_errno.h>\fR,
+and the values listed in this file are passed to the user level
+program in the global integer variable \fIerrno\fR.
+The ARGO library
+\fClibisodir.a\fR
+includes an expanded version of
+\fIperror()\fR that interprets these extra values.
+.pp
+In the case of CLNP,
+the most remote-end errors are parsing errors.
+When a remote-end error is discovered, processing of the NPDU stops. The
+NPDU is discarded, and if error reporting is not disabled, and ER NPDU
+is sent back to the source of the offending packet. The following
+tables show the errors that may occur, and the error reason
+that will specified when the ER NPDU is returned.
+.pp
+The following general errors may occur while parsing an NPDU:
+.(b L
+.TS
+tab(+), box, expand;
+l l.
+Problem+Error Reason
+=
+NPDU arrives before interface is configured+ADDR_DESTUNREACH
+Packet too short or too big+GEN_INCOMPLETE
+Protocol identification wrong+GEN_HDRSYNTAX
+Version wrong+DISC_UNSUPPVERS
+Lifetime expired+TTL_EXPTRANSIT
+Incorrect checksum+GEN_BADCSUM
+Address section too short+GEN_INCOMPLETE
+Segment section too short+GEN_INCOMPLETE
+Options section too short+GEN_INCOMPLETE
+Unknown packet type+GEN_HDRSYNTAX
+Can't route packet (forwarding)+ADDR_DESTUNREACH
+.TE
+.)b
+The following errors are related to options processing:
+.(b L
+.TS
+tab(+), box, expand;
+l l.
+Problem+Error Reason
+=
+Duplicate option+GEN_DUPOPT
+Unknown option+DISC_UNSUPPTOPT
+Security format bad+GEN_HDRSYNTAX
+Security option present+DISC_UNSUPPSECURE
+Source route format bad+SRCRT_SYNTAX
+Record route too short+GEN_INCOMPLETE
+Record route format bad+GEN_HDRSYNTAX
+QOS format bad+GEN_HDRSYNTAX
+Priority format bad+GEN_HDRSYNTAX
+Error reason format bad+GEN_HDRSYNTAX
+Error reason on non-ER NPDU+DISC_UNSUPPOPT
+Error reason absent from ER NPDU+GEN_HDRSYNTAX
+.TE
+.)b
+.sh 2 "Internal Errors"
+.pp
+Internal errors occur as a result of a programmer error. These errors
+will result in a kernel \fIpanic()\fR. The following panics have been
+coded into CLNP:
+.(b L
+.TS
+tab(+), box, expand;
+l l.
+\fIPanic()\fR message+Reason
+=
+clnp_init: no raw clnp+The raw clnp protocol is not
++configured into the kernel.
+_
+clnp_srcaddr: ifp does not match interface+The ifp
++passed to \fIclnp_srcaddr()\fR is invalid.
+.TE
+.)b
+.sh 1 "Transport Layer Errors"
+.pp
+.sh 2 "User Errors"
+.pp
+TP handles these errors in the "standard"
+way for 4.3BSD:
+it causes an E\fIxxx\fR error constant (from the
+list in /sys/h/errno.h)
+to be put into the user program's
+global variable \fIerrno\fR.
+In most routines, in particular
+those routines called directly or indirectly
+the by system-call routines,
+this is done
+by simply returning
+this integer value.
+The errors that fall into this category are described
+in the following table:
+.(b L
+.TS
+expand box tab(+);
+l l.
+Error+Meaning
+=
+EAFNOSUPPORT+Attempting to use an address family
+ +other than AF_ISO and AF_INET.
+_
+ENOPROTOOPT+TP was not configured at boot time.
+_
+ESOCKTNOSUPPORT+The given socket type is not supported.
+_
+EPROTOTYPE+Attempting to use an inappropriate transport
+ +class for the network service. (e.g. class 0 over CLNS)
+ +or attempting to use an unknown network service.
+_
+EISCONN+Attempting to perform on a connected socket an action
+ +that is permitted only on unconnected sockets.
+_
+ENOTCONN+Attempting to perform on an unconnected socket an
+ +action that is permitted only on connected sockets.
+_
+EMSGSIZE+Trying to send more data than are permitted on
+ +connect, disconnect, or expedited data PDUs.
+_
+ENOTSOCK+The integer argument passed in the system
+ +call is not a socket descriptor or is a socket but
+ +has no transport pcb.
+_
+EINVAL+Some argument to the system call is invalid.
+_
+EOPNOTSUPP+Some command argument to the system call is invalid
+ +or the operation is not supported.
+_
+EACCES+An unprivileged user tried to use a privileged command.
+_
+ETOOMANYREFS+TP ran out of reference blocks.
+_
+ENOBUFS+TP ran out of memory (mbufs).
+.TE
+.)b
+Errors that should be reported to the user
+by \fIerrno\fR but which occur asynchronously
+are detected by the socket layer when the value
+of the field \fIso_error\fR in the socket
+structure is non-zero.
+This is used to report such errors as
+ECONNRESET,
+ECONNABORTED, and
+ECONNTIMEDOUT, which are really remote-end errors.
+.sh 2 "Remote-end Errors"
+.pp
+An error that occurs is the result of a timer
+or is a result of an
+incoming TPDU
+is a remote-end error.
+The majority of these errors are parsing errors.
+They also include some protocol errors.
+Some of these errors cause the connection to be
+closed locally.
+It is unfortunate that when a connection is closed,
+the kernel will not permit the user program to perform
+anything on the socket in question, so the user cannot
+inquire about the reason for disconnection.
+There is no clean way to pass this information to a
+signal handler either, since the process being signalled
+may be swapped out at the time.
+Some of these errors cause TP to return an ER TPDU
+or a DR TPDU to the sending site.
+Some have no effect on the connection locally.
+These errors and their effects are described below.
+.(b L
+.TS
+expand box tab(+);
+l l l.
+Error+Meaning+Return code or action taken
+=
+Retransmission+The remote end has not responded +ETIMEDOUT
+timeout+to repeated attempts to send.+
+ +This can occur during connection+
+ +or after connection establishment.+
+_
+Inactivity+The remote end has not sent anything +ETIMEDOUT
+timeout+within the last \fIx\fR time, where+
++\fIx\fR is a locally defined+
++large value.+
+_
+Unacceptable+An unacceptable TPDU has arrived, and the+TPDU dropped
+TPDU +remote end can be identified.+possibly DR/ER returned
+_
+DR TPDU+A DR TPDU arrived, with any+Disconnect indication,
+arrived+value in the reason field.+so_error == ECONNRESET
+_
+ER TPDU+An ER TPDU arrived, with any+Disconnect indication,
+arrived+anything in the reason field.+so_error == ECONNABORTED
+.TE
+.)b
+TPDUs may be unacceptable for a variety of reasons:
+.(b L
+.TS
+expand box tab(+);
+l l.
+Problem+Action taken by TP
+=
+No connection at destination+Respond with DR, reason: session entity
+reference or reference frozen+not attached to TSAP
+_
+Invalid destination reference+Respond with DR, reason: mismatched
++references
+_
+Invalid parameter code+Respond with ER, cause: inval. param. code
+_
+Invalid DU type+Respond with ER, cause: invalid TPDU type
+_
+Invalid version number+ Respond with ER, cause: inval. param. code
+_
+Invalid suffix value+Respond with ER, cause: inval. param. value
+_
+Suffix missing or is of+Respond with DR, reason:
+invalid length+header or parameter length invalid
+_
+Invalid checksum+packet discarded
+_
+Can't find a connection+Respond with DR, reason:
+for (dest ref, src ref) pair+mismatched references
+_
+Old ACK TPDU+packet discarded, possibly send ACK w/ FCC
+_
+Class requested isn't supported+Respond with DR, reason: +negotiation failed
+_
+Invalid TPDU size parameter+Respond with ER, cause: inval. param. value
+_
+Illegal amount of data+Respond with DR, reason:
+on CR, CC, DR, or XPD+header or parameter length invalid
+_
+Header length and length+Respond with DR, reason:
+indicator field of TPDU don't agree+header or parameter length invalid
+.TE
+.)b
+.lp
+The file \fC<argo/iso_errno.h>\fR is a list
+of the error codes and diagnostic that can be returned
+from the peer transport entity in a DR TPDU or an ER TPDU,
+and those that can be returned from the CONS, initiated by the DCE,
+the remote DTE, or by the local network adapter.
+These error values are too numerous to list here.
+Most of them are taken from the ISO 8208 standard and the ISO 8073 standard.
+The ARGO distribution contains an expanded form of the BSD library
+routine \fIperror()\fR that prints an error messages for a given
+\fIerrno\fR value.
+.sh 2 "Internal Errors"
+.pp
+Some internal errors are the result of
+a lack of resources such as buffers.
+These are reported to the user with the
+global variable
+\fIerrno\fR
+set to a value from
+\fC<errno.h>\fR.
+The errors that fall into this category are described
+in the following table:
+.(b L
+.TS
+expand box tab(+);
+l l.
+Return code+Problem
+=
+ENOBUFS+TP ran out of mbufs.
+_
+EPROTONOOPT+TP hasn't been configured.
+_
+ETOOMANYREFS+TP ran out of (unfrozen) reference numbers.
+.TE
+.)b
+.pp
+Other
+internal errors are coding errors
+or errors of misinterpretation of a specification.
+They result in the printing of a message on the
+console followed by a system panic.
+The following panics have been coded into TP:
+.(b L
+.TS
+expand box tab(+);
+l l.
+\fIPanic()\fR message+Problem
+=
+tp_emit CR/CC+The length indicator field of a TPDU is longer than the
+ +amount of space in an mbuf; TP is attempting to send a
+ +CR TPDU that is too large (perhaps legal but too large for
+ +this implementation to manage).
+_
+tp_rcvoob: unexpected cluster+An incoming XPD TPDU was put into a cluster
+ +mbuf by a lower layer.
+_
+tp timeout table overflow+The system ran out of structures for TP timers.
+_
+tp: T_DETACH+The connected socket that is being detached has
+ +no parent socket.
+_
+tp_soisdisconnected+The socket head queue is
+ +corrupted.
+_
+tp_soisdisconnecting+The socket head queue is
+ +corrupted.
+_
+tpclnp_input: bad clnp_len +The length parameter passed by clnp
+ +is bad.
+_
+iso_control: SIOCDIFADDR+ioctl() system call passed down
+iso_control: SIOCSIFADDR+a null interface pointer
+_
+sofree dq+The list of socket structures is
+ +is inconsistent.
+.TE
+.)b
OpenPOWER on IntegriCloud