|
|
1.1 root 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.1 (Berkeley) 6/5/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 (u_long)0x00000000
76: #define INADDR_BROADCAST (u_long)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) && !defined(ntohl) && !defined(lint)
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: #if !defined(ntohl) && (defined(vax) || defined(lint))
104: u_short ntohs(), htons();
105: u_long ntohl(), htonl();
106: #endif
107:
108: #ifdef KERNEL
109: extern struct domain inetdomain;
110: extern struct protosw inetsw[];
111: struct in_addr in_makeaddr();
112: u_long in_netof(), in_lnaof();
113: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.