uboot ping命令相关发送流程
发送流程为构造ICMP数据包,因为网卡的ARP请求一般没有缓存到你要ping的目标地址的MAC,因而先发送ARP获取MAC 更新ARP缓存,然后再进行ICMP数据报的发送
Ping.c
static int ping_send(void)
{
uchar *pkt;
int eth_hdr_size;
/* XXX always send arp request */
debug_cond(DEBUG_DEV_PKT, "sending ARP for %pI4\n", &NetPingIP);
NetArpWaitPacketIP = NetPingIP;
eth_hdr_size = NetSetEther(NetTxPacket, NetEtherNullAddr, PROT_IP);
//NetTxPacket 保存即将要发送的数据报地址
pkt = (uchar *)NetTxPacket + eth_hdr_size;
//构造ICMP
set_icmp_header(pkt, NetPingIP
UBoot ping命令解析及发送流程

本文详细分析了UBoot中ping命令的执行过程,包括构造ICMP数据包,以及由于目标MAC地址未知,先通过ARP请求获取目标MAC地址并更新ARP缓存,最后发送ICMP数据报。
最低0.47元/天 解锁文章
1665

被折叠的 条评论
为什么被折叠?



