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

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

?? icmp.c

?? D:My DocumentszqARM壓縮包OpenSource_49.rar
?? C
字號:
//********************************************************************************************
//
// File : icmp.c implement for Internet Control Message Protocol
//
//********************************************************************************************
//
// Copyright (C) 2007
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
// This program is distributed in the hope that it will be useful, but
//
// WITHOUT ANY WARRANTY;
//
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
// PURPOSE. See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the Free Software Foundation, Inc., 51
// Franklin St, Fifth Floor, Boston, MA 02110, USA
//
// http://www.gnu.de/gpl-ger.html
//
//********************************************************************************************
#include "includes.h"
//********************************************************************************************
//
// The Internet Control Message Protocol (ICMP) is one of the core protocols of the 
// Internet protocol suite. It is chiefly used by networked computers' 
// operating systems to send error messages---indicating, for instance, 
// that a requested service is not available or that a host or router could not be reached.
//
// ICMP differs in purpose from TCP and UDP in that it is usually not used directly 
// by user network applications. One exception is the ping tool, 
// which sends ICMP Echo Request messages (and receives Echo Response messages) 
// to determine whether a host is reachable and how long packets take to get to and from that host.
//
// +------------+-----------+-------------+----------+
// + MAC header + IP header + ICMP header + Data ::: +
// +------------+-----------+-------------+----------+
//
// ICMP header
//
// +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
// +00+01+02+03+04+05+06+07+08+09+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+
// +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
// +         Type          +          Code         +               ICMP header checksum            +
// +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
// +                                            Data :::                                           +
// +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
//
//********************************************************************************************
unsigned char icmp_id=1;
unsigned char icmp_seq=1;
//*******************************************************************************************
//
// Function : icmp_send_reply
// Description : Send ARP reply packet from ARP request packet
//
//*******************************************************************************************
void icmp_generate_packet ( BYTE *rxtx_buffer )
{
	BYTE i;
	WORD_BYTES ck;
	
	// In send ICMP request case, generate new ICMP data.
	if ( rxtx_buffer[ ICMP_TYPE_P ] == ICMP_TYPE_ECHOREQUEST_V )
	{
		for ( i=0; i<ICMP_MAX_DATA; i++ )
		{
			rxtx_buffer[ ICMP_DATA_P + i ] = 'A' + i;
		}
	}
	// clear icmp checksum
	rxtx_buffer[ ICMP_CHECKSUM_H_P ] = 0;
	rxtx_buffer[ ICMP_CHECKSUM_L_P ] = 0;

	// calculate new checksum.
	// ICMP checksum calculation begin at ICMP type to ICMP data.
	// Before calculate new checksum the checksum field must be zero.
	ck.word = software_checksum ( &rxtx_buffer[ ICMP_TYPE_P ], sizeof(ICMP_PACKET), 0 );
	rxtx_buffer[ ICMP_CHECKSUM_H_P ] = ck.byte.high;
	rxtx_buffer[ ICMP_CHECKSUM_L_P ] = ck.byte.low;
}
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void icmp_send_request ( BYTE *rxtx_buffer, BYTE *dest_mac, BYTE *dest_ip )
{	
	// set ethernet header
	eth_generate_header ( rxtx_buffer, (WORD_BYTES){ETH_TYPE_IP_V}, dest_mac );
	
	// generate ip header and checksum
	ip_generate_header (	rxtx_buffer, (WORD_BYTES){sizeof(IP_HEADER) + sizeof(ICMP_PACKET)}, IP_PROTO_ICMP_V, dest_ip );

	// generate icmp packet and checksum
	rxtx_buffer[ ICMP_TYPE_P ] = ICMP_TYPE_ECHOREQUEST_V;
	rxtx_buffer[ ICMP_CODE_P ] = 0;
	rxtx_buffer[ ICMP_IDENTIFIER_H_P ] = icmp_id;
	rxtx_buffer[ ICMP_IDENTIFIER_L_P ] = 0;
	rxtx_buffer[ ICMP_SEQUENCE_H_P ] = icmp_seq;
	rxtx_buffer[ ICMP_SEQUENCE_L_P ] = 0;
	icmp_id++;
	icmp_seq++;
	icmp_generate_packet ( rxtx_buffer );	

	// send packet to ethernet media
	enc28j60_packet_send ( rxtx_buffer, sizeof(ETH_HEADER) + sizeof(IP_HEADER) + sizeof(ICMP_PACKET) );
}
//*******************************************************************************************
//
// Function : icmp_send_reply
// Description : Send ARP reply packet to destination.
//
//*******************************************************************************************
BYTE icmp_send_reply ( BYTE *rxtx_buffer, BYTE *dest_mac, BYTE *dest_ip )
{
	
	// check protocol is icmp or not?
	if ( rxtx_buffer [ IP_PROTO_P ] != IP_PROTO_ICMP_V )
		return 0;
	
	// check icmp packet type is echo request or not?
	if ( rxtx_buffer [ ICMP_TYPE_P ] != ICMP_TYPE_ECHOREQUEST_V )
		return 0;

	// set ethernet header
	eth_generate_header ( rxtx_buffer, (WORD_BYTES){ETH_TYPE_IP_V}, dest_mac );
	
	// generate ip header and checksum
	ip_generate_header ( rxtx_buffer, (WORD_BYTES){(rxtx_buffer[IP_TOTLEN_H_P]<<8)|rxtx_buffer[IP_TOTLEN_L_P]}, IP_PROTO_ICMP_V, dest_ip );

	// generate icmp packet
	rxtx_buffer[ ICMP_TYPE_P ] = ICMP_TYPE_ECHOREPLY_V;
	icmp_generate_packet ( rxtx_buffer );

	// send packet to ethernet media
	enc28j60_packet_send ( rxtx_buffer, sizeof(ETH_HEADER) + sizeof(IP_HEADER) + sizeof(ICMP_PACKET) );
	return 1;
}
//*******************************************************************************************
//
// Function : icmp_ping_server
// Description : Send ARP reply packet to destination.
//
//*******************************************************************************************
BYTE icmp_ping ( BYTE *rxtx_buffer, BYTE *dest_mac, BYTE *dest_ip )
{
	BYTE i;
	WORD dlength;
	
	// destination ip was not found on network.
	if ( arp_who_is ( rxtx_buffer, dest_mac, dest_ip ) == 0 )
		return 0;

	// send icmp request packet (ping) to server
	icmp_send_request ( rxtx_buffer, (BYTE*)&server_mac, dest_ip );

	for ( i=0; i<10; i++ )
	{
		_delay_ms( 10 );
		dlength = enc28j60_packet_receive( rxtx_buffer, MAX_RXTX_BUFFER );

		if ( dlength )
		{
			// check protocol is icmp or not?
			if ( rxtx_buffer [ IP_PROTO_P ] != IP_PROTO_ICMP_V )
				continue;
	
			// check icmp packet type is echo reply or not?
			if ( rxtx_buffer [ ICMP_TYPE_P ] != ICMP_TYPE_ECHOREPLY_V )
				continue;

			return 1;
		}
	}

	// time out
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品自线一区二区三区视频| 欧美经典一区二区三区| 成人晚上爱看视频| 国产真实精品久久二三区| 麻豆国产精品官网| 精品影院一区二区久久久| 久热成人在线视频| 国产又黄又大久久| 成人免费高清视频在线观看| 国产不卡高清在线观看视频| 成人黄色小视频在线观看| 成人va在线观看| 欧美亚州韩日在线看免费版国语版| 日本高清不卡视频| 91精品国产综合久久久久| 精品国产一区二区三区忘忧草 | 蜜臀av一区二区在线免费观看| 五月婷婷久久综合| 国产资源在线一区| av激情亚洲男人天堂| 一本大道久久a久久综合| 欧美日韩精品免费| 国产亚洲精品久| 亚洲蜜桃精久久久久久久| 婷婷开心久久网| 国产精品一区二区黑丝| 在线视频亚洲一区| 日韩三级精品电影久久久 | 一区二区三区免费| 美女视频一区二区三区| 成人免费毛片a| 欧美日韩国产一区| 久久婷婷久久一区二区三区| 一区在线中文字幕| 麻豆精品一区二区综合av| av亚洲精华国产精华精| 欧美一级午夜免费电影| 国产精品三级视频| 久久机这里只有精品| 97成人超碰视| 欧美大白屁股肥臀xxxxxx| 亚洲精品成人悠悠色影视| 国精产品一区一区三区mba视频 | 成人高清av在线| 69精品人人人人| 国产精品国产三级国产三级人妇 | 精品国产一区二区三区忘忧草| 亚洲色图20p| 黄色资源网久久资源365| 91在线无精精品入口| 久久理论电影网| 五月天激情综合| 91在线免费视频观看| 国产午夜精品在线观看| 日本不卡不码高清免费观看| 色激情天天射综合网| 久久精品无码一区二区三区| 青草av.久久免费一区| 91福利小视频| 亚洲精品亚洲人成人网| 91亚洲精品久久久蜜桃网站 | 亚洲国产精品久久不卡毛片| 99re热这里只有精品免费视频| 久久人人97超碰com| 久久国产三级精品| 精品粉嫩aⅴ一区二区三区四区| 亚洲成人1区2区| 欧美日韩成人一区| 亚洲国产欧美在线| 欧美性色黄大片| 亚洲综合色噜噜狠狠| 一本大道av一区二区在线播放| 中文字幕国产一区| 国产91丝袜在线播放| 日本一区二区三区视频视频| 国产精品66部| 中国色在线观看另类| 粉嫩aⅴ一区二区三区四区| 国产欧美日本一区二区三区| 成人性视频免费网站| 国产精品系列在线| 色综合色狠狠综合色| 亚洲精品伦理在线| 精品视频123区在线观看| 天天综合天天做天天综合| 欧美久久久久久久久中文字幕| 亚洲va韩国va欧美va精品| 欧美一区二区三区视频免费播放| 视频一区二区三区在线| 日韩一区二区在线观看视频播放| 麻豆freexxxx性91精品| 国产日产欧美一区| 99精品视频在线播放观看| 亚洲国产精品一区二区www在线| 欧美图片一区二区三区| 久久精品国产久精国产| 国产三级精品视频| 色综合天天性综合| 日本在线不卡一区| 中文字幕第一区第二区| 欧美亚洲综合一区| 久久99久久精品欧美| 国产精品久久久久影院| 欧美日韩精品一区二区三区蜜桃| 麻豆一区二区99久久久久| 国产精品国产三级国产| 欧美理论片在线| 成人久久视频在线观看| 亚洲va欧美va天堂v国产综合| 日韩精品一区在线| 91蝌蚪porny| 国产一区日韩二区欧美三区| 一区二区三区在线观看网站| 日韩欧美专区在线| 色综合中文综合网| 亚洲视频一区二区免费在线观看| 欧美日韩国产欧美日美国产精品| 国产老妇另类xxxxx| 亚洲综合激情另类小说区| 精品久久久三级丝袜| 91黄视频在线观看| 国产白丝网站精品污在线入口| 亚洲mv大片欧洲mv大片精品| 国产精品成人一区二区艾草| 精品国产一区二区三区久久久蜜月| 国产91精品精华液一区二区三区| 无吗不卡中文字幕| 中文字幕一区av| 久久精品免费在线观看| 91精品国产麻豆国产自产在线| 99久久综合99久久综合网站| 精品亚洲成a人在线观看| 亚洲成av人片在线观看| 亚洲视频一二三区| 国产精品日韩成人| 精品粉嫩aⅴ一区二区三区四区| 欧美日韩视频在线观看一区二区三区 | 欧美激情一区二区三区不卡| 69久久夜色精品国产69蝌蚪网| 在线免费观看一区| 成人app软件下载大全免费| 韩国精品在线观看| 麻豆精品新av中文字幕| 香蕉久久夜色精品国产使用方法| 一区二区三区四区中文字幕| 国产精品久久久久久一区二区三区| 亚洲精品一线二线三线无人区| 欧美精品乱码久久久久久| 欧美性色黄大片| 色婷婷国产精品| 日本韩国视频一区二区| 欧美在线观看18| 欧美在线观看一二区| 欧美亚洲动漫制服丝袜| 欧美中文字幕亚洲一区二区va在线 | 久久精品国产免费| 国产中文字幕一区| 国产传媒一区在线| 成人国产精品视频| 99天天综合性| 欧美午夜一区二区三区免费大片| 在线观看免费视频综合| 欧美日韩一级片在线观看| 欧美美女一区二区在线观看| 8v天堂国产在线一区二区| 欧美一区永久视频免费观看| 精品电影一区二区| 国产精品三级视频| 亚洲自拍偷拍综合| 日韩精品三区四区| 国产综合色视频| 99视频有精品| 欧美疯狂性受xxxxx喷水图片| 日韩一本二本av| 日本一区二区三区在线观看| 亚洲欧美日本在线| 免费观看成人鲁鲁鲁鲁鲁视频| 国产精品99久| 欧美视频在线播放| 久久综合九色欧美综合狠狠| 国产精品灌醉下药二区| 亚洲国产欧美在线人成| 开心九九激情九九欧美日韩精美视频电影| 国产一区 二区| 欧美性视频一区二区三区| 日韩精品在线网站| 亚洲欧美另类小说| 韩国一区二区三区| 91久久精品一区二区二区| 精品久久免费看| 亚洲成人在线免费| 成人影视亚洲图片在线| 日韩三级在线免费观看| 国产精品电影院| 久久99热这里只有精品| 欧美三级日韩三级| 国产精品国产三级国产普通话99 | 亚洲精品久久嫩草网站秘色| 免费人成精品欧美精品| 91在线播放网址|