|
|
1.1 ! root 1: /* arp.h */ ! 2: ! 3: /* DARPA Internet Address Resolution Protocol (see RFCs 826, 920) */ ! 4: ! 5: #define AR_HRD 1 /* Ethernet hardware type code */ ! 6: #define AR_PROT 0x0800 /* IP protocol address code */ ! 7: #define AR_HLEN 6 /* Ethernet physical address length */ ! 8: #define AR_PLEN 4 /* IP Protocol address length */ ! 9: #define AR_TAB 20 /* size of IP-to-Ether addr. cache (>1) */ ! 10: #define AR_TIME 60 /* time to wait for reply in 1/10 secs */ ! 11: #define AR_RTRY 2 /* num. of times to try an arp request */ ! 12: ! 13: /* Definitions of codes used in operation field of ARP packet */ ! 14: ! 15: #define AR_REQ 1 /* arp request to resolve address */ ! 16: #define AR_RPLY 2 /* reply to a resolve request */ ! 17: #define AR_RREQ 3 /* reverse ARP request (RARP packets) */ ! 18: #define AR_RRLY 4 /* reply to a reverse request (RARP ") */ ! 19: ! 20: struct arppak { /* format of DARPA ARP packet */ ! 21: short ar_hrd; /* type of hardware (Ethernet = 1) */ ! 22: short ar_prot; /* format of proto. address (IP=0x0800) */ ! 23: char ar_hlen; /* hardware address length (6 for Ether)*/ ! 24: char ar_plen; /* protocol address length (4 for IP) */ ! 25: short ar_op; /* arp operation (see list above) */ ! 26: Eaddr ar_sha; /* sender's physical hardware address */ ! 27: IPaddr ar_spa; /* sender's protocol address (IP addr.) */ ! 28: Eaddr ar_tha; /* target's physical hardware address */ ! 29: IPaddr ar_tpa; /* target's protocol address (IP) */ ! 30: }; ! 31: ! 32: /* Format of the IP-to-Ethernet address resolution cache */ ! 33: ! 34: struct arpent { /* format of entry in ARP cache */ ! 35: char arp_state; /* state of this entry (see below) */ ! 36: Eaddr arp_Ead; /* Ethernet address of this host */ ! 37: IPaddr arp_Iad; /* IP address of this host */ ! 38: int arp_dev; /* Xinu device for this host route */ ! 39: }; ! 40: ! 41: /* Definitions of table entry states */ ! 42: ! 43: #define AR_FREE '\0' /* Entry is unused (initial value) */ ! 44: #define AR_ALLOC '\1' /* Entry is used but route still unknown*/ ! 45: #define AR_RGATE '\2' /* Entry is reachable only by gateway */ ! 46: #define AR_RSLVD '\3' /* Entry has been resolved to Eth. addr.*/ ! 47: ! 48: struct arpblk { /* all information about ARP cache */ ! 49: struct arpent arptab[AR_TAB]; /* IP-to-Ethernet address cache */ ! 50: int atabsiz; /* current entries in arptab */ ! 51: int atabnxt; /* next position in arptab to use */ ! 52: int arpsem; /* semaphore for access to ARP service */ ! 53: int arppid; /* id of process waiting for ARP reply */ ! 54: IPaddr arpwant; /* IP addr. process waiting to resolve */ ! 55: int rarppid; /* id of process waiting for RARP reply */ ! 56: int rarpsem; /* semaphore for access to RARP service */ ! 57: }; ! 58: ! 59: extern struct arpblk Arp;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.