Annotation of Net2/arch/i386/netboot/arp.h, revision 1.1

1.1     ! root        1: /* netboot
        !             2:  *
        !             3:  * arp.h,v
        !             4:  * Revision 1.1  1993/07/08  16:03:48  brezak
        !             5:  * Diskless boot prom code from Jim McKim ([email protected])
        !             6:  *
        !             7:  * Revision 1.2  1993/06/30  20:14:12  mckim
        !             8:  * Added BOOTP support.
        !             9:  *
        !            10:  * Revision 1.1.1.1  1993/05/28  11:41:07  mckim
        !            11:  * Initial version.
        !            12:  *
        !            13:  *
        !            14:  * source in this file came from
        !            15:  * the Mach ethernet boot written by Leendert van Doorn.
        !            16:  *
        !            17:  * Ethernet Address Resolution Protocol (see RFC 826)
        !            18:  */
        !            19: 
        !            20: /*
        !            21:  * ARP packets are variable in size; the arphdr_t type defines the
        !            22:  * 10Mb Ethernet variant.  Field names used correspond to RFC 826.
        !            23:  */
        !            24: typedef struct {
        !            25:     u_short    arp_hrd;                /* format of hardware address */
        !            26: #define        ARPHRD_ETHER    1               /* ethernet hardware address */
        !            27:     u_short    arp_pro;                /* format of proto. address  */
        !            28:     u_char     arp_hln;                /* length of hardware address  */
        !            29:     u_char     arp_pln;                /* length of protocol address  */
        !            30:     u_short    arp_op;
        !            31: #define        ARPOP_REQUEST   1               /* request to resolve address */
        !            32: #define        ARPOP_REPLY     2               /* response to previous request */
        !            33: #define        REVARP_REQUEST  3               /* reverse ARP request */
        !            34: #define        REVARP_REPLY    4               /* reverse ARP reply */
        !            35:     u_char     arp_sha[ETH_ADDRSIZE];  /* sender hardware address */
        !            36:     u_char     arp_spa[4];             /* sender protocol address */
        !            37:     u_char     arp_tha[ETH_ADDRSIZE];  /* target hardware address */
        !            38:     u_char     arp_tpa[4];             /* target protocol address */
        !            39: } arphdr_t;
        !            40: 
        !            41: /*
        !            42:  * Internet to hardware address resolution table
        !            43:  */
        !            44: typedef struct {
        !            45:     ipaddr_t   at_ipaddr;              /* internet address */
        !            46:     u_char     at_eaddr[ETH_ADDRSIZE]; /* ethernet address */
        !            47:     u_long     at_timer;               /* time when referenced */
        !            48:     u_char     at_flags;               /* flags */
        !            49:     packet_t   *at_hold;               /* ast packet until resolved/timeout */
        !            50: } arptab_t;
        !            51: 
        !            52: /* at_flags field values */
        !            53: #define        ATF_INUSE       1               /* entry in use */
        !            54: #define ATF_COM                2               /* completed entry (eaddr valid) */
        !            55: 
        !            56: #define        ARPTAB_BSIZ     3               /* bucket size */
        !            57: #define        ARPTAB_NB       2               /* number of buckets */
        !            58: #define        ARPTAB_SIZE     (ARPTAB_BSIZ * ARPTAB_NB)
        !            59: 
        !            60: #define        ARPTAB_HASH(a) \
        !            61:        ((short)((((a) >> 16) ^ (a)) & 0x7fff) % ARPTAB_NB)
        !            62: 
        !            63: #define        ARPTAB_LOOK(at, addr) { \
        !            64:        register n; \
        !            65:        at = &arptab[ARPTAB_HASH(addr) * ARPTAB_BSIZ]; \
        !            66:        for (n = 0; n < ARPTAB_BSIZ; n++, at++) \
        !            67:                if (at->at_ipaddr == addr) \
        !            68:                        break; \
        !            69:        if (n >= ARPTAB_BSIZ) \
        !            70:                at = 0; }
        !            71: 
        !            72: ipaddr_t GetIpAddress(ipaddr_t *server, ipaddr_t *my_addr, ipaddr_t *gateway, char *filename);
        !            73: void ArpInput(packet_t *);
        !            74: int ArpResolve(packet_t *, ipaddr_t, u_char *);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.