xref: /csrg-svn/sys/netinet/tcp.h (revision 29923)
123187Smckusick /*
229147Smckusick  * Copyright (c) 1982, 1986 Regents of the University of California.
323187Smckusick  * All rights reserved.  The Berkeley software License Agreement
423187Smckusick  * specifies the terms and conditions for redistribution.
523187Smckusick  *
6*29923Skarels  *	@(#)tcp.h	7.2 (Berkeley) 10/28/86
723187Smckusick  */
84573Swnj 
95085Swnj typedef	u_long	tcp_seq;
104573Swnj /*
114899Swnj  * TCP header.
124924Swnj  * Per RFC 793, September, 1981.
134573Swnj  */
144899Swnj struct tcphdr {
154899Swnj 	u_short	th_sport;		/* source port */
164899Swnj 	u_short	th_dport;		/* destination port */
175085Swnj 	tcp_seq	th_seq;			/* sequence number */
185085Swnj 	tcp_seq	th_ack;			/* acknowledgement number */
19*29923Skarels #if ENDIAN == LITTLE
209992Ssam 	u_char	th_x2:4,		/* (unused) */
214899Swnj 		th_off:4;		/* data offset */
229992Ssam #endif
23*29923Skarels #if ENDIAN == BIG
24*29923Skarels 	u_char	th_off:4,		/* data offset */
25*29923Skarels 		th_x2:4;		/* (unused) */
26*29923Skarels #endif
274575Swnj 	u_char	th_flags;
285065Swnj #define	TH_FIN	0x01
295065Swnj #define	TH_SYN	0x02
305065Swnj #define	TH_RST	0x04
315065Swnj #define	TH_PUSH	0x08
325065Swnj #define	TH_ACK	0x10
335065Swnj #define	TH_URG	0x20
344899Swnj 	u_short	th_win;			/* window */
354899Swnj 	u_short	th_sum;			/* checksum */
364899Swnj 	u_short	th_urp;			/* urgent pointer */
374499Swnj };
385440Swnj 
395440Swnj #define	TCPOPT_EOL	0
405440Swnj #define	TCPOPT_NOP	1
415440Swnj #define	TCPOPT_MAXSEG	2
4217316Skarels 
4317316Skarels /*
4426259Skarels  * Default maximum segment size for TCP.
4526259Skarels  * With an IP MSS of 576, this is 536,
4626259Skarels  * but 512 is probably more convenient.
4717316Skarels  */
4826259Skarels #ifdef	lint
4926259Skarels #define	TCP_MSS	536
5026259Skarels #else
5117316Skarels #define	TCP_MSS	MIN(512, IP_MSS - sizeof (struct tcpiphdr))
5226259Skarels #endif
5325895Skarels 
5425895Skarels /*
5525895Skarels  * User-settable options (used with setsockopt).
5625895Skarels  */
5725895Skarels #define	TCP_NODELAY	0x01	/* don't delay send to coalesce packets */
5825895Skarels #define	TCP_MAXSEG	0x02	/* set maximum segment size */
59