source: vendor/emx/current/include/netinet/ip.h

Last change on this file was 18, checked in by bird, 23 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 6.4 KB
Line 
1/* Modified for emx by hv 1994,1996
2 *
3 * Copyright (c) 1982, 1986 Regents of the University of California.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software
15 * must display the following acknowledgement:
16 * This product includes software developed by the University of
17 * California, Berkeley and its contributors.
18 * 4. Neither the name of the University nor the names of its contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * from: @(#)ip.h 7.10 (Berkeley) 6/28/90
35 * $Id: ip.h,v 1.4 1994/01/08 21:21:44 mycroft Exp $
36 */
37
38#ifndef _NETINET_IP_H_
39#define _NETINET_IP_H_
40
41#ifdef __EMX__
42#include <machine/endian.h>
43#endif /* __EMX__ */
44
45/*
46 * Definitions for internet protocol version 4.
47 * Per RFC 791, September 1981.
48 */
49#define IPVERSION 4
50
51/*
52 * Structure of an internet header, naked of options.
53 *
54 * We declare ip_len and ip_off to be short, rather than u_short
55 * pragmatically since otherwise unsigned comparisons can result
56 * against negative integers quite easily, and fail in subtle ways.
57 */
58struct ip {
59#if BYTE_ORDER == LITTLE_ENDIAN
60 u_char ip_hl:4, /* header length */
61 ip_v:4; /* version */
62#endif
63#if BYTE_ORDER == BIG_ENDIAN
64 u_char ip_v:4, /* version */
65 ip_hl:4; /* header length */
66#endif
67 u_char ip_tos; /* type of service */
68 short ip_len; /* total length */
69 u_short ip_id; /* identification */
70 short ip_off; /* fragment offset field */
71#define IP_DF 0x4000 /* dont fragment flag */
72#define IP_MF 0x2000 /* more fragments flag */
73 u_char ip_ttl; /* time to live */
74 u_char ip_p; /* protocol */
75 u_short ip_sum; /* checksum */
76 struct in_addr ip_src,ip_dst; /* source and dest address */
77};
78
79#define IP_MAXPACKET 32767 /* OS2 maximum packet size */
80
81/*
82 * Definitions for IP type of service (ip_tos)
83 */
84#define IPTOS_LOWDELAY 0x10
85#define IPTOS_THROUGHPUT 0x08
86#define IPTOS_RELIABILITY 0x04
87
88/*
89 * Definitions for IP precedence (also in ip_tos) (hopefully unused)
90 */
91#define IPTOS_PREC_NETCONTROL 0xe0
92#define IPTOS_PREC_INTERNETCONTROL 0xc0
93#define IPTOS_PREC_CRITIC_ECP 0xa0
94#define IPTOS_PREC_FLASHOVERRIDE 0x80
95#define IPTOS_PREC_FLASH 0x60
96#define IPTOS_PREC_IMMEDIATE 0x40
97#define IPTOS_PREC_PRIORITY 0x20
98#define IPTOS_PREC_ROUTINE 0x10
99
100/*
101 * Definitions for options.
102 */
103#define IPOPT_COPIED(o) ((o)&0x80)
104#define IPOPT_CLASS(o) ((o)&0x60)
105#define IPOPT_NUMBER(o) ((o)&0x1f)
106
107#define IPOPT_CONTROL 0x00
108#define IPOPT_RESERVED1 0x20
109#define IPOPT_DEBMEAS 0x40
110#define IPOPT_RESERVED2 0x60
111
112#define IPOPT_EOL 0 /* end of option list */
113#define IPOPT_NOP 1 /* no operation */
114
115#define IPOPT_RR 7 /* record packet route */
116#define IPOPT_TS 68 /* timestamp */
117#define IPOPT_SECURITY 130 /* provide s,c,h,tcc */
118#define IPOPT_LSRR 131 /* loose source route */
119#define IPOPT_SATID 136 /* satnet id */
120#define IPOPT_SSRR 137 /* strict source route */
121
122/*
123 * Offsets to fields in options other than EOL and NOP.
124 */
125#define IPOPT_OPTVAL 0 /* option ID */
126#define IPOPT_OLEN 1 /* option length */
127#define IPOPT_OFFSET 2 /* offset within option */
128#define IPOPT_MINOFF 4 /* min value of above */
129
130/*
131 * Time stamp option structure.
132 */
133struct ip_timestamp {
134 u_char ipt_code; /* IPOPT_TS */
135 u_char ipt_len; /* size of structure (variable) */
136 u_char ipt_ptr; /* index of current entry */
137#if BYTE_ORDER == LITTLE_ENDIAN
138 u_char ipt_flg:4, /* flags, see below */
139 ipt_oflw:4; /* overflow counter */
140#endif
141#if BYTE_ORDER == BIG_ENDIAN
142 u_char ipt_oflw:4, /* overflow counter */
143 ipt_flg:4; /* flags, see below */
144#endif
145 union ipt_timestamp {
146 n_long ipt_time[1];
147 struct ipt_ta {
148 struct in_addr ipt_addr;
149 n_long ipt_time;
150 } ipt_ta[1];
151 } ipt_timestamp;
152};
153
154/* flag bits for ipt_flg */
155#define IPOPT_TS_TSONLY 0 /* timestamps only */
156#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */
157#define IPOPT_TS_PRESPEC 3 /* specified modules only */
158
159/* bits for security (not byte swapped) */
160#define IPOPT_SECUR_UNCLASS 0x0000
161#define IPOPT_SECUR_CONFID 0xf135
162#define IPOPT_SECUR_EFTO 0x789a
163#define IPOPT_SECUR_MMMM 0xbc4d
164#define IPOPT_SECUR_RESTR 0xaf13
165#define IPOPT_SECUR_SECRET 0xd788
166#define IPOPT_SECUR_TOPSECRET 0x6bc5
167
168/*
169 * Internet implementation parameters.
170 */
171#define MAXTTL 255 /* maximum time to live (seconds) */
172#define IPFRAGTTL 60 /* time to live for frags, slowhz */
173#define IPTTLDEC 1 /* subtracted when forwarding */
174
175#define IP_MSS 576 /* default maximum segment size */
176
177/* hv: this is a new data structure in TCPIPV4; consult IBM's doc for
178 * details (provided they tell anything about it at all)
179 */
180#ifdef TCPIPV4
181struct ipstat {
182 long ips_total;
183 long ips_badsum;
184 long ips_tooshort;
185 long ips_toosmall;
186 long ips_badhlen;
187 long ips_badlen;
188 long ips_fragments;
189 long ips_fragdropped;
190 long ips_fragtimeout;
191 long ips_forward;
192 long ips_cantforward;
193 long ips_redirectsent;
194 long ips_ipOutRequests;
195 long ips_ipOutNoRoutes;
196 long ips_ipFragFails;
197 long ips_ipFragOKs;
198 long ips_ipFragCreates;
199 long ips_ipReasmOKs;
200 long ips_ipOutDiscards;
201 long ips_ipInDiscards;
202 long ips_ipInAddrErrors;
203 long ips_ipInDelivers;
204 long ips_ipInUnknownProtos;
205};
206#endif
207
208#endif /* !_NETINET_IP_H_ */
Note: See TracBrowser for help on using the repository browser.