xref: /csrg-svn/sys/deprecated/bbnnet/in.h (revision 25202)
1*25202Skarels /*
2*25202Skarels  * Constants and structures defined by the internet system,
3*25202Skarels  * Per RFC 790, September 1981.
4*25202Skarels  */
5*25202Skarels 
6*25202Skarels /*
7*25202Skarels  * Protocols
8*25202Skarels  */
9*25202Skarels #define	IPPROTO_IP		0		/* dummy for IP */
10*25202Skarels #define	IPPROTO_ICMP		1		/* control message protocol */
11*25202Skarels #define	IPPROTO_GGP		2		/* gateway^2 (deprecated) */
12*25202Skarels #define	IPPROTO_TCP		6		/* tcp */
13*25202Skarels #define	IPPROTO_EGP		8		/* exterior gateway protocol */
14*25202Skarels #define	IPPROTO_PUP		12		/* pup */
15*25202Skarels #define	IPPROTO_UDP		17		/* user datagram protocol */
16*25202Skarels #define IPPROTO_HMP		20		/* host monitoring protocol */
17*25202Skarels #define	IPPROTO_IDP		22		/* xns idp */
18*25202Skarels #define IPPROTO_RDP		27		/* reliabe datagram protocol */
19*25202Skarels 
20*25202Skarels #define	IPPROTO_MAX		256
21*25202Skarels 
22*25202Skarels 
23*25202Skarels /*
24*25202Skarels  * historical and inaccurate.  See protocol .h files if you care
25*25202Skarels  * about reserved ports.
26*25202Skarels  */
27*25202Skarels #define	IPPORT_RESERVED		1024
28*25202Skarels 
29*25202Skarels /*
30*25202Skarels  * Link numbers
31*25202Skarels  */
32*25202Skarels #define	IMPLINK_IP		155
33*25202Skarels #define	IMPLINK_LOWEXPER	156
34*25202Skarels #define	IMPLINK_HIGHEXPER	158
35*25202Skarels 
36*25202Skarels #ifdef when_convince_berk
37*25202Skarels /*
38*25202Skarels  * Internet layers for getsockopt()/setsockopt()
39*25202Skarels  * (gaps left in case we forgot something)
40*25202Skarels  */
41*25202Skarels 
42*25202Skarels #define SOL_INPROTO		2	/* tcp/udp/hmp/rdp */
43*25202Skarels #define SOL_INRAW		4	/* ip */
44*25202Skarels #define SOL_INETHER		6	/* ARP, etc. */
45*25202Skarels #define SOL_INIFADDR		8	/* interface addrs */
46*25202Skarels #endif
47*25202Skarels 
48*25202Skarels /*
49*25202Skarels  * Internet address (a structure for historical reasons)
50*25202Skarels  */
51*25202Skarels struct in_addr {
52*25202Skarels 	u_long s_addr;
53*25202Skarels };
54*25202Skarels 
55*25202Skarels #define	INADDR_ANY	  ((u_long) 0x00000000)
56*25202Skarels #define	INADDR_BROADCAST  ((u_long) 0xffffffff)		/* must be masked */
57*25202Skarels 
58*25202Skarels /*
59*25202Skarels  * Socket address, internet style.
60*25202Skarels  */
61*25202Skarels struct sockaddr_in {
62*25202Skarels 	short	sin_family;
63*25202Skarels 	u_short	sin_port;
64*25202Skarels 	struct	in_addr sin_addr;
65*25202Skarels 	char	sin_zero[8];
66*25202Skarels };
67*25202Skarels 
68*25202Skarels /*
69*25202Skarels  * Options for use with [gs]etsockopt at the IP level.
70*25202Skarels  */
71*25202Skarels #define	IP_OPTIONS	1		/* set/get IP per-packet options */
72*25202Skarels 
73*25202Skarels #if !defined(vax)
74*25202Skarels /*
75*25202Skarels  * Macros for number representation conversion.
76*25202Skarels  */
77*25202Skarels #define	ntohl(x)	(x)
78*25202Skarels #define	ntohs(x)	(x)
79*25202Skarels #define	htonl(x)	(x)
80*25202Skarels #define	htons(x)	(x)
81*25202Skarels #endif
82*25202Skarels 
83*25202Skarels #ifdef KERNEL
84*25202Skarels extern	struct domain inetdomain;
85*25202Skarels extern	struct protosw inetsw[];
86*25202Skarels struct	in_addr in_makeaddr();
87*25202Skarels /*
88*25202Skarels  * Treat a sockaddr as a sockaddr_in, and retrieve the IP address
89*25202Skarels  * associated with it.
90*25202Skarels  */
91*25202Skarels #define satoipa(x) (((struct sockaddr_in *) (x)) ->sin_addr)
92*25202Skarels 
93*25202Skarels #endif
94