RTEMS CPU Kit with SuperCore
4.11.3
Main Page
Related Pages
Modules
+
Data Structures
Data Structures
+
Data Fields
+
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Files
File List
+
Globals
+
All
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
+
Functions
_
a
b
c
d
e
f
g
i
j
l
m
n
o
p
q
r
s
t
u
v
w
+
Variables
_
b
c
d
i
r
+
Typedefs
a
b
c
d
f
h
i
m
o
p
q
r
s
t
u
w
x
+
Enumerations
b
c
d
e
h
i
m
o
p
r
s
t
w
+
Enumerator
c
i
m
p
r
s
t
w
+
Macros
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
w
mnt
data0
chrisj
rtems
releases
rtems-release.git
4.11.3
ws-rtems
rtems-4.11.3
cpukit
libnetworking
netinet
ip.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 1982, 1986, 1993
3
* The Regents of the University of California. All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* 4. Neither the name of the University nor the names of its contributors
14
* may be used to endorse or promote products derived from this software
15
* without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*
29
* @(#)ip.h 8.2 (Berkeley) 6/1/94
30
* $FreeBSD: src/sys/netinet/ip.h,v 1.29 2005/01/07 01:45:44 imp Exp $
31
*/
32
33
34
#ifndef _NETINET_IP_H_
35
#define _NETINET_IP_H_
36
37
#include <sys/cdefs.h>
38
#include <
netinet/in.h
>
/* struct in_addr */
39
#include <
netinet/in_systm.h
>
/* n_long */
40
41
/*
42
* Definitions for internet protocol version 4.
43
* Per RFC 791, September 1981.
44
*/
45
#define IPVERSION 4
46
47
#ifndef __packed
48
#if defined(__GNUC__)
49
#define __packed __attribute__((packed))
50
#define __aligned(x) __attribute__((aligned(x)))
51
#else
52
#define __packed
53
#define __aligned(x)
54
#endif
55
#endif
56
57
/*
58
* Structure of an internet header, naked of options.
59
*/
60
struct
ip
{
61
#ifdef _IP_VHL
62
u_char ip_vhl;
/* version << 4 | header length >> 2 */
63
#else
64
#if BYTE_ORDER == LITTLE_ENDIAN
65
u_int ip_hl:4,
/* header length */
66
ip_v:4;
/* version */
67
#endif
68
#if BYTE_ORDER == BIG_ENDIAN
69
u_int ip_v:4,
/* version */
70
ip_hl:4;
/* header length */
71
#endif
72
#endif
/* not _IP_VHL */
73
u_char ip_tos;
/* type of service */
74
u_short ip_len;
/* total length */
75
u_short ip_id;
/* identification */
76
u_short ip_off;
/* fragment offset field */
77
#define IP_RF 0x8000
/* reserved fragment flag */
78
#define IP_DF 0x4000
/* dont fragment flag */
79
#define IP_MF 0x2000
/* more fragments flag */
80
#define IP_OFFMASK 0x1fff
/* mask for fragmenting bits */
81
u_char ip_ttl;
/* time to live */
82
u_char ip_p;
/* protocol */
83
u_short ip_sum;
/* checksum */
84
struct
in_addr
ip_src,ip_dst;
/* source and dest address */
85
} __packed __aligned(4);
86
87
#ifdef _IP_VHL
88
#define IP_MAKE_VHL(v, hl) ((v) << 4 | (hl))
89
#define IP_VHL_HL(vhl) ((vhl) & 0x0f)
90
#define IP_VHL_V(vhl) ((vhl) >> 4)
91
#define IP_VHL_BORING 0x45
92
#endif
93
94
#ifdef CTASSERT
95
CTASSERT(
sizeof
(
struct
ip
) == 20);
96
#endif
97
98
#define IP_MAXPACKET 65535L
/* maximum packet size */
99
100
/*
101
* Definitions for IP type of service (ip_tos)
102
*/
103
#define IPTOS_LOWDELAY 0x10
104
#define IPTOS_THROUGHPUT 0x08
105
#define IPTOS_RELIABILITY 0x04
106
#define IPTOS_MINCOST 0x02
107
#if 1
108
/* ECN RFC3168 obsoletes RFC2481, and these will be deprecated soon. */
109
#define IPTOS_CE 0x01
110
#define IPTOS_ECT 0x02
111
#endif
112
113
/*
114
* Definitions for IP precedence (also in ip_tos) (hopefully unused)
115
*/
116
#define IPTOS_PREC_NETCONTROL 0xe0
117
#define IPTOS_PREC_INTERNETCONTROL 0xc0
118
#define IPTOS_PREC_CRITIC_ECP 0xa0
119
#define IPTOS_PREC_FLASHOVERRIDE 0x80
120
#define IPTOS_PREC_FLASH 0x60
121
#define IPTOS_PREC_IMMEDIATE 0x40
122
#define IPTOS_PREC_PRIORITY 0x20
123
#define IPTOS_PREC_ROUTINE 0x00
124
125
/*
126
* ECN (Explicit Congestion Notification) codepoints in RFC3168
127
* mapped to the lower 2 bits of the TOS field.
128
*/
129
#define IPTOS_ECN_NOTECT 0x00
/* not-ECT */
130
#define IPTOS_ECN_ECT1 0x01
/* ECN-capable transport (1) */
131
#define IPTOS_ECN_ECT0 0x02
/* ECN-capable transport (0) */
132
#define IPTOS_ECN_CE 0x03
/* congestion experienced */
133
#define IPTOS_ECN_MASK 0x03
/* ECN field mask */
134
135
/*
136
* Definitions for options.
137
*/
138
#define IPOPT_COPIED(o) ((o)&0x80)
139
#define IPOPT_CLASS(o) ((o)&0x60)
140
#define IPOPT_NUMBER(o) ((o)&0x1f)
141
142
#define IPOPT_CONTROL 0x00
143
#define IPOPT_RESERVED1 0x20
144
#define IPOPT_DEBMEAS 0x40
145
#define IPOPT_RESERVED2 0x60
146
147
#define IPOPT_EOL 0
/* end of option list */
148
#define IPOPT_NOP 1
/* no operation */
149
150
#define IPOPT_RR 7
/* record packet route */
151
#define IPOPT_TS 68
/* timestamp */
152
#define IPOPT_SECURITY 130
/* provide s,c,h,tcc */
153
#define IPOPT_LSRR 131
/* loose source route */
154
#define IPOPT_ESO 133
/* extended security */
155
#define IPOPT_CIPSO 134
/* commerical security */
156
#define IPOPT_SATID 136
/* satnet id */
157
#define IPOPT_SSRR 137
/* strict source route */
158
#define IPOPT_RA 148
/* router alert */
159
160
/*
161
* Offsets to fields in options other than EOL and NOP.
162
*/
163
#define IPOPT_OPTVAL 0
/* option ID */
164
#define IPOPT_OLEN 1
/* option length */
165
#define IPOPT_OFFSET 2
/* offset within option */
166
#define IPOPT_MINOFF 4
/* min value of above */
167
168
/*
169
* Time stamp option structure.
170
*/
171
struct
ip_timestamp
{
172
u_char ipt_code;
/* IPOPT_TS */
173
u_char ipt_len;
/* size of structure (variable) */
174
u_char ipt_ptr;
/* index of current entry */
175
#if BYTE_ORDER == LITTLE_ENDIAN
176
u_int ipt_flg:4,
/* flags, see below */
177
ipt_oflw:4;
/* overflow counter */
178
#endif
179
#if BYTE_ORDER == BIG_ENDIAN
180
u_int ipt_oflw:4,
/* overflow counter */
181
ipt_flg:4;
/* flags, see below */
182
#endif
183
union
ipt_timestamp
{
184
n_long ipt_time[1];
185
struct
ipt_ta
{
186
struct
in_addr
ipt_addr;
187
n_long ipt_time;
188
}
ipt_ta
[1];
189
}
ipt_timestamp
;
190
};
191
192
#include <
machine/in_cksum.h
>
193
194
/* flag bits for ipt_flg */
195
#define IPOPT_TS_TSONLY 0
/* timestamps only */
196
#define IPOPT_TS_TSANDADDR 1
/* timestamps and addresses */
197
#define IPOPT_TS_PRESPEC 3
/* specified modules only */
198
199
/* bits for security (not byte swapped) */
200
#define IPOPT_SECUR_UNCLASS 0x0000
201
#define IPOPT_SECUR_CONFID 0xf135
202
#define IPOPT_SECUR_EFTO 0x789a
203
#define IPOPT_SECUR_MMMM 0xbc4d
204
#define IPOPT_SECUR_RESTR 0xaf13
205
#define IPOPT_SECUR_SECRET 0xd788
206
#define IPOPT_SECUR_TOPSECRET 0x6bc5
207
208
/*
209
* Internet implementation parameters.
210
*/
211
#define MAXTTL 255
/* maximum time to live (seconds) */
212
#define IPDEFTTL 64
/* default ttl, from RFC 1340 */
213
#define IPFRAGTTL 60
/* time to live for frags, slowhz */
214
#define IPTTLDEC 1
/* subtracted when forwarding */
215
216
#define IP_MSS 576
/* default maximum segment size */
217
218
/*
219
* This is the real IPv4 pseudo header, used for computing the TCP and UDP
220
* checksums. For the Internet checksum, struct ipovly can be used instead.
221
* For stronger checksums, the real thing must be used.
222
*/
223
struct
ippseudo
{
224
struct
in_addr
ippseudo_src;
/* source internet address */
225
struct
in_addr
ippseudo_dst;
/* destination internet address */
226
u_char ippseudo_pad;
/* pad, must be zero */
227
u_char ippseudo_p;
/* protocol */
228
u_short ippseudo_len;
/* protocol length */
229
};
230
#endif
in_cksum.h
in.h
ippseudo
Definition:
ip.h:224
ip
Definition:
ip.h:61
ip_timestamp::ipt_timestamp::ipt_ta
Definition:
ip.h:186
in_addr
Definition:
inet.h:93
ip_timestamp::ipt_timestamp
Definition:
ip.h:184
ip_timestamp
Definition:
ip.h:172
in_systm.h
Generated by
1.8.13