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

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

?? udp.c

?? s3c2410-各個功能模塊開發程序包資料
?? C
字號:
/******************************
	將數據報讀取到packetRAM[]中
********************************/

static void readpacket(int i)
{
		packetRAM[i]=low2high(CS8900_RTDATA);
}

/******************************
	計算校驗和

	從packetRAM[start]開始
	計算len長度的和,然后把
	進位位也加,最后取補碼。
********************************/
int inet_chksum(int start,int len)
{
	long acc=0;
	for(i=0;i<len;i++)
		acc=acc+packetRAM[start+i];

						// 對于本程序校驗和不會超過4個字節所以就不需要使用循環
	while(acc >> 16) 
	{   
	acc = (acc & 0xffff) + (acc >> 16);
	}    
  return ~(acc & 0xffff);
}
/******************************
	交換 IP 地址
********************************/
void IpResp()
{
	packetRAM[ip_dst+0]=packetRAM[ip_src+0];
	packetRAM[ip_dst+1]=packetRAM[ip_src+1];

	packetRAM[ip_src]=IP12;
	packetRAM[ip_src+1]=IP34;
	
	packetRAM[ip_cksum]=0x0000;
	packetRAM[ip_cksum]=inet_chksum(ip_VerLen,10);
}
/******************************
	交換以太頭地址
********************************/
void EthResp()
{
	packetRAM[pktDest12]=packetRAM[pktSrc12];
	packetRAM[pktDest34]=packetRAM[pktSrc34];
	packetRAM[pktDest56]=packetRAM[pktSrc56];

	packetRAM[pktSrc12]=MAC12;
	packetRAM[pktSrc34]=MAC34;
	packetRAM[pktSrc56]=MAC56;

}
/******************************
	發送數據報文的函數
********************************/
void sendpacket()
{
										//寫發送命令字
	TxCMD=0x00C0;
									//寫入發送數據報文的長度
	TxLEN=packetRAM[pktLen];
									//等待線路空閑的時候發送
	while(!(get_reg(PP_BusSTAT)&PP_BusSTAT_TxRDY));
										//寫入需要發送的數據

	for(i=1;i<=packetRAM[pktLen]/2;i++)
		
		RTDATA=low2high(packetRAM[i]);
}
/******************************
	發送tftp的ack信號
********************************/
void tftpack()
{	
												//ack 用0004
	packetRAM[tftp_op]=tftp_opack;	
												//ack Number
	packetRAM[tftp_blk]=tftpNo;		
												//交換udp 端口
	packetRAM[u_src]=tftpARMport;
	packetRAM[u_dst]=tftpSPort;

											 //忽略校驗和
	packetRAM[u_cksum]=0x0000;
											//ack幀 是定長度的 46 個字節 
	packetRAM[pktLen]=46;	
	packetRAM[ip_Len]=32;
	packetRAM[u_len]=12;
	EthResp();
	IpResp();
	sendpacket();
}
void  C_vMain(void)
{
/*******************************
	初始化以太網口
*********************************/
	put_reg(PP_SelfCTL,PP_SelfCTL_Reset);	
	while(get_reg(PP_SelfSTAT)&PP_SelfSTAT_InitD!=PP_SelfSTAT_InitD);
	put_reg(PP_RxCTL,PP_RxCTL_RxOK |PP_RxCTL_Broadcast|PP_RxCTL_IA|PP_RxCTL_Promiscuous);
	put_reg(PP_RxCFG,PP_RxCFG_RxOK| PP_RxCFG_BufferCRC|PP_RxCFG_Stream);
	put_reg(PP_LineCTL,PP_LineCTL_Rx|PP_LineCTL_Tx|PP_LineCTL_AutoAUI10BT);
	put_reg(PP_TxCFG,PP_TxCFG_TxOK);
	put_reg(PP_TestCTL,PP_TestCTL_FDX);
	put_reg(PP_IA_65,MAC56_);
	put_reg(PP_IA_43,MAC34_);
	put_reg(PP_IA_21,MAC12_);
/******************************
	開始接受數據
******************************/
for(;;){
	while( get_reg(PP_RER)&PP_RER_RxOK )
		{
		packetRAM[0]=get_reg(PP_RxLENGTH);
					//收取前面的74個字節,如果是ICMP正好包括了最后一個字符 14+20+8+32
		for (i=pktDest12;i<=23; i++)
		{
				packetRAM[i]=low2high(RTDATA);		
		}
					//檢查幀的類型 如果是 0806 表示arp
		if (packetRAM[pktType]==0x0806)
		{
			//*******************************
					//發現ARP數據報文就開始發送RARP
			//*********************************
												//判斷arp是否合法
			
			if (packetRAM[arp_hwtype]!=0x0001)
			return;
			if (packetRAM[arp_prtype]!=0x0800)
			return;
			if (packetRAM[arp_hwlen]!=0x0604)
			return;
			if (packetRAM[arp_op]!=0x0001)
			return;
			if (packetRAM[arp_tpa]!=IP12)
			return;
			if (packetRAM[arp_tpa+1]!=IP34)
			return;
			
											//判斷結束 如果沒有返回說明需要發送RARP				//******************************
			//		發送arp request
			//********************************

											//修改arp操作碼為rarp
			packetRAM[arp_op]=0x0002;		
											//交換以太Mac
			EthResp();						
											//源mac 寫到目的mac
			packetRAM[arp_tha]=packetRAM[arp_sha];
			packetRAM[arp_tha+1]=packetRAM[arp_sha+1];
			packetRAM[arp_tha+2]=packetRAM[arp_sha+2];
											//源ip 寫到目的ip

			packetRAM[arp_tpa]=packetRAM[arp_spa];
			packetRAM[arp_tpa+1]=packetRAM[arp_spa+1];
											//重寫源mac

			packetRAM[arp_sha]=MAC12;
			packetRAM[arp_sha+1]=MAC34;
			packetRAM[arp_sha+2]=MAC56;
											//重寫源IP
			packetRAM[arp_spa]=IP12;
			packetRAM[arp_spa+1]=IP34;
											//發送rarp報文
			sendpacket();
		}
										//如果幀的類型是 0800 表示 IP 幀
		if(packetRAM[pktType]==0x0800)
		{
									//檢查IP幀的類型 01 表示 ICMP , 11 表示UDP
			if((packetRAM[ip_proto]&0x00ff)==0x0001)
			{
									//當幀的類型是 0800 表示ICMP請求
					if(packetRAM[ic_type]==0x0800)
					{
						EthResp();
						IpResp();
									//改變ICMP 為 0000 表示應答
						packetRAM[ic_type]=0x0000;
						packetRAM[ic_cksum]=0x0000;
						packetRAM[ic_cksum]=inet_chksum(ip_data,20);
						sendpacket();
					}
			}
			if((packetRAM[ip_proto]&0x00ff)==0x0011)
			{
								//判斷UDP的目的地址是否是本機地址,如果不是就不處理
				if(packetRAM[ip_dst+1]!=IP34||packetRAM[ip_dst]!=IP12)
					return;
				
								//檢查目的端口是否是69 和tftpARMport
				if(packetRAM[u_dst]!=0x0045 && packetRAM[u_dst]!=tftpARMport)
					return;
								//然后檢查 tftp_op 操作碼 0002 表示寫請求 
				if(packetRAM[tftp_op]==0x0002)
				{
					tftpNo=0;
					tftpSPort=packetRAM[u_src];
					sdrampoint=0;pktcount=0;
					tftpack();tftpack();
				}
										// tftp_op 操作碼 0003 表示數據
				if(packetRAM[tftp_op]==0x0003)
				{
					tftpNo=packetRAM[tftp_blk];

									//得到這一幀的長度 
					pktlength=(packetRAM[ip_Len]-32)/2;
					for(i=tftp_data;i<tftp_data+pktlength;i++)
					{	
						packetRAM[i]= RTDATA&0xffff;
						put_char((packetRAM[i])&0x00ff);
						put_char((packetRAM[i]>>8)&0x00ff);
					}
					if (packetRAM[ip_Len]&0x0001==1)
					{
						packetRAM[i]= RTDATA&0xffff;

					}
					//處理數據
					//將數據寫到ram中
					
					for(j=0;j<i-tftp_data;j+=2)	
					{
	RAM_WORD(sdrampoint)=((packetRAM[tftp_data+j+1]<<16)|packetRAM[tftp_data+j]);
						sdrampoint=sdrampoint+4;
					}
					tftpack();
													//計算文件的長度 以字為單位
					pktcount=pktcount+pktlength;
											//如果幀的數據的長度 在 0-511個字節 pktlength是字長所以和256比較 表示已經是最后一個報文就開始向flash中寫入數據
					
					if(pktlength<256)
					{
						ramtoflash(pktcount);
						put_char('!');
					}

			}
			if(packetRAM[tftp_op]==0x0005)	//清空所有的標記
			{
					sdrampoint=0;pktcount=0;
					return;
			}
		}
		}
			//不滿足條件就跳過這一幀
		put_reg(PP_RxCFG,PP_RxCFG_Skip1);
	}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产激情一区二区三区桃花岛亚洲| 国产日产亚洲精品系列| 欧美日韩中字一区| 91在线观看成人| av一区二区三区黑人| 成人午夜短视频| 不卡一区在线观看| 91在线观看美女| 色哦色哦哦色天天综合| 色狠狠av一区二区三区| 在线精品视频免费观看| 色就色 综合激情| 欧美视频在线观看一区| 91精品午夜视频| 26uuu另类欧美亚洲曰本| 久久久亚洲欧洲日产国码αv| 国产亚洲一区二区三区| 综合婷婷亚洲小说| 亚洲国产一区视频| 蜜臀av一区二区| 国产乱码一区二区三区| 白白色亚洲国产精品| 色综合久久88色综合天天6| 欧美日韩在线播放三区四区| 欧美一区二区三区啪啪| 久久久国际精品| 亚洲少妇最新在线视频| 无吗不卡中文字幕| 国产一区二区网址| 99国产精品99久久久久久| 欧美性一区二区| 日韩精品在线网站| 中文字幕在线不卡视频| 亚洲国产精品自拍| 国内外成人在线视频| 成a人片国产精品| 欧美日韩精品欧美日韩精品一| 日韩精品一区二区在线观看| 中文字幕不卡在线| 天天亚洲美女在线视频| 国产在线播放一区三区四| 99热这里都是精品| 欧美一级一区二区| 国产精品国产三级国产有无不卡 | 国产a级毛片一区| 91亚洲精品一区二区乱码| 91麻豆精品国产91久久久| 国产色产综合色产在线视频| 亚洲第一主播视频| 国产精品一色哟哟哟| 欧美在线播放高清精品| 久久精品无码一区二区三区| 一区二区成人在线| 国产原创一区二区| 欧美性videosxxxxx| 欧美成人vr18sexvr| 亚洲人123区| 国产露脸91国语对白| 欧美精品久久一区二区三区| 亚洲国产电影在线观看| 蜜桃一区二区三区四区| 一本久道中文字幕精品亚洲嫩| 精品嫩草影院久久| 亚洲第一在线综合网站| 99视频在线精品| 久久九九全国免费| 日韩电影一区二区三区四区| 97精品久久久久中文字幕| 精品久久久久久久人人人人传媒 | 免费视频最近日韩| 91成人免费在线视频| 欧美国产精品一区| 精品在线亚洲视频| 91精品国产免费久久综合| 亚洲精选免费视频| 成人午夜电影网站| 久久人人爽爽爽人久久久| 首页国产丝袜综合| 91国产免费观看| 最新中文字幕一区二区三区| 国产精品99久| 久久夜色精品国产欧美乱极品| 日本欧美一区二区| 欧美日韩国产电影| 亚洲一线二线三线久久久| 99精品黄色片免费大全| 久久九九国产精品| 黄色日韩网站视频| 欧美电影免费观看高清完整版| 天堂成人国产精品一区| 欧美日韩一区二区三区在线 | 91在线视频免费观看| 国产嫩草影院久久久久| 国产精品中文欧美| 久久―日本道色综合久久| 老司机精品视频一区二区三区| 在线91免费看| 三级欧美在线一区| 欧美精品第一页| 五月婷婷激情综合| 欧美日韩国产首页在线观看| 香港成人在线视频| 欧美高清性hdvideosex| 午夜视频在线观看一区二区三区| 欧美性欧美巨大黑白大战| 亚洲最大的成人av| 欧美三区在线视频| 日韩高清中文字幕一区| 日韩一区二区三区在线观看 | 欧美午夜不卡在线观看免费| 亚洲图片一区二区| 91精选在线观看| 国产在线国偷精品产拍免费yy | 午夜一区二区三区在线观看| 欧美日韩高清在线| 另类人妖一区二区av| 精品黑人一区二区三区久久| 国产精品亚洲视频| 国产精品久久久久aaaa| 91激情在线视频| 日韩在线一区二区| 精品三级av在线| 成人小视频免费观看| 一区二区三区中文字幕电影| 欧美三级午夜理伦三级中视频| 亚洲成人手机在线| 欧美一区二区在线不卡| 国内久久精品视频| 中文字幕一区二区三区不卡在线 | 最新国产の精品合集bt伙计| 欧美日韩在线观看一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久一日本道色综合| av毛片久久久久**hd| 天天做天天摸天天爽国产一区 | 国产精品久久久久久久浪潮网站| 日本精品免费观看高清观看| 日韩电影在线一区二区| 久久久亚洲精品一区二区三区| 97久久久精品综合88久久| 午夜欧美视频在线观看| 久久久精品tv| 欧美日韩在线亚洲一区蜜芽| 韩国精品一区二区| 亚洲三级免费观看| 日韩女同互慰一区二区| 成人免费毛片嘿嘿连载视频| 亚洲国产sm捆绑调教视频| 久久久青草青青国产亚洲免观| 91麻豆视频网站| 奇米影视一区二区三区小说| 国产精品久久久久久久久免费桃花| 欧美性大战久久| 国产毛片精品视频| 午夜视频久久久久久| 国产精品视频yy9299一区| 制服丝袜亚洲播放| 成人黄色免费短视频| 日韩高清不卡一区| 亚洲欧洲一区二区在线播放| 欧美大度的电影原声| 在线视频欧美区| 国产成人综合亚洲91猫咪| 日韩av一级电影| 亚洲精品高清在线| 日本一区二区三区高清不卡| 欧美一区二区三区精品| 91网站在线播放| 国产成人免费在线观看| 美腿丝袜亚洲色图| 亚洲国产aⅴ天堂久久| 国产精品视频yy9299一区| 精品久久人人做人人爽| 欧美亚洲愉拍一区二区| 99久久夜色精品国产网站| 国精产品一区一区三区mba桃花| 亚洲成av人**亚洲成av**| 中文字幕一区免费在线观看| 久久亚洲捆绑美女| 欧美大胆一级视频| 欧美放荡的少妇| 91传媒视频在线播放| av福利精品导航| 国产精品一二三四五| 裸体在线国模精品偷拍| 午夜精品久久久| 亚洲激情五月婷婷| 亚洲三级在线免费观看| 亚洲国产精品v| 国产日韩视频一区二区三区| 精品嫩草影院久久| 日韩午夜在线影院| 欧美一级专区免费大片| 欧美久久久一区| 欧美日韩一区二区在线观看视频| 色成人在线视频| 色av成人天堂桃色av| 91福利国产成人精品照片| 91美女蜜桃在线| 色婷婷国产精品久久包臀|