⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp_fsm.h

📁 VRTX 商用嵌入式实时操作系统
💻 H
字号:
/***************************************************************************
*
*               Copyright (c) 1993 READY SYSTEMS CORPORATION.
*
*       All rights reserved. READY SYSTEMS' source code is an unpublished
*       work and the use of a copyright notice does not imply otherwise.
*       This source code contains confidential, trade secret material of
*       READY SYSTEMS. Any attempt or participation in deciphering, decoding,
*       reverse engineering or in any way altering the source code is
*       strictly prohibited, unless the prior written consent of
*       READY SYSTEMS is obtained.
*
*
*       Module Name:            tcp_fsm.h
*
*       Identification:         @(#) 1.3 tcp_fsm.h
*
*       Date:                   1/6/94  16:37:15
*
****************************************************************************
*/

/*
 RCS header identifier - $Id: tcp_fsm.h,v 1.4 1993/10/05 18:08:49 robert Exp $
*/
/*
 * Copyrighted as an unpublished work.
 * (c) Copyright 1987-1993 Lachman Technology, Incorporated
 * All rights reserved.
 * 
 * RESTRICTED RIGHTS
 * 
 * These programs are supplied under a license.  They may be used,
 * disclosed, and/or copied only as permitted under such license
 * agreement.  Any copy must contain the above copyright notice and
 * this restricted rights notice.  Use, copying, and/or disclosure
 * of the programs is strictly prohibited unless otherwise provided
 * in the license agreement.
 */
/*
 * Copyright (c) 1985 Regents of the University of California.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the University of California, Berkeley.  The name of the
 * University may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

#ifndef tcp_fsm_h
#define tcp_fsm_h

#ifdef __cplusplus
extern "C" {
#endif

/* tcp_fsm.h	6.1	83/07/29	 */

/*
 * TCP FSM state definitions. Per RFC793, September, 1981. 
 */

#define	TCP_NSTATES	11

#define	TCPS_CLOSED		0	/* closed */
#define	TCPS_LISTEN		1	/* listening for connection */
#define	TCPS_SYN_SENT		2	/* active, have sent syn */
#define	TCPS_SYN_RECEIVED	3	/* have send and received syn */
/* states < TCPS_ESTABLISHED are those where connections not established */
#define	TCPS_ESTABLISHED	4	/* established */
#define	TCPS_CLOSE_WAIT		5	/* rcvd fin, waiting for close */
/* states > TCPS_CLOSE_WAIT are those where user has closed */
#define	TCPS_FIN_WAIT_1		6	/* have closed, sent fin */
#define	TCPS_CLOSING		7	/* closed xchd FIN; await FIN ACK */
#define	TCPS_LAST_ACK		8	/* had fin and close; await FIN ACK */
/* states > TCPS_CLOSE_WAIT && < TCPS_FIN_WAIT_2 await ACK of FIN */
#define	TCPS_FIN_WAIT_2		9	/* have closed, fin is acked */
#define	TCPS_TIME_WAIT		10	/* in 2*msl quiet wait after close */

#define sbit(s) (1L << (s))

#define	TCPS_HAVERCVDSYN(s)	((s) >= TCPS_SYN_RECEIVED)
#define	TCPS_HAVERCVDFIN(s)	(sbit(s) & ( \
				    sbit(TCPS_CLOSE_WAIT) | \
				    sbit(TCPS_CLOSING) | \
				    sbit(TCPS_LAST_ACK) | \
				    sbit(TCPS_TIME_WAIT) \
				))

#ifdef	TCPOUTFLAGS
/*
 * Flags used when sending segments in tcp_output. Basic flags
 * (TH_RST,TH_ACK,TH_SYN,TH_FIN) are totally determined by state, with the
 * proviso that TH_FIN is sent only if all data queued for output is included
 * in the segment. 
 */
unsigned char   tcp_outflags[TCP_NSTATES] = {
				TH_RST | TH_ACK, 0, TH_SYN, TH_SYN | TH_ACK,
					     TH_ACK, TH_ACK,
	  TH_FIN | TH_ACK, TH_FIN | TH_ACK, TH_FIN | TH_ACK, TH_ACK, TH_ACK,
};
#endif

#ifdef	TCPSTATES
char           *tcp_states[] = {
			       "CLOSED", "LISTEN", "SYN_SENT", "SYN_RCVD",
		       "ESTABLISHED", "CLOSE_WAIT", "FIN_WAIT_1", "CLOSING",
			       "LAST_ACK", "FIN_WAIT_2", "TIME_WAIT",
};
#endif

#ifdef __cplusplus
}
#endif

#endif				/* tcp_fsm_h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -