xref: /netbsd-src/sys/netinet/tcp_seq.h (revision 1179c5e78c8e7d51cf98c009411ed8307bb95e9c)
1*1179c5e7Sryo /*	$NetBSD: tcp_seq.h,v 1.17 2014/07/25 17:53:59 ryo Exp $	*/
2cf92afd6Scgd 
361f28255Scgd /*
4e5e283e0Sthorpej  * Copyright (c) 1982, 1986, 1993, 1995
507b4f2abSmycroft  *	The Regents of the University of California.  All rights reserved.
661f28255Scgd  *
761f28255Scgd  * Redistribution and use in source and binary forms, with or without
861f28255Scgd  * modification, are permitted provided that the following conditions
961f28255Scgd  * are met:
1061f28255Scgd  * 1. Redistributions of source code must retain the above copyright
1161f28255Scgd  *    notice, this list of conditions and the following disclaimer.
1261f28255Scgd  * 2. Redistributions in binary form must reproduce the above copyright
1361f28255Scgd  *    notice, this list of conditions and the following disclaimer in the
1461f28255Scgd  *    documentation and/or other materials provided with the distribution.
15aad01611Sagc  * 3. Neither the name of the University nor the names of its contributors
1661f28255Scgd  *    may be used to endorse or promote products derived from this software
1761f28255Scgd  *    without specific prior written permission.
1861f28255Scgd  *
1961f28255Scgd  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2061f28255Scgd  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2161f28255Scgd  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2261f28255Scgd  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2361f28255Scgd  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2461f28255Scgd  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2561f28255Scgd  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2661f28255Scgd  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2761f28255Scgd  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2861f28255Scgd  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2961f28255Scgd  * SUCH DAMAGE.
3061f28255Scgd  *
31e5e283e0Sthorpej  *	@(#)tcp_seq.h	8.3 (Berkeley) 6/21/95
3261f28255Scgd  */
3361f28255Scgd 
34f73530baSperry #ifndef _NETINET_TCP_SEQ_H_
35f73530baSperry #define _NETINET_TCP_SEQ_H_
36f73530baSperry 
3761f28255Scgd /*
3861f28255Scgd  * TCP sequence numbers are 32 bit integers operated
3961f28255Scgd  * on with modular arithmetic.  These macros can be
4061f28255Scgd  * used to compare such integers.
4161f28255Scgd  */
4261f28255Scgd #define	SEQ_LT(a,b)	((int)((a)-(b)) < 0)
4361f28255Scgd #define	SEQ_LEQ(a,b)	((int)((a)-(b)) <= 0)
4461f28255Scgd #define	SEQ_GT(a,b)	((int)((a)-(b)) > 0)
4561f28255Scgd #define	SEQ_GEQ(a,b)	((int)((a)-(b)) >= 0)
46f7707899Skurahone #define SEQ_MIN(a, b)	((SEQ_LT(a, b)) ? (a) : (b))
47f7707899Skurahone #define SEQ_MAX(a, b)	((SEQ_GT(a, b)) ? (a) : (b))
4861f28255Scgd 
4925054b5cSmatt #define	SEQ_SUB(a,b)	((long)((a)-(b)))
5025054b5cSmatt 
5161f28255Scgd /*
5261f28255Scgd  * Macros to initialize tcp sequence numbers for
5361f28255Scgd  * send and receive from initial send and receive
5461f28255Scgd  * sequence numbers.
5561f28255Scgd  */
5661f28255Scgd #define	tcp_rcvseqinit(tp) \
5761f28255Scgd 	(tp)->rcv_adv = (tp)->rcv_nxt = (tp)->irs + 1
5861f28255Scgd 
5961f28255Scgd #define	tcp_sendseqinit(tp) \
6061f28255Scgd 	(tp)->snd_una = (tp)->snd_nxt = (tp)->snd_max = (tp)->snd_up = \
61*1179c5e7Sryo 	    (tp)->snd_recover = (tp)->snd_high = (tp)->snd_fack = (tp)->iss
6280513cb5Sexplorer 
63e2cb6dadSmycroft #define TCP_ISS_RANDOM_MASK 0x00ffffff /* bits of randomness in a TCP ISS */
64e2cb6dadSmycroft #define TCP_ISSINCR         0x01000000 /* increment per time and per conn */
6580513cb5Sexplorer 
6680513cb5Sexplorer #ifdef _KERNEL
6780513cb5Sexplorer extern tcp_seq	 tcp_iss_seq;		/* tcp initial seq # */
6880513cb5Sexplorer #endif
69f73530baSperry 
709702e987Selad #endif /* !_NETINET_TCP_SEQ_H_ */
71