|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)host.c 4.2 82/11/14"; ! 3: #endif ! 4: ! 5: #include <sys/types.h> ! 6: #include <sys/mbuf.h> ! 7: ! 8: #include <netinet/in.h> ! 9: #include <netimp/if_imp.h> ! 10: #include <netimp/if_imphost.h> ! 11: ! 12: #include <netdb.h> ! 13: ! 14: extern int kmem; ! 15: extern int nflag; ! 16: extern char *inetname(); ! 17: ! 18: /* ! 19: * Print the host tables associated with the ARPANET IMP. ! 20: * Symbolic addresses are shown unless the nflag is given. ! 21: */ ! 22: hostpr(hostsaddr) ! 23: off_t hostsaddr; ! 24: { ! 25: struct mbuf *hosts, mb; ! 26: register struct mbuf *m; ! 27: register struct hmbuf *mh; ! 28: register struct host *hp; ! 29: struct hostent *p; ! 30: char flagbuf[10], *flags; ! 31: int first = 1; ! 32: ! 33: if (hostsaddr == 0) { ! 34: printf("hosts: symbol not in namelist\n"); ! 35: return; ! 36: } ! 37: klseek(kmem, hostsaddr, 0); ! 38: read(kmem, &hosts, sizeof (hosts)); ! 39: m = hosts; ! 40: printf("IMP Host Table\n"); ! 41: printf("%-5.5s %-15.15s %-4.4s %-9.9s %-4.4s %s\n", ! 42: "Flags", "Host", "Qcnt", "Q Address", "RFNM", "Timer"); ! 43: while (m) { ! 44: klseek(kmem, m, 0); ! 45: read(kmem, &mb, sizeof (mb)); ! 46: m = &mb; ! 47: mh = mtod(m, struct hmbuf *); ! 48: if (mh->hm_count == 0) { ! 49: m = m->m_next; ! 50: continue; ! 51: } ! 52: for (hp = mh->hm_hosts; hp < mh->hm_hosts + HPMBUF; hp++) { ! 53: if ((hp->h_flags&HF_INUSE) == 0 && hp->h_timer == 0) ! 54: continue; ! 55: flags = flagbuf; ! 56: *flags++ = hp->h_flags&HF_INUSE ? 'A' : 'F'; ! 57: if (hp->h_flags&HF_DEAD) ! 58: *flags++ = 'D'; ! 59: if (hp->h_flags&HF_UNREACH) ! 60: *flags++ = 'U'; ! 61: *flags = '\0'; ! 62: printf("%-5.5s %-15.15s %-4d %-9x %-4d %d\n", ! 63: flagbuf, ! 64: inetname(hp->h_addr), ! 65: hp->h_qcnt, ! 66: hp->h_q, ! 67: hp->h_rfnm, ! 68: hp->h_timer); ! 69: } ! 70: m = m->m_next; ! 71: } ! 72: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.