00001 #ifndef ARP_H 00002 #define ARP_H 00003 00004 #include "ether.h" 00005 #include "ip.h" 00006 00007 #define ARP_HTYPE_ETHER 1 00008 #define ARP_PTYPE_IP 0x0800 00009 #define ARP_REQUEST 1 00010 #define ARP_REPLY 2 00011 00012 struct arp_header { 00013 Xuint16 htype; 00014 Xuint16 ptype; 00015 Xuint8 hlen; 00016 Xuint8 plen; 00017 Xuint16 oper; 00018 Xuint8 sha[ETHER_ADDR_LEN]; 00019 Xuint8 spa[IP_ADDR_LEN]; 00020 Xuint8 tha[ETHER_ADDR_LEN]; 00021 Xuint8 tpa[IP_ADDR_LEN]; 00022 }; 00023 00024 #define ARP_HEADER_OFFSET ETHER_PAYLOAD_OFFSET 00025 #define ARP_PACKET_SIZE sizeof(struct ether_header) + sizeof(struct arp_header) 00026 00027 #endif