xref: /original-bsd/sys/netinet/in.h (revision 2d18f455)
1 /*
2  * Copyright (c) 1982, 1986 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	7.2 (Berkeley) 01/16/87
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		(u_long)0x00000000
76 #define	INADDR_BROADCAST	(u_long)0xffffffff	/* must be masked */
77 #ifndef KERNEL
78 #define	INADDR_NONE		0xffffffff		/* -1 return */
79 #endif
80 
81 /*
82  * Socket address, internet style.
83  */
84 struct sockaddr_in {
85 	short	sin_family;
86 	u_short	sin_port;
87 	struct	in_addr sin_addr;
88 	char	sin_zero[8];
89 };
90 
91 /*
92  * Options for use with [gs]etsockopt at the IP level.
93  */
94 #define	IP_OPTIONS	1		/* set/get IP per-packet options */
95 
96 #ifdef KERNEL
97 extern	struct domain inetdomain;
98 extern	struct protosw inetsw[];
99 struct	in_addr in_makeaddr();
100 u_long	in_netof(), in_lnaof();
101 #endif
102