Sync usage with man page.
[netbsd-mini2440.git] / share / doc / iso / wisc / errors.nr
blobe52c89dacff43e88f6a8edb31397c5a78e4ee775
1 .\"     $NetBSD$
2 .\"
3 .\"WISC: Header: errors.nr,v 1.2 88/12/06 16:06:07 nhall Exp $
4 .\"WISC: Source: /usr/argo/doc/kernel/RCS/errors.nr,v $
5 .NC "Error Handling"
6 This section describes the various ways that the ARGO kernel 
7 handles errors.
8 For the purpose of this description,
9 errors are divided into
10 three classes : user errors, remote-end errors, and internal errors.
11 These three classes of errors and the way 
12 the ARGO kernel handles them are described below.
13 .sh 1 "Network Layer Errors"
14 .pp
15 The following section describes how errors are handled by CLNP.
16 .sh 2 "User Errors"
17 .pp
18 User errors occur when attempting to send a CLNP packet. These errors
19 are reflected back to the caller of \fIclnp_output()\fR as the return value
20 of the function. The following table indicates the types of errors possible
21 and their associated return codes:
22 .(b L
23 .TS
24 tab(+), expand box;
25 l l.
26 Problem+Return Code
28 Unsupported option selected+EINVAL
29 Incorrect address+ENAMETOOLONG
30 Insufficient \fImbufs\fR+ENOBUFS
31 Can't route packet+ENETUNREACH,EHOSTUNREACH
32 Insufficient \fImbufs\fR+ENOBUFS
33 .TE
34 .)b
35 .sh 2 "Remote-end Errors"
36 .pp
37 An error that occurs as the result of incoming NPDU
38 is a remote-end error.  
39 .pp
40 In the case of CONS, 
41 the majority of these are addressing problems,
42 PDN-generated errors (network or gateway congestion, number busy),
43 or higher layer negotiation problems.
44 All ISO 8208 diagnostic codes that may appear in a call clearing packet
45 are passed up to the higher layer.
46 Some of the higher layer protocols pass this error indication to the
47 user level program as well.
48 The CONS statistics that are maintained by the "glue" module
49 include counters for each of the possible
50 ISO 8208 diagnostic codes seen on incoming packets.
51 In addition to these error codes, there are some codes that may appear
52 due to device driver problems when an NPDU arrives, for example,
53 the driver may run out of buffers.
54 All possible errors that may occur in the CONS module are listed
55 in the file
56 \fC<netargo/iso_errno.h>\fR,
57 and the values listed in this file are passed to the user level
58 program in the global integer variable \fIerrno\fR.
59 The ARGO library
60 \fClibisodir.a\fR
61 includes an expanded version of
62 \fIperror()\fR that interprets these extra values.
63 .pp
64 In the case of CLNP,
65 the most remote-end errors are parsing errors.
66 When a remote-end error is discovered, processing of the NPDU stops. The
67 NPDU is discarded, and if error reporting is not disabled, and ER NPDU
68 is sent back to the source of the offending packet. The following
69 tables show the errors that may occur, and the error reason 
70 that will specified when the ER NPDU is returned.
71 .pp
72 The following general errors may occur while parsing an NPDU:
73 .(b L
74 .TS
75 tab(+), box, expand;
76 l l.
77 Problem+Error Reason
79 NPDU arrives before interface is configured+ADDR_DESTUNREACH
80 Packet too short or too big+GEN_INCOMPLETE
81 Protocol identification wrong+GEN_HDRSYNTAX
82 Version wrong+DISC_UNSUPPVERS
83 Lifetime expired+TTL_EXPTRANSIT
84 Incorrect checksum+GEN_BADCSUM
85 Address section too short+GEN_INCOMPLETE
86 Segment section too short+GEN_INCOMPLETE
87 Options section too short+GEN_INCOMPLETE
88 Unknown packet type+GEN_HDRSYNTAX
89 Can't route packet (forwarding)+ADDR_DESTUNREACH
90 .TE
91 .)b
92 The following errors are related to options processing:
93 .(b L
94 .TS
95 tab(+), box, expand;
96 l l.
97 Problem+Error Reason
99 Duplicate option+GEN_DUPOPT
100 Unknown option+DISC_UNSUPPTOPT
101 Security format bad+GEN_HDRSYNTAX
102 Security option present+DISC_UNSUPPSECURE
103 Source route format bad+SRCRT_SYNTAX
104 Record route too short+GEN_INCOMPLETE
105 Record route format bad+GEN_HDRSYNTAX
106 QOS format bad+GEN_HDRSYNTAX
107 Priority format bad+GEN_HDRSYNTAX
108 Error reason format bad+GEN_HDRSYNTAX
109 Error reason on non-ER NPDU+DISC_UNSUPPOPT
110 Error reason absent from ER NPDU+GEN_HDRSYNTAX
113 .sh 2 "Internal Errors"
115 Internal errors occur as a result of a programmer error. These errors
116 will result in a kernel \fIpanic()\fR. The following panics have been
117 coded into CLNP:
118 .(b L
120 tab(+), box, expand;
121 l l.
122 \fIPanic()\fR message+Reason
124 clnp_init: no raw clnp+The raw clnp protocol is not
125 +configured into the kernel.
127 clnp_srcaddr: ifp does not match interface+The ifp
128 +passed to \fIclnp_srcaddr()\fR is invalid.
131 .sh 1 "Transport Layer Errors"
133 .sh 2 "User Errors"
135 TP handles these errors in the "standard"
136 way for 4.3BSD:
137 it causes an E\fIxxx\fR error constant (from the
138 list in /sys/h/errno.h)
139 to be put into the user program's
140 global variable \fIerrno\fR.
141 In most routines, in particular
142 those routines called directly or indirectly
143 the by system-call routines,
144 this is done
145 by simply returning
146 this integer value. 
147 The errors that fall into this category are described
148 in the following table:
149 .(b L
151 expand box tab(+);
152 l l.
153 Error+Meaning
155 EAFNOSUPPORT+Attempting to use an address family
156  +other than AF_ISO and AF_INET.
158 ENOPROTOOPT+TP was not configured at boot time.
160 ESOCKTNOSUPPORT+The given socket type is not supported.
162 EPROTOTYPE+Attempting to use an inappropriate transport
163  +class for the network service. (e.g. class 0 over CLNS)
164  +or attempting to use an unknown network service.
166 EISCONN+Attempting to perform on a connected socket an action 
167  +that is permitted only on unconnected sockets.
169 ENOTCONN+Attempting to perform on an unconnected socket an
170  +action that is permitted only on connected sockets.
172 EMSGSIZE+Trying to send more data than are permitted on 
173  +connect, disconnect, or expedited data PDUs.
175 ENOTSOCK+The integer argument passed in the system
176  +call is not a socket descriptor or is a socket but
177  +has no transport pcb.
179 EINVAL+Some argument to the system call is invalid.
181 EOPNOTSUPP+Some command argument to the system call is invalid
182  +or the operation is not supported.
184 EACCES+An unprivileged user tried to use a privileged command.
186 ETOOMANYREFS+TP ran out of reference blocks.
188 ENOBUFS+TP ran out of memory (mbufs).
191 Errors that should be reported to the user
192 by \fIerrno\fR but which occur asynchronously
193 are detected by the socket layer when the value
194 of the field \fIso_error\fR in the socket
195 structure is non-zero.
196 This is used to report such errors as 
197 ECONNRESET,
198 ECONNABORTED, and
199 ECONNTIMEDOUT, which are really remote-end errors.
200 .sh 2 "Remote-end Errors"
202 An error that occurs is the result of a timer
203 or is a result of an 
204 incoming TPDU
205 is a remote-end error.
206 The majority of these errors are parsing errors.
207 They also include some protocol errors.
208 Some of these errors cause the connection to be
209 closed locally.
210 It is unfortunate that when a connection is closed,
211 the kernel will not permit the user program to perform
212 anything on the socket in question, so the user cannot
213 inquire about the reason for disconnection.
214 There is no clean way to pass this information to a
215 signal handler either, since the process being signalled
216 may be swapped out at the time.
217 Some of these errors cause TP to return an ER TPDU
218 or a DR TPDU to the sending site.
219 Some have no effect on the connection locally.
220 These errors and their effects are described below.
221 .(b L
223 expand box tab(+);
224 l l l.
225 Error+Meaning+Return code or action taken
227 Retransmission+The remote end has not responded +ETIMEDOUT
228 timeout+to repeated attempts to send.+ 
229  +This can occur during connection+ 
230  +or after connection establishment.+ 
232 Inactivity+The remote end has not sent anything +ETIMEDOUT
233 timeout+within the last \fIx\fR time, where+
234 +\fIx\fR is a locally defined+
235 +large value.+ 
237 Unacceptable+An unacceptable TPDU has arrived, and the+TPDU dropped
238 TPDU +remote end can be identified.+possibly DR/ER returned
240 DR TPDU+A DR TPDU arrived, with any+Disconnect indication,
241 arrived+value in the reason field.+so_error == ECONNRESET
243 ER TPDU+An ER TPDU arrived, with any+Disconnect indication,
244 arrived+anything in the reason field.+so_error == ECONNABORTED
247 TPDUs may be unacceptable for a variety of reasons:
248 .(b L
250 expand box tab(+);
251 l l.
252 Problem+Action taken by TP
254 No connection at destination+Respond with DR, reason: session entity
255 reference or reference frozen+not attached to TSAP
257 Invalid destination reference+Respond with DR, reason: mismatched 
258 +references
260 Invalid parameter code+Respond with ER, cause: inval. param. code
262 Invalid DU type+Respond with ER, cause: invalid TPDU type
264 Invalid version number+ Respond with ER, cause: inval. param. code
266 Invalid suffix value+Respond with ER, cause: inval. param. value
268 Suffix missing or is of+Respond with DR, reason:
269 invalid length+header or parameter length invalid
271 Invalid checksum+packet discarded
273 Can't find a connection+Respond with DR, reason:
274 for (dest ref, src ref) pair+mismatched references
276 Old ACK TPDU+packet discarded, possibly send ACK w/ FCC
278 Class requested isn't supported+Respond with DR, reason: +negotiation failed
280 Invalid TPDU size parameter+Respond with ER, cause: inval. param. value
282 Illegal amount of data+Respond with DR, reason:
283 on CR, CC, DR, or XPD+header or parameter length invalid
285 Header length and length+Respond with DR, reason:
286 indicator field of TPDU don't agree+header or parameter length invalid
290 The file \fC<argo/iso_errno.h>\fR is a list
291 of the error codes and diagnostic that can be returned
292 from the peer transport entity in a DR TPDU or an ER TPDU,
293 and those that can be returned from the CONS, initiated by the DCE,
294 the remote DTE, or by the local network adapter.
295 These error values are too numerous to list here.
296 Most of them are taken from the ISO 8208 standard and the ISO 8073 standard.
297 The ARGO distribution contains an expanded form of the BSD library
298 routine \fIperror()\fR that prints an error messages for a given
299 \fIerrno\fR value.
300 .sh 2 "Internal Errors"
302 Some internal errors are the result of 
303 a lack of resources such as buffers.
304 These are reported to the user with the
305 global variable
306 \fIerrno\fR
307 set to a value from
308 \fC<errno.h>\fR.
309 The errors that fall into this category are described
310 in the following table:
311 .(b L
313 expand box tab(+);
314 l l.
315 Return code+Problem
317 ENOBUFS+TP ran out of mbufs.
319 EPROTONOOPT+TP hasn't been configured.
321 ETOOMANYREFS+TP ran out of (unfrozen) reference numbers.
325 Other
326 internal errors are coding errors
327 or errors of misinterpretation of a specification.
328 They result in the printing of a message on the 
329 console followed by a system panic.
330 The following panics have been coded into TP:
331 .(b L
333 expand box tab(+);
334 l l.
335 \fIPanic()\fR message+Problem
337 tp_emit CR/CC+The length indicator field of a TPDU is longer than the
338  +amount of space in an mbuf; TP is attempting to send a
339  +CR TPDU that is too large (perhaps legal but too large for 
340  +this implementation to manage).
342 tp_rcvoob: unexpected cluster+An incoming XPD TPDU was put into a cluster 
343  +mbuf by a lower layer.
345 tp timeout table overflow+The system ran out of structures for TP timers.
347 tp: T_DETACH+The connected socket that is being detached has 
348  +no parent socket.
350 tp_soisdisconnected+The socket head queue is 
351  +corrupted.
353 tp_soisdisconnecting+The socket head queue is 
354  +corrupted.
356 tpclnp_input: bad clnp_len +The length parameter passed by clnp
357  +is bad.
359 iso_control: SIOCDIFADDR+ioctl() system call passed down
360 iso_control: SIOCSIFADDR+a null interface pointer
362 sofree dq+The list of socket structures is
363  +is inconsistent.