ARP初始化
文章目錄
- 1 ARP初始化
- 1.1 原理概述
- 1.2 實現原理
- 1.3 代碼實現
1 ARP初始化
1.1 原理概述
解決辦法:
ARP實例:
1.2 實現原理
需要考慮如下問題:
ARP表項定義如下:
1.3 代碼實現
xnet_tiny.h中添加如下代碼:
#define XNET_IPV4_ADDR_SIZE 4 // IP地址長度/*** IP地址*/ typedef union _xipaddr_t {uint8_t array[XNET_IPV4_ADDR_SIZE]; // 以數據形式存儲的ipuint32_t addr; // 32位的ip地址 }xipaddr_t;#define XARP_ENTRY_FREE 0 // ARP表項空閑/*** ARP表項*/ typedef struct _xarp_entry_t {xipaddr_t ipaddr; // ip地址uint8_t macaddr[XNET_MAC_ADDR_SIZE]; // mac地址uint8_t state; // 狀態位uint16_t tmo; // 當前超時uint8_t retry_cnt; // 當前重試次數 }xarp_entry_t;void xarp_init(void);xnet_tiny.c中添加如下代碼:
static xarp_entry_t arp_entry; // 節省內存,只使用一個ARP表項/*** ARP初始化*/ void xarp_init(void) {arp_entry.state = XARP_ENTRY_FREE; }/*** 協議棧的初始化*/ void xnet_init (void) {ethernet_init();xarp_init(); }總結
- 上一篇: SmartPointer
- 下一篇: 烫伤用酱油、牙膏有用吗?