|
|
1.1 root 1: /* */
2: /* if_enp: ACC VERSAbus Ethernet controler (v/eiu) */
3: /* */
4:
5:
6:
7: #include <stdio.h>
8: #include <sys/types.h>
9: #include <sys/socket.h>
10: #include <sys/errno.h>
11:
12: #include <net/if.h>
13: #include <net/netisr.h>
14: #include <net/route.h>
15: #include <netinet/in.h>
16: #include <netinet/ip_var.h>
17: #include <netinet/if_ether.h>
18:
19: #include <machine/mtpr.h>
20: #include <tahoeif/if_enp.h>
21: #include <tahoeif/if_debug.h>
22: #include <sys/buf.h>
23: #include <vba/vbavar.h>
24: #include <nlist.h>
25: #include "nstat.h"
26:
27:
28: struct nlist enperr_nl[] = {
29: # define N_NUMENP 0
30: { "_numenp" },
31: # define N_ENPERR 1
32: { "_enperr" },
33: { "" },
34: };
35:
36: #define NENP 6
37: #define dash "------------------"
38: extern int kmem;
39: extern char *system;
40:
41:
42: enperrors()
43: {
44: int unit;
45:
46: struct inp_err *p, enperr[NENP];
47:
48: off_t numdev_memaddr;
49: off_t enperr_memaddr;
50: int num, Total;
51:
52: static int getvm = 0;
53:
54: if (!getvm) {
55: nlist(system, enperr_nl);
56: getvm = 1;
57: }
58:
59: numdev_memaddr = enperr_nl[N_NUMENP].n_value;
60: enperr_memaddr = enperr_nl[N_ENPERR].n_value;
61:
62:
63: if ( !numdev_memaddr || !enperr_memaddr ) {
64: printf("enperr: symbol not in namelist\n");
65: return;
66: }
67:
68: klseek(kmem, numdev_memaddr, 0);
69: read(kmem, (char *)&num, sizeof (num));
70:
71: if ((num < 0) || (num > NENP)) {
72: printf("enperrors: invalid number of devices (num = %d)\n", num);
73: return;
74: }
75:
76: if (num == 0) {
77: printf("enperrors: no enp (driver) installed.\n");
78: return;
79: }
80:
81: klseek(kmem, enperr_memaddr, 0);
82: read(kmem, enperr, sizeof(struct inp_err)*num);
83:
84: for (unit = 0; unit < num; unit++) {
85: p = &enperr[unit];
86:
87: printf("%s Driver-level input packet errors (%s%d) %s\n",
88: dash, "enp", unit, dash);
89: printf("\t\t\t ( Number of Packets )\n\n");
90: printf("\t\t\t\t No Buffer\n");
91: printf("%s %s %s %s %s %s %s \n\n", "Device",
92: "Bad Offset", "Bad Pkt Length",
93: "Host", "Enp", "Bad Packet Type",
94: "Input Q Full");
95:
96: printf("ENP%d ", unit);
97: printf("%8d", p->bad_offset);
98: printf("%14d", p->bad_length);
99: printf("%10d", p->h_nobuffer);
100: printf("%6d", p->c_nobuffer);
101: printf("%12d", p->bad_packetype);
102: printf("%14d\n", p->inq_full);
103: }
104: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.