quick hack
Satz%sri-tsc at sri-unix.UUCP
Satz%sri-tsc at sri-unix.UUCP
Wed Jan 11 17:00:00 AEST 1984
From: Greg Satz <Satz at sri-tsc>
This is a quick hack that might make someone elses life a little easier
also.
/*
A quickie program that snarfs the arp table from the
kernel and prints it out in a decent format.
Greg Satz
Satz at SRI-TSC
*/
#include <a.out.h>
#include <sys/types.h>
#include <net/in.h> /* netinet for 4.2 */
#define ARPTAB_SIZE (19*5)
struct arptab {
struct in_addr at_iaddr;
u_char at_enaddr[6];
struct mbuf *at_hold;
u_char at_timer;
u_char at_flags;
} arptab[ARPTAB_SIZE];
struct nlist nl[] = {
#define N_ARPTAB 0
{ "_arptab"},
0,
};
main()
{
register i;
register kfd;
nlist("/unix", nl);
if (nl[0].n_type == 0) {
printf("no namelist\n");
exit(1);
}
kfd = open("/dev/kmem", 0);
if (kfd < 0) {
printf("can not open kmem\n");
exit(1);
}
lseek(kfd, (off_t)nl[N_ARPTAB].n_value, 0);
read(kfd, arptab, sizeof arptab);
close(kfd);
for(i=0; i < ARPTAB_SIZE; i++)
if (arptab[i].at_flags)
printf("%d: internet %u.%u.%u.%u ethernet %u.%u.%u.%u.%u.%u flags 0%o\n",
i+1,
(unsigned)((arptab[i].at_iaddr.s_addr>>24)&0377),
(unsigned)((arptab[i].at_iaddr.s_addr>>16)&0377),
(unsigned)((arptab[i].at_iaddr.s_addr>>8)&0377),
(unsigned)(arptab[i].at_iaddr.s_addr&0377),
(unsigned) arptab[i].at_enaddr[0],
(unsigned) arptab[i].at_enaddr[1],
(unsigned) arptab[i].at_enaddr[2],
(unsigned) arptab[i].at_enaddr[3],
(unsigned) arptab[i].at_enaddr[4],
(unsigned) arptab[i].at_enaddr[5],
(unsigned) arptab[i].at_flags);
}
More information about the Comp.unix.wizards
mailing list