]>
git.proxmox.com Git - grub2.git/blob - debian/grub-extras/disabled/gpxe/src/include/gpxe/if_arp.h
6 * Address Resolution Protocol constants and types
10 FILE_LICENCE ( GPL2_OR_LATER
);
14 /* ARP protocol HARDWARE identifiers. */
15 #define ARPHRD_NETROM 0 /**< from KA9Q: NET/ROM pseudo */
16 #define ARPHRD_ETHER 1 /**< Ethernet 10Mbps */
17 #define ARPHRD_EETHER 2 /**< Experimental Ethernet */
18 #define ARPHRD_AX25 3 /**< AX.25 Level 2 */
19 #define ARPHRD_PRONET 4 /**< PROnet token ring */
20 #define ARPHRD_CHAOS 5 /**< Chaosnet */
21 #define ARPHRD_IEEE802 6 /**< IEEE 802.2 Ethernet/TR/TB */
22 #define ARPHRD_ARCNET 7 /**< ARCnet */
23 #define ARPHRD_APPLETLK 8 /**< APPLEtalk */
24 #define ARPHRD_DLCI 15 /**< Frame Relay DLCI */
25 #define ARPHRD_ATM 19 /**< ATM */
26 #define ARPHRD_METRICOM 23 /**< Metricom STRIP (new IANA id) */
27 #define ARPHRD_IEEE1394 24 /**< IEEE 1394 IPv4 - RFC 2734 */
28 #define ARPHRD_EUI64 27 /**< EUI-64 */
29 #define ARPHRD_INFINIBAND 32 /**< InfiniBand */
31 /* ARP protocol opcodes. */
32 #define ARPOP_REQUEST 1 /**< ARP request */
33 #define ARPOP_REPLY 2 /**< ARP reply */
34 #define ARPOP_RREQUEST 3 /**< RARP request */
35 #define ARPOP_RREPLY 4 /**< RARP reply */
36 #define ARPOP_InREQUEST 8 /**< InARP request */
37 #define ARPOP_InREPLY 9 /**< InARP reply */
38 #define ARPOP_NAK 10 /**< (ATM)ARP NAK */
43 * This contains only the fixed-size portions of an ARP header; for
44 * other fields use the arp_{sender,target}_{ha,pa} family of
48 /** Link-layer protocol
50 * This is an ARPHRD_XXX constant
53 /** Network-layer protocol
55 * This is, for Ethernet, an ETH_P_XXX constant.
58 /** Link-layer address length */
60 /** Network-layer address length */
64 } __attribute__ (( packed
));
66 /** ARP packet sender hardware address
68 * @v arphdr ARP header
69 * @ret ar_sha Sender hardware address
71 static inline void * arp_sender_ha ( struct arphdr
*arphdr
) {
72 return ( ( ( void * ) arphdr
) + sizeof ( *arphdr
) );
75 /** ARP packet sender protocol address
77 * @v arphdr ARP header
78 * @ret ar_spa Sender protocol address
80 static inline void * arp_sender_pa ( struct arphdr
*arphdr
) {
81 return ( arp_sender_ha ( arphdr
) + arphdr
->ar_hln
);
84 /** ARP packet target hardware address
86 * @v arphdr ARP header
87 * @ret ar_tha Target hardware address
89 static inline void * arp_target_ha ( struct arphdr
*arphdr
) {
90 return ( arp_sender_pa ( arphdr
) + arphdr
->ar_pln
);
93 /** ARP packet target protocol address
95 * @v arphdr ARP header
96 * @ret ar_tpa Target protocol address
98 static inline void * arp_target_pa ( struct arphdr
*arphdr
) {
99 return ( arp_target_ha ( arphdr
) + arphdr
->ar_hln
);
102 #endif /* _GPXE_IF_ARP_H */