1 /* Nonstandard header */
2 
3 #pragma once
4 
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8 
9 #include <inttypes.h>
10 #include <sys/socket.h>
11 #include <sys/types.h>
12 
13 #define MAX_ADDR_LEN 7
14 
15 #define ARPOP_REQUEST 1
16 #define ARPOP_REPLY 2
17 #define ARPOP_RREQUEST 3
18 #define ARPOP_RREPLY 4
19 #define ARPOP_InREQUEST 8
20 #define ARPOP_InREPLY 9
21 #define ARPOP_NAK 10
22 
23 struct arphdr {
24     uint16_t ar_hrd;
25     uint16_t ar_pro;
26     uint8_t ar_hln;
27     uint8_t ar_pln;
28     uint16_t ar_op;
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 
63 #define ARPHRD_TUNNEL 768
64 #define ARPHRD_TUNNEL6 769
65 #define ARPHRD_FRAD 770
66 #define ARPHRD_SKIP 771
67 #define ARPHRD_LOOPBACK 772
68 #define ARPHRD_LOCALTLK 773
69 #define ARPHRD_FDDI 774
70 #define ARPHRD_BIF 775
71 #define ARPHRD_SIT 776
72 #define ARPHRD_IPDDP 777
73 #define ARPHRD_IPGRE 778
74 #define ARPHRD_PIMREG 779
75 #define ARPHRD_HIPPI 780
76 #define ARPHRD_ASH 781
77 #define ARPHRD_ECONET 782
78 #define ARPHRD_IRDA 783
79 #define ARPHRD_FCPP 784
80 #define ARPHRD_FCAL 785
81 #define ARPHRD_FCPL 786
82 #define ARPHRD_FCFABRIC 787
83 #define ARPHRD_IEEE802_TR 800
84 #define ARPHRD_IEEE80211 801
85 #define ARPHRD_IEEE80211_PRISM 802
86 #define ARPHRD_IEEE80211_RADIOTAP 803
87 #define ARPHRD_IEEE802154 804
88 #define ARPHRD_IEEE802154_MONITOR 805
89 #define ARPHRD_PHONET 820
90 #define ARPHRD_PHONET_PIPE 821
91 #define ARPHRD_CAIF 822
92 #define ARPHRD_IP6GRE 823
93 #define ARPHRD_NETLINK 824
94 
95 #define ARPHRD_VOID 0xFFFF
96 #define ARPHRD_NONE 0xFFFE
97 
98 struct arpreq {
99     struct sockaddr arp_pa;
100     struct sockaddr arp_ha;
101     int arp_flags;
102     struct sockaddr arp_netmask;
103     char arp_dev[16];
104 };
105 
106 struct arpreq_old {
107     struct sockaddr arp_pa;
108     struct sockaddr arp_ha;
109     int arp_flags;
110     struct sockaddr arp_netmask;
111 };
112 
113 #define ATF_COM 0x02
114 #define ATF_PERM 0x04
115 #define ATF_PUBL 0x08
116 #define ATF_USETRAILERS 0x10
117 #define ATF_NETMASK 0x20
118 #define ATF_DONTPUB 0x40
119 #define ATF_MAGIC 0x80
120 
121 #define ARPD_UPDATE 0x01
122 #define ARPD_LOOKUP 0x02
123 #define ARPD_FLUSH 0x03
124 
125 struct arpd_request {
126     unsigned short req;
127     uint32_t ip;
128     unsigned long dev;
129     unsigned long stamp;
130     unsigned long updated;
131     unsigned char ha[MAX_ADDR_LEN];
132 };
133 
134 #ifdef __cplusplus
135 }
136 #endif
137