master
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