|
|
1.1 root 1: /*
2: * Copyright (c) 1982, 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: * @(#)in.h 7.6 (Berkeley) 6/29/88
18: */
19:
20: /*
21: * Constants and structures defined by the internet system,
22: * Per RFC 790, September 1981.
23: */
24:
25: /*
26: * Protocols
27: */
28: #define IPPROTO_IP 0 /* dummy for IP */
29: #define IPPROTO_ICMP 1 /* control message protocol */
30: #define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
31: #define IPPROTO_TCP 6 /* tcp */
32: #define IPPROTO_EGP 8 /* exterior gateway protocol */
33: #define IPPROTO_PUP 12 /* pup */
34: #define IPPROTO_UDP 17 /* user datagram protocol */
35: #define IPPROTO_IDP 22 /* xns idp */
36:
37: #define IPPROTO_RAW 255 /* raw IP packet */
38: #define IPPROTO_MAX 256
39:
40:
41: /*
42: * Ports < IPPORT_RESERVED are reserved for
43: * privileged processes (e.g. root).
44: * Ports > IPPORT_USERRESERVED are reserved
45: * for servers, not necessarily privileged.
46: */
47: #define IPPORT_RESERVED 1024
48: #define IPPORT_USERRESERVED 5000
49:
50: /*
51: * Link numbers
52: */
53: #define IMPLINK_IP 155
54: #define IMPLINK_LOWEXPER 156
55: #define IMPLINK_HIGHEXPER 158
56:
57: /*
58: * Internet address (a structure for historical reasons)
59: */
60: struct in_addr {
61: u_long s_addr;
62: };
63:
64: /*
65: * Definitions of bits in internet address integers.
66: * On subnets, the decomposition of addresses to host and net parts
67: * is done according to subnet mask, not the masks here.
68: */
69: #define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)
70: #define IN_CLASSA_NET 0xff000000
71: #define IN_CLASSA_NSHIFT 24
72: #define IN_CLASSA_HOST 0x00ffffff
73: #define IN_CLASSA_MAX 128
74:
75: #define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000)
76: #define IN_CLASSB_NET 0xffff0000
77: #define IN_CLASSB_NSHIFT 16
78: #define IN_CLASSB_HOST 0x0000ffff
79: #define IN_CLASSB_MAX 65536
80:
81: #define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000)
82: #define IN_CLASSC_NET 0xffffff00
83: #define IN_CLASSC_NSHIFT 8
84: #define IN_CLASSC_HOST 0x000000ff
85:
86: #define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
87: #define IN_MULTICAST(i) IN_CLASSD(i)
88:
89: #define IN_EXPERIMENTAL(i) (((long)(i) & 0xe0000000) == 0xe0000000)
90: #define IN_BADCLASS(i) (((long)(i) & 0xf0000000) == 0xf0000000)
91:
92: #define INADDR_ANY (u_long)0x00000000
93: #define INADDR_BROADCAST (u_long)0xffffffff /* must be masked */
94: #ifndef KERNEL
95: #define INADDR_NONE 0xffffffff /* -1 return */
96: #endif
97:
98: #define IN_LOOPBACKNET 127 /* official! */
99:
100: /*
101: * Socket address, internet style.
102: */
103: struct sockaddr_in {
104: short sin_family;
105: u_short sin_port;
106: struct in_addr sin_addr;
107: char sin_zero[8];
108: };
109:
110: /*
111: * Options for use with [gs]etsockopt at the IP level.
112: */
113: #define IP_OPTIONS 1 /* set/get IP per-packet options */
114:
115: #ifdef KERNEL
116: extern struct domain inetdomain;
117: extern struct protosw inetsw[];
118: struct in_addr in_makeaddr();
119: u_long in_netof(), in_lnaof();
120: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.