?? arp._c
字號(hào):
#include "main.h"
#include "rtl8019as.h"
#include "arp.h"
#include "ip.h"
#include "icmp.h"
#include "udp.h"
void arp_response(unsigned char *arpbegin)
{
unsigned char mac_sou0=0;
unsigned char mac_sou1=0;
unsigned char mac_sou2=0;
unsigned char mac_sou3=0;
unsigned char mac_sou4=0;
unsigned char mac_sou5=0;
unsigned char ip_sou0=0;
unsigned char ip_sou1=0;
unsigned char ip_sou2=0;
unsigned char ip_sou3=0;
if((*arpbegin==0) && (*(arpbegin+1))==1 && //只處理以太網(wǎng)數(shù)據(jù)包
(*(arpbegin+2)==0x08) && (*(arpbegin+3))==0x00) //只處理IPv4數(shù)據(jù)包
{
if((*(arpbegin+24)!=myip_3) || //匹配本地IP,不匹配者忽略
(*(arpbegin+25)!=myip_2) ||
(*(arpbegin+26)!=myip_1) ||
(*(arpbegin+27)!=myip_0)
)
{
return;
}
switch(*(arpbegin+7))
{
case 0x01: //處理ARP請(qǐng)求
mac_sou5=*(arpbegin+8);
mac_sou4=*(arpbegin+9);
mac_sou3=*(arpbegin+10);
mac_sou2=*(arpbegin+11);
mac_sou1=*(arpbegin+12);
mac_sou0=*(arpbegin+13);
ip_sou3=*(arpbegin+14);
ip_sou2=*(arpbegin+15);
ip_sou1=*(arpbegin+16);
ip_sou0=*(arpbegin+17);
buildpack(mac_sou5,mac_sou4,mac_sou3,mac_sou2,mac_sou1,mac_sou0,
mynodeid_0,mynodeid_1,mynodeid_2,mynodeid_3,mynodeid_4,mynodeid_5,
0x0608);//幀類型高低字節(jié)調(diào)換
*(arpbegin-4)=0x00;
*(arpbegin-3)=0x01;
*(arpbegin-2)=0x08;
*(arpbegin-1)=0x00;
*(arpbegin)=0x06;
*(arpbegin+1)=0x04;
*(arpbegin+2)=0x00;
*(arpbegin+3)=0x02;
*(arpbegin+4)=mynodeid_0;
*(arpbegin+5)=mynodeid_1;
*(arpbegin+6)=mynodeid_2;
*(arpbegin+7)=mynodeid_3;
*(arpbegin+8)=mynodeid_4;
*(arpbegin+9)=mynodeid_5;
*(arpbegin+10)=myip_3;
*(arpbegin+11)=myip_2;
*(arpbegin+12)=myip_1;
*(arpbegin+13)=myip_0;
*(arpbegin+14)=mac_sou5;
*(arpbegin+15)=mac_sou4;
*(arpbegin+16)=mac_sou3;
*(arpbegin+17)=mac_sou2;
*(arpbegin+18)=mac_sou1;
*(arpbegin+19)=mac_sou0;
*(arpbegin+20)=ip_sou3;
*(arpbegin+21)=ip_sou2;
*(arpbegin+22)=ip_sou1;
*(arpbegin+23)=ip_sou0;
rtl8019_sendpack(60,0);
break;
case 0x02: //處理ARP應(yīng)答
break;
case 0x03: //處理RARP請(qǐng)求
break;
case 0x04: //處理RARP應(yīng)答
break;
default:break;
}
}
return;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -