source: rtems-libbsd/freebsd/contrib/tcpdump/sctpHeader.h @ 8440506

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since 8440506 was 8440506, checked in by Chris Johns <chrisj@…>, on 06/15/15 at 07:42:23

Add tcpdump and libpcap.

  • Update the file builder generator to handle generator specific cflags and includes. The tcpdump and libpcap have localised headers and need specific headers paths to see them. There are also module specific flags and these need to be passed to the lex and yacc generators.
  • Add the tcpdump support.
  • Property mode set to 100644
File size: 7.3 KB
Line 
1/* @(#) $Header: /tcpdump/master/tcpdump/sctpHeader.h,v 1.6 2002-12-11 07:14:11 guy Exp $ (LBL) */
2
3/* SCTP reference Implementation Copyright (C) 1999 Cisco And Motorola
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 *
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 *
16 * 4. Neither the name of Cisco nor of Motorola may be used
17 *    to endorse or promote products derived from this software without
18 *    specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 *
32 * This file is part of the SCTP reference Implementation
33 *
34 *
35 * Please send any bug reports or fixes you make to one of the following email
36 * addresses:
37 *
38 * rstewar1@email.mot.com
39 * kmorneau@cisco.com
40 * qxie1@email.mot.com
41 *
42 * Any bugs reported given to us we will try to fix... any fixes shared will
43 * be incorperated into the next SCTP release.
44 */
45
46
47#ifndef __sctpHeader_h__
48#define __sctpHeader_h__
49
50#include <sctpConstants.h>
51
52#ifdef  __cplusplus
53extern "C" {
54#endif
55
56/* the sctp common header */
57
58#ifdef TRU64
59 #define _64BITS 1
60#endif
61
62struct sctpHeader{
63  u_int16_t source;
64  u_int16_t destination;
65  u_int32_t verificationTag;
66  u_int32_t adler32;
67};
68
69/* various descriptor parsers */
70
71struct sctpChunkDesc{
72  u_int8_t chunkID;
73  u_int8_t chunkFlg;
74  u_int16_t chunkLength;
75};
76
77struct sctpParamDesc{
78  u_int16_t paramType;
79  u_int16_t paramLength;
80};
81
82
83struct sctpRelChunkDesc{
84  struct sctpChunkDesc chk;
85  u_int32_t serialNumber;
86};
87
88struct sctpVendorSpecificParam {
89  struct sctpParamDesc p;  /* type must be 0xfffe */
90  u_int32_t vendorId;      /* vendor ID from RFC 1700 */
91  u_int16_t vendorSpecificType;
92  u_int16_t vendorSpecificLen;
93};
94
95
96/* Structures for the control parts */
97
98
99
100/* Sctp association init request/ack */
101
102/* this is used for init ack, too */
103struct sctpInitiation{
104  u_int32_t initTag;            /* tag of mine */
105  u_int32_t rcvWindowCredit;    /* rwnd */
106  u_int16_t NumPreopenStreams;  /* OS */
107  u_int16_t MaxInboundStreams;     /* MIS */
108  u_int32_t initialTSN;
109  /* optional param's follow in sctpParamDesc form */
110};
111
112struct sctpV4IpAddress{
113  struct sctpParamDesc p;       /* type is set to SCTP_IPV4_PARAM_TYPE, len=10 */
114  u_int32_t  ipAddress;
115};
116
117
118struct sctpV6IpAddress{
119  struct sctpParamDesc p;       /* type is set to SCTP_IPV6_PARAM_TYPE, len=22 */
120  u_int8_t  ipAddress[16];
121};
122
123struct sctpDNSName{
124  struct sctpParamDesc param;
125  u_int8_t name[1];
126};
127
128
129struct sctpCookiePreserve{
130  struct sctpParamDesc p;       /* type is set to SCTP_COOKIE_PRESERVE, len=8 */
131  u_int32_t extraTime;
132};
133
134
135struct sctpTimeStamp{
136  u_int32_t ts_sec;
137  u_int32_t ts_usec;
138};
139
140/* wire structure of my cookie */
141struct cookieMessage{
142  u_int32_t TieTag_curTag;              /* copied from assoc if present */
143  u_int32_t TieTag_hisTag;              /* copied from assoc if present */
144  int32_t cookieLife;                   /* life I will award this cookie */
145  struct sctpTimeStamp timeEnteringState; /* the time I built cookie */
146  struct sctpInitiation initAckISent;   /* the INIT-ACK that I sent to my peer */
147  u_int32_t addressWhereISent[4];       /* I make this 4 ints so I get 128bits for future */
148  int32_t addrtype;                     /* address type */
149  u_int16_t locScope;                   /* V6 local scope flag */
150  u_int16_t siteScope;                  /* V6 site scope flag */
151  /* at the end is tacked on the INIT chunk sent in
152   * its entirety and of course our
153   * signature.
154   */
155};
156
157
158/* this guy is for use when
159 * I have a initiate message gloming the
160 * things together.
161
162 */
163struct sctpUnifiedInit{
164  struct sctpChunkDesc uh;
165  struct sctpInitiation initm;
166};
167
168struct sctpSendableInit{
169  struct sctpHeader mh;
170  struct sctpUnifiedInit msg;
171};
172
173
174/* Selective Acknowledgement
175 * has the following structure with
176 * a optional ammount of trailing int's
177 * on the last part (based on the numberOfDesc
178 * field).
179 */
180
181struct sctpSelectiveAck{
182  u_int32_t highestConseqTSN;
183  u_int32_t updatedRwnd;
184  u_int16_t numberOfdesc;
185  u_int16_t numDupTsns;
186};
187
188struct sctpSelectiveFrag{
189  u_int16_t fragmentStart;
190  u_int16_t fragmentEnd;
191};
192
193
194struct sctpUnifiedSack{
195  struct sctpChunkDesc uh;
196  struct sctpSelectiveAck sack;
197};
198
199/* for both RTT request/response the
200 * following is sent
201 */
202
203struct sctpHBrequest {
204  u_int32_t time_value_1;
205  u_int32_t time_value_2;
206};
207
208/* here is what I read and respond with to. */
209struct sctpHBunified{
210  struct sctpChunkDesc hdr;
211  struct sctpParamDesc hb;
212};
213
214
215/* here is what I send */
216struct sctpHBsender{
217  struct sctpChunkDesc hdr;
218  struct sctpParamDesc hb;
219  struct sctpHBrequest rtt;
220  int8_t addrFmt[SCTP_ADDRMAX];
221  u_int16_t userreq;
222};
223
224
225
226/* for the abort and shutdown ACK
227 * we must carry the init tag in the common header. Just the
228 * common header is all that is needed with a chunk descriptor.
229 */
230struct sctpUnifiedAbort{
231  struct sctpChunkDesc uh;
232};
233
234struct sctpUnifiedAbortLight{
235  struct sctpHeader mh;
236  struct sctpChunkDesc uh;
237};
238
239struct sctpUnifiedAbortHeavy{
240  struct sctpHeader mh;
241  struct sctpChunkDesc uh;
242  u_int16_t causeCode;
243  u_int16_t causeLen;
244};
245
246/* For the graceful shutdown we must carry
247 * the tag (in common header)  and the highest consequitive acking value
248 */
249struct sctpShutdown {
250  u_int32_t TSN_Seen;
251};
252
253struct sctpUnifiedShutdown{
254  struct sctpChunkDesc uh;
255  struct sctpShutdown shut;
256};
257
258/* in the unified message we add the trailing
259 * stream id since it is the only message
260 * that is defined as a operation error.
261 */
262struct sctpOpErrorCause{
263  u_int16_t cause;
264  u_int16_t causeLen;
265};
266
267struct sctpUnifiedOpError{
268  struct sctpChunkDesc uh;
269  struct sctpOpErrorCause c;
270};
271
272struct sctpUnifiedStreamError{
273  struct sctpHeader mh;
274  struct sctpChunkDesc uh;
275  struct sctpOpErrorCause c;
276  u_int16_t strmNum;
277  u_int16_t reserved;
278};
279
280struct staleCookieMsg{
281  struct sctpHeader mh;
282  struct sctpChunkDesc uh;
283  struct sctpOpErrorCause c;
284  u_int32_t moretime;
285};
286
287/* the following is used in all sends
288 * where nothing is needed except the
289 * chunk/type i.e. shutdownAck Abort */
290
291struct sctpUnifiedSingleMsg{
292  struct sctpHeader mh;
293  struct sctpChunkDesc uh;
294};
295
296struct sctpDataPart{
297  u_int32_t TSN;
298  u_int16_t streamId;
299  u_int16_t sequence;
300  u_int32_t payloadtype;
301};
302
303struct sctpUnifiedDatagram{
304  struct sctpChunkDesc uh;
305  struct sctpDataPart dp;
306};
307
308struct sctpECN_echo{
309  struct sctpChunkDesc uh;
310  u_int32_t Lowest_TSN;
311};
312
313
314struct sctpCWR{
315  struct sctpChunkDesc uh;
316  u_int32_t TSN_reduced_at;
317};
318
319#ifdef  __cplusplus
320}
321#endif
322
323#endif
Note: See TracBrowser for help on using the repository browser.