|
|
1.1 root 1: /* D.L.Buck and Associates, Inc. - 8/27/84
2: *
3: * COPYRIGHT NOTICE:
4: * Copyright c 8/27/84 - An unpublished work by
5: * D.L.Buck and Associates, Inc.
6: *
7: * PROPRIETARY RIGHTS NOTICE:
8: * All rights reserved. This document and program contains
9: * proprietary information of D.L.Buck and Associates,Inc.
10: * of San Jose, California, U.S.A., embodying confidential
11: * information, ideas, and expressions, no part of which
12: * may be reproduced, or transmitted in any form or by any
13: * means, electronic, mechanical, or otherwise, without
14: * the written permission of D.L.Buck and Associates, Inc.
15: *
16: * NAME
17: * get_errors
18: *
19: * SYNOPSIS
20: * get_errors()
21: *
22: * DESCRIPTION
23: * get_errors - deal with transmit/receive errors - called from em3280
24: * RETURNS:
25: * 1 for `nasty' errors, 0 for `tame' errors
26: */
27:
28: #include <stdio.h>
29: #include "local.h"
30: #include <bsc/bscio.h>
31: #include <errno.h>
32: #include <empr.h>
33:
34: char *bsc_errlist[] = {
35: "Internal error 0",
36: "Protocol error by remote host ",
37: "RVI abort ",
38: "NBID limit exceeded ",
39: "NNAK limit exceeded ",
40: "NRETRY limit exceeded ",
41: "NTTD limit exceeded ",
42: "NWACK limit exceeded ",
43: "No DSR indication from modem ",
44: "Transmit timeout ",
45: "Idle receive timeout ",
46: "Remote end sent DISC (DLE-EOT) ",
47: "Remote end aborted our sending ",
48: "Remote end aborted their sending ",
49: "Wrong host id ",
50: "Block received in transparent mode (not an error) ",
51: "Block began with SOH (not an error) ",
52: "Line contention (not an error) "
53: };
54:
55: extern struct bscio p;
56: extern int devfd;
57: extern int errno;
58: extern char *sys_errlist[];
59: extern char devname[];
60: extern char note[];
61: #ifndef lint
62: static char sccsid[] = "@(#)emperrs.c 1.4 ";
63: #endif
64:
65: get_errors()
66: {
67:
68: /* check errno for system error */
69: if (errno == EINTR || errno == EINVAL)
70: return 1;
71: if (errno == EAGAIN)
72: return 0;
73: if (errno && errno != EIO) {
74: sprintf(note,"System error: %s",sys_errlist[errno]);
75: fprintf(stderr,"%s\n",note);
76: write_aud("E",note);
77: return 1;
78: }
79: /* do ioctl to get b_flags */
80: ioctl(devfd,BSCGET,&p);
81:
82: switch(p.b_flags) {
83: case BSCPROTO:
84: case BSCRVI:
85: case BSCNBID:
86: case BSCNNAK:
87: case BSCNRETR:
88: case BSCNTTD:
89: case BSCNWACK:
90: case BSCNDSR:
91: case BSCTXTO:
92: case BSCDSC:
93: sprintf(note,"Comm.check: %s",bsc_errlist[p.b_flags]);
94: fprintf(stderr,"%s\n",note);
95: write_aud("E",note);
96: return 1;
97:
98: case BSCRXTO:
99: case BSCRABT:
100: case BSCEEOF:
101: case BSCWHI:
102: case BSCTXP:
103: case BSCBSOH:
104: case BSCONTND:
105: default:
106: return 0;
107: }
108: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.