xref: /csrg-svn/sys/netinet/tcp.h (revision 5440)
1*5440Swnj /* tcp.h 1.20 82/01/17 */
24573Swnj 
35085Swnj typedef	u_long	tcp_seq;
44573Swnj /*
54899Swnj  * TCP header.
64924Swnj  * Per RFC 793, September, 1981.
74573Swnj  */
84899Swnj struct tcphdr {
94899Swnj 	u_short	th_sport;		/* source port */
104899Swnj 	u_short	th_dport;		/* destination port */
115085Swnj 	tcp_seq	th_seq;			/* sequence number */
125085Swnj 	tcp_seq	th_ack;			/* acknowledgement number */
134573Swnj 	u_char
144899Swnj 		th_x2:4,		/* (unused) */
154899Swnj 		th_off:4;		/* data offset */
164575Swnj 	u_char	th_flags;
175065Swnj #define	TH_FIN	0x01
185065Swnj #define	TH_SYN	0x02
195065Swnj #define	TH_RST	0x04
205065Swnj #define	TH_PUSH	0x08
215065Swnj #define	TH_ACK	0x10
225065Swnj #define	TH_URG	0x20
234899Swnj 	u_short	th_win;			/* window */
244899Swnj 	u_short	th_sum;			/* checksum */
254899Swnj 	u_short	th_urp;			/* urgent pointer */
264499Swnj };
27*5440Swnj 
28*5440Swnj #define	TCPOPT_EOL	0
29*5440Swnj #define	TCPOPT_NOP	1
30*5440Swnj #define	TCPOPT_MAXSEG	2
31*5440Swnj 
32*5440Swnj #ifdef TCPTRUEOOB
33*5440Swnj /*
34*5440Swnj  * True out-of-band as value added option.
35*5440Swnj  * Advertise willingness with TCPOPT_WILOOB in
36*5440Swnj  * initial segment.  If peer is willing, will receive
37*5440Swnj  * such also.  Then can send TCPOPT_OOBDATA whenever oob data
38*5440Swnj  * exists; peer should ack with TCPOPT_OOBACK in segment.
39*5440Swnj  */
40*5440Swnj #define	TCPOPT_WILLOOB	64		/* bytes: 64, 2 */
41*5440Swnj #define	TCPOPT_OOBDATA	65		/* bytes: 65, 4, seq#, data */
42*5440Swnj #define	TCPOPT_OOBACK	66		/* bytes: 66, 3, ack# */
43*5440Swnj #endif
44