|
|
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.