source: rtems/cpukit/libnetworking/include/netinet/tcp.h @ 3bc19384

5
Last change on this file since 3bc19384 was 3bc19384, checked in by Sebastian Huber <sebastian.huber@…>, on 06/06/17 at 13:30:40

network: Move header files

Prevent accidental use of legacy network header files.

Update #2833.

  • Property mode set to 100644
File size: 4.7 KB
Line 
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 *      @(#)tcp.h       8.1 (Berkeley) 6/10/93
30 * $FreeBSD: src/sys/netinet/tcp.h,v 1.30 2005/01/07 01:45:45 imp Exp $
31 */
32 
33
34#ifndef _NETINET_TCP_H_
35#define _NETINET_TCP_H_
36
37#include <sys/cdefs.h>
38
39#if __BSD_VISIBLE
40#include <machine/endian.h> /* BYTE_ORDER */
41
42typedef u_int32_t tcp_seq;
43
44#define tcp6_seq        tcp_seq /* for KAME src sync over BSD*'s */
45#define tcp6hdr         tcphdr  /* for KAME src sync over BSD*'s */
46
47typedef u_long  tcp_cc;                 /* connection count per rfc1644 */
48
49/*
50 * TCP header.
51 * Per RFC 793, September, 1981.
52 */
53struct tcphdr {
54        u_short th_sport;               /* source port */
55        u_short th_dport;               /* destination port */
56        tcp_seq th_seq;                 /* sequence number */
57        tcp_seq th_ack;                 /* acknowledgement number */
58#if BYTE_ORDER == LITTLE_ENDIAN
59        u_int   th_x2:4,                /* (unused) */
60                th_off:4;               /* data offset */
61#endif
62#if BYTE_ORDER == BIG_ENDIAN
63        u_int   th_off:4,               /* data offset */
64                th_x2:4;                /* (unused) */
65#endif
66        u_char  th_flags;
67#define TH_FIN  0x01
68#define TH_SYN  0x02
69#define TH_RST  0x04
70#define TH_PUSH 0x08
71#define TH_ACK  0x10
72#define TH_URG  0x20
73#define TH_ECE  0x40
74#define TH_CWR  0x80
75#define TH_FLAGS        (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR)
76
77        u_short th_win;                 /* window */
78        u_short th_sum;                 /* checksum */
79        u_short th_urp;                 /* urgent pointer */
80};
81
82#define TCPOPT_EOL              0L
83#define TCPOPT_NOP              1L
84#define TCPOPT_MAXSEG           2L
85#define    TCPOLEN_MAXSEG               4L
86#define TCPOPT_WINDOW           3L
87#define    TCPOLEN_WINDOW               3L
88#define TCPOPT_SACK_PERMITTED   4L              /* Experimental */
89#define    TCPOLEN_SACK_PERMITTED       2L
90#define TCPOPT_SACK             5L              /* Experimental */
91#define TCPOPT_TIMESTAMP        8L
92#define    TCPOLEN_TIMESTAMP            10L
93#define    TCPOLEN_TSTAMP_APPA          (uint32_t)(TCPOLEN_TIMESTAMP+2) /* appendix A */
94#define    TCPOPT_TSTAMP_HDR            \
95    (uint32_t)(((uint32_t)TCPOPT_NOP<<24)| \
96               ((uint32_t)TCPOPT_NOP<<16)| \
97               ((uint32_t)TCPOPT_TIMESTAMP<<8)| \
98               ((uint32_t)TCPOLEN_TIMESTAMP))
99
100#define TCPOPT_CC               11              /* CC options: RFC-1644 */
101#define TCPOPT_CCNEW            12
102#define TCPOPT_CCECHO           13
103#define    TCPOLEN_CC                   6
104#define    TCPOLEN_CC_APPA              (TCPOLEN_CC+2)
105#define    TCPOPT_CC_HDR(ccopt)         \
106    (TCPOPT_NOP<<24|TCPOPT_NOP<<16|(ccopt)<<8|TCPOLEN_CC)
107
108/*
109 * Default maximum segment size for TCP.
110 * With an IP MTU of 576, this is 536,
111 * but 512 is probably more convenient.
112 * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
113 */
114#define TCP_MSS 512
115
116#define TCP_MAXWIN      65535   /* largest value for (unscaled) window */
117#define TTCP_CLIENT_SND_WND     4096    /* dflt send window for T/TCP client */
118
119#define TCP_MAX_WINSHIFT        14      /* maximum window shift */
120
121#define TCP_MAXHLEN     (0xf<<2)        /* max length of header in bytes */
122#define TCP_MAXOLEN     (TCP_MAXHLEN - sizeof(struct tcphdr))
123                                        /* max space left for options */
124#endif /* __BSD_VISIBLE */
125
126/*
127 * User-settable options (used with setsockopt).
128 */
129#define TCP_NODELAY     0x01    /* don't delay send to coalesce packets */
130#if __BSD_VISIBLE
131#define TCP_MAXSEG      0x02    /* set maximum segment size */
132#define TCP_NOPUSH      0x04    /* don't push last block of write */
133#define TCP_NOOPT       0x08    /* don't use TCP options */
134#define TCP_MD5SIG      0x10    /* use MD5 digests (RFC2385) */
135#define TCP_INFO        0x20    /* retrieve tcp_info structure */
136#endif
137
138#endif /* !_NETINET_TCP_H_ */
Note: See TracBrowser for help on using the repository browser.