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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ip.c

?? 單片機以太網上網代碼(KEIL工程RTS8019)
?? C
字號:
/*
 * Copyright (c) 2003 Electric Application Laboratory of NAN KAI University
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 * 3. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
 * OF SUCH DAMAGE.
 *
 * Author: Li Zhanglin <wzzlin@nankai.edu.cn>
 *
 */

#include "..\GloblDef\GloblDef.h"
#include "..\TCPIP\TCPIPmem.h"
#include "..\TCPIP\IP.h"
#include "..\TCPIP\icmp.h"
#include "..\TCPIP\Netif.h"
#include "..\TCPIP\TCP.h"

/* Check sum calulation. data in buff, size, InSum is initial sum */
WORD CheckSum(WORD DT_XDATA * buff,WORD size,DWORD InSum) REENTRANT_SIG
{
	/* TO DO:in packet memory high part of short is in low memory. add all data in 
	form of 16 bits get a result of 32 bits, add high 16 bits to low 16 bits two 
	times.  get a 16 bits result then complement it. */

	DWORD cksum = InSum; 

	/* sum all word except the last odd byte(if size is a odd num) */
	WORD DT_XDATA * EndBuf = buff + size/2;
	while(buff < EndBuf)
	{ 
		/* net order is equeal as host order in mirochip, so no need to change */
		cksum += *(buff++); 
	} 
	
	/**((WORD xdata *)CheckSumInParam) = size;
	*((WORD xdata *)(CheckSumInParam+2)) = buff;
	asmAddCheckSum();
	cksum = CheckSumOutParm;
	*/
	
	/* if has last odd byte. use this byte as the high part of 16 bits, and add. */
	if((size & 0x0001) != 0) 
		cksum += (*buff) & 0xff00;

	cksum = (cksum >> 16) + (cksum & 0xffff); 
	cksum += (cksum >>16); 
	return (WORD)(~cksum); 
}

/* IP input process */
void IPInput(struct SMemHead DT_XDATA *MemHead) REENTRANT_MUL
{
	struct SIPHead DT_XDATA *pIPHead;
	struct SNetIf  DT_XDATA *pNetIf;		/* for search netif list */

	pIPHead = (struct SIPHead DT_XDATA *)(MemHead->pStart);

	/* check ip version */
	if(IP_VERSION(pIPHead) != IP_VERSION_4)
	{
		MemFree(MemHead);
		return;
	}

	/* if checksum is ok */
	if(CheckSum((WORD DT_XDATA *)pIPHead,(WORD)IP_HEAD_LEN(pIPHead),0) != 0)
	{
		MemFree(MemHead);
		return;
	}

	/* ip packet with options is not supported */
	if(IP_HEAD_LEN(pIPHead) != IP_HEAD_MIN_LEN)
	{
		MemFree(MemHead);
		return;
	}

	/* ip packet fragmented is not supported */
	if((pIPHead->FragmentFlag_Offset & IP_FRAGMENT_OFFSET_MASK)!= 0)
	{
		MemFree(MemHead);
		return;
	}

	
	/* if this packet for us. check all the netif. if a host
	has tow device(tow ip). This packet may come from one device
	but send for the IP of the other deviec. In this case we should
	not drop or forward this packet */
	
	/* if this packet is not for us. forward it */
	if((pNetIf = NetIfFindIP(pIPHead->IPDest)) == NULL)
	{
		#ifdef IP_ENABLE_FORWARD	/* if act as a router */
		/* We should decrease the IPHead->ttl */
		if(pIPHead->LifeLength != 0)
		{
			pIPHead->LifeLength--;
				
			/* recaculate IP head checksum. there is a easy method
			to recaculate, leave for later version improvment */
			CheckSum((WORD DT_XDATA *)pIPHead,(WORD)IP_HEAD_LEN(pIPHead),0);

			/* find a rout( a interface ) */
			if((pNetIf = NetIfFindRout(pIPHead->IPDest)) != NULL)
			{
				/* forward. send it through this interface. if return FALSE, we
				do not care, the soure of the packet will deel with it. */
				pNetIf->output(MemHead,pNetIf,pIPHead->IPDest);
			}
		}
		#endif
		
		MemFree(MemHead);
		return;
	}
	else
	{
		/* MemHead->pStart set to point uper layer */
		MemHead->pStart += sizeof(struct SIPHead);

		/* pass to the uper layer */
		switch(pIPHead->Protocol)
		{
		case IP_PROTOCOL_TCP:
			TCPInput(MemHead);
			break;
#if	ICMP_EN
		case IP_PROTOCOL_ICMP:
			ICMPInput(MemHead);
			break;
#endif
		default:
			MemFree(MemHead);
		}
	}
}

/* out put a ip packet,NOTE:MemHead->pStart point to IPHead.
IPScr IPDest Protocol TotalLen is already filled at uper layer.
To do so TCPCheckSum is easy to generate and pass augument to 
IPOutput is easyer. 
return :
	TURE: send the packt successful. */
BOOL IPOutput(struct SMemHead DT_XDATA * MemHead) REENTRANT_SIG
{
	struct SNetIf  DT_XDATA *pNetIf;
	struct SIPHead DT_XDATA *pIPHead;
	WORD tCheckSum;
	
	pIPHead = (struct SIPHead DT_XDATA *)(MemHead->pStart);

	/* found a rout */
	if((pNetIf = NetIfFindRout(pIPHead->IPDest)) != NULL)
	{
		/* fill IP head */
		pIPHead->CheckSum				= 0;
		pIPHead->FragmentFlag_Offset	= 0;
		pIPHead->FragmentID				= 0;
		pIPHead->LifeLength				= IP_INITIAL_LIFE;
		pIPHead->ServeType				= 0;
		pIPHead->Ver_HeadLen			= (IP_VERSION_4 << 4) + IP_HEAD_MIN_LEN/4;

		/* checksum */
		tCheckSum = CheckSum((WORD DT_XDATA *)pIPHead,(WORD)IP_HEAD_LEN(pIPHead),0);
		pIPHead->CheckSum = htons(tCheckSum);

		/* output it */
		return pNetIf->output(MemHead,pNetIf,pIPHead->IPDest);
	}
	else
		return FALSE;
	/* 'MemHead' freeing is at tcp model when it is acked */
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩理论片在线| 欧美不卡一区二区三区四区| 国产精品传媒入口麻豆| 国产精品自拍在线| 国产亚洲午夜高清国产拍精品 | 天堂蜜桃一区二区三区| 欧美肥大bbwbbw高潮| 青青青爽久久午夜综合久久午夜| 欧美一区二区三区白人| 国产激情视频一区二区在线观看| 中文字幕一区在线| 欧美日韩国产一级二级| 国产精品一线二线三线| 国产精品久久久久影院亚瑟| 欧美中文字幕一区| 韩国精品在线观看| 中文字幕在线播放不卡一区| 欧美偷拍一区二区| 国产一区二区三区视频在线播放| 国产精品女同互慰在线看| 欧美亚洲精品一区| 国产麻豆一精品一av一免费| 亚洲欧美色图小说| 在线电影欧美成精品| 国产99久久久国产精品潘金网站| 亚洲一区二区三区不卡国产欧美| 精品99一区二区| 欧美亚洲日本国产| 岛国一区二区三区| 日韩成人伦理电影在线观看| 国产精品伦理在线| 91精品国产全国免费观看| 国产不卡在线视频| 日韩av中文在线观看| 国产精品夫妻自拍| 精品国产人成亚洲区| 欧美视频在线观看一区| 丁香桃色午夜亚洲一区二区三区| 亚洲va欧美va人人爽| 欧美国产激情一区二区三区蜜月| 91精品啪在线观看国产60岁| 99国产一区二区三精品乱码| 久久99精品视频| 日韩有码一区二区三区| 最好看的中文字幕久久| 国产亚洲精品中文字幕| 欧美人妇做爰xxxⅹ性高电影| 成人动漫一区二区在线| 精品亚洲porn| 日本亚洲最大的色成网站www| 一区二区三区在线不卡| 国产精品丝袜久久久久久app| 日韩精品一区二区三区视频在线观看 | 日韩一区二区免费在线电影| 97aⅴ精品视频一二三区| 国产麻豆精品一区二区| 日本亚洲欧美天堂免费| 亚洲国产精品一区二区www | 午夜影院久久久| 亚洲精品国产一区二区精华液| 日本一区二区免费在线观看视频| 日韩亚洲欧美一区二区三区| 3atv在线一区二区三区| 欧美日韩一区中文字幕| 色偷偷成人一区二区三区91| 日韩欧美在线综合网| 欧美日韩另类国产亚洲欧美一级| 日本韩国一区二区三区视频| 成人毛片视频在线观看| 国产成人综合亚洲网站| 国内精品写真在线观看 | 国产黄人亚洲片| 国产成人综合在线播放| 国产激情视频一区二区在线观看 | 午夜视频在线观看一区| 亚洲成人免费观看| 日日夜夜精品视频免费 | 国产制服丝袜一区| 极品少妇一区二区| 国产在线播放一区| 国产aⅴ精品一区二区三区色成熟| 国产精品18久久久久久久久| 风间由美中文字幕在线看视频国产欧美| 久久99精品久久久久久| 精品一区二区三区蜜桃| 国产乱色国产精品免费视频| 国产99久久久精品| 91视频免费观看| 欧美日韩一级片在线观看| 在线成人小视频| 久久精品在这里| 国产精品色在线| 亚洲精品精品亚洲| 美女网站在线免费欧美精品| 国产一区二区美女诱惑| 成人丝袜高跟foot| 色av综合在线| 日韩三级精品电影久久久 | 91麻豆产精品久久久久久| 欧美在线一区二区三区| 日韩精品中文字幕在线不卡尤物| 久久久久久久久久久久久久久99| 亚洲四区在线观看| 天使萌一区二区三区免费观看| 久久99九九99精品| 色婷婷综合久久久中文一区二区| 国产午夜精品久久久久久免费视| 久久久www成人免费毛片麻豆| 亚洲裸体在线观看| 另类调教123区 | 欧美国产亚洲另类动漫| 亚洲在线视频一区| 国产美女精品在线| 欧美综合在线视频| 久久久国产午夜精品| 一区二区三区四区高清精品免费观看| 石原莉奈一区二区三区在线观看| 国产精品 欧美精品| 欧美美女一区二区三区| 欧美韩日一区二区三区四区| 亚洲成人av一区二区| 国模一区二区三区白浆| 一本到一区二区三区| 久久婷婷国产综合精品青草| 亚洲理论在线观看| 国产成人日日夜夜| 欧美精品久久99| 国产精品久久久久7777按摩| 免费成人小视频| 欧美综合久久久| 中文字幕一区二区不卡 | 久久久久久夜精品精品免费| 亚洲va国产天堂va久久en| 99久久精品免费观看| 精品久久久久久久久久久久包黑料| 亚洲视频在线一区观看| 国产精品一区二区果冻传媒| 欧美精品在线视频| 亚洲欧美电影一区二区| 国产传媒日韩欧美成人| 欧美变态tickling挠脚心| 午夜a成v人精品| 色88888久久久久久影院按摩| 国产女主播一区| 久久99精品久久久久久| 91精品国产美女浴室洗澡无遮挡| 一区二区在线观看免费| 成人午夜伦理影院| 久久久电影一区二区三区| 美女视频黄免费的久久| 欧美二区三区91| 亚洲一区日韩精品中文字幕| 99久久国产综合色|国产精品| 国产亚洲欧美色| 色综合天天做天天爱| 国产精品对白交换视频| 高潮精品一区videoshd| 久久久久综合网| 国产一区二区在线视频| 日韩精品一区二区三区蜜臀| 琪琪久久久久日韩精品| 欧美一区二区三区免费大片| 五月婷婷综合在线| 欧美日韩1区2区| 偷拍日韩校园综合在线| 欧美日韩成人在线一区| 香蕉影视欧美成人| 在线播放视频一区| 久久99日本精品| 精品人在线二区三区| 国产精品66部| 国产精品毛片大码女人| 99久久99久久综合| 亚洲一区二区三区四区五区中文| 色婷婷亚洲婷婷| 五月天一区二区| 欧美电视剧免费全集观看| 开心九九激情九九欧美日韩精美视频电影 | 日韩激情在线观看| 日韩精品综合一本久道在线视频| 久久97超碰国产精品超碰| 国产欧美精品一区二区色综合朱莉 | 国产午夜亚洲精品羞羞网站| 国产成人免费网站| 自拍av一区二区三区| 欧美性三三影院| 麻豆91在线播放免费| 久久久久久夜精品精品免费| av电影在线观看一区| 亚洲永久精品国产| 日韩欧美一级二级三级久久久| 国产成人亚洲综合a∨婷婷| 国产精品乱子久久久久| 欧美日韩视频在线一区二区| 美女任你摸久久| 中文字幕亚洲欧美在线不卡| 欧美日韩精品一区二区在线播放| 老司机精品视频线观看86| 欧美国产精品一区| 欧美日韩国产免费|