trailing comment after #else or #endif
[unix-history] / usr / src / sys / netinet / tcp.h
CommitLineData
8ae0e4b4 1/*
0880b18e 2 * Copyright (c) 1982, 1986 Regents of the University of California.
2b6b6284 3 * All rights reserved.
8ae0e4b4 4 *
dbf0c423 5 * %sccs.include.redist.c%
2b6b6284 6 *
69d96ae2 7 * @(#)tcp.h 7.8 (Berkeley) %G%
8ae0e4b4 8 */
9d866d2f
MK
9#ifndef BYTE_ORDER
10/*
11 * Definitions for byte order,
12 * according to byte significance from low address to high.
13 */
14#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax) */
15#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */
16#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp) */
17
18#ifdef vax
19#define BYTE_ORDER LITTLE_ENDIAN
20#else
21#define BYTE_ORDER BIG_ENDIAN /* mc68000, tahoe, most others */
22#endif
23#endif BYTE_ORDER
6e8b2eca 24
8a13b737 25typedef u_long tcp_seq;
6e8b2eca 26/*
eb44bfb2 27 * TCP header.
2b4b57cd 28 * Per RFC 793, September, 1981.
6e8b2eca 29 */
eb44bfb2
BJ
30struct tcphdr {
31 u_short th_sport; /* source port */
32 u_short th_dport; /* destination port */
8a13b737
BJ
33 tcp_seq th_seq; /* sequence number */
34 tcp_seq th_ack; /* acknowledgement number */
9d866d2f 35#if BYTE_ORDER == LITTLE_ENDIAN
498aff44 36 u_char th_x2:4, /* (unused) */
eb44bfb2 37 th_off:4; /* data offset */
f112c673 38#endif
9d866d2f 39#if BYTE_ORDER == BIG_ENDIAN
f112c673
MK
40 u_char th_off:4, /* data offset */
41 th_x2:4; /* (unused) */
498aff44 42#endif
a3d78bbd 43 u_char th_flags;
2ff61f9d
BJ
44#define TH_FIN 0x01
45#define TH_SYN 0x02
46#define TH_RST 0x04
47#define TH_PUSH 0x08
48#define TH_ACK 0x10
49#define TH_URG 0x20
eb44bfb2
BJ
50 u_short th_win; /* window */
51 u_short th_sum; /* checksum */
52 u_short th_urp; /* urgent pointer */
121f5f3a 53};
8b5a83bb 54
69d96ae2
AC
55#define TCPOPT_EOL 0
56#define TCPOPT_NOP 1
57#define TCPOPT_MAXSEG 2
58#define TCPOLEN_MAXSEG 4
59#define TCPOPT_WINDOW 3
60#define TCPOLEN_WINDOW 3
61#define TCPOPT_SACK_PERMITTED 4 /* Experimental */
62#define TCPOLEN_SACK_PERMITTED 2
63#define TCPOPT_SACK 5 /* Experimental */
64#define TCPOPT_TIMESTAMP 8
65#define TCPOLEN_TIMESTAMP 10
66#define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */
67
68#define TCPOPT_TSTAMP_HDR \
69 (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
0d115dcc
MK
70
71/*
f8a0cae6
MK
72 * Default maximum segment size for TCP.
73 * With an IP MSS of 576, this is 536,
74 * but 512 is probably more convenient.
a6030a98 75 * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
0d115dcc 76 */
a6030a98
MK
77#define TCP_MSS 512
78
69d96ae2
AC
79#define TCP_MAXWIN 65535 /* largest value for (unscaled) window */
80
81#define TCP_MAX_WINSHIFT 14 /* maximum window shift */
946f1634
MK
82
83/*
84 * User-settable options (used with setsockopt).
85 */
86#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */
87#define TCP_MAXSEG 0x02 /* set maximum segment size */