xref: /csrg-svn/sys/netinet/in.h (revision 26025)
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.9 (Berkeley) 02/01/86
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  * Ports > IPPORT_USERRESERVED are reserved
34  * for servers, not necessarily privileged.
35  */
36 #define	IPPORT_RESERVED		1024
37 #define	IPPORT_USERRESERVED	5000
38 
39 /*
40  * Link numbers
41  */
42 #define	IMPLINK_IP		155
43 #define	IMPLINK_LOWEXPER	156
44 #define	IMPLINK_HIGHEXPER	158
45 
46 /*
47  * Internet address (a structure for historical reasons)
48  */
49 struct in_addr {
50 	u_long s_addr;
51 };
52 
53 /*
54  * Definitions of bits in internet address integers.
55  * On subnets, the decomposition of addresses to host and net parts
56  * is done according to subnet mask, not the masks here.
57  */
58 #define	IN_CLASSA(i)		((((long)(i))&0x80000000)==0)
59 #define	IN_CLASSA_NET		0xff000000
60 #define	IN_CLASSA_NSHIFT	24
61 #define	IN_CLASSA_HOST		0x00ffffff
62 #define	IN_CLASSA_MAX		128
63 
64 #define	IN_CLASSB(i)		((((long)(i))&0xc0000000)==0x80000000)
65 #define	IN_CLASSB_NET		0xffff0000
66 #define	IN_CLASSB_NSHIFT	16
67 #define	IN_CLASSB_HOST		0x0000ffff
68 #define	IN_CLASSB_MAX		65536
69 
70 #define	IN_CLASSC(i)		((((long)(i))&0xc0000000)==0xc0000000)
71 #define	IN_CLASSC_NET		0xffffff00
72 #define	IN_CLASSC_NSHIFT	8
73 #define	IN_CLASSC_HOST		0x000000ff
74 
75 #define	INADDR_ANY		0x00000000
76 #define	INADDR_BROADCAST	0xffffffff		/* must be masked */
77 
78 /*
79  * Socket address, internet style.
80  */
81 struct sockaddr_in {
82 	short	sin_family;
83 	u_short	sin_port;
84 	struct	in_addr sin_addr;
85 	char	sin_zero[8];
86 };
87 
88 /*
89  * Options for use with [gs]etsockopt at the IP level.
90  */
91 #define	IP_OPTIONS	1		/* set/get IP per-packet options */
92 
93 #if !defined(vax)
94 /*
95  * Macros for number representation conversion.
96  */
97 #define	ntohl(x)	(x)
98 #define	ntohs(x)	(x)
99 #define	htonl(x)	(x)
100 #define	htons(x)	(x)
101 #endif
102 
103 #ifdef KERNEL
104 extern	struct domain inetdomain;
105 extern	struct protosw inetsw[];
106 struct	in_addr in_makeaddr();
107 u_long	in_netof();
108 #endif
109