[UEFI]EDK2 IPV4协议主要接口名及对应函数实现源码所在文件及函数名,本地大概实现的PING功能(实际是参考EDK2源码的shellping功能)

代码信息

代码地址及tag:https://github.com/tianocore/edk2/releases/tag/edk2-stable202105

头文件

所在目录:

edk2_code\MdePkg\Include\Protocol\Ip4.h

主要结构体

这里边包含获取状态、配置、发送、接收等等IPV4报文主要方法定义:
struct _EFI_IP4_PROTOCOL {
EFI_IP4_GET_MODE_DATA GetModeData;
EFI_IP4_CONFIGURE Configure;
EFI_IP4_GROUPS Groups;
EFI_IP4_ROUTES Routes;
EFI_IP4_TRANSMIT Transmit;
EFI_IP4_RECEIVE Receive;
EFI_IP4_CANCEL Cancel;
EFI_IP4_POLL Poll;

};

实现部分

这下边是这些方法详细实现代码所在的目录:

edk2_code\NetworkPkg\Ip4Dxe\Ip4Impl.c

函数名:

EFI_STATUS
EFIAPI
EfiIp4Transmit (
IN EFI_IP4_PROTOCOL *This,
IN EFI_IP4_COMPLETION_TOKEN *Token
)

EFI_STATUS
EFIAPI
EfiIp4Receive (
IN EFI_IP4_PROTOCOL *This,
IN EFI_IP4_COMPLETION_TOKEN *Token
)
{

EFI_STATUS
EFIAPI
EfiIp4GetModeData (
IN CONST EFI_IP4_PROTOCOL *This,
OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL,
OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,
OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL
);

EFI_STATUS
EFIAPI
EfiIp4Configure (
IN EFI_IP4_PROTOCOL *This,
IN EFI_IP4_CONFIG_DATA *IpConfigData OPTIONAL
);
等等

代码库中IPV4代码使用的一个示例:

shell命令执行PING,源码所在目录:

edk2_code\ShellPkg\Library\UefiShellNetwork1CommandsLib\Ping.c

函数入口:

SHELL_STATUS
ShellPing (
IN UINT32 SendNumber,
IN UINT32 BufferSize,
IN EFI_IPv6_ADDRESS *SrcAddress,
IN EFI_IPv6_ADDRESS *DstAddress,
IN UINT32 IpChoice
)
{省略源码}
这是在我WINDOWS 10电脑上网络测试,用的是本地IP(192.168.3.3),测试了一个PING不通的IP:192.168.3.5,测试了一个外网IP:www.baidu.com(180.101.49.11)
在这里插入图片描述
在我系统测试效果(注:下图系统所在的电脑跟上图电脑在同一个局域网,并且可以访问外网),看起来有点丑,不过还好,可以看(小红手是我系统的鼠标造型):
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值