|
|
1.1 root 1: #include <sys/param.h>
2: #include <sys/types.h>
3: #include <sys/stream.h>
4: #include <nlist.h>
5: #include <stdio.h>
6:
7: struct nlist nl[] = {
8: {"_il", 0},
9: {0, 0},
10: };
11:
12: int kern_fd;
13:
14: main(argc, argv)
15: char *argv[];
16: {
17: char *nuxi, *core;
18: struct block b;
19: struct il{
20: int attached, active, rcvpending;
21: int ipackets, opackets;
22: int ierrors, oerrors;
23: int collisions;
24: int bp;
25: int nbp;
26: int len;
27: int tq;
28: int freebp;
29: unsigned char addr[6];
30: } il;
31:
32: nuxi = "/unix";
33: core = "/dev/kmem";
34: if(argc > 1)
35: nuxi = argv[1];
36: if(argc > 2)
37: core = argv[2];
38: if((kern_fd = open(core, 0)) < 0){
39: perror(core);
40: exit(1);
41: }
42: nlist(nuxi, nl);
43: if(nl[0].n_value == 0){
44: printf("nlist %s error\n", nuxi);
45: exit(1);
46: }
47: if(strcmp(core, "/dev/kmem"))
48: nl[0].n_value &= 0xffffff;
49: lseek(kern_fd, nl[0].n_value, 0);
50: if(read(kern_fd, &il, sizeof(il)) != sizeof(il)){
51: perror("read");
52: exit(1);
53: }
54: printf("%7d input\n", il.ipackets);
55: printf("%7d input errors\n", il.ierrors);
56: printf("%7d output\n", il.opackets);
57: printf("%7d output errors\n", il.oerrors);
58: printf("%7d collisions\n", il.collisions);
59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.