rework data structures to be more flexible about I/O buses
[unix-history] / usr / src / sys / netinet / in.h
CommitLineData
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 49struct 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 */
81struct 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
104extern struct domain inetdomain;
105extern struct protosw inetsw[];
e4dfb782 106struct in_addr in_makeaddr();
c28628c9 107u_long in_netof();
59965020 108#endif