Commit | Line | Data |
---|---|---|
8ae0e4b4 KM |
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 | * | |
f44e5691 | 6 | * @(#)in.h 6.9 (Berkeley) %G% |
8ae0e4b4 | 7 | */ |
8958351e BJ |
8 | |
9 | /* | |
10 | * Constants and structures defined by the internet system, | |
11 | * Per RFC 790, September 1981. | |
12 | */ | |
13 | ||
14 | /* | |
15 | * Protocols | |
16 | */ | |
55f549b4 | 17 | #define IPPROTO_IP 0 /* dummy for IP */ |
8958351e | 18 | #define IPPROTO_ICMP 1 /* control message protocol */ |
1aa87517 | 19 | #define IPPROTO_GGP 2 /* gateway^2 (deprecated) */ |
8958351e | 20 | #define IPPROTO_TCP 6 /* tcp */ |
c49e68cc | 21 | #define IPPROTO_EGP 8 /* exterior gateway protocol */ |
8958351e BJ |
22 | #define IPPROTO_PUP 12 /* pup */ |
23 | #define IPPROTO_UDP 17 /* user datagram protocol */ | |
55f549b4 | 24 | #define IPPROTO_IDP 22 /* xns idp */ |
8958351e | 25 | |
13ab51b7 | 26 | #define IPPROTO_RAW 255 /* raw IP packet */ |
eb44bfb2 BJ |
27 | #define IPPROTO_MAX 256 |
28 | ||
becdab37 BJ |
29 | |
30 | /* | |
31 | * Ports < IPPORT_RESERVED are reserved for | |
32 | * privileged processes (e.g. root). | |
f44e5691 MK |
33 | * Ports > IPPORT_USERRESERVED are reserved |
34 | * for servers, not necessarily privileged. | |
becdab37 | 35 | */ |
1aa87517 | 36 | #define IPPORT_RESERVED 1024 |
f44e5691 | 37 | #define IPPORT_USERRESERVED 5000 |
1aa87517 | 38 | |
8958351e BJ |
39 | /* |
40 | * Link numbers | |
41 | */ | |
42 | #define IMPLINK_IP 155 | |
43 | #define IMPLINK_LOWEXPER 156 | |
44 | #define IMPLINK_HIGHEXPER 158 | |
45 | ||
46 | /* | |
e4dfb782 | 47 | * Internet address (a structure for historical reasons) |
8958351e | 48 | */ |
2b4b57cd | 49 | struct in_addr { |
e4dfb782 | 50 | u_long s_addr; |
8958351e | 51 | }; |
2b4b57cd | 52 | |
ae34128e | 53 | /* |
a8d3bf7f | 54 | * Definitions of bits in internet address integers. |
14c6a3d7 MK |
55 | * On subnets, the decomposition of addresses to host and net parts |
56 | * is done according to subnet mask, not the masks here. | |
ae34128e | 57 | */ |
6e7edb25 | 58 | #define IN_CLASSA(i) ((((long)(i))&0x80000000)==0) |
a8d3bf7f BJ |
59 | #define IN_CLASSA_NET 0xff000000 |
60 | #define IN_CLASSA_NSHIFT 24 | |
61 | #define IN_CLASSA_HOST 0x00ffffff | |
3adde5ac | 62 | #define IN_CLASSA_MAX 128 |
a8d3bf7f | 63 | |
6e7edb25 | 64 | #define IN_CLASSB(i) ((((long)(i))&0xc0000000)==0x80000000) |
a8d3bf7f BJ |
65 | #define IN_CLASSB_NET 0xffff0000 |
66 | #define IN_CLASSB_NSHIFT 16 | |
67 | #define IN_CLASSB_HOST 0x0000ffff | |
3adde5ac | 68 | #define IN_CLASSB_MAX 65536 |
ae34128e | 69 | |
6e7edb25 | 70 | #define IN_CLASSC(i) ((((long)(i))&0xc0000000)==0xc0000000) |
a8d3bf7f BJ |
71 | #define IN_CLASSC_NET 0xffffff00 |
72 | #define IN_CLASSC_NSHIFT 8 | |
73 | #define IN_CLASSC_HOST 0x000000ff | |
ae34128e | 74 | |
e4dfb782 | 75 | #define INADDR_ANY 0x00000000 |
14c6a3d7 | 76 | #define INADDR_BROADCAST 0xffffffff /* must be masked */ |
3adde5ac | 77 | |
2b4b57cd BJ |
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 | }; | |
eb2e4af9 | 87 | |
55f549b4 MK |
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 | ||
eb2e4af9 BJ |
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 | |
59965020 BJ |
102 | |
103 | #ifdef KERNEL | |
104 | extern struct domain inetdomain; | |
105 | extern struct protosw inetsw[]; | |
e4dfb782 | 106 | struct in_addr in_makeaddr(); |
c28628c9 | 107 | u_long in_netof(); |
59965020 | 108 | #endif |