|
1 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ |
|
2 /* All Rights Reserved */ |
|
3 |
|
4 /** @file |
|
5 @publishedAll |
|
6 @released |
|
7 */ |
|
8 |
|
9 /* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */ |
|
10 /* The copyright notice above does not evidence any */ |
|
11 /* actual or intended publication of such source code. */ |
|
12 |
|
13 /* |
|
14 * PROPRIETARY NOTICE (Combined) |
|
15 * |
|
16 * This source code is unpublished proprietary information |
|
17 * constituting, or derived under license from AT&T's Unix(r) System V. |
|
18 * In addition, portions of such source code were derived from Berkeley |
|
19 * 4.3 BSD under license from the Regents of the University of |
|
20 * California. |
|
21 * |
|
22 * |
|
23 * |
|
24 * Copyright Notice |
|
25 * |
|
26 * Notice of copyright on this source code product does not indicate |
|
27 * publication. |
|
28 * |
|
29 * (c) 1986,1987,1988,1989 Sun Microsystems, Inc. |
|
30 * (c) 1983,1984,1985,1986,1987,1988,1989 AT&T. |
|
31 * All rights reserved. |
|
32 */ |
|
33 |
|
34 #ifndef _NETINET_ARP_H |
|
35 #define _NETINET_ARP_H |
|
36 |
|
37 #ifdef __cplusplus |
|
38 extern "C" { |
|
39 #endif |
|
40 |
|
41 #include <sys/socket.h> |
|
42 #include <sys/types.h> |
|
43 #include <libc/netinet/net_types.h> |
|
44 /** |
|
45 Address Resolution Protocol. |
|
46 |
|
47 See RFC 826 for protocol description. ARP packets are variable |
|
48 in size; the arphdr structure defines the fixed-length portion. |
|
49 Protocol type values are the same as those for 10 Mb/s Ethernet. |
|
50 It is followed by the variable-sized fields ar_sha, arp_spa, |
|
51 arp_tha and arp_tpa in that order, according to the lengths |
|
52 specified. Field names used correspond to RFC 826. |
|
53 */ |
|
54 struct arphdr { |
|
55 u_short ar_hrd; /* format of hardware address */ |
|
56 #define ARPHRD_ETHER 1 /* ethernet hardware address */ |
|
57 u_short ar_pro; /* format of protocol address */ |
|
58 u_char ar_hln; /* length of hardware address */ |
|
59 u_char ar_pln; /* length of protocol address */ |
|
60 u_short ar_op; /* one of: */ |
|
61 #define ARPOP_REQUEST 1 /* request to resolve address */ |
|
62 #define ARPOP_REPLY 2 /* response to previous request */ |
|
63 #define REVARP_REQUEST 3 /* Reverse ARP request */ |
|
64 #define REVARP_REPLY 4 /* Reverse ARP reply */ |
|
65 /* |
|
66 * The remaining fields are variable in size, |
|
67 * according to the sizes above, and are defined |
|
68 * as appropriate for specific hardware/protocol |
|
69 * combinations. (E.g., see <netinet/if_ether.h>.) |
|
70 */ |
|
71 #ifdef notdef |
|
72 u_char ar_sha[]; /* sender hardware address */ |
|
73 u_char ar_spa[]; /* sender protocol address */ |
|
74 u_char ar_tha[]; /* target hardware address */ |
|
75 u_char ar_tpa[]; /* target protocol address */ |
|
76 #endif /* notdef */ |
|
77 }; |
|
78 |
|
79 /** |
|
80 Ethernet Address Resolution Protocol. |
|
81 |
|
82 See RFC 826 for protocol description. Structure below is adapted |
|
83 to resolving internet addresses. Field names used correspond to |
|
84 RFC 826. |
|
85 */ |
|
86 struct ether_arp { |
|
87 struct arphdr ea_hdr; /* fixed-size header */ |
|
88 struct ether_addr arp_sha; /* sender hardware address */ |
|
89 u_char arp_spa[4]; /* sender protocol address */ |
|
90 struct ether_addr arp_tha; /* target hardware address */ |
|
91 u_char arp_tpa[4]; /* target protocol address */ |
|
92 }; |
|
93 |
|
94 /** |
|
95 ARP ioctl request |
|
96 */ |
|
97 struct arpreq { |
|
98 struct sockaddr arp_pa; /* protocol address */ |
|
99 struct sockaddr arp_ha; /* hardware address */ |
|
100 int arp_flags; /* flags */ |
|
101 }; |
|
102 |
|
103 |
|
104 #ifdef __cplusplus |
|
105 } |
|
106 #endif |
|
107 |
|
108 #endif /* _NETINET_ARP_H */ |