📄 arp.h
字号:
/* arp */
/* arppacket->HardwareType */
#define ARP_HARDWARE_TYPE_ETHER 0x0001
/* arppacket->ProtocolType */
#define ARP_PROTOCOL_TYPE_IP 0x0800
#define ARP_HARDWARE_ADDR_LEN_ETHER ETHER_ADDR_LEN
#define ARP_PROTOCOL_ADDR_LEN_IP sizeof(IP_ADDR)
/* arppacket->type */
#define ARP_TYPE_ARP_REQUEST 0x0001
#define ARP_TYPE_ARP_REPLY 0x0002
#define ARP_TYPE_RARP_REQUEST 0x0003
#define ARP_TYPE_RARP_REPLY 0x0004
#define ARP_ENTRY_MAX_NUM 100 /* must <= 255 */
#define ARP_ENTRY_TIME_OUT 0xFFFF /* the time for refresh a entry */
/* arp entry */
struct SARPEntry
{
IP_ADDR IPAddr;
BYTE EtherAddr[ETHER_ADDR_LEN];
/* decrease every time trick. when it hit to 0,
remove it from arp entry tabel. if time = 0 indicate
this entry is invalid*/
WORD time;
};
/* arp packet struct */
__packed struct SARPPacket
{
/* header */
WORD HardwareType;
WORD ProtocolType;
BYTE HardWareAddrLen;
BYTE ProtocolAddrLen;
WORD type; /* refer to arp type */
/* arp content */
BYTE EtherScrAddr[ETHER_ADDR_LEN];
IP_ADDR IPScrAddr;
BYTE EtherDestAddr[ETHER_ADDR_LEN];
IP_ADDR IPDestAddr;
};
void ARPInit() ;
struct SMemHead * ARPQuery(struct SNetIf *NetIf,IP_ADDR DestIP) ;
struct SMemHead *ARPInput(struct SMemHead *MemHead, struct SNetIf *NetIf) ;
void ARPAddEntry(struct SARPPacket *ARPPacket) ;
BOOL ARPFind(BYTE EtherAddr[],IP_ADDR IPAddr) ;
void ARPTimer() ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -