📄 icmp.c
字号:
#include "main.h"
#include "rtl8019as.h"
#include "arp.h"
#include "ip.h"
#include "icmp.h"
#include "udp.h"
unsigned char icmp_packhandle(unsigned char *icmpbegin,unsigned int icmplen)
{
//unsigned char icmp_typ=0;
unsigned int icmp_chksum=0;
unsigned int icmp_id=0;
unsigned int icmp_sn=0;
//unsigned int icmp_datalen=0;
unsigned int *icmp_p;
icmp_p=(unsigned int *)icmpbegin;
//icmp_datalen=(icmplen-8);
switch((*icmpbegin))
{
case 0x08: //回应请求报文
icmp_id=(*(icmpbegin+4));
icmp_id<<=8;
icmp_id|=(*(icmpbegin+5));
icmp_sn=(*(icmpbegin+6));
icmp_sn<<=8;
icmp_sn|=(*(icmpbegin+7));
(*icmpbegin)=0x00;
(*(icmpbegin+2))=0;
(*(icmpbegin+3))=0;
icmp_chksum=tsum(icmp_p,icmplen); //校验和的求法
(*(icmpbegin+3))=(icmp_chksum>>8)&0xFF;
(*(icmpbegin+2))=icmp_chksum&0xFF;
break;
default:break;
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -