?? arp.c
字號:
/*----------------------------------------------------------
主要實現IP協議和ARP協議。當DSP接收到正確的以太網數據包以后,
調用check_packet函數處理。如果是ARP請求,則發送一個ARP應答;
如果是ARP應答,則把對方的IP地址和以太網地址放到ARP緩存中;
如果是IP包,則調用IP處理模塊處理,接收數據。
-----------------------------------------------------------*/
#include "Ethernet.h"
#include "ARP.h"
#include "IP.h"
#include "TCP.h"
/*---------------- check_packe function works----------------------
arp: CMPM *(databuf.ethernetpkt.protocol),#0x0608;
make a judgement whether it is a ARP protocal CALL arp_process;
-----------------------------------------------------------------*/
int arp_check_packet(EthernetPkt *pEthernet)
{
if(pEthernet->Protocal==0x0608)
{
return 1;
}
else
return 0;
}
int arp_process(EthernetPkt *pEthernet)
{
/*--如果是ARP請求,則發送一個ARP應答.--*/
//respond();
/*--如果是ARP應答,則把對方的IP地址和以太網地址放到ARP緩存中--*/
/* arp_process:接收ARP請求后,封裝好ARP數據報 */
/*Ip: CMPM *(databuf.ethernet.protocol),#0x0008;
判斷協議類型是否為IP協議 CC ip_process,TC ; */
/* 若為IP協議,調用IP協議處理模塊 */
/* ST #taskfree,*(task) ;設置空閑任務指針 B taskfree ;跳轉到空閑任務 */
/*--Ip: CMPM *(databuf.ethernet.protocol),#0x0008;判斷協議類型是否為IP協議
CC ip_process,TC ;若為IP協議,調用IP協議處理模塊--*/
if(ip_check_packet(pEthernet)==1)
{
ip_process(pEthernet);
return;
}
else
{
return;
}
/* 調用send_packet函數完成發送
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -