?? 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: //回應(yīng)請求報文
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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -