1/* Nonstandard header */ 2#ifndef _NET_IF_ARP_H 3#define _NET_IF_ARP_H 4#ifdef __cplusplus 5extern "C" { 6#endif 7 8#include <inttypes.h> 9#include <sys/types.h> 10#include <sys/socket.h> 11 12#define MAX_ADDR_LEN 7 13 14#define ARPOP_REQUEST 1 15#define ARPOP_REPLY 2 16#define ARPOP_RREQUEST 3 17#define ARPOP_RREPLY 4 18#define ARPOP_InREQUEST 8 19#define ARPOP_InREPLY 9 20#define ARPOP_NAK 10 21 22struct arphdr { 23 uint16_t ar_hrd; 24 uint16_t ar_pro; 25 uint8_t ar_hln; 26 uint8_t ar_pln; 27 uint16_t ar_op; 28}; 29 30 31#define ARPHRD_NETROM 0 32#define ARPHRD_ETHER 1 33#define ARPHRD_EETHER 2 34#define ARPHRD_AX25 3 35#define ARPHRD_PRONET 4 36#define ARPHRD_CHAOS 5 37#define ARPHRD_IEEE802 6 38#define ARPHRD_ARCNET 7 39#define ARPHRD_APPLETLK 8 40#define ARPHRD_DLCI 15 41#define ARPHRD_ATM 19 42#define ARPHRD_METRICOM 23 43#define ARPHRD_IEEE1394 24 44#define ARPHRD_EUI64 27 45#define ARPHRD_INFINIBAND 32 46#define ARPHRD_SLIP 256 47#define ARPHRD_CSLIP 257 48#define ARPHRD_SLIP6 258 49#define ARPHRD_CSLIP6 259 50#define ARPHRD_RSRVD 260 51#define ARPHRD_ADAPT 264 52#define ARPHRD_ROSE 270 53#define ARPHRD_X25 271 54#define ARPHRD_HWX25 272 55#define ARPHRD_CAN 280 56#define ARPHRD_PPP 512 57#define ARPHRD_CISCO 513 58#define ARPHRD_HDLC ARPHRD_CISCO 59#define ARPHRD_LAPB 516 60#define ARPHRD_DDCMP 517 61#define ARPHRD_RAWHDLC 518 62#define ARPHRD_RAWIP 519 63 64#define ARPHRD_TUNNEL 768 65#define ARPHRD_TUNNEL6 769 66#define ARPHRD_FRAD 770 67#define ARPHRD_SKIP 771 68#define ARPHRD_LOOPBACK 772 69#define ARPHRD_LOCALTLK 773 70#define ARPHRD_FDDI 774 71#define ARPHRD_BIF 775 72#define ARPHRD_SIT 776 73#define ARPHRD_IPDDP 777 74#define ARPHRD_IPGRE 778 75#define ARPHRD_PIMREG 779 76#define ARPHRD_HIPPI 780 77#define ARPHRD_ASH 781 78#define ARPHRD_ECONET 782 79#define ARPHRD_IRDA 783 80#define ARPHRD_FCPP 784 81#define ARPHRD_FCAL 785 82#define ARPHRD_FCPL 786 83#define ARPHRD_FCFABRIC 787 84#define ARPHRD_IEEE802_TR 800 85#define ARPHRD_IEEE80211 801 86#define ARPHRD_IEEE80211_PRISM 802 87#define ARPHRD_IEEE80211_RADIOTAP 803 88#define ARPHRD_IEEE802154 804 89#define ARPHRD_IEEE802154_MONITOR 805 90#define ARPHRD_PHONET 820 91#define ARPHRD_PHONET_PIPE 821 92#define ARPHRD_CAIF 822 93#define ARPHRD_IP6GRE 823 94#define ARPHRD_NETLINK 824 95#define ARPHRD_6LOWPAN 825 96#define ARPHRD_VSOCKMON 826 97 98#define ARPHRD_VOID 0xFFFF 99#define ARPHRD_NONE 0xFFFE 100 101struct arpreq { 102 struct sockaddr arp_pa; 103 struct sockaddr arp_ha; 104 int arp_flags; 105 struct sockaddr arp_netmask; 106 char arp_dev[16]; 107}; 108 109struct arpreq_old { 110 struct sockaddr arp_pa; 111 struct sockaddr arp_ha; 112 int arp_flags; 113 struct sockaddr arp_netmask; 114}; 115 116#define ATF_COM 0x02 117#define ATF_PERM 0x04 118#define ATF_PUBL 0x08 119#define ATF_USETRAILERS 0x10 120#define ATF_NETMASK 0x20 121#define ATF_DONTPUB 0x40 122#define ATF_MAGIC 0x80 123 124#define ARPD_UPDATE 0x01 125#define ARPD_LOOKUP 0x02 126#define ARPD_FLUSH 0x03 127 128struct arpd_request { 129 unsigned short req; 130 uint32_t ip; 131 unsigned long dev; 132 unsigned long stamp; 133 unsigned long updated; 134 unsigned char ha[MAX_ADDR_LEN]; 135}; 136 137 138 139#ifdef __cplusplus 140} 141#endif 142#endif 143