xref: /original-bsd/sys/net/if_arp.h (revision 4d072710)
1 /*
2  * Copyright (c) 1986 Regents of the University of California.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms are permitted
6  * provided that the above copyright notice and this paragraph are
7  * duplicated in all such forms and that any documentation,
8  * advertising materials, and other materials related to such
9  * distribution and use acknowledge that the software was developed
10  * by the University of California, Berkeley.  The name of the
11  * University may not be used to endorse or promote products derived
12  * from this software without specific prior written permission.
13  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  *	@(#)if_arp.h	7.3 (Berkeley) 06/27/88
18  */
19 
20 /*
21  * Address Resolution Protocol.
22  *
23  * See RFC 826 for protocol description.  ARP packets are variable
24  * in size; the arphdr structure defines the fixed-length portion.
25  * Protocol type values are the same as those for 10 Mb/s Ethernet.
26  * It is followed by the variable-sized fields ar_sha, arp_spa,
27  * arp_tha and arp_tpa in that order, according to the lengths
28  * specified.  Field names used correspond to RFC 826.
29  */
30 struct	arphdr {
31 	u_short	ar_hrd;		/* format of hardware address */
32 #define ARPHRD_ETHER 	1	/* ethernet hardware address */
33 	u_short	ar_pro;		/* format of protocol address */
34 	u_char	ar_hln;		/* length of hardware address */
35 	u_char	ar_pln;		/* length of protocol address */
36 	u_short	ar_op;		/* one of: */
37 #define	ARPOP_REQUEST	1	/* request to resolve address */
38 #define	ARPOP_REPLY	2	/* response to previous request */
39 /*
40  * The remaining fields are variable in size,
41  * according to the sizes above.
42  */
43 /*	u_char	ar_sha[];	/* sender hardware address */
44 /*	u_char	ar_spa[];	/* sender protocol address */
45 /*	u_char	ar_tha[];	/* target hardware address */
46 /*	u_char	ar_tpa[];	/* target protocol address */
47 };
48 
49 /*
50  * ARP ioctl request
51  */
52 struct arpreq {
53 	struct	sockaddr arp_pa;		/* protocol address */
54 	struct	sockaddr arp_ha;		/* hardware address */
55 	int	arp_flags;			/* flags */
56 };
57 /*  arp_flags and at_flags field values */
58 #define	ATF_INUSE	0x01	/* entry in use */
59 #define ATF_COM		0x02	/* completed entry (enaddr valid) */
60 #define	ATF_PERM	0x04	/* permanent entry */
61 #define	ATF_PUBL	0x08	/* publish entry (respond for other host) */
62 #define	ATF_USETRAILERS	0x10	/* has requested trailers */
63