|
|
Power 6/32 Unix version 1.21
/* */
/* if_enp: ACC VERSAbus Ethernet controler (v/eiu) */
/* */
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/errno.h>
#include <net/if.h>
#include <net/netisr.h>
#include <net/route.h>
#include <netinet/in.h>
#include <netinet/ip_var.h>
#include <netinet/if_ether.h>
#include <machine/mtpr.h>
#include <tahoeif/if_enp.h>
#include <tahoeif/if_debug.h>
#include <sys/buf.h>
#include <vba/vbavar.h>
#include <nlist.h>
#include "nstat.h"
struct nlist enperr_nl[] = {
# define N_NUMENP 0
{ "_numenp" },
# define N_ENPERR 1
{ "_enperr" },
{ "" },
};
#define NENP 6
#define dash "------------------"
extern int kmem;
extern char *system;
enperrors()
{
int unit;
struct inp_err *p, enperr[NENP];
off_t numdev_memaddr;
off_t enperr_memaddr;
int num, Total;
static int getvm = 0;
if (!getvm) {
nlist(system, enperr_nl);
getvm = 1;
}
numdev_memaddr = enperr_nl[N_NUMENP].n_value;
enperr_memaddr = enperr_nl[N_ENPERR].n_value;
if ( !numdev_memaddr || !enperr_memaddr ) {
printf("enperr: symbol not in namelist\n");
return;
}
klseek(kmem, numdev_memaddr, 0);
read(kmem, (char *)&num, sizeof (num));
if ((num < 0) || (num > NENP)) {
printf("enperrors: invalid number of devices (num = %d)\n", num);
return;
}
if (num == 0) {
printf("enperrors: no enp (driver) installed.\n");
return;
}
klseek(kmem, enperr_memaddr, 0);
read(kmem, enperr, sizeof(struct inp_err)*num);
for (unit = 0; unit < num; unit++) {
p = &enperr[unit];
printf("%s Driver-level input packet errors (%s%d) %s\n",
dash, "enp", unit, dash);
printf("\t\t\t ( Number of Packets )\n\n");
printf("\t\t\t\t No Buffer\n");
printf("%s %s %s %s %s %s %s \n\n", "Device",
"Bad Offset", "Bad Pkt Length",
"Host", "Enp", "Bad Packet Type",
"Input Q Full");
printf("ENP%d ", unit);
printf("%8d", p->bad_offset);
printf("%14d", p->bad_length);
printf("%10d", p->h_nobuffer);
printf("%6d", p->c_nobuffer);
printf("%12d", p->bad_packetype);
printf("%14d\n", p->inq_full);
}
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.