亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tcp.c

?? 在freescale 的ne64上開發(fā)的源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
				
				tcp_newstate(soc, TCP_STATE_CONNECTED);
				soc->myflags = TCP_FLAG_ACK;
				tcp_sendcontrol(sochandle);
				
				/* Inform application	*/
				
				(void)soc->event_listener(sochandle, TCP_EVENT_CONNECTED, soc->rem_ip, soc->remport);
				
				return(0);					
								
			}
			
			/* Is it ACK?		*/
			
			if( received_tcp_packet.hlen_flags & TCP_FLAG_ACK )	{
				if( received_tcp_packet.ackno != soc->send_next ) {
					//TCP_DEBUGOUT("ACK received but wrong Ack\n\r");
					return(-1);
				}
				
				if( received_tcp_packet.seqno != soc->receive_next ) {
					//TCP_DEBUGOUT("ACK received but Wrong SEQ number\n\r");
					return(-1);
				}
				
				//TCP_DEBUGOUT("ACK received, this side CONNECTED\r\n");
				
				/* We have no unacked data	*/
				
				soc->send_unacked = soc->send_next;
				
				tcp_newstate(soc, TCP_STATE_CONNECTED);

				/* Inform application	*/
				
				(void)soc->event_listener(sochandle, TCP_EVENT_CONNECTED, soc->rem_ip, soc->remport);
								
				return(0);
					
			}
			
			/* Is it SYN?		*/
			
			if( received_tcp_packet.hlen_flags & TCP_FLAG_SYN ) {
				//TCP_DEBUGOUT("Repeated SYN\r\n");
				return(0);
			}
			
			/* We didn't understood this one, keep on trying but info with RESET	*/
			
			//TCP_DEBUGOUT("Unrecognized packet\n\r");
			
			tcp_sendreset(&received_tcp_packet, frame->sip);
			
			return(-1);
			
			break;
			
		case TCP_STATE_SYN_SENT:
		
			//TCP_DEBUGOUT("SYN_SENT State\r\n");
			
			/* Check for RESET	*/
			
			if(received_tcp_packet.hlen_flags & TCP_FLAG_RESET) {
				//TCP_DEBUGOUT("ERROR:Reset received\r\n");
				
				/* Inform application	*/

				(void)soc->event_listener(sochandle, TCP_EVENT_ABORT, soc->rem_ip, soc->remport);
								
				if(soc->type & TCP_TYPE_SERVER)
					tcp_newstate(soc, TCP_STATE_LISTENING);
				else
					tcp_newstate(soc, TCP_STATE_CLOSED);
					
				return(-1);
			}
			
			/* Is it SYN+ACK?	*/
			
			if( (received_tcp_packet.hlen_flags & TCP_FLAG_SYN) &&
				(received_tcp_packet.hlen_flags & TCP_FLAG_ACK)	) {
				/* Rigth ACK?	*/
				
				if( received_tcp_packet.ackno != soc->send_next ) {
					//TCP_DEBUGOUT("SYN+ACK received but wrong Ack\n\r");
					return(-1);
				}
				
				//TCP_DEBUGOUT("SYN+ACK received, this side established\n\r");
				
				/* Get peer's seq number	*/
				
				soc->receive_next =  received_tcp_packet.seqno;
				soc->receive_next++;							/* ACK SYN	*/
				
				/* We have no unacked data	*/
				
				soc->send_unacked = soc->send_next;
				
				tcp_newstate(soc, TCP_STATE_CONNECTED);
				soc->myflags = TCP_FLAG_ACK;
				tcp_sendcontrol(sochandle);
				
				/* Inform application	*/

				(void)soc->event_listener(sochandle, TCP_EVENT_CONNECTED, soc->rem_ip, soc->remport);
								
				return(0);			
				
			}
			
			/* Is it SYN (simultaneous open)	*/
			
			if(received_tcp_packet.hlen_flags & TCP_FLAG_SYN) {
				//TCP_DEBUGOUT("Simultaneous open, next SYN_RECEIVED\r\n");
			
				/* Get peer's seq number	*/
				
				soc->receive_next =  received_tcp_packet.seqno;
				soc->receive_next++;							/* ACK SYN	*/				
				
				tcp_newstate(soc, TCP_STATE_SYN_RECEIVED);
				soc->myflags = TCP_FLAG_SYN | TCP_FLAG_ACK;
				tcp_sendcontrol(sochandle);
				
				return(0);
			
			}
			
			/* This is something we didn't understood, maybe the other peer has	*/
			/* still old connection on or something								*/
			//TCP_DEBUGOUT("TCP packet out of nowhere received...\r\n");
			tcp_sendreset(&received_tcp_packet, frame->sip);
			
			return(-1);
		
			break;
		
		case TCP_STATE_FINW1:
		
			//TCP_DEBUGOUT("FINW1 State\r\n");
			
			/* Check for RESET	*/
			
			if(received_tcp_packet.hlen_flags & TCP_FLAG_RESET) {
				//TCP_DEBUGOUT("ERROR:Reset received\r\n");
				
				/* Inform application	*/

				(void)soc->event_listener(sochandle, TCP_EVENT_ABORT, soc->rem_ip, soc->remport);
								
				if(soc->type & TCP_TYPE_SERVER)
					tcp_newstate(soc, TCP_STATE_LISTENING);
				else
					tcp_newstate(soc, TCP_STATE_CLOSED);
					
				return(-1);
			}
			
			/* Is it FIN+ACK?			*/
			
			if( (received_tcp_packet.hlen_flags & TCP_FLAG_FIN) &&
				(received_tcp_packet.hlen_flags & TCP_FLAG_ACK)	) {
				/* Rigth ACK?	*/
				
				if( received_tcp_packet.ackno != soc->send_next ) {
					//TCP_DEBUGOUT("FIN+ACK received but wrong Ack\n\r");
					return(-1);
				}
				
				//TCP_DEBUGOUT("FIN+ACK received, next TIMED_WAIT\n\r");
				
				/* ACK FIN and all data	*/
				
				soc->receive_next = received_tcp_packet.seqno;
				soc->receive_next++;
				soc->receive_next += dlen;
				
				/* We have no unacked data	*/
				
				soc->send_unacked = soc->send_next;
				
				tcp_newstate(soc, TCP_STATE_TIMED_WAIT);
				soc->myflags = TCP_FLAG_ACK;
				tcp_sendcontrol(sochandle);
							
				return(0);
			
			}
			
			/* Is it just FIN	*/
			
			if( received_tcp_packet.hlen_flags & TCP_FLAG_FIN	) {
				
				//TCP_DEBUGOUT("Simultaneous close, next CLOSING\n\r");
				
				/* ACK FIN and all data	*/
				
				soc->receive_next = received_tcp_packet.seqno;
				soc->receive_next++;
				soc->receive_next += dlen;
				
				tcp_newstate(soc, TCP_STATE_CLOSING);
				soc->myflags = TCP_FLAG_ACK;
				tcp_sendcontrol(sochandle);			
				return(0);
			
			}			
			
			/* Is it just ACK?	*/
			
			if( received_tcp_packet.hlen_flags & TCP_FLAG_ACK	) {
				/* Rigth ACK?	*/
				
				if( received_tcp_packet.ackno != soc->send_next ) {
					//TCP_DEBUGOUT("ACK received but wrong Ack\n\r");
					return(-1);
				}
				
				//TCP_DEBUGOUT("Our FIN is ACKed but peer don't agree to disconnect yet\r\n");
				//TCP_DEBUGOUT("Next FINW2\r\n");
				
				/* We have no unacked data	*/
				
				soc->send_unacked = soc->send_next;
				
				tcp_newstate(soc, TCP_STATE_FINW2);
				
				return(0);
							
			}
						
			break;
			
		case TCP_STATE_FINW2:
		
			//TCP_DEBUGOUT("FINW2 State\r\n");
			
			/* Check for RESET	*/
			
			if(received_tcp_packet.hlen_flags & TCP_FLAG_RESET) {
				//TCP_DEBUGOUT("ERROR:Reset received\r\n");
				
				/* Inform application	*/

				(void)soc->event_listener(sochandle, TCP_EVENT_ABORT, soc->rem_ip, soc->remport);				
				
				if(soc->type & TCP_TYPE_SERVER)
					tcp_newstate(soc, TCP_STATE_LISTENING);
				else
					tcp_newstate(soc, TCP_STATE_CLOSED);
					
				return(-1);
			}			
		
			/* Do we finally get FIN?	*/
		
			if( received_tcp_packet.hlen_flags & TCP_FLAG_FIN	) {
				
				//TCP_DEBUGOUT("FIN received, next TIMED_WAIT\n\r");
				
				/* ACK FIN and all data	*/
				
				soc->receive_next = received_tcp_packet.seqno;
				soc->receive_next++;
				soc->receive_next += dlen;
				
				tcp_newstate(soc, TCP_STATE_TIMED_WAIT);
				soc->myflags = TCP_FLAG_ACK;
				tcp_sendcontrol(sochandle);			
				return(0);
			
			}		
		
			break;
			
		case TCP_STATE_CLOSING:
		
			//TCP_DEBUGOUT("CLOSING State...\r\n");
			
			/* Check for RESET	*/
			
			if(received_tcp_packet.hlen_flags & TCP_FLAG_RESET)	{
				//TCP_DEBUGOUT("ERROR:Reset received\r\n");

				/* Inform application	*/

				(void)soc->event_listener(sochandle, TCP_EVENT_ABORT, soc->rem_ip, soc->remport);				
				
				if(soc->type & TCP_TYPE_SERVER)
					tcp_newstate(soc, TCP_STATE_LISTENING);
				else
					tcp_newstate(soc, TCP_STATE_CLOSED);
					
				return(-1);
			}			
			
			/* Is it ACK?			*/
			
			if( received_tcp_packet.hlen_flags & TCP_FLAG_ACK	) {
				/* Rigth ACK?	*/
				
				if( received_tcp_packet.ackno != soc->send_next ) {
					//TCP_DEBUGOUT("ACK received but wrong Ack\n\r");
					return(-1);
				}
				
				//TCP_DEBUGOUT("Our FIN is ACKed and peer wants to close too\r\n");
				//TCP_DEBUGOUT("Next TIMED_WAIT\r\n");

				/* We have no unacked data	*/
				
				soc->send_unacked = soc->send_next;
				
				tcp_newstate(soc, TCP_STATE_TIMED_WAIT);
				
				return(0);
							
			}
	
			/* Is it repeated FIN?	*/
			
			if( received_tcp_packet.hlen_flags & TCP_FLAG_FIN	) {
				
				//TCP_DEBUGOUT("Repeated FIN, repeat ACK\n\r");
				
				/* ACK FIN and all data	*/
				
				soc->receive_next = received_tcp_packet.seqno;
				soc->receive_next++;
				soc->receive_next += dlen;
				
				soc->myflags = TCP_FLAG_ACK;
				tcp_sendcontrol(sochandle);			
			
				return(0);
			
			}

		
			break;
		
		case TCP_STATE_LAST_ACK:
		
			//TCP_DEBUGOUT("LAST_ACK State...\r\n");
			
			/* Check for RESET	*/
			
			if(received_tcp_packet.hlen_flags & TCP_FLAG_RESET) {
				//TCP_DEBUGOUT("ERROR:Reset received\r\n");
				
				/* Inform application	*/

				(void)soc->event_listener(sochandle, TCP_EVENT_ABORT, soc->rem_ip, soc->remport);				
				
				if(soc->type & TCP_TYPE_SERVER)
					tcp_newstate(soc, TCP_STATE_LISTENING);
				else
					tcp_newstate(soc, TCP_STATE_CLOSED);
					
				return(-1);
			}			
			
			/* Is it ACK?	*/
			
			if( received_tcp_packet.hlen_flags & TCP_FLAG_ACK	) {
				/* Rigth ACK?	*/
				
				if( received_tcp_packet.ackno != soc->send_next ) {
					//TCP_DEBUGOUT("ACK received but wrong Ack\n\r");
					return(-1);
				}
				
				//TCP_DEBUGOUT("Last ACK received, next LISTENING or CLOSED\r\n");
				
				/* We have no unacked data	*/
				
				soc->send_unacked = soc->send_next;				
				
				if(soc->type & TCP_TYPE_SERVER)
					tcp_newstate(soc, TCP_STATE_LISTENING);
				else
					tcp_newstate(soc, TCP_STATE_CLOSED);
												
				return(0);
							
			}			

			/* Is it repeated FIN?	*/
			
			if( received_tcp_packet.hlen_flags & TCP_FLAG_FIN	) {
				
				//TCP_DEBUGOUT("Repeated FIN, repeat ACK\n\r");
				
				/* ACK FIN and all data	*/
				
				soc->receive_next = received_tcp_packet.seqno;
				soc->receive_next++;
				soc->receive_next += dlen;
					
				soc->myflags = TCP_FLAG_FIN | TCP_FLAG_ACK;
				tcp_sendcontrol(sochandle);
							
				return(0);
			
			}			
			
		
			break;
			
		case TCP_STATE_TIMED_WAIT:
		
			//TCP_DEBUGOUT("TIMED_WAIT State...\r\n");
			
			/* Check for RESET	*/
			
			if(received_tcp_packet.hlen_flags & TCP_FLAG_RESET) {
				//TCP_DEBUGOUT("ERROR:Reset received\r\n");

				/* Inform application	*/

				(void)soc->event_listener(sochandle, TCP_EVENT_ABORT, soc->rem_ip, soc->remport);				
				
				if(soc->type & TCP_TYPE_SERVER)
					tcp_newstate(soc, TCP_STATE_LISTENING);
				else
					tcp_newstate(soc, TCP_STATE_CLOSED);
					
				return(-1);
			}			
			
			/* Is it repeated FIN?	*/
			
			if( received_tcp_packet.hlen_flags & TCP_FLAG_FIN	) {
				
				//TCP_DEBUGOUT("Repeated FIN, repeat ACK\n\r");
				
				/* ACK FIN and all data	*/
				
				soc->receive_next = received_tcp_packet.seqno;
				soc->receive_next++;
				soc->receive_next += dlen;
					
				soc->myflags = TCP_FLAG_ACK;
				tcp_sendcontrol(sochandle);
							
				return(0);
			
			}
		
			
		
			break;
	
	
		default:
		
			//TCP_DEBUGOUT("ERROR:TCP State machine in unknown state!!\r\n");
			
			tcp_sendreset(&received_tcp_packet, frame->sip);
			
			RESET_SYSTEM();
	
	}
	
	//TCP_DEBUGOUT("Should not be there!\r\n");
	
	return(-1);
		
}


/** \brief Create and send TCP packet
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 16.07.2002
 *	\param sockethandle handle to processed socket
 *	\param buf pointer to data buffer (where TCP header will be stored)
 *	\param blen buffer length in bytes
 *	\param dlen length of data in bytes
 *	\return 
 *		\li -1 - Error
 *		\li >0 - Packet OK
 *
 *	Based on data supplied as function parameters and data stored in 
 *	socket's tcb, TCP header is created in buffer, checksum is calculated
 *	and packet is forwarded to lower layers (IP).
 *
 */
INT16 process_tcp_out (INT8 sockethandle, UINT8* buf, UINT16 blen, UINT16 dlen)
{
	struct tcb* soc;
	UINT16 cs;
	UINT8 cs_cnt;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性生交大片免费看中文| 极品少妇一区二区三区精品视频| 欧美日韩中文国产| 国产麻豆精品在线| 亚洲综合色成人| 亚洲免费观看在线观看| 国产精品久久久久影院色老大| 久久影院午夜论| 中文一区二区在线观看| 亚洲国产精品国自产拍av| 中文字幕精品在线不卡| 精品剧情在线观看| 日韩三级伦理片妻子的秘密按摩| 欧美在线不卡一区| 欧美一区二区在线免费播放| 在线观看av一区二区| 日本一区二区三区四区在线视频| 2020国产精品| 1024成人网色www| 一区二区三区国产豹纹内裤在线| 亚洲黄色尤物视频| 五月天一区二区三区| 毛片不卡一区二区| 国产激情精品久久久第一区二区 | 国产福利一区在线观看| 国产麻豆成人精品| 成人高清免费在线播放| 在线观看日韩一区| 日韩免费观看高清完整版在线观看| 精品盗摄一区二区三区| 国产精品久久久久久久久快鸭| 日韩毛片在线免费观看| 亚洲成av人**亚洲成av**| 91精品国产综合久久精品图片| 精品国产一区二区三区四区四| 国产精品久久久久9999吃药| 亚洲一区二区中文在线| 久久精品国产精品亚洲综合| 成人午夜精品一区二区三区| 欧美精品在线一区二区| 欧美高清在线精品一区| 亚洲va欧美va人人爽| 69久久夜色精品国产69蝌蚪网 | 91精品国产色综合久久不卡蜜臀| 久久久亚洲精品石原莉奈| 亚洲欧美乱综合| 久久成人久久爱| 91国偷自产一区二区开放时间| 欧美一级免费大片| 亚洲品质自拍视频| 国产在线精品一区二区三区不卡 | 欧美成人官网二区| 亚洲精品视频一区二区| 国产一区二区三区国产| 7777精品伊人久久久大香线蕉最新版| 国产精品私人自拍| 国产一区二区在线免费观看| 欧美色精品在线视频| 国产精品久久久久久久久久久免费看| 精品写真视频在线观看 | 极品少妇一区二区| 欧美日韩高清一区二区三区| 国产精品视频你懂的| 国内精品自线一区二区三区视频| 欧美视频精品在线观看| 亚洲日本va在线观看| 成人激情免费网站| 国产农村妇女精品| 国产一区二区成人久久免费影院 | 欧美精品一区二区久久久| 亚洲国产日韩一级| 色狠狠av一区二区三区| 亚洲欧洲一区二区在线播放| 国产高清成人在线| 国产人成亚洲第一网站在线播放 | 中文字幕亚洲成人| 一级女性全黄久久生活片免费| 国内精品久久久久影院薰衣草| 欧美肥大bbwbbw高潮| 午夜精品视频一区| 欧美群妇大交群的观看方式| 婷婷久久综合九色国产成人 | 337p亚洲精品色噜噜| 亚洲在线中文字幕| 欧美裸体一区二区三区| 日韩不卡在线观看日韩不卡视频| 欧美日韩精品一区二区天天拍小说 | 中文字幕亚洲综合久久菠萝蜜| 国产·精品毛片| 中文字幕一区二区三区精华液| 91尤物视频在线观看| 一区二区国产视频| 91精品国产色综合久久不卡电影 | 日韩高清欧美激情| 日韩一区二区三区视频在线观看| 美国av一区二区| 国产欧美日韩另类一区| 99久久精品费精品国产一区二区| 中文字幕在线不卡一区| 欧美吞精做爰啪啪高潮| 性欧美疯狂xxxxbbbb| 精品国产网站在线观看| 成人动漫在线一区| 亚洲成人精品一区| 久久综合久久综合久久| 成人国产精品免费网站| 三级影片在线观看欧美日韩一区二区| 日韩精品一区在线| 99久久精品免费精品国产| 午夜精品在线视频一区| 久久久久国产精品免费免费搜索| 国产成人精品亚洲777人妖| 一区二区三区在线观看视频| 精品欧美久久久| 91最新地址在线播放| 六月丁香综合在线视频| 成人免费视频在线观看| 日韩精品一区二区在线观看| 色婷婷综合久久久中文一区二区| 日韩一区精品视频| 亚洲免费观看在线视频| 久久久久久久久岛国免费| 91成人免费电影| 国产精品18久久久久| 亚洲欧美一区二区久久| 久久精品噜噜噜成人88aⅴ| 国产精品免费久久| 欧美电影免费观看完整版| 色婷婷av一区二区| 国产福利一区二区三区视频| 亚洲女女做受ⅹxx高潮| 欧美男人的天堂一二区| 99久久婷婷国产综合精品电影| 精品系列免费在线观看| 尤物视频一区二区| 国产亚洲短视频| 欧美裸体一区二区三区| 欧美性猛交xxxx黑人交| 成人精品免费网站| 国产成人免费在线| 美女免费视频一区| 国产亚洲一二三区| 91精品一区二区三区在线观看| 日本韩国一区二区三区| 91免费观看视频在线| 国产成人av资源| 国产精品综合视频| 狠狠色丁香久久婷婷综合丁香| 视频一区二区三区在线| 亚洲最新在线观看| 一区二区三区视频在线看| 亚洲欧美韩国综合色| 亚洲丝袜自拍清纯另类| 成人免费视频在线观看| 国产日韩欧美制服另类| 国产精品无遮挡| 久久久久久久久久久久久久久99| 日韩欧美中文字幕一区| 日韩视频中午一区| 精品国产91久久久久久久妲己| 欧美一区二区福利视频| 日韩午夜精品电影| 欧美一区二区三级| 欧美成人一区二区三区在线观看| 欧美肥妇free| 国产乱色国产精品免费视频| 国产二区国产一区在线观看| 国产成人av电影在线观看| 99在线视频精品| 日本二三区不卡| 337p亚洲精品色噜噜狠狠| 精品国产污网站| 国产精品不卡在线观看| 一区二区三区欧美在线观看| 午夜精品在线看| 韩国精品主播一区二区在线观看| 国产精一品亚洲二区在线视频| 99精品视频在线免费观看| 欧美优质美女网站| 欧美电影免费观看高清完整版在| 久久精品欧美一区二区三区麻豆| 国产精品每日更新| 天天影视涩香欲综合网| 国产美女一区二区三区| 色视频一区二区| 日韩免费观看高清完整版| 中文字幕一区三区| 美女脱光内衣内裤视频久久网站| 成人综合在线视频| 欧美日韩在线免费视频| 国产午夜精品理论片a级大结局 | 色综合天天综合在线视频| 欧美精品在线观看播放| 国产亚洲精品资源在线26u| 亚洲天堂成人网| 蜜臀久久久久久久| 91美女在线看| 国产亚洲成aⅴ人片在线观看| 亚洲综合图片区| 成人性生交大片免费看中文|