xref: /third_party/musl/include/net/if_arp.h (revision 570af302)
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