xref: /csrg-svn/sys/netinet/in.h (revision 24230)
1 /*
2  * Copyright (c) 1982 Regents of the University of California.
3  * All rights reserved.  The Berkeley software License Agreement
4  * specifies the terms and conditions for redistribution.
5  *
6  *	@(#)in.h	6.7 (Berkeley) 08/09/85
7  */
8 
9 /*
10  * Constants and structures defined by the internet system,
11  * Per RFC 790, September 1981.
12  */
13 
14 /*
15  * Protocols
16  */
17 #define	IPPROTO_IP		0		/* dummy for IP */
18 #define	IPPROTO_ICMP		1		/* control message protocol */
19 #define	IPPROTO_GGP		2		/* gateway^2 (deprecated) */
20 #define	IPPROTO_TCP		6		/* tcp */
21 #define	IPPROTO_EGP		8		/* exterior gateway protocol */
22 #define	IPPROTO_PUP		12		/* pup */
23 #define	IPPROTO_UDP		17		/* user datagram protocol */
24 #define	IPPROTO_IDP		22		/* xns idp */
25 
26 #define	IPPROTO_RAW		255		/* raw IP packet */
27 #define	IPPROTO_MAX		256
28 
29 
30 /*
31  * Ports < IPPORT_RESERVED are reserved for
32  * privileged processes (e.g. root).
33  */
34 #define	IPPORT_RESERVED		1024
35 
36 /*
37  * Link numbers
38  */
39 #define	IMPLINK_IP		155
40 #define	IMPLINK_LOWEXPER	156
41 #define	IMPLINK_HIGHEXPER	158
42 
43 /*
44  * Internet address (a structure for historical reasons)
45  */
46 struct in_addr {
47 	u_long s_addr;
48 };
49 
50 /*
51  * Definitions of bits in internet address integers.
52  * On subnets, the decomposition of addresses to host and net parts
53  * is done according to subnet mask, not the masks here.
54  */
55 #define	IN_CLASSA(i)		((((long)(i))&0x80000000)==0)
56 #define	IN_CLASSA_NET		0xff000000
57 #define	IN_CLASSA_NSHIFT	24
58 #define	IN_CLASSA_HOST		0x00ffffff
59 #define	IN_CLASSA_MAX		128
60 
61 #define	IN_CLASSB(i)		((((long)(i))&0xc0000000)==0x80000000)
62 #define	IN_CLASSB_NET		0xffff0000
63 #define	IN_CLASSB_NSHIFT	16
64 #define	IN_CLASSB_HOST		0x0000ffff
65 #define	IN_CLASSB_MAX		65536
66 
67 #define	IN_CLASSC(i)		((((long)(i))&0xc0000000)==0xc0000000)
68 #define	IN_CLASSC_NET		0xffffff00
69 #define	IN_CLASSC_NSHIFT	8
70 #define	IN_CLASSC_HOST		0x000000ff
71 
72 #define	INADDR_ANY		0x00000000
73 #define	INADDR_BROADCAST	0xffffffff		/* must be masked */
74 
75 /*
76  * Socket address, internet style.
77  */
78 struct sockaddr_in {
79 	short	sin_family;
80 	u_short	sin_port;
81 	struct	in_addr sin_addr;
82 	char	sin_zero[8];
83 };
84 
85 /*
86  * Options for use with [gs]etsockopt at the IP level.
87  */
88 #define	IP_OPTIONS	1		/* set/get IP per-packet options */
89 
90 #if !defined(vax)
91 /*
92  * Macros for number representation conversion.
93  */
94 #define	ntohl(x)	(x)
95 #define	ntohs(x)	(x)
96 #define	htonl(x)	(x)
97 #define	htons(x)	(x)
98 #endif
99 
100 #ifdef KERNEL
101 extern	struct domain inetdomain;
102 extern	struct protosw inetsw[];
103 struct	in_addr in_makeaddr();
104 #endif
105