📄 icmp.c.bak
字号:
/*==============================================*/
// ICMP协议程序
// FOR AVR DEV 1.0
/*==============================================*/
#include "ne2000.h"
#include "ip.h"
extern union NetNode xdata myNode;
extern unsigned int chksum(unsigned char *check,unsigned int size);
/*==============================================*/
// 函数名称: PING应答
/*==============================================*/
void ping_answer(INT8U xdata *inbuf,union ip_address_type ip_addr, INT16U len)
{
unsigned int i;
unsigned char xdata icmp_outbuf[len];
icmp_head xdata * icmp_in,*icmp_out;
icmp_in=(icmp_head xdata * )inbuf;
icmp_out=(icmp_head xdata * )icmp_outbuf;
union ethernet_address_type answeraddress;
if(icmp_in->type == 0x08)
{ // 表示是ping请求
for (i = 8; i < len; i++) // ADD form protocal
{ // 将数据复制到发送缓冲区
icmp_outbuf[i] = inbuf[i];
}
icmp_out->type = 0x00; // is icmp answer;
icmp_out->id=icmp_in->id;
icmp_out->seq=icmp_in->seq;
icmp_out->crc = 0;
icmp_out->crc =~chksum(icmp_outbuf,len);
ip_send(icmp_outbuf,ip_addr, 0x01, len );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -