1 /* Nonstandard header */ 2 #ifndef _NET_IF_ARP_H 3 #define _NET_IF_ARP_H 4 #ifdef __cplusplus 5 extern "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 22 struct 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 101 struct 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 109 struct 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 128 struct 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