checkpoint at first working tp4 connection; & before gnodes
[unix-history] / usr / src / sys / netinet / in.h
CommitLineData
8ae0e4b4 1/*
0880b18e 2 * Copyright (c) 1982, 1986 Regents of the University of California.
2b6b6284 3 * All rights reserved.
8ae0e4b4 4 *
2b6b6284 5 * Redistribution and use in source and binary forms are permitted
616d42db
KB
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.
2b6b6284 16 *
b4dc7708 17 * @(#)in.h 7.7 (Berkeley) %G%
8ae0e4b4 18 */
8958351e
BJ
19
20/*
21 * Constants and structures defined by the internet system,
22 * Per RFC 790, September 1981.
23 */
24
25/*
26 * Protocols
27 */
55f549b4 28#define IPPROTO_IP 0 /* dummy for IP */
8958351e 29#define IPPROTO_ICMP 1 /* control message protocol */
8114dc67 30#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
8958351e 31#define IPPROTO_TCP 6 /* tcp */
c49e68cc 32#define IPPROTO_EGP 8 /* exterior gateway protocol */
8958351e
BJ
33#define IPPROTO_PUP 12 /* pup */
34#define IPPROTO_UDP 17 /* user datagram protocol */
55f549b4 35#define IPPROTO_IDP 22 /* xns idp */
b4dc7708
KS
36#define IPPROTO_TP 29 /* tp-4 w/ class negotiation */
37#define IPPROTO_EON 80 /* ISO cnlp */
8958351e 38
13ab51b7 39#define IPPROTO_RAW 255 /* raw IP packet */
eb44bfb2
BJ
40#define IPPROTO_MAX 256
41
becdab37
BJ
42
43/*
44 * Ports < IPPORT_RESERVED are reserved for
45 * privileged processes (e.g. root).
f44e5691
MK
46 * Ports > IPPORT_USERRESERVED are reserved
47 * for servers, not necessarily privileged.
becdab37 48 */
1aa87517 49#define IPPORT_RESERVED 1024
f44e5691 50#define IPPORT_USERRESERVED 5000
1aa87517 51
8958351e
BJ
52/*
53 * Link numbers
54 */
55#define IMPLINK_IP 155
56#define IMPLINK_LOWEXPER 156
57#define IMPLINK_HIGHEXPER 158
58
59/*
e4dfb782 60 * Internet address (a structure for historical reasons)
8958351e 61 */
2b4b57cd 62struct in_addr {
e4dfb782 63 u_long s_addr;
8958351e 64};
2b4b57cd 65
ae34128e 66/*
a8d3bf7f 67 * Definitions of bits in internet address integers.
14c6a3d7
MK
68 * On subnets, the decomposition of addresses to host and net parts
69 * is done according to subnet mask, not the masks here.
ae34128e 70 */
8011f5df 71#define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)
a8d3bf7f
BJ
72#define IN_CLASSA_NET 0xff000000
73#define IN_CLASSA_NSHIFT 24
74#define IN_CLASSA_HOST 0x00ffffff
3adde5ac 75#define IN_CLASSA_MAX 128
a8d3bf7f 76
8011f5df 77#define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000)
a8d3bf7f
BJ
78#define IN_CLASSB_NET 0xffff0000
79#define IN_CLASSB_NSHIFT 16
80#define IN_CLASSB_HOST 0x0000ffff
3adde5ac 81#define IN_CLASSB_MAX 65536
ae34128e 82
b4f9e9c7 83#define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000)
a8d3bf7f
BJ
84#define IN_CLASSC_NET 0xffffff00
85#define IN_CLASSC_NSHIFT 8
86#define IN_CLASSC_HOST 0x000000ff
ae34128e 87
b4f9e9c7
MK
88#define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
89#define IN_MULTICAST(i) IN_CLASSD(i)
90
91#define IN_EXPERIMENTAL(i) (((long)(i) & 0xe0000000) == 0xe0000000)
92#define IN_BADCLASS(i) (((long)(i) & 0xf0000000) == 0xf0000000)
93
8011f5df
MK
94#define INADDR_ANY (u_long)0x00000000
95#define INADDR_BROADCAST (u_long)0xffffffff /* must be masked */
b410e761
MK
96#ifndef KERNEL
97#define INADDR_NONE 0xffffffff /* -1 return */
98#endif
3adde5ac 99
b4f9e9c7
MK
100#define IN_LOOPBACKNET 127 /* official! */
101
2b4b57cd
BJ
102/*
103 * Socket address, internet style.
104 */
105struct sockaddr_in {
b4dc7708
KS
106 u_char sin_len;
107 u_char sin_family;
2b4b57cd
BJ
108 u_short sin_port;
109 struct in_addr sin_addr;
110 char sin_zero[8];
111};
eb2e4af9 112
55f549b4
MK
113/*
114 * Options for use with [gs]etsockopt at the IP level.
115 */
116#define IP_OPTIONS 1 /* set/get IP per-packet options */
b4dc7708 117#define IP_HDRINCL 2 /* set/get IP per-packet options */
55f549b4 118
59965020
BJ
119#ifdef KERNEL
120extern struct domain inetdomain;
121extern struct protosw inetsw[];
e4dfb782 122struct in_addr in_makeaddr();
8011f5df 123u_long in_netof(), in_lnaof();
59965020 124#endif