xref: /csrg-svn/sys/netinet/tcp.h (revision 44483)
123187Smckusick /*
229147Smckusick  * Copyright (c) 1982, 1986 Regents of the University of California.
332787Sbostic  * All rights reserved.
423187Smckusick  *
5*44483Sbostic  * %sccs.include.redist.c%
632787Sbostic  *
7*44483Sbostic  *	@(#)tcp.h	7.7 (Berkeley) 06/28/90
823187Smckusick  */
94573Swnj 
105085Swnj typedef	u_long	tcp_seq;
114573Swnj /*
124899Swnj  * TCP header.
134924Swnj  * Per RFC 793, September, 1981.
144573Swnj  */
154899Swnj struct tcphdr {
164899Swnj 	u_short	th_sport;		/* source port */
174899Swnj 	u_short	th_dport;		/* destination port */
185085Swnj 	tcp_seq	th_seq;			/* sequence number */
195085Swnj 	tcp_seq	th_ack;			/* acknowledgement number */
2044373Skarels #if BYTE_ORDER == LITTLE_ENDIAN
219992Ssam 	u_char	th_x2:4,		/* (unused) */
224899Swnj 		th_off:4;		/* data offset */
239992Ssam #endif
2444373Skarels #if BYTE_ORDER == BIG_ENDIAN
2529923Skarels 	u_char	th_off:4,		/* data offset */
2629923Skarels 		th_x2:4;		/* (unused) */
2729923Skarels #endif
284575Swnj 	u_char	th_flags;
295065Swnj #define	TH_FIN	0x01
305065Swnj #define	TH_SYN	0x02
315065Swnj #define	TH_RST	0x04
325065Swnj #define	TH_PUSH	0x08
335065Swnj #define	TH_ACK	0x10
345065Swnj #define	TH_URG	0x20
354899Swnj 	u_short	th_win;			/* window */
364899Swnj 	u_short	th_sum;			/* checksum */
374899Swnj 	u_short	th_urp;			/* urgent pointer */
384499Swnj };
395440Swnj 
405440Swnj #define	TCPOPT_EOL	0
415440Swnj #define	TCPOPT_NOP	1
425440Swnj #define	TCPOPT_MAXSEG	2
4317316Skarels 
4417316Skarels /*
4526259Skarels  * Default maximum segment size for TCP.
4626259Skarels  * With an IP MSS of 576, this is 536,
4726259Skarels  * but 512 is probably more convenient.
4844373Skarels  * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
4917316Skarels  */
5044373Skarels #define	TCP_MSS	512
5125895Skarels 
5244373Skarels #define	TCP_MAXWIN	65535		/* largest value for window */
5344373Skarels 
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