arp.h

来自「实现在ARM上的ICP/IP功能的源代码。」· C头文件 代码 · 共 57 行

H
57
字号

/* 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 + =
减小字号Ctrl + -
显示快捷键?