From d1050b9dff1cace252aff86630bfdb59dff5f507 Mon Sep 17 00:00:00 2001 From: Michael Kubacki Date: Sun, 5 Dec 2021 14:54:07 -0800 Subject: [PATCH] NetworkPkg: Apply uncrustify changes REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the NetworkPkg package Cc: Andrew Fish Cc: Leif Lindholm Cc: Michael D Kinney Signed-off-by: Michael Kubacki Reviewed-by: Maciej Rabeda --- NetworkPkg/Application/VConfig/VConfig.c | 104 +- NetworkPkg/ArpDxe/ArpDriver.c | 39 +- NetworkPkg/ArpDxe/ArpDriver.h | 24 +- NetworkPkg/ArpDxe/ArpImpl.c | 176 +- NetworkPkg/ArpDxe/ArpImpl.h | 125 +- NetworkPkg/ArpDxe/ArpMain.c | 44 +- NetworkPkg/ArpDxe/ComponentName.c | 32 +- NetworkPkg/Dhcp4Dxe/ComponentName.c | 47 +- NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c | 175 +- NetworkPkg/Dhcp4Dxe/Dhcp4Driver.h | 6 +- NetworkPkg/Dhcp4Dxe/Dhcp4Impl.c | 317 ++-- NetworkPkg/Dhcp4Dxe/Dhcp4Impl.h | 135 +- NetworkPkg/Dhcp4Dxe/Dhcp4Io.c | 525 +++--- NetworkPkg/Dhcp4Dxe/Dhcp4Io.h | 74 +- NetworkPkg/Dhcp4Dxe/Dhcp4Option.c | 538 +++--- NetworkPkg/Dhcp4Dxe/Dhcp4Option.h | 109 +- NetworkPkg/Dhcp6Dxe/ComponentName.c | 52 +- NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c | 149 +- NetworkPkg/Dhcp6Dxe/Dhcp6Driver.h | 6 +- NetworkPkg/Dhcp6Dxe/Dhcp6Impl.c | 284 +-- NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h | 162 +- NetworkPkg/Dhcp6Dxe/Dhcp6Io.c | 1145 ++++++------ NetworkPkg/Dhcp6Dxe/Dhcp6Io.h | 37 +- NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c | 479 +++-- NetworkPkg/Dhcp6Dxe/Dhcp6Utility.h | 116 +- NetworkPkg/DnsDxe/ComponentName.c | 55 +- NetworkPkg/DnsDxe/DnsDhcp.c | 187 +- NetworkPkg/DnsDxe/DnsDhcp.h | 59 +- NetworkPkg/DnsDxe/DnsDriver.c | 264 +-- NetworkPkg/DnsDxe/DnsDriver.h | 104 +- NetworkPkg/DnsDxe/DnsImpl.c | 819 ++++---- NetworkPkg/DnsDxe/DnsImpl.h | 297 ++- NetworkPkg/DnsDxe/DnsProtocol.c | 343 ++-- NetworkPkg/DpcDxe/Dpc.c | 12 +- NetworkPkg/DpcDxe/Dpc.h | 7 +- NetworkPkg/HttpBootDxe/HttpBootClient.c | 399 ++-- NetworkPkg/HttpBootDxe/HttpBootClient.h | 40 +- .../HttpBootDxe/HttpBootComponentName.c | 25 +- NetworkPkg/HttpBootDxe/HttpBootConfig.c | 283 +-- NetworkPkg/HttpBootDxe/HttpBootConfig.h | 25 +- .../HttpBootDxe/HttpBootConfigNVDataStruc.h | 21 +- NetworkPkg/HttpBootDxe/HttpBootDhcp4.c | 360 ++-- NetworkPkg/HttpBootDxe/HttpBootDhcp4.h | 152 +- NetworkPkg/HttpBootDxe/HttpBootDhcp6.c | 438 ++--- NetworkPkg/HttpBootDxe/HttpBootDhcp6.h | 99 +- NetworkPkg/HttpBootDxe/HttpBootDxe.c | 211 ++- NetworkPkg/HttpBootDxe/HttpBootDxe.h | 142 +- NetworkPkg/HttpBootDxe/HttpBootImpl.c | 294 +-- NetworkPkg/HttpBootDxe/HttpBootImpl.h | 7 +- NetworkPkg/HttpBootDxe/HttpBootSupport.c | 389 ++-- NetworkPkg/HttpBootDxe/HttpBootSupport.h | 54 +- NetworkPkg/HttpDxe/ComponentName.c | 10 +- NetworkPkg/HttpDxe/HttpDns.c | 105 +- NetworkPkg/HttpDxe/HttpDns.h | 12 +- NetworkPkg/HttpDxe/HttpDriver.c | 173 +- NetworkPkg/HttpDxe/HttpDriver.h | 12 +- NetworkPkg/HttpDxe/HttpImpl.c | 291 +-- NetworkPkg/HttpDxe/HttpImpl.h | 35 +- NetworkPkg/HttpDxe/HttpProto.c | 693 ++++--- NetworkPkg/HttpDxe/HttpProto.h | 334 ++-- NetworkPkg/HttpDxe/HttpsSupport.c | 684 +++---- NetworkPkg/HttpDxe/HttpsSupport.h | 61 +- .../HttpUtilitiesDxe/HttpUtilitiesDxe.c | 25 +- .../HttpUtilitiesDxe/HttpUtilitiesDxe.h | 21 +- .../HttpUtilitiesDxe/HttpUtilitiesProtocol.c | 134 +- NetworkPkg/IScsiDxe/ComponentName.c | 66 +- NetworkPkg/IScsiDxe/IScsiAuthenticationInfo.c | 8 +- NetworkPkg/IScsiDxe/IScsiCHAP.c | 634 +++---- NetworkPkg/IScsiDxe/IScsiCHAP.h | 75 +- NetworkPkg/IScsiDxe/IScsiConfig.c | 1654 ++++++++--------- NetworkPkg/IScsiDxe/IScsiConfig.h | 184 +- NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h | 342 ++-- NetworkPkg/IScsiDxe/IScsiDhcp.c | 154 +- NetworkPkg/IScsiDxe/IScsiDhcp.h | 26 +- NetworkPkg/IScsiDxe/IScsiDhcp6.c | 114 +- NetworkPkg/IScsiDxe/IScsiDhcp6.h | 17 +- NetworkPkg/IScsiDxe/IScsiDns.c | 120 +- NetworkPkg/IScsiDxe/IScsiDns.h | 12 +- NetworkPkg/IScsiDxe/IScsiDriver.c | 335 ++-- NetworkPkg/IScsiDxe/IScsiDriver.h | 94 +- NetworkPkg/IScsiDxe/IScsiExtScsiPassThru.c | 107 +- NetworkPkg/IScsiDxe/IScsiIbft.c | 174 +- NetworkPkg/IScsiDxe/IScsiIbft.h | 6 +- NetworkPkg/IScsiDxe/IScsiImpl.h | 130 +- NetworkPkg/IScsiDxe/IScsiInitiatorName.c | 7 +- NetworkPkg/IScsiDxe/IScsiMisc.c | 779 ++++---- NetworkPkg/IScsiDxe/IScsiMisc.h | 93 +- NetworkPkg/IScsiDxe/IScsiProto.c | 927 ++++----- NetworkPkg/IScsiDxe/IScsiProto.h | 702 +++---- NetworkPkg/Include/Guid/HttpBootConfigHii.h | 2 +- NetworkPkg/Include/Guid/HttpTlsCipherList.h | 5 +- NetworkPkg/Include/Guid/IScsiConfigHii.h | 2 +- NetworkPkg/Include/Guid/Ip4Config2Hii.h | 2 +- NetworkPkg/Include/Guid/Ip4IScsiConfigHii.h | 4 +- NetworkPkg/Include/Guid/Ip6ConfigHii.h | 2 +- NetworkPkg/Include/Guid/TlsAuthConfigHii.h | 3 +- NetworkPkg/Include/Guid/TlsAuthentication.h | 5 +- NetworkPkg/Include/Guid/VlanConfigHii.h | 2 +- .../Guid/WifiConnectionManagerConfigHii.h | 2 +- NetworkPkg/Include/Library/HttpIoLib.h | 137 +- NetworkPkg/Include/Library/HttpLib.h | 134 +- NetworkPkg/Include/Library/IpIoLib.h | 251 ++- NetworkPkg/Include/Library/NetLib.h | 714 ++++--- NetworkPkg/Include/Library/TcpIoLib.h | 128 +- NetworkPkg/Include/Library/UdpIoLib.h | 130 +- NetworkPkg/Include/Protocol/Dpc.h | 10 +- NetworkPkg/Include/Protocol/HttpCallback.h | 10 +- NetworkPkg/Ip4Dxe/ComponentName.c | 51 +- NetworkPkg/Ip4Dxe/Ip4Common.c | 86 +- NetworkPkg/Ip4Dxe/Ip4Common.h | 57 +- NetworkPkg/Ip4Dxe/Ip4Config2Impl.c | 539 +++--- NetworkPkg/Ip4Dxe/Ip4Config2Impl.h | 152 +- NetworkPkg/Ip4Dxe/Ip4Config2Nv.c | 543 +++--- NetworkPkg/Ip4Dxe/Ip4Config2Nv.h | 6 +- NetworkPkg/Ip4Dxe/Ip4Driver.c | 158 +- NetworkPkg/Ip4Dxe/Ip4Driver.h | 22 +- NetworkPkg/Ip4Dxe/Ip4Icmp.c | 192 +- NetworkPkg/Ip4Dxe/Ip4Icmp.h | 93 +- NetworkPkg/Ip4Dxe/Ip4If.c | 341 ++-- NetworkPkg/Ip4Dxe/Ip4If.h | 156 +- NetworkPkg/Ip4Dxe/Ip4Igmp.c | 217 +-- NetworkPkg/Ip4Dxe/Ip4Igmp.h | 63 +- NetworkPkg/Ip4Dxe/Ip4Impl.c | 485 +++-- NetworkPkg/Ip4Dxe/Ip4Impl.h | 174 +- NetworkPkg/Ip4Dxe/Ip4Input.c | 415 ++--- NetworkPkg/Ip4Dxe/Ip4Input.h | 88 +- NetworkPkg/Ip4Dxe/Ip4NvData.h | 39 +- NetworkPkg/Ip4Dxe/Ip4Option.c | 145 +- NetworkPkg/Ip4Dxe/Ip4Option.h | 27 +- NetworkPkg/Ip4Dxe/Ip4Output.c | 148 +- NetworkPkg/Ip4Dxe/Ip4Output.h | 42 +- NetworkPkg/Ip4Dxe/Ip4Route.c | 187 +- NetworkPkg/Ip4Dxe/Ip4Route.h | 79 +- NetworkPkg/Ip6Dxe/ComponentName.c | 77 +- NetworkPkg/Ip6Dxe/Ip6Common.c | 124 +- NetworkPkg/Ip6Dxe/Ip6Common.h | 91 +- NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c | 317 ++-- NetworkPkg/Ip6Dxe/Ip6ConfigImpl.h | 151 +- NetworkPkg/Ip6Dxe/Ip6ConfigNv.c | 699 +++---- NetworkPkg/Ip6Dxe/Ip6ConfigNv.h | 12 +- NetworkPkg/Ip6Dxe/Ip6Driver.c | 201 +- NetworkPkg/Ip6Dxe/Ip6Driver.h | 22 +- NetworkPkg/Ip6Dxe/Ip6Icmp.c | 241 ++- NetworkPkg/Ip6Dxe/Ip6Icmp.h | 36 +- NetworkPkg/Ip6Dxe/Ip6If.c | 210 ++- NetworkPkg/Ip6Dxe/Ip6If.h | 130 +- NetworkPkg/Ip6Dxe/Ip6Impl.c | 361 ++-- NetworkPkg/Ip6Dxe/Ip6Impl.h | 212 +-- NetworkPkg/Ip6Dxe/Ip6Input.c | 480 +++-- NetworkPkg/Ip6Dxe/Ip6Input.h | 86 +- NetworkPkg/Ip6Dxe/Ip6Mld.c | 232 +-- NetworkPkg/Ip6Dxe/Ip6Mld.h | 64 +- NetworkPkg/Ip6Dxe/Ip6Nd.c | 1554 ++++++++-------- NetworkPkg/Ip6Dxe/Ip6Nd.h | 312 ++-- NetworkPkg/Ip6Dxe/Ip6NvData.h | 75 +- NetworkPkg/Ip6Dxe/Ip6Option.c | 805 ++++---- NetworkPkg/Ip6Dxe/Ip6Option.h | 88 +- NetworkPkg/Ip6Dxe/Ip6Output.c | 357 ++-- NetworkPkg/Ip6Dxe/Ip6Output.h | 48 +- NetworkPkg/Ip6Dxe/Ip6Route.c | 172 +- NetworkPkg/Ip6Dxe/Ip6Route.h | 108 +- .../Library/DxeHttpIoLib/DxeHttpIoLib.c | 369 ++-- NetworkPkg/Library/DxeHttpLib/DxeHttpLib.c | 1330 ++++++------- NetworkPkg/Library/DxeHttpLib/DxeHttpLib.h | 29 +- NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib.c | 714 ++++--- NetworkPkg/Library/DxeNetLib/DxeNetLib.c | 891 +++++---- NetworkPkg/Library/DxeNetLib/NetBuffer.c | 576 +++--- NetworkPkg/Library/DxeTcpIoLib/DxeTcpIoLib.c | 287 ++- NetworkPkg/Library/DxeUdpIoLib/DxeUdpIoLib.c | 399 ++-- NetworkPkg/MnpDxe/ComponentName.c | 31 +- NetworkPkg/MnpDxe/ComponentName.h | 22 +- NetworkPkg/MnpDxe/MnpConfig.c | 395 ++-- NetworkPkg/MnpDxe/MnpDriver.c | 100 +- NetworkPkg/MnpDxe/MnpDriver.h | 109 +- NetworkPkg/MnpDxe/MnpImpl.h | 242 +-- NetworkPkg/MnpDxe/MnpIo.c | 260 ++- NetworkPkg/MnpDxe/MnpMain.c | 134 +- NetworkPkg/MnpDxe/MnpVlan.c | 203 +- NetworkPkg/MnpDxe/MnpVlan.h | 57 +- NetworkPkg/Mtftp4Dxe/ComponentName.c | 54 +- NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c | 145 +- NetworkPkg/Mtftp4Dxe/Mtftp4Driver.h | 22 +- NetworkPkg/Mtftp4Dxe/Mtftp4Impl.c | 287 ++- NetworkPkg/Mtftp4Dxe/Mtftp4Impl.h | 125 +- NetworkPkg/Mtftp4Dxe/Mtftp4Option.c | 152 +- NetworkPkg/Mtftp4Dxe/Mtftp4Option.h | 53 +- NetworkPkg/Mtftp4Dxe/Mtftp4Rrq.c | 268 ++- NetworkPkg/Mtftp4Dxe/Mtftp4Support.c | 247 ++- NetworkPkg/Mtftp4Dxe/Mtftp4Support.h | 55 +- NetworkPkg/Mtftp4Dxe/Mtftp4Wrq.c | 170 +- NetworkPkg/Mtftp6Dxe/ComponentName.c | 68 +- NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c | 162 +- NetworkPkg/Mtftp6Dxe/Mtftp6Driver.h | 22 +- NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c | 117 +- NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h | 176 +- NetworkPkg/Mtftp6Dxe/Mtftp6Option.c | 136 +- NetworkPkg/Mtftp6Dxe/Mtftp6Option.h | 61 +- NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c | 310 ++- NetworkPkg/Mtftp6Dxe/Mtftp6Support.c | 386 ++-- NetworkPkg/Mtftp6Dxe/Mtftp6Support.h | 121 +- NetworkPkg/Mtftp6Dxe/Mtftp6Wrq.c | 204 +- NetworkPkg/SnpDxe/Callback.c | 276 +-- NetworkPkg/SnpDxe/ComponentName.c | 53 +- NetworkPkg/SnpDxe/Get_status.c | 85 +- NetworkPkg/SnpDxe/Initialize.c | 116 +- NetworkPkg/SnpDxe/Mcast_ip_to_mac.c | 121 +- NetworkPkg/SnpDxe/Nvdata.c | 114 +- NetworkPkg/SnpDxe/Receive.c | 131 +- NetworkPkg/SnpDxe/Receive_filters.c | 177 +- NetworkPkg/SnpDxe/Reset.c | 52 +- NetworkPkg/SnpDxe/Shutdown.c | 61 +- NetworkPkg/SnpDxe/Snp.c | 240 ++- NetworkPkg/SnpDxe/Snp.h | 252 ++- NetworkPkg/SnpDxe/Start.c | 77 +- NetworkPkg/SnpDxe/Station_address.c | 100 +- NetworkPkg/SnpDxe/Statistics.c | 139 +- NetworkPkg/SnpDxe/Stop.c | 51 +- NetworkPkg/SnpDxe/Transmit.c | 244 ++- NetworkPkg/SnpDxe/WaitForPacket.c | 58 +- NetworkPkg/TcpDxe/ComponentName.c | 62 +- NetworkPkg/TcpDxe/SockImpl.c | 257 ++- NetworkPkg/TcpDxe/SockImpl.h | 16 +- NetworkPkg/TcpDxe/SockInterface.c | 277 ++- NetworkPkg/TcpDxe/Socket.h | 268 +-- NetworkPkg/TcpDxe/TcpDispatcher.c | 476 +++-- NetworkPkg/TcpDxe/TcpDriver.c | 109 +- NetworkPkg/TcpDxe/TcpDriver.h | 28 +- NetworkPkg/TcpDxe/TcpFunc.h | 103 +- NetworkPkg/TcpDxe/TcpInput.c | 613 +++--- NetworkPkg/TcpDxe/TcpIo.c | 31 +- NetworkPkg/TcpDxe/TcpMain.c | 256 +-- NetworkPkg/TcpDxe/TcpMain.h | 156 +- NetworkPkg/TcpDxe/TcpMisc.c | 437 +++-- NetworkPkg/TcpDxe/TcpOption.c | 157 +- NetworkPkg/TcpDxe/TcpOption.h | 38 +- NetworkPkg/TcpDxe/TcpOutput.c | 343 ++-- NetworkPkg/TcpDxe/TcpProto.h | 324 ++-- NetworkPkg/TcpDxe/TcpTimer.c | 138 +- .../TlsAuthConfigDxe/TlsAuthConfigDxe.c | 9 +- .../TlsAuthConfigDxe/TlsAuthConfigImpl.c | 712 +++---- .../TlsAuthConfigDxe/TlsAuthConfigImpl.h | 38 +- .../TlsAuthConfigDxe/TlsAuthConfigNvData.h | 48 +- NetworkPkg/TlsDxe/TlsConfigProtocol.c | 72 +- NetworkPkg/TlsDxe/TlsDriver.c | 72 +- NetworkPkg/TlsDxe/TlsDriver.h | 40 +- NetworkPkg/TlsDxe/TlsImpl.c | 132 +- NetworkPkg/TlsDxe/TlsImpl.h | 46 +- NetworkPkg/TlsDxe/TlsProtocol.c | 708 +++---- NetworkPkg/Udp4Dxe/ComponentName.c | 52 +- NetworkPkg/Udp4Dxe/Udp4Driver.c | 52 +- NetworkPkg/Udp4Dxe/Udp4Driver.h | 1 - NetworkPkg/Udp4Dxe/Udp4Impl.c | 194 +- NetworkPkg/Udp4Dxe/Udp4Impl.h | 91 +- NetworkPkg/Udp4Dxe/Udp4Main.c | 69 +- NetworkPkg/Udp6Dxe/ComponentName.c | 29 +- NetworkPkg/Udp6Dxe/Udp6Driver.c | 85 +- NetworkPkg/Udp6Dxe/Udp6Driver.h | 1 - NetworkPkg/Udp6Dxe/Udp6Impl.c | 228 ++- NetworkPkg/Udp6Dxe/Udp6Impl.h | 97 +- NetworkPkg/Udp6Dxe/Udp6Main.c | 52 +- NetworkPkg/UefiPxeBcDxe/ComponentName.c | 27 +- NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c | 392 ++-- NetworkPkg/UefiPxeBcDxe/PxeBcBoot.h | 35 +- NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c | 767 ++++---- NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.h | 215 ++- NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c | 973 +++++----- NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.h | 137 +- NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c | 365 ++-- NetworkPkg/UefiPxeBcDxe/PxeBcDriver.h | 7 +- NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c | 693 +++---- NetworkPkg/UefiPxeBcDxe/PxeBcImpl.h | 240 +-- NetworkPkg/UefiPxeBcDxe/PxeBcMtftp.c | 570 +++--- NetworkPkg/UefiPxeBcDxe/PxeBcMtftp.h | 67 +- NetworkPkg/UefiPxeBcDxe/PxeBcSupport.c | 520 +++--- NetworkPkg/UefiPxeBcDxe/PxeBcSupport.h | 201 +- NetworkPkg/VlanConfigDxe/ComponentName.c | 24 +- NetworkPkg/VlanConfigDxe/VlanConfigDriver.c | 47 +- NetworkPkg/VlanConfigDxe/VlanConfigImpl.c | 257 +-- NetworkPkg/VlanConfigDxe/VlanConfigImpl.h | 107 +- NetworkPkg/VlanConfigDxe/VlanConfigNvData.h | 18 +- .../WifiConnectionManagerDxe/EapContext.h | 10 +- .../WifiConnectionMgrComponentName.c | 18 +- .../WifiConnectionMgrConfig.h | 10 +- .../WifiConnectionMgrConfigNVDataStruct.h | 174 +- .../WifiConnectionMgrDriver.c | 160 +- .../WifiConnectionMgrDxe.h | 117 +- .../WifiConnectionMgrFileUtil.c | 134 +- .../WifiConnectionMgrFileUtil.h | 16 +- .../WifiConnectionMgrHiiConfigAccess.c | 1282 ++++++------- .../WifiConnectionMgrHiiConfigAccess.h | 26 +- .../WifiConnectionMgrImpl.c | 734 ++++---- .../WifiConnectionMgrImpl.h | 12 +- .../WifiConnectionMgrMisc.c | 388 ++-- .../WifiConnectionMgrMisc.h | 75 +- 294 files changed, 29834 insertions(+), 30386 deletions(-) diff --git a/NetworkPkg/Application/VConfig/VConfig.c b/NetworkPkg/Application/VConfig/VConfig.c index b50b07b972..2c323e377b 100644 --- a/NetworkPkg/Application/VConfig/VConfig.c +++ b/NetworkPkg/Application/VConfig/VConfig.c @@ -23,20 +23,20 @@ // // String token ID of VConfig command help message text. // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringVConfigHelpTokenId = STRING_TOKEN (STR_VCONFIG_HELP); +GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringVConfigHelpTokenId = STRING_TOKEN (STR_VCONFIG_HELP); -#define INVALID_NIC_INDEX 0xffff -#define INVALID_VLAN_ID 0xffff +#define INVALID_NIC_INDEX 0xffff +#define INVALID_VLAN_ID 0xffff // // This is the generated String package data for all .UNI files. // This data array is ready to be used as input of HiiAddPackages() to // create a packagelist (which contains Form packages, String packages, etc). // -extern UINT8 VConfigStrings[]; +extern UINT8 VConfigStrings[]; -EFI_HANDLE mImageHandle = NULL; -EFI_HII_HANDLE mHiiHandle = NULL; +EFI_HANDLE mImageHandle = NULL; +EFI_HII_HANDLE mHiiHandle = NULL; SHELL_PARAM_ITEM mParamList[] = { { @@ -66,14 +66,14 @@ SHELL_PARAM_ITEM mParamList[] = { **/ VOID LocateNicHandleBuffer ( - OUT UINTN *NumberOfHandles, - OUT EFI_HANDLE **HandleBuffer + OUT UINTN *NumberOfHandles, + OUT EFI_HANDLE **HandleBuffer ) { EFI_STATUS Status; - *NumberOfHandles = 0; - *HandleBuffer = NULL; + *NumberOfHandles = 0; + *HandleBuffer = NULL; Status = gBS->LocateHandleBuffer ( ByProtocol, @@ -98,7 +98,7 @@ LocateNicHandleBuffer ( **/ UINTN NicNameToIndex ( - IN CHAR16 *Name + IN CHAR16 *Name ) { CHAR16 *Str; @@ -116,7 +116,7 @@ NicNameToIndex ( Str++; } - return (UINT16) StrDecimalToUintn (Name + 3); + return (UINT16)StrDecimalToUintn (Name + 3); } /** @@ -130,7 +130,7 @@ NicNameToIndex ( **/ EFI_HANDLE NicNameToHandle ( - IN CHAR16 *Name + IN CHAR16 *Name ) { UINTN NumberOfHandles; @@ -168,7 +168,7 @@ NicNameToHandle ( **/ EFI_VLAN_CONFIG_PROTOCOL * OpenVlanConfigProtocol ( - IN EFI_HANDLE Handle + IN EFI_HANDLE Handle ) { EFI_VLAN_CONFIG_PROTOCOL *VlanConfig; @@ -177,7 +177,7 @@ OpenVlanConfigProtocol ( gBS->OpenProtocol ( Handle, &gEfiVlanConfigProtocolGuid, - (VOID **) &VlanConfig, + (VOID **)&VlanConfig, mImageHandle, Handle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -194,7 +194,7 @@ OpenVlanConfigProtocol ( **/ VOID CloseVlanConfigProtocol ( - IN EFI_HANDLE Handle + IN EFI_HANDLE Handle ) { gBS->CloseProtocol ( @@ -214,8 +214,8 @@ CloseVlanConfigProtocol ( **/ VOID ShowNicVlanInfo ( - IN EFI_HANDLE Handle, - IN UINTN NicIndex + IN EFI_HANDLE Handle, + IN UINTN NicIndex ) { CHAR16 *MacStr; @@ -227,11 +227,11 @@ ShowNicVlanInfo ( VlanConfig = OpenVlanConfigProtocol (Handle); if (VlanConfig == NULL) { - return ; + return; } - MacStr = NULL; - Status = NetLibGetMacString (Handle, mImageHandle, &MacStr); + MacStr = NULL; + Status = NetLibGetMacString (Handle, mImageHandle, &MacStr); if (EFI_ERROR (Status)) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_VCONFIG_MAC_FAIL), mHiiHandle, Status); goto Exit; @@ -281,7 +281,7 @@ Exit: **/ VOID DisplayVlan ( - IN CHAR16 *Name OPTIONAL + IN CHAR16 *Name OPTIONAL ) { UINTN NumberOfHandles; @@ -295,11 +295,11 @@ DisplayVlan ( // NicHandle = NicNameToHandle (Name); if (NicHandle == NULL) { - return ; + return; } ShowNicVlanInfo (NicHandle, 0); - return ; + return; } // @@ -307,7 +307,7 @@ DisplayVlan ( // LocateNicHandleBuffer (&NumberOfHandles, &HandleBuffer); if (NumberOfHandles == 0) { - return ; + return; } for (Index = 0; Index < NumberOfHandles; Index++) { @@ -327,7 +327,7 @@ DisplayVlan ( **/ UINT16 StrToVlanId ( - IN CHAR16 *String + IN CHAR16 *String ) { CHAR16 *Str; @@ -345,7 +345,7 @@ StrToVlanId ( return INVALID_VLAN_ID; } - return (UINT16) StrDecimalToUintn (String); + return (UINT16)StrDecimalToUintn (String); } /** @@ -356,7 +356,7 @@ StrToVlanId ( **/ VOID AddVlan ( - IN CHAR16 *ParamStr + IN CHAR16 *ParamStr ) { CHAR16 *Name; @@ -371,17 +371,17 @@ AddVlan ( EFI_VLAN_CONFIG_PROTOCOL *VlanConfig; EFI_STATUS Status; - VlanConfig = NULL; - Priority = 0; + VlanConfig = NULL; + Priority = 0; if (ParamStr == NULL) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_VCONFIG_NO_IF), mHiiHandle); - return ; + return; } StrPtr = AllocateCopyPool (StrSize (ParamStr), ParamStr); if (StrPtr == NULL) { - return ; + return; } Name = StrPtr; @@ -459,7 +459,7 @@ AddVlan ( // // Set VLAN // - Status = VlanConfig->Set (VlanConfig, (UINT16) VlanId, (UINT8) Priority); + Status = VlanConfig->Set (VlanConfig, (UINT16)VlanId, (UINT8)Priority); if (EFI_ERROR (Status)) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_VCONFIG_SET_FAIL), mHiiHandle, Status); goto Exit; @@ -468,7 +468,7 @@ AddVlan ( // // Connect the VLAN device. // - VlanHandle = NetLibGetVlanHandle (Handle, (UINT16) VlanId); + VlanHandle = NetLibGetVlanHandle (Handle, (UINT16)VlanId); if (VlanHandle != NULL) { gBS->ConnectController (VlanHandle, NULL, NULL, TRUE); } @@ -491,7 +491,7 @@ Exit: **/ VOID DeleteVlan ( - IN CHAR16 *ParamStr + IN CHAR16 *ParamStr ) { CHAR16 *Name; @@ -508,12 +508,12 @@ DeleteVlan ( if (ParamStr == NULL) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_VCONFIG_NO_IF), mHiiHandle); - return ; + return; } StrPtr = AllocateCopyPool (StrSize (ParamStr), ParamStr); if (StrPtr == NULL) { - return ; + return; } Name = StrPtr; @@ -541,7 +541,7 @@ DeleteVlan ( // // Check VLAN ID // - if (VlanIdStr == NULL || *VlanIdStr == 0) { + if ((VlanIdStr == NULL) || (*VlanIdStr == 0)) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_VCONFIG_NO_VID), mHiiHandle); goto Exit; } @@ -555,7 +555,7 @@ DeleteVlan ( // // Delete VLAN. // - Status = VlanConfig->Remove (VlanConfig, (UINT16) VlanId); + Status = VlanConfig->Remove (VlanConfig, (UINT16)VlanId); if (EFI_ERROR (Status)) { if (Status == EFI_NOT_FOUND) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_VCONFIG_NOT_FOUND), mHiiHandle); @@ -606,10 +606,10 @@ VlanConfigMain ( IN EFI_SYSTEM_TABLE *SystemTable ) { - LIST_ENTRY *List; - CONST CHAR16 *Str; - EFI_HII_PACKAGE_LIST_HEADER *PackageList; - EFI_STATUS Status; + LIST_ENTRY *List; + CONST CHAR16 *Str; + EFI_HII_PACKAGE_LIST_HEADER *PackageList; + EFI_STATUS Status; mImageHandle = ImageHandle; @@ -619,7 +619,7 @@ VlanConfigMain ( Status = gBS->OpenProtocol ( ImageHandle, &gEfiHiiPackageListProtocolGuid, - (VOID **) &PackageList, + (VOID **)&PackageList, ImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -632,11 +632,11 @@ VlanConfigMain ( // Publish HII package list to HII Database. // Status = gHiiDatabase->NewPackageList ( - gHiiDatabase, - PackageList, - NULL, - &mHiiHandle - ); + gHiiDatabase, + PackageList, + NULL, + &mHiiHandle + ); if (EFI_ERROR (Status)) { return Status; } @@ -654,19 +654,19 @@ VlanConfigMain ( if (ShellCommandLineGetFlag (List, L"-l")) { Str = ShellCommandLineGetValue (List, L"-l"); - DisplayVlan ((CHAR16 *) Str); + DisplayVlan ((CHAR16 *)Str); goto Exit; } if (ShellCommandLineGetFlag (List, L"-a")) { Str = ShellCommandLineGetValue (List, L"-a"); - AddVlan ((CHAR16 *) Str); + AddVlan ((CHAR16 *)Str); goto Exit; } if (ShellCommandLineGetFlag (List, L"-d")) { Str = ShellCommandLineGetValue (List, L"-d"); - DeleteVlan ((CHAR16 *) Str); + DeleteVlan ((CHAR16 *)Str); goto Exit; } diff --git a/NetworkPkg/ArpDxe/ArpDriver.c b/NetworkPkg/ArpDxe/ArpDriver.c index eeef7f68e1..c80da6d828 100644 --- a/NetworkPkg/ArpDxe/ArpDriver.c +++ b/NetworkPkg/ArpDxe/ArpDriver.c @@ -9,7 +9,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "ArpDriver.h" #include "ArpImpl.h" -EFI_DRIVER_BINDING_PROTOCOL gArpDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gArpDriverBinding = { ArpDriverBindingSupported, ArpDriverBindingStart, ArpDriverBindingStop, @@ -18,7 +18,6 @@ EFI_DRIVER_BINDING_PROTOCOL gArpDriverBinding = { NULL }; - /** Create and initialize the arp service context data. @@ -37,8 +36,8 @@ EFI_DRIVER_BINDING_PROTOCOL gArpDriverBinding = { **/ EFI_STATUS ArpCreateService ( - IN EFI_HANDLE ImageHandle, - IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE ControllerHandle, IN OUT ARP_SERVICE_DATA *ArpService ) { @@ -176,7 +175,6 @@ ERROR_EXIT: return Status; } - /** Clean the arp service context data. @@ -226,7 +224,7 @@ ArpCleanService ( // // Destroy the mnp child. // - NetLibDestroyServiceChild( + NetLibDestroyServiceChild ( ArpService->ControllerHandle, ArpService->ImageHandle, &gEfiManagedNetworkServiceBindingProtocolGuid, @@ -248,19 +246,19 @@ ArpCleanService ( EFI_STATUS EFIAPI ArpDestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { ARP_INSTANCE_DATA *Instance; EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - Instance = NET_LIST_USER_STRUCT_S (Entry, ARP_INSTANCE_DATA, List, ARP_INSTANCE_DATA_SIGNATURE); - ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *) Context; + Instance = NET_LIST_USER_STRUCT_S (Entry, ARP_INSTANCE_DATA, List, ARP_INSTANCE_DATA_SIGNATURE); + ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *)Context; return ServiceBinding->DestroyChild (ServiceBinding, Instance->Handle); } @@ -334,7 +332,6 @@ ArpDriverBindingSupported ( return Status; } - /** Start this driver on ControllerHandle. @@ -380,7 +377,7 @@ ArpDriverBindingStart ( // // Allocate a zero pool for ArpService. // - ArpService = AllocateZeroPool (sizeof(ARP_SERVICE_DATA)); + ArpService = AllocateZeroPool (sizeof (ARP_SERVICE_DATA)); if (ArpService == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -427,7 +424,6 @@ ERROR: return Status; } - /** Stop this driver on ControllerHandle. @@ -502,7 +498,7 @@ ArpDriverBindingStop ( // // NumberOfChildren is not zero, destroy all the ARP children instances. // - List = &ArpService->ChildrenList; + List = &ArpService->ChildrenList; Status = NetDestroyLinkList ( List, ArpDestroyChildEntryInHandleBuffer, @@ -576,7 +572,7 @@ ArpServiceBindingCreateChild ( // // Allocate memory for the instance context data. // - Instance = AllocateZeroPool (sizeof(ARP_INSTANCE_DATA)); + Instance = AllocateZeroPool (sizeof (ARP_INSTANCE_DATA)); if (Instance == NULL) { DEBUG ((DEBUG_ERROR, "ArpSBCreateChild: Failed to allocate memory for Instance.\n")); @@ -615,7 +611,7 @@ ArpServiceBindingCreateChild ( Status = gBS->OpenProtocol ( ArpService->MnpChildHandle, &gEfiManagedNetworkProtocolGuid, - (VOID **) &Mnp, + (VOID **)&Mnp, gArpDriverBinding.DriverBindingHandle, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -637,7 +633,6 @@ ArpServiceBindingCreateChild ( ERROR: if (EFI_ERROR (Status)) { - gBS->CloseProtocol ( ArpService->MnpChildHandle, &gEfiManagedNetworkProtocolGuid, @@ -661,7 +656,6 @@ ERROR: return Status; } - /** Destroys a child handle with a protocol installed on it. @@ -746,8 +740,11 @@ ArpServiceBindingDestroyChild ( NULL ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "ArpSBDestroyChild: Failed to uninstall the arp protocol, %r.\n", - Status)); + DEBUG (( + DEBUG_ERROR, + "ArpSBDestroyChild: Failed to uninstall the arp protocol, %r.\n", + Status + )); Instance->InDestroy = FALSE; return Status; diff --git a/NetworkPkg/ArpDxe/ArpDriver.h b/NetworkPkg/ArpDxe/ArpDriver.h index 7dbc1c1878..2966bac310 100644 --- a/NetworkPkg/ArpDxe/ArpDriver.h +++ b/NetworkPkg/ArpDxe/ArpDriver.h @@ -9,7 +9,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef _ARP_DRIVER_H_ #define _ARP_DRIVER_H_ - #include #include @@ -21,17 +20,17 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - // // Global variables // -extern EFI_DRIVER_BINDING_PROTOCOL gArpDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gArpComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gArpComponentName2; +extern EFI_DRIVER_BINDING_PROTOCOL gArpDriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gArpComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gArpComponentName2; // // Function prototypes for the Driver Binding Protocol // + /** Tests to see if this driver supports a given controller. @@ -199,10 +198,10 @@ ArpServiceBindingDestroyChild ( IN EFI_HANDLE ChildHandle ); - // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user readable name of the driver. @@ -250,7 +249,6 @@ ArpComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -322,13 +320,11 @@ ArpComponentNameGetDriverName ( EFI_STATUS EFIAPI ArpComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); - #endif - diff --git a/NetworkPkg/ArpDxe/ArpImpl.c b/NetworkPkg/ArpDxe/ArpImpl.c index ad5cb3cf7b..9d0d4dcd2a 100644 --- a/NetworkPkg/ArpDxe/ArpImpl.c +++ b/NetworkPkg/ArpDxe/ArpImpl.c @@ -21,7 +21,6 @@ EFI_ARP_PROTOCOL mEfiArpProtocolTemplate = { ArpCancel }; - /** Initialize the instance context data. @@ -51,7 +50,6 @@ ArpInitInstance ( InitializeListHead (&Instance->List); } - /** Process the Arp packets received from Mnp, the procedure conforms to RFC826. @@ -64,7 +62,7 @@ ArpInitInstance ( VOID EFIAPI ArpOnFrameRcvdDpc ( - IN VOID *Context + IN VOID *Context ) { EFI_STATUS Status; @@ -119,7 +117,7 @@ ArpOnFrameRcvdDpc ( // // Convert the byte order of the multi-byte fields. // - Head = (ARP_HEAD *) RxData->PacketData; + Head = (ARP_HEAD *)RxData->PacketData; Head->HwType = NTOHS (Head->HwType); Head->ProtoType = NTOHS (Head->ProtoType); Head->OpCode = NTOHS (Head->OpCode); @@ -129,8 +127,9 @@ ArpOnFrameRcvdDpc ( } if ((Head->HwType != ArpService->SnpMode.IfType) || - (Head->HwAddrLen != ArpService->SnpMode.HwAddressSize) || - (RxData->ProtocolType != ARP_ETHER_PROTO_TYPE)) { + (Head->HwAddrLen != ArpService->SnpMode.HwAddressSize) || + (RxData->ProtocolType != ARP_ETHER_PROTO_TYPE)) + { // // The hardware type or the hardware address length doesn't match. // There is a sanity check for the protocol type too. @@ -182,8 +181,9 @@ ArpOnFrameRcvdDpc ( ConfigData = &Instance->ConfigData; if ((Instance->Configured) && - (Head->ProtoType == ConfigData->SwAddressType) && - (Head->ProtoAddrLen == ConfigData->SwAddressLength)) { + (Head->ProtoType == ConfigData->SwAddressType) && + (Head->ProtoAddrLen == ConfigData->SwAddressLength)) + { // // The protocol type is matched for the received arp packet. // @@ -192,7 +192,8 @@ ArpOnFrameRcvdDpc ( (VOID *)ArpAddress.TargetProtoAddr, ConfigData->StationAddress, ConfigData->SwAddressLength - )) { + )) + { // // The arp driver has the target address required by the received arp packet. // @@ -226,7 +227,7 @@ ArpOnFrameRcvdDpc ( // ArpFillAddressInCacheEntry (CacheEntry, &SenderAddress[Hardware], NULL); CacheEntry->DecayTime = CacheEntry->DefaultDecayTime; - MergeFlag = TRUE; + MergeFlag = TRUE; } if (!IsTarget) { @@ -305,10 +306,15 @@ RESTART_RECEIVE: Status = ArpService->Mnp->Receive (ArpService->Mnp, RxToken); DEBUG_CODE_BEGIN (); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "ArpOnFrameRcvd: ArpService->Mnp->Receive " - "failed, %r\n.", Status)); - } + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "ArpOnFrameRcvd: ArpService->Mnp->Receive " + "failed, %r\n.", + Status + )); + } + DEBUG_CODE_END (); } @@ -347,7 +353,7 @@ ArpOnFrameRcvd ( VOID EFIAPI ArpOnFrameSentDpc ( - IN VOID *Context + IN VOID *Context ) { EFI_MANAGED_NETWORK_COMPLETION_TOKEN *TxToken; @@ -359,9 +365,10 @@ ArpOnFrameSentDpc ( TxData = TxToken->Packet.TxData; DEBUG_CODE_BEGIN (); - if (EFI_ERROR (TxToken->Status)) { - DEBUG ((DEBUG_ERROR, "ArpOnFrameSent: TxToken->Status, %r.\n", TxToken->Status)); - } + if (EFI_ERROR (TxToken->Status)) { + DEBUG ((DEBUG_ERROR, "ArpOnFrameSent: TxToken->Status, %r.\n", TxToken->Status)); + } + DEBUG_CODE_END (); // @@ -396,7 +403,6 @@ ArpOnFrameSent ( QueueDpc (TPL_CALLBACK, ArpOnFrameSentDpc, Context); } - /** Process the arp cache olding and drive the retrying arp requests. @@ -449,7 +455,7 @@ ArpTimerHandler ( // // resend the ARP request. // - ASSERT (!IsListEmpty(&CacheEntry->UserRequestList)); + ASSERT (!IsListEmpty (&CacheEntry->UserRequestList)); ContextEntry = CacheEntry->UserRequestList.ForwardLink; RequestContext = NET_LIST_USER_STRUCT (ContextEntry, USER_REQUEST_CONTEXT, List); @@ -524,7 +530,6 @@ ArpTimerHandler ( } } - /** Match the two NET_ARP_ADDRESSes. @@ -543,7 +548,8 @@ ArpMatchAddress ( ASSERT (AddressOne != NULL && AddressTwo != NULL); if ((AddressOne->Type != AddressTwo->Type) || - (AddressOne->Length != AddressTwo->Length)) { + (AddressOne->Length != AddressTwo->Length)) + { // // Either Type or Length doesn't match. // @@ -551,11 +557,12 @@ ArpMatchAddress ( } if ((AddressOne->AddressPtr != NULL) && - (CompareMem ( - AddressOne->AddressPtr, - AddressTwo->AddressPtr, - AddressOne->Length - ) != 0)) { + (CompareMem ( + AddressOne->AddressPtr, + AddressTwo->AddressPtr, + AddressOne->Length + ) != 0)) + { // // The address is not the same. // @@ -565,7 +572,6 @@ ArpMatchAddress ( return TRUE; } - /** Find the CacheEntry which matches the requirements in the specified CacheTable. @@ -581,11 +587,11 @@ ArpMatchAddress ( **/ ARP_CACHE_ENTRY * ArpFindNextCacheEntryInTable ( - IN LIST_ENTRY *CacheTable, - IN LIST_ENTRY *StartEntry, - IN FIND_OPTYPE FindOpType, - IN NET_ARP_ADDRESS *ProtocolAddress OPTIONAL, - IN NET_ARP_ADDRESS *HardwareAddress OPTIONAL + IN LIST_ENTRY *CacheTable, + IN LIST_ENTRY *StartEntry, + IN FIND_OPTYPE FindOpType, + IN NET_ARP_ADDRESS *ProtocolAddress OPTIONAL, + IN NET_ARP_ADDRESS *HardwareAddress OPTIONAL ) { LIST_ENTRY *Entry; @@ -637,7 +643,6 @@ ArpFindNextCacheEntryInTable ( return NULL; } - /** Find the CacheEntry, using ProtocolAddress or HardwareAddress or both, as the keyword, in the DeniedCacheTable. @@ -698,7 +703,6 @@ ArpFindDeniedCacheEntry ( return CacheEntry; } - /** Allocate a cache entry and initialize it. @@ -734,7 +738,7 @@ ArpAllocCacheEntry ( // // Init the address pointers to point to the concrete buffer. // - Address = &CacheEntry->Addresses[Index]; + Address = &CacheEntry->Addresses[Index]; Address->AddressPtr = Address->Buffer.ProtoAddress; } @@ -765,7 +769,6 @@ ArpAllocCacheEntry ( return CacheEntry; } - /** Turn the CacheEntry into the resolved status. @@ -797,7 +800,8 @@ ArpAddressResolved ( Context = NET_LIST_USER_STRUCT (Entry, USER_REQUEST_CONTEXT, List); if (((Instance == NULL) || (Context->Instance == Instance)) && - ((UserEvent == NULL) || (Context->UserRequestEvent == UserEvent))) { + ((UserEvent == NULL) || (Context->UserRequestEvent == UserEvent))) + { // // Copy the address to the user-provided buffer and notify the user. // @@ -826,7 +830,6 @@ ArpAddressResolved ( return Count; } - /** Fill the addresses in the CacheEntry using the information passed in by HwAddr and SwAddr. @@ -881,7 +884,6 @@ ArpFillAddressInCacheEntry ( } } - /** Configure the instance using the ConfigData. ConfigData is already validated. @@ -912,18 +914,18 @@ ArpConfigureInstance ( OldConfigData = &Instance->ConfigData; if (ConfigData != NULL) { - if (Instance->Configured) { // // The instance is configured, check the unchangeable fields. // if ((OldConfigData->SwAddressType != ConfigData->SwAddressType) || - (OldConfigData->SwAddressLength != ConfigData->SwAddressLength) || - (CompareMem ( - OldConfigData->StationAddress, - ConfigData->StationAddress, - OldConfigData->SwAddressLength - ) != 0)) { + (OldConfigData->SwAddressLength != ConfigData->SwAddressLength) || + (CompareMem ( + OldConfigData->StationAddress, + ConfigData->StationAddress, + OldConfigData->SwAddressLength + ) != 0)) + { // // Deny the unallowed changes. // @@ -952,8 +954,11 @@ ArpConfigureInstance ( OldConfigData->StationAddress = AllocatePool (OldConfigData->SwAddressLength); if (OldConfigData->StationAddress == NULL) { - DEBUG ((DEBUG_ERROR, "ArpConfigInstance: AllocatePool for the StationAddress " - "failed.\n")); + DEBUG (( + DEBUG_ERROR, + "ArpConfigInstance: AllocatePool for the StationAddress " + "failed.\n" + )); return EFI_OUT_OF_RESOURCES; } @@ -976,13 +981,13 @@ ArpConfigureInstance ( // Use the implementation specific values if the following field is zero. // OldConfigData->EntryTimeOut = (ConfigData->EntryTimeOut == 0) ? - ARP_DEFAULT_TIMEOUT_VALUE : ConfigData->EntryTimeOut; + ARP_DEFAULT_TIMEOUT_VALUE : ConfigData->EntryTimeOut; - OldConfigData->RetryCount = (ConfigData->RetryCount == 0) ? - ARP_DEFAULT_RETRY_COUNT : ConfigData->RetryCount; + OldConfigData->RetryCount = (ConfigData->RetryCount == 0) ? + ARP_DEFAULT_RETRY_COUNT : ConfigData->RetryCount; OldConfigData->RetryTimeOut = (ConfigData->RetryTimeOut == 0) ? - ARP_DEFAULT_RETRY_INTERVAL : ConfigData->RetryTimeOut; + ARP_DEFAULT_RETRY_INTERVAL : ConfigData->RetryTimeOut; } else { // // Reset the configuration. @@ -1006,7 +1011,6 @@ ArpConfigureInstance ( return EFI_SUCCESS; } - /** Send out an arp frame using the CacheEntry and the ArpOpCode. @@ -1042,7 +1046,7 @@ ArpSendFrame ( // // Allocate memory for the TxToken. // - TxToken = AllocatePool (sizeof(EFI_MANAGED_NETWORK_COMPLETION_TOKEN)); + TxToken = AllocatePool (sizeof (EFI_MANAGED_NETWORK_COMPLETION_TOKEN)); if (TxToken == NULL) { DEBUG ((DEBUG_ERROR, "ArpSendFrame: Allocate memory for TxToken failed.\n")); return; @@ -1070,7 +1074,7 @@ ArpSendFrame ( // // Allocate memory for the TxData used in the TxToken. // - TxData = AllocatePool (sizeof(EFI_MANAGED_NETWORK_TRANSMIT_DATA)); + TxData = AllocatePool (sizeof (EFI_MANAGED_NETWORK_TRANSMIT_DATA)); if (TxData == NULL) { DEBUG ((DEBUG_ERROR, "ArpSendFrame: Allocate memory for TxData failed.\n")); goto CLEAN_EXIT; @@ -1109,6 +1113,7 @@ ArpSendFrame ( SnpMode->HwAddressSize ); } + TmpPtr += SnpMode->HwAddressSize; // @@ -1121,18 +1126,18 @@ ArpSendFrame ( // The ethernet protocol type. // *(UINT16 *)TmpPtr = HTONS (ARP_ETHER_PROTO_TYPE); - TmpPtr += 2; + TmpPtr += 2; // // The ARP Head. // - ArpHead = (ARP_HEAD *) TmpPtr; + ArpHead = (ARP_HEAD *)TmpPtr; ArpHead->HwType = HTONS ((UINT16)SnpMode->IfType); ArpHead->ProtoType = HTONS (ConfigData->SwAddressType); ArpHead->HwAddrLen = (UINT8)SnpMode->HwAddressSize; ArpHead->ProtoAddrLen = ConfigData->SwAddressLength; ArpHead->OpCode = HTONS (ArpOpCode); - TmpPtr += sizeof (ARP_HEAD); + TmpPtr += sizeof (ARP_HEAD); // // The sender hardware address. @@ -1172,7 +1177,7 @@ ArpSendFrame ( TxData->SourceAddress = NULL; TxData->ProtocolType = 0; TxData->DataLength = TotalLength - SnpMode->MediaHeaderSize; - TxData->HeaderLength = (UINT16) SnpMode->MediaHeaderSize; + TxData->HeaderLength = (UINT16)SnpMode->MediaHeaderSize; TxData->FragmentCount = 1; TxData->FragmentTable[0].FragmentBuffer = Packet; @@ -1212,7 +1217,6 @@ CLEAN_EXIT: FreePool (TxToken); } - /** Delete the cache entries in the specified CacheTable, using the BySwAddress, SwAddressType, AddressBuffer combination as the matching key, if Force is TRUE, @@ -1231,11 +1235,11 @@ CLEAN_EXIT: **/ UINTN ArpDeleteCacheEntryInTable ( - IN LIST_ENTRY *CacheTable, - IN BOOLEAN BySwAddress, - IN UINT16 SwAddressType, - IN UINT8 *AddressBuffer OPTIONAL, - IN BOOLEAN Force + IN LIST_ENTRY *CacheTable, + IN BOOLEAN BySwAddress, + IN UINT16 SwAddressType, + IN UINT8 *AddressBuffer OPTIONAL, + IN BOOLEAN Force ) { LIST_ENTRY *Entry; @@ -1261,11 +1265,12 @@ ArpDeleteCacheEntryInTable ( // Protocol address type matched. Check the address. // if ((AddressBuffer == NULL) || - (CompareMem ( - AddressBuffer, - CacheEntry->Addresses[Protocol].AddressPtr, - CacheEntry->Addresses[Protocol].Length - ) == 0)) { + (CompareMem ( + AddressBuffer, + CacheEntry->Addresses[Protocol].AddressPtr, + CacheEntry->Addresses[Protocol].Length + ) == 0)) + { // // Address matched. // @@ -1274,11 +1279,12 @@ ArpDeleteCacheEntryInTable ( } } else { if ((AddressBuffer == NULL) || - (CompareMem ( - AddressBuffer, - CacheEntry->Addresses[Hardware].AddressPtr, - CacheEntry->Addresses[Hardware].Length - ) == 0)) { + (CompareMem ( + AddressBuffer, + CacheEntry->Addresses[Hardware].AddressPtr, + CacheEntry->Addresses[Hardware].Length + ) == 0)) + { // // Address matched. // @@ -1303,7 +1309,6 @@ MATCHED: return Count; } - /** Delete cache entries in all the cache tables. @@ -1357,7 +1362,6 @@ ArpDeleteCacheEntry ( return Count; } - /** Cancel the arp request. @@ -1392,11 +1396,12 @@ ArpCancelRequest ( CacheEntry = NET_LIST_USER_STRUCT (Entry, ARP_CACHE_ENTRY, List); if ((TargetSwAddress == NULL) || - (CompareMem ( - TargetSwAddress, - CacheEntry->Addresses[Protocol].AddressPtr, - CacheEntry->Addresses[Protocol].Length - ) == 0)) { + (CompareMem ( + TargetSwAddress, + CacheEntry->Addresses[Protocol].AddressPtr, + CacheEntry->Addresses[Protocol].Length + ) == 0)) + { // // This request entry matches the TargetSwAddress or all requests are to be // cancelled as TargetSwAddress is NULL. @@ -1416,7 +1421,6 @@ ArpCancelRequest ( return Count; } - /** Find the cache entry in the cache table. @@ -1572,7 +1576,7 @@ ArpFindCacheEntry ( Status = EFI_SUCCESS; - FoundCount = (UINT32) NetMapGetCount (&FoundEntries); + FoundCount = (UINT32)NetMapGetCount (&FoundEntries); if (FoundCount == 0) { Status = EFI_NOT_FOUND; goto CLEAN_EXIT; @@ -1582,7 +1586,7 @@ ArpFindCacheEntry ( // Found the entry length, make sure its 8 bytes alignment. // FoundEntryLength = (((sizeof (EFI_ARP_FIND_DATA) + Instance->ConfigData.SwAddressLength + - ArpService->SnpMode.HwAddressSize) + 3) & ~(0x3)); + ArpService->SnpMode.HwAddressSize) + 3) & ~(0x3)); if (EntryLength != NULL) { *EntryLength = FoundEntryLength; diff --git a/NetworkPkg/ArpDxe/ArpImpl.h b/NetworkPkg/ArpDxe/ArpImpl.h index 506f3e6ef6..4a528af47b 100644 --- a/NetworkPkg/ArpDxe/ArpImpl.h +++ b/NetworkPkg/ArpDxe/ArpImpl.h @@ -9,7 +9,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef _ARP_IMPL_H_ #define _ARP_IMPL_H_ - #include #include @@ -29,15 +28,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // Ethernet protocol type definitions. // -#define ARP_ETHER_PROTO_TYPE 0x0806 -#define IPV4_ETHER_PROTO_TYPE 0x0800 -#define IPV6_ETHER_PROTO_TYPE 0x86DD +#define ARP_ETHER_PROTO_TYPE 0x0806 +#define IPV4_ETHER_PROTO_TYPE 0x0800 +#define IPV6_ETHER_PROTO_TYPE 0x86DD // // ARP opcode definitions. // -#define ARP_OPCODE_REQUEST 0x0001 -#define ARP_OPCODE_REPLY 0x0002 +#define ARP_OPCODE_REQUEST 0x0001 +#define ARP_OPCODE_REPLY 0x0002 // // ARP timeout, retry count and interval definitions. @@ -52,11 +51,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // #pragma pack(1) typedef struct { - UINT16 HwType; - UINT16 ProtoType; - UINT8 HwAddrLen; - UINT8 ProtoAddrLen; - UINT16 OpCode; + UINT16 HwType; + UINT16 ProtoType; + UINT8 HwAddrLen; + UINT8 ProtoAddrLen; + UINT16 OpCode; } ARP_HEAD; #pragma pack() @@ -64,10 +63,10 @@ typedef struct { // ARP Address definition for internal use. // typedef struct { - UINT8 *SenderHwAddr; - UINT8 *SenderProtoAddr; - UINT8 *TargetHwAddr; - UINT8 *TargetProtoAddr; + UINT8 *SenderHwAddr; + UINT8 *SenderProtoAddr; + UINT8 *TargetHwAddr; + UINT8 *TargetProtoAddr; } ARP_ADDRESS; #define MATCH_SW_ADDRESS 0x1 @@ -104,20 +103,20 @@ typedef enum { ARP_INSTANCE_DATA_SIGNATURE \ ) -typedef struct _ARP_SERVICE_DATA ARP_SERVICE_DATA; +typedef struct _ARP_SERVICE_DATA ARP_SERVICE_DATA; // // ARP instance context data structure. // typedef struct { - UINT32 Signature; - ARP_SERVICE_DATA *ArpService; - EFI_HANDLE Handle; - EFI_ARP_PROTOCOL ArpProto; - LIST_ENTRY List; - EFI_ARP_CONFIG_DATA ConfigData; - BOOLEAN Configured; - BOOLEAN InDestroy; + UINT32 Signature; + ARP_SERVICE_DATA *ArpService; + EFI_HANDLE Handle; + EFI_ARP_PROTOCOL ArpProto; + LIST_ENTRY List; + EFI_ARP_CONFIG_DATA ConfigData; + BOOLEAN Configured; + BOOLEAN InDestroy; } ARP_INSTANCE_DATA; #define ARP_SERVICE_DATA_SIGNATURE SIGNATURE_32('A', 'R', 'P', 'S') @@ -144,55 +143,55 @@ typedef struct { // ARP service data structure. // struct _ARP_SERVICE_DATA { - UINT32 Signature; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + UINT32 Signature; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - EFI_HANDLE MnpChildHandle; - EFI_HANDLE ImageHandle; - EFI_HANDLE ControllerHandle; + EFI_HANDLE MnpChildHandle; + EFI_HANDLE ImageHandle; + EFI_HANDLE ControllerHandle; - EFI_MANAGED_NETWORK_PROTOCOL *Mnp; - EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData; - EFI_MANAGED_NETWORK_COMPLETION_TOKEN RxToken; + EFI_MANAGED_NETWORK_PROTOCOL *Mnp; + EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData; + EFI_MANAGED_NETWORK_COMPLETION_TOKEN RxToken; - EFI_SIMPLE_NETWORK_MODE SnpMode; + EFI_SIMPLE_NETWORK_MODE SnpMode; - UINTN ChildrenNumber; - LIST_ENTRY ChildrenList; + UINTN ChildrenNumber; + LIST_ENTRY ChildrenList; - LIST_ENTRY PendingRequestTable; - LIST_ENTRY DeniedCacheTable; - LIST_ENTRY ResolvedCacheTable; + LIST_ENTRY PendingRequestTable; + LIST_ENTRY DeniedCacheTable; + LIST_ENTRY ResolvedCacheTable; - EFI_EVENT PeriodicTimer; + EFI_EVENT PeriodicTimer; }; // // User request context structure. // typedef struct { - LIST_ENTRY List; - ARP_INSTANCE_DATA *Instance; - EFI_EVENT UserRequestEvent; - VOID *UserHwAddrBuffer; + LIST_ENTRY List; + ARP_INSTANCE_DATA *Instance; + EFI_EVENT UserRequestEvent; + VOID *UserHwAddrBuffer; } USER_REQUEST_CONTEXT; #define ARP_MAX_PROTOCOL_ADDRESS_LEN sizeof(EFI_IP_ADDRESS) #define ARP_MAX_HARDWARE_ADDRESS_LEN sizeof(EFI_MAC_ADDRESS) typedef union { - UINT8 ProtoAddress[ARP_MAX_PROTOCOL_ADDRESS_LEN]; - UINT8 HwAddress[ARP_MAX_HARDWARE_ADDRESS_LEN]; + UINT8 ProtoAddress[ARP_MAX_PROTOCOL_ADDRESS_LEN]; + UINT8 HwAddress[ARP_MAX_HARDWARE_ADDRESS_LEN]; } NET_ARP_ADDRESS_UNION; // // ARP address structure in an ARP packet. // typedef struct { - UINT16 Type; - UINT8 Length; - UINT8 *AddressPtr; - NET_ARP_ADDRESS_UNION Buffer; + UINT16 Type; + UINT8 Length; + UINT8 *AddressPtr; + NET_ARP_ADDRESS_UNION Buffer; } NET_ARP_ADDRESS; // @@ -207,16 +206,16 @@ typedef enum { // ARP cache entry definition. // typedef struct { - LIST_ENTRY List; + LIST_ENTRY List; - UINT32 RetryCount; - UINT32 DefaultDecayTime; - UINT32 DecayTime; - UINT32 NextRetryTime; + UINT32 RetryCount; + UINT32 DefaultDecayTime; + UINT32 DecayTime; + UINT32 NextRetryTime; - NET_ARP_ADDRESS Addresses[2]; + NET_ARP_ADDRESS Addresses[2]; - LIST_ENTRY UserRequestList; + LIST_ENTRY UserRequestList; } ARP_CACHE_ENTRY; /** @@ -522,11 +521,11 @@ ArpFindDeniedCacheEntry ( **/ ARP_CACHE_ENTRY * ArpFindNextCacheEntryInTable ( - IN LIST_ENTRY *CacheTable, - IN LIST_ENTRY *StartEntry, - IN FIND_OPTYPE FindOpType, - IN NET_ARP_ADDRESS *ProtocolAddress OPTIONAL, - IN NET_ARP_ADDRESS *HardwareAddress OPTIONAL + IN LIST_ENTRY *CacheTable, + IN LIST_ENTRY *StartEntry, + IN FIND_OPTYPE FindOpType, + IN NET_ARP_ADDRESS *ProtocolAddress OPTIONAL, + IN NET_ARP_ADDRESS *HardwareAddress OPTIONAL ); /** @@ -645,7 +644,7 @@ ArpInitInstance ( VOID EFIAPI ArpOnFrameRcvdDpc ( - IN VOID *Context + IN VOID *Context ); /** @@ -677,7 +676,7 @@ ArpOnFrameRcvd ( VOID EFIAPI ArpOnFrameSentDpc ( - IN VOID *Context + IN VOID *Context ); /** diff --git a/NetworkPkg/ArpDxe/ArpMain.c b/NetworkPkg/ArpDxe/ArpMain.c index 1398cdda5e..7c5753b6f0 100644 --- a/NetworkPkg/ArpDxe/ArpMain.c +++ b/NetworkPkg/ArpDxe/ArpMain.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "ArpImpl.h" - /** This function is used to assign a station address to the ARP cache for this instance of the ARP driver. @@ -53,9 +52,10 @@ ArpConfigure ( } if ((ConfigData != NULL) && - ((ConfigData->SwAddressLength == 0) || - (ConfigData->StationAddress == NULL) || - (ConfigData->SwAddressType <= 1500))) { + ((ConfigData->SwAddressLength == 0) || + (ConfigData->StationAddress == NULL) || + (ConfigData->SwAddressType <= 1500))) + { return EFI_INVALID_PARAMETER; } @@ -73,7 +73,6 @@ ArpConfigure ( return Status; } - /** This function is used to insert entries into the ARP cache. @@ -143,8 +142,9 @@ ArpAdd ( } if (((!DenyFlag) && ((TargetHwAddress == NULL) || (TargetSwAddress == NULL))) || - (DenyFlag && (TargetHwAddress != NULL) && (TargetSwAddress != NULL)) || - ((TargetHwAddress == NULL) && (TargetSwAddress == NULL))) { + (DenyFlag && (TargetHwAddress != NULL) && (TargetSwAddress != NULL)) || + ((TargetHwAddress == NULL) && (TargetSwAddress == NULL))) + { return EFI_INVALID_PARAMETER; } @@ -162,7 +162,7 @@ ArpAdd ( // Fill the hardware address part in the MatchAddress. // MatchAddress[Hardware].Type = SnpMode->IfType; - MatchAddress[Hardware].Length = (UINT8) SnpMode->HwAddressSize; + MatchAddress[Hardware].Length = (UINT8)SnpMode->HwAddressSize; MatchAddress[Hardware].AddressPtr = TargetHwAddress; // @@ -271,7 +271,6 @@ UNLOCK_EXIT: return Status; } - /** This function searches the ARP cache for matching entries and allocates a buffer into which those entries are copied. @@ -323,12 +322,13 @@ ArpFind ( EFI_TPL OldTpl; if ((This == NULL) || - (!Refresh && (EntryCount == NULL) && (EntryLength == NULL)) || - ((Entries != NULL) && ((EntryLength == NULL) || (EntryCount == NULL)))) { + (!Refresh && (EntryCount == NULL) && (EntryLength == NULL)) || + ((Entries != NULL) && ((EntryLength == NULL) || (EntryCount == NULL)))) + { return EFI_INVALID_PARAMETER; } - Instance = ARP_INSTANCE_DATA_FROM_THIS (This); + Instance = ARP_INSTANCE_DATA_FROM_THIS (This); if (!Instance->Configured) { return EFI_NOT_STARTED; @@ -354,7 +354,6 @@ ArpFind ( return Status; } - /** This function removes specified ARP cache entries. @@ -406,7 +405,6 @@ ArpDelete ( return (Count == 0) ? EFI_NOT_FOUND : EFI_SUCCESS; } - /** This function delete all dynamic entries from the ARP cache that match the specified software protocol type. @@ -451,7 +449,6 @@ ArpFlush ( return (Count == 0) ? EFI_NOT_FOUND : EFI_SUCCESS; } - /** This function tries to resolve the TargetSwAddress and optionally returns a TargetHwAddress if it already exists in the ARP cache. @@ -508,8 +505,9 @@ ArpRequest ( SnpMode = &ArpService->SnpMode; if ((TargetSwAddress == NULL) || - ((Instance->ConfigData.SwAddressType == IPV4_ETHER_PROTO_TYPE) && - IP4_IS_LOCAL_BROADCAST (*((UINT32 *)TargetSwAddress)))) { + ((Instance->ConfigData.SwAddressType == IPV4_ETHER_PROTO_TYPE) && + IP4_IS_LOCAL_BROADCAST (*((UINT32 *)TargetSwAddress)))) + { // // Return the hardware broadcast address. // @@ -519,7 +517,8 @@ ArpRequest ( } if ((Instance->ConfigData.SwAddressType == IPV4_ETHER_PROTO_TYPE) && - IP4_IS_MULTICAST (NTOHL (*((UINT32 *)TargetSwAddress)))) { + IP4_IS_MULTICAST (NTOHL (*((UINT32 *)TargetSwAddress)))) + { // // If the software address is an IPv4 multicast address, invoke Mnp to // resolve the address. @@ -588,7 +587,7 @@ ArpRequest ( // // Create a request context for this arp request. // - RequestContext = AllocatePool (sizeof(USER_REQUEST_CONTEXT)); + RequestContext = AllocatePool (sizeof (USER_REQUEST_CONTEXT)); if (RequestContext == NULL) { DEBUG ((DEBUG_ERROR, "ArpRequest: Allocate memory for RequestContext failed.\n")); @@ -612,7 +611,6 @@ ArpRequest ( NULL ); if (CacheEntry != NULL) { - CacheEntry->NextRetryTime = Instance->ConfigData.RetryTimeOut; CacheEntry->RetryCount = Instance->ConfigData.RetryCount; } else { @@ -668,7 +666,6 @@ SIGNAL_USER: return Status; } - /** This function aborts the previous ARP request (identified by This, TargetSwAddress and ResolvedEvent) that is issued by EFI_ARP_PROTOCOL.Request(). @@ -709,8 +706,9 @@ ArpCancel ( EFI_TPL OldTpl; if ((This == NULL) || - ((TargetSwAddress != NULL) && (ResolvedEvent == NULL)) || - ((TargetSwAddress == NULL) && (ResolvedEvent != NULL))) { + ((TargetSwAddress != NULL) && (ResolvedEvent == NULL)) || + ((TargetSwAddress == NULL) && (ResolvedEvent != NULL))) + { return EFI_INVALID_PARAMETER; } diff --git a/NetworkPkg/ArpDxe/ComponentName.c b/NetworkPkg/ArpDxe/ComponentName.c index bcee1e1444..0f78d6fd74 100644 --- a/NetworkPkg/ArpDxe/ComponentName.c +++ b/NetworkPkg/ArpDxe/ComponentName.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "ArpDriver.h" - // // EFI Component Name Protocol // @@ -21,21 +20,20 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gArpComponentName = { // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gArpComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ArpComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ArpComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gArpComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)ArpComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)ArpComponentNameGetControllerName, "en" }; - -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mArpDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mArpDriverNameTable[] = { { "eng;en", L"ARP Network Service Driver" }, - { NULL, NULL } + { NULL, NULL } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mArpControllerNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mArpControllerNameTable[] = { { "eng;en", L"ARP Controller" }, - { NULL, NULL } + { NULL, NULL } }; /** @@ -165,15 +163,15 @@ ArpComponentNameGetDriverName ( EFI_STATUS EFIAPI ArpComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_ARP_PROTOCOL *Arp; + EFI_STATUS Status; + EFI_ARP_PROTOCOL *Arp; // // Only provide names for child handles. @@ -200,7 +198,7 @@ ArpComponentNameGetControllerName ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiArpProtocolGuid, - (VOID **)&Arp, + (VOID **)&Arp, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL diff --git a/NetworkPkg/Dhcp4Dxe/ComponentName.c b/NetworkPkg/Dhcp4Dxe/ComponentName.c index 7c404fa267..cb4156364e 100644 --- a/NetworkPkg/Dhcp4Dxe/ComponentName.c +++ b/NetworkPkg/Dhcp4Dxe/ComponentName.c @@ -5,12 +5,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Dhcp4Impl.h" // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user readable name of the driver. @@ -58,7 +58,6 @@ DhcpComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -130,14 +129,13 @@ DhcpComponentNameGetDriverName ( EFI_STATUS EFIAPI DhcpComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); - // // EFI Component Name Protocol // @@ -150,14 +148,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gDhcp4ComponentName = // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gDhcp4ComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) DhcpComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) DhcpComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gDhcp4ComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)DhcpComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)DhcpComponentNameGetControllerName, "en" }; - -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mDhcpDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mDhcpDriverNameTable[] = { { "eng;en", L"DHCP Protocol Driver" @@ -168,9 +165,9 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mDhcpDriverNameTable[] = } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gDhcpControllerNameTable = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gDhcpControllerNameTable = NULL; -CHAR16 *mDhcp4ControllerName[] = { +CHAR16 *mDhcp4ControllerName[] = { L"DHCPv4 (State=0, Stopped)", L"DHCPv4 (State=1, Init)", L"DHCPv4 (State=2, Selecting)", @@ -251,11 +248,11 @@ DhcpComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - IN EFI_DHCP4_PROTOCOL *Dhcp4 + IN EFI_DHCP4_PROTOCOL *Dhcp4 ) { - EFI_STATUS Status; - EFI_DHCP4_MODE_DATA Dhcp4ModeData; + EFI_STATUS Status; + EFI_DHCP4_MODE_DATA Dhcp4ModeData; if (Dhcp4 == NULL) { return EFI_INVALID_PARAMETER; @@ -369,15 +366,15 @@ UpdateName ( EFI_STATUS EFIAPI DhcpComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_DHCP4_PROTOCOL *Dhcp4; + EFI_STATUS Status; + EFI_DHCP4_PROTOCOL *Dhcp4; // // Only provide names for child handles. diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c b/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c index 970141abfe..8c37e93be3 100644 --- a/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c +++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.c @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Dhcp4Impl.h" #include "Dhcp4Driver.h" -EFI_DRIVER_BINDING_PROTOCOL gDhcp4DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gDhcp4DriverBinding = { Dhcp4DriverBindingSupported, Dhcp4DriverBindingStart, Dhcp4DriverBindingStop, @@ -17,7 +17,7 @@ EFI_DRIVER_BINDING_PROTOCOL gDhcp4DriverBinding = { NULL }; -EFI_SERVICE_BINDING_PROTOCOL mDhcp4ServiceBindingTemplate = { +EFI_SERVICE_BINDING_PROTOCOL mDhcp4ServiceBindingTemplate = { Dhcp4ServiceBindingCreateChild, Dhcp4ServiceBindingDestroyChild }; @@ -39,8 +39,8 @@ EFI_SERVICE_BINDING_PROTOCOL mDhcp4ServiceBindingTemplate = { EFI_STATUS EFIAPI Dhcp4DriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { return EfiLibInstallDriverBindingComponentName2 ( @@ -53,7 +53,6 @@ Dhcp4DriverEntryPoint ( ); } - /** Test to see if this driver supports ControllerHandle. This service is called by the EFI boot service ConnectController(). In @@ -94,8 +93,6 @@ Dhcp4DriverBindingSupported ( return Status; } - - /** Configure the default UDP child to receive all the DHCP traffics on this network interface. @@ -110,35 +107,33 @@ Dhcp4DriverBindingSupported ( EFI_STATUS EFIAPI DhcpConfigUdpIo ( - IN UDP_IO *UdpIo, - IN VOID *Context + IN UDP_IO *UdpIo, + IN VOID *Context ) { - EFI_UDP4_CONFIG_DATA UdpConfigData; - - UdpConfigData.AcceptBroadcast = TRUE; - UdpConfigData.AcceptPromiscuous = FALSE; - UdpConfigData.AcceptAnyPort = FALSE; - UdpConfigData.AllowDuplicatePort = TRUE; - UdpConfigData.TypeOfService = 0; - UdpConfigData.TimeToLive = 64; - UdpConfigData.DoNotFragment = FALSE; - UdpConfigData.ReceiveTimeout = 0; - UdpConfigData.TransmitTimeout = 0; - - UdpConfigData.UseDefaultAddress = FALSE; - UdpConfigData.StationPort = DHCP_CLIENT_PORT; - UdpConfigData.RemotePort = DHCP_SERVER_PORT; + EFI_UDP4_CONFIG_DATA UdpConfigData; + + UdpConfigData.AcceptBroadcast = TRUE; + UdpConfigData.AcceptPromiscuous = FALSE; + UdpConfigData.AcceptAnyPort = FALSE; + UdpConfigData.AllowDuplicatePort = TRUE; + UdpConfigData.TypeOfService = 0; + UdpConfigData.TimeToLive = 64; + UdpConfigData.DoNotFragment = FALSE; + UdpConfigData.ReceiveTimeout = 0; + UdpConfigData.TransmitTimeout = 0; + + UdpConfigData.UseDefaultAddress = FALSE; + UdpConfigData.StationPort = DHCP_CLIENT_PORT; + UdpConfigData.RemotePort = DHCP_SERVER_PORT; ZeroMem (&UdpConfigData.StationAddress, sizeof (EFI_IPv4_ADDRESS)); ZeroMem (&UdpConfigData.SubnetMask, sizeof (EFI_IPv4_ADDRESS)); ZeroMem (&UdpConfigData.RemoteAddress, sizeof (EFI_IPv4_ADDRESS)); - return UdpIo->Protocol.Udp4->Configure (UdpIo->Protocol.Udp4, &UdpConfigData);; + return UdpIo->Protocol.Udp4->Configure (UdpIo->Protocol.Udp4, &UdpConfigData); } - - /** Destroy the DHCP service. The Dhcp4 service may be partly initialized, or partly destroyed. If a resource is destroyed, it is marked as so in @@ -151,7 +146,7 @@ DhcpConfigUdpIo ( **/ EFI_STATUS Dhcp4CloseService ( - IN DHCP_SERVICE *DhcpSb + IN DHCP_SERVICE *DhcpSb ) { DhcpCleanLease (DhcpSb); @@ -171,8 +166,6 @@ Dhcp4CloseService ( return EFI_SUCCESS; } - - /** Create a new DHCP service binding instance for the controller. @@ -189,28 +182,28 @@ Dhcp4CloseService ( **/ EFI_STATUS Dhcp4CreateService ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE ImageHandle, - OUT DHCP_SERVICE **Service + IN EFI_HANDLE Controller, + IN EFI_HANDLE ImageHandle, + OUT DHCP_SERVICE **Service ) { - DHCP_SERVICE *DhcpSb; - EFI_STATUS Status; + DHCP_SERVICE *DhcpSb; + EFI_STATUS Status; - *Service = NULL; - DhcpSb = AllocateZeroPool (sizeof (DHCP_SERVICE)); + *Service = NULL; + DhcpSb = AllocateZeroPool (sizeof (DHCP_SERVICE)); if (DhcpSb == NULL) { return EFI_OUT_OF_RESOURCES; } - DhcpSb->Signature = DHCP_SERVICE_SIGNATURE; - DhcpSb->ServiceState = DHCP_UNCONFIGED; - DhcpSb->Controller = Controller; - DhcpSb->Image = ImageHandle; + DhcpSb->Signature = DHCP_SERVICE_SIGNATURE; + DhcpSb->ServiceState = DHCP_UNCONFIGED; + DhcpSb->Controller = Controller; + DhcpSb->Image = ImageHandle; InitializeListHead (&DhcpSb->Children); - DhcpSb->DhcpState = Dhcp4Stopped; - DhcpSb->Xid = NET_RANDOM (NetRandomInitSeed ()); + DhcpSb->DhcpState = Dhcp4Stopped; + DhcpSb->Xid = NET_RANDOM (NetRandomInitSeed ()); CopyMem ( &DhcpSb->ServiceBinding, &mDhcp4ServiceBindingTemplate, @@ -244,11 +237,11 @@ Dhcp4CreateService ( goto ON_ERROR; } - DhcpSb->HwLen = (UINT8) DhcpSb->UdpIo->SnpMode.HwAddressSize; + DhcpSb->HwLen = (UINT8)DhcpSb->UdpIo->SnpMode.HwAddressSize; DhcpSb->HwType = DhcpSb->UdpIo->SnpMode.IfType; CopyMem (&DhcpSb->Mac, &DhcpSb->UdpIo->SnpMode.CurrentAddress, sizeof (DhcpSb->Mac)); - *Service = DhcpSb; + *Service = DhcpSb; return EFI_SUCCESS; ON_ERROR: @@ -258,7 +251,6 @@ ON_ERROR: return Status; } - /** Start this driver on ControllerHandle. This service is called by the EFI boot service ConnectController(). In order to make @@ -285,8 +277,8 @@ Dhcp4DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - DHCP_SERVICE *DhcpSb; - EFI_STATUS Status; + DHCP_SERVICE *DhcpSb; + EFI_STATUS Status; // // First: test for the DHCP4 Protocol @@ -309,6 +301,7 @@ Dhcp4DriverBindingStart ( if (EFI_ERROR (Status)) { return Status; } + ASSERT (DhcpSb != NULL); // @@ -319,6 +312,7 @@ Dhcp4DriverBindingStart ( if (EFI_ERROR (Status)) { goto ON_ERROR; } + Status = gBS->SetTimer (DhcpSb->Timer, TimerPeriodic, TICKS_PER_SECOND); if (EFI_ERROR (Status)) { @@ -360,24 +354,23 @@ ON_ERROR: EFI_STATUS EFIAPI Dhcp4DestroyChildEntry ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { - DHCP_PROTOCOL *Instance; - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + DHCP_PROTOCOL *Instance; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - Instance = NET_LIST_USER_STRUCT_S (Entry, DHCP_PROTOCOL, Link, DHCP_PROTOCOL_SIGNATURE); - ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *) Context; + Instance = NET_LIST_USER_STRUCT_S (Entry, DHCP_PROTOCOL, Link, DHCP_PROTOCOL_SIGNATURE); + ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *)Context; return ServiceBinding->DestroyChild (ServiceBinding, Instance->Handle); } - /** Stop this driver on ControllerHandle. This service is called by the EFI boot service DisconnectController(). In order to @@ -422,10 +415,10 @@ Dhcp4DriverBindingStop ( return EFI_SUCCESS; } - Status = gBS->OpenProtocol ( + Status = gBS->OpenProtocol ( NicHandle, &gEfiDhcp4ServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -440,23 +433,23 @@ Dhcp4DriverBindingStop ( // // Destroy all the children instances before destroy the service. // - List = &DhcpSb->Children; + List = &DhcpSb->Children; Status = NetDestroyLinkList ( List, Dhcp4DestroyChildEntry, ServiceBinding, &ListLength ); - if (EFI_ERROR (Status) || ListLength != 0) { + if (EFI_ERROR (Status) || (ListLength != 0)) { Status = EFI_DEVICE_ERROR; } } - if (NumberOfChildren == 0 && !IsListEmpty (&DhcpSb->Children)) { + if ((NumberOfChildren == 0) && !IsListEmpty (&DhcpSb->Children)) { Status = EFI_DEVICE_ERROR; } - if (NumberOfChildren == 0 && IsListEmpty (&DhcpSb->Children)) { + if ((NumberOfChildren == 0) && IsListEmpty (&DhcpSb->Children)) { // // Destroy the service itself if no child instance left. // @@ -474,6 +467,7 @@ Dhcp4DriverBindingStop ( FreeUnicodeStringTable (gDhcpControllerNameTable); gDhcpControllerNameTable = NULL; } + FreePool (DhcpSb); Status = EFI_SUCCESS; @@ -482,7 +476,6 @@ Dhcp4DriverBindingStop ( return Status; } - /** Initialize a new DHCP instance. @@ -492,25 +485,24 @@ Dhcp4DriverBindingStop ( **/ VOID DhcpInitProtocol ( - IN DHCP_SERVICE *DhcpSb, - IN OUT DHCP_PROTOCOL *Instance + IN DHCP_SERVICE *DhcpSb, + IN OUT DHCP_PROTOCOL *Instance ) { - Instance->Signature = DHCP_PROTOCOL_SIGNATURE; + Instance->Signature = DHCP_PROTOCOL_SIGNATURE; CopyMem (&Instance->Dhcp4Protocol, &mDhcp4ProtocolTemplate, sizeof (Instance->Dhcp4Protocol)); InitializeListHead (&Instance->Link); - Instance->Handle = NULL; - Instance->Service = DhcpSb; - Instance->InDestroy = FALSE; - Instance->CompletionEvent = NULL; - Instance->RenewRebindEvent = NULL; - Instance->Token = NULL; - Instance->UdpIo = NULL; - Instance->ElaspedTime = 0; + Instance->Handle = NULL; + Instance->Service = DhcpSb; + Instance->InDestroy = FALSE; + Instance->CompletionEvent = NULL; + Instance->RenewRebindEvent = NULL; + Instance->Token = NULL; + Instance->UdpIo = NULL; + Instance->ElaspedTime = 0; NetbufQueInit (&Instance->ResponseQueue); } - /** Creates a child handle and installs a protocol. @@ -537,11 +529,11 @@ Dhcp4ServiceBindingCreateChild ( IN EFI_HANDLE *ChildHandle ) { - DHCP_SERVICE *DhcpSb; - DHCP_PROTOCOL *Instance; - EFI_STATUS Status; - EFI_TPL OldTpl; - VOID *Udp4; + DHCP_SERVICE *DhcpSb; + DHCP_PROTOCOL *Instance; + EFI_STATUS Status; + EFI_TPL OldTpl; + VOID *Udp4; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -571,7 +563,7 @@ Dhcp4ServiceBindingCreateChild ( return Status; } - Instance->Handle = *ChildHandle; + Instance->Handle = *ChildHandle; // // Open the Udp4 protocol BY_CHILD. @@ -579,7 +571,7 @@ Dhcp4ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( DhcpSb->UdpIo->UdpHandle, &gEfiUdp4ProtocolGuid, - (VOID **) &Udp4, + (VOID **)&Udp4, gDhcp4DriverBinding.DriverBindingHandle, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -606,7 +598,6 @@ Dhcp4ServiceBindingCreateChild ( return EFI_SUCCESS; } - /** Destroys a child handle with a protocol installed on it. @@ -632,11 +623,11 @@ Dhcp4ServiceBindingDestroyChild ( IN EFI_HANDLE ChildHandle ) { - DHCP_SERVICE *DhcpSb; - DHCP_PROTOCOL *Instance; - EFI_DHCP4_PROTOCOL *Dhcp; - EFI_TPL OldTpl; - EFI_STATUS Status; + DHCP_SERVICE *DhcpSb; + DHCP_PROTOCOL *Instance; + EFI_DHCP4_PROTOCOL *Dhcp; + EFI_TPL OldTpl; + EFI_STATUS Status; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -648,7 +639,7 @@ Dhcp4ServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiDhcp4ProtocolGuid, - (VOID **) &Dhcp, + (VOID **)&Dhcp, gDhcp4DriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -658,8 +649,8 @@ Dhcp4ServiceBindingDestroyChild ( return EFI_UNSUPPORTED; } - Instance = DHCP_INSTANCE_FROM_THIS (Dhcp); - DhcpSb = DHCP_SERVICE_FROM_THIS (This); + Instance = DHCP_INSTANCE_FROM_THIS (Dhcp); + DhcpSb = DHCP_SERVICE_FROM_THIS (This); if (Instance->Service != DhcpSb) { return EFI_INVALID_PARAMETER; @@ -675,7 +666,7 @@ Dhcp4ServiceBindingDestroyChild ( return EFI_SUCCESS; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Instance->InDestroy = TRUE; // diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.h b/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.h index f6370582cb..7c32ef9c1e 100644 --- a/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.h +++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Driver.h @@ -9,9 +9,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_DHCP4_DRIVER_H__ #define __EFI_DHCP4_DRIVER_H__ -extern EFI_COMPONENT_NAME_PROTOCOL gDhcp4ComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gDhcp4ComponentName2; -extern EFI_UNICODE_STRING_TABLE *gDhcpControllerNameTable; +extern EFI_COMPONENT_NAME_PROTOCOL gDhcp4ComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gDhcp4ComponentName2; +extern EFI_UNICODE_STRING_TABLE *gDhcpControllerNameTable; /** Test to see if this driver supports ControllerHandle. This service diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.c b/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.c index 8290533790..24a0693942 100644 --- a/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.c +++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.c @@ -6,7 +6,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Dhcp4Impl.h" /** @@ -25,8 +24,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI EfiDhcp4GetModeData ( - IN EFI_DHCP4_PROTOCOL *This, - OUT EFI_DHCP4_MODE_DATA *Dhcp4ModeData + IN EFI_DHCP4_PROTOCOL *This, + OUT EFI_DHCP4_MODE_DATA *Dhcp4ModeData ); /** @@ -121,8 +120,8 @@ EfiDhcp4Configure ( EFI_STATUS EFIAPI EfiDhcp4Start ( - IN EFI_DHCP4_PROTOCOL *This, - IN EFI_EVENT CompletionEvent OPTIONAL + IN EFI_DHCP4_PROTOCOL *This, + IN EFI_EVENT CompletionEvent OPTIONAL ); /** @@ -166,9 +165,9 @@ EfiDhcp4Start ( EFI_STATUS EFIAPI EfiDhcp4RenewRebind ( - IN EFI_DHCP4_PROTOCOL *This, - IN BOOLEAN RebindRequest, - IN EFI_EVENT CompletionEvent OPTIONAL + IN EFI_DHCP4_PROTOCOL *This, + IN BOOLEAN RebindRequest, + IN EFI_EVENT CompletionEvent OPTIONAL ); /** @@ -195,7 +194,7 @@ EfiDhcp4RenewRebind ( EFI_STATUS EFIAPI EfiDhcp4Release ( - IN EFI_DHCP4_PROTOCOL *This + IN EFI_DHCP4_PROTOCOL *This ); /** @@ -216,7 +215,7 @@ EfiDhcp4Release ( EFI_STATUS EFIAPI EfiDhcp4Stop ( - IN EFI_DHCP4_PROTOCOL *This + IN EFI_DHCP4_PROTOCOL *This ); /** @@ -314,10 +313,10 @@ EfiDhcp4TransmitReceive ( EFI_STATUS EFIAPI EfiDhcp4Parse ( - IN EFI_DHCP4_PROTOCOL *This, - IN EFI_DHCP4_PACKET *Packet, - IN OUT UINT32 *OptionCount, - OUT EFI_DHCP4_PACKET_OPTION *PacketOptionList[] OPTIONAL + IN EFI_DHCP4_PROTOCOL *This, + IN EFI_DHCP4_PACKET *Packet, + IN OUT UINT32 *OptionCount, + OUT EFI_DHCP4_PACKET_OPTION *PacketOptionList[] OPTIONAL ); EFI_DHCP4_PROTOCOL mDhcp4ProtocolTemplate = { @@ -348,15 +347,15 @@ EFI_DHCP4_PROTOCOL mDhcp4ProtocolTemplate = { EFI_STATUS EFIAPI EfiDhcp4GetModeData ( - IN EFI_DHCP4_PROTOCOL *This, - OUT EFI_DHCP4_MODE_DATA *Dhcp4ModeData + IN EFI_DHCP4_PROTOCOL *This, + OUT EFI_DHCP4_MODE_DATA *Dhcp4ModeData ) { - DHCP_PROTOCOL *Instance; - DHCP_SERVICE *DhcpSb; - DHCP_PARAMETER *Para; - EFI_TPL OldTpl; - IP4_ADDR Ip; + DHCP_PROTOCOL *Instance; + DHCP_SERVICE *DhcpSb; + DHCP_PARAMETER *Para; + EFI_TPL OldTpl; + IP4_ADDR Ip; // // First validate the parameters. @@ -367,14 +366,14 @@ EfiDhcp4GetModeData ( Instance = DHCP_INSTANCE_FROM_THIS (This); - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - DhcpSb = Instance->Service; + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + DhcpSb = Instance->Service; // // Caller can use GetModeData to retrieve current DHCP states // no matter whether it is the active child or not. // - Dhcp4ModeData->State = (EFI_DHCP4_STATE) DhcpSb->DhcpState; + Dhcp4ModeData->State = (EFI_DHCP4_STATE)DhcpSb->DhcpState; CopyMem (&Dhcp4ModeData->ConfigData, &DhcpSb->ActiveConfig, sizeof (Dhcp4ModeData->ConfigData)); CopyMem (&Dhcp4ModeData->ClientMacAddress, &DhcpSb->Mac, sizeof (Dhcp4ModeData->ClientMacAddress)); @@ -404,7 +403,6 @@ EfiDhcp4GetModeData ( return EFI_SUCCESS; } - /** Free the resource related to the configure parameters. DHCP driver will make a copy of the user's configure @@ -418,7 +416,7 @@ DhcpCleanConfigure ( IN OUT EFI_DHCP4_CONFIG_DATA *Config ) { - UINT32 Index; + UINT32 Index; if (Config->DiscoverTimeout != NULL) { FreePool (Config->DiscoverTimeout); @@ -441,7 +439,6 @@ DhcpCleanConfigure ( ZeroMem (Config, sizeof (EFI_DHCP4_CONFIG_DATA)); } - /** Allocate memory for configure parameter such as timeout value for Dst, then copy the configure parameter from Src to Dst. @@ -459,22 +456,22 @@ DhcpCopyConfigure ( IN EFI_DHCP4_CONFIG_DATA *Src ) { - EFI_DHCP4_PACKET_OPTION **DstOptions; - EFI_DHCP4_PACKET_OPTION **SrcOptions; - UINTN Len; - UINT32 Index; + EFI_DHCP4_PACKET_OPTION **DstOptions; + EFI_DHCP4_PACKET_OPTION **SrcOptions; + UINTN Len; + UINT32 Index; CopyMem (Dst, Src, sizeof (*Dst)); - Dst->DiscoverTimeout = NULL; - Dst->RequestTimeout = NULL; - Dst->OptionList = NULL; + Dst->DiscoverTimeout = NULL; + Dst->RequestTimeout = NULL; + Dst->OptionList = NULL; // // Allocate a memory then copy DiscoverTimeout to it // if (Src->DiscoverTimeout != NULL) { - Len = Src->DiscoverTryCount * sizeof (UINT32); - Dst->DiscoverTimeout = AllocatePool (Len); + Len = Src->DiscoverTryCount * sizeof (UINT32); + Dst->DiscoverTimeout = AllocatePool (Len); if (Dst->DiscoverTimeout == NULL) { return EFI_OUT_OF_RESOURCES; @@ -513,8 +510,8 @@ DhcpCopyConfigure ( goto ON_ERROR; } - DstOptions = Dst->OptionList; - SrcOptions = Src->OptionList; + DstOptions = Dst->OptionList; + SrcOptions = Src->OptionList; for (Index = 0; Index < Src->OptionCount; Index++) { Len = sizeof (EFI_DHCP4_PACKET_OPTION) + MAX (SrcOptions[Index]->Length - 1, 0); @@ -536,7 +533,6 @@ ON_ERROR: return EFI_OUT_OF_RESOURCES; } - /** Give up the control of the DHCP service to let other child resume. Don't change the service's DHCP state and the Client @@ -547,21 +543,21 @@ ON_ERROR: **/ VOID DhcpYieldControl ( - IN DHCP_SERVICE *DhcpSb + IN DHCP_SERVICE *DhcpSb ) { - EFI_DHCP4_CONFIG_DATA *Config; + EFI_DHCP4_CONFIG_DATA *Config; - Config = &DhcpSb->ActiveConfig; + Config = &DhcpSb->ActiveConfig; - DhcpSb->ServiceState = DHCP_UNCONFIGED; - DhcpSb->ActiveChild = NULL; + DhcpSb->ServiceState = DHCP_UNCONFIGED; + DhcpSb->ActiveChild = NULL; if (Config->DiscoverTimeout != NULL) { FreePool (Config->DiscoverTimeout); - Config->DiscoverTryCount = 0; - Config->DiscoverTimeout = NULL; + Config->DiscoverTryCount = 0; + Config->DiscoverTimeout = NULL; } if (Config->RequestTimeout != NULL) { @@ -575,7 +571,6 @@ DhcpYieldControl ( Config->CallbackContext = NULL; } - /** Initializes, changes, or resets the operational settings for the EFI DHCPv4 Protocol driver. @@ -625,13 +620,13 @@ EfiDhcp4Configure ( IN EFI_DHCP4_CONFIG_DATA *Dhcp4CfgData OPTIONAL ) { - EFI_DHCP4_CONFIG_DATA *Config; - DHCP_PROTOCOL *Instance; - DHCP_SERVICE *DhcpSb; - EFI_STATUS Status; - EFI_TPL OldTpl; - UINT32 Index; - IP4_ADDR Ip; + EFI_DHCP4_CONFIG_DATA *Config; + DHCP_PROTOCOL *Instance; + DHCP_SERVICE *DhcpSb; + EFI_STATUS Status; + EFI_TPL OldTpl; + UINT32 Index; + IP4_ADDR Ip; // // First validate the parameters @@ -654,7 +649,7 @@ EfiDhcp4Configure ( } CopyMem (&Ip, &Dhcp4CfgData->ClientAddress, sizeof (IP4_ADDR)); - if (IP4_IS_LOCAL_BROADCAST(NTOHL (Ip))) { + if (IP4_IS_LOCAL_BROADCAST (NTOHL (Ip))) { return EFI_INVALID_PARAMETER; } } @@ -665,18 +660,18 @@ EfiDhcp4Configure ( return EFI_INVALID_PARAMETER; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - DhcpSb = Instance->Service; - Config = &DhcpSb->ActiveConfig; + DhcpSb = Instance->Service; + Config = &DhcpSb->ActiveConfig; - Status = EFI_ACCESS_DENIED; + Status = EFI_ACCESS_DENIED; if ((DhcpSb->DhcpState != Dhcp4Stopped) && (DhcpSb->DhcpState != Dhcp4Init) && (DhcpSb->DhcpState != Dhcp4InitReboot) && - (DhcpSb->DhcpState != Dhcp4Bound)) { - + (DhcpSb->DhcpState != Dhcp4Bound)) + { goto ON_EXIT; } @@ -710,9 +705,8 @@ EfiDhcp4Configure ( } } - DhcpSb->ServiceState = DHCP_CONFIGED; - Status = EFI_SUCCESS; - + DhcpSb->ServiceState = DHCP_CONFIGED; + Status = EFI_SUCCESS; } else if (DhcpSb->ActiveChild == Instance) { Status = EFI_SUCCESS; DhcpYieldControl (DhcpSb); @@ -723,7 +717,6 @@ ON_EXIT: return Status; } - /** Starts the DHCP configuration process. @@ -768,15 +761,15 @@ ON_EXIT: EFI_STATUS EFIAPI EfiDhcp4Start ( - IN EFI_DHCP4_PROTOCOL *This, - IN EFI_EVENT CompletionEvent OPTIONAL + IN EFI_DHCP4_PROTOCOL *This, + IN EFI_EVENT CompletionEvent OPTIONAL ) { - DHCP_PROTOCOL *Instance; - DHCP_SERVICE *DhcpSb; - EFI_STATUS Status; - EFI_TPL OldTpl; - EFI_STATUS MediaStatus; + DHCP_PROTOCOL *Instance; + DHCP_SERVICE *DhcpSb; + EFI_STATUS Status; + EFI_TPL OldTpl; + EFI_STATUS MediaStatus; // // First validate the parameters @@ -791,8 +784,8 @@ EfiDhcp4Start ( return EFI_INVALID_PARAMETER; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - DhcpSb = Instance->Service; + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + DhcpSb = Instance->Service; if (DhcpSb->DhcpState == Dhcp4Stopped) { Status = EFI_NOT_STARTED; @@ -820,7 +813,6 @@ EfiDhcp4Start ( goto ON_ERROR; } - Instance->CompletionEvent = CompletionEvent; // @@ -843,7 +835,6 @@ ON_ERROR: return Status; } - /** Extends the lease time by sending a request packet. @@ -885,15 +876,15 @@ ON_ERROR: EFI_STATUS EFIAPI EfiDhcp4RenewRebind ( - IN EFI_DHCP4_PROTOCOL *This, - IN BOOLEAN RebindRequest, - IN EFI_EVENT CompletionEvent OPTIONAL + IN EFI_DHCP4_PROTOCOL *This, + IN BOOLEAN RebindRequest, + IN EFI_EVENT CompletionEvent OPTIONAL ) { - DHCP_PROTOCOL *Instance; - DHCP_SERVICE *DhcpSb; - EFI_STATUS Status; - EFI_TPL OldTpl; + DHCP_PROTOCOL *Instance; + DHCP_SERVICE *DhcpSb; + EFI_STATUS Status; + EFI_TPL OldTpl; // // First validate the parameters @@ -908,8 +899,8 @@ EfiDhcp4RenewRebind ( return EFI_INVALID_PARAMETER; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - DhcpSb = Instance->Service; + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + DhcpSb = Instance->Service; if (DhcpSb->DhcpState == Dhcp4Stopped) { Status = EFI_NOT_STARTED; @@ -946,7 +937,7 @@ EfiDhcp4RenewRebind ( DhcpSb->Selected, DhcpSb->Para, DHCP_MSG_REQUEST, - (UINT8 *) "Extra renew/rebind by the application" + (UINT8 *)"Extra renew/rebind by the application" ); if (EFI_ERROR (Status)) { @@ -954,16 +945,15 @@ EfiDhcp4RenewRebind ( goto ON_EXIT; } - DhcpSb->ExtraRefresh = TRUE; - DhcpSb->IoStatus = EFI_ALREADY_STARTED; - Instance->RenewRebindEvent = CompletionEvent; + DhcpSb->ExtraRefresh = TRUE; + DhcpSb->IoStatus = EFI_ALREADY_STARTED; + Instance->RenewRebindEvent = CompletionEvent; gBS->RestoreTPL (OldTpl); if (CompletionEvent == NULL) { while (DhcpSb->IoStatus == EFI_ALREADY_STARTED) { DhcpSb->UdpIo->Protocol.Udp4->Poll (DhcpSb->UdpIo->Protocol.Udp4); - } return DhcpSb->IoStatus; @@ -976,7 +966,6 @@ ON_EXIT: return Status; } - /** Releases the current address configuration. @@ -1001,13 +990,13 @@ ON_EXIT: EFI_STATUS EFIAPI EfiDhcp4Release ( - IN EFI_DHCP4_PROTOCOL *This + IN EFI_DHCP4_PROTOCOL *This ) { - DHCP_PROTOCOL *Instance; - DHCP_SERVICE *DhcpSb; - EFI_STATUS Status; - EFI_TPL OldTpl; + DHCP_PROTOCOL *Instance; + DHCP_SERVICE *DhcpSb; + EFI_STATUS Status; + EFI_TPL OldTpl; // // First validate the parameters @@ -1022,9 +1011,9 @@ EfiDhcp4Release ( return EFI_INVALID_PARAMETER; } - Status = EFI_SUCCESS; - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - DhcpSb = Instance->Service; + Status = EFI_SUCCESS; + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + DhcpSb = Instance->Service; if ((DhcpSb->DhcpState != Dhcp4InitReboot) && (DhcpSb->DhcpState != Dhcp4Bound)) { Status = EFI_ACCESS_DENIED; @@ -1053,7 +1042,6 @@ ON_EXIT: return Status; } - /** Stops the current address configuration. @@ -1072,12 +1060,12 @@ ON_EXIT: EFI_STATUS EFIAPI EfiDhcp4Stop ( - IN EFI_DHCP4_PROTOCOL *This + IN EFI_DHCP4_PROTOCOL *This ) { - DHCP_PROTOCOL *Instance; - DHCP_SERVICE *DhcpSb; - EFI_TPL OldTpl; + DHCP_PROTOCOL *Instance; + DHCP_SERVICE *DhcpSb; + EFI_TPL OldTpl; // // First validate the parameters @@ -1092,19 +1080,18 @@ EfiDhcp4Stop ( return EFI_INVALID_PARAMETER; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - DhcpSb = Instance->Service; + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + DhcpSb = Instance->Service; DhcpCleanLease (DhcpSb); - DhcpSb->DhcpState = Dhcp4Stopped; - DhcpSb->ServiceState = DHCP_UNCONFIGED; + DhcpSb->DhcpState = Dhcp4Stopped; + DhcpSb->ServiceState = DHCP_UNCONFIGED; gBS->RestoreTPL (OldTpl); return EFI_SUCCESS; } - /** Builds a DHCP packet, given the options to be appended or deleted or replaced. @@ -1152,15 +1139,15 @@ EfiDhcp4Build ( } if ((SeedPacket == NULL) || (SeedPacket->Dhcp4.Magik != DHCP_OPTION_MAGIC) || - EFI_ERROR (DhcpValidateOptions (SeedPacket, NULL))) { - + EFI_ERROR (DhcpValidateOptions (SeedPacket, NULL))) + { return EFI_INVALID_PARAMETER; } if (((DeleteCount == 0) && (AppendCount == 0)) || ((DeleteCount != 0) && (DeleteList == NULL)) || - ((AppendCount != 0) && (AppendList == NULL))) { - + ((AppendCount != 0) && (AppendList == NULL))) + { return EFI_INVALID_PARAMETER; } @@ -1188,8 +1175,8 @@ EfiDhcp4Build ( EFI_STATUS EFIAPI Dhcp4InstanceConfigUdpIo ( - IN UDP_IO *UdpIo, - IN VOID *Context + IN UDP_IO *UdpIo, + IN VOID *Context ) { DHCP_PROTOCOL *Instance; @@ -1201,7 +1188,7 @@ Dhcp4InstanceConfigUdpIo ( INTN Class; IP4_ADDR SubnetMask; - Instance = (DHCP_PROTOCOL *) Context; + Instance = (DHCP_PROTOCOL *)Context; DhcpSb = Instance->Service; Token = Instance->Token; @@ -1213,7 +1200,7 @@ Dhcp4InstanceConfigUdpIo ( UdpConfigData.DoNotFragment = TRUE; ClientAddr = EFI_NTOHL (Token->Packet->Dhcp4.Header.ClientAddr); - Ip = HTONL (ClientAddr); + Ip = HTONL (ClientAddr); CopyMem (&UdpConfigData.StationAddress, &Ip, sizeof (EFI_IPv4_ADDRESS)); if (DhcpSb->Netmask == 0) { @@ -1284,7 +1271,7 @@ Dhcp4InstanceCreateUdpIo ( Status = gBS->OpenProtocol ( Instance->UdpIo->UdpHandle, &gEfiUdp4ProtocolGuid, - (VOID **) &Udp4, + (VOID **)&Udp4, Instance->Service->Image, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -1293,6 +1280,7 @@ Dhcp4InstanceCreateUdpIo ( UdpIoFreeIo (Instance->UdpIo); Instance->UdpIo = NULL; } + return Status; } } @@ -1306,7 +1294,7 @@ Dhcp4InstanceCreateUdpIo ( VOID EFIAPI DhcpDummyExtFree ( - IN VOID *Arg + IN VOID *Arg ) { } @@ -1326,10 +1314,10 @@ DhcpDummyExtFree ( VOID EFIAPI PxeDhcpInput ( - NET_BUF *UdpPacket, - UDP_END_POINT *EndPoint, - EFI_STATUS IoStatus, - VOID *Context + NET_BUF *UdpPacket, + UDP_END_POINT *EndPoint, + EFI_STATUS IoStatus, + VOID *Context ) { DHCP_PROTOCOL *Instance; @@ -1341,14 +1329,14 @@ PxeDhcpInput ( EFI_STATUS Status; Wrap = NULL; - Instance = (DHCP_PROTOCOL *) Context; + Instance = (DHCP_PROTOCOL *)Context; Token = Instance->Token; // // Don't restart receive if error occurs or DHCP is destroyed. // if (EFI_ERROR (IoStatus)) { - return ; + return; } ASSERT (UdpPacket != NULL); @@ -1370,12 +1358,12 @@ PxeDhcpInput ( goto RESTART; } - Packet = (EFI_DHCP4_PACKET *) NetbufAllocSpace (Wrap, Len, NET_BUF_TAIL); + Packet = (EFI_DHCP4_PACKET *)NetbufAllocSpace (Wrap, Len, NET_BUF_TAIL); ASSERT (Packet != NULL); Packet->Size = Len; Head = &Packet->Dhcp4.Header; - Packet->Length = NetbufCopy (UdpPacket, 0, UdpPacket->TotalSize, (UINT8 *) Head); + Packet->Length = NetbufCopy (UdpPacket, 0, UdpPacket->TotalSize, (UINT8 *)Head); if (Packet->Length != UdpPacket->TotalSize) { goto RESTART; @@ -1386,7 +1374,8 @@ PxeDhcpInput ( // if ((Head->OpCode != BOOTP_REPLY) || (Head->Xid != Token->Packet->Dhcp4.Header.Xid) || - (CompareMem (&Token->Packet->Dhcp4.Header.ClientHwAddr[0], Head->ClientHwAddr, Head->HwAddrLen) != 0)) { + (CompareMem (&Token->Packet->Dhcp4.Header.ClientHwAddr[0], Head->ClientHwAddr, Head->HwAddrLen) != 0)) + { goto RESTART; } @@ -1395,8 +1384,8 @@ PxeDhcpInput ( // if ((Packet->Length > sizeof (EFI_DHCP4_HEADER) + sizeof (UINT32)) && (Packet->Dhcp4.Magik == DHCP_OPTION_MAGIC) && - EFI_ERROR (DhcpValidateOptions (Packet, NULL))) { - + EFI_ERROR (DhcpValidateOptions (Packet, NULL))) + { goto RESTART; } @@ -1437,7 +1426,7 @@ PxeDhcpDone ( Token->ResponseCount = Instance->ResponseQueue.BufNum; if (Token->ResponseCount != 0) { - Token->ResponseList = (EFI_DHCP4_PACKET *) AllocatePool (Instance->ResponseQueue.BufSize); + Token->ResponseList = (EFI_DHCP4_PACKET *)AllocatePool (Instance->ResponseQueue.BufSize); if (Token->ResponseList == NULL) { Token->Status = EFI_OUT_OF_RESOURCES; goto SIGNAL_USER; @@ -1446,7 +1435,7 @@ PxeDhcpDone ( // // Copy the received DHCP responses. // - NetbufQueCopy (&Instance->ResponseQueue, 0, Instance->ResponseQueue.BufSize, (UINT8 *) Token->ResponseList); + NetbufQueCopy (&Instance->ResponseQueue, 0, Instance->ResponseQueue.BufSize, (UINT8 *)Token->ResponseList); Token->Status = EFI_SUCCESS; } else { Token->ResponseList = NULL; @@ -1474,7 +1463,6 @@ SIGNAL_USER: } } - /** Transmits a DHCP formatted packet and optionally waits for responses. @@ -1501,16 +1489,16 @@ EfiDhcp4TransmitReceive ( IN EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN *Token ) { - DHCP_PROTOCOL *Instance; - EFI_TPL OldTpl; - EFI_STATUS Status; - NET_FRAGMENT Frag; - NET_BUF *Wrap; - UDP_END_POINT EndPoint; - IP4_ADDR Ip; - DHCP_SERVICE *DhcpSb; - EFI_IP_ADDRESS Gateway; - IP4_ADDR ClientAddr; + DHCP_PROTOCOL *Instance; + EFI_TPL OldTpl; + EFI_STATUS Status; + NET_FRAGMENT Frag; + NET_BUF *Wrap; + UDP_END_POINT EndPoint; + IP4_ADDR Ip; + DHCP_SERVICE *DhcpSb; + EFI_IP_ADDRESS Gateway; + IP4_ADDR ClientAddr; if ((This == NULL) || (Token == NULL) || (Token->Packet == NULL)) { return EFI_INVALID_PARAMETER; @@ -1532,7 +1520,8 @@ EfiDhcp4TransmitReceive ( ((Token->ListenPointCount != 0) && (Token->ListenPoints == NULL)) || EFI_ERROR (DhcpValidateOptions (Token->Packet, NULL)) || EFI_IP4_EQUAL (&Token->RemoteAddress, &mZeroIp4Addr) - ) { + ) + { // // The DHCP packet isn't well-formed, the Transaction ID is already used, // the timeout value is zero, the ListenPoint is invalid, or the @@ -1575,7 +1564,7 @@ EfiDhcp4TransmitReceive ( // // Wrap the DHCP packet into a net buffer. // - Frag.Bulk = (UINT8 *) &Token->Packet->Dhcp4; + Frag.Bulk = (UINT8 *)&Token->Packet->Dhcp4; Frag.Len = Token->Packet->Length; Wrap = NetbufFromExt (&Frag, 1, 0, 0, DhcpDummyExtFree, NULL); if (Wrap == NULL) { @@ -1667,7 +1656,6 @@ ON_ERROR: return Status; } - /** Callback function for DhcpIterateOptions. This callback sets the EFI_DHCP4_PACKET_OPTION array in the DHCP_PARSE_CONTEXT to point @@ -1683,15 +1671,15 @@ ON_ERROR: **/ EFI_STATUS Dhcp4ParseCheckOption ( - IN UINT8 Tag, - IN UINT8 Len, - IN UINT8 *Data, - IN VOID *Context + IN UINT8 Tag, + IN UINT8 Len, + IN UINT8 *Data, + IN VOID *Context ) { - DHCP_PARSE_CONTEXT *Parse; + DHCP_PARSE_CONTEXT *Parse; - Parse = (DHCP_PARSE_CONTEXT *) Context; + Parse = (DHCP_PARSE_CONTEXT *)Context; Parse->Index++; if (Parse->Index <= Parse->OptionCount) { @@ -1706,7 +1694,6 @@ Dhcp4ParseCheckOption ( return EFI_SUCCESS; } - /** Parses the packed DHCP option data. @@ -1737,14 +1724,14 @@ Dhcp4ParseCheckOption ( EFI_STATUS EFIAPI EfiDhcp4Parse ( - IN EFI_DHCP4_PROTOCOL *This, - IN EFI_DHCP4_PACKET *Packet, - IN OUT UINT32 *OptionCount, - OUT EFI_DHCP4_PACKET_OPTION *PacketOptionList[] OPTIONAL + IN EFI_DHCP4_PROTOCOL *This, + IN EFI_DHCP4_PACKET *Packet, + IN OUT UINT32 *OptionCount, + OUT EFI_DHCP4_PACKET_OPTION *PacketOptionList[] OPTIONAL ) { - DHCP_PARSE_CONTEXT Context; - EFI_STATUS Status; + DHCP_PARSE_CONTEXT Context; + EFI_STATUS Status; // // First validate the parameters @@ -1755,8 +1742,8 @@ EfiDhcp4Parse ( if ((Packet->Size < Packet->Length + 2 * sizeof (UINT32)) || (Packet->Dhcp4.Magik != DHCP_OPTION_MAGIC) || - EFI_ERROR (DhcpValidateOptions (Packet, NULL))) { - + EFI_ERROR (DhcpValidateOptions (Packet, NULL))) + { return EFI_INVALID_PARAMETER; } @@ -1770,7 +1757,7 @@ EfiDhcp4Parse ( Context.OptionCount = *OptionCount; Context.Index = 0; - Status = DhcpIterateOptions (Packet, Dhcp4ParseCheckOption, &Context); + Status = DhcpIterateOptions (Packet, Dhcp4ParseCheckOption, &Context); if (EFI_ERROR (Status)) { return Status; @@ -1794,9 +1781,9 @@ EfiDhcp4Parse ( **/ VOID SetElapsedTime ( - IN UINT16 *Elapsed, - IN DHCP_PROTOCOL *Instance + IN UINT16 *Elapsed, + IN DHCP_PROTOCOL *Instance ) { - WriteUnaligned16 (Elapsed, HTONS(Instance->ElaspedTime)); + WriteUnaligned16 (Elapsed, HTONS (Instance->ElaspedTime)); } diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.h b/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.h index 8c2cd3dae1..7e5409da0f 100644 --- a/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.h +++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Impl.h @@ -14,8 +14,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_DHCP4_IMPL_H__ #define __EFI_DHCP4_IMPL_H__ - - #include #include @@ -28,8 +26,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include -typedef struct _DHCP_SERVICE DHCP_SERVICE; -typedef struct _DHCP_PROTOCOL DHCP_PROTOCOL; +typedef struct _DHCP_SERVICE DHCP_SERVICE; +typedef struct _DHCP_PROTOCOL DHCP_PROTOCOL; #include "Dhcp4Option.h" #include "Dhcp4Io.h" @@ -37,7 +35,7 @@ typedef struct _DHCP_PROTOCOL DHCP_PROTOCOL; #define DHCP_SERVICE_SIGNATURE SIGNATURE_32 ('D', 'H', 'C', 'P') #define DHCP_PROTOCOL_SIGNATURE SIGNATURE_32 ('d', 'h', 'c', 'p') -#define DHCP_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) +#define DHCP_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) // // The state of the DHCP service. It starts as UNCONFIGED. If @@ -46,28 +44,27 @@ typedef struct _DHCP_PROTOCOL DHCP_PROTOCOL; // goes back to UNCONFIGED. It becomes DESTROY if it is (partly) // destroyed. // -#define DHCP_UNCONFIGED 0 -#define DHCP_CONFIGED 1 -#define DHCP_DESTROY 2 - +#define DHCP_UNCONFIGED 0 +#define DHCP_CONFIGED 1 +#define DHCP_DESTROY 2 struct _DHCP_PROTOCOL { - UINT32 Signature; - EFI_DHCP4_PROTOCOL Dhcp4Protocol; - LIST_ENTRY Link; - EFI_HANDLE Handle; - DHCP_SERVICE *Service; - - BOOLEAN InDestroy; - - EFI_EVENT CompletionEvent; - EFI_EVENT RenewRebindEvent; - - EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN *Token; - UDP_IO *UdpIo; // The UDP IO used for TransmitReceive. - UINT32 Timeout; - UINT16 ElaspedTime; - NET_BUF_QUEUE ResponseQueue; + UINT32 Signature; + EFI_DHCP4_PROTOCOL Dhcp4Protocol; + LIST_ENTRY Link; + EFI_HANDLE Handle; + DHCP_SERVICE *Service; + + BOOLEAN InDestroy; + + EFI_EVENT CompletionEvent; + EFI_EVENT RenewRebindEvent; + + EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN *Token; + UDP_IO *UdpIo; // The UDP IO used for TransmitReceive. + UINT32 Timeout; + UINT16 ElaspedTime; + NET_BUF_QUEUE ResponseQueue; }; // @@ -75,62 +72,62 @@ struct _DHCP_PROTOCOL { // has a service binding, there can be only one active child. // struct _DHCP_SERVICE { - UINT32 Signature; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + UINT32 Signature; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - INTN ServiceState; // CONFIGED, UNCONFIGED, and DESTROY + INTN ServiceState; // CONFIGED, UNCONFIGED, and DESTROY - EFI_HANDLE Controller; - EFI_HANDLE Image; + EFI_HANDLE Controller; + EFI_HANDLE Image; - LIST_ENTRY Children; - UINTN NumChildren; + LIST_ENTRY Children; + UINTN NumChildren; - INTN DhcpState; - EFI_STATUS IoStatus; // the result of last user operation - UINT32 Xid; + INTN DhcpState; + EFI_STATUS IoStatus; // the result of last user operation + UINT32 Xid; - IP4_ADDR ClientAddr; // lease IP or configured client address - IP4_ADDR Netmask; - IP4_ADDR ServerAddr; + IP4_ADDR ClientAddr; // lease IP or configured client address + IP4_ADDR Netmask; + IP4_ADDR ServerAddr; - EFI_DHCP4_PACKET *LastOffer; // The last received offer - EFI_DHCP4_PACKET *Selected; - DHCP_PARAMETER *Para; + EFI_DHCP4_PACKET *LastOffer; // The last received offer + EFI_DHCP4_PACKET *Selected; + DHCP_PARAMETER *Para; - UINT32 Lease; - UINT32 T1; - UINT32 T2; - INTN ExtraRefresh; // This refresh is reqested by user + UINT32 Lease; + UINT32 T1; + UINT32 T2; + INTN ExtraRefresh; // This refresh is reqested by user - UDP_IO *UdpIo; // Udp child receiving all DHCP message - UDP_IO *LeaseIoPort; // Udp child with lease IP - EFI_DHCP4_PACKET *LastPacket; // The last sent packet for retransmission - EFI_MAC_ADDRESS Mac; - UINT8 HwType; - UINT8 HwLen; - UINT8 ClientAddressSendOut[16]; + UDP_IO *UdpIo; // Udp child receiving all DHCP message + UDP_IO *LeaseIoPort; // Udp child with lease IP + EFI_DHCP4_PACKET *LastPacket; // The last sent packet for retransmission + EFI_MAC_ADDRESS Mac; + UINT8 HwType; + UINT8 HwLen; + UINT8 ClientAddressSendOut[16]; - DHCP_PROTOCOL *ActiveChild; - EFI_DHCP4_CONFIG_DATA ActiveConfig; - UINT32 UserOptionLen; + DHCP_PROTOCOL *ActiveChild; + EFI_DHCP4_CONFIG_DATA ActiveConfig; + UINT32 UserOptionLen; // // Timer event and various timer // - EFI_EVENT Timer; + EFI_EVENT Timer; - UINT32 PacketToLive; // Retransmission timer for our packets - UINT32 LastTimeout; // Record the init value of PacketToLive every time - INTN CurRetry; - INTN MaxRetries; - UINT32 LeaseLife; + UINT32 PacketToLive; // Retransmission timer for our packets + UINT32 LastTimeout; // Record the init value of PacketToLive every time + INTN CurRetry; + INTN MaxRetries; + UINT32 LeaseLife; }; typedef struct { - EFI_DHCP4_PACKET_OPTION **Option; - UINT32 OptionCount; - UINT32 Index; + EFI_DHCP4_PACKET_OPTION **Option; + UINT32 OptionCount; + UINT32 Index; } DHCP_PARSE_CONTEXT; #define DHCP_INSTANCE_FROM_THIS(Proto) \ @@ -139,7 +136,7 @@ typedef struct { #define DHCP_SERVICE_FROM_THIS(Sb) \ CR ((Sb), DHCP_SERVICE, ServiceBinding, DHCP_SERVICE_SIGNATURE) -extern EFI_DHCP4_PROTOCOL mDhcp4ProtocolTemplate; +extern EFI_DHCP4_PROTOCOL mDhcp4ProtocolTemplate; /** Give up the control of the DHCP service to let other child @@ -151,7 +148,7 @@ extern EFI_DHCP4_PROTOCOL mDhcp4ProtocolTemplate; **/ VOID DhcpYieldControl ( - IN DHCP_SERVICE *DhcpSb + IN DHCP_SERVICE *DhcpSb ); /** @@ -187,7 +184,7 @@ DhcpCleanConfigure ( VOID EFIAPI DhcpDummyExtFree ( - IN VOID *Arg + IN VOID *Arg ); /** @@ -199,8 +196,8 @@ DhcpDummyExtFree ( **/ VOID SetElapsedTime ( - IN UINT16 *Elapsed, - IN DHCP_PROTOCOL *Instance + IN UINT16 *Elapsed, + IN DHCP_PROTOCOL *Instance ); #endif diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Io.c b/NetworkPkg/Dhcp4Dxe/Dhcp4Io.c index f073eed58a..238e186c5b 100644 --- a/NetworkPkg/Dhcp4Dxe/Dhcp4Io.c +++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Io.c @@ -6,12 +6,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Dhcp4Impl.h" UINT32 mDhcp4DefaultTimeout[4] = { 4, 8, 16, 32 }; - /** Send an initial DISCOVER or REQUEST message according to the DHCP service's current state. @@ -24,17 +22,17 @@ UINT32 mDhcp4DefaultTimeout[4] = { 4, 8, 16, 32 }; **/ EFI_STATUS DhcpInitRequest ( - IN DHCP_SERVICE *DhcpSb + IN DHCP_SERVICE *DhcpSb ) { - EFI_STATUS Status; + EFI_STATUS Status; ASSERT ((DhcpSb->DhcpState == Dhcp4Init) || (DhcpSb->DhcpState == Dhcp4InitReboot)); // // Clear initial time to make sure that elapsed-time is set to 0 for first Discover or REQUEST message. // - DhcpSb->ActiveChild->ElaspedTime= 0; + DhcpSb->ActiveChild->ElaspedTime = 0; if (DhcpSb->DhcpState == Dhcp4Init) { DhcpSetState (DhcpSb, Dhcp4Selecting, FALSE); @@ -57,7 +55,6 @@ DhcpInitRequest ( return EFI_SUCCESS; } - /** Call user provided callback function, and return the value the function returns. If the user doesn't provide a callback, a @@ -76,14 +73,14 @@ DhcpInitRequest ( **/ EFI_STATUS DhcpCallUser ( - IN DHCP_SERVICE *DhcpSb, - IN EFI_DHCP4_EVENT Event, - IN EFI_DHCP4_PACKET *Packet OPTIONAL, - OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL + IN DHCP_SERVICE *DhcpSb, + IN EFI_DHCP4_EVENT Event, + IN EFI_DHCP4_PACKET *Packet OPTIONAL, + OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL ) { - EFI_DHCP4_CONFIG_DATA *Config; - EFI_STATUS Status; + EFI_DHCP4_CONFIG_DATA *Config; + EFI_STATUS Status; if (NewPacket != NULL) { *NewPacket = NULL; @@ -109,7 +106,7 @@ DhcpCallUser ( Status = Config->Dhcp4Callback ( &DhcpSb->ActiveChild->Dhcp4Protocol, Config->CallbackContext, - (EFI_DHCP4_STATE) DhcpSb->DhcpState, + (EFI_DHCP4_STATE)DhcpSb->DhcpState, Event, Packet, NewPacket @@ -127,7 +124,6 @@ DhcpCallUser ( return EFI_ABORTED; } - /** Notify the user about the operation result. @@ -137,35 +133,33 @@ DhcpCallUser ( **/ VOID DhcpNotifyUser ( - IN DHCP_SERVICE *DhcpSb, - IN INTN Which + IN DHCP_SERVICE *DhcpSb, + IN INTN Which ) { - DHCP_PROTOCOL *Child; + DHCP_PROTOCOL *Child; if ((Child = DhcpSb->ActiveChild) == NULL) { - return ; + return; } if ((Child->CompletionEvent != NULL) && ((Which == DHCP_NOTIFY_COMPLETION) || (Which == DHCP_NOTIFY_ALL)) - ) { - + ) + { gBS->SignalEvent (Child->CompletionEvent); Child->CompletionEvent = NULL; } if ((Child->RenewRebindEvent != NULL) && ((Which == DHCP_NOTIFY_RENEWREBIND) || (Which == DHCP_NOTIFY_ALL)) - ) { - + ) + { gBS->SignalEvent (Child->RenewRebindEvent); Child->RenewRebindEvent = NULL; } } - - /** Set the DHCP state. If CallUser is true, it will try to notify the user before change the state by DhcpNotifyUser. It returns @@ -183,25 +177,22 @@ DhcpNotifyUser ( **/ EFI_STATUS DhcpSetState ( - IN OUT DHCP_SERVICE *DhcpSb, - IN INTN State, - IN BOOLEAN CallUser + IN OUT DHCP_SERVICE *DhcpSb, + IN INTN State, + IN BOOLEAN CallUser ) { - EFI_STATUS Status; + EFI_STATUS Status; if (CallUser) { Status = EFI_SUCCESS; if (State == Dhcp4Renewing) { Status = DhcpCallUser (DhcpSb, Dhcp4EnterRenewing, NULL, NULL); - } else if (State == Dhcp4Rebinding) { Status = DhcpCallUser (DhcpSb, Dhcp4EnterRebinding, NULL, NULL); - } else if (State == Dhcp4Bound) { Status = DhcpCallUser (DhcpSb, Dhcp4BoundCompleted, NULL, NULL); - } if (EFI_ERROR (Status)) { @@ -224,14 +215,13 @@ DhcpSetState ( DhcpSb->MaxRetries = 4; } - DhcpSb->CurRetry = 0; - DhcpSb->PacketToLive = 0; - DhcpSb->LastTimeout = 0; - DhcpSb->DhcpState = State; + DhcpSb->CurRetry = 0; + DhcpSb->PacketToLive = 0; + DhcpSb->LastTimeout = 0; + DhcpSb->DhcpState = State; return EFI_SUCCESS; } - /** Set the retransmit timer for the packet. It will select from either the discover timeouts/request timeouts or the default timeout values. @@ -241,10 +231,10 @@ DhcpSetState ( **/ VOID DhcpSetTransmitTimer ( - IN OUT DHCP_SERVICE *DhcpSb + IN OUT DHCP_SERVICE *DhcpSb ) { - UINT32 *Times; + UINT32 *Times; ASSERT (DhcpSb->MaxRetries > DhcpSb->CurRetry); @@ -275,8 +265,8 @@ DhcpSetTransmitTimer ( **/ VOID DhcpComputeLease ( - IN OUT DHCP_SERVICE *DhcpSb, - IN DHCP_PARAMETER *Para + IN OUT DHCP_SERVICE *DhcpSb, + IN DHCP_PARAMETER *Para ) { ASSERT (Para != NULL); @@ -298,7 +288,6 @@ DhcpComputeLease ( } } - /** Configure a UDP IO port to use the acquired lease address. DHCP driver needs this port to unicast packet to the server @@ -314,32 +303,32 @@ DhcpComputeLease ( EFI_STATUS EFIAPI DhcpConfigLeaseIoPort ( - IN UDP_IO *UdpIo, - IN VOID *Context + IN UDP_IO *UdpIo, + IN VOID *Context ) { - EFI_UDP4_CONFIG_DATA UdpConfigData; - EFI_IPv4_ADDRESS Subnet; - EFI_IPv4_ADDRESS Gateway; - DHCP_SERVICE *DhcpSb; - EFI_STATUS Status; - IP4_ADDR Ip; - - DhcpSb = (DHCP_SERVICE *) Context; - - UdpConfigData.AcceptBroadcast = FALSE; - UdpConfigData.AcceptPromiscuous = FALSE; - UdpConfigData.AcceptAnyPort = FALSE; - UdpConfigData.AllowDuplicatePort = TRUE; - UdpConfigData.TypeOfService = 0; - UdpConfigData.TimeToLive = 64; - UdpConfigData.DoNotFragment = FALSE; - UdpConfigData.ReceiveTimeout = 1; - UdpConfigData.TransmitTimeout = 0; - - UdpConfigData.UseDefaultAddress = FALSE; - UdpConfigData.StationPort = DHCP_CLIENT_PORT; - UdpConfigData.RemotePort = DHCP_SERVER_PORT; + EFI_UDP4_CONFIG_DATA UdpConfigData; + EFI_IPv4_ADDRESS Subnet; + EFI_IPv4_ADDRESS Gateway; + DHCP_SERVICE *DhcpSb; + EFI_STATUS Status; + IP4_ADDR Ip; + + DhcpSb = (DHCP_SERVICE *)Context; + + UdpConfigData.AcceptBroadcast = FALSE; + UdpConfigData.AcceptPromiscuous = FALSE; + UdpConfigData.AcceptAnyPort = FALSE; + UdpConfigData.AllowDuplicatePort = TRUE; + UdpConfigData.TypeOfService = 0; + UdpConfigData.TimeToLive = 64; + UdpConfigData.DoNotFragment = FALSE; + UdpConfigData.ReceiveTimeout = 1; + UdpConfigData.TransmitTimeout = 0; + + UdpConfigData.UseDefaultAddress = FALSE; + UdpConfigData.StationPort = DHCP_CLIENT_PORT; + UdpConfigData.RemotePort = DHCP_SERVER_PORT; Ip = HTONL (DhcpSb->ClientAddr); CopyMem (&UdpConfigData.StationAddress, &Ip, sizeof (EFI_IPv4_ADDRESS)); @@ -370,7 +359,6 @@ DhcpConfigLeaseIoPort ( return EFI_SUCCESS; } - /** Update the lease states when a new lease is acquired. It will not only save the acquired the address and lease time, it will also create a UDP @@ -384,14 +372,14 @@ DhcpConfigLeaseIoPort ( **/ EFI_STATUS DhcpLeaseAcquired ( - IN OUT DHCP_SERVICE *DhcpSb + IN OUT DHCP_SERVICE *DhcpSb ) { DhcpSb->ClientAddr = EFI_NTOHL (DhcpSb->Selected->Dhcp4.Header.YourAddr); if (DhcpSb->Para != NULL) { - DhcpSb->Netmask = DhcpSb->Para->NetMask; - DhcpSb->ServerAddr = DhcpSb->Para->ServerId; + DhcpSb->Netmask = DhcpSb->Para->NetMask; + DhcpSb->ServerAddr = DhcpSb->Para->ServerId; } if (DhcpSb->Netmask == 0) { @@ -426,7 +414,6 @@ DhcpLeaseAcquired ( return DhcpSetState (DhcpSb, Dhcp4Bound, TRUE); } - /** Clean up the DHCP related states, IoStatus isn't reset. @@ -435,14 +422,14 @@ DhcpLeaseAcquired ( **/ VOID DhcpCleanLease ( - IN DHCP_SERVICE *DhcpSb + IN DHCP_SERVICE *DhcpSb ) { - DhcpSb->DhcpState = Dhcp4Init; - DhcpSb->Xid = DhcpSb->Xid + 1; - DhcpSb->ClientAddr = 0; - DhcpSb->Netmask = 0; - DhcpSb->ServerAddr = 0; + DhcpSb->DhcpState = Dhcp4Init; + DhcpSb->Xid = DhcpSb->Xid + 1; + DhcpSb->ClientAddr = 0; + DhcpSb->Netmask = 0; + DhcpSb->ServerAddr = 0; if (DhcpSb->LastOffer != NULL) { FreePool (DhcpSb->LastOffer); @@ -459,10 +446,10 @@ DhcpCleanLease ( DhcpSb->Para = NULL; } - DhcpSb->Lease = 0; - DhcpSb->T1 = 0; - DhcpSb->T2 = 0; - DhcpSb->ExtraRefresh = FALSE; + DhcpSb->Lease = 0; + DhcpSb->T1 = 0; + DhcpSb->T2 = 0; + DhcpSb->ExtraRefresh = FALSE; if (DhcpSb->LeaseIoPort != NULL) { UdpIoFreeIo (DhcpSb->LeaseIoPort); @@ -474,11 +461,11 @@ DhcpCleanLease ( DhcpSb->LastPacket = NULL; } - DhcpSb->PacketToLive = 0; - DhcpSb->LastTimeout = 0; - DhcpSb->CurRetry = 0; - DhcpSb->MaxRetries = 0; - DhcpSb->LeaseLife = 0; + DhcpSb->PacketToLive = 0; + DhcpSb->LastTimeout = 0; + DhcpSb->CurRetry = 0; + DhcpSb->MaxRetries = 0; + DhcpSb->LeaseLife = 0; // // Clean active config data. @@ -486,7 +473,6 @@ DhcpCleanLease ( DhcpCleanConfigure (&DhcpSb->ActiveConfig); } - /** Select a offer among all the offers collected. If the offer selected is of BOOTP, the lease is recorded and user notified. If the offer is of @@ -499,13 +485,13 @@ DhcpCleanLease ( **/ EFI_STATUS DhcpChooseOffer ( - IN DHCP_SERVICE *DhcpSb + IN DHCP_SERVICE *DhcpSb ) { - EFI_DHCP4_PACKET *Selected; - EFI_DHCP4_PACKET *NewPacket; - EFI_DHCP4_PACKET *TempPacket; - EFI_STATUS Status; + EFI_DHCP4_PACKET *Selected; + EFI_DHCP4_PACKET *NewPacket; + EFI_DHCP4_PACKET *TempPacket; + EFI_STATUS Status; ASSERT (DhcpSb->LastOffer != NULL); @@ -524,7 +510,7 @@ DhcpChooseOffer ( Selected = DhcpSb->LastOffer; if ((NewPacket != NULL) && !EFI_ERROR (DhcpValidateOptions (NewPacket, NULL))) { - TempPacket = (EFI_DHCP4_PACKET *) AllocatePool (NewPacket->Size); + TempPacket = (EFI_DHCP4_PACKET *)AllocatePool (NewPacket->Size); if (TempPacket != NULL) { CopyMem (TempPacket, NewPacket, NewPacket->Size); FreePool (Selected); @@ -565,7 +551,6 @@ DhcpChooseOffer ( return DhcpSendMessage (DhcpSb, Selected, DhcpSb->Para, DHCP_MSG_REQUEST, NULL); } - /** Terminate the current address acquire. All the allocated resources are released. Be careful when calling this function. A rule related @@ -578,8 +563,8 @@ DhcpChooseOffer ( **/ VOID DhcpEndSession ( - IN DHCP_SERVICE *DhcpSb, - IN EFI_STATUS Status + IN DHCP_SERVICE *DhcpSb, + IN EFI_STATUS Status ) { if (DHCP_CONNECTED (DhcpSb->DhcpState)) { @@ -594,7 +579,6 @@ DhcpEndSession ( DhcpNotifyUser (DhcpSb, DHCP_NOTIFY_ALL); } - /** Handle packets in DHCP select state. @@ -609,12 +593,12 @@ DhcpEndSession ( **/ EFI_STATUS DhcpHandleSelect ( - IN DHCP_SERVICE *DhcpSb, - IN EFI_DHCP4_PACKET *Packet, - IN DHCP_PARAMETER *Para + IN DHCP_SERVICE *DhcpSb, + IN EFI_DHCP4_PACKET *Packet, + IN DHCP_PARAMETER *Para ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = EFI_SUCCESS; @@ -626,7 +610,8 @@ DhcpHandleSelect ( // if (!DHCP_IS_BOOTP (Para) && ((Para->DhcpType != DHCP_MSG_OFFER) || (Para->ServerId == 0)) - ) { + ) + { goto ON_EXIT; } @@ -646,14 +631,12 @@ DhcpHandleSelect ( DhcpSb->LastOffer = Packet; return DhcpChooseOffer (DhcpSb); - } else if (Status == EFI_NOT_READY) { if (DhcpSb->LastOffer != NULL) { FreePool (DhcpSb->LastOffer); } DhcpSb->LastOffer = Packet; - } else if (Status == EFI_ABORTED) { // // DhcpInput will end the session upon error return. Remember @@ -669,7 +652,6 @@ ON_EXIT: return Status; } - /** Handle packets in DHCP request state. @@ -684,20 +666,20 @@ ON_EXIT: **/ EFI_STATUS DhcpHandleRequest ( - IN DHCP_SERVICE *DhcpSb, - IN EFI_DHCP4_PACKET *Packet, - IN DHCP_PARAMETER *Para + IN DHCP_SERVICE *DhcpSb, + IN EFI_DHCP4_PACKET *Packet, + IN DHCP_PARAMETER *Para ) { - EFI_DHCP4_HEADER *Head; - EFI_DHCP4_HEADER *Selected; - EFI_STATUS Status; - UINT8 *Message; + EFI_DHCP4_HEADER *Head; + EFI_DHCP4_HEADER *Selected; + EFI_STATUS Status; + UINT8 *Message; ASSERT (!DHCP_IS_BOOTP (DhcpSb->Para)); - Head = &Packet->Dhcp4.Header; - Selected = &DhcpSb->Selected->Dhcp4.Header; + Head = &Packet->Dhcp4.Header; + Selected = &DhcpSb->Selected->Dhcp4.Header; // // Ignore the BOOTP message and DHCP messages other than DHCP ACK/NACK. @@ -705,8 +687,8 @@ DhcpHandleRequest ( if (DHCP_IS_BOOTP (Para) || (Para->ServerId != DhcpSb->Para->ServerId) || ((Para->DhcpType != DHCP_MSG_ACK) && (Para->DhcpType != DHCP_MSG_NAK)) - ) { - + ) + { Status = EFI_SUCCESS; goto ON_EXIT; } @@ -727,14 +709,14 @@ DhcpHandleRequest ( Message = NULL; if (!EFI_IP4_EQUAL (&Head->YourAddr, &Selected->YourAddr)) { - Message = (UINT8 *) "Lease confirmed isn't the same as that in the offer"; + Message = (UINT8 *)"Lease confirmed isn't the same as that in the offer"; goto REJECT; } Status = DhcpCallUser (DhcpSb, Dhcp4RcvdAck, Packet, NULL); if (EFI_ERROR (Status)) { - Message = (UINT8 *) "Lease is denied upon received ACK"; + Message = (UINT8 *)"Lease is denied upon received ACK"; goto REJECT; } @@ -744,7 +726,7 @@ DhcpHandleRequest ( Status = DhcpLeaseAcquired (DhcpSb); if (EFI_ERROR (Status)) { - Message = (UINT8 *) "Lease is denied upon entering bound"; + Message = (UINT8 *)"Lease is denied upon entering bound"; goto REJECT; } @@ -762,7 +744,6 @@ ON_EXIT: return Status; } - /** Handle packets in DHCP renew/rebound state. @@ -777,19 +758,19 @@ ON_EXIT: **/ EFI_STATUS DhcpHandleRenewRebind ( - IN DHCP_SERVICE *DhcpSb, - IN EFI_DHCP4_PACKET *Packet, - IN DHCP_PARAMETER *Para + IN DHCP_SERVICE *DhcpSb, + IN EFI_DHCP4_PACKET *Packet, + IN DHCP_PARAMETER *Para ) { - EFI_DHCP4_HEADER *Head; - EFI_DHCP4_HEADER *Selected; - EFI_STATUS Status; + EFI_DHCP4_HEADER *Head; + EFI_DHCP4_HEADER *Selected; + EFI_STATUS Status; ASSERT (!DHCP_IS_BOOTP (DhcpSb->Para)); - Head = &Packet->Dhcp4.Header; - Selected = &DhcpSb->Selected->Dhcp4.Header; + Head = &Packet->Dhcp4.Header; + Selected = &DhcpSb->Selected->Dhcp4.Header; // // Ignore the BOOTP message and DHCP messages other than DHCP ACK/NACK @@ -797,8 +778,8 @@ DhcpHandleRenewRebind ( if (DHCP_IS_BOOTP (Para) || (Para->ServerId != DhcpSb->Para->ServerId) || ((Para->DhcpType != DHCP_MSG_ACK) && (Para->DhcpType != DHCP_MSG_NAK)) - ) { - + ) + { Status = EFI_SUCCESS; goto ON_EXIT; } @@ -835,9 +816,9 @@ DhcpHandleRenewRebind ( DhcpSetState (DhcpSb, Dhcp4Bound, TRUE); if (DhcpSb->ExtraRefresh != 0) { - DhcpSb->ExtraRefresh = FALSE; + DhcpSb->ExtraRefresh = FALSE; - DhcpSb->IoStatus = EFI_SUCCESS; + DhcpSb->IoStatus = EFI_SUCCESS; DhcpNotifyUser (DhcpSb, DHCP_NOTIFY_RENEWREBIND); } @@ -846,7 +827,6 @@ ON_EXIT: return Status; } - /** Handle packets in DHCP reboot state. @@ -861,13 +841,13 @@ ON_EXIT: **/ EFI_STATUS DhcpHandleReboot ( - IN DHCP_SERVICE *DhcpSb, - IN EFI_DHCP4_PACKET *Packet, - IN DHCP_PARAMETER *Para + IN DHCP_SERVICE *DhcpSb, + IN EFI_DHCP4_PACKET *Packet, + IN DHCP_PARAMETER *Para ) { - EFI_DHCP4_HEADER *Head; - EFI_STATUS Status; + EFI_DHCP4_HEADER *Head; + EFI_STATUS Status; Head = &Packet->Dhcp4.Header; @@ -876,8 +856,8 @@ DhcpHandleReboot ( // if (DHCP_IS_BOOTP (Para) || ((Para->DhcpType != DHCP_MSG_ACK) && (Para->DhcpType != DHCP_MSG_NAK)) - ) { - + ) + { Status = EFI_SUCCESS; goto ON_EXIT; } @@ -888,10 +868,10 @@ DhcpHandleReboot ( if (Para->DhcpType == DHCP_MSG_NAK) { DhcpCallUser (DhcpSb, Dhcp4RcvdNak, Packet, NULL); - DhcpSb->ClientAddr = 0; - DhcpSb->DhcpState = Dhcp4Init; + DhcpSb->ClientAddr = 0; + DhcpSb->DhcpState = Dhcp4Init; - Status = DhcpInitRequest (DhcpSb); + Status = DhcpInitRequest (DhcpSb); goto ON_EXIT; } @@ -917,8 +897,8 @@ DhcpHandleReboot ( goto ON_EXIT; } - DhcpSb->Selected = Packet; - Status = DhcpLeaseAcquired (DhcpSb); + DhcpSb->Selected = Packet; + Status = DhcpLeaseAcquired (DhcpSb); if (EFI_ERROR (Status)) { return Status; } @@ -932,7 +912,6 @@ ON_EXIT: return Status; } - /** Handle the received DHCP packets. This function drives the DHCP state machine. @@ -946,30 +925,30 @@ ON_EXIT: VOID EFIAPI DhcpInput ( - NET_BUF *UdpPacket, - UDP_END_POINT *EndPoint, - EFI_STATUS IoStatus, - VOID *Context + NET_BUF *UdpPacket, + UDP_END_POINT *EndPoint, + EFI_STATUS IoStatus, + VOID *Context ) { - DHCP_SERVICE *DhcpSb; - EFI_DHCP4_HEADER *Head; - EFI_DHCP4_PACKET *Packet; - DHCP_PARAMETER *Para; - EFI_STATUS Status; - UINT32 Len; + DHCP_SERVICE *DhcpSb; + EFI_DHCP4_HEADER *Head; + EFI_DHCP4_PACKET *Packet; + DHCP_PARAMETER *Para; + EFI_STATUS Status; + UINT32 Len; - Packet = NULL; - DhcpSb = (DHCP_SERVICE *) Context; + Packet = NULL; + DhcpSb = (DHCP_SERVICE *)Context; // // Don't restart receive if error occurs or DHCP is destroyed. // if (EFI_ERROR (IoStatus)) { - return ; + return; } else if (DhcpSb->ServiceState == DHCP_DESTROY) { NetbufFree (UdpPacket); - return ; + return; } ASSERT (UdpPacket != NULL); @@ -988,16 +967,16 @@ DhcpInput ( // // Copy the DHCP message to a continuous memory block // - Len = sizeof (EFI_DHCP4_PACKET) + UdpPacket->TotalSize - sizeof (EFI_DHCP4_HEADER); - Packet = (EFI_DHCP4_PACKET *) AllocatePool (Len); + Len = sizeof (EFI_DHCP4_PACKET) + UdpPacket->TotalSize - sizeof (EFI_DHCP4_HEADER); + Packet = (EFI_DHCP4_PACKET *)AllocatePool (Len); if (Packet == NULL) { goto RESTART; } - Packet->Size = Len; - Head = &Packet->Dhcp4.Header; - Packet->Length = NetbufCopy (UdpPacket, 0, UdpPacket->TotalSize, (UINT8 *) Head); + Packet->Size = Len; + Head = &Packet->Dhcp4.Header; + Packet->Length = NetbufCopy (UdpPacket, 0, UdpPacket->TotalSize, (UINT8 *)Head); if (Packet->Length != UdpPacket->TotalSize) { goto RESTART; @@ -1008,7 +987,8 @@ DhcpInput ( // if ((Head->OpCode != BOOTP_REPLY) || (NTOHL (Head->Xid) != DhcpSb->Xid) || - (CompareMem (DhcpSb->ClientAddressSendOut, Head->ClientHwAddr, Head->HwAddrLen) != 0)) { + (CompareMem (DhcpSb->ClientAddressSendOut, Head->ClientHwAddr, Head->HwAddrLen) != 0)) + { goto RESTART; } @@ -1018,8 +998,8 @@ DhcpInput ( Para = NULL; if ((Packet->Length > sizeof (EFI_DHCP4_HEADER) + sizeof (UINT32)) && (Packet->Dhcp4.Magik == DHCP_OPTION_MAGIC) && - EFI_ERROR (DhcpValidateOptions (Packet, &Para))) { - + EFI_ERROR (DhcpValidateOptions (Packet, &Para))) + { goto RESTART; } @@ -1035,32 +1015,32 @@ DhcpInput ( Status = EFI_SUCCESS; switch (DhcpSb->DhcpState) { - case Dhcp4Selecting: - Status = DhcpHandleSelect (DhcpSb, Packet, Para); - break; + case Dhcp4Selecting: + Status = DhcpHandleSelect (DhcpSb, Packet, Para); + break; - case Dhcp4Requesting: - Status = DhcpHandleRequest (DhcpSb, Packet, Para); - break; + case Dhcp4Requesting: + Status = DhcpHandleRequest (DhcpSb, Packet, Para); + break; - case Dhcp4InitReboot: - case Dhcp4Init: - case Dhcp4Bound: - // - // Ignore the packet in INITREBOOT, INIT and BOUND states - // - FreePool (Packet); - Status = EFI_SUCCESS; - break; + case Dhcp4InitReboot: + case Dhcp4Init: + case Dhcp4Bound: + // + // Ignore the packet in INITREBOOT, INIT and BOUND states + // + FreePool (Packet); + Status = EFI_SUCCESS; + break; - case Dhcp4Renewing: - case Dhcp4Rebinding: - Status = DhcpHandleRenewRebind (DhcpSb, Packet, Para); - break; + case Dhcp4Renewing: + case Dhcp4Rebinding: + Status = DhcpHandleRenewRebind (DhcpSb, Packet, Para); + break; - case Dhcp4Rebooting: - Status = DhcpHandleReboot (DhcpSb, Packet, Para); - break; + case Dhcp4Rebooting: + Status = DhcpHandleReboot (DhcpSb, Packet, Para); + break; } if (Para != NULL) { @@ -1073,7 +1053,7 @@ DhcpInput ( NetbufFree (UdpPacket); UdpIoRecvDatagram (DhcpSb->UdpIo, DhcpInput, DhcpSb, 0); DhcpEndSession (DhcpSb, Status); - return ; + return; } RESTART: @@ -1102,17 +1082,15 @@ RESTART: VOID EFIAPI DhcpOnPacketSent ( - NET_BUF *Packet, - UDP_END_POINT *EndPoint, - EFI_STATUS IoStatus, - VOID *Context + NET_BUF *Packet, + UDP_END_POINT *EndPoint, + EFI_STATUS IoStatus, + VOID *Context ) { NetbufFree (Packet); } - - /** Build and transmit a DHCP message according to the current states. This function implement the Table 5. of RFC 2131. Always transits @@ -1134,28 +1112,28 @@ DhcpOnPacketSent ( **/ EFI_STATUS DhcpSendMessage ( - IN DHCP_SERVICE *DhcpSb, - IN EFI_DHCP4_PACKET *Seed, - IN DHCP_PARAMETER *Para, - IN UINT8 Type, - IN UINT8 *Msg + IN DHCP_SERVICE *DhcpSb, + IN EFI_DHCP4_PACKET *Seed, + IN DHCP_PARAMETER *Para, + IN UINT8 Type, + IN UINT8 *Msg ) { - EFI_DHCP4_CONFIG_DATA *Config; - EFI_DHCP4_PACKET *Packet; - EFI_DHCP4_PACKET *NewPacket; - EFI_DHCP4_HEADER *Head; - EFI_DHCP4_HEADER *SeedHead; - UDP_IO *UdpIo; - UDP_END_POINT EndPoint; - NET_BUF *Wrap; - NET_FRAGMENT Frag; - EFI_STATUS Status; - IP4_ADDR IpAddr; - UINT8 *Buf; - UINT16 MaxMsg; - UINT32 Len; - UINT32 Index; + EFI_DHCP4_CONFIG_DATA *Config; + EFI_DHCP4_PACKET *Packet; + EFI_DHCP4_PACKET *NewPacket; + EFI_DHCP4_HEADER *Head; + EFI_DHCP4_HEADER *SeedHead; + UDP_IO *UdpIo; + UDP_END_POINT EndPoint; + NET_BUF *Wrap; + NET_FRAGMENT Frag; + EFI_STATUS Status; + IP4_ADDR IpAddr; + UINT8 *Buf; + UINT16 MaxMsg; + UINT32 Len; + UINT32 Index; // // Allocate a big enough memory block to hold the DHCP packet @@ -1163,7 +1141,7 @@ DhcpSendMessage ( Len = sizeof (EFI_DHCP4_PACKET) + 128 + DhcpSb->UserOptionLen; if (Msg != NULL) { - Len += (UINT32)AsciiStrLen ((CHAR8 *) Msg); + Len += (UINT32)AsciiStrLen ((CHAR8 *)Msg); } Packet = AllocatePool (Len); @@ -1172,14 +1150,14 @@ DhcpSendMessage ( return EFI_OUT_OF_RESOURCES; } - Packet->Size = Len; - Packet->Length = sizeof (EFI_DHCP4_HEADER) + sizeof (UINT32); + Packet->Size = Len; + Packet->Length = sizeof (EFI_DHCP4_HEADER) + sizeof (UINT32); // // Fill in the DHCP header fields // - Config = &DhcpSb->ActiveConfig; - SeedHead = NULL; + Config = &DhcpSb->ActiveConfig; + SeedHead = NULL; if (Seed != NULL) { SeedHead = &Seed->Dhcp4.Header; @@ -1188,11 +1166,11 @@ DhcpSendMessage ( Head = &Packet->Dhcp4.Header; ZeroMem (Head, sizeof (EFI_DHCP4_HEADER)); - Head->OpCode = BOOTP_REQUEST; - Head->HwType = DhcpSb->HwType; - Head->HwAddrLen = DhcpSb->HwLen; - Head->Xid = HTONL (DhcpSb->Xid); - Head->Reserved = HTONS (0x8000); //Server, broadcast the message please. + Head->OpCode = BOOTP_REQUEST; + Head->HwType = DhcpSb->HwType; + Head->HwAddrLen = DhcpSb->HwLen; + Head->Xid = HTONL (DhcpSb->Xid); + Head->Reserved = HTONS (0x8000); // Server, broadcast the message please. EFI_IP4 (Head->ClientAddr) = HTONL (DhcpSb->ClientAddr); CopyMem (Head->ClientHwAddr, DhcpSb->Mac.Addr, DhcpSb->HwLen); @@ -1205,7 +1183,7 @@ DhcpSendMessage ( // Head->Seconds = DhcpSb->LastPacket->Dhcp4.Header.Seconds; } else { - SetElapsedTime(&Head->Seconds, DhcpSb->ActiveChild); + SetElapsedTime (&Head->Seconds, DhcpSb->ActiveChild); } // @@ -1223,12 +1201,12 @@ DhcpSendMessage ( // if ((Type == DHCP_MSG_DECLINE) || (Type == DHCP_MSG_RELEASE) || ((Type == DHCP_MSG_REQUEST) && (DhcpSb->DhcpState == Dhcp4Requesting)) - ) { - + ) + { ASSERT ((Para != NULL) && (Para->ServerId != 0)); - IpAddr = HTONL (Para->ServerId); - Buf = DhcpAppendOption (Buf, DHCP4_TAG_SERVER_ID, 4, (UINT8 *) &IpAddr); + IpAddr = HTONL (Para->ServerId); + Buf = DhcpAppendOption (Buf, DHCP4_TAG_SERVER_ID, 4, (UINT8 *)&IpAddr); } // @@ -1242,19 +1220,17 @@ DhcpSendMessage ( if (Type == DHCP_MSG_REQUEST) { if (DhcpSb->DhcpState == Dhcp4Rebooting) { IpAddr = EFI_IP4 (Config->ClientAddress); - } else if (DhcpSb->DhcpState == Dhcp4Requesting) { ASSERT (SeedHead != NULL); IpAddr = EFI_IP4 (SeedHead->YourAddr); } - } else if (Type == DHCP_MSG_DECLINE) { ASSERT (SeedHead != NULL); IpAddr = EFI_IP4 (SeedHead->YourAddr); } if (IpAddr != 0) { - Buf = DhcpAppendOption (Buf, DHCP4_TAG_REQUEST_IP, 4, (UINT8 *) &IpAddr); + Buf = DhcpAppendOption (Buf, DHCP4_TAG_REQUEST_IP, 4, (UINT8 *)&IpAddr); } // @@ -1263,16 +1239,16 @@ DhcpSendMessage ( // override the BOOTFILE and SERVER fields in the message head. // if ((Type != DHCP_MSG_DECLINE) && (Type != DHCP_MSG_RELEASE)) { - MaxMsg = HTONS (0xFF00); - Buf = DhcpAppendOption (Buf, DHCP4_TAG_MAXMSG, 2, (UINT8 *) &MaxMsg); + MaxMsg = HTONS (0xFF00); + Buf = DhcpAppendOption (Buf, DHCP4_TAG_MAXMSG, 2, (UINT8 *)&MaxMsg); } // // Append the user's message if it isn't NULL // if (Msg != NULL) { - Len = MIN ((UINT32) AsciiStrLen ((CHAR8 *) Msg), 255); - Buf = DhcpAppendOption (Buf, DHCP4_TAG_MESSAGE, (UINT16) Len, Msg); + Len = MIN ((UINT32)AsciiStrLen ((CHAR8 *)Msg), 255); + Buf = DhcpAppendOption (Buf, DHCP4_TAG_MESSAGE, (UINT16)Len, Msg); } // @@ -1285,7 +1261,8 @@ DhcpSendMessage ( // if it is a DHCP decline or DHCP release . // if (((Type == DHCP_MSG_DECLINE) || (Type == DHCP_MSG_RELEASE)) && - (Config->OptionList[Index]->OpCode != DHCP4_TAG_CLIENT_ID)) { + (Config->OptionList[Index]->OpCode != DHCP4_TAG_CLIENT_ID)) + { continue; } @@ -1298,8 +1275,8 @@ DhcpSendMessage ( } } - *(Buf++) = DHCP4_TAG_EOP; - Packet->Length += (UINT32) (Buf - Packet->Dhcp4.Option); + *(Buf++) = DHCP4_TAG_EOP; + Packet->Length += (UINT32)(Buf - Packet->Dhcp4.Option); // // OK, the message is built, call the user to override it. @@ -1309,10 +1286,8 @@ DhcpSendMessage ( if (Type == DHCP_MSG_DISCOVER) { Status = DhcpCallUser (DhcpSb, Dhcp4SendDiscover, Packet, &NewPacket); - } else if (Type == DHCP_MSG_REQUEST) { Status = DhcpCallUser (DhcpSb, Dhcp4SendRequest, Packet, &NewPacket); - } else if (Type == DHCP_MSG_DECLINE) { Status = DhcpCallUser (DhcpSb, Dhcp4SendDecline, Packet, &NewPacket); } @@ -1339,7 +1314,7 @@ DhcpSendMessage ( // // Wrap it into a netbuf then send it. // - Frag.Bulk = (UINT8 *) &Packet->Dhcp4.Header; + Frag.Bulk = (UINT8 *)&Packet->Dhcp4.Header; Frag.Len = Packet->Length; Wrap = NetbufFromExt (&Frag, 1, 0, 0, DhcpDummyExtFree, NULL); @@ -1393,7 +1368,6 @@ DhcpSendMessage ( return EFI_SUCCESS; } - /** Retransmit a saved packet. Only DISCOVER and REQUEST messages will be retransmitted. @@ -1406,14 +1380,14 @@ DhcpSendMessage ( **/ EFI_STATUS DhcpRetransmit ( - IN DHCP_SERVICE *DhcpSb + IN DHCP_SERVICE *DhcpSb ) { - UDP_IO *UdpIo; - UDP_END_POINT EndPoint; - NET_BUF *Wrap; - NET_FRAGMENT Frag; - EFI_STATUS Status; + UDP_IO *UdpIo; + UDP_END_POINT EndPoint; + NET_BUF *Wrap; + NET_FRAGMENT Frag; + EFI_STATUS Status; ASSERT (DhcpSb->LastPacket != NULL); @@ -1421,13 +1395,13 @@ DhcpRetransmit ( // For REQUEST message in Dhcp4Requesting state, do not change the secs fields. // if (DhcpSb->DhcpState != Dhcp4Requesting) { - SetElapsedTime(&DhcpSb->LastPacket->Dhcp4.Header.Seconds, DhcpSb->ActiveChild); + SetElapsedTime (&DhcpSb->LastPacket->Dhcp4.Header.Seconds, DhcpSb->ActiveChild); } // // Wrap it into a netbuf then send it. // - Frag.Bulk = (UINT8 *) &DhcpSb->LastPacket->Dhcp4.Header; + Frag.Bulk = (UINT8 *)&DhcpSb->LastPacket->Dhcp4.Header; Frag.Len = DhcpSb->LastPacket->Length; Wrap = NetbufFromExt (&Frag, 1, 0, 0, DhcpDummyExtFree, NULL); @@ -1469,7 +1443,6 @@ DhcpRetransmit ( return EFI_SUCCESS; } - /** Each DHCP service has three timer. Two of them are count down timer. One for the packet retransmission. The other is to collect the offers. @@ -1484,23 +1457,23 @@ DhcpRetransmit ( VOID EFIAPI DhcpOnTimerTick ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - DHCP_SERVICE *DhcpSb; - DHCP_PROTOCOL *Instance; - EFI_STATUS Status; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + DHCP_SERVICE *DhcpSb; + DHCP_PROTOCOL *Instance; + EFI_STATUS Status; - DhcpSb = (DHCP_SERVICE *) Context; + DhcpSb = (DHCP_SERVICE *)Context; Instance = DhcpSb->ActiveChild; // // 0xffff is the maximum supported value for elapsed time according to RFC. // - if (Instance != NULL && Instance->ElaspedTime < 0xffff) { + if ((Instance != NULL) && (Instance->ElaspedTime < 0xffff)) { Instance->ElaspedTime++; } @@ -1508,15 +1481,13 @@ DhcpOnTimerTick ( // Check the retransmit timer // if ((DhcpSb->PacketToLive > 0) && (--DhcpSb->PacketToLive == 0)) { - // // Select offer at each timeout if any offer received. // - if (DhcpSb->DhcpState == Dhcp4Selecting && DhcpSb->LastOffer != NULL) { - + if ((DhcpSb->DhcpState == Dhcp4Selecting) && (DhcpSb->LastOffer != NULL)) { Status = DhcpChooseOffer (DhcpSb); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { if (DhcpSb->LastOffer != NULL) { FreePool (DhcpSb->LastOffer); DhcpSb->LastOffer = NULL; @@ -1532,9 +1503,7 @@ DhcpOnTimerTick ( // DhcpRetransmit (DhcpSb); DhcpSetTransmitTimer (DhcpSb); - } else if (DHCP_CONNECTED (DhcpSb->DhcpState)) { - // // Retransmission failed, if the DHCP request is initiated by // user, adjust the current state according to the lease life. @@ -1545,16 +1514,12 @@ DhcpOnTimerTick ( if (DhcpSb->LeaseLife < DhcpSb->T1) { Status = DhcpSetState (DhcpSb, Dhcp4Bound, FALSE); - } else if (DhcpSb->LeaseLife < DhcpSb->T2) { Status = DhcpSetState (DhcpSb, Dhcp4Renewing, FALSE); - } else if (DhcpSb->LeaseLife < DhcpSb->Lease) { Status = DhcpSetState (DhcpSb, Dhcp4Rebinding, FALSE); - } else { goto END_SESSION; - } DhcpSb->IoStatus = EFI_TIMEOUT; @@ -1577,7 +1542,7 @@ DhcpOnTimerTick ( // requesting extra renew/rebind. Adjust the state after that. // if (DhcpSb->ExtraRefresh != 0) { - return ; + return; } if (DhcpSb->LeaseLife == DhcpSb->Lease) { @@ -1585,7 +1550,6 @@ DhcpOnTimerTick ( // Lease expires, end the session // goto END_SESSION; - } else if (DhcpSb->LeaseLife == DhcpSb->T2) { // // T2 expires, transit to rebinding then send a REQUEST to any server @@ -1595,7 +1559,7 @@ DhcpOnTimerTick ( } if (Instance != NULL) { - Instance->ElaspedTime= 0; + Instance->ElaspedTime = 0; } Status = DhcpSendMessage ( @@ -1609,7 +1573,6 @@ DhcpOnTimerTick ( if (EFI_ERROR (Status)) { goto END_SESSION; } - } else if (DhcpSb->LeaseLife == DhcpSb->T1) { // // T1 expires, transit to renewing, then send a REQUEST to the server @@ -1619,7 +1582,7 @@ DhcpOnTimerTick ( } if (Instance != NULL) { - Instance->ElaspedTime= 0; + Instance->ElaspedTime = 0; } Status = DhcpSendMessage ( @@ -1643,15 +1606,15 @@ ON_EXIT: NET_LIST_FOR_EACH_SAFE (Entry, Next, &DhcpSb->Children) { Instance = NET_LIST_USER_STRUCT (Entry, DHCP_PROTOCOL, Link); Instance->Timeout--; - if (Instance->Timeout == 0 && Instance->Token != NULL) { + if ((Instance->Timeout == 0) && (Instance->Token != NULL)) { PxeDhcpDone (Instance); } } - return ; + return; END_SESSION: DhcpEndSession (DhcpSb, EFI_TIMEOUT); - return ; + return; } diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Io.h b/NetworkPkg/Dhcp4Dxe/Dhcp4Io.h index 0dd6b46b87..6f7f8117fe 100644 --- a/NetworkPkg/Dhcp4Dxe/Dhcp4Io.h +++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Io.h @@ -18,37 +18,35 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - - -#define DHCP_WAIT_OFFER 3 // Time to wait the offers +#define DHCP_WAIT_OFFER 3 // Time to wait the offers #define DHCP_DEFAULT_LEASE 7 * 24 * 60 * 60 // Seven days as default. -#define DHCP_SERVER_PORT 67 -#define DHCP_CLIENT_PORT 68 +#define DHCP_SERVER_PORT 67 +#define DHCP_CLIENT_PORT 68 // // BOOTP header "op" field // -#define BOOTP_REQUEST 1 -#define BOOTP_REPLY 2 +#define BOOTP_REQUEST 1 +#define BOOTP_REPLY 2 // // DHCP message types // -#define DHCP_MSG_DISCOVER 1 -#define DHCP_MSG_OFFER 2 -#define DHCP_MSG_REQUEST 3 -#define DHCP_MSG_DECLINE 4 -#define DHCP_MSG_ACK 5 -#define DHCP_MSG_NAK 6 -#define DHCP_MSG_RELEASE 7 -#define DHCP_MSG_INFORM 8 +#define DHCP_MSG_DISCOVER 1 +#define DHCP_MSG_OFFER 2 +#define DHCP_MSG_REQUEST 3 +#define DHCP_MSG_DECLINE 4 +#define DHCP_MSG_ACK 5 +#define DHCP_MSG_NAK 6 +#define DHCP_MSG_RELEASE 7 +#define DHCP_MSG_INFORM 8 // // DHCP notify user type // -#define DHCP_NOTIFY_COMPLETION 1 -#define DHCP_NOTIFY_RENEWREBIND 2 -#define DHCP_NOTIFY_ALL 3 +#define DHCP_NOTIFY_COMPLETION 1 +#define DHCP_NOTIFY_RENEWREBIND 2 +#define DHCP_NOTIFY_ALL 3 #define DHCP_IS_BOOTP(Parameter) (((Parameter) == NULL) || ((Parameter)->DhcpType == 0)) @@ -72,9 +70,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS DhcpSetState ( - IN OUT DHCP_SERVICE *DhcpSb, - IN INTN State, - IN BOOLEAN CallUser + IN OUT DHCP_SERVICE *DhcpSb, + IN INTN State, + IN BOOLEAN CallUser ); /** @@ -98,11 +96,11 @@ DhcpSetState ( **/ EFI_STATUS DhcpSendMessage ( - IN DHCP_SERVICE *DhcpSb, - IN EFI_DHCP4_PACKET *Seed, - IN DHCP_PARAMETER *Para, - IN UINT8 Type, - IN UINT8 *Msg + IN DHCP_SERVICE *DhcpSb, + IN EFI_DHCP4_PACKET *Seed, + IN DHCP_PARAMETER *Para, + IN UINT8 Type, + IN UINT8 *Msg ); /** @@ -119,8 +117,8 @@ DhcpSendMessage ( VOID EFIAPI DhcpOnTimerTick ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -136,10 +134,10 @@ DhcpOnTimerTick ( VOID EFIAPI DhcpInput ( - NET_BUF *UdpPacket, - UDP_END_POINT *EndPoint, - EFI_STATUS IoStatus, - VOID *Context + NET_BUF *UdpPacket, + UDP_END_POINT *EndPoint, + EFI_STATUS IoStatus, + VOID *Context ); /** @@ -154,7 +152,7 @@ DhcpInput ( **/ EFI_STATUS DhcpInitRequest ( - IN DHCP_SERVICE *DhcpSb + IN DHCP_SERVICE *DhcpSb ); /** @@ -165,7 +163,7 @@ DhcpInitRequest ( **/ VOID DhcpCleanLease ( - IN DHCP_SERVICE *DhcpSb + IN DHCP_SERVICE *DhcpSb ); /** @@ -180,10 +178,10 @@ DhcpCleanLease ( VOID EFIAPI DhcpOnPacketSent ( - NET_BUF *Packet, - UDP_END_POINT *EndPoint, - EFI_STATUS IoStatus, - VOID *Context + NET_BUF *Packet, + UDP_END_POINT *EndPoint, + EFI_STATUS IoStatus, + VOID *Context ); #endif diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Option.c b/NetworkPkg/Dhcp4Dxe/Dhcp4Option.c index 37a63022c5..5959eff17c 100644 --- a/NetworkPkg/Dhcp4Dxe/Dhcp4Option.c +++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Option.c @@ -13,95 +13,94 @@ SPDX-License-Identifier: BSD-2-Clause-Patent /// to validate a dhcp message. Refere the comments of the /// DHCP_OPTION_FORMAT structure. /// -DHCP_OPTION_FORMAT DhcpOptionFormats[] = { - {DHCP4_TAG_NETMASK, DHCP_OPTION_IP, 1, 1 , TRUE}, - {DHCP4_TAG_TIME_OFFSET, DHCP_OPTION_INT32, 1, 1 , FALSE}, - {DHCP4_TAG_ROUTER, DHCP_OPTION_IP, 1, -1 , TRUE}, - {DHCP4_TAG_TIME_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_NAME_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_DNS_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_LOG_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_COOKIE_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_LPR_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_IMPRESS_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_RL_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_HOSTNAME, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_BOOTFILE_LEN, DHCP_OPTION_INT16, 1, 1 , FALSE}, - {DHCP4_TAG_DUMP, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_DOMAINNAME, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_SWAP_SERVER, DHCP_OPTION_IP, 1, 1 , FALSE}, - {DHCP4_TAG_ROOTPATH, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_EXTEND_PATH, DHCP_OPTION_INT8, 1, -1 , FALSE}, - - {DHCP4_TAG_IPFORWARD, DHCP_OPTION_SWITCH, 1, 1 , FALSE}, - {DHCP4_TAG_NONLOCAL_SRR, DHCP_OPTION_SWITCH, 1, 1 , FALSE}, - {DHCP4_TAG_POLICY_SRR, DHCP_OPTION_IPPAIR, 1, -1 , FALSE}, - {DHCP4_TAG_EMTU, DHCP_OPTION_INT16, 1, 1 , FALSE}, - {DHCP4_TAG_TTL, DHCP_OPTION_INT8, 1, 1 , FALSE}, - {DHCP4_TAG_PATHMTU_AGE, DHCP_OPTION_INT32, 1, 1 , FALSE}, - {DHCP4_TAG_PATHMTU_PLATEAU,DHCP_OPTION_INT16, 1, -1 , FALSE}, - - {DHCP4_TAG_IFMTU, DHCP_OPTION_INT16, 1, 1 , FALSE}, - {DHCP4_TAG_SUBNET_LOCAL, DHCP_OPTION_SWITCH, 1, 1 , FALSE}, - {DHCP4_TAG_BROADCAST, DHCP_OPTION_IP, 1, 1 , FALSE}, - {DHCP4_TAG_DISCOVER_MASK, DHCP_OPTION_SWITCH, 1, 1 , FALSE}, - {DHCP4_TAG_SUPPLY_MASK, DHCP_OPTION_SWITCH, 1, 1 , FALSE}, - {DHCP4_TAG_DISCOVER_ROUTE, DHCP_OPTION_SWITCH, 1, 1 , FALSE}, - {DHCP4_TAG_ROUTER_SOLICIT, DHCP_OPTION_IP, 1, 1 , FALSE}, - {DHCP4_TAG_STATIC_ROUTE, DHCP_OPTION_IPPAIR, 1, -1 , FALSE}, - - {DHCP4_TAG_TRAILER, DHCP_OPTION_SWITCH, 1, 1 , FALSE}, - {DHCP4_TAG_ARPAGE, DHCP_OPTION_INT32, 1, 1 , FALSE}, - {DHCP4_TAG_ETHER_ENCAP, DHCP_OPTION_SWITCH, 1, 1 , FALSE}, - - {DHCP4_TAG_TCP_TTL, DHCP_OPTION_INT8, 1, 1 , FALSE}, - {DHCP4_TAG_KEEP_INTERVAL, DHCP_OPTION_INT32, 1, 1 , FALSE}, - {DHCP4_TAG_KEEP_GARBAGE, DHCP_OPTION_SWITCH, 1, 1 , FALSE}, - - {DHCP4_TAG_NIS_DOMAIN, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_NIS_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_NTP_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_VENDOR, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_NBNS, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_NBDD, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_NBTYPE, DHCP_OPTION_INT8, 1, 1 , FALSE}, - {DHCP4_TAG_NBSCOPE, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_XFONT, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_XDM, DHCP_OPTION_IP, 1, -1 , FALSE}, - - {DHCP4_TAG_REQUEST_IP, DHCP_OPTION_IP, 1, 1 , FALSE}, - {DHCP4_TAG_LEASE, DHCP_OPTION_INT32, 1, 1 , TRUE}, - {DHCP4_TAG_OVERLOAD, DHCP_OPTION_INT8, 1, 1 , TRUE}, - {DHCP4_TAG_MSG_TYPE, DHCP_OPTION_INT8, 1, 1 , TRUE}, - {DHCP4_TAG_SERVER_ID, DHCP_OPTION_IP, 1, 1 , TRUE}, - {DHCP4_TAG_PARA_LIST, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_MESSAGE, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_MAXMSG, DHCP_OPTION_INT16, 1, 1 , FALSE}, - {DHCP4_TAG_T1, DHCP_OPTION_INT32, 1, 1 , TRUE}, - {DHCP4_TAG_T2, DHCP_OPTION_INT32, 1, 1 , TRUE}, - {DHCP4_TAG_VENDOR_CLASS_ID,DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_CLIENT_ID, DHCP_OPTION_INT8, 2, -1 , FALSE}, - - {DHCP4_TAG_NISPLUS, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_NISPLUS_SERVER, DHCP_OPTION_IP, 1, -1 , FALSE}, - - {DHCP4_TAG_TFTP, DHCP_OPTION_INT8, 1, -1 , FALSE}, - {DHCP4_TAG_BOOTFILE, DHCP_OPTION_INT8, 1, -1 , FALSE}, - - {DHCP4_TAG_MOBILEIP, DHCP_OPTION_IP, 0, -1 , FALSE}, - {DHCP4_TAG_SMTP, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_POP3, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_NNTP, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_WWW, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_FINGER, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_IRC, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_STTALK, DHCP_OPTION_IP, 1, -1 , FALSE}, - {DHCP4_TAG_STDA, DHCP_OPTION_IP, 1, -1 , FALSE}, - - {DHCP4_TAG_CLASSLESS_ROUTE,DHCP_OPTION_INT8, 5, -1 , FALSE}, +DHCP_OPTION_FORMAT DhcpOptionFormats[] = { + { DHCP4_TAG_NETMASK, DHCP_OPTION_IP, 1, 1, TRUE }, + { DHCP4_TAG_TIME_OFFSET, DHCP_OPTION_INT32, 1, 1, FALSE }, + { DHCP4_TAG_ROUTER, DHCP_OPTION_IP, 1, -1, TRUE }, + { DHCP4_TAG_TIME_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_NAME_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_DNS_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_LOG_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_COOKIE_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_LPR_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_IMPRESS_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_RL_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_HOSTNAME, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_BOOTFILE_LEN, DHCP_OPTION_INT16, 1, 1, FALSE }, + { DHCP4_TAG_DUMP, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_DOMAINNAME, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_SWAP_SERVER, DHCP_OPTION_IP, 1, 1, FALSE }, + { DHCP4_TAG_ROOTPATH, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_EXTEND_PATH, DHCP_OPTION_INT8, 1, -1, FALSE }, + + { DHCP4_TAG_IPFORWARD, DHCP_OPTION_SWITCH, 1, 1, FALSE }, + { DHCP4_TAG_NONLOCAL_SRR, DHCP_OPTION_SWITCH, 1, 1, FALSE }, + { DHCP4_TAG_POLICY_SRR, DHCP_OPTION_IPPAIR, 1, -1, FALSE }, + { DHCP4_TAG_EMTU, DHCP_OPTION_INT16, 1, 1, FALSE }, + { DHCP4_TAG_TTL, DHCP_OPTION_INT8, 1, 1, FALSE }, + { DHCP4_TAG_PATHMTU_AGE, DHCP_OPTION_INT32, 1, 1, FALSE }, + { DHCP4_TAG_PATHMTU_PLATEAU, DHCP_OPTION_INT16, 1, -1, FALSE }, + + { DHCP4_TAG_IFMTU, DHCP_OPTION_INT16, 1, 1, FALSE }, + { DHCP4_TAG_SUBNET_LOCAL, DHCP_OPTION_SWITCH, 1, 1, FALSE }, + { DHCP4_TAG_BROADCAST, DHCP_OPTION_IP, 1, 1, FALSE }, + { DHCP4_TAG_DISCOVER_MASK, DHCP_OPTION_SWITCH, 1, 1, FALSE }, + { DHCP4_TAG_SUPPLY_MASK, DHCP_OPTION_SWITCH, 1, 1, FALSE }, + { DHCP4_TAG_DISCOVER_ROUTE, DHCP_OPTION_SWITCH, 1, 1, FALSE }, + { DHCP4_TAG_ROUTER_SOLICIT, DHCP_OPTION_IP, 1, 1, FALSE }, + { DHCP4_TAG_STATIC_ROUTE, DHCP_OPTION_IPPAIR, 1, -1, FALSE }, + + { DHCP4_TAG_TRAILER, DHCP_OPTION_SWITCH, 1, 1, FALSE }, + { DHCP4_TAG_ARPAGE, DHCP_OPTION_INT32, 1, 1, FALSE }, + { DHCP4_TAG_ETHER_ENCAP, DHCP_OPTION_SWITCH, 1, 1, FALSE }, + + { DHCP4_TAG_TCP_TTL, DHCP_OPTION_INT8, 1, 1, FALSE }, + { DHCP4_TAG_KEEP_INTERVAL, DHCP_OPTION_INT32, 1, 1, FALSE }, + { DHCP4_TAG_KEEP_GARBAGE, DHCP_OPTION_SWITCH, 1, 1, FALSE }, + + { DHCP4_TAG_NIS_DOMAIN, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_NIS_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_NTP_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_VENDOR, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_NBNS, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_NBDD, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_NBTYPE, DHCP_OPTION_INT8, 1, 1, FALSE }, + { DHCP4_TAG_NBSCOPE, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_XFONT, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_XDM, DHCP_OPTION_IP, 1, -1, FALSE }, + + { DHCP4_TAG_REQUEST_IP, DHCP_OPTION_IP, 1, 1, FALSE }, + { DHCP4_TAG_LEASE, DHCP_OPTION_INT32, 1, 1, TRUE }, + { DHCP4_TAG_OVERLOAD, DHCP_OPTION_INT8, 1, 1, TRUE }, + { DHCP4_TAG_MSG_TYPE, DHCP_OPTION_INT8, 1, 1, TRUE }, + { DHCP4_TAG_SERVER_ID, DHCP_OPTION_IP, 1, 1, TRUE }, + { DHCP4_TAG_PARA_LIST, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_MESSAGE, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_MAXMSG, DHCP_OPTION_INT16, 1, 1, FALSE }, + { DHCP4_TAG_T1, DHCP_OPTION_INT32, 1, 1, TRUE }, + { DHCP4_TAG_T2, DHCP_OPTION_INT32, 1, 1, TRUE }, + { DHCP4_TAG_VENDOR_CLASS_ID, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_CLIENT_ID, DHCP_OPTION_INT8, 2, -1, FALSE }, + + { DHCP4_TAG_NISPLUS, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_NISPLUS_SERVER, DHCP_OPTION_IP, 1, -1, FALSE }, + + { DHCP4_TAG_TFTP, DHCP_OPTION_INT8, 1, -1, FALSE }, + { DHCP4_TAG_BOOTFILE, DHCP_OPTION_INT8, 1, -1, FALSE }, + + { DHCP4_TAG_MOBILEIP, DHCP_OPTION_IP, 0, -1, FALSE }, + { DHCP4_TAG_SMTP, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_POP3, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_NNTP, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_WWW, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_FINGER, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_IRC, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_STTALK, DHCP_OPTION_IP, 1, -1, FALSE }, + { DHCP4_TAG_STDA, DHCP_OPTION_IP, 1, -1, FALSE }, + + { DHCP4_TAG_CLASSLESS_ROUTE, DHCP_OPTION_INT8, 5, -1, FALSE }, }; - /** Binary search the DhcpOptionFormats array to find the format information about a specific option. @@ -113,12 +112,12 @@ DHCP_OPTION_FORMAT DhcpOptionFormats[] = { **/ DHCP_OPTION_FORMAT * DhcpFindOptionFormat ( - IN UINT8 Tag + IN UINT8 Tag ) { - INTN Left; - INTN Right; - INTN Middle; + INTN Left; + INTN Right; + INTN Middle; Left = 0; Right = sizeof (DhcpOptionFormats) / sizeof (DHCP_OPTION_FORMAT) - 1; @@ -133,14 +132,13 @@ DhcpFindOptionFormat ( if (Tag < DhcpOptionFormats[Middle].Tag) { Right = Middle - 1; } else { - Left = Middle + 1; + Left = Middle + 1; } } return NULL; } - /** Validate whether a single DHCP option is valid according to its format. @@ -154,35 +152,35 @@ DhcpFindOptionFormat ( **/ BOOLEAN DhcpOptionIsValid ( - IN DHCP_OPTION_FORMAT *Format, - IN UINT8 *OptValue, - IN INTN Len + IN DHCP_OPTION_FORMAT *Format, + IN UINT8 *OptValue, + IN INTN Len ) { - INTN Unit; - INTN Occur; - INTN Index; + INTN Unit; + INTN Occur; + INTN Index; Unit = 0; switch (Format->Type) { - case DHCP_OPTION_SWITCH: - case DHCP_OPTION_INT8: - Unit = 1; - break; + case DHCP_OPTION_SWITCH: + case DHCP_OPTION_INT8: + Unit = 1; + break; - case DHCP_OPTION_INT16: - Unit = 2; - break; + case DHCP_OPTION_INT16: + Unit = 2; + break; - case DHCP_OPTION_INT32: - case DHCP_OPTION_IP: - Unit = 4; - break; + case DHCP_OPTION_INT32: + case DHCP_OPTION_IP: + Unit = 4; + break; - case DHCP_OPTION_IPPAIR: - Unit = 8; - break; + case DHCP_OPTION_IPPAIR: + Unit = 8; + break; } ASSERT (Unit != 0); @@ -201,7 +199,8 @@ DhcpOptionIsValid ( if (((Format->MinOccur != -1) && (Occur < Format->MinOccur)) || ((Format->MaxOccur != -1) && (Occur > Format->MaxOccur)) - ) { + ) + { return FALSE; } @@ -219,7 +218,6 @@ DhcpOptionIsValid ( return TRUE; } - /** Extract the client interested options, all the parameters are converted to host byte order. @@ -235,61 +233,62 @@ DhcpOptionIsValid ( **/ EFI_STATUS DhcpGetParameter ( - IN UINT8 Tag, - IN INTN Len, - IN UINT8 *Data, - OUT DHCP_PARAMETER *Para + IN UINT8 Tag, + IN INTN Len, + IN UINT8 *Data, + OUT DHCP_PARAMETER *Para ) { switch (Tag) { - case DHCP4_TAG_NETMASK: - Para->NetMask = NetGetUint32 (Data); - break; + case DHCP4_TAG_NETMASK: + Para->NetMask = NetGetUint32 (Data); + break; - case DHCP4_TAG_ROUTER: - // - // Return the first router to consumer which is the preferred one - // - Para->Router = NetGetUint32 (Data); - break; + case DHCP4_TAG_ROUTER: + // + // Return the first router to consumer which is the preferred one + // + Para->Router = NetGetUint32 (Data); + break; - case DHCP4_TAG_LEASE: - Para->Lease = NetGetUint32 (Data); - break; + case DHCP4_TAG_LEASE: + Para->Lease = NetGetUint32 (Data); + break; - case DHCP4_TAG_OVERLOAD: - Para->Overload = *Data; + case DHCP4_TAG_OVERLOAD: + Para->Overload = *Data; - if ((Para->Overload < 1) || (Para->Overload > 3)) { - return EFI_INVALID_PARAMETER; - } - break; + if ((Para->Overload < 1) || (Para->Overload > 3)) { + return EFI_INVALID_PARAMETER; + } - case DHCP4_TAG_MSG_TYPE: - Para->DhcpType = *Data; + break; - if ((Para->DhcpType < 1) || (Para->DhcpType > 9)) { - return EFI_INVALID_PARAMETER; - } - break; + case DHCP4_TAG_MSG_TYPE: + Para->DhcpType = *Data; + + if ((Para->DhcpType < 1) || (Para->DhcpType > 9)) { + return EFI_INVALID_PARAMETER; + } - case DHCP4_TAG_SERVER_ID: - Para->ServerId = NetGetUint32 (Data); - break; + break; - case DHCP4_TAG_T1: - Para->T1 = NetGetUint32 (Data); - break; + case DHCP4_TAG_SERVER_ID: + Para->ServerId = NetGetUint32 (Data); + break; - case DHCP4_TAG_T2: - Para->T2 = NetGetUint32 (Data); - break; + case DHCP4_TAG_T1: + Para->T1 = NetGetUint32 (Data); + break; + + case DHCP4_TAG_T2: + Para->T2 = NetGetUint32 (Data); + break; } return EFI_SUCCESS; } - /** Inspect all the options in a single buffer. DHCP options may be contained in several buffers, such as the BOOTP options filed, boot file or server @@ -308,16 +307,16 @@ DhcpGetParameter ( **/ EFI_STATUS DhcpIterateBufferOptions ( - IN UINT8 *Buffer, - IN INTN BufLen, - IN DHCP_CHECK_OPTION Check OPTIONAL, - IN VOID *Context, - OUT UINT8 *Overload OPTIONAL + IN UINT8 *Buffer, + IN INTN BufLen, + IN DHCP_CHECK_OPTION Check OPTIONAL, + IN VOID *Context, + OUT UINT8 *Overload OPTIONAL ) { - INTN Cur; - UINT8 Tag; - UINT8 Len; + INTN Cur; + UINT8 Tag; + UINT8 Len; Cur = 0; @@ -364,7 +363,6 @@ DhcpIterateBufferOptions ( return EFI_INVALID_PARAMETER; } - /** Iterate through a DHCP message to visit each option. First inspect all the options in the OPTION field. Then if overloaded, inspect @@ -382,23 +380,23 @@ DhcpIterateBufferOptions ( **/ EFI_STATUS DhcpIterateOptions ( - IN EFI_DHCP4_PACKET *Packet, - IN DHCP_CHECK_OPTION Check OPTIONAL, - IN VOID *Context + IN EFI_DHCP4_PACKET *Packet, + IN DHCP_CHECK_OPTION Check OPTIONAL, + IN VOID *Context ) { - EFI_STATUS Status; - UINT8 Overload; + EFI_STATUS Status; + UINT8 Overload; Overload = 0; - Status = DhcpIterateBufferOptions ( - Packet->Dhcp4.Option, - Packet->Length - sizeof (EFI_DHCP4_HEADER) - sizeof (UINT32), - Check, - Context, - &Overload - ); + Status = DhcpIterateBufferOptions ( + Packet->Dhcp4.Option, + Packet->Length - sizeof (EFI_DHCP4_HEADER) - sizeof (UINT32), + Check, + Context, + &Overload + ); if (EFI_ERROR (Status)) { return Status; @@ -406,7 +404,7 @@ DhcpIterateOptions ( if ((Overload == DHCP_OVERLOAD_FILENAME) || (Overload == DHCP_OVERLOAD_BOTH)) { Status = DhcpIterateBufferOptions ( - (UINT8 *) Packet->Dhcp4.Header.BootFileName, + (UINT8 *)Packet->Dhcp4.Header.BootFileName, 128, Check, Context, @@ -420,7 +418,7 @@ DhcpIterateOptions ( if ((Overload == DHCP_OVERLOAD_SVRNAME) || (Overload == DHCP_OVERLOAD_BOTH)) { Status = DhcpIterateBufferOptions ( - (UINT8 *) Packet->Dhcp4.Header.ServerName, + (UINT8 *)Packet->Dhcp4.Header.ServerName, 64, Check, Context, @@ -435,7 +433,6 @@ DhcpIterateOptions ( return EFI_SUCCESS; } - /** Call back function to DhcpIterateOptions to compute each option's length. It just adds the data length of all the occurrences of this @@ -452,21 +449,20 @@ DhcpIterateOptions ( **/ EFI_STATUS DhcpGetOptionLen ( - IN UINT8 Tag, - IN UINT8 Len, - IN UINT8 *Data, - IN VOID *Context + IN UINT8 Tag, + IN UINT8 Len, + IN UINT8 *Data, + IN VOID *Context ) { - DHCP_OPTION_COUNT *OpCount; + DHCP_OPTION_COUNT *OpCount; - OpCount = (DHCP_OPTION_COUNT *) Context; - OpCount[Tag].Offset = (UINT16) (OpCount[Tag].Offset + Len); + OpCount = (DHCP_OPTION_COUNT *)Context; + OpCount[Tag].Offset = (UINT16)(OpCount[Tag].Offset + Len); return EFI_SUCCESS; } - /** Call back function to DhcpIterateOptions to consolidate each option's data. There are maybe several occurrence of the same option. @@ -482,24 +478,24 @@ DhcpGetOptionLen ( **/ EFI_STATUS DhcpFillOption ( - IN UINT8 Tag, - IN UINT8 Len, - IN UINT8 *Data, - IN VOID *Context + IN UINT8 Tag, + IN UINT8 Len, + IN UINT8 *Data, + IN VOID *Context ) { - DHCP_OPTION_CONTEXT *OptContext; - DHCP_OPTION_COUNT *OptCount; - DHCP_OPTION *Options; - UINT8 *Buf; - UINT8 Index; + DHCP_OPTION_CONTEXT *OptContext; + DHCP_OPTION_COUNT *OptCount; + DHCP_OPTION *Options; + UINT8 *Buf; + UINT8 Index; - OptContext = (DHCP_OPTION_CONTEXT *) Context; + OptContext = (DHCP_OPTION_CONTEXT *)Context; - OptCount = OptContext->OpCount; - Index = OptCount[Tag].Index; - Options = OptContext->Options; - Buf = OptContext->Buf; + OptCount = OptContext->OpCount; + Index = OptCount[Tag].Index; + Options = OptContext->Options; + Buf = OptContext->Buf; if (Options[Index].Data == NULL) { Options[Index].Tag = Tag; @@ -508,12 +504,11 @@ DhcpFillOption ( CopyMem (Buf + OptCount[Tag].Offset, Data, Len); - OptCount[Tag].Offset = (UINT16) (OptCount[Tag].Offset + Len); - Options[Index].Len = (UINT16) (Options[Index].Len + Len); + OptCount[Tag].Offset = (UINT16)(OptCount[Tag].Offset + Len); + Options[Index].Len = (UINT16)(Options[Index].Len + Len); return EFI_SUCCESS; } - /** Parse the options of a DHCP packet. It supports RFC 3396: Encoding Long Options in DHCP. That is, it will combine all the option value @@ -544,18 +539,18 @@ DhcpFillOption ( **/ EFI_STATUS DhcpParseOption ( - IN EFI_DHCP4_PACKET *Packet, - OUT INTN *Count, - OUT DHCP_OPTION **OptionPoint + IN EFI_DHCP4_PACKET *Packet, + OUT INTN *Count, + OUT DHCP_OPTION **OptionPoint ) { - DHCP_OPTION_CONTEXT Context; - DHCP_OPTION *Options; - DHCP_OPTION_COUNT *OptCount; - EFI_STATUS Status; - UINT16 TotalLen; - INTN OptNum; - INTN Index; + DHCP_OPTION_CONTEXT Context; + DHCP_OPTION *Options; + DHCP_OPTION_COUNT *OptCount; + EFI_STATUS Status; + UINT16 TotalLen; + INTN OptNum; + INTN Index; ASSERT ((Count != NULL) && (OptionPoint != NULL)); @@ -580,22 +575,22 @@ DhcpParseOption ( // OptCount[Index].Offset specifies the offset into the continuous // option value buffer to put the data. // - TotalLen = 0; - OptNum = 0; + TotalLen = 0; + OptNum = 0; for (Index = 0; Index < DHCP_MAX_OPTIONS; Index++) { if (OptCount[Index].Offset != 0) { - OptCount[Index].Index = (UINT8) OptNum; + OptCount[Index].Index = (UINT8)OptNum; - TotalLen = (UINT16) (TotalLen + OptCount[Index].Offset); - OptCount[Index].Offset = (UINT16) (TotalLen - OptCount[Index].Offset); + TotalLen = (UINT16)(TotalLen + OptCount[Index].Offset); + OptCount[Index].Offset = (UINT16)(TotalLen - OptCount[Index].Offset); OptNum++; } } - *Count = OptNum; - *OptionPoint = NULL; + *Count = OptNum; + *OptionPoint = NULL; if (OptNum == 0) { goto ON_EXIT; @@ -605,7 +600,7 @@ DhcpParseOption ( // Allocate a buffer to hold the DHCP options, and after that, a // continuous buffer to put all the options' data. // - Options = AllocateZeroPool ((UINTN) (OptNum * sizeof (DHCP_OPTION)) + TotalLen); + Options = AllocateZeroPool ((UINTN)(OptNum * sizeof (DHCP_OPTION)) + TotalLen); if (Options == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -614,9 +609,9 @@ DhcpParseOption ( Context.OpCount = OptCount; Context.Options = Options; - Context.Buf = (UINT8 *) (Options + OptNum); + Context.Buf = (UINT8 *)(Options + OptNum); - Status = DhcpIterateOptions (Packet, DhcpFillOption, &Context); + Status = DhcpIterateOptions (Packet, DhcpFillOption, &Context); if (EFI_ERROR (Status)) { FreePool (Options); @@ -630,7 +625,6 @@ ON_EXIT: return Status; } - /** Validate the packet's options. If necessary, allocate and fill in the interested parameters. @@ -645,18 +639,18 @@ ON_EXIT: **/ EFI_STATUS DhcpValidateOptions ( - IN EFI_DHCP4_PACKET *Packet, - OUT DHCP_PARAMETER **Para OPTIONAL + IN EFI_DHCP4_PACKET *Packet, + OUT DHCP_PARAMETER **Para OPTIONAL ) { - DHCP_PARAMETER Parameter; - DHCP_OPTION_FORMAT *Format; - DHCP_OPTION *AllOption; - DHCP_OPTION *Option; - EFI_STATUS Status; - BOOLEAN Updated; - INTN Count; - INTN Index; + DHCP_PARAMETER Parameter; + DHCP_OPTION_FORMAT *Format; + DHCP_OPTION *AllOption; + DHCP_OPTION *Option; + EFI_STATUS Status; + BOOLEAN Updated; + INTN Count; + INTN Index; if (Para != NULL) { *Para = NULL; @@ -668,6 +662,7 @@ DhcpValidateOptions ( if (EFI_ERROR (Status) || (Count == 0)) { return Status; } + ASSERT (AllOption != NULL); Updated = FALSE; @@ -716,8 +711,6 @@ ON_EXIT: return Status; } - - /** Append an option to the memory, if the option is longer than 255 bytes, splits it into several options. @@ -732,31 +725,30 @@ ON_EXIT: **/ UINT8 * DhcpAppendOption ( - OUT UINT8 *Buf, - IN UINT8 Tag, - IN UINT16 DataLen, - IN UINT8 *Data + OUT UINT8 *Buf, + IN UINT8 Tag, + IN UINT16 DataLen, + IN UINT8 *Data ) { - INTN Index; - INTN Len; + INTN Index; + INTN Len; ASSERT (DataLen != 0); for (Index = 0; Index < (DataLen + 254) / 255; Index++) { - Len = MIN (255, DataLen - Index * 255); + Len = MIN (255, DataLen - Index * 255); *(Buf++) = Tag; - *(Buf++) = (UINT8) Len; - CopyMem (Buf, Data + Index * 255, (UINTN) Len); + *(Buf++) = (UINT8)Len; + CopyMem (Buf, Data + Index * 255, (UINTN)Len); - Buf += Len; + Buf += Len; } return Buf; } - /** Build a new DHCP packet from a seed packet. Options may be deleted or appended. The caller should free the NewPacket when finished using it. @@ -776,22 +768,22 @@ DhcpAppendOption ( **/ EFI_STATUS DhcpBuild ( - IN EFI_DHCP4_PACKET *SeedPacket, - IN UINT32 DeleteCount, - IN UINT8 *DeleteList OPTIONAL, - IN UINT32 AppendCount, - IN EFI_DHCP4_PACKET_OPTION *AppendList[] OPTIONAL, - OUT EFI_DHCP4_PACKET **NewPacket + IN EFI_DHCP4_PACKET *SeedPacket, + IN UINT32 DeleteCount, + IN UINT8 *DeleteList OPTIONAL, + IN UINT32 AppendCount, + IN EFI_DHCP4_PACKET_OPTION *AppendList[] OPTIONAL, + OUT EFI_DHCP4_PACKET **NewPacket ) { - DHCP_OPTION *Mark; - DHCP_OPTION *SeedOptions; - EFI_DHCP4_PACKET *Packet; - EFI_STATUS Status; - INTN Count; - UINT32 Index; - UINT32 Len; - UINT8 *Buf; + DHCP_OPTION *Mark; + DHCP_OPTION *SeedOptions; + EFI_DHCP4_PACKET *Packet; + EFI_STATUS Status; + INTN Count; + UINT32 Index; + UINT32 Len; + UINT8 *Buf; // // Use an array of DHCP_OPTION to mark the existence @@ -804,7 +796,7 @@ DhcpBuild ( } for (Index = 0; Index < DHCP_MAX_OPTIONS; Index++) { - Mark[Index].Tag = (UINT8) Index; + Mark[Index].Tag = (UINT8)Index; Mark[Index].Len = 0; } @@ -820,7 +812,7 @@ DhcpBuild ( } if (SeedOptions != NULL) { - for (Index = 0; Index < (UINT32) Count; Index++) { + for (Index = 0; Index < (UINT32)Count; Index++) { Mark[SeedOptions[Index].Tag] = SeedOptions[Index]; } } @@ -854,18 +846,18 @@ DhcpBuild ( } } - Status = EFI_OUT_OF_RESOURCES; - Packet = (EFI_DHCP4_PACKET *) AllocatePool (Len); + Status = EFI_OUT_OF_RESOURCES; + Packet = (EFI_DHCP4_PACKET *)AllocatePool (Len); if (Packet == NULL) { goto ON_ERROR; } - Packet->Size = Len; - Packet->Length = 0; + Packet->Size = Len; + Packet->Length = 0; CopyMem (&Packet->Dhcp4.Header, &SeedPacket->Dhcp4.Header, sizeof (Packet->Dhcp4.Header)); - Packet->Dhcp4.Magik = DHCP_OPTION_MAGIC; - Buf = Packet->Dhcp4.Option; + Packet->Dhcp4.Magik = DHCP_OPTION_MAGIC; + Buf = Packet->Dhcp4.Option; for (Index = 0; Index < DHCP_MAX_OPTIONS; Index++) { if (Mark[Index].Len != 0) { @@ -873,12 +865,12 @@ DhcpBuild ( } } - *(Buf++) = DHCP4_TAG_EOP; - Packet->Length = sizeof (EFI_DHCP4_HEADER) + sizeof (UINT32) - + (UINT32) (Buf - Packet->Dhcp4.Option); + *(Buf++) = DHCP4_TAG_EOP; + Packet->Length = sizeof (EFI_DHCP4_HEADER) + sizeof (UINT32) + + (UINT32)(Buf - Packet->Dhcp4.Option); - *NewPacket = Packet; - Status = EFI_SUCCESS; + *NewPacket = Packet; + Status = EFI_SUCCESS; ON_ERROR: if (SeedOptions != NULL) { diff --git a/NetworkPkg/Dhcp4Dxe/Dhcp4Option.h b/NetworkPkg/Dhcp4Dxe/Dhcp4Option.h index a58bb1b0ba..3234d14967 100644 --- a/NetworkPkg/Dhcp4Dxe/Dhcp4Option.h +++ b/NetworkPkg/Dhcp4Dxe/Dhcp4Option.h @@ -13,49 +13,48 @@ SPDX-License-Identifier: BSD-2-Clause-Patent /// DHCP option tags (types) /// -#define DHCP_OPTION_MAGIC 0x63538263 // Network byte order -#define DHCP_MAX_OPTIONS 256 - +#define DHCP_OPTION_MAGIC 0x63538263 // Network byte order +#define DHCP_MAX_OPTIONS 256 // // DHCP option types, this is used to validate the DHCP options. // -#define DHCP_OPTION_SWITCH 1 -#define DHCP_OPTION_INT8 2 -#define DHCP_OPTION_INT16 3 -#define DHCP_OPTION_INT32 4 -#define DHCP_OPTION_IP 5 -#define DHCP_OPTION_IPPAIR 6 +#define DHCP_OPTION_SWITCH 1 +#define DHCP_OPTION_INT8 2 +#define DHCP_OPTION_INT16 3 +#define DHCP_OPTION_INT32 4 +#define DHCP_OPTION_IP 5 +#define DHCP_OPTION_IPPAIR 6 // // Value of DHCP overload option // -#define DHCP_OVERLOAD_FILENAME 1 -#define DHCP_OVERLOAD_SVRNAME 2 -#define DHCP_OVERLOAD_BOTH 3 +#define DHCP_OVERLOAD_FILENAME 1 +#define DHCP_OVERLOAD_SVRNAME 2 +#define DHCP_OVERLOAD_BOTH 3 /// /// The DHCP option structure. This structure extends the EFI_DHCP_OPTION /// structure to support options longer than 255 bytes, such as classless route. /// typedef struct { - UINT8 Tag; - UINT16 Len; - UINT8 *Data; + UINT8 Tag; + UINT16 Len; + UINT8 *Data; } DHCP_OPTION; /// /// Structures used to parse the DHCP options with RFC3396 support. /// typedef struct { - UINT8 Index; - UINT16 Offset; + UINT8 Index; + UINT16 Offset; } DHCP_OPTION_COUNT; typedef struct { - DHCP_OPTION_COUNT *OpCount; - DHCP_OPTION *Options; - UINT8 *Buf; + DHCP_OPTION_COUNT *OpCount; + DHCP_OPTION *Options; + UINT8 *Buf; } DHCP_OPTION_CONTEXT; /// @@ -64,18 +63,18 @@ typedef struct { /// classless route, who can parse the DHCP offer to get them. /// typedef struct { - IP4_ADDR NetMask; // DHCP4_TAG_NETMASK - IP4_ADDR Router; // DHCP4_TAG_ROUTER, only the first router is used + IP4_ADDR NetMask; // DHCP4_TAG_NETMASK + IP4_ADDR Router; // DHCP4_TAG_ROUTER, only the first router is used // // DHCP specific options // - UINT8 DhcpType; // DHCP4_TAG_MSG_TYPE - UINT8 Overload; // DHCP4_TAG_OVERLOAD - IP4_ADDR ServerId; // DHCP4_TAG_SERVER_ID - UINT32 Lease; // DHCP4_TAG_LEASE - UINT32 T1; // DHCP4_TAG_T1 - UINT32 T2; // DHCP4_TAG_T2 + UINT8 DhcpType; // DHCP4_TAG_MSG_TYPE + UINT8 Overload; // DHCP4_TAG_OVERLOAD + IP4_ADDR ServerId; // DHCP4_TAG_SERVER_ID + UINT32 Lease; // DHCP4_TAG_LEASE + UINT32 T1; // DHCP4_TAG_T1 + UINT32 T2; // DHCP4_TAG_T2 } DHCP_PARAMETER; /// @@ -87,20 +86,20 @@ typedef struct { /// inspect the option to parse DHCP_PARAMETER. /// typedef struct { - UINT8 Tag; - INTN Type; - INTN MinOccur; - INTN MaxOccur; - BOOLEAN Alert; + UINT8 Tag; + INTN Type; + INTN MinOccur; + INTN MaxOccur; + BOOLEAN Alert; } DHCP_OPTION_FORMAT; typedef EFI_STATUS (*DHCP_CHECK_OPTION) ( - IN UINT8 Tag, - IN UINT8 Len, - IN UINT8 *Data, - IN VOID *Context + IN UINT8 Tag, + IN UINT8 Len, + IN UINT8 *Data, + IN VOID *Context ); /** @@ -120,9 +119,9 @@ EFI_STATUS **/ EFI_STATUS DhcpIterateOptions ( - IN EFI_DHCP4_PACKET *Packet, - IN DHCP_CHECK_OPTION Check OPTIONAL, - IN VOID *Context + IN EFI_DHCP4_PACKET *Packet, + IN DHCP_CHECK_OPTION Check OPTIONAL, + IN VOID *Context ); /** @@ -139,8 +138,8 @@ DhcpIterateOptions ( **/ EFI_STATUS DhcpValidateOptions ( - IN EFI_DHCP4_PACKET *Packet, - OUT DHCP_PARAMETER **Para OPTIONAL + IN EFI_DHCP4_PACKET *Packet, + OUT DHCP_PARAMETER **Para OPTIONAL ); /** @@ -173,9 +172,9 @@ DhcpValidateOptions ( **/ EFI_STATUS DhcpParseOption ( - IN EFI_DHCP4_PACKET *Packet, - OUT INTN *Count, - OUT DHCP_OPTION **OptionPoint + IN EFI_DHCP4_PACKET *Packet, + OUT INTN *Count, + OUT DHCP_OPTION **OptionPoint ); /** @@ -192,10 +191,10 @@ DhcpParseOption ( **/ UINT8 * DhcpAppendOption ( - OUT UINT8 *Buf, - IN UINT8 Tag, - IN UINT16 DataLen, - IN UINT8 *Data + OUT UINT8 *Buf, + IN UINT8 Tag, + IN UINT16 DataLen, + IN UINT8 *Data ); /** @@ -217,12 +216,12 @@ DhcpAppendOption ( **/ EFI_STATUS DhcpBuild ( - IN EFI_DHCP4_PACKET *SeedPacket, - IN UINT32 DeleteCount, - IN UINT8 *DeleteList OPTIONAL, - IN UINT32 AppendCount, - IN EFI_DHCP4_PACKET_OPTION *AppendList[] OPTIONAL, - OUT EFI_DHCP4_PACKET **NewPacket + IN EFI_DHCP4_PACKET *SeedPacket, + IN UINT32 DeleteCount, + IN UINT8 *DeleteList OPTIONAL, + IN UINT32 AppendCount, + IN EFI_DHCP4_PACKET_OPTION *AppendList[] OPTIONAL, + OUT EFI_DHCP4_PACKET **NewPacket ); #endif diff --git a/NetworkPkg/Dhcp6Dxe/ComponentName.c b/NetworkPkg/Dhcp6Dxe/ComponentName.c index c5927fbd12..6877e7c00a 100644 --- a/NetworkPkg/Dhcp6Dxe/ComponentName.c +++ b/NetworkPkg/Dhcp6Dxe/ComponentName.c @@ -9,7 +9,6 @@ #include "Dhcp6Impl.h" - /** Retrieves a Unicode string that is the user-readable name of the driver. @@ -57,7 +56,6 @@ Dhcp6ComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user-readable name of the controller that is being managed by a driver. @@ -129,18 +127,17 @@ Dhcp6ComponentNameGetDriverName ( EFI_STATUS EFIAPI Dhcp6ComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); - // // EFI Component Name Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gDhcp6ComponentName = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gDhcp6ComponentName = { Dhcp6ComponentNameGetDriverName, Dhcp6ComponentNameGetControllerName, "eng" @@ -149,13 +146,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gDhcp6ComponentName // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gDhcp6ComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) Dhcp6ComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) Dhcp6ComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gDhcp6ComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)Dhcp6ComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)Dhcp6ComponentNameGetControllerName, "en" }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mDhcp6DriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mDhcp6DriverNameTable[] = { { "eng;en", L"DHCP6 Protocol Driver" @@ -166,9 +163,9 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mDhcp6DriverNameTab } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gDhcp6ControllerNameTable = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gDhcp6ControllerNameTable = NULL; -CHAR16 *mDhcp6ControllerName[] = { +CHAR16 *mDhcp6ControllerName[] = { L"DHCPv6 (State=0, Init)", L"DHCPv6 (State=1, Selecting)", L"DHCPv6 (State=2, Requesting)", @@ -248,12 +245,12 @@ Dhcp6ComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - IN EFI_DHCP6_PROTOCOL *Dhcp6 + IN EFI_DHCP6_PROTOCOL *Dhcp6 ) { - EFI_STATUS Status; - EFI_DHCP6_MODE_DATA Dhcp6ModeData; - CHAR16 *HandleName; + EFI_STATUS Status; + EFI_DHCP6_MODE_DATA Dhcp6ModeData; + CHAR16 *HandleName; if (Dhcp6 == NULL) { return EFI_INVALID_PARAMETER; @@ -278,12 +275,14 @@ UpdateName ( if (Dhcp6ModeData.Ia->State > Dhcp6Rebinding) { return EFI_DEVICE_ERROR; } + HandleName = mDhcp6ControllerName[Dhcp6ModeData.Ia->State]; } if (Dhcp6ModeData.Ia != NULL) { FreePool (Dhcp6ModeData.Ia); } + if (Dhcp6ModeData.ClientId != NULL) { FreePool (Dhcp6ModeData.ClientId); } @@ -379,15 +378,15 @@ UpdateName ( EFI_STATUS EFIAPI Dhcp6ComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_DHCP6_PROTOCOL *Dhcp6; + EFI_STATUS Status; + EFI_DHCP6_PROTOCOL *Dhcp6; // // Only provide names for child handles. @@ -439,4 +438,3 @@ Dhcp6ComponentNameGetControllerName ( (BOOLEAN)(This == &gDhcp6ComponentName) ); } - diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c b/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c index f0b236835f..b591a4605b 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.c @@ -10,8 +10,7 @@ #include "Dhcp6Impl.h" - -EFI_DRIVER_BINDING_PROTOCOL gDhcp6DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gDhcp6DriverBinding = { Dhcp6DriverBindingSupported, Dhcp6DriverBindingStart, Dhcp6DriverBindingStop, @@ -20,7 +19,7 @@ EFI_DRIVER_BINDING_PROTOCOL gDhcp6DriverBinding = { NULL }; -EFI_SERVICE_BINDING_PROTOCOL gDhcp6ServiceBindingTemplate = { +EFI_SERVICE_BINDING_PROTOCOL gDhcp6ServiceBindingTemplate = { Dhcp6ServiceBindingCreateChild, Dhcp6ServiceBindingDestroyChild }; @@ -39,12 +38,12 @@ EFI_SERVICE_BINDING_PROTOCOL gDhcp6ServiceBindingTemplate = { EFI_STATUS EFIAPI Dhcp6ConfigureUdpIo ( - IN UDP_IO *UdpIo, - IN VOID *Context + IN UDP_IO *UdpIo, + IN VOID *Context ) { - EFI_UDP6_PROTOCOL *Udp6; - EFI_UDP6_CONFIG_DATA *Config; + EFI_UDP6_PROTOCOL *Udp6; + EFI_UDP6_CONFIG_DATA *Config; Udp6 = UdpIo->Protocol.Udp6; Config = &(UdpIo->Config.Udp6); @@ -67,13 +66,12 @@ Dhcp6ConfigureUdpIo ( // will be overridden later. Note that we MUST not limit RemotePort. // More details, refer to RFC 3315 section 5.2. // - Config->StationPort = DHCP6_PORT_CLIENT; - Config->RemotePort = 0; + Config->StationPort = DHCP6_PORT_CLIENT; + Config->RemotePort = 0; - return Udp6->Configure (Udp6, Config);; + return Udp6->Configure (Udp6, Config); } - /** Destroy the Dhcp6 service. The Dhcp6 service may be partly initialized, or partly destroyed. If a resource is destroyed, it is marked as such in @@ -84,7 +82,7 @@ Dhcp6ConfigureUdpIo ( **/ VOID Dhcp6DestroyService ( - IN OUT DHCP6_SERVICE *Service + IN OUT DHCP6_SERVICE *Service ) { // @@ -103,7 +101,6 @@ Dhcp6DestroyService ( FreePool (Service); } - /** Create a new Dhcp6 service for the Nic controller. @@ -119,13 +116,13 @@ Dhcp6DestroyService ( **/ EFI_STATUS Dhcp6CreateService ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE ImageHandle, - OUT DHCP6_SERVICE **Service + IN EFI_HANDLE Controller, + IN EFI_HANDLE ImageHandle, + OUT DHCP6_SERVICE **Service ) { - DHCP6_SERVICE *Dhcp6Srv; - EFI_STATUS Status; + DHCP6_SERVICE *Dhcp6Srv; + EFI_STATUS Status; *Service = NULL; Dhcp6Srv = AllocateZeroPool (sizeof (DHCP6_SERVICE)); @@ -147,10 +144,10 @@ Dhcp6CreateService ( // // Initialize the fields of the new Dhcp6 service. // - Dhcp6Srv->Signature = DHCP6_SERVICE_SIGNATURE; - Dhcp6Srv->Controller = Controller; - Dhcp6Srv->Image = ImageHandle; - Dhcp6Srv->Xid = (0xffffff & NET_RANDOM (NetRandomInitSeed ())); + Dhcp6Srv->Signature = DHCP6_SERVICE_SIGNATURE; + Dhcp6Srv->Controller = Controller; + Dhcp6Srv->Image = ImageHandle; + Dhcp6Srv->Xid = (0xffffff & NET_RANDOM (NetRandomInitSeed ())); CopyMem ( &Dhcp6Srv->ServiceBinding, @@ -164,7 +161,7 @@ Dhcp6CreateService ( Status = gBS->HandleProtocol ( Controller, &gEfiIp6ConfigProtocolGuid, - (VOID **) &Dhcp6Srv->Ip6Cfg + (VOID **)&Dhcp6Srv->Ip6Cfg ); if (EFI_ERROR (Status)) { FreePool (Dhcp6Srv); @@ -175,7 +172,7 @@ Dhcp6CreateService ( // Generate client Duid: If SMBIOS system UUID is located, generate DUID in DUID-UUID format. // Otherwise, in DUID-LLT format. // - Dhcp6Srv->ClientId = Dhcp6GenerateClientId (Dhcp6Srv->Snp->Mode); + Dhcp6Srv->ClientId = Dhcp6GenerateClientId (Dhcp6Srv->Snp->Mode); if (Dhcp6Srv->ClientId == NULL) { FreePool (Dhcp6Srv); @@ -206,7 +203,6 @@ Dhcp6CreateService ( return EFI_SUCCESS; } - /** Destroy the Dhcp6 instance and recycle the resources. @@ -215,7 +211,7 @@ Dhcp6CreateService ( **/ VOID Dhcp6DestroyInstance ( - IN OUT DHCP6_INSTANCE *Instance + IN OUT DHCP6_INSTANCE *Instance ) { // @@ -239,6 +235,7 @@ Dhcp6DestroyInstance ( if (Instance->IaCb.Ia->ReplyPacket != NULL) { FreePool (Instance->IaCb.Ia->ReplyPacket); } + FreePool (Instance->IaCb.Ia); } @@ -253,7 +250,6 @@ Dhcp6DestroyInstance ( FreePool (Instance); } - /** Create the Dhcp6 instance and initialize it. @@ -266,12 +262,12 @@ Dhcp6DestroyInstance ( **/ EFI_STATUS Dhcp6CreateInstance ( - IN DHCP6_SERVICE *Service, - OUT DHCP6_INSTANCE **Instance + IN DHCP6_SERVICE *Service, + OUT DHCP6_INSTANCE **Instance ) { - EFI_STATUS Status; - DHCP6_INSTANCE *Dhcp6Ins; + EFI_STATUS Status; + DHCP6_INSTANCE *Dhcp6Ins; *Instance = NULL; Dhcp6Ins = AllocateZeroPool (sizeof (DHCP6_INSTANCE)); @@ -283,11 +279,11 @@ Dhcp6CreateInstance ( // // Initialize the fields of the new Dhcp6 instance. // - Dhcp6Ins->Signature = DHCP6_INSTANCE_SIGNATURE; - Dhcp6Ins->UdpSts = EFI_ALREADY_STARTED; - Dhcp6Ins->Service = Service; - Dhcp6Ins->InDestroy = FALSE; - Dhcp6Ins->MediaPresent = TRUE; + Dhcp6Ins->Signature = DHCP6_INSTANCE_SIGNATURE; + Dhcp6Ins->UdpSts = EFI_ALREADY_STARTED; + Dhcp6Ins->Service = Service; + Dhcp6Ins->InDestroy = FALSE; + Dhcp6Ins->MediaPresent = TRUE; CopyMem ( &Dhcp6Ins->Dhcp6, @@ -333,24 +329,23 @@ Dhcp6CreateInstance ( EFI_STATUS EFIAPI Dhcp6DestroyChildEntry ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { - DHCP6_INSTANCE *Instance; - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + DHCP6_INSTANCE *Instance; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - Instance = NET_LIST_USER_STRUCT_S (Entry, DHCP6_INSTANCE, Link, DHCP6_INSTANCE_SIGNATURE); - ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *) Context; + Instance = NET_LIST_USER_STRUCT_S (Entry, DHCP6_INSTANCE, Link, DHCP6_INSTANCE_SIGNATURE); + ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *)Context; return ServiceBinding->DestroyChild (ServiceBinding, Instance->Handle); } - /** Entry point of the DHCP6 driver to install various protocols. @@ -364,8 +359,8 @@ Dhcp6DestroyChildEntry ( EFI_STATUS EFIAPI Dhcp6DriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { return EfiLibInstallDriverBindingComponentName2 ( @@ -378,7 +373,6 @@ Dhcp6DriverEntryPoint ( ); } - /** Test to see if this driver supports ControllerHandle. This service is called by the EFI boot service ConnectController(). In @@ -414,7 +408,6 @@ Dhcp6DriverBindingSupported ( ); } - /** Start this driver on ControllerHandle. This service is called by the EFI boot service ConnectController(). In order to make @@ -441,8 +434,8 @@ Dhcp6DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; - DHCP6_SERVICE *Service; + EFI_STATUS Status; + DHCP6_SERVICE *Service; // // Check the Dhcp6 service whether already started. @@ -490,7 +483,6 @@ Dhcp6DriverBindingStart ( return EFI_SUCCESS; } - /** Stop this driver on ControllerHandle. This service is called by the EFI boot service DisconnectController(). In order to @@ -519,12 +511,12 @@ Dhcp6DriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ) { - EFI_STATUS Status; - EFI_HANDLE NicHandle; - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - DHCP6_SERVICE *Service; - LIST_ENTRY *List; - UINTN ListLength; + EFI_STATUS Status; + EFI_HANDLE NicHandle; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + DHCP6_SERVICE *Service; + LIST_ENTRY *List; + UINTN ListLength; // // Find and check the Nic handle by the controller handle. @@ -538,7 +530,7 @@ Dhcp6DriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiDhcp6ServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -553,23 +545,23 @@ Dhcp6DriverBindingStop ( // // Destroy all the children instances before destroy the service. // - List = &Service->Child; + List = &Service->Child; Status = NetDestroyLinkList ( List, Dhcp6DestroyChildEntry, ServiceBinding, &ListLength ); - if (EFI_ERROR (Status) || ListLength != 0) { + if (EFI_ERROR (Status) || (ListLength != 0)) { Status = EFI_DEVICE_ERROR; } } - if (NumberOfChildren == 0 && !IsListEmpty (&Service->Child)) { + if ((NumberOfChildren == 0) && !IsListEmpty (&Service->Child)) { Status = EFI_DEVICE_ERROR; } - if (NumberOfChildren == 0 && IsListEmpty (&Service->Child)) { + if ((NumberOfChildren == 0) && IsListEmpty (&Service->Child)) { // // Destroy the service itself if no child instance left. // @@ -590,7 +582,6 @@ ON_EXIT: return Status; } - /** Creates a child handle and installs a protocol. @@ -615,19 +606,19 @@ Dhcp6ServiceBindingCreateChild ( IN OUT EFI_HANDLE *ChildHandle ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - DHCP6_SERVICE *Service; - DHCP6_INSTANCE *Instance; - VOID *Udp6; + EFI_STATUS Status; + EFI_TPL OldTpl; + DHCP6_SERVICE *Service; + DHCP6_INSTANCE *Instance; + VOID *Udp6; - if (This == NULL || ChildHandle == NULL) { + if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; } Service = DHCP6_SERVICE_FROM_THIS (This); - Status = Dhcp6CreateInstance (Service, &Instance); + Status = Dhcp6CreateInstance (Service, &Instance); if (EFI_ERROR (Status)) { return Status; @@ -670,14 +661,13 @@ Dhcp6ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( Service->UdpIo->UdpHandle, &gEfiUdp6ProtocolGuid, - (VOID **) &Udp6, + (VOID **)&Udp6, gDhcp6DriverBinding.DriverBindingHandle, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER ); if (EFI_ERROR (Status)) { - gBS->UninstallMultipleProtocolInterfaces ( Instance->Handle, &gEfiDhcp6ProtocolGuid, @@ -704,7 +694,6 @@ ON_ERROR: return Status; } - /** Destroys a child handle with a protocol installed on it. @@ -730,13 +719,13 @@ Dhcp6ServiceBindingDestroyChild ( IN EFI_HANDLE ChildHandle ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - EFI_DHCP6_PROTOCOL *Dhcp6; - DHCP6_SERVICE *Service; - DHCP6_INSTANCE *Instance; + EFI_STATUS Status; + EFI_TPL OldTpl; + EFI_DHCP6_PROTOCOL *Dhcp6; + DHCP6_SERVICE *Service; + DHCP6_INSTANCE *Instance; - if (This == NULL || ChildHandle == NULL) { + if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; } @@ -746,7 +735,7 @@ Dhcp6ServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiDhcp6ProtocolGuid, - (VOID **) &Dhcp6, + (VOID **)&Dhcp6, gDhcp6DriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.h b/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.h index 1b8744b9b8..c2079bc4d0 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.h +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Driver.h @@ -13,9 +13,9 @@ #include -extern EFI_COMPONENT_NAME_PROTOCOL gDhcp6ComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gDhcp6ComponentName2; -extern EFI_UNICODE_STRING_TABLE *gDhcp6ControllerNameTable; +extern EFI_COMPONENT_NAME_PROTOCOL gDhcp6ComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gDhcp6ComponentName2; +extern EFI_UNICODE_STRING_TABLE *gDhcp6ControllerNameTable; /** Test to see if this driver supports ControllerHandle. This service diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.c b/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.c index bb4c1d12a9..61b41d0f76 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.c +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.c @@ -14,9 +14,11 @@ // // ALL_DHCP_Relay_Agents_and_Servers address: FF02::1:2 // -EFI_IPv6_ADDRESS mAllDhcpRelayAndServersAddress = {{0xFF, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2}}; +EFI_IPv6_ADDRESS mAllDhcpRelayAndServersAddress = { + { 0xFF, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2 } +}; -EFI_DHCP6_PROTOCOL gDhcp6ProtocolTemplate = { +EFI_DHCP6_PROTOCOL gDhcp6ProtocolTemplate = { EfiDhcp6GetModeData, EfiDhcp6Configure, EfiDhcp6Start, @@ -61,14 +63,14 @@ EFI_DHCP6_PROTOCOL gDhcp6ProtocolTemplate = { EFI_STATUS EFIAPI EfiDhcp6Start ( - IN EFI_DHCP6_PROTOCOL *This + IN EFI_DHCP6_PROTOCOL *This ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - DHCP6_INSTANCE *Instance; - DHCP6_SERVICE *Service; - EFI_STATUS MediaStatus; + EFI_STATUS Status; + EFI_TPL OldTpl; + DHCP6_INSTANCE *Instance; + DHCP6_SERVICE *Service; + EFI_STATUS MediaStatus; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -93,7 +95,7 @@ EfiDhcp6Start ( return EFI_ALREADY_STARTED; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); // // Check Media Status. @@ -119,7 +121,7 @@ EfiDhcp6Start ( // // Register receive callback for the stateful exchange process. // - Status = UdpIoRecvDatagram( + Status = UdpIoRecvDatagram ( Service->UdpIo, Dhcp6ReceivePacket, Service, @@ -136,10 +138,10 @@ EfiDhcp6Start ( // Poll udp out of the net tpl if synchronous call. // if (Instance->Config->IaInfoEvent == NULL) { - while (Instance->UdpSts == EFI_ALREADY_STARTED) { Service->UdpIo->Protocol.Udp6->Poll (Service->UdpIo->Protocol.Udp6); } + return Instance->UdpSts; } @@ -151,7 +153,6 @@ ON_ERROR: return Status; } - /** Stops the DHCPv6 standard S.A.R.R. process. @@ -170,14 +171,14 @@ ON_ERROR: EFI_STATUS EFIAPI EfiDhcp6Stop ( - IN EFI_DHCP6_PROTOCOL *This + IN EFI_DHCP6_PROTOCOL *This ) { - EFI_TPL OldTpl; - EFI_STATUS Status; - EFI_UDP6_PROTOCOL *Udp6; - DHCP6_INSTANCE *Instance; - DHCP6_SERVICE *Service; + EFI_TPL OldTpl; + EFI_STATUS Status; + EFI_UDP6_PROTOCOL *Udp6; + DHCP6_INSTANCE *Instance; + DHCP6_SERVICE *Service; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -200,10 +201,11 @@ EfiDhcp6Stop ( // // No valid REPLY message received yet, cleanup this instance directly. // - if (Instance->IaCb.Ia->State == Dhcp6Init || - Instance->IaCb.Ia->State == Dhcp6Selecting || - Instance->IaCb.Ia->State == Dhcp6Requesting - ) { + if ((Instance->IaCb.Ia->State == Dhcp6Init) || + (Instance->IaCb.Ia->State == Dhcp6Selecting) || + (Instance->IaCb.Ia->State == Dhcp6Requesting) + ) + { goto ON_EXIT; } @@ -213,7 +215,7 @@ EfiDhcp6Stop ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Instance->UdpSts = EFI_ALREADY_STARTED; - Status = Dhcp6SendReleaseMsg (Instance, Instance->IaCb.Ia); + Status = Dhcp6SendReleaseMsg (Instance, Instance->IaCb.Ia); gBS->RestoreTPL (OldTpl); if (EFI_ERROR (Status)) { goto ON_EXIT; @@ -227,6 +229,7 @@ EfiDhcp6Stop ( while (Instance->UdpSts == EFI_ALREADY_STARTED) { Udp6->Poll (Udp6); } + Status = Instance->UdpSts; } @@ -241,7 +244,6 @@ ON_EXIT: return Status; } - /** Returns the current operating mode data for the Dhcp6 instance. @@ -260,26 +262,26 @@ ON_EXIT: EFI_STATUS EFIAPI EfiDhcp6GetModeData ( - IN EFI_DHCP6_PROTOCOL *This, - OUT EFI_DHCP6_MODE_DATA *Dhcp6ModeData OPTIONAL, - OUT EFI_DHCP6_CONFIG_DATA *Dhcp6ConfigData OPTIONAL + IN EFI_DHCP6_PROTOCOL *This, + OUT EFI_DHCP6_MODE_DATA *Dhcp6ModeData OPTIONAL, + OUT EFI_DHCP6_CONFIG_DATA *Dhcp6ConfigData OPTIONAL ) { - EFI_TPL OldTpl; - EFI_DHCP6_IA *Ia; - DHCP6_INSTANCE *Instance; - DHCP6_SERVICE *Service; - UINT32 IaSize; - UINT32 IdSize; - - if (This == NULL || (Dhcp6ModeData == NULL && Dhcp6ConfigData == NULL)) { + EFI_TPL OldTpl; + EFI_DHCP6_IA *Ia; + DHCP6_INSTANCE *Instance; + DHCP6_SERVICE *Service; + UINT32 IaSize; + UINT32 IdSize; + + if ((This == NULL) || ((Dhcp6ModeData == NULL) && (Dhcp6ConfigData == NULL))) { return EFI_INVALID_PARAMETER; } Instance = DHCP6_INSTANCE_FROM_THIS (This); Service = Instance->Service; - if (Instance->Config == NULL && Dhcp6ConfigData != NULL) { + if ((Instance->Config == NULL) && (Dhcp6ConfigData != NULL)) { return EFI_ACCESS_DENIED; } @@ -291,7 +293,7 @@ EfiDhcp6GetModeData ( // User needs a copy of instance config data. // if (Dhcp6ConfigData != NULL) { - ZeroMem (Dhcp6ConfigData, sizeof(EFI_DHCP6_CONFIG_DATA)); + ZeroMem (Dhcp6ConfigData, sizeof (EFI_DHCP6_CONFIG_DATA)); // // Duplicate config data, including all reference buffers. // @@ -347,6 +349,7 @@ EfiDhcp6GetModeData ( if (Dhcp6ModeData->Ia->ReplyPacket == NULL) { goto ON_ERROR; } + CopyMem ( Dhcp6ModeData->Ia->ReplyPacket, Ia->ReplyPacket, @@ -365,15 +368,16 @@ ON_ERROR: if (Dhcp6ConfigData != NULL) { Dhcp6CleanupConfigData (Dhcp6ConfigData); } + if (Dhcp6ModeData != NULL) { Dhcp6CleanupModeData (Dhcp6ModeData); } + gBS->RestoreTPL (OldTpl); return EFI_OUT_OF_RESOURCES; } - /** Initializes, changes, or resets the operational settings for the Dhcp6 instance. @@ -405,17 +409,17 @@ ON_ERROR: EFI_STATUS EFIAPI EfiDhcp6Configure ( - IN EFI_DHCP6_PROTOCOL *This, - IN EFI_DHCP6_CONFIG_DATA *Dhcp6CfgData OPTIONAL + IN EFI_DHCP6_PROTOCOL *This, + IN EFI_DHCP6_CONFIG_DATA *Dhcp6CfgData OPTIONAL ) { - EFI_TPL OldTpl; - EFI_STATUS Status; - LIST_ENTRY *Entry; - DHCP6_INSTANCE *Other; - DHCP6_INSTANCE *Instance; - DHCP6_SERVICE *Service; - UINTN Index; + EFI_TPL OldTpl; + EFI_STATUS Status; + LIST_ENTRY *Entry; + DHCP6_INSTANCE *Other; + DHCP6_INSTANCE *Instance; + DHCP6_SERVICE *Service; + UINTN Index; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -428,36 +432,40 @@ EfiDhcp6Configure ( // Check the parameter of configure data. // if (Dhcp6CfgData != NULL) { - if (Dhcp6CfgData->OptionCount > 0 && Dhcp6CfgData->OptionList == NULL) { + if ((Dhcp6CfgData->OptionCount > 0) && (Dhcp6CfgData->OptionList == NULL)) { return EFI_INVALID_PARAMETER; } + if (Dhcp6CfgData->OptionList != NULL) { for (Index = 0; Index < Dhcp6CfgData->OptionCount; Index++) { - if (Dhcp6CfgData->OptionList[Index]->OpCode == Dhcp6OptClientId || - Dhcp6CfgData->OptionList[Index]->OpCode == Dhcp6OptRapidCommit || - Dhcp6CfgData->OptionList[Index]->OpCode == Dhcp6OptReconfigureAccept || - Dhcp6CfgData->OptionList[Index]->OpCode == Dhcp6OptIana || - Dhcp6CfgData->OptionList[Index]->OpCode == Dhcp6OptIata - ) { + if ((Dhcp6CfgData->OptionList[Index]->OpCode == Dhcp6OptClientId) || + (Dhcp6CfgData->OptionList[Index]->OpCode == Dhcp6OptRapidCommit) || + (Dhcp6CfgData->OptionList[Index]->OpCode == Dhcp6OptReconfigureAccept) || + (Dhcp6CfgData->OptionList[Index]->OpCode == Dhcp6OptIana) || + (Dhcp6CfgData->OptionList[Index]->OpCode == Dhcp6OptIata) + ) + { return EFI_INVALID_PARAMETER; } } } - if (Dhcp6CfgData->IaDescriptor.Type != EFI_DHCP6_IA_TYPE_NA && - Dhcp6CfgData->IaDescriptor.Type != EFI_DHCP6_IA_TYPE_TA - ) { + if ((Dhcp6CfgData->IaDescriptor.Type != EFI_DHCP6_IA_TYPE_NA) && + (Dhcp6CfgData->IaDescriptor.Type != EFI_DHCP6_IA_TYPE_TA) + ) + { return EFI_INVALID_PARAMETER; } - if (Dhcp6CfgData->IaInfoEvent == NULL && Dhcp6CfgData->SolicitRetransmission == NULL) { + if ((Dhcp6CfgData->IaInfoEvent == NULL) && (Dhcp6CfgData->SolicitRetransmission == NULL)) { return EFI_INVALID_PARAMETER; } - if (Dhcp6CfgData->SolicitRetransmission != NULL && - Dhcp6CfgData->SolicitRetransmission->Mrc == 0 && - Dhcp6CfgData->SolicitRetransmission->Mrd == 0 - ) { + if ((Dhcp6CfgData->SolicitRetransmission != NULL) && + (Dhcp6CfgData->SolicitRetransmission->Mrc == 0) && + (Dhcp6CfgData->SolicitRetransmission->Mrd == 0) + ) + { return EFI_INVALID_PARAMETER; } @@ -466,10 +474,11 @@ EfiDhcp6Configure ( // NET_LIST_FOR_EACH (Entry, &Service->Child) { Other = NET_LIST_USER_STRUCT (Entry, DHCP6_INSTANCE, Link); - if (Other->IaCb.Ia != NULL && - Other->IaCb.Ia->Descriptor.Type == Dhcp6CfgData->IaDescriptor.Type && - Other->IaCb.Ia->Descriptor.IaId == Dhcp6CfgData->IaDescriptor.IaId - ) { + if ((Other->IaCb.Ia != NULL) && + (Other->IaCb.Ia->Descriptor.Type == Dhcp6CfgData->IaDescriptor.Type) && + (Other->IaCb.Ia->Descriptor.IaId == Dhcp6CfgData->IaDescriptor.IaId) + ) + { return EFI_INVALID_PARAMETER; } } @@ -496,7 +505,7 @@ EfiDhcp6Configure ( } Status = Dhcp6CopyConfigData (Instance->Config, Dhcp6CfgData); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { FreePool (Instance->Config); gBS->RestoreTPL (OldTpl); return EFI_OUT_OF_RESOURCES; @@ -506,21 +515,20 @@ EfiDhcp6Configure ( // Initialize the Ia descriptor from the config data, and leave the other // fields of the Ia as default value 0. // - Instance->IaCb.Ia = AllocateZeroPool (sizeof(EFI_DHCP6_IA)); + Instance->IaCb.Ia = AllocateZeroPool (sizeof (EFI_DHCP6_IA)); if (Instance->IaCb.Ia == NULL) { Dhcp6CleanupConfigData (Instance->Config); FreePool (Instance->Config); gBS->RestoreTPL (OldTpl); return EFI_OUT_OF_RESOURCES; } + CopyMem ( &Instance->IaCb.Ia->Descriptor, &Dhcp6CfgData->IaDescriptor, - sizeof(EFI_DHCP6_IA_DESCRIPTOR) + sizeof (EFI_DHCP6_IA_DESCRIPTOR) ); - } else { - if (Instance->Config == NULL) { ASSERT (Instance->IaCb.Ia == NULL); gBS->RestoreTPL (OldTpl); @@ -548,7 +556,6 @@ EfiDhcp6Configure ( return EFI_SUCCESS; } - /** Request configuration information without the assignment of any Ia addresses of the client. @@ -604,29 +611,29 @@ EfiDhcp6InfoRequest ( IN VOID *CallbackContext OPTIONAL ) { - EFI_STATUS Status; - DHCP6_INSTANCE *Instance; - DHCP6_SERVICE *Service; - UINTN Index; - EFI_EVENT Timer; - EFI_STATUS TimerStatus; - UINTN GetMappingTimeOut; - - if (This == NULL || OptionRequest == NULL || Retransmission == NULL || ReplyCallback == NULL) { + EFI_STATUS Status; + DHCP6_INSTANCE *Instance; + DHCP6_SERVICE *Service; + UINTN Index; + EFI_EVENT Timer; + EFI_STATUS TimerStatus; + UINTN GetMappingTimeOut; + + if ((This == NULL) || (OptionRequest == NULL) || (Retransmission == NULL) || (ReplyCallback == NULL)) { return EFI_INVALID_PARAMETER; } - if (Retransmission != NULL && Retransmission->Mrc == 0 && Retransmission->Mrd == 0) { + if ((Retransmission != NULL) && (Retransmission->Mrc == 0) && (Retransmission->Mrd == 0)) { return EFI_INVALID_PARAMETER; } - if (OptionCount > 0 && OptionList == NULL) { + if ((OptionCount > 0) && (OptionList == NULL)) { return EFI_INVALID_PARAMETER; } if (OptionList != NULL) { for (Index = 0; Index < OptionCount; Index++) { - if (OptionList[Index]->OpCode == Dhcp6OptClientId || OptionList[Index]->OpCode == Dhcp6OptRequestOption) { + if ((OptionList[Index]->OpCode == Dhcp6OptClientId) || (OptionList[Index]->OpCode == Dhcp6OptRequestOption)) { return EFI_INVALID_PARAMETER; } } @@ -651,8 +658,8 @@ EfiDhcp6InfoRequest ( // The link local address is not ready, wait for some time and restart // the DHCP6 information request process. // - Status = Dhcp6GetMappingTimeOut(Service->Ip6Cfg, &GetMappingTimeOut); - if (EFI_ERROR(Status)) { + Status = Dhcp6GetMappingTimeOut (Service->Ip6Cfg, &GetMappingTimeOut); + if (EFI_ERROR (Status)) { return Status; } @@ -689,6 +696,7 @@ EfiDhcp6InfoRequest ( gBS->CloseEvent (Timer); } + if (EFI_ERROR (Status)) { return Status; } @@ -697,17 +705,16 @@ EfiDhcp6InfoRequest ( // Poll udp out of the net tpl if synchronous call. // if (TimeoutEvent == NULL) { - while (Instance->UdpSts == EFI_ALREADY_STARTED) { Service->UdpIo->Protocol.Udp6->Poll (Service->UdpIo->Protocol.Udp6); } + return Instance->UdpSts; } return EFI_SUCCESS; } - /** Manually extend the valid and preferred lifetimes for the IPv6 addresses of the configured IA and update other configuration parameters by sending a @@ -756,14 +763,14 @@ EfiDhcp6InfoRequest ( EFI_STATUS EFIAPI EfiDhcp6RenewRebind ( - IN EFI_DHCP6_PROTOCOL *This, - IN BOOLEAN RebindRequest + IN EFI_DHCP6_PROTOCOL *This, + IN BOOLEAN RebindRequest ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - DHCP6_INSTANCE *Instance; - DHCP6_SERVICE *Service; + EFI_STATUS Status; + EFI_TPL OldTpl; + DHCP6_INSTANCE *Instance; + DHCP6_SERVICE *Service; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -784,9 +791,10 @@ EfiDhcp6RenewRebind ( // // The instance has already entered renewing or rebinding state. // - if ((Instance->IaCb.Ia->State == Dhcp6Rebinding && RebindRequest) || - (Instance->IaCb.Ia->State == Dhcp6Renewing && !RebindRequest) - ) { + if (((Instance->IaCb.Ia->State == Dhcp6Rebinding) && RebindRequest) || + ((Instance->IaCb.Ia->State == Dhcp6Renewing) && !RebindRequest) + ) + { return EFI_ALREADY_STARTED; } @@ -809,7 +817,7 @@ EfiDhcp6RenewRebind ( // // Register receive callback for the stateful exchange process. // - Status = UdpIoRecvDatagram( + Status = UdpIoRecvDatagram ( Service->UdpIo, Dhcp6ReceivePacket, Service, @@ -826,10 +834,10 @@ EfiDhcp6RenewRebind ( // Poll udp out of the net tpl if synchronous call. // if (Instance->Config->IaInfoEvent == NULL) { - while (Instance->UdpSts == EFI_ALREADY_STARTED) { Service->UdpIo->Protocol.Udp6->Poll (Service->UdpIo->Protocol.Udp6); } + return Instance->UdpSts; } @@ -841,7 +849,6 @@ ON_ERROR: return Status; } - /** Inform that one or more addresses assigned by a server are already in use by another node. @@ -877,18 +884,18 @@ ON_ERROR: EFI_STATUS EFIAPI EfiDhcp6Decline ( - IN EFI_DHCP6_PROTOCOL *This, - IN UINT32 AddressCount, - IN EFI_IPv6_ADDRESS *Addresses + IN EFI_DHCP6_PROTOCOL *This, + IN UINT32 AddressCount, + IN EFI_IPv6_ADDRESS *Addresses ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - EFI_DHCP6_IA *DecIa; - DHCP6_INSTANCE *Instance; - DHCP6_SERVICE *Service; + EFI_STATUS Status; + EFI_TPL OldTpl; + EFI_DHCP6_IA *DecIa; + DHCP6_INSTANCE *Instance; + DHCP6_SERVICE *Service; - if (This == NULL || AddressCount == 0 || Addresses == NULL) { + if ((This == NULL) || (AddressCount == 0) || (Addresses == NULL)) { return EFI_INVALID_PARAMETER; } @@ -913,7 +920,7 @@ EfiDhcp6Decline ( // Status = Dhcp6CheckAddress (Instance->IaCb.Ia, AddressCount, Addresses); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } @@ -943,7 +950,7 @@ EfiDhcp6Decline ( // // Register receive callback for the stateful exchange process. // - Status = UdpIoRecvDatagram( + Status = UdpIoRecvDatagram ( Service->UdpIo, Dhcp6ReceivePacket, Service, @@ -961,10 +968,10 @@ EfiDhcp6Decline ( // Poll udp out of the net tpl if synchronous call. // if (Instance->Config->IaInfoEvent == NULL) { - while (Instance->UdpSts == EFI_ALREADY_STARTED) { Service->UdpIo->Protocol.Udp6->Poll (Service->UdpIo->Protocol.Udp6); } + return Instance->UdpSts; } @@ -975,12 +982,12 @@ ON_ERROR: if (DecIa != NULL) { FreePool (DecIa); } + gBS->RestoreTPL (OldTpl); return Status; } - /** Release one or more addresses associated with the configured Ia for current instance. @@ -1018,18 +1025,18 @@ ON_ERROR: EFI_STATUS EFIAPI EfiDhcp6Release ( - IN EFI_DHCP6_PROTOCOL *This, - IN UINT32 AddressCount, - IN EFI_IPv6_ADDRESS *Addresses + IN EFI_DHCP6_PROTOCOL *This, + IN UINT32 AddressCount, + IN EFI_IPv6_ADDRESS *Addresses ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - EFI_DHCP6_IA *RelIa; - DHCP6_INSTANCE *Instance; - DHCP6_SERVICE *Service; + EFI_STATUS Status; + EFI_TPL OldTpl; + EFI_DHCP6_IA *RelIa; + DHCP6_INSTANCE *Instance; + DHCP6_SERVICE *Service; - if (This == NULL || (AddressCount != 0 && Addresses == NULL)) { + if ((This == NULL) || ((AddressCount != 0) && (Addresses == NULL))) { return EFI_INVALID_PARAMETER; } @@ -1054,7 +1061,7 @@ EfiDhcp6Release ( // Status = Dhcp6CheckAddress (Instance->IaCb.Ia, AddressCount, Addresses); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } @@ -1084,7 +1091,7 @@ EfiDhcp6Release ( // // Register receive callback for the stateful exchange process. // - Status = UdpIoRecvDatagram( + Status = UdpIoRecvDatagram ( Service->UdpIo, Dhcp6ReceivePacket, Service, @@ -1105,6 +1112,7 @@ EfiDhcp6Release ( while (Instance->UdpSts == EFI_ALREADY_STARTED) { Service->UdpIo->Protocol.Udp6->Poll (Service->UdpIo->Protocol.Udp6); } + return Instance->UdpSts; } @@ -1115,12 +1123,12 @@ ON_ERROR: if (RelIa != NULL) { FreePool (RelIa); } + gBS->RestoreTPL (OldTpl); return Status; } - /** Parse the option data in the Dhcp6 packet. @@ -1146,21 +1154,21 @@ EfiDhcp6Parse ( OUT EFI_DHCP6_PACKET_OPTION *PacketOptionList[] OPTIONAL ) { - UINT32 OptCnt; - UINT32 OptLen; - UINT16 DataLen; - UINT8 *Start; - UINT8 *End; + UINT32 OptCnt; + UINT32 OptLen; + UINT16 DataLen; + UINT8 *Start; + UINT8 *End; - if (This == NULL || Packet == NULL || OptionCount == NULL) { + if ((This == NULL) || (Packet == NULL) || (OptionCount == NULL)) { return EFI_INVALID_PARAMETER; } - if (*OptionCount != 0 && PacketOptionList == NULL) { + if ((*OptionCount != 0) && (PacketOptionList == NULL)) { return EFI_INVALID_PARAMETER; } - if (Packet->Length > Packet->Size || Packet->Length < sizeof (EFI_DHCP6_HEADER)) { + if ((Packet->Length > Packet->Size) || (Packet->Length < sizeof (EFI_DHCP6_HEADER))) { return EFI_INVALID_PARAMETER; } @@ -1185,7 +1193,7 @@ EfiDhcp6Parse ( // Calculate the number of option in the packet. // while (Start < End) { - DataLen = ((EFI_DHCP6_PACKET_OPTION *) Start)->OpLen; + DataLen = ((EFI_DHCP6_PACKET_OPTION *)Start)->OpLen; Start += (NTOHS (DataLen) + 4); OptCnt++; } @@ -1208,13 +1216,11 @@ EfiDhcp6Parse ( Start = Packet->Dhcp6.Option; while (Start < End) { - - PacketOptionList[OptCnt] = (EFI_DHCP6_PACKET_OPTION *) Start; - DataLen = ((EFI_DHCP6_PACKET_OPTION *) Start)->OpLen; - Start += (NTOHS (DataLen) + 4); + PacketOptionList[OptCnt] = (EFI_DHCP6_PACKET_OPTION *)Start; + DataLen = ((EFI_DHCP6_PACKET_OPTION *)Start)->OpLen; + Start += (NTOHS (DataLen) + 4); OptCnt++; } return EFI_SUCCESS; } - diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h b/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h index f88b00ad04..0eb9c669b5 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Impl.h @@ -10,7 +10,6 @@ #ifndef __EFI_DHCP6_IMPL_H__ #define __EFI_DHCP6_IMPL_H__ - #include #include @@ -33,12 +32,11 @@ #include #include - -typedef struct _DHCP6_IA_CB DHCP6_IA_CB; -typedef struct _DHCP6_INF_CB DHCP6_INF_CB; -typedef struct _DHCP6_TX_CB DHCP6_TX_CB; -typedef struct _DHCP6_SERVICE DHCP6_SERVICE; -typedef struct _DHCP6_INSTANCE DHCP6_INSTANCE; +typedef struct _DHCP6_IA_CB DHCP6_IA_CB; +typedef struct _DHCP6_INF_CB DHCP6_INF_CB; +typedef struct _DHCP6_TX_CB DHCP6_TX_CB; +typedef struct _DHCP6_SERVICE DHCP6_SERVICE; +typedef struct _DHCP6_INSTANCE DHCP6_INSTANCE; #include "Dhcp6Utility.h" #include "Dhcp6Io.h" @@ -47,104 +45,104 @@ typedef struct _DHCP6_INSTANCE DHCP6_INSTANCE; #define DHCP6_SERVICE_SIGNATURE SIGNATURE_32 ('D', 'H', '6', 'S') #define DHCP6_INSTANCE_SIGNATURE SIGNATURE_32 ('D', 'H', '6', 'I') -#define DHCP6_PACKET_ALL 0 -#define DHCP6_PACKET_STATEFUL 1 -#define DHCP6_PACKET_STATELESS 2 +#define DHCP6_PACKET_ALL 0 +#define DHCP6_PACKET_STATEFUL 1 +#define DHCP6_PACKET_STATELESS 2 -#define DHCP6_BASE_PACKET_SIZE 1024 +#define DHCP6_BASE_PACKET_SIZE 1024 -#define DHCP6_PORT_CLIENT 546 -#define DHCP6_PORT_SERVER 547 +#define DHCP6_PORT_CLIENT 546 +#define DHCP6_PORT_SERVER 547 -#define DHCP_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) +#define DHCP_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) -#define DHCP6_INSTANCE_FROM_THIS(Instance) CR ((Instance), DHCP6_INSTANCE, Dhcp6, DHCP6_INSTANCE_SIGNATURE) -#define DHCP6_SERVICE_FROM_THIS(Service) CR ((Service), DHCP6_SERVICE, ServiceBinding, DHCP6_SERVICE_SIGNATURE) +#define DHCP6_INSTANCE_FROM_THIS(Instance) CR ((Instance), DHCP6_INSTANCE, Dhcp6, DHCP6_INSTANCE_SIGNATURE) +#define DHCP6_SERVICE_FROM_THIS(Service) CR ((Service), DHCP6_SERVICE, ServiceBinding, DHCP6_SERVICE_SIGNATURE) -extern EFI_IPv6_ADDRESS mAllDhcpRelayAndServersAddress; -extern EFI_DHCP6_PROTOCOL gDhcp6ProtocolTemplate; +extern EFI_IPv6_ADDRESS mAllDhcpRelayAndServersAddress; +extern EFI_DHCP6_PROTOCOL gDhcp6ProtocolTemplate; // // Control block for each IA. // struct _DHCP6_IA_CB { - EFI_DHCP6_IA *Ia; - UINT32 T1; - UINT32 T2; - UINT32 AllExpireTime; - UINT32 LeaseTime; + EFI_DHCP6_IA *Ia; + UINT32 T1; + UINT32 T2; + UINT32 AllExpireTime; + UINT32 LeaseTime; }; // // Control block for each transmitted message. // struct _DHCP6_TX_CB { - LIST_ENTRY Link; - UINT32 Xid; - EFI_DHCP6_PACKET *TxPacket; - EFI_DHCP6_RETRANSMISSION RetryCtl; - UINT32 RetryCnt; - UINT32 RetryExp; - UINT32 RetryLos; - UINT32 TickTime; - UINT16 *Elapsed; - BOOLEAN SolicitRetry; + LIST_ENTRY Link; + UINT32 Xid; + EFI_DHCP6_PACKET *TxPacket; + EFI_DHCP6_RETRANSMISSION RetryCtl; + UINT32 RetryCnt; + UINT32 RetryExp; + UINT32 RetryLos; + UINT32 TickTime; + UINT16 *Elapsed; + BOOLEAN SolicitRetry; }; // // Control block for each info-request message. // struct _DHCP6_INF_CB { - LIST_ENTRY Link; - UINT32 Xid; - EFI_DHCP6_INFO_CALLBACK ReplyCallback; - VOID *CallbackContext; - EFI_EVENT TimeoutEvent; + LIST_ENTRY Link; + UINT32 Xid; + EFI_DHCP6_INFO_CALLBACK ReplyCallback; + VOID *CallbackContext; + EFI_EVENT TimeoutEvent; }; // // Control block for Dhcp6 instance, it's per configuration data. // struct _DHCP6_INSTANCE { - UINT32 Signature; - EFI_HANDLE Handle; - DHCP6_SERVICE *Service; - LIST_ENTRY Link; - EFI_DHCP6_PROTOCOL Dhcp6; - EFI_EVENT Timer; - EFI_DHCP6_CONFIG_DATA *Config; - EFI_DHCP6_IA *CacheIa; - DHCP6_IA_CB IaCb; - LIST_ENTRY TxList; - LIST_ENTRY InfList; - EFI_DHCP6_PACKET *AdSelect; - UINT8 AdPref; - EFI_IPv6_ADDRESS *Unicast; - volatile EFI_STATUS UdpSts; - BOOLEAN InDestroy; - BOOLEAN MediaPresent; + UINT32 Signature; + EFI_HANDLE Handle; + DHCP6_SERVICE *Service; + LIST_ENTRY Link; + EFI_DHCP6_PROTOCOL Dhcp6; + EFI_EVENT Timer; + EFI_DHCP6_CONFIG_DATA *Config; + EFI_DHCP6_IA *CacheIa; + DHCP6_IA_CB IaCb; + LIST_ENTRY TxList; + LIST_ENTRY InfList; + EFI_DHCP6_PACKET *AdSelect; + UINT8 AdPref; + EFI_IPv6_ADDRESS *Unicast; + volatile EFI_STATUS UdpSts; + BOOLEAN InDestroy; + BOOLEAN MediaPresent; // // StartTime is used to calculate the 'elapsed-time' option. Refer to RFC3315, // the elapsed-time is amount of time since the client began its current DHCP transaction. // - UINT64 StartTime; + UINT64 StartTime; }; // // Control block for Dhcp6 service, it's per Nic handle. // struct _DHCP6_SERVICE { - UINT32 Signature; - EFI_HANDLE Controller; - EFI_HANDLE Image; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; - EFI_DHCP6_DUID *ClientId; - UDP_IO *UdpIo; - UINT32 Xid; - LIST_ENTRY Child; - UINTN NumOfChild; + UINT32 Signature; + EFI_HANDLE Controller; + EFI_HANDLE Image; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; + EFI_DHCP6_DUID *ClientId; + UDP_IO *UdpIo; + UINT32 Xid; + LIST_ENTRY Child; + UINTN NumOfChild; }; /** @@ -179,7 +177,7 @@ struct _DHCP6_SERVICE { EFI_STATUS EFIAPI EfiDhcp6Start ( - IN EFI_DHCP6_PROTOCOL *This + IN EFI_DHCP6_PROTOCOL *This ); /** @@ -200,7 +198,7 @@ EfiDhcp6Start ( EFI_STATUS EFIAPI EfiDhcp6Stop ( - IN EFI_DHCP6_PROTOCOL *This + IN EFI_DHCP6_PROTOCOL *This ); /** @@ -222,9 +220,9 @@ EfiDhcp6Stop ( EFI_STATUS EFIAPI EfiDhcp6GetModeData ( - IN EFI_DHCP6_PROTOCOL *This, - OUT EFI_DHCP6_MODE_DATA *Dhcp6ModeData OPTIONAL, - OUT EFI_DHCP6_CONFIG_DATA *Dhcp6ConfigData OPTIONAL + IN EFI_DHCP6_PROTOCOL *This, + OUT EFI_DHCP6_MODE_DATA *Dhcp6ModeData OPTIONAL, + OUT EFI_DHCP6_CONFIG_DATA *Dhcp6ConfigData OPTIONAL ); /** @@ -259,8 +257,8 @@ EfiDhcp6GetModeData ( EFI_STATUS EFIAPI EfiDhcp6Configure ( - IN EFI_DHCP6_PROTOCOL *This, - IN EFI_DHCP6_CONFIG_DATA *Dhcp6CfgData OPTIONAL + IN EFI_DHCP6_PROTOCOL *This, + IN EFI_DHCP6_CONFIG_DATA *Dhcp6CfgData OPTIONAL ); /** @@ -366,8 +364,8 @@ EfiDhcp6InfoRequest ( EFI_STATUS EFIAPI EfiDhcp6RenewRebind ( - IN EFI_DHCP6_PROTOCOL *This, - IN BOOLEAN RebindRequest + IN EFI_DHCP6_PROTOCOL *This, + IN BOOLEAN RebindRequest ); /** @@ -405,9 +403,9 @@ EfiDhcp6RenewRebind ( EFI_STATUS EFIAPI EfiDhcp6Decline ( - IN EFI_DHCP6_PROTOCOL *This, - IN UINT32 AddressCount, - IN EFI_IPv6_ADDRESS *Addresses + IN EFI_DHCP6_PROTOCOL *This, + IN UINT32 AddressCount, + IN EFI_IPv6_ADDRESS *Addresses ); /** @@ -446,9 +444,9 @@ EfiDhcp6Decline ( EFI_STATUS EFIAPI EfiDhcp6Release ( - IN EFI_DHCP6_PROTOCOL *This, - IN UINT32 AddressCount, - IN EFI_IPv6_ADDRESS *Addresses + IN EFI_DHCP6_PROTOCOL *This, + IN UINT32 AddressCount, + IN EFI_IPv6_ADDRESS *Addresses ); /** diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c b/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c index c20876d5a5..dcd01e6268 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Io.c @@ -10,7 +10,6 @@ #include "Dhcp6Impl.h" - /** Enqueue the packet into the retry list in case of timeout. @@ -34,8 +33,8 @@ Dhcp6EnqueueRetry ( IN EFI_DHCP6_RETRANSMISSION *RetryCtl OPTIONAL ) { - DHCP6_TX_CB *TxCb; - DHCP6_IA_CB *IaCb; + DHCP6_TX_CB *TxCb; + DHCP6_IA_CB *IaCb; ASSERT (Packet != NULL); @@ -55,156 +54,156 @@ Dhcp6EnqueueRetry ( // // Save pointer to elapsed-time value so we can update it on retransmits. // - TxCb->Elapsed = Elapsed; + TxCb->Elapsed = Elapsed; // // Calculate the retransmission according to the message type. // switch (Packet->Dhcp6.Header.MessageType) { - case Dhcp6MsgSolicit: - // - // Calculate the retransmission threshold value for solicit packet. - // Use the default value by rfc-3315 if user doesn't configure. - // - if (RetryCtl == NULL) { - TxCb->RetryCtl.Irt = DHCP6_SOL_IRT; - TxCb->RetryCtl.Mrc = DHCP6_SOL_MRC; - TxCb->RetryCtl.Mrt = DHCP6_SOL_MRT; - TxCb->RetryCtl.Mrd = DHCP6_SOL_MRD; - } else { - TxCb->RetryCtl.Irt = (RetryCtl->Irt != 0) ? RetryCtl->Irt : DHCP6_SOL_IRT; - TxCb->RetryCtl.Mrc = (RetryCtl->Mrc != 0) ? RetryCtl->Mrc : DHCP6_SOL_MRC; - TxCb->RetryCtl.Mrt = (RetryCtl->Mrt != 0) ? RetryCtl->Mrt : DHCP6_SOL_MRT; - TxCb->RetryCtl.Mrd = (RetryCtl->Mrd != 0) ? RetryCtl->Mrd : DHCP6_SOL_MRD; - } + case Dhcp6MsgSolicit: + // + // Calculate the retransmission threshold value for solicit packet. + // Use the default value by rfc-3315 if user doesn't configure. + // + if (RetryCtl == NULL) { + TxCb->RetryCtl.Irt = DHCP6_SOL_IRT; + TxCb->RetryCtl.Mrc = DHCP6_SOL_MRC; + TxCb->RetryCtl.Mrt = DHCP6_SOL_MRT; + TxCb->RetryCtl.Mrd = DHCP6_SOL_MRD; + } else { + TxCb->RetryCtl.Irt = (RetryCtl->Irt != 0) ? RetryCtl->Irt : DHCP6_SOL_IRT; + TxCb->RetryCtl.Mrc = (RetryCtl->Mrc != 0) ? RetryCtl->Mrc : DHCP6_SOL_MRC; + TxCb->RetryCtl.Mrt = (RetryCtl->Mrt != 0) ? RetryCtl->Mrt : DHCP6_SOL_MRT; + TxCb->RetryCtl.Mrd = (RetryCtl->Mrd != 0) ? RetryCtl->Mrd : DHCP6_SOL_MRD; + } + + TxCb->RetryExp = Dhcp6CalculateExpireTime ( + TxCb->RetryCtl.Irt, + TRUE, + FALSE + ); + break; - TxCb->RetryExp = Dhcp6CalculateExpireTime ( + case Dhcp6MsgRequest: + // + // Calculate the retransmission threshold value for request packet. + // + TxCb->RetryCtl.Irt = DHCP6_REQ_IRT; + TxCb->RetryCtl.Mrc = DHCP6_REQ_MRC; + TxCb->RetryCtl.Mrt = DHCP6_REQ_MRT; + TxCb->RetryCtl.Mrd = DHCP6_REQ_MRD; + TxCb->RetryExp = Dhcp6CalculateExpireTime ( TxCb->RetryCtl.Irt, TRUE, - FALSE + TRUE ); - break; - - case Dhcp6MsgRequest: - // - // Calculate the retransmission threshold value for request packet. - // - TxCb->RetryCtl.Irt = DHCP6_REQ_IRT; - TxCb->RetryCtl.Mrc = DHCP6_REQ_MRC; - TxCb->RetryCtl.Mrt = DHCP6_REQ_MRT; - TxCb->RetryCtl.Mrd = DHCP6_REQ_MRD; - TxCb->RetryExp = Dhcp6CalculateExpireTime ( - TxCb->RetryCtl.Irt, - TRUE, - TRUE - ); - break; - - case Dhcp6MsgConfirm: - // - // Calculate the retransmission threshold value for confirm packet. - // - TxCb->RetryCtl.Irt = DHCP6_CNF_IRT; - TxCb->RetryCtl.Mrc = DHCP6_CNF_MRC; - TxCb->RetryCtl.Mrt = DHCP6_CNF_MRT; - TxCb->RetryCtl.Mrd = DHCP6_CNF_MRD; - TxCb->RetryExp = Dhcp6CalculateExpireTime ( - TxCb->RetryCtl.Irt, - TRUE, - TRUE - ); - break; - - case Dhcp6MsgRenew: - // - // Calculate the retransmission threshold value for renew packet. - // - TxCb->RetryCtl.Irt = DHCP6_REB_IRT; - TxCb->RetryCtl.Mrc = DHCP6_REB_MRC; - TxCb->RetryCtl.Mrt = DHCP6_REB_MRT; - TxCb->RetryCtl.Mrd = IaCb->T2 - IaCb->T1; - TxCb->RetryExp = Dhcp6CalculateExpireTime ( - TxCb->RetryCtl.Irt, - TRUE, - TRUE - ); - break; + break; - case Dhcp6MsgRebind: - // - // Calculate the retransmission threshold value for rebind packet. - // - TxCb->RetryCtl.Irt = DHCP6_REN_IRT; - TxCb->RetryCtl.Mrc = DHCP6_REN_MRC; - TxCb->RetryCtl.Mrt = DHCP6_REN_MRT; - TxCb->RetryCtl.Mrd = IaCb->AllExpireTime - IaCb->T2; - TxCb->RetryExp = Dhcp6CalculateExpireTime ( - TxCb->RetryCtl.Irt, - TRUE, - TRUE - ); - break; + case Dhcp6MsgConfirm: + // + // Calculate the retransmission threshold value for confirm packet. + // + TxCb->RetryCtl.Irt = DHCP6_CNF_IRT; + TxCb->RetryCtl.Mrc = DHCP6_CNF_MRC; + TxCb->RetryCtl.Mrt = DHCP6_CNF_MRT; + TxCb->RetryCtl.Mrd = DHCP6_CNF_MRD; + TxCb->RetryExp = Dhcp6CalculateExpireTime ( + TxCb->RetryCtl.Irt, + TRUE, + TRUE + ); + break; - case Dhcp6MsgDecline: - // - // Calculate the retransmission threshold value for decline packet. - // - TxCb->RetryCtl.Irt = DHCP6_DEC_IRT; - TxCb->RetryCtl.Mrc = DHCP6_DEC_MRC; - TxCb->RetryCtl.Mrt = DHCP6_DEC_MRT; - TxCb->RetryCtl.Mrd = DHCP6_DEC_MRD; - TxCb->RetryExp = Dhcp6CalculateExpireTime ( - TxCb->RetryCtl.Irt, - TRUE, - TRUE - ); - break; + case Dhcp6MsgRenew: + // + // Calculate the retransmission threshold value for renew packet. + // + TxCb->RetryCtl.Irt = DHCP6_REB_IRT; + TxCb->RetryCtl.Mrc = DHCP6_REB_MRC; + TxCb->RetryCtl.Mrt = DHCP6_REB_MRT; + TxCb->RetryCtl.Mrd = IaCb->T2 - IaCb->T1; + TxCb->RetryExp = Dhcp6CalculateExpireTime ( + TxCb->RetryCtl.Irt, + TRUE, + TRUE + ); + break; - case Dhcp6MsgRelease: - // - // Calculate the retransmission threshold value for release packet. - // - TxCb->RetryCtl.Irt = DHCP6_REL_IRT; - TxCb->RetryCtl.Mrc = DHCP6_REL_MRC; - TxCb->RetryCtl.Mrt = DHCP6_REL_MRT; - TxCb->RetryCtl.Mrd = DHCP6_REL_MRD; - TxCb->RetryExp = Dhcp6CalculateExpireTime ( - TxCb->RetryCtl.Irt, - TRUE, - TRUE - ); - break; + case Dhcp6MsgRebind: + // + // Calculate the retransmission threshold value for rebind packet. + // + TxCb->RetryCtl.Irt = DHCP6_REN_IRT; + TxCb->RetryCtl.Mrc = DHCP6_REN_MRC; + TxCb->RetryCtl.Mrt = DHCP6_REN_MRT; + TxCb->RetryCtl.Mrd = IaCb->AllExpireTime - IaCb->T2; + TxCb->RetryExp = Dhcp6CalculateExpireTime ( + TxCb->RetryCtl.Irt, + TRUE, + TRUE + ); + break; - case Dhcp6MsgInfoRequest: - // - // Calculate the retransmission threshold value for info-request packet. - // Use the default value by rfc-3315 if user doesn't configure. - // - if (RetryCtl == NULL) { - TxCb->RetryCtl.Irt = DHCP6_INF_IRT; - TxCb->RetryCtl.Mrc = DHCP6_INF_MRC; - TxCb->RetryCtl.Mrt = DHCP6_INF_MRT; - TxCb->RetryCtl.Mrd = DHCP6_INF_MRD; - } else { - TxCb->RetryCtl.Irt = (RetryCtl->Irt != 0) ? RetryCtl->Irt : DHCP6_INF_IRT; - TxCb->RetryCtl.Mrc = (RetryCtl->Mrc != 0) ? RetryCtl->Mrc : DHCP6_INF_MRC; - TxCb->RetryCtl.Mrt = (RetryCtl->Mrt != 0) ? RetryCtl->Mrt : DHCP6_INF_MRT; - TxCb->RetryCtl.Mrd = (RetryCtl->Mrd != 0) ? RetryCtl->Mrd : DHCP6_INF_MRD; - } + case Dhcp6MsgDecline: + // + // Calculate the retransmission threshold value for decline packet. + // + TxCb->RetryCtl.Irt = DHCP6_DEC_IRT; + TxCb->RetryCtl.Mrc = DHCP6_DEC_MRC; + TxCb->RetryCtl.Mrt = DHCP6_DEC_MRT; + TxCb->RetryCtl.Mrd = DHCP6_DEC_MRD; + TxCb->RetryExp = Dhcp6CalculateExpireTime ( + TxCb->RetryCtl.Irt, + TRUE, + TRUE + ); + break; - TxCb->RetryExp = Dhcp6CalculateExpireTime ( + case Dhcp6MsgRelease: + // + // Calculate the retransmission threshold value for release packet. + // + TxCb->RetryCtl.Irt = DHCP6_REL_IRT; + TxCb->RetryCtl.Mrc = DHCP6_REL_MRC; + TxCb->RetryCtl.Mrt = DHCP6_REL_MRT; + TxCb->RetryCtl.Mrd = DHCP6_REL_MRD; + TxCb->RetryExp = Dhcp6CalculateExpireTime ( TxCb->RetryCtl.Irt, TRUE, TRUE ); - break; + break; - default: - // - // Unexpected message type. - // - FreePool(TxCb); - return EFI_DEVICE_ERROR; + case Dhcp6MsgInfoRequest: + // + // Calculate the retransmission threshold value for info-request packet. + // Use the default value by rfc-3315 if user doesn't configure. + // + if (RetryCtl == NULL) { + TxCb->RetryCtl.Irt = DHCP6_INF_IRT; + TxCb->RetryCtl.Mrc = DHCP6_INF_MRC; + TxCb->RetryCtl.Mrt = DHCP6_INF_MRT; + TxCb->RetryCtl.Mrd = DHCP6_INF_MRD; + } else { + TxCb->RetryCtl.Irt = (RetryCtl->Irt != 0) ? RetryCtl->Irt : DHCP6_INF_IRT; + TxCb->RetryCtl.Mrc = (RetryCtl->Mrc != 0) ? RetryCtl->Mrc : DHCP6_INF_MRC; + TxCb->RetryCtl.Mrt = (RetryCtl->Mrt != 0) ? RetryCtl->Mrt : DHCP6_INF_MRT; + TxCb->RetryCtl.Mrd = (RetryCtl->Mrd != 0) ? RetryCtl->Mrd : DHCP6_INF_MRD; + } + + TxCb->RetryExp = Dhcp6CalculateExpireTime ( + TxCb->RetryCtl.Irt, + TRUE, + TRUE + ); + break; + + default: + // + // Unexpected message type. + // + FreePool (TxCb); + return EFI_DEVICE_ERROR; } // @@ -215,7 +214,6 @@ Dhcp6EnqueueRetry ( return EFI_SUCCESS; } - /** Dequeue the packet from retry list if reply received or timeout at last. @@ -230,40 +228,36 @@ Dhcp6EnqueueRetry ( **/ EFI_STATUS Dhcp6DequeueRetry ( - IN DHCP6_INSTANCE *Instance, - IN UINT32 PacketXid, - IN BOOLEAN NeedSignal + IN DHCP6_INSTANCE *Instance, + IN UINT32 PacketXid, + IN BOOLEAN NeedSignal ) { - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - DHCP6_TX_CB *TxCb; - DHCP6_INF_CB *InfCb; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + DHCP6_TX_CB *TxCb; + DHCP6_INF_CB *InfCb; // // Seek the retransmit node in the retransmit list by packet xid. // NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &Instance->TxList) { - TxCb = NET_LIST_USER_STRUCT (Entry, DHCP6_TX_CB, Link); - ASSERT(TxCb->TxPacket); + ASSERT (TxCb->TxPacket); if (TxCb->Xid == PacketXid) { - if (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgInfoRequest) { - // // Seek the info-request node in the info-request list by packet xid. // NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &Instance->InfList) { - InfCb = NET_LIST_USER_STRUCT (Entry, DHCP6_INF_CB, Link); if (InfCb->Xid == PacketXid) { // // Remove the info-request node, and signal the event if timeout. // - if (InfCb->TimeoutEvent != NULL && NeedSignal) { + if ((InfCb->TimeoutEvent != NULL) && NeedSignal) { gBS->SignalEvent (InfCb->TimeoutEvent); } @@ -272,11 +266,12 @@ Dhcp6DequeueRetry ( } } } + // // Remove the retransmit node. // RemoveEntryList (&TxCb->Link); - ASSERT(TxCb->TxPacket); + ASSERT (TxCb->TxPacket); FreePool (TxCb->TxPacket); FreePool (TxCb); return EFI_SUCCESS; @@ -286,7 +281,6 @@ Dhcp6DequeueRetry ( return EFI_NOT_FOUND; } - /** Clean up the specific nodes in the retry list. @@ -296,24 +290,22 @@ Dhcp6DequeueRetry ( **/ VOID Dhcp6CleanupRetry ( - IN DHCP6_INSTANCE *Instance, - IN UINT32 Scope + IN DHCP6_INSTANCE *Instance, + IN UINT32 Scope ) { - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - DHCP6_TX_CB *TxCb; - DHCP6_INF_CB *InfCb; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + DHCP6_TX_CB *TxCb; + DHCP6_INF_CB *InfCb; // // Clean up all the stateful messages from the retransmit list. // - if (Scope == DHCP6_PACKET_STATEFUL || Scope == DHCP6_PACKET_ALL) { - + if ((Scope == DHCP6_PACKET_STATEFUL) || (Scope == DHCP6_PACKET_ALL)) { NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &Instance->TxList) { - TxCb = NET_LIST_USER_STRUCT (Entry, DHCP6_TX_CB, Link); - ASSERT(TxCb->TxPacket); + ASSERT (TxCb->TxPacket); if (TxCb->TxPacket->Dhcp6.Header.MessageType != Dhcp6MsgInfoRequest) { RemoveEntryList (&TxCb->Link); @@ -326,15 +318,13 @@ Dhcp6CleanupRetry ( // // Clean up all the stateless messages from the retransmit list. // - if (Scope == DHCP6_PACKET_STATELESS || Scope == DHCP6_PACKET_ALL) { - + if ((Scope == DHCP6_PACKET_STATELESS) || (Scope == DHCP6_PACKET_ALL)) { // // Clean up all the retransmit list for stateless messages. // NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &Instance->TxList) { - TxCb = NET_LIST_USER_STRUCT (Entry, DHCP6_TX_CB, Link); - ASSERT(TxCb->TxPacket); + ASSERT (TxCb->TxPacket); if (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgInfoRequest) { RemoveEntryList (&TxCb->Link); @@ -347,12 +337,12 @@ Dhcp6CleanupRetry ( // Clean up all the info-request messages list. // NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &Instance->InfList) { - InfCb = NET_LIST_USER_STRUCT (Entry, DHCP6_INF_CB, Link); if (InfCb->TimeoutEvent != NULL) { gBS->SignalEvent (InfCb->TimeoutEvent); } + RemoveEntryList (&InfCb->Link); FreePool (InfCb); } @@ -371,11 +361,11 @@ Dhcp6CleanupRetry ( **/ BOOLEAN Dhcp6IsValidTxCb ( - IN DHCP6_INSTANCE *Instance, - IN DHCP6_TX_CB *TxCb + IN DHCP6_INSTANCE *Instance, + IN DHCP6_TX_CB *TxCb ) { - LIST_ENTRY *Entry; + LIST_ENTRY *Entry; NET_LIST_FOR_EACH (Entry, &Instance->TxList) { if (TxCb == NET_LIST_USER_STRUCT (Entry, DHCP6_TX_CB, Link)) { @@ -395,15 +385,15 @@ Dhcp6IsValidTxCb ( **/ VOID Dhcp6CleanupSession ( - IN OUT DHCP6_INSTANCE *Instance, - IN EFI_STATUS Status + IN OUT DHCP6_INSTANCE *Instance, + IN EFI_STATUS Status ) { - UINTN Index; - EFI_DHCP6_IA *Ia; + UINTN Index; + EFI_DHCP6_IA *Ia; - ASSERT(Instance->Config); - ASSERT(Instance->IaCb.Ia); + ASSERT (Instance->Config); + ASSERT (Instance->IaCb.Ia); // // Clean up the retransmit list for stateful messages. @@ -425,23 +415,23 @@ Dhcp6CleanupSession ( // // Reinitialize the Ia fields of the instance. // - Instance->UdpSts = Status; - Instance->AdSelect = NULL; - Instance->AdPref = 0; - Instance->Unicast = NULL; - Instance->IaCb.T1 = 0; - Instance->IaCb.T2 = 0; - Instance->IaCb.AllExpireTime = 0; - Instance->IaCb.LeaseTime = 0; + Instance->UdpSts = Status; + Instance->AdSelect = NULL; + Instance->AdPref = 0; + Instance->Unicast = NULL; + Instance->IaCb.T1 = 0; + Instance->IaCb.T2 = 0; + Instance->IaCb.AllExpireTime = 0; + Instance->IaCb.LeaseTime = 0; // // Clear start time // - Instance->StartTime = 0; + Instance->StartTime = 0; - Ia = Instance->IaCb.Ia; - Ia->State = Dhcp6Init; - Ia->ReplyPacket = NULL; + Ia = Instance->IaCb.Ia; + Ia->State = Dhcp6Init; + Ia->ReplyPacket = NULL; // // Set the addresses as zero lifetime, and then the notify @@ -461,7 +451,6 @@ Dhcp6CleanupSession ( } } - /** Callback to user when Dhcp6 transmit/receive occurs. @@ -477,15 +466,15 @@ Dhcp6CleanupSession ( EFI_STATUS EFIAPI Dhcp6CallbackUser ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_EVENT Event, - IN OUT EFI_DHCP6_PACKET **Packet + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_EVENT Event, + IN OUT EFI_DHCP6_PACKET **Packet ) { - EFI_STATUS Status; - EFI_DHCP6_PACKET *NewPacket; - EFI_DHCP6_CALLBACK Callback; - VOID *Context; + EFI_STATUS Status; + EFI_DHCP6_PACKET *NewPacket; + EFI_DHCP6_CALLBACK Callback; + VOID *Context; ASSERT (Packet != NULL); ASSERT (Instance->Config != NULL); @@ -500,7 +489,6 @@ Dhcp6CallbackUser ( // Callback to user with the new message if has. // if (Callback != NULL) { - Status = Callback ( &Instance->Dhcp6, Context, @@ -522,7 +510,6 @@ Dhcp6CallbackUser ( return Status; } - /** Update Ia according to the new reply message. @@ -535,17 +522,17 @@ Dhcp6CallbackUser ( **/ EFI_STATUS Dhcp6UpdateIaInfo ( - IN OUT DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_PACKET *Packet + IN OUT DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_PACKET *Packet ) { - EFI_STATUS Status; - UINT8 *Option; - UINT8 *IaInnerOpt; - UINT16 IaInnerLen; - UINT16 StsCode; - UINT32 T1; - UINT32 T2; + EFI_STATUS Status; + UINT8 *Option; + UINT8 *IaInnerOpt; + UINT16 IaInnerLen; + UINT16 StsCode; + UINT32 T1; + UINT32 T2; ASSERT (Instance->Config != NULL); // @@ -611,23 +598,24 @@ Dhcp6UpdateIaInfo ( // The inner options still start with 2 bytes option-code and 2 bytes option-len. // if (Instance->Config->IaDescriptor.Type == Dhcp6OptIana) { - T1 = NTOHL (ReadUnaligned32 ((UINT32 *) (Option + 8))); - T2 = NTOHL (ReadUnaligned32 ((UINT32 *) (Option + 12))); + T1 = NTOHL (ReadUnaligned32 ((UINT32 *)(Option + 8))); + T2 = NTOHL (ReadUnaligned32 ((UINT32 *)(Option + 12))); // // Refer to RFC3155 Chapter 22.4. If a client receives an IA_NA with T1 greater than T2, // and both T1 and T2 are greater than 0, the client discards the IA_NA option and processes // the remainder of the message as though the server had not included the invalid IA_NA option. // - if (T1 > T2 && T2 > 0) { + if ((T1 > T2) && (T2 > 0)) { return EFI_DEVICE_ERROR; } + IaInnerOpt = Option + 16; - IaInnerLen = (UINT16) (NTOHS (ReadUnaligned16 ((UINT16 *) (Option + 2))) - 12); + IaInnerLen = (UINT16)(NTOHS (ReadUnaligned16 ((UINT16 *)(Option + 2))) - 12); } else { - T1 = 0; - T2 = 0; + T1 = 0; + T2 = 0; IaInnerOpt = Option + 8; - IaInnerLen = (UINT16) (NTOHS (ReadUnaligned16 ((UINT16 *) (Option + 2))) - 4); + IaInnerLen = (UINT16)(NTOHS (ReadUnaligned16 ((UINT16 *)(Option + 2))) - 4); } // @@ -653,7 +641,7 @@ Dhcp6UpdateIaInfo ( Option = Dhcp6SeekOption (IaInnerOpt, IaInnerLen, Dhcp6OptStatusCode); if (Option != NULL) { - StsCode = NTOHS (ReadUnaligned16 ((UINT16 *) (Option + 4))); + StsCode = NTOHS (ReadUnaligned16 ((UINT16 *)(Option + 4))); if (StsCode != Dhcp6StsSuccess) { return EFI_DEVICE_ERROR; } @@ -673,8 +661,6 @@ Dhcp6UpdateIaInfo ( return Status; } - - /** Seek StatusCode Option in package. A Status Code option may appear in the options field of a DHCP message and/or in the options field of another option. @@ -690,14 +676,14 @@ Dhcp6UpdateIaInfo ( **/ EFI_STATUS Dhcp6SeekStsOption ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_PACKET *Packet, - OUT UINT8 **Option + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_PACKET *Packet, + OUT UINT8 **Option ) { - UINT8 *IaInnerOpt; - UINT16 IaInnerLen; - UINT16 StsCode; + UINT8 *IaInnerOpt; + UINT16 IaInnerLen; + UINT16 StsCode; // // Seek StatusCode option directly in DHCP message body. That is, search in @@ -710,7 +696,7 @@ Dhcp6SeekStsOption ( ); if (*Option != NULL) { - StsCode = NTOHS (ReadUnaligned16 ((UINT16 *) (*Option + 4))); + StsCode = NTOHS (ReadUnaligned16 ((UINT16 *)(*Option + 4))); if (StsCode != Dhcp6StsSuccess) { return EFI_DEVICE_ERROR; } @@ -771,10 +757,10 @@ Dhcp6SeekStsOption ( // if (Instance->Config->IaDescriptor.Type == Dhcp6OptIana) { IaInnerOpt = *Option + 16; - IaInnerLen = (UINT16) (NTOHS (ReadUnaligned16 ((UINT16 *) (*Option + 2))) - 12); + IaInnerLen = (UINT16)(NTOHS (ReadUnaligned16 ((UINT16 *)(*Option + 2))) - 12); } else { IaInnerOpt = *Option + 8; - IaInnerLen = (UINT16) (NTOHS (ReadUnaligned16 ((UINT16 *) (*Option + 2))) - 4); + IaInnerLen = (UINT16)(NTOHS (ReadUnaligned16 ((UINT16 *)(*Option + 2))) - 4); } // @@ -796,9 +782,9 @@ Dhcp6SeekStsOption ( // // sizeof (option-code + option-len) = 4 // - *Option = Dhcp6SeekOption (IaInnerOpt, IaInnerLen, Dhcp6OptStatusCode); + *Option = Dhcp6SeekOption (IaInnerOpt, IaInnerLen, Dhcp6OptStatusCode); if (*Option != NULL) { - StsCode = NTOHS (ReadUnaligned16 ((UINT16 *) (*Option + 4))); + StsCode = NTOHS (ReadUnaligned16 ((UINT16 *)(*Option + 4))); if (StsCode != Dhcp6StsSuccess) { return EFI_DEVICE_ERROR; } @@ -807,7 +793,6 @@ Dhcp6SeekStsOption ( return EFI_SUCCESS; } - /** Transmit Dhcp6 message by udpio. @@ -822,23 +807,23 @@ Dhcp6SeekStsOption ( **/ EFI_STATUS Dhcp6TransmitPacket ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_PACKET *Packet, - IN UINT16 *Elapsed + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_PACKET *Packet, + IN UINT16 *Elapsed ) { - EFI_STATUS Status; - NET_BUF *Wrap; - NET_FRAGMENT Frag; - UDP_END_POINT EndPt; - DHCP6_SERVICE *Service; + EFI_STATUS Status; + NET_BUF *Wrap; + NET_FRAGMENT Frag; + UDP_END_POINT EndPt; + DHCP6_SERVICE *Service; Service = Instance->Service; // // Wrap it into a netbuf then send it. // - Frag.Bulk = (UINT8 *) &Packet->Dhcp6.Header; + Frag.Bulk = (UINT8 *)&Packet->Dhcp6.Header; Frag.Len = Packet->Length; // @@ -899,7 +884,6 @@ Dhcp6TransmitPacket ( return EFI_SUCCESS; } - /** Create the solicit message and send it. @@ -912,19 +896,19 @@ Dhcp6TransmitPacket ( **/ EFI_STATUS Dhcp6SendSolicitMsg ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ) { - EFI_STATUS Status; - EFI_DHCP6_PACKET *Packet; - EFI_DHCP6_PACKET_OPTION *UserOpt; - EFI_DHCP6_DUID *ClientId; - DHCP6_SERVICE *Service; - UINT8 *Cursor; - UINT16 *Elapsed; - UINT32 UserLen; - UINTN Index; - UINT16 Length; + EFI_STATUS Status; + EFI_DHCP6_PACKET *Packet; + EFI_DHCP6_PACKET_OPTION *UserOpt; + EFI_DHCP6_DUID *ClientId; + DHCP6_SERVICE *Service; + UINT8 *Cursor; + UINT16 *Elapsed; + UINT32 UserLen; + UINTN Index; + UINT16 Length; Service = Instance->Service; ClientId = Service->ClientId; @@ -985,9 +969,8 @@ Dhcp6SendSolicitMsg ( // Append user-defined when configurate Dhcp6 service. // for (Index = 0; Index < Instance->Config->OptionCount; Index++) { - UserOpt = Instance->Config->OptionList[Index]; - Cursor = Dhcp6AppendOption( + Cursor = Dhcp6AppendOption ( Cursor, UserOpt->OpCode, UserOpt->OpLen, @@ -998,7 +981,7 @@ Dhcp6SendSolicitMsg ( // // Determine the size/length of packet. // - Packet->Length += (UINT32) (Cursor - Packet->Dhcp6.Option); + Packet->Length += (UINT32)(Cursor - Packet->Dhcp6.Option); ASSERT (Packet->Size > Packet->Length + 8); // @@ -1051,17 +1034,16 @@ Dhcp6SendSolicitMsg ( **/ EFI_STATUS Dhcp6InitSolicitMsg ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ) { - Instance->IaCb.T1 = 0; - Instance->IaCb.T2 = 0; + Instance->IaCb.T1 = 0; + Instance->IaCb.T2 = 0; Instance->IaCb.Ia->IaAddressCount = 0; return Dhcp6SendSolicitMsg (Instance); } - /** Create the request message and send it. @@ -1075,31 +1057,31 @@ Dhcp6InitSolicitMsg ( **/ EFI_STATUS Dhcp6SendRequestMsg ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ) { - EFI_STATUS Status; - EFI_DHCP6_PACKET *Packet; - EFI_DHCP6_PACKET_OPTION *UserOpt; - EFI_DHCP6_DUID *ClientId; - EFI_DHCP6_DUID *ServerId; - DHCP6_SERVICE *Service; - UINT8 *Option; - UINT8 *Cursor; - UINT16 *Elapsed; - UINT32 UserLen; - UINTN Index; - UINT16 Length; - - ASSERT(Instance->AdSelect != NULL); - ASSERT(Instance->Config != NULL); - ASSERT(Instance->IaCb.Ia != NULL); - ASSERT(Instance->Service != NULL); + EFI_STATUS Status; + EFI_DHCP6_PACKET *Packet; + EFI_DHCP6_PACKET_OPTION *UserOpt; + EFI_DHCP6_DUID *ClientId; + EFI_DHCP6_DUID *ServerId; + DHCP6_SERVICE *Service; + UINT8 *Option; + UINT8 *Cursor; + UINT16 *Elapsed; + UINT32 UserLen; + UINTN Index; + UINT16 Length; + + ASSERT (Instance->AdSelect != NULL); + ASSERT (Instance->Config != NULL); + ASSERT (Instance->IaCb.Ia != NULL); + ASSERT (Instance->Service != NULL); Service = Instance->Service; ClientId = Service->ClientId; - ASSERT(ClientId != NULL); + ASSERT (ClientId != NULL); // // Get the server Id from the selected advertisement message. @@ -1113,7 +1095,7 @@ Dhcp6SendRequestMsg ( return EFI_DEVICE_ERROR; } - ServerId = (EFI_DHCP6_DUID *) (Option + 2); + ServerId = (EFI_DHCP6_DUID *)(Option + 2); // // Calculate the added length of customized option list. @@ -1174,9 +1156,8 @@ Dhcp6SendRequestMsg ( // Append user-defined when configurate Dhcp6 service. // for (Index = 0; Index < Instance->Config->OptionCount; Index++) { - UserOpt = Instance->Config->OptionList[Index]; - Cursor = Dhcp6AppendOption( + Cursor = Dhcp6AppendOption ( Cursor, UserOpt->OpCode, UserOpt->OpLen, @@ -1187,7 +1168,7 @@ Dhcp6SendRequestMsg ( // // Determine the size/length of packet. // - Packet->Length += (UINT32) (Cursor - Packet->Dhcp6.Option); + Packet->Length += (UINT32)(Cursor - Packet->Dhcp6.Option); ASSERT (Packet->Size > Packet->Length + 8); // @@ -1223,7 +1204,6 @@ Dhcp6SendRequestMsg ( return Dhcp6EnqueueRetry (Instance, Packet, Elapsed, NULL); } - /** Create the decline message and send it. @@ -1238,20 +1218,20 @@ Dhcp6SendRequestMsg ( **/ EFI_STATUS Dhcp6SendDeclineMsg ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_IA *DecIa + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_IA *DecIa ) { - EFI_STATUS Status; - EFI_DHCP6_PACKET *Packet; - EFI_DHCP6_PACKET *LastReply; - EFI_DHCP6_DUID *ClientId; - EFI_DHCP6_DUID *ServerId; - DHCP6_SERVICE *Service; - UINT8 *Option; - UINT8 *Cursor; - UINT16 *Elapsed; - UINT16 Length; + EFI_STATUS Status; + EFI_DHCP6_PACKET *Packet; + EFI_DHCP6_PACKET *LastReply; + EFI_DHCP6_DUID *ClientId; + EFI_DHCP6_DUID *ServerId; + DHCP6_SERVICE *Service; + UINT8 *Option; + UINT8 *Cursor; + UINT16 *Elapsed; + UINT16 Length; ASSERT (Instance->Config != NULL); ASSERT (Instance->IaCb.Ia != NULL); @@ -1279,7 +1259,7 @@ Dhcp6SendDeclineMsg ( // // EFI_DHCP6_DUID contains a length field of 2 bytes. // - ServerId = (EFI_DHCP6_DUID *) (Option + 2); + ServerId = (EFI_DHCP6_DUID *)(Option + 2); // // Create the Dhcp6 packet and initialize common fields. @@ -1325,7 +1305,7 @@ Dhcp6SendDeclineMsg ( // // Determine the size/length of packet. // - Packet->Length += (UINT32) (Cursor - Packet->Dhcp6.Option); + Packet->Length += (UINT32)(Cursor - Packet->Dhcp6.Option); ASSERT (Packet->Size > Packet->Length + 8); // @@ -1361,7 +1341,6 @@ Dhcp6SendDeclineMsg ( return Dhcp6EnqueueRetry (Instance, Packet, Elapsed, NULL); } - /** Create the release message and send it. @@ -1376,30 +1355,30 @@ Dhcp6SendDeclineMsg ( **/ EFI_STATUS Dhcp6SendReleaseMsg ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_IA *RelIa + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_IA *RelIa ) { - EFI_STATUS Status; - EFI_DHCP6_PACKET *Packet; - EFI_DHCP6_PACKET *LastReply; - EFI_DHCP6_DUID *ClientId; - EFI_DHCP6_DUID *ServerId; - DHCP6_SERVICE *Service; - UINT8 *Option; - UINT8 *Cursor; - UINT16 *Elapsed; - UINT16 Length; - - ASSERT(Instance->Config); - ASSERT(Instance->IaCb.Ia); + EFI_STATUS Status; + EFI_DHCP6_PACKET *Packet; + EFI_DHCP6_PACKET *LastReply; + EFI_DHCP6_DUID *ClientId; + EFI_DHCP6_DUID *ServerId; + DHCP6_SERVICE *Service; + UINT8 *Option; + UINT8 *Cursor; + UINT16 *Elapsed; + UINT16 Length; + + ASSERT (Instance->Config); + ASSERT (Instance->IaCb.Ia); Service = Instance->Service; ClientId = Service->ClientId; LastReply = Instance->IaCb.Ia->ReplyPacket; - ASSERT(ClientId); - ASSERT(LastReply); + ASSERT (ClientId); + ASSERT (LastReply); // // Get the server Id from the last reply message. @@ -1413,7 +1392,7 @@ Dhcp6SendReleaseMsg ( return EFI_DEVICE_ERROR; } - ServerId = (EFI_DHCP6_DUID *) (Option + 2); + ServerId = (EFI_DHCP6_DUID *)(Option + 2); // // Create the Dhcp6 packet and initialize common fields. @@ -1462,7 +1441,7 @@ Dhcp6SendReleaseMsg ( // // Determine the size/length of packet // - Packet->Length += (UINT32) (Cursor - Packet->Dhcp6.Option); + Packet->Length += (UINT32)(Cursor - Packet->Dhcp6.Option); ASSERT (Packet->Size > Packet->Length + 8); // @@ -1494,7 +1473,6 @@ Dhcp6SendReleaseMsg ( return Dhcp6EnqueueRetry (Instance, Packet, Elapsed, NULL); } - /** Create the renew/rebind message and send it. @@ -1510,33 +1488,33 @@ Dhcp6SendReleaseMsg ( **/ EFI_STATUS Dhcp6SendRenewRebindMsg ( - IN DHCP6_INSTANCE *Instance, - IN BOOLEAN RebindRequest + IN DHCP6_INSTANCE *Instance, + IN BOOLEAN RebindRequest ) { - EFI_STATUS Status; - EFI_DHCP6_PACKET *Packet; - EFI_DHCP6_PACKET *LastReply; - EFI_DHCP6_PACKET_OPTION *UserOpt; - EFI_DHCP6_DUID *ClientId; - EFI_DHCP6_DUID *ServerId; - EFI_DHCP6_STATE State; - EFI_DHCP6_EVENT Event; - DHCP6_SERVICE *Service; - UINT8 *Option; - UINT8 *Cursor; - UINT16 *Elapsed; - UINT32 UserLen; - UINTN Index; - UINT16 Length; - - ASSERT(Instance->Config); - ASSERT(Instance->IaCb.Ia); + EFI_STATUS Status; + EFI_DHCP6_PACKET *Packet; + EFI_DHCP6_PACKET *LastReply; + EFI_DHCP6_PACKET_OPTION *UserOpt; + EFI_DHCP6_DUID *ClientId; + EFI_DHCP6_DUID *ServerId; + EFI_DHCP6_STATE State; + EFI_DHCP6_EVENT Event; + DHCP6_SERVICE *Service; + UINT8 *Option; + UINT8 *Cursor; + UINT16 *Elapsed; + UINT32 UserLen; + UINTN Index; + UINT16 Length; - Service = Instance->Service; - ClientId = Service->ClientId; + ASSERT (Instance->Config); + ASSERT (Instance->IaCb.Ia); - ASSERT(ClientId); + Service = Instance->Service; + ClientId = Service->ClientId; + + ASSERT (ClientId); // // Calculate the added length of customized option list. @@ -1604,7 +1582,7 @@ Dhcp6SendRenewRebindMsg ( return EFI_DEVICE_ERROR; } - ServerId = (EFI_DHCP6_DUID *) (Option + 2); + ServerId = (EFI_DHCP6_DUID *)(Option + 2); Cursor = Dhcp6AppendOption ( Cursor, @@ -1618,9 +1596,8 @@ Dhcp6SendRenewRebindMsg ( // Append user-defined when configurate Dhcp6 service. // for (Index = 0; Index < Instance->Config->OptionCount; Index++) { - UserOpt = Instance->Config->OptionList[Index]; - Cursor = Dhcp6AppendOption( + Cursor = Dhcp6AppendOption ( Cursor, UserOpt->OpCode, UserOpt->OpLen, @@ -1631,14 +1608,14 @@ Dhcp6SendRenewRebindMsg ( // // Determine the size/length of packet. // - Packet->Length += (UINT32) (Cursor - Packet->Dhcp6.Option); + Packet->Length += (UINT32)(Cursor - Packet->Dhcp6.Option); ASSERT (Packet->Size > Packet->Length + 8); // // Callback to user with the packet to be sent and check the user's feedback. // - State = (RebindRequest) ? Dhcp6Rebinding : Dhcp6Renewing; - Event = (RebindRequest) ? Dhcp6EnterRebinding : Dhcp6EnterRenewing; + State = (RebindRequest) ? Dhcp6Rebinding : Dhcp6Renewing; + Event = (RebindRequest) ? Dhcp6EnterRebinding : Dhcp6EnterRenewing; Status = Dhcp6CallbackUser (Instance, Event, &Packet); @@ -1707,19 +1684,19 @@ Dhcp6StartInfoRequest ( IN VOID *CallbackContext OPTIONAL ) { - EFI_STATUS Status; - DHCP6_INF_CB *InfCb; - DHCP6_SERVICE *Service; - EFI_TPL OldTpl; + EFI_STATUS Status; + DHCP6_INF_CB *InfCb; + DHCP6_SERVICE *Service; + EFI_TPL OldTpl; - Service = Instance->Service; + Service = Instance->Service; - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Instance->UdpSts = EFI_ALREADY_STARTED; // // Create and initialize the control block for the info-request. // - InfCb = AllocateZeroPool (sizeof(DHCP6_INF_CB)); + InfCb = AllocateZeroPool (sizeof (DHCP6_INF_CB)); if (InfCb == NULL) { gBS->RestoreTPL (OldTpl); @@ -1752,7 +1729,7 @@ Dhcp6StartInfoRequest ( // // Register receive callback for the stateless exchange process. // - Status = UdpIoRecvDatagram( + Status = UdpIoRecvDatagram ( Service->UdpIo, Dhcp6ReceivePacket, Service, @@ -1803,24 +1780,24 @@ Dhcp6SendInfoRequestMsg ( IN EFI_DHCP6_RETRANSMISSION *Retransmission ) { - EFI_STATUS Status; - EFI_DHCP6_PACKET *Packet; - EFI_DHCP6_PACKET_OPTION *UserOpt; - EFI_DHCP6_DUID *ClientId; - DHCP6_SERVICE *Service; - UINT8 *Cursor; - UINT16 *Elapsed; - UINT32 UserLen; - UINTN Index; - UINT16 Length; - - ASSERT(OptionRequest); + EFI_STATUS Status; + EFI_DHCP6_PACKET *Packet; + EFI_DHCP6_PACKET_OPTION *UserOpt; + EFI_DHCP6_DUID *ClientId; + DHCP6_SERVICE *Service; + UINT8 *Cursor; + UINT16 *Elapsed; + UINT32 UserLen; + UINTN Index; + UINT16 Length; + + ASSERT (OptionRequest); Service = Instance->Service; ClientId = Service->ClientId; UserLen = NTOHS (OptionRequest->OpLen) + 4; - ASSERT(ClientId); + ASSERT (ClientId); // // Calculate the added length of customized option list. @@ -1842,7 +1819,7 @@ Dhcp6SendInfoRequestMsg ( Packet->Dhcp6.Header.MessageType = Dhcp6MsgInfoRequest; Packet->Dhcp6.Header.TransactionId = Service->Xid++; - InfCb->Xid = Packet->Dhcp6.Header.TransactionId; + InfCb->Xid = Packet->Dhcp6.Header.TransactionId; // // Assembly Dhcp6 options for info-request message. @@ -1876,9 +1853,8 @@ Dhcp6SendInfoRequestMsg ( // Append user-defined when configurate Dhcp6 service. // for (Index = 0; Index < OptionCount; Index++) { - UserOpt = OptionList[Index]; - Cursor = Dhcp6AppendOption( + Cursor = Dhcp6AppendOption ( Cursor, UserOpt->OpCode, UserOpt->OpLen, @@ -1889,7 +1865,7 @@ Dhcp6SendInfoRequestMsg ( // // Determine the size/length of packet. // - Packet->Length += (UINT32) (Cursor - Packet->Dhcp6.Option); + Packet->Length += (UINT32)(Cursor - Packet->Dhcp6.Option); ASSERT (Packet->Size > Packet->Length + 8); // @@ -1913,7 +1889,6 @@ Dhcp6SendInfoRequestMsg ( return Dhcp6EnqueueRetry (Instance, Packet, Elapsed, Retransmission); } - /** Create the Confirm message and send it. @@ -1927,19 +1902,19 @@ Dhcp6SendInfoRequestMsg ( **/ EFI_STATUS Dhcp6SendConfirmMsg ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ) { - UINT8 *Cursor; - UINTN Index; - UINT16 Length; - UINT32 UserLen; - EFI_STATUS Status; - DHCP6_SERVICE *Service; - EFI_DHCP6_DUID *ClientId; - EFI_DHCP6_PACKET *Packet; - EFI_DHCP6_PACKET_OPTION *UserOpt; - UINT16 *Elapsed; + UINT8 *Cursor; + UINTN Index; + UINT16 Length; + UINT32 UserLen; + EFI_STATUS Status; + DHCP6_SERVICE *Service; + EFI_DHCP6_DUID *ClientId; + EFI_DHCP6_PACKET *Packet; + EFI_DHCP6_PACKET_OPTION *UserOpt; + UINT16 *Elapsed; ASSERT (Instance->Config != NULL); ASSERT (Instance->IaCb.Ia != NULL); @@ -2013,7 +1988,7 @@ Dhcp6SendConfirmMsg ( // // Determine the size/length of packet. // - Packet->Length += (UINT32) (Cursor - Packet->Dhcp6.Option); + Packet->Length += (UINT32)(Cursor - Packet->Dhcp6.Option); ASSERT (Packet->Size > Packet->Length + 8); // @@ -2049,8 +2024,6 @@ Dhcp6SendConfirmMsg ( return Dhcp6EnqueueRetry (Instance, Packet, Elapsed, NULL); } - - /** Handle with the Dhcp6 reply message. @@ -2065,13 +2038,13 @@ Dhcp6SendConfirmMsg ( **/ EFI_STATUS Dhcp6HandleReplyMsg ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_PACKET *Packet + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_PACKET *Packet ) { - EFI_STATUS Status; - UINT8 *Option; - UINT16 StsCode; + EFI_STATUS Status; + UINT8 *Option; + UINT16 StsCode; ASSERT (Instance->Config != NULL); ASSERT (Instance->IaCb.Ia != NULL); @@ -2096,7 +2069,7 @@ Dhcp6HandleReplyMsg ( Dhcp6OptRapidCommit ); - if ((Option != NULL && !Instance->Config->RapidCommit) || (Option == NULL && Instance->Config->RapidCommit)) { + if (((Option != NULL) && !Instance->Config->RapidCommit) || ((Option == NULL) && Instance->Config->RapidCommit)) { return EFI_DEVICE_ERROR; } @@ -2104,11 +2077,11 @@ Dhcp6HandleReplyMsg ( // As to a valid reply packet in response to a request/renew/rebind packet, // ignore the packet if not contains the Ia option // - if (Instance->IaCb.Ia->State == Dhcp6Requesting || - Instance->IaCb.Ia->State == Dhcp6Renewing || - Instance->IaCb.Ia->State == Dhcp6Rebinding - ) { - + if ((Instance->IaCb.Ia->State == Dhcp6Requesting) || + (Instance->IaCb.Ia->State == Dhcp6Renewing) || + (Instance->IaCb.Ia->State == Dhcp6Rebinding) + ) + { Option = Dhcp6SeekIaOption ( Packet->Dhcp6.Option, Packet->Length, @@ -2133,10 +2106,9 @@ Dhcp6HandleReplyMsg ( // the client considers the decline/release event completed regardless of the // status code. // - if (Instance->IaCb.Ia->State == Dhcp6Declining || Instance->IaCb.Ia->State == Dhcp6Releasing) { - + if ((Instance->IaCb.Ia->State == Dhcp6Declining) || (Instance->IaCb.Ia->State == Dhcp6Releasing)) { if (Instance->IaCb.Ia->IaAddressCount != 0) { - Instance->IaCb.Ia->State = Dhcp6Bound; + Instance->IaCb.Ia->State = Dhcp6Bound; } else { ASSERT (Instance->IaCb.Ia->ReplyPacket); FreePool (Instance->IaCb.Ia->ReplyPacket); @@ -2159,7 +2131,7 @@ Dhcp6HandleReplyMsg ( // // Reset start time for next exchange. // - Instance->StartTime = 0; + Instance->StartTime = 0; Status = EFI_SUCCESS; goto ON_EXIT; @@ -2186,7 +2158,7 @@ Dhcp6HandleReplyMsg ( // // Reset start time for next exchange. // - Instance->StartTime = 0; + Instance->StartTime = 0; // // Set bound state and store the reply packet. @@ -2209,7 +2181,7 @@ Dhcp6HandleReplyMsg ( // // For sync, set the success flag out of polling in start/renewrebind. // - Instance->UdpSts = EFI_SUCCESS; + Instance->UdpSts = EFI_SUCCESS; // // Maybe this is a new round DHCP process due to some reason, such as NotOnLink @@ -2235,70 +2207,72 @@ Dhcp6HandleReplyMsg ( } goto ON_EXIT; - } else if (Option != NULL) { // // Any error status code option is found. // - StsCode = NTOHS (ReadUnaligned16 ((UINT16 *) (Option + 4))); + StsCode = NTOHS (ReadUnaligned16 ((UINT16 *)(Option + 4))); switch (StsCode) { - case Dhcp6StsUnspecFail: - // - // It indicates the server is unable to process the message due to an - // unspecified failure condition, so just retry if possible. - // - break; - - case Dhcp6StsUseMulticast: - // - // It indicates the server receives a message via unicast from a client - // to which the server has not sent a unicast option, so retry it by - // multi-cast address. - // - if (Instance->Unicast != NULL) { - FreePool (Instance->Unicast); - Instance->Unicast = NULL; - } - break; - - case Dhcp6StsNotOnLink: - if (Instance->IaCb.Ia->State == Dhcp6Confirming) { + case Dhcp6StsUnspecFail: // - // Before initiate new round DHCP, cache the current IA. + // It indicates the server is unable to process the message due to an + // unspecified failure condition, so just retry if possible. // - Status = Dhcp6CacheIa (Instance); - if (EFI_ERROR (Status)) { - return Status; - } + break; + case Dhcp6StsUseMulticast: // - // Restart S.A.R.R process to acquire new address. + // It indicates the server receives a message via unicast from a client + // to which the server has not sent a unicast option, so retry it by + // multi-cast address. // - Status = Dhcp6InitSolicitMsg (Instance); - if (EFI_ERROR (Status)) { - return Status; + if (Instance->Unicast != NULL) { + FreePool (Instance->Unicast); + Instance->Unicast = NULL; } - } - break; - case Dhcp6StsNoBinding: - if (Instance->IaCb.Ia->State == Dhcp6Renewing || Instance->IaCb.Ia->State == Dhcp6Rebinding) { - // - // Refer to RFC3315 Chapter 18.1.8, for each IA in the original Renew or Rebind message, the client - // sends a Request message if the IA contained a Status Code option with the NoBinding status. - // - Status = Dhcp6SendRequestMsg(Instance); - if (EFI_ERROR (Status)) { - return Status; + break; + + case Dhcp6StsNotOnLink: + if (Instance->IaCb.Ia->State == Dhcp6Confirming) { + // + // Before initiate new round DHCP, cache the current IA. + // + Status = Dhcp6CacheIa (Instance); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Restart S.A.R.R process to acquire new address. + // + Status = Dhcp6InitSolicitMsg (Instance); + if (EFI_ERROR (Status)) { + return Status; + } } - } - break; - default: - // - // The other status code, just restart solicitation. - // - break; + break; + + case Dhcp6StsNoBinding: + if ((Instance->IaCb.Ia->State == Dhcp6Renewing) || (Instance->IaCb.Ia->State == Dhcp6Rebinding)) { + // + // Refer to RFC3315 Chapter 18.1.8, for each IA in the original Renew or Rebind message, the client + // sends a Request message if the IA contained a Status Code option with the NoBinding status. + // + Status = Dhcp6SendRequestMsg (Instance); + if (EFI_ERROR (Status)) { + return Status; + } + } + + break; + + default: + // + // The other status code, just restart solicitation. + // + break; } } @@ -2306,7 +2280,7 @@ Dhcp6HandleReplyMsg ( ON_EXIT: - if (!EFI_ERROR(Status)) { + if (!EFI_ERROR (Status)) { Status = Dhcp6DequeueRetry ( Instance, Packet->Dhcp6.Header.TransactionId, @@ -2317,7 +2291,6 @@ ON_EXIT: return Status; } - /** Select the appointed Dhcp6 advertisement message. @@ -2331,12 +2304,12 @@ ON_EXIT: **/ EFI_STATUS Dhcp6SelectAdvertiseMsg ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_PACKET *AdSelect + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_PACKET *AdSelect ) { - EFI_STATUS Status; - UINT8 *Option; + EFI_STATUS Status; + UINT8 *Option; ASSERT (AdSelect != NULL); @@ -2361,7 +2334,7 @@ Dhcp6SelectAdvertiseMsg ( FALSE ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } @@ -2369,21 +2342,20 @@ Dhcp6SelectAdvertiseMsg ( // Check whether there is server unicast option in the selected advertise // packet, and update it. // - Option = Dhcp6SeekOption( + Option = Dhcp6SeekOption ( AdSelect->Dhcp6.Option, AdSelect->Length - 4, Dhcp6OptServerUnicast ); if (Option != NULL) { - - Instance->Unicast = AllocateZeroPool (sizeof(EFI_IPv6_ADDRESS)); + Instance->Unicast = AllocateZeroPool (sizeof (EFI_IPv6_ADDRESS)); if (Instance->Unicast == NULL) { return EFI_OUT_OF_RESOURCES; } - CopyMem (Instance->Unicast, Option + 4, sizeof(EFI_IPv6_ADDRESS)); + CopyMem (Instance->Unicast, Option + 4, sizeof (EFI_IPv6_ADDRESS)); } // @@ -2401,7 +2373,6 @@ Dhcp6SelectAdvertiseMsg ( return Dhcp6SendRequestMsg (Instance); } - /** Handle with the Dhcp6 advertisement message. @@ -2416,16 +2387,16 @@ Dhcp6SelectAdvertiseMsg ( **/ EFI_STATUS Dhcp6HandleAdvertiseMsg ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_PACKET *Packet + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_PACKET *Packet ) { - EFI_STATUS Status; - UINT8 *Option; - BOOLEAN Timeout; + EFI_STATUS Status; + UINT8 *Option; + BOOLEAN Timeout; - ASSERT(Instance->Config); - ASSERT(Instance->IaCb.Ia); + ASSERT (Instance->Config); + ASSERT (Instance->IaCb.Ia); Timeout = FALSE; @@ -2435,14 +2406,13 @@ Dhcp6HandleAdvertiseMsg ( // this reply message. Or else, process the advertise messages as normal. // See details in the section-17.1.4 of rfc-3315. // - Option = Dhcp6SeekOption( + Option = Dhcp6SeekOption ( Packet->Dhcp6.Option, Packet->Length - 4, Dhcp6OptRapidCommit ); - if (Option != NULL && Instance->Config->RapidCommit && Packet->Dhcp6.Header.MessageType == Dhcp6MsgReply) { - + if ((Option != NULL) && Instance->Config->RapidCommit && (Packet->Dhcp6.Header.MessageType == Dhcp6MsgReply)) { return Dhcp6HandleReplyMsg (Instance, Packet); } @@ -2490,12 +2460,11 @@ Dhcp6HandleAdvertiseMsg ( CopyMem (Instance->AdSelect, Packet, Packet->Size); Instance->AdPref = 0xff; - } else if (Status == EFI_NOT_READY) { // // Not_ready means user wants to continue to receive more advertise packets. // - if (Instance->AdPref == 0xff && Instance->AdSelect == NULL) { + if ((Instance->AdPref == 0xff) && (Instance->AdSelect == NULL)) { // // It's a tricky point. The timer routine set adpref as 0xff if the first // rt timeout and no advertisement received, which means any advertisement @@ -2508,13 +2477,13 @@ Dhcp6HandleAdvertiseMsg ( // Check whether the current packet has a 255 preference option or not. // Take non-preference option as 0 value. // - Option = Dhcp6SeekOption( + Option = Dhcp6SeekOption ( Packet->Dhcp6.Option, Packet->Length - 4, Dhcp6OptPreference ); - if (Instance->AdSelect == NULL || (Option != NULL && *(Option + 4) > Instance->AdPref)) { + if ((Instance->AdSelect == NULL) || ((Option != NULL) && (*(Option + 4) > Instance->AdPref))) { // // No advertisements received before or preference is more than other // advertisements received before. Then store the new packet and the @@ -2541,7 +2510,6 @@ Dhcp6HandleAdvertiseMsg ( // preference is less than other advertisements received before. // Leave the packet alone. } - } else { // // Other error status means termination. @@ -2554,14 +2522,13 @@ Dhcp6HandleAdvertiseMsg ( // RT has elapsed, or get a highest preference 255 advertise. // See details in the section-17.1.2 of rfc-3315. // - if (Instance->AdPref == 0xff || Timeout) { + if ((Instance->AdPref == 0xff) || Timeout) { Status = Dhcp6SelectAdvertiseMsg (Instance, Instance->AdSelect); } return Status; } - /** The Dhcp6 stateful exchange process routine. @@ -2571,14 +2538,14 @@ Dhcp6HandleAdvertiseMsg ( **/ VOID Dhcp6HandleStateful ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_PACKET *Packet + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_PACKET *Packet ) { - EFI_STATUS Status; - EFI_DHCP6_DUID *ClientId; - DHCP6_SERVICE *Service; - UINT8 *Option; + EFI_STATUS Status; + EFI_DHCP6_DUID *ClientId; + DHCP6_SERVICE *Service; + UINT8 *Option; Service = Instance->Service; ClientId = Service->ClientId; @@ -2595,27 +2562,27 @@ Dhcp6HandleStateful ( // // Discard the packet if not advertisement or reply packet. // - if (Packet->Dhcp6.Header.MessageType != Dhcp6MsgAdvertise && Packet->Dhcp6.Header.MessageType != Dhcp6MsgReply) { + if ((Packet->Dhcp6.Header.MessageType != Dhcp6MsgAdvertise) && (Packet->Dhcp6.Header.MessageType != Dhcp6MsgReply)) { goto ON_CONTINUE; } // // Check whether include client Id or not. // - Option = Dhcp6SeekOption( + Option = Dhcp6SeekOption ( Packet->Dhcp6.Option, Packet->Length - 4, Dhcp6OptClientId ); - if (Option == NULL || CompareMem (Option + 4, ClientId->Duid, ClientId->Length) != 0) { + if ((Option == NULL) || (CompareMem (Option + 4, ClientId->Duid, ClientId->Length) != 0)) { goto ON_CONTINUE; } // // Check whether include server Id or not. // - Option = Dhcp6SeekOption( + Option = Dhcp6SeekOption ( Packet->Dhcp6.Option, Packet->Length - 4, Dhcp6OptServerId @@ -2626,35 +2593,36 @@ Dhcp6HandleStateful ( } switch (Instance->IaCb.Ia->State) { - case Dhcp6Selecting: - // - // Handle the advertisement message when in the Dhcp6Selecting state. - // Do not need check return status, if failed, just continue to the next. - // - Dhcp6HandleAdvertiseMsg (Instance, Packet); - break; - - case Dhcp6Requesting: - case Dhcp6Confirming: - case Dhcp6Renewing: - case Dhcp6Rebinding: - case Dhcp6Releasing: - case Dhcp6Declining: - // - // Handle the reply message when in the Dhcp6Requesting, Dhcp6Renewing - // Dhcp6Rebinding, Dhcp6Releasing and Dhcp6Declining state. - // If failed here, it should reset the current session. - // - Status = Dhcp6HandleReplyMsg (Instance, Packet); - if (EFI_ERROR (Status)) { - goto ON_EXIT; - } - break; - default: - // - // Other state has not supported yet. - // - break; + case Dhcp6Selecting: + // + // Handle the advertisement message when in the Dhcp6Selecting state. + // Do not need check return status, if failed, just continue to the next. + // + Dhcp6HandleAdvertiseMsg (Instance, Packet); + break; + + case Dhcp6Requesting: + case Dhcp6Confirming: + case Dhcp6Renewing: + case Dhcp6Rebinding: + case Dhcp6Releasing: + case Dhcp6Declining: + // + // Handle the reply message when in the Dhcp6Requesting, Dhcp6Renewing + // Dhcp6Rebinding, Dhcp6Releasing and Dhcp6Declining state. + // If failed here, it should reset the current session. + // + Status = Dhcp6HandleReplyMsg (Instance, Packet); + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } + + break; + default: + // + // Other state has not supported yet. + // + break; } ON_CONTINUE: @@ -2673,7 +2641,6 @@ ON_EXIT: } } - /** The Dhcp6 stateless exchange process routine. @@ -2683,15 +2650,15 @@ ON_EXIT: **/ VOID Dhcp6HandleStateless ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_PACKET *Packet + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_PACKET *Packet ) { - EFI_STATUS Status; - DHCP6_SERVICE *Service; - DHCP6_INF_CB *InfCb; - UINT8 *Option; - BOOLEAN IsMatched; + EFI_STATUS Status; + DHCP6_SERVICE *Service; + DHCP6_INF_CB *InfCb; + UINT8 *Option; + BOOLEAN IsMatched; Service = Instance->Service; Status = EFI_SUCCESS; @@ -2776,7 +2743,6 @@ ON_EXIT: } } - /** The receive callback function for Dhcp6 exchange process. @@ -2789,37 +2755,37 @@ ON_EXIT: VOID EFIAPI Dhcp6ReceivePacket ( - IN NET_BUF *Udp6Wrap, - IN UDP_END_POINT *EndPoint, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *Udp6Wrap, + IN UDP_END_POINT *EndPoint, + IN EFI_STATUS IoStatus, + IN VOID *Context ) { - EFI_DHCP6_HEADER *Head; - EFI_DHCP6_PACKET *Packet; - DHCP6_SERVICE *Service; - DHCP6_INSTANCE *Instance; - DHCP6_TX_CB *TxCb; - UINT32 Size; - BOOLEAN IsDispatched; - BOOLEAN IsStateless; - LIST_ENTRY *Entry1; - LIST_ENTRY *Next1; - LIST_ENTRY *Entry2; - LIST_ENTRY *Next2; - EFI_STATUS Status; + EFI_DHCP6_HEADER *Head; + EFI_DHCP6_PACKET *Packet; + DHCP6_SERVICE *Service; + DHCP6_INSTANCE *Instance; + DHCP6_TX_CB *TxCb; + UINT32 Size; + BOOLEAN IsDispatched; + BOOLEAN IsStateless; + LIST_ENTRY *Entry1; + LIST_ENTRY *Next1; + LIST_ENTRY *Entry2; + LIST_ENTRY *Next2; + EFI_STATUS Status; ASSERT (Udp6Wrap != NULL); ASSERT (Context != NULL); - Service = (DHCP6_SERVICE *) Context; + Service = (DHCP6_SERVICE *)Context; Instance = NULL; Packet = NULL; IsDispatched = FALSE; IsStateless = FALSE; if (EFI_ERROR (IoStatus)) { - return ; + return; } if (Udp6Wrap->TotalSize < sizeof (EFI_DHCP6_HEADER)) { @@ -2830,7 +2796,7 @@ Dhcp6ReceivePacket ( // Copy the net buffer received from upd6 to a Dhcp6 packet. // Size = sizeof (EFI_DHCP6_PACKET) + Udp6Wrap->TotalSize; - Packet = (EFI_DHCP6_PACKET *) AllocateZeroPool (Size); + Packet = (EFI_DHCP6_PACKET *)AllocateZeroPool (Size); if (Packet == NULL) { goto ON_CONTINUE; @@ -2838,7 +2804,7 @@ Dhcp6ReceivePacket ( Packet->Size = Size; Head = &Packet->Dhcp6.Header; - Packet->Length = NetbufCopy (Udp6Wrap, 0, Udp6Wrap->TotalSize, (UINT8 *) Head); + Packet->Length = NetbufCopy (Udp6Wrap, 0, Udp6Wrap->TotalSize, (UINT8 *)Head); if (Packet->Length == 0) { goto ON_CONTINUE; @@ -2848,11 +2814,9 @@ Dhcp6ReceivePacket ( // Dispatch packet to right instance by transaction id. // NET_LIST_FOR_EACH_SAFE (Entry1, Next1, &Service->Child) { - Instance = NET_LIST_USER_STRUCT (Entry1, DHCP6_INSTANCE, Link); NET_LIST_FOR_EACH_SAFE (Entry2, Next2, &Instance->TxList) { - TxCb = NET_LIST_USER_STRUCT (Entry2, DHCP6_TX_CB, Link); if (Packet->Dhcp6.Header.TransactionId == TxCb->Xid) { @@ -2863,7 +2827,8 @@ Dhcp6ReceivePacket ( if (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgInfoRequest) { IsStateless = TRUE; } - IsDispatched = TRUE; + + IsDispatched = TRUE; break; } } @@ -2893,11 +2858,11 @@ ON_CONTINUE: if (!IsDispatched) { Status = UdpIoRecvDatagram ( - Service->UdpIo, - Dhcp6ReceivePacket, - Service, - 0 - ); + Service->UdpIo, + Dhcp6ReceivePacket, + Service, + 0 + ); if (EFI_ERROR (Status)) { NET_LIST_FOR_EACH_SAFE (Entry1, Next1, &Service->Child) { Instance = NET_LIST_USER_STRUCT (Entry1, DHCP6_INSTANCE, Link); @@ -2929,7 +2894,7 @@ ON_CONTINUE: **/ BOOLEAN Dhcp6LinkMovDetect ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ) { UINT32 InterruptStatus; @@ -2938,7 +2903,7 @@ Dhcp6LinkMovDetect ( EFI_SIMPLE_NETWORK_PROTOCOL *Snp; ASSERT (Instance != NULL); - Snp = Instance->Service->Snp; + Snp = Instance->Service->Snp; MediaPresent = Instance->MediaPresent; // @@ -2963,10 +2928,10 @@ Dhcp6LinkMovDetect ( if (!MediaPresent && Instance->MediaPresent) { return TRUE; } + return FALSE; } - /** The timer routine of the Dhcp6 instance for each second. @@ -2977,28 +2942,27 @@ Dhcp6LinkMovDetect ( VOID EFIAPI Dhcp6OnTimerTick ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - DHCP6_INSTANCE *Instance; - DHCP6_TX_CB *TxCb; - DHCP6_IA_CB *IaCb; - UINT32 LossTime; - EFI_STATUS Status; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + DHCP6_INSTANCE *Instance; + DHCP6_TX_CB *TxCb; + DHCP6_IA_CB *IaCb; + UINT32 LossTime; + EFI_STATUS Status; ASSERT (Context != NULL); - Instance = (DHCP6_INSTANCE *) Context; + Instance = (DHCP6_INSTANCE *)Context; // // 1. Loop the tx list, count live time of every tx packet to check whether // need re-transmit or not. // NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &Instance->TxList) { - TxCb = NET_LIST_USER_STRUCT (Entry, DHCP6_TX_CB, Link); TxCb->TickTime++; @@ -3007,7 +2971,7 @@ Dhcp6OnTimerTick ( // // Handle the first rt in the transmission of solicit specially. // - if ((TxCb->RetryCnt == 0 || TxCb->SolicitRetry) && TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgSolicit) { + if (((TxCb->RetryCnt == 0) || TxCb->SolicitRetry) && (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgSolicit)) { if (Instance->AdSelect == NULL) { // // Set adpref as 0xff here to indicate select any advertisement @@ -3024,9 +2988,11 @@ Dhcp6OnTimerTick ( } else if (EFI_ERROR (Status)) { TxCb->RetryCnt++; } + return; } } + // // Increase the retry count for the packet and add up the total loss time. // @@ -3036,7 +3002,7 @@ Dhcp6OnTimerTick ( // // Check whether overflow the max retry count limit for this packet // - if (TxCb->RetryCtl.Mrc != 0 && TxCb->RetryCtl.Mrc < TxCb->RetryCnt) { + if ((TxCb->RetryCtl.Mrc != 0) && (TxCb->RetryCtl.Mrc < TxCb->RetryCnt)) { Status = EFI_NO_RESPONSE; goto ON_CLOSE; } @@ -3044,7 +3010,7 @@ Dhcp6OnTimerTick ( // // Check whether overflow the max retry duration for this packet // - if (TxCb->RetryCtl.Mrd != 0 && TxCb->RetryCtl.Mrd <= TxCb->RetryLos) { + if ((TxCb->RetryCtl.Mrd != 0) && (TxCb->RetryCtl.Mrd <= TxCb->RetryLos)) { Status = EFI_NO_RESPONSE; goto ON_CLOSE; } @@ -3061,7 +3027,7 @@ Dhcp6OnTimerTick ( TRUE ); - if (TxCb->RetryCtl.Mrt != 0 && TxCb->RetryCtl.Mrt < TxCb->RetryExp) { + if ((TxCb->RetryCtl.Mrt != 0) && (TxCb->RetryCtl.Mrt < TxCb->RetryExp)) { TxCb->RetryExp = Dhcp6CalculateExpireTime ( TxCb->RetryCtl.Mrt, TRUE, @@ -3074,7 +3040,7 @@ Dhcp6OnTimerTick ( // duration time. // LossTime = TxCb->RetryLos + TxCb->RetryExp; - if (TxCb->RetryCtl.Mrd != 0 && TxCb->RetryCtl.Mrd < LossTime) { + if ((TxCb->RetryCtl.Mrd != 0) && (TxCb->RetryCtl.Mrd < LossTime)) { TxCb->RetryExp = TxCb->RetryCtl.Mrd - TxCb->RetryLos; } @@ -3100,22 +3066,19 @@ Dhcp6OnTimerTick ( // IaCb = &Instance->IaCb; - if (Instance->Config == NULL || IaCb->Ia == NULL) { + if ((Instance->Config == NULL) || (IaCb->Ia == NULL)) { return; } - if (IaCb->Ia->State == Dhcp6Bound || IaCb->Ia->State == Dhcp6Renewing || IaCb->Ia->State == Dhcp6Rebinding) { - + if ((IaCb->Ia->State == Dhcp6Bound) || (IaCb->Ia->State == Dhcp6Renewing) || (IaCb->Ia->State == Dhcp6Rebinding)) { IaCb->LeaseTime++; - if (IaCb->LeaseTime > IaCb->T2 && IaCb->Ia->State == Dhcp6Bound) { + if ((IaCb->LeaseTime > IaCb->T2) && (IaCb->Ia->State == Dhcp6Bound)) { // // Exceed t2, send rebind packet to extend the Ia lease. // Dhcp6SendRenewRebindMsg (Instance, TRUE); - - } else if (IaCb->LeaseTime > IaCb->T1 && IaCb->Ia->State == Dhcp6Bound) { - + } else if ((IaCb->LeaseTime > IaCb->T1) && (IaCb->Ia->State == Dhcp6Bound)) { // // Exceed t1, send renew packet to extend the Ia lease. // @@ -3133,28 +3096,32 @@ Dhcp6OnTimerTick ( return; - ON_CLOSE: +ON_CLOSE: if (Dhcp6IsValidTxCb (Instance, TxCb) && - TxCb->TxPacket != NULL && - (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgInfoRequest || - TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgRenew || - TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgConfirm) - ) { + (TxCb->TxPacket != NULL) && + ((TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgInfoRequest) || + (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgRenew) || + (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgConfirm)) + ) + { // // The failure of renew/Confirm will still switch to the bound state. // if ((TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgRenew) || - (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgConfirm)) { + (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgConfirm)) + { ASSERT (Instance->IaCb.Ia); Instance->IaCb.Ia->State = Dhcp6Bound; } + // // The failure of info-request will return no response. // if (TxCb->TxPacket->Dhcp6.Header.MessageType == Dhcp6MsgInfoRequest) { Instance->UdpSts = EFI_NO_RESPONSE; } + Dhcp6DequeueRetry ( Instance, TxCb->Xid, diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Io.h b/NetworkPkg/Dhcp6Dxe/Dhcp6Io.h index 554f0f5e5d..051a652f2b 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Io.h +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Io.h @@ -10,7 +10,6 @@ #ifndef __EFI_DHCP6_IO_H__ #define __EFI_DHCP6_IO_H__ - /** Clean up the specific nodes in the retry list. @@ -20,8 +19,8 @@ **/ VOID Dhcp6CleanupRetry ( - IN DHCP6_INSTANCE *Instance, - IN UINT32 Scope + IN DHCP6_INSTANCE *Instance, + IN UINT32 Scope ); /** @@ -33,8 +32,8 @@ Dhcp6CleanupRetry ( **/ VOID Dhcp6CleanupSession ( - IN OUT DHCP6_INSTANCE *Instance, - IN EFI_STATUS Status + IN OUT DHCP6_INSTANCE *Instance, + IN EFI_STATUS Status ); /** @@ -49,7 +48,7 @@ Dhcp6CleanupSession ( **/ EFI_STATUS Dhcp6SendSolicitMsg ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ); /** @@ -65,7 +64,7 @@ Dhcp6SendSolicitMsg ( **/ EFI_STATUS Dhcp6SendRequestMsg ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ); /** @@ -83,8 +82,8 @@ Dhcp6SendRequestMsg ( **/ EFI_STATUS Dhcp6SendRenewRebindMsg ( - IN DHCP6_INSTANCE *Instance, - IN BOOLEAN RebindRequest + IN DHCP6_INSTANCE *Instance, + IN BOOLEAN RebindRequest ); /** @@ -101,8 +100,8 @@ Dhcp6SendRenewRebindMsg ( **/ EFI_STATUS Dhcp6SendDeclineMsg ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_IA *DecIa + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_IA *DecIa ); /** @@ -119,8 +118,8 @@ Dhcp6SendDeclineMsg ( **/ EFI_STATUS Dhcp6SendReleaseMsg ( - IN DHCP6_INSTANCE *Instance, - IN EFI_DHCP6_IA *RelIa + IN DHCP6_INSTANCE *Instance, + IN EFI_DHCP6_IA *RelIa ); /** @@ -198,10 +197,10 @@ Dhcp6SendInfoRequestMsg ( VOID EFIAPI Dhcp6ReceivePacket ( - IN NET_BUF *Udp6Wrap, - IN UDP_END_POINT *EndPoint, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *Udp6Wrap, + IN UDP_END_POINT *EndPoint, + IN EFI_STATUS IoStatus, + IN VOID *Context ); /** @@ -214,8 +213,8 @@ Dhcp6ReceivePacket ( VOID EFIAPI Dhcp6OnTimerTick ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); #endif diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c b/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c index d249a1cca7..e6368b5b1c 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c @@ -10,7 +10,6 @@ #include "Dhcp6Impl.h" - /** Generate client Duid in the format of Duid-llt. @@ -22,21 +21,20 @@ **/ EFI_DHCP6_DUID * Dhcp6GenerateClientId ( - IN EFI_SIMPLE_NETWORK_MODE *Mode + IN EFI_SIMPLE_NETWORK_MODE *Mode ) { - EFI_STATUS Status; - EFI_DHCP6_DUID *Duid; - EFI_TIME Time; - UINT32 Stamp; - EFI_GUID Uuid; - + EFI_STATUS Status; + EFI_DHCP6_DUID *Duid; + EFI_TIME Time; + UINT32 Stamp; + EFI_GUID Uuid; // // Attempt to get client Id from variable to keep it constant. // See details in section-9 of rfc-3315. // - GetVariable2 (L"ClientId", &gEfiDhcp6ServiceBindingProtocolGuid, (VOID**)&Duid, NULL); + GetVariable2 (L"ClientId", &gEfiDhcp6ServiceBindingProtocolGuid, (VOID **)&Duid, NULL); if (Duid != NULL) { return Duid; } @@ -84,17 +82,15 @@ Dhcp6GenerateClientId ( // // sizeof (Duid-type + UUID-size) = 18 bytes // - Duid->Length = (UINT16) (18); + Duid->Length = (UINT16)(18); // // Set the Duid-type and copy UUID. // - WriteUnaligned16 ((UINT16 *) (Duid->Duid), HTONS (Dhcp6DuidTypeUuid)); - - CopyMem (Duid->Duid + 2, &Uuid, sizeof(EFI_GUID)); + WriteUnaligned16 ((UINT16 *)(Duid->Duid), HTONS (Dhcp6DuidTypeUuid)); + CopyMem (Duid->Duid + 2, &Uuid, sizeof (EFI_GUID)); } else { - // // // The format of DUID-LLT: @@ -116,11 +112,11 @@ Dhcp6GenerateClientId ( // gRT->GetTime (&Time, NULL); Stamp = (UINT32) - ( - ((((UINT32)(Time.Year - 2000) * 360 + (Time.Month - 1) * 30 + (Time.Day - 1)) * 24 + Time.Hour) * 60 + Time.Minute) * - 60 + - Time.Second - ); + ( + ((((UINT32)(Time.Year - 2000) * 360 + (Time.Month - 1) * 30 + (Time.Day - 1)) * 24 + Time.Hour) * 60 + Time.Minute) * + 60 + + Time.Second + ); // // sizeof (option-len + Duid-type + hardware-type + time) = 10 bytes @@ -133,14 +129,14 @@ Dhcp6GenerateClientId ( // // sizeof (Duid-type + hardware-type + time) = 8 bytes // - Duid->Length = (UINT16) (Mode->HwAddressSize + 8); + Duid->Length = (UINT16)(Mode->HwAddressSize + 8); // // Set the Duid-type, hardware-type, time and copy the hardware address. // - WriteUnaligned16 ((UINT16 *) ((UINT8 *) Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid)), HTONS (Dhcp6DuidTypeLlt)); - WriteUnaligned16 ((UINT16 *) ((UINT8 *) Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid) + 2), HTONS (NET_IFTYPE_ETHERNET)); - WriteUnaligned32 ((UINT32 *) ((UINT8 *) Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid) + 4), HTONL (Stamp)); + WriteUnaligned16 ((UINT16 *)((UINT8 *)Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid)), HTONS (Dhcp6DuidTypeLlt)); + WriteUnaligned16 ((UINT16 *)((UINT8 *)Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid) + 2), HTONS (NET_IFTYPE_ETHERNET)); + WriteUnaligned32 ((UINT32 *)((UINT8 *)Duid + OFFSET_OF (EFI_DHCP6_DUID, Duid) + 4), HTONL (Stamp)); CopyMem (Duid->Duid + 8, &Mode->CurrentAddress, Mode->HwAddressSize); } @@ -150,7 +146,7 @@ Dhcp6GenerateClientId ( &gEfiDhcp6ServiceBindingProtocolGuid, (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS), Duid->Length + 2, - (VOID *) Duid + (VOID *)Duid ); if (EFI_ERROR (Status)) { FreePool (Duid); @@ -160,7 +156,6 @@ Dhcp6GenerateClientId ( return Duid; } - /** Copy the Dhcp6 configure data. @@ -173,13 +168,13 @@ Dhcp6GenerateClientId ( **/ EFI_STATUS Dhcp6CopyConfigData ( - IN EFI_DHCP6_CONFIG_DATA *DstCfg, - IN EFI_DHCP6_CONFIG_DATA *SorCfg + IN EFI_DHCP6_CONFIG_DATA *DstCfg, + IN EFI_DHCP6_CONFIG_DATA *SorCfg ) { - UINTN Index; - UINTN OptionListSize; - UINTN OptionSize; + UINTN Index; + UINTN OptionListSize; + UINTN OptionSize; CopyMem (DstCfg, SorCfg, sizeof (EFI_DHCP6_CONFIG_DATA)); @@ -187,7 +182,6 @@ Dhcp6CopyConfigData ( // Allocate another buffer for solicitretransmission, and copy it. // if (SorCfg->SolicitRetransmission != NULL) { - DstCfg->SolicitRetransmission = AllocateZeroPool (sizeof (EFI_DHCP6_RETRANSMISSION)); if (DstCfg->SolicitRetransmission == NULL) { @@ -204,8 +198,7 @@ Dhcp6CopyConfigData ( ); } - if (SorCfg->OptionList != NULL && SorCfg->OptionCount != 0) { - + if ((SorCfg->OptionList != NULL) && (SorCfg->OptionCount != 0)) { OptionListSize = SorCfg->OptionCount * sizeof (EFI_DHCP6_PACKET_OPTION *); DstCfg->OptionList = AllocateZeroPool (OptionListSize); @@ -217,7 +210,6 @@ Dhcp6CopyConfigData ( } for (Index = 0; Index < SorCfg->OptionCount; Index++) { - OptionSize = NTOHS (SorCfg->OptionList[Index]->OpLen) + 4; DstCfg->OptionList[Index] = AllocateZeroPool (OptionSize); @@ -239,7 +231,6 @@ Dhcp6CopyConfigData ( return EFI_SUCCESS; } - /** Clean up the configure data. @@ -248,10 +239,10 @@ Dhcp6CopyConfigData ( **/ VOID Dhcp6CleanupConfigData ( - IN OUT EFI_DHCP6_CONFIG_DATA *CfgData + IN OUT EFI_DHCP6_CONFIG_DATA *CfgData ) { - UINTN Index; + UINTN Index; ASSERT (CfgData != NULL); // @@ -264,6 +255,7 @@ Dhcp6CleanupConfigData ( FreePool (CfgData->OptionList[Index]); } } + FreePool (CfgData->OptionList); } @@ -274,7 +266,6 @@ Dhcp6CleanupConfigData ( ZeroMem (CfgData, sizeof (EFI_DHCP6_CONFIG_DATA)); } - /** Clean up the mode data. @@ -283,7 +274,7 @@ Dhcp6CleanupConfigData ( **/ VOID Dhcp6CleanupModeData ( - IN OUT EFI_DHCP6_MODE_DATA *ModeData + IN OUT EFI_DHCP6_MODE_DATA *ModeData ) { ASSERT (ModeData != NULL); @@ -296,17 +287,16 @@ Dhcp6CleanupModeData ( } if (ModeData->Ia != NULL) { - if (ModeData->Ia->ReplyPacket != NULL) { FreePool (ModeData->Ia->ReplyPacket); } + FreePool (ModeData->Ia); } ZeroMem (ModeData, sizeof (EFI_DHCP6_MODE_DATA)); } - /** Calculate the expire time by the algorithm defined in rfc. @@ -319,15 +309,15 @@ Dhcp6CleanupModeData ( **/ UINT32 Dhcp6CalculateExpireTime ( - IN UINT32 Base, - IN BOOLEAN IsFirstRt, - IN BOOLEAN NeedSigned + IN UINT32 Base, + IN BOOLEAN IsFirstRt, + IN BOOLEAN NeedSigned ) { - EFI_TIME Time; - BOOLEAN Signed; - UINT32 Seed; - UINT32 Expire; + EFI_TIME Time; + BOOLEAN Signed; + UINT32 Seed; + UINT32 Expire; // // Take the 10bits of microsecond in system time as a uniform distribution. @@ -335,8 +325,8 @@ Dhcp6CalculateExpireTime ( // gRT->GetTime (&Time, NULL); Seed = ((Time.Nanosecond >> 10) & DHCP6_10_BIT_MASK); - Signed = (BOOLEAN) ((((Time.Nanosecond >> 9) & 0x01) != 0) ? TRUE : FALSE); - Signed = (BOOLEAN) (NeedSigned ? Signed : FALSE); + Signed = (BOOLEAN)((((Time.Nanosecond >> 9) & 0x01) != 0) ? TRUE : FALSE); + Signed = (BOOLEAN)(NeedSigned ? Signed : FALSE); // // Calculate expire by the following algo: @@ -348,20 +338,13 @@ Dhcp6CalculateExpireTime ( // The (Seed / 0x3ff / 10) is used to a random range (0, 0.1). // if (IsFirstRt && Signed) { - - Expire = Base - (UINT32) (Base * Seed / DHCP6_10_BIT_MASK / 10); - + Expire = Base - (UINT32)(Base * Seed / DHCP6_10_BIT_MASK / 10); } else if (IsFirstRt && !Signed) { - - Expire = Base + (UINT32) (Base * Seed / DHCP6_10_BIT_MASK / 10); - + Expire = Base + (UINT32)(Base * Seed / DHCP6_10_BIT_MASK / 10); } else if (!IsFirstRt && Signed) { - - Expire = 2 * Base - (UINT32) (Base * Seed / DHCP6_10_BIT_MASK / 10); - + Expire = 2 * Base - (UINT32)(Base * Seed / DHCP6_10_BIT_MASK / 10); } else { - - Expire = 2 * Base + (UINT32) (Base * Seed / DHCP6_10_BIT_MASK / 10); + Expire = 2 * Base + (UINT32)(Base * Seed / DHCP6_10_BIT_MASK / 10); } Expire = (Expire != 0) ? Expire : 1; @@ -369,7 +352,6 @@ Dhcp6CalculateExpireTime ( return Expire; } - /** Calculate the lease time by the algorithm defined in rfc. @@ -378,25 +360,25 @@ Dhcp6CalculateExpireTime ( **/ VOID Dhcp6CalculateLeaseTime ( - IN DHCP6_IA_CB *IaCb + IN DHCP6_IA_CB *IaCb ) { - UINT32 MinLt; - UINT32 MaxLt; - UINTN Index; + UINT32 MinLt; + UINT32 MaxLt; + UINTN Index; ASSERT (IaCb->Ia->IaAddressCount > 0); - MinLt = (UINT32) (-1); - MaxLt = 0; + MinLt = (UINT32)(-1); + MaxLt = 0; // // Calculate minlt as min of all valid life time, and maxlt as max of all // valid life time. // for (Index = 0; Index < IaCb->Ia->IaAddressCount; Index++) { - MinLt = MIN (MinLt, IaCb->Ia->IaAddress[Index].ValidLifetime); - MaxLt = MAX (MinLt, IaCb->Ia->IaAddress[Index].ValidLifetime); + MinLt = MIN (MinLt, IaCb->Ia->IaAddress[Index].ValidLifetime); + MaxLt = MAX (MinLt, IaCb->Ia->IaAddress[Index].ValidLifetime); } // @@ -409,7 +391,6 @@ Dhcp6CalculateLeaseTime ( IaCb->LeaseTime = 0; } - /** Check whether the addresses are all included by the configured Ia. @@ -423,31 +404,29 @@ Dhcp6CalculateLeaseTime ( **/ EFI_STATUS Dhcp6CheckAddress ( - IN EFI_DHCP6_IA *Ia, - IN UINT32 AddressCount, - IN EFI_IPv6_ADDRESS *Addresses + IN EFI_DHCP6_IA *Ia, + IN UINT32 AddressCount, + IN EFI_IPv6_ADDRESS *Addresses ) { - UINTN Index1; - UINTN Index2; - BOOLEAN Found; + UINTN Index1; + UINTN Index2; + BOOLEAN Found; // // Check whether the addresses are all included by the configured IA. And it // will return success if address count is zero, which means all addresses. // for (Index1 = 0; Index1 < AddressCount; Index1++) { - Found = FALSE; for (Index2 = 0; Index2 < Ia->IaAddressCount; Index2++) { - if (CompareMem ( &Addresses[Index1], &Ia->IaAddress[Index2], sizeof (EFI_IPv6_ADDRESS) - ) == 0) { - + ) == 0) + { Found = TRUE; break; } @@ -461,7 +440,6 @@ Dhcp6CheckAddress ( return EFI_SUCCESS; } - /** Deprive the addresses from current Ia, and generate another eliminated Ia. @@ -475,16 +453,16 @@ Dhcp6CheckAddress ( **/ EFI_DHCP6_IA * Dhcp6DepriveAddress ( - IN EFI_DHCP6_IA *Ia, - IN UINT32 AddressCount, - IN EFI_IPv6_ADDRESS *Addresses + IN EFI_DHCP6_IA *Ia, + IN UINT32 AddressCount, + IN EFI_IPv6_ADDRESS *Addresses ) { - EFI_DHCP6_IA *IaCopy; - UINTN IaCopySize; - UINTN Index1; - UINTN Index2; - BOOLEAN Found; + EFI_DHCP6_IA *IaCopy; + UINTN IaCopySize; + UINTN Index1; + UINTN Index2; + BOOLEAN Found; if (AddressCount == 0) { // @@ -521,16 +499,15 @@ Dhcp6DepriveAddress ( // Move the addresses from the Ia of instance to the deprived Ia. // for (Index1 = 0; Index1 < AddressCount; Index1++) { - Found = FALSE; for (Index2 = 0; Index2 < Ia->IaAddressCount; Index2++) { - if (CompareMem ( &Addresses[Index1], &Ia->IaAddress[Index2], sizeof (EFI_IPv6_ADDRESS) - ) == 0) { + ) == 0) + { // // Copy the deprived address to the copy of Ia // @@ -549,10 +526,12 @@ Dhcp6DepriveAddress ( (Ia->IaAddressCount - Index2 - 1) * sizeof (EFI_DHCP6_IA_ADDRESS) ); } + Found = TRUE; break; } } + ASSERT (Found == TRUE); } @@ -562,7 +541,6 @@ Dhcp6DepriveAddress ( return IaCopy; } - /** The dummy ext buffer free callback routine. @@ -572,12 +550,11 @@ Dhcp6DepriveAddress ( VOID EFIAPI Dhcp6DummyExtFree ( - IN VOID *Arg + IN VOID *Arg ) { } - /** The callback routine once message transmitted. @@ -590,16 +567,15 @@ Dhcp6DummyExtFree ( VOID EFIAPI Dhcp6OnTransmitted ( - IN NET_BUF *Wrap, - IN UDP_END_POINT *EndPoint, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *Wrap, + IN UDP_END_POINT *EndPoint, + IN EFI_STATUS IoStatus, + IN VOID *Context ) { NetbufFree (Wrap); } - /** Append the option to Buf, and move Buf to the end. @@ -613,10 +589,10 @@ Dhcp6OnTransmitted ( **/ UINT8 * Dhcp6AppendOption ( - IN OUT UINT8 *Buf, - IN UINT16 OptType, - IN UINT16 OptLen, - IN UINT8 *Data + IN OUT UINT8 *Buf, + IN UINT16 OptType, + IN UINT16 OptLen, + IN UINT8 *Data ) { // @@ -633,12 +609,12 @@ Dhcp6AppendOption ( ASSERT (OptLen != 0); - WriteUnaligned16 ((UINT16 *) Buf, OptType); - Buf += 2; - WriteUnaligned16 ((UINT16 *) Buf, OptLen); - Buf += 2; + WriteUnaligned16 ((UINT16 *)Buf, OptType); + Buf += 2; + WriteUnaligned16 ((UINT16 *)Buf, OptLen); + Buf += 2; CopyMem (Buf, Data, NTOHS (OptLen)); - Buf += NTOHS (OptLen); + Buf += NTOHS (OptLen); return Buf; } @@ -655,12 +631,11 @@ Dhcp6AppendOption ( **/ UINT8 * Dhcp6AppendIaAddrOption ( - IN OUT UINT8 *Buf, - IN EFI_DHCP6_IA_ADDRESS *IaAddr, - IN UINT32 MessageType -) + IN OUT UINT8 *Buf, + IN EFI_DHCP6_IA_ADDRESS *IaAddr, + IN UINT32 MessageType + ) { - // The format of the IA Address option is: // // 0 1 2 3 @@ -685,14 +660,14 @@ Dhcp6AppendIaAddrOption ( // // Fill the value of Ia Address option type // - WriteUnaligned16 ((UINT16 *) Buf, HTONS (Dhcp6OptIaAddr)); - Buf += 2; + WriteUnaligned16 ((UINT16 *)Buf, HTONS (Dhcp6OptIaAddr)); + Buf += 2; - WriteUnaligned16 ((UINT16 *) Buf, HTONS (sizeof (EFI_DHCP6_IA_ADDRESS))); - Buf += 2; + WriteUnaligned16 ((UINT16 *)Buf, HTONS (sizeof (EFI_DHCP6_IA_ADDRESS))); + Buf += 2; - CopyMem (Buf, &IaAddr->IpAddress, sizeof(EFI_IPv6_ADDRESS)); - Buf += sizeof(EFI_IPv6_ADDRESS); + CopyMem (Buf, &IaAddr->IpAddress, sizeof (EFI_IPv6_ADDRESS)); + Buf += sizeof (EFI_IPv6_ADDRESS); // // Fill the value of preferred-lifetime and valid-lifetime. @@ -700,19 +675,20 @@ Dhcp6AppendIaAddrOption ( // should set to 0 when initiate a Confirm message. // if (MessageType != Dhcp6MsgConfirm) { - WriteUnaligned32 ((UINT32 *) Buf, HTONL (IaAddr->PreferredLifetime)); + WriteUnaligned32 ((UINT32 *)Buf, HTONL (IaAddr->PreferredLifetime)); } - Buf += 4; + + Buf += 4; if (MessageType != Dhcp6MsgConfirm) { - WriteUnaligned32 ((UINT32 *) Buf, HTONL (IaAddr->ValidLifetime)); + WriteUnaligned32 ((UINT32 *)Buf, HTONL (IaAddr->ValidLifetime)); } - Buf += 4; + + Buf += 4; return Buf; } - /** Append the appointed Ia option to Buf, and move Buf to the end. @@ -727,16 +703,16 @@ Dhcp6AppendIaAddrOption ( **/ UINT8 * Dhcp6AppendIaOption ( - IN OUT UINT8 *Buf, - IN EFI_DHCP6_IA *Ia, - IN UINT32 T1, - IN UINT32 T2, - IN UINT32 MessageType + IN OUT UINT8 *Buf, + IN EFI_DHCP6_IA *Ia, + IN UINT32 T1, + IN UINT32 T2, + IN UINT32 MessageType ) { - UINT8 *AddrOpt; - UINT16 *Len; - UINTN Index; + UINT8 *AddrOpt; + UINT16 *Len; + UINTN Index; // // The format of IA_NA and IA_TA option: @@ -760,43 +736,43 @@ Dhcp6AppendIaOption ( // // Fill the value of Ia option type // - WriteUnaligned16 ((UINT16 *) Buf, HTONS (Ia->Descriptor.Type)); - Buf += 2; + WriteUnaligned16 ((UINT16 *)Buf, HTONS (Ia->Descriptor.Type)); + Buf += 2; // // Fill the len of Ia option later, keep the pointer first // - Len = (UINT16 *) Buf; - Buf += 2; + Len = (UINT16 *)Buf; + Buf += 2; // // Fill the value of iaid // - WriteUnaligned32 ((UINT32 *) Buf, HTONL (Ia->Descriptor.IaId)); - Buf += 4; + WriteUnaligned32 ((UINT32 *)Buf, HTONL (Ia->Descriptor.IaId)); + Buf += 4; // // Fill the value of t1 and t2 if iana, keep it 0xffffffff if no specified. // if (Ia->Descriptor.Type == Dhcp6OptIana) { - WriteUnaligned32 ((UINT32 *) Buf, HTONL ((T1 != 0) ? T1 : 0xffffffff)); - Buf += 4; - WriteUnaligned32 ((UINT32 *) Buf, HTONL ((T2 != 0) ? T2 : 0xffffffff)); - Buf += 4; + WriteUnaligned32 ((UINT32 *)Buf, HTONL ((T1 != 0) ? T1 : 0xffffffff)); + Buf += 4; + WriteUnaligned32 ((UINT32 *)Buf, HTONL ((T2 != 0) ? T2 : 0xffffffff)); + Buf += 4; } // // Fill all the addresses belong to the Ia // for (Index = 0; Index < Ia->IaAddressCount; Index++) { - AddrOpt = (UINT8 *) Ia->IaAddress + Index * sizeof (EFI_DHCP6_IA_ADDRESS); - Buf = Dhcp6AppendIaAddrOption (Buf, (EFI_DHCP6_IA_ADDRESS *) AddrOpt, MessageType); + AddrOpt = (UINT8 *)Ia->IaAddress + Index * sizeof (EFI_DHCP6_IA_ADDRESS); + Buf = Dhcp6AppendIaAddrOption (Buf, (EFI_DHCP6_IA_ADDRESS *)AddrOpt, MessageType); } // // Fill the value of Ia option length // - *Len = HTONS ((UINT16) (Buf - (UINT8 *) Len - 2)); + *Len = HTONS ((UINT16)(Buf - (UINT8 *)Len - 2)); return Buf; } @@ -814,9 +790,9 @@ Dhcp6AppendIaOption ( **/ UINT8 * Dhcp6AppendETOption ( - IN OUT UINT8 *Buf, - IN DHCP6_INSTANCE *Instance, - OUT UINT16 **Elapsed + IN OUT UINT8 *Buf, + IN DHCP6_INSTANCE *Instance, + OUT UINT16 **Elapsed ) { // @@ -833,22 +809,22 @@ Dhcp6AppendETOption ( // // Fill the value of elapsed-time option type. // - WriteUnaligned16 ((UINT16 *) Buf, HTONS (Dhcp6OptElapsedTime)); - Buf += 2; + WriteUnaligned16 ((UINT16 *)Buf, HTONS (Dhcp6OptElapsedTime)); + Buf += 2; // // Fill the len of elapsed-time option, which is fixed. // - WriteUnaligned16 ((UINT16 *) Buf, HTONS(2)); - Buf += 2; + WriteUnaligned16 ((UINT16 *)Buf, HTONS (2)); + Buf += 2; // // Fill in elapsed time value with 0 value for now. The actual value is // filled in later just before the packet is transmitted. // - WriteUnaligned16 ((UINT16 *) Buf, HTONS(0)); - *Elapsed = (UINT16 *) Buf; - Buf += 2; + WriteUnaligned16 ((UINT16 *)Buf, HTONS (0)); + *Elapsed = (UINT16 *)Buf; + Buf += 2; return Buf; } @@ -863,13 +839,13 @@ Dhcp6AppendETOption ( **/ VOID SetElapsedTime ( - IN UINT16 *Elapsed, - IN DHCP6_INSTANCE *Instance + IN UINT16 *Elapsed, + IN DHCP6_INSTANCE *Instance ) { - EFI_TIME Time; - UINT64 CurrentStamp; - UINT64 ElapsedTimeValue; + EFI_TIME Time; + UINT64 CurrentStamp; + UINT64 ElapsedTimeValue; // // Generate a time stamp of the centiseconds from 2000/1/1, assume 30day/month. @@ -879,7 +855,7 @@ SetElapsedTime ( ((((UINT32)(Time.Year - 2000) * 360 + (Time.Month - 1) * 30 + (Time.Day - 1)) * 24 + Time.Hour) * 60 + Time.Minute) * 60 + Time.Second, 100 ) + - DivU64x32( + DivU64x32 ( Time.Nanosecond, 10000000 ); @@ -890,7 +866,7 @@ SetElapsedTime ( // gets 0 elapsed-time. Otherwise, calculate based on StartTime. // if (Instance->StartTime == 0) { - ElapsedTimeValue = 0; + ElapsedTimeValue = 0; Instance->StartTime = CurrentStamp; } else { ElapsedTimeValue = CurrentStamp - Instance->StartTime; @@ -902,9 +878,9 @@ SetElapsedTime ( ElapsedTimeValue = 0xffff; } } - WriteUnaligned16 (Elapsed, HTONS((UINT16) ElapsedTimeValue)); -} + WriteUnaligned16 (Elapsed, HTONS ((UINT16)ElapsedTimeValue)); +} /** Seek the address of the first byte of the option header. @@ -919,15 +895,15 @@ SetElapsedTime ( **/ UINT8 * Dhcp6SeekOption ( - IN UINT8 *Buf, - IN UINT32 SeekLen, - IN UINT16 OptType + IN UINT8 *Buf, + IN UINT32 SeekLen, + IN UINT16 OptType ) { - UINT8 *Cursor; - UINT8 *Option; - UINT16 DataLen; - UINT16 OpCode; + UINT8 *Cursor; + UINT8 *Option; + UINT16 DataLen; + UINT16 OpCode; Option = NULL; Cursor = Buf; @@ -936,19 +912,19 @@ Dhcp6SeekOption ( // The format of Dhcp6 option refers to Dhcp6AppendOption(). // while (Cursor < Buf + SeekLen) { - OpCode = ReadUnaligned16 ((UINT16 *) Cursor); + OpCode = ReadUnaligned16 ((UINT16 *)Cursor); if (OpCode == HTONS (OptType)) { Option = Cursor; break; } - DataLen = NTOHS (ReadUnaligned16 ((UINT16 *) (Cursor + 2))); + + DataLen = NTOHS (ReadUnaligned16 ((UINT16 *)(Cursor + 2))); Cursor += (DataLen + 4); } return Option; } - /** Seek the address of the first byte of the Ia option header. @@ -967,11 +943,11 @@ Dhcp6SeekIaOption ( IN EFI_DHCP6_IA_DESCRIPTOR *IaDesc ) { - UINT8 *Cursor; - UINT8 *Option; - UINT16 DataLen; - UINT16 OpCode; - UINT32 IaId; + UINT8 *Cursor; + UINT8 *Option; + UINT16 DataLen; + UINT16 OpCode; + UINT32 IaId; // // The format of IA_NA and IA_TA option refers to Dhcp6AppendIaOption(). @@ -980,13 +956,14 @@ Dhcp6SeekIaOption ( Cursor = Buf; while (Cursor < Buf + SeekLen) { - OpCode = ReadUnaligned16 ((UINT16 *) Cursor); - IaId = ReadUnaligned32 ((UINT32 *) (Cursor + 4)); - if (OpCode == HTONS (IaDesc->Type) && IaId == HTONL (IaDesc->IaId)) { + OpCode = ReadUnaligned16 ((UINT16 *)Cursor); + IaId = ReadUnaligned32 ((UINT32 *)(Cursor + 4)); + if ((OpCode == HTONS (IaDesc->Type)) && (IaId == HTONL (IaDesc->IaId))) { Option = Cursor; break; } - DataLen = NTOHS (ReadUnaligned16 ((UINT16 *) (Cursor + 2))); + + DataLen = NTOHS (ReadUnaligned16 ((UINT16 *)(Cursor + 2))); Cursor += (DataLen + 4); } @@ -1006,19 +983,20 @@ Dhcp6SeekIaOption ( **/ BOOLEAN Dhcp6AddrIsInCurrentIa ( - IN EFI_DHCP6_IA_ADDRESS *IaAddr, - IN EFI_DHCP6_IA *CurrentIa + IN EFI_DHCP6_IA_ADDRESS *IaAddr, + IN EFI_DHCP6_IA *CurrentIa ) { - UINT32 Index; + UINT32 Index; ASSERT (IaAddr != NULL && CurrentIa != NULL); for (Index = 0; Index < CurrentIa->IaAddressCount; Index++) { - if (EFI_IP6_EQUAL(&IaAddr->IpAddress, &CurrentIa->IaAddress[Index].IpAddress)) { + if (EFI_IP6_EQUAL (&IaAddr->IpAddress, &CurrentIa->IaAddress[Index].IpAddress)) { return TRUE; } } + return FALSE; } @@ -1034,19 +1012,19 @@ Dhcp6AddrIsInCurrentIa ( **/ VOID Dhcp6ParseAddrOption ( - IN EFI_DHCP6_IA *CurrentIa, - IN UINT8 *IaInnerOpt, - IN UINT16 IaInnerLen, - OUT UINT32 *AddrNum, - IN OUT EFI_DHCP6_IA_ADDRESS *AddrBuf + IN EFI_DHCP6_IA *CurrentIa, + IN UINT8 *IaInnerOpt, + IN UINT16 IaInnerLen, + OUT UINT32 *AddrNum, + IN OUT EFI_DHCP6_IA_ADDRESS *AddrBuf ) { - UINT8 *Cursor; - UINT16 DataLen; - UINT16 OpCode; - UINT32 ValidLt; - UINT32 PreferredLt; - EFI_DHCP6_IA_ADDRESS *IaAddr; + UINT8 *Cursor; + UINT16 DataLen; + UINT16 OpCode; + UINT32 ValidLt; + UINT32 PreferredLt; + EFI_DHCP6_IA_ADDRESS *IaAddr; // // The format of the IA Address option: @@ -1086,26 +1064,28 @@ Dhcp6ParseAddrOption ( // Refer to RFC3315 Chapter 18.1.8, we need to update lifetimes for any addresses in the IA option // that the client already has recorded in the IA, and discard the Ia address option with 0 valid time. // - OpCode = ReadUnaligned16 ((UINT16 *) Cursor); - PreferredLt = NTOHL (ReadUnaligned32 ((UINT32 *) (Cursor + 20))); - ValidLt = NTOHL (ReadUnaligned32 ((UINT32 *) (Cursor + 24))); - IaAddr = (EFI_DHCP6_IA_ADDRESS *) (Cursor + 4); - if (OpCode == HTONS (Dhcp6OptIaAddr) && ValidLt >= PreferredLt && - (Dhcp6AddrIsInCurrentIa(IaAddr, CurrentIa) || ValidLt !=0)) { + OpCode = ReadUnaligned16 ((UINT16 *)Cursor); + PreferredLt = NTOHL (ReadUnaligned32 ((UINT32 *)(Cursor + 20))); + ValidLt = NTOHL (ReadUnaligned32 ((UINT32 *)(Cursor + 24))); + IaAddr = (EFI_DHCP6_IA_ADDRESS *)(Cursor + 4); + if ((OpCode == HTONS (Dhcp6OptIaAddr)) && (ValidLt >= PreferredLt) && + (Dhcp6AddrIsInCurrentIa (IaAddr, CurrentIa) || (ValidLt != 0))) + { if (AddrBuf != NULL) { CopyMem (AddrBuf, IaAddr, sizeof (EFI_DHCP6_IA_ADDRESS)); AddrBuf->PreferredLifetime = PreferredLt; AddrBuf->ValidLifetime = ValidLt; - AddrBuf = (EFI_DHCP6_IA_ADDRESS *) ((UINT8 *) AddrBuf + sizeof (EFI_DHCP6_IA_ADDRESS)); + AddrBuf = (EFI_DHCP6_IA_ADDRESS *)((UINT8 *)AddrBuf + sizeof (EFI_DHCP6_IA_ADDRESS)); } + (*AddrNum)++; } - DataLen = NTOHS (ReadUnaligned16 ((UINT16 *) (Cursor + 2))); + + DataLen = NTOHS (ReadUnaligned16 ((UINT16 *)(Cursor + 2))); Cursor += (DataLen + 4); } } - /** Create a control block for the Ia according to the corresponding options. @@ -1123,16 +1103,16 @@ Dhcp6ParseAddrOption ( **/ EFI_STATUS Dhcp6GenerateIaCb ( - IN DHCP6_INSTANCE *Instance, - IN UINT8 *IaInnerOpt, - IN UINT16 IaInnerLen, - IN UINT32 T1, - IN UINT32 T2 + IN DHCP6_INSTANCE *Instance, + IN UINT8 *IaInnerOpt, + IN UINT16 IaInnerLen, + IN UINT32 T1, + IN UINT32 T2 ) { - UINT32 AddrNum; - UINT32 IaSize; - EFI_DHCP6_IA *Ia; + UINT32 AddrNum; + UINT32 IaSize; + EFI_DHCP6_IA *Ia; if (Instance->IaCb.Ia == NULL) { return EFI_DEVICE_ERROR; @@ -1152,7 +1132,7 @@ Dhcp6GenerateIaCb ( // Allocate for new IA. // IaSize = sizeof (EFI_DHCP6_IA) + (AddrNum - 1) * sizeof (EFI_DHCP6_IA_ADDRESS); - Ia = AllocateZeroPool (IaSize); + Ia = AllocateZeroPool (IaSize); if (Ia == NULL) { return EFI_OUT_OF_RESOURCES; @@ -1172,19 +1152,19 @@ Dhcp6GenerateIaCb ( if (Instance->IaCb.Ia->ReplyPacket != NULL) { FreePool (Instance->IaCb.Ia->ReplyPacket); } - FreePool (Instance->IaCb.Ia); + FreePool (Instance->IaCb.Ia); ZeroMem (&Instance->IaCb, sizeof (DHCP6_IA_CB)); // // Update IaCb to use new IA. // - Instance->IaCb.Ia = Ia; + Instance->IaCb.Ia = Ia; // - // Fill in IaCb fields. Such as T1, T2, AllExpireTime and LeaseTime. + // Fill in IaCb fields. Such as T1, T2, AllExpireTime and LeaseTime. // Instance->IaCb.T1 = T1; Instance->IaCb.T2 = T2; @@ -1193,7 +1173,6 @@ Dhcp6GenerateIaCb ( return EFI_SUCCESS; } - /** Cache the current IA configuration information. @@ -1205,11 +1184,11 @@ Dhcp6GenerateIaCb ( **/ EFI_STATUS Dhcp6CacheIa ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ) { - UINTN IaSize; - EFI_DHCP6_IA *Ia; + UINTN IaSize; + EFI_DHCP6_IA *Ia; Ia = Instance->IaCb.Ia; @@ -1223,8 +1202,10 @@ Dhcp6CacheIa ( if (Instance->CacheIa == NULL) { return EFI_OUT_OF_RESOURCES; } + CopyMem (Instance->CacheIa, Ia, IaSize); } + return EFI_SUCCESS; } @@ -1236,16 +1217,16 @@ Dhcp6CacheIa ( **/ VOID Dhcp6AppendCacheIa ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ) { - UINT8 *Ptr; - UINTN Index; - UINTN IaSize; - UINTN NewIaSize; - EFI_DHCP6_IA *Ia; - EFI_DHCP6_IA *NewIa; - EFI_DHCP6_IA *CacheIa; + UINT8 *Ptr; + UINTN Index; + UINTN IaSize; + UINTN NewIaSize; + EFI_DHCP6_IA *Ia; + EFI_DHCP6_IA *NewIa; + EFI_DHCP6_IA *CacheIa; Ia = Instance->IaCb.Ia; CacheIa = Instance->CacheIa; @@ -1267,11 +1248,11 @@ Dhcp6AppendCacheIa ( // Clear old address.ValidLifetime // for (Index = 0; Index < CacheIa->IaAddressCount; Index++) { - CacheIa->IaAddress[Index].ValidLifetime = 0; + CacheIa->IaAddress[Index].ValidLifetime = 0; } NewIa->IaAddressCount += CacheIa->IaAddressCount; - Ptr = (UINT8*)&NewIa->IaAddress[Ia->IaAddressCount]; + Ptr = (UINT8 *)&NewIa->IaAddress[Ia->IaAddressCount]; CopyMem (Ptr, CacheIa->IaAddress, CacheIa->IaAddressCount * sizeof (EFI_DHCP6_IA_ADDRESS)); // @@ -1279,8 +1260,8 @@ Dhcp6AppendCacheIa ( // FreePool (Instance->CacheIa); FreePool (Instance->IaCb.Ia); - Instance->CacheIa = NULL; - Instance->IaCb.Ia = NewIa; + Instance->CacheIa = NULL; + Instance->IaCb.Ia = NewIa; } } @@ -1295,25 +1276,25 @@ Dhcp6AppendCacheIa ( **/ EFI_STATUS Dhcp6GetMappingTimeOut ( - IN EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg, - OUT UINTN *TimeOut + IN EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg, + OUT UINTN *TimeOut ) { - EFI_STATUS Status; - UINTN DataSize; - EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits; + EFI_STATUS Status; + UINTN DataSize; + EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits; - if (Ip6Cfg == NULL || TimeOut == NULL) { + if ((Ip6Cfg == NULL) || (TimeOut == NULL)) { return EFI_INVALID_PARAMETER; } DataSize = sizeof (EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS); - Status = Ip6Cfg->GetData ( - Ip6Cfg, - Ip6ConfigDataTypeDupAddrDetectTransmits, - &DataSize, - &DadXmits - ); + Status = Ip6Cfg->GetData ( + Ip6Cfg, + Ip6ConfigDataTypeDupAddrDetectTransmits, + &DataSize, + &DadXmits + ); if (EFI_ERROR (Status)) { return Status; } diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.h b/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.h index 2f18eb3609..046454ff4a 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.h +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.h @@ -10,9 +10,8 @@ #ifndef __EFI_DHCP6_UTILITY_H__ #define __EFI_DHCP6_UTILITY_H__ - -#define DHCP6_10_BIT_MASK 0x3ff -#define DHCP6_DAD_ADDITIONAL_DELAY 30000000 // 3 seconds +#define DHCP6_10_BIT_MASK 0x3ff +#define DHCP6_DAD_ADDITIONAL_DELAY 30000000 // 3 seconds /** Generate client Duid in the format of Duid-llt. @@ -25,7 +24,7 @@ **/ EFI_DHCP6_DUID * Dhcp6GenerateClientId ( - IN EFI_SIMPLE_NETWORK_MODE *Mode + IN EFI_SIMPLE_NETWORK_MODE *Mode ); /** @@ -40,8 +39,8 @@ Dhcp6GenerateClientId ( **/ EFI_STATUS Dhcp6CopyConfigData ( - IN EFI_DHCP6_CONFIG_DATA *DstCfg, - IN EFI_DHCP6_CONFIG_DATA *SorCfg + IN EFI_DHCP6_CONFIG_DATA *DstCfg, + IN EFI_DHCP6_CONFIG_DATA *SorCfg ); /** @@ -52,7 +51,7 @@ Dhcp6CopyConfigData ( **/ VOID Dhcp6CleanupConfigData ( - IN OUT EFI_DHCP6_CONFIG_DATA *CfgData + IN OUT EFI_DHCP6_CONFIG_DATA *CfgData ); /** @@ -63,7 +62,7 @@ Dhcp6CleanupConfigData ( **/ VOID Dhcp6CleanupModeData ( - IN OUT EFI_DHCP6_MODE_DATA *ModeData + IN OUT EFI_DHCP6_MODE_DATA *ModeData ); /** @@ -78,9 +77,9 @@ Dhcp6CleanupModeData ( **/ UINT32 Dhcp6CalculateExpireTime ( - IN UINT32 Base, - IN BOOLEAN IsFirstRt, - IN BOOLEAN NeedSigned + IN UINT32 Base, + IN BOOLEAN IsFirstRt, + IN BOOLEAN NeedSigned ); /** @@ -91,7 +90,7 @@ Dhcp6CalculateExpireTime ( **/ VOID Dhcp6CalculateLeaseTime ( - IN DHCP6_IA_CB *IaCb + IN DHCP6_IA_CB *IaCb ); /** @@ -107,9 +106,9 @@ Dhcp6CalculateLeaseTime ( **/ EFI_STATUS Dhcp6CheckAddress ( - IN EFI_DHCP6_IA *Ia, - IN UINT32 AddressCount, - IN EFI_IPv6_ADDRESS *Addresses + IN EFI_DHCP6_IA *Ia, + IN UINT32 AddressCount, + IN EFI_IPv6_ADDRESS *Addresses ); /** @@ -125,9 +124,9 @@ Dhcp6CheckAddress ( **/ EFI_DHCP6_IA * Dhcp6DepriveAddress ( - IN EFI_DHCP6_IA *Ia, - IN UINT32 AddressCount, - IN EFI_IPv6_ADDRESS *Addresses + IN EFI_DHCP6_IA *Ia, + IN UINT32 AddressCount, + IN EFI_IPv6_ADDRESS *Addresses ); /** @@ -139,7 +138,7 @@ Dhcp6DepriveAddress ( VOID EFIAPI Dhcp6DummyExtFree ( - IN VOID *Arg + IN VOID *Arg ); /** @@ -154,10 +153,10 @@ Dhcp6DummyExtFree ( VOID EFIAPI Dhcp6OnTransmitted ( - IN NET_BUF *Wrap, - IN UDP_END_POINT *EndPoint, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *Wrap, + IN UDP_END_POINT *EndPoint, + IN EFI_STATUS IoStatus, + IN VOID *Context ); /** @@ -173,10 +172,10 @@ Dhcp6OnTransmitted ( **/ UINT8 * Dhcp6AppendOption ( - IN OUT UINT8 *Buf, - IN UINT16 OptType, - IN UINT16 OptLen, - IN UINT8 *Data + IN OUT UINT8 *Buf, + IN UINT16 OptType, + IN UINT16 OptLen, + IN UINT8 *Data ); /** @@ -193,11 +192,11 @@ Dhcp6AppendOption ( **/ UINT8 * Dhcp6AppendIaOption ( - IN OUT UINT8 *Buf, - IN EFI_DHCP6_IA *Ia, - IN UINT32 T1, - IN UINT32 T2, - IN UINT32 MessageType + IN OUT UINT8 *Buf, + IN EFI_DHCP6_IA *Ia, + IN UINT32 T1, + IN UINT32 T2, + IN UINT32 MessageType ); /** @@ -213,9 +212,9 @@ Dhcp6AppendIaOption ( **/ UINT8 * Dhcp6AppendETOption ( - IN OUT UINT8 *Buf, - IN DHCP6_INSTANCE *Instance, - OUT UINT16 **Elapsed + IN OUT UINT8 *Buf, + IN DHCP6_INSTANCE *Instance, + OUT UINT16 **Elapsed ); /** @@ -227,8 +226,8 @@ Dhcp6AppendETOption ( **/ VOID SetElapsedTime ( - IN UINT16 *Elapsed, - IN DHCP6_INSTANCE *Instance + IN UINT16 *Elapsed, + IN DHCP6_INSTANCE *Instance ); /** @@ -244,9 +243,9 @@ SetElapsedTime ( **/ UINT8 * Dhcp6SeekOption ( - IN UINT8 *Buf, - IN UINT32 SeekLen, - IN UINT16 OptType + IN UINT8 *Buf, + IN UINT32 SeekLen, + IN UINT16 OptType ); /** @@ -262,9 +261,9 @@ Dhcp6SeekOption ( **/ UINT8 * Dhcp6SeekIaOption ( - IN UINT8 *Buf, - IN UINT32 SeekLen, - IN EFI_DHCP6_IA_DESCRIPTOR *IaDesc + IN UINT8 *Buf, + IN UINT32 SeekLen, + IN EFI_DHCP6_IA_DESCRIPTOR *IaDesc ); /** @@ -279,11 +278,11 @@ Dhcp6SeekIaOption ( **/ VOID Dhcp6ParseAddrOption ( - IN EFI_DHCP6_IA *CurrentIa, - IN UINT8 *IaInnerOpt, - IN UINT16 IaInnerLen, - OUT UINT32 *AddrNum, - IN OUT EFI_DHCP6_IA_ADDRESS *AddrBuf + IN EFI_DHCP6_IA *CurrentIa, + IN UINT8 *IaInnerOpt, + IN UINT16 IaInnerLen, + OUT UINT32 *AddrNum, + IN OUT EFI_DHCP6_IA_ADDRESS *AddrBuf ); /** @@ -303,14 +302,13 @@ Dhcp6ParseAddrOption ( **/ EFI_STATUS Dhcp6GenerateIaCb ( - IN DHCP6_INSTANCE *Instance, - IN UINT8 *IaInnerOpt, - IN UINT16 IaInnerLen, - IN UINT32 T1, - IN UINT32 T2 + IN DHCP6_INSTANCE *Instance, + IN UINT8 *IaInnerOpt, + IN UINT16 IaInnerLen, + IN UINT32 T1, + IN UINT32 T2 ); - /** Cache the current IA configuration information. @@ -322,10 +320,9 @@ Dhcp6GenerateIaCb ( **/ EFI_STATUS Dhcp6CacheIa ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ); - /** Append CacheIa to the current IA. Meanwhile, clear CacheIa.ValidLifetime to 0. @@ -334,7 +331,7 @@ Dhcp6CacheIa ( **/ VOID Dhcp6AppendCacheIa ( - IN DHCP6_INSTANCE *Instance + IN DHCP6_INSTANCE *Instance ); /** @@ -348,7 +345,8 @@ Dhcp6AppendCacheIa ( **/ EFI_STATUS Dhcp6GetMappingTimeOut ( - IN EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg, - OUT UINTN *TimeOut + IN EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg, + OUT UINTN *TimeOut ); + #endif diff --git a/NetworkPkg/DnsDxe/ComponentName.c b/NetworkPkg/DnsDxe/ComponentName.c index e59c8704fb..32adb93f41 100644 --- a/NetworkPkg/DnsDxe/ComponentName.c +++ b/NetworkPkg/DnsDxe/ComponentName.c @@ -11,6 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user-readable name of the EFI Driver. @@ -85,13 +86,12 @@ EFI_STATUS EFIAPI DnsComponentNameGetControllerName ( IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); - /// /// Component Name Protocol instance /// @@ -107,8 +107,8 @@ EFI_COMPONENT_NAME_PROTOCOL gDnsComponentName = { /// GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gDnsComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) DnsComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) DnsComponentNameGetControllerName, + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)DnsComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)DnsComponentNameGetControllerName, "en" }; @@ -116,12 +116,12 @@ EFI_COMPONENT_NAME2_PROTOCOL gDnsComponentName2 = { /// Table of driver names /// GLOBAL_REMOVE_IF_UNREFERENCED -EFI_UNICODE_STRING_TABLE mDnsDriverNameTable[] = { +EFI_UNICODE_STRING_TABLE mDnsDriverNameTable[] = { { "eng;en", (CHAR16 *)L"DNS Network Service Driver" }, - { NULL, NULL } + { NULL, NULL } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gDnsControllerNameTable = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gDnsControllerNameTable = NULL; /** Retrieves a Unicode string that is the user-readable name of the EFI Driver. @@ -174,12 +174,12 @@ DnsComponentNameGetDriverName ( **/ EFI_STATUS UpdateDns4Name ( - EFI_DNS4_PROTOCOL *Dns4 + EFI_DNS4_PROTOCOL *Dns4 ) { - EFI_STATUS Status; - CHAR16 HandleName[80]; - EFI_DNS4_MODE_DATA ModeData; + EFI_STATUS Status; + CHAR16 HandleName[80]; + EFI_DNS4_MODE_DATA ModeData; if (Dns4 == NULL) { return EFI_INVALID_PARAMETER; @@ -208,6 +208,7 @@ UpdateDns4Name ( if (ModeData.DnsCacheList != NULL) { FreePool (ModeData.DnsCacheList); } + if (ModeData.DnsServerList != NULL) { FreePool (ModeData.DnsServerList); } @@ -249,13 +250,13 @@ UpdateDns4Name ( **/ EFI_STATUS UpdateDns6Name ( - EFI_DNS6_PROTOCOL *Dns6 + EFI_DNS6_PROTOCOL *Dns6 ) { - EFI_STATUS Status; - CHAR16 HandleName[128]; - EFI_DNS6_MODE_DATA ModeData; - CHAR16 Address[sizeof"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"]; + EFI_STATUS Status; + CHAR16 HandleName[128]; + EFI_DNS6_MODE_DATA ModeData; + CHAR16 Address[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"]; if (Dns6 == NULL) { return EFI_INVALID_PARAMETER; @@ -274,6 +275,7 @@ UpdateDns6Name ( if (EFI_ERROR (Status)) { return Status; } + UnicodeSPrint ( HandleName, sizeof (HandleName), @@ -285,6 +287,7 @@ UpdateDns6Name ( if (ModeData.DnsCacheList != NULL) { FreePool (ModeData.DnsCacheList); } + if (ModeData.DnsServerList != NULL) { FreePool (ModeData.DnsServerList); } @@ -358,15 +361,15 @@ EFI_STATUS EFIAPI DnsComponentNameGetControllerName ( IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_DNS4_PROTOCOL *Dns4; - EFI_DNS6_PROTOCOL *Dns6; + EFI_STATUS Status; + EFI_DNS4_PROTOCOL *Dns4; + EFI_DNS6_PROTOCOL *Dns6; // // ChildHandle must be NULL for a Device Driver diff --git a/NetworkPkg/DnsDxe/DnsDhcp.c b/NetworkPkg/DnsDxe/DnsDhcp.c index 8f8b2aab1e..933565a32d 100644 --- a/NetworkPkg/DnsDxe/DnsDhcp.c +++ b/NetworkPkg/DnsDxe/DnsDhcp.c @@ -19,22 +19,22 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ VOID DnsInitSeedPacket ( - OUT EFI_DHCP4_PACKET *Seed, - IN EFI_IP4_CONFIG2_INTERFACE_INFO *InterfaceInfo + OUT EFI_DHCP4_PACKET *Seed, + IN EFI_IP4_CONFIG2_INTERFACE_INFO *InterfaceInfo ) { - EFI_DHCP4_HEADER *Header; + EFI_DHCP4_HEADER *Header; // // Get IfType and HwAddressSize from SNP mode data. // - Seed->Size = sizeof (EFI_DHCP4_PACKET); - Seed->Length = sizeof (Seed->Dhcp4); - Header = &Seed->Dhcp4.Header; + Seed->Size = sizeof (EFI_DHCP4_PACKET); + Seed->Length = sizeof (Seed->Dhcp4); + Header = &Seed->Dhcp4.Header; ZeroMem (Header, sizeof (EFI_DHCP4_HEADER)); - Header->OpCode = DHCP4_OPCODE_REQUEST; - Header->HwType = InterfaceInfo->IfType; - Header->HwAddrLen = (UINT8) InterfaceInfo->HwAddressSize; + Header->OpCode = DHCP4_OPCODE_REQUEST; + Header->HwType = InterfaceInfo->IfType; + Header->HwAddrLen = (UINT8)InterfaceInfo->HwAddressSize; CopyMem (Header->ClientHwAddr, &(InterfaceInfo->HwAddress), Header->HwAddrLen); Seed->Dhcp4.Magik = DHCP4_MAGIC; @@ -56,10 +56,10 @@ DhcpCommonNotify ( ) { if ((Event == NULL) || (Context == NULL)) { - return ; + return; } - *((BOOLEAN *) Context) = TRUE; + *((BOOLEAN *)Context) = TRUE; } /** @@ -77,26 +77,26 @@ DhcpCommonNotify ( **/ EFI_STATUS ParseDhcp4Ack ( - IN EFI_DHCP4_PROTOCOL *Dhcp4, - IN EFI_DHCP4_PACKET *Packet, - IN DNS4_SERVER_INFOR *DnsServerInfor + IN EFI_DHCP4_PROTOCOL *Dhcp4, + IN EFI_DHCP4_PACKET *Packet, + IN DNS4_SERVER_INFOR *DnsServerInfor ) { - EFI_STATUS Status; - UINT32 OptionCount; - EFI_DHCP4_PACKET_OPTION **OptionList; - UINT32 ServerCount; - EFI_IPv4_ADDRESS *ServerList; - UINT32 Index; - UINT32 Count; + EFI_STATUS Status; + UINT32 OptionCount; + EFI_DHCP4_PACKET_OPTION **OptionList; + UINT32 ServerCount; + EFI_IPv4_ADDRESS *ServerList; + UINT32 Index; + UINT32 Count; ServerCount = 0; - ServerList = NULL; + ServerList = NULL; OptionCount = 0; OptionList = NULL; - Status = Dhcp4->Parse (Dhcp4, Packet, &OptionCount, OptionList); + Status = Dhcp4->Parse (Dhcp4, Packet, &OptionCount, OptionList); if (Status != EFI_BUFFER_TOO_SMALL) { return EFI_DEVICE_ERROR; } @@ -119,19 +119,18 @@ ParseDhcp4Ack ( // Get DNS server addresses // if (OptionList[Index]->OpCode == DHCP4_TAG_DNS_SERVER) { - if (((OptionList[Index]->Length & 0x3) != 0) || (OptionList[Index]->Length == 0)) { Status = EFI_DEVICE_ERROR; break; } ServerCount = OptionList[Index]->Length/4; - ServerList = AllocatePool (ServerCount * sizeof (EFI_IPv4_ADDRESS)); + ServerList = AllocatePool (ServerCount * sizeof (EFI_IPv4_ADDRESS)); if (ServerList == NULL) { return EFI_OUT_OF_RESOURCES; } - for (Count=0; Count < ServerCount; Count++) { + for (Count = 0; Count < ServerCount; Count++) { CopyMem (ServerList + Count, &OptionList[Index]->Data[4 * Count], sizeof (EFI_IPv4_ADDRESS)); } @@ -167,25 +166,25 @@ ParseDhcp4Ack ( EFI_STATUS EFIAPI ParseDhcp6Ack ( - IN EFI_DHCP6_PROTOCOL *This, - IN VOID *Context, - IN EFI_DHCP6_PACKET *Packet + IN EFI_DHCP6_PROTOCOL *This, + IN VOID *Context, + IN EFI_DHCP6_PACKET *Packet ) { - EFI_STATUS Status; - UINT32 OptionCount; - EFI_DHCP6_PACKET_OPTION **OptionList; - DNS6_SERVER_INFOR *DnsServerInfor; - UINT32 ServerCount; - EFI_IPv6_ADDRESS *ServerList; - UINT32 Index; - UINT32 Count; + EFI_STATUS Status; + UINT32 OptionCount; + EFI_DHCP6_PACKET_OPTION **OptionList; + DNS6_SERVER_INFOR *DnsServerInfor; + UINT32 ServerCount; + EFI_IPv6_ADDRESS *ServerList; + UINT32 Index; + UINT32 Count; OptionCount = 0; ServerCount = 0; ServerList = NULL; - Status = This->Parse (This, Packet, &OptionCount, NULL); + Status = This->Parse (This, Packet, &OptionCount, NULL); if (Status != EFI_BUFFER_TOO_SMALL) { return EFI_DEVICE_ERROR; } @@ -201,7 +200,7 @@ ParseDhcp6Ack ( return EFI_DEVICE_ERROR; } - DnsServerInfor = (DNS6_SERVER_INFOR *) Context; + DnsServerInfor = (DNS6_SERVER_INFOR *)Context; for (Index = 0; Index < OptionCount; Index++) { OptionList[Index]->OpCode = NTOHS (OptionList[Index]->OpCode); @@ -211,7 +210,6 @@ ParseDhcp6Ack ( // Get DNS server addresses from this reply packet. // if (OptionList[Index]->OpCode == DHCP6_TAG_DNS_SERVER) { - if (((OptionList[Index]->OpLen & 0xf) != 0) || (OptionList[Index]->OpLen == 0)) { Status = EFI_DEVICE_ERROR; gBS->FreePool (OptionList); @@ -219,13 +217,13 @@ ParseDhcp6Ack ( } ServerCount = OptionList[Index]->OpLen/16; - ServerList = AllocatePool (ServerCount * sizeof (EFI_IPv6_ADDRESS)); + ServerList = AllocatePool (ServerCount * sizeof (EFI_IPv6_ADDRESS)); if (ServerList == NULL) { gBS->FreePool (OptionList); return EFI_OUT_OF_RESOURCES; } - for (Count=0; Count < ServerCount; Count++) { + for (Count = 0; Count < ServerCount; Count++) { CopyMem (ServerList + Count, &OptionList[Index]->Data[16 * Count], sizeof (EFI_IPv6_ADDRESS)); } @@ -237,7 +235,6 @@ ParseDhcp6Ack ( gBS->FreePool (OptionList); return Status; - } /** @@ -255,47 +252,47 @@ ParseDhcp6Ack ( **/ EFI_STATUS GetDns4ServerFromDhcp4 ( - IN DNS_INSTANCE *Instance, - OUT UINT32 *DnsServerCount, - OUT EFI_IPv4_ADDRESS **DnsServerList + IN DNS_INSTANCE *Instance, + OUT UINT32 *DnsServerCount, + OUT EFI_IPv4_ADDRESS **DnsServerList ) { - EFI_STATUS Status; - EFI_HANDLE Image; - EFI_HANDLE Controller; - EFI_STATUS MediaStatus; - EFI_HANDLE MnpChildHandle; - EFI_MANAGED_NETWORK_PROTOCOL *Mnp; - EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData; - EFI_HANDLE Dhcp4Handle; - EFI_DHCP4_PROTOCOL *Dhcp4; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; - UINTN DataSize; - VOID *Data; - EFI_IP4_CONFIG2_INTERFACE_INFO *InterfaceInfo; - EFI_DHCP4_PACKET SeedPacket; - EFI_DHCP4_PACKET_OPTION *ParaList[2]; - DNS4_SERVER_INFOR DnsServerInfor; - - EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN Token; - BOOLEAN IsDone; - UINTN Index; - - Image = Instance->Service->ImageHandle; - Controller = Instance->Service->ControllerHandle; - - MnpChildHandle = NULL; - Mnp = NULL; - - Dhcp4Handle = NULL; - Dhcp4 = NULL; - - Ip4Config2 = NULL; - DataSize = 0; - Data = NULL; - InterfaceInfo = NULL; - - ZeroMem ((UINT8 *) ParaList, sizeof (ParaList)); + EFI_STATUS Status; + EFI_HANDLE Image; + EFI_HANDLE Controller; + EFI_STATUS MediaStatus; + EFI_HANDLE MnpChildHandle; + EFI_MANAGED_NETWORK_PROTOCOL *Mnp; + EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData; + EFI_HANDLE Dhcp4Handle; + EFI_DHCP4_PROTOCOL *Dhcp4; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + UINTN DataSize; + VOID *Data; + EFI_IP4_CONFIG2_INTERFACE_INFO *InterfaceInfo; + EFI_DHCP4_PACKET SeedPacket; + EFI_DHCP4_PACKET_OPTION *ParaList[2]; + DNS4_SERVER_INFOR DnsServerInfor; + + EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN Token; + BOOLEAN IsDone; + UINTN Index; + + Image = Instance->Service->ImageHandle; + Controller = Instance->Service->ControllerHandle; + + MnpChildHandle = NULL; + Mnp = NULL; + + Dhcp4Handle = NULL; + Dhcp4 = NULL; + + Ip4Config2 = NULL; + DataSize = 0; + Data = NULL; + InterfaceInfo = NULL; + + ZeroMem ((UINT8 *)ParaList, sizeof (ParaList)); ZeroMem (&MnpConfigData, sizeof (EFI_MANAGED_NETWORK_CONFIG_DATA)); @@ -332,7 +329,7 @@ GetDns4ServerFromDhcp4 ( Status = gBS->OpenProtocol ( MnpChildHandle, &gEfiManagedNetworkProtocolGuid, - (VOID **) &Mnp, + (VOID **)&Mnp, Image, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -352,7 +349,7 @@ GetDns4ServerFromDhcp4 ( MnpConfigData.EnableReceiveTimestamps = FALSE; MnpConfigData.DisableBackgroundPolling = FALSE; - Status = Mnp->Configure(Mnp, &MnpConfigData); + Status = Mnp->Configure (Mnp, &MnpConfigData); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -373,7 +370,7 @@ GetDns4ServerFromDhcp4 ( Status = gBS->OpenProtocol ( Dhcp4Handle, &gEfiDhcp4ProtocolGuid, - (VOID **) &Dhcp4, + (VOID **)&Dhcp4, Image, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -385,13 +382,13 @@ GetDns4ServerFromDhcp4 ( // // Get Ip4Config2 instance info. // - Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **) &Ip4Config2); + Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **)&Ip4Config2); if (EFI_ERROR (Status)) { goto ON_EXIT; } Status = Ip4Config2->GetData (Ip4Config2, Ip4Config2DataTypeInterfaceInfo, &DataSize, Data); - if (EFI_ERROR (Status) && Status != EFI_BUFFER_TOO_SMALL) { + if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) { goto ON_EXIT; } @@ -470,7 +467,7 @@ GetDns4ServerFromDhcp4 ( Status = Dhcp4->Build (Dhcp4, &SeedPacket, 0, NULL, 2, ParaList, &Token.Packet); - Token.Packet->Dhcp4.Header.Xid = HTONL(NET_RANDOM (NetRandomInitSeed ())); + Token.Packet->Dhcp4.Header.Xid = HTONL (NET_RANDOM (NetRandomInitSeed ())); Token.Packet->Dhcp4.Header.Reserved = HTONS ((UINT16)0x8000); @@ -601,10 +598,10 @@ ON_EXIT: **/ EFI_STATUS GetDns6ServerFromDhcp6 ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - OUT UINT32 *DnsServerCount, - OUT EFI_IPv6_ADDRESS **DnsServerList + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + OUT UINT32 *DnsServerCount, + OUT EFI_IPv6_ADDRESS **DnsServerList ) { EFI_HANDLE Dhcp6Handle; @@ -651,7 +648,7 @@ GetDns6ServerFromDhcp6 ( Status = gBS->OpenProtocol ( Dhcp6Handle, &gEfiDhcp6ProtocolGuid, - (VOID **) &Dhcp6, + (VOID **)&Dhcp6, Image, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -724,7 +721,7 @@ GetDns6ServerFromDhcp6 ( } while (TimerStatus == EFI_NOT_READY); } - *DnsServerList = DnsServerInfor.ServerList; + *DnsServerList = DnsServerInfor.ServerList; ON_EXIT: @@ -753,6 +750,4 @@ ON_EXIT: ); return Status; - } - diff --git a/NetworkPkg/DnsDxe/DnsDhcp.h b/NetworkPkg/DnsDxe/DnsDhcp.h index 7212ba0ce4..c0ed7851f4 100644 --- a/NetworkPkg/DnsDxe/DnsDhcp.h +++ b/NetworkPkg/DnsDxe/DnsDhcp.h @@ -14,39 +14,38 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // #pragma pack(1) -#define IP4_ETHER_PROTO 0x0800 +#define IP4_ETHER_PROTO 0x0800 -#define DHCP4_OPCODE_REQUEST 1 -#define DHCP4_MAGIC 0x63538263 /// network byte order -#define DHCP4_TAG_EOP 255 /// End Option +#define DHCP4_OPCODE_REQUEST 1 +#define DHCP4_MAGIC 0x63538263 /// network byte order +#define DHCP4_TAG_EOP 255 /// End Option -#define DHCP4_TAG_TYPE 53 -#define DHCP4_MSG_REQUEST 3 -#define DHCP4_MSG_INFORM 8 +#define DHCP4_TAG_TYPE 53 +#define DHCP4_MSG_REQUEST 3 +#define DHCP4_MSG_INFORM 8 -#define DHCP4_TAG_PARA_LIST 55 -#define DHCP4_TAG_DNS_SERVER 6 +#define DHCP4_TAG_PARA_LIST 55 +#define DHCP4_TAG_DNS_SERVER 6 +#define DHCP6_TAG_DNS_REQUEST 6 +#define DHCP6_TAG_DNS_SERVER 23 -#define DHCP6_TAG_DNS_REQUEST 6 -#define DHCP6_TAG_DNS_SERVER 23 - -#define DNS_CHECK_MEDIA_GET_DHCP_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) +#define DNS_CHECK_MEDIA_GET_DHCP_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) // // The required Dns4 server information. // typedef struct { - UINT32 *ServerCount; - EFI_IPv4_ADDRESS *ServerList; + UINT32 *ServerCount; + EFI_IPv4_ADDRESS *ServerList; } DNS4_SERVER_INFOR; // // The required Dns6 server information. // typedef struct { - UINT32 *ServerCount; - EFI_IPv6_ADDRESS *ServerList; + UINT32 *ServerCount; + EFI_IPv6_ADDRESS *ServerList; } DNS6_SERVER_INFOR; #pragma pack() @@ -66,9 +65,9 @@ typedef struct { **/ EFI_STATUS ParseDhcp4Ack ( - IN EFI_DHCP4_PROTOCOL *Dhcp4, - IN EFI_DHCP4_PACKET *Packet, - IN DNS4_SERVER_INFOR *DnsServerInfor + IN EFI_DHCP4_PROTOCOL *Dhcp4, + IN EFI_DHCP4_PACKET *Packet, + IN DNS4_SERVER_INFOR *DnsServerInfor ); /** @@ -91,9 +90,9 @@ ParseDhcp4Ack ( EFI_STATUS EFIAPI ParseDhcp6Ack ( - IN EFI_DHCP6_PROTOCOL *This, - IN VOID *Context, - IN EFI_DHCP6_PACKET *Packet + IN EFI_DHCP6_PROTOCOL *This, + IN VOID *Context, + IN EFI_DHCP6_PACKET *Packet ); /** @@ -111,9 +110,9 @@ ParseDhcp6Ack ( **/ EFI_STATUS GetDns4ServerFromDhcp4 ( - IN DNS_INSTANCE *Instance, - OUT UINT32 *DnsServerCount, - OUT EFI_IPv4_ADDRESS **DnsServerList + IN DNS_INSTANCE *Instance, + OUT UINT32 *DnsServerCount, + OUT EFI_IPv4_ADDRESS **DnsServerList ); /** @@ -132,10 +131,10 @@ GetDns4ServerFromDhcp4 ( **/ EFI_STATUS GetDns6ServerFromDhcp6 ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - OUT UINT32 *DnsServerCount, - OUT EFI_IPv6_ADDRESS **DnsServerList + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + OUT UINT32 *DnsServerCount, + OUT EFI_IPv6_ADDRESS **DnsServerList ); #endif diff --git a/NetworkPkg/DnsDxe/DnsDriver.c b/NetworkPkg/DnsDxe/DnsDriver.c index 4db0c6bdd1..466c64046f 100644 --- a/NetworkPkg/DnsDxe/DnsDriver.c +++ b/NetworkPkg/DnsDxe/DnsDriver.c @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "DnsImpl.h" -EFI_DRIVER_BINDING_PROTOCOL gDns4DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gDns4DriverBinding = { Dns4DriverBindingSupported, Dns4DriverBindingStart, Dns4DriverBindingStop, @@ -17,7 +17,7 @@ EFI_DRIVER_BINDING_PROTOCOL gDns4DriverBinding = { NULL }; -EFI_DRIVER_BINDING_PROTOCOL gDns6DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gDns6DriverBinding = { Dns6DriverBindingSupported, Dns6DriverBindingStart, Dns6DriverBindingStop, @@ -26,17 +26,17 @@ EFI_DRIVER_BINDING_PROTOCOL gDns6DriverBinding = { NULL }; -EFI_SERVICE_BINDING_PROTOCOL mDns4ServiceBinding = { +EFI_SERVICE_BINDING_PROTOCOL mDns4ServiceBinding = { Dns4ServiceBindingCreateChild, Dns4ServiceBindingDestroyChild }; -EFI_SERVICE_BINDING_PROTOCOL mDns6ServiceBinding = { +EFI_SERVICE_BINDING_PROTOCOL mDns6ServiceBinding = { Dns6ServiceBindingCreateChild, Dns6ServiceBindingDestroyChild }; -DNS_DRIVER_DATA *mDriverData = NULL; +DNS_DRIVER_DATA *mDriverData = NULL; /** Destroy the DNS instance and recycle the resources. @@ -46,7 +46,7 @@ DNS_DRIVER_DATA *mDriverData = NULL; **/ VOID DnsDestroyInstance ( - IN DNS_INSTANCE *Instance + IN DNS_INSTANCE *Instance ) { ZeroMem (&Instance->Dns4CfgData, sizeof (EFI_DNS4_CONFIG_DATA)); @@ -61,7 +61,7 @@ DnsDestroyInstance ( Dns6InstanceCancelToken (Instance, NULL); } - if (Instance->UdpIo!= NULL) { + if (Instance->UdpIo != NULL) { UdpIoFreeIo (Instance->UdpIo); } @@ -80,11 +80,11 @@ DnsDestroyInstance ( **/ EFI_STATUS DnsCreateInstance ( - IN DNS_SERVICE *Service, - OUT DNS_INSTANCE **Instance + IN DNS_SERVICE *Service, + OUT DNS_INSTANCE **Instance ) { - DNS_INSTANCE *DnsIns; + DNS_INSTANCE *DnsIns; *Instance = NULL; @@ -137,8 +137,8 @@ DnsCreateInstance ( EFI_STATUS EFIAPI DnsDestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { DNS_INSTANCE *Instance; @@ -146,14 +146,14 @@ DnsDestroyChildEntryInHandleBuffer ( UINTN NumberOfChildren; EFI_HANDLE *ChildHandleBuffer; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - Instance = NET_LIST_USER_STRUCT_S (Entry, DNS_INSTANCE, Link, DNS_INSTANCE_SIGNATURE); - ServiceBinding = ((DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; - NumberOfChildren = ((DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; - ChildHandleBuffer = ((DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; + Instance = NET_LIST_USER_STRUCT_S (Entry, DNS_INSTANCE, Link, DNS_INSTANCE_SIGNATURE); + ServiceBinding = ((DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; + NumberOfChildren = ((DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; + ChildHandleBuffer = ((DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; if (!NetIsInHandleBuffer (Instance->ChildHandle, NumberOfChildren, ChildHandleBuffer)) { return EFI_SUCCESS; @@ -177,8 +177,8 @@ DnsDestroyChildEntryInHandleBuffer ( EFI_STATUS EFIAPI DnsConfigNullUdp ( - IN UDP_IO *UdpIo, - IN VOID *Context + IN UDP_IO *UdpIo, + IN VOID *Context ) { return EFI_SUCCESS; @@ -192,7 +192,7 @@ DnsConfigNullUdp ( **/ VOID DnsDestroyService ( - IN DNS_SERVICE *DnsSb + IN DNS_SERVICE *DnsSb ) { UdpIoFreeIo (DnsSb->ConnectUdp); @@ -227,19 +227,19 @@ DnsDestroyService ( **/ EFI_STATUS DnsCreateService ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE Image, - IN UINT8 IpVersion, - OUT DNS_SERVICE **Service + IN EFI_HANDLE Controller, + IN EFI_HANDLE Image, + IN UINT8 IpVersion, + OUT DNS_SERVICE **Service ) { - EFI_STATUS Status; - DNS_SERVICE *DnsSb; + EFI_STATUS Status; + DNS_SERVICE *DnsSb; - Status = EFI_SUCCESS; - DnsSb = NULL; + Status = EFI_SUCCESS; + DnsSb = NULL; - *Service = NULL; + *Service = NULL; DnsSb = AllocateZeroPool (sizeof (DNS_SERVICE)); if (DnsSb == NULL) { @@ -263,11 +263,11 @@ DnsCreateService ( DnsSb->ControllerHandle = Controller; DnsSb->ImageHandle = Image; - DnsSb->TimerToGetMap = NULL; + DnsSb->TimerToGetMap = NULL; - DnsSb->Timer = NULL; + DnsSb->Timer = NULL; - DnsSb->IpVersion = IpVersion; + DnsSb->IpVersion = IpVersion; // // Create the timer used to time out the procedure which is used to @@ -299,6 +299,7 @@ DnsCreateService ( if (DnsSb->TimerToGetMap != NULL) { gBS->CloseEvent (DnsSb->TimerToGetMap); } + FreePool (DnsSb); return Status; } @@ -315,6 +316,7 @@ DnsCreateService ( if (DnsSb->TimerToGetMap != NULL) { gBS->CloseEvent (DnsSb->TimerToGetMap); } + gBS->CloseEvent (DnsSb->Timer); FreePool (DnsSb); return EFI_DEVICE_ERROR; @@ -341,11 +343,11 @@ DnsUnload ( { EFI_STATUS Status; - LIST_ENTRY *Entry; - DNS4_CACHE *ItemCache4; - DNS4_SERVER_IP *ItemServerIp4; - DNS6_CACHE *ItemCache6; - DNS6_SERVER_IP *ItemServerIp6; + LIST_ENTRY *Entry; + DNS4_CACHE *ItemCache4; + DNS4_SERVER_IP *ItemServerIp4; + DNS6_CACHE *ItemCache6; + DNS6_SERVER_IP *ItemServerIp6; ItemCache4 = NULL; ItemServerIp4 = NULL; @@ -355,7 +357,7 @@ DnsUnload ( // // Disconnect the driver specified by ImageHandle // - Status = NetLibDefaultUnload(ImageHandle); + Status = NetLibDefaultUnload (ImageHandle); if (EFI_ERROR (Status)) { return Status; } @@ -493,25 +495,25 @@ DnsDriverEntryPoint ( return Status; - Error4: - gBS->CloseEvent (mDriverData->Timer); +Error4: + gBS->CloseEvent (mDriverData->Timer); - Error3: - FreePool (mDriverData); +Error3: + FreePool (mDriverData); - Error2: - EfiLibUninstallDriverBindingComponentName2 ( - &gDns6DriverBinding, - &gDnsComponentName, - &gDnsComponentName2 - ); +Error2: + EfiLibUninstallDriverBindingComponentName2 ( + &gDns6DriverBinding, + &gDnsComponentName, + &gDnsComponentName2 + ); - Error1: - EfiLibUninstallDriverBindingComponentName2 ( - &gDns4DriverBinding, - &gDnsComponentName, - &gDnsComponentName2 - ); +Error1: + EfiLibUninstallDriverBindingComponentName2 ( + &gDns4DriverBinding, + &gDnsComponentName, + &gDnsComponentName2 + ); return Status; } @@ -641,8 +643,8 @@ Dns4DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - DNS_SERVICE *DnsSb; - EFI_STATUS Status; + DNS_SERVICE *DnsSb; + EFI_STATUS Status; Status = DnsCreateService (ControllerHandle, This->DriverBindingHandle, IP_VERSION_4, &DnsSb); if (EFI_ERROR (Status)) { @@ -712,12 +714,12 @@ Dns4DriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ) { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - DNS_SERVICE *DnsSb; - EFI_HANDLE NicHandle; - EFI_STATUS Status; - LIST_ENTRY *List; - DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + DNS_SERVICE *DnsSb; + EFI_HANDLE NicHandle; + EFI_STATUS Status; + LIST_ENTRY *List; + DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; // // DNS driver opens UDP child, So, Controller is a UDP @@ -733,7 +735,7 @@ Dns4DriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiDns4ServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -748,19 +750,19 @@ Dns4DriverBindingStop ( // // Destroy the Dns child instance in ChildHandleBuffer. // - List = &DnsSb->Dns4ChildrenList; + List = &DnsSb->Dns4ChildrenList; Context.ServiceBinding = ServiceBinding; Context.NumberOfChildren = NumberOfChildren; Context.ChildHandleBuffer = ChildHandleBuffer; - Status = NetDestroyLinkList ( - List, - DnsDestroyChildEntryInHandleBuffer, - &Context, - NULL - ); + Status = NetDestroyLinkList ( + List, + DnsDestroyChildEntryInHandleBuffer, + &Context, + NULL + ); } - if (NumberOfChildren == 0 && IsListEmpty (&DnsSb->Dns4ChildrenList)) { + if ((NumberOfChildren == 0) && IsListEmpty (&DnsSb->Dns4ChildrenList)) { gBS->UninstallProtocolInterface ( NicHandle, &gEfiDns4ServiceBindingProtocolGuid, @@ -905,8 +907,8 @@ Dns6DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - DNS_SERVICE *DnsSb; - EFI_STATUS Status; + DNS_SERVICE *DnsSb; + EFI_STATUS Status; Status = DnsCreateService (ControllerHandle, This->DriverBindingHandle, IP_VERSION_6, &DnsSb); if (EFI_ERROR (Status)) { @@ -977,12 +979,12 @@ Dns6DriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ) { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - DNS_SERVICE *DnsSb; - EFI_HANDLE NicHandle; - EFI_STATUS Status; - LIST_ENTRY *List; - DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + DNS_SERVICE *DnsSb; + EFI_HANDLE NicHandle; + EFI_STATUS Status; + LIST_ENTRY *List; + DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; // // DNS driver opens UDP child, So, Controller is a UDP @@ -998,7 +1000,7 @@ Dns6DriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiDns6ServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1013,19 +1015,19 @@ Dns6DriverBindingStop ( // // Destroy the Dns child instance in ChildHandleBuffer. // - List = &DnsSb->Dns6ChildrenList; + List = &DnsSb->Dns6ChildrenList; Context.ServiceBinding = ServiceBinding; Context.NumberOfChildren = NumberOfChildren; Context.ChildHandleBuffer = ChildHandleBuffer; - Status = NetDestroyLinkList ( - List, - DnsDestroyChildEntryInHandleBuffer, - &Context, - NULL - ); + Status = NetDestroyLinkList ( + List, + DnsDestroyChildEntryInHandleBuffer, + &Context, + NULL + ); } - if (NumberOfChildren == 0 && IsListEmpty (&DnsSb->Dns6ChildrenList)) { + if ((NumberOfChildren == 0) && IsListEmpty (&DnsSb->Dns6ChildrenList)) { gBS->UninstallProtocolInterface ( NicHandle, &gEfiDns6ServiceBindingProtocolGuid, @@ -1071,11 +1073,11 @@ Dns4ServiceBindingCreateChild ( IN EFI_HANDLE *ChildHandle ) { - DNS_SERVICE *DnsSb; - DNS_INSTANCE *Instance; - EFI_STATUS Status; - EFI_TPL OldTpl; - VOID *Udp4; + DNS_SERVICE *DnsSb; + DNS_INSTANCE *Instance; + EFI_STATUS Status; + EFI_TPL OldTpl; + VOID *Udp4; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -1087,6 +1089,7 @@ Dns4ServiceBindingCreateChild ( if (EFI_ERROR (Status)) { return Status; } + ASSERT (Instance != NULL); // @@ -1110,7 +1113,7 @@ Dns4ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( DnsSb->ConnectUdp->UdpHandle, &gEfiUdp4ProtocolGuid, - (VOID **) &Udp4, + (VOID **)&Udp4, gDns4DriverBinding.DriverBindingHandle, Instance->ChildHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -1132,7 +1135,7 @@ Dns4ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( Instance->UdpIo->UdpHandle, &gEfiUdp4ProtocolGuid, - (VOID **) &Udp4, + (VOID **)&Udp4, gDns4DriverBinding.DriverBindingHandle, Instance->ChildHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -1148,12 +1151,12 @@ Dns4ServiceBindingCreateChild ( *ChildHandle ); - gBS->UninstallMultipleProtocolInterfaces ( - Instance->ChildHandle, - &gEfiDns4ProtocolGuid, - &Instance->Dns4, - NULL - ); + gBS->UninstallMultipleProtocolInterfaces ( + Instance->ChildHandle, + &gEfiDns4ProtocolGuid, + &Instance->Dns4, + NULL + ); goto ON_ERROR; } @@ -1201,12 +1204,12 @@ Dns4ServiceBindingDestroyChild ( IN EFI_HANDLE ChildHandle ) { - DNS_SERVICE *DnsSb; - DNS_INSTANCE *Instance; + DNS_SERVICE *DnsSb; + DNS_INSTANCE *Instance; - EFI_DNS4_PROTOCOL *Dns4; - EFI_STATUS Status; - EFI_TPL OldTpl; + EFI_DNS4_PROTOCOL *Dns4; + EFI_STATUS Status; + EFI_TPL OldTpl; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -1218,7 +1221,7 @@ Dns4ServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiDns4ProtocolGuid, - (VOID **) &Dns4, + (VOID **)&Dns4, gDns4DriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1228,8 +1231,8 @@ Dns4ServiceBindingDestroyChild ( return EFI_UNSUPPORTED; } - Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL4 (Dns4); - DnsSb = DNS_SERVICE_FROM_THIS (This); + Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL4 (Dns4); + DnsSb = DNS_SERVICE_FROM_THIS (This); if (Instance->Service != DnsSb) { return EFI_INVALID_PARAMETER; @@ -1314,11 +1317,11 @@ Dns6ServiceBindingCreateChild ( IN EFI_HANDLE *ChildHandle ) { - DNS_SERVICE *DnsSb; - DNS_INSTANCE *Instance; - EFI_STATUS Status; - EFI_TPL OldTpl; - VOID *Udp6; + DNS_SERVICE *DnsSb; + DNS_INSTANCE *Instance; + EFI_STATUS Status; + EFI_TPL OldTpl; + VOID *Udp6; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -1330,6 +1333,7 @@ Dns6ServiceBindingCreateChild ( if (EFI_ERROR (Status)) { return Status; } + ASSERT (Instance != NULL); // @@ -1353,7 +1357,7 @@ Dns6ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( DnsSb->ConnectUdp->UdpHandle, &gEfiUdp6ProtocolGuid, - (VOID **) &Udp6, + (VOID **)&Udp6, gDns6DriverBinding.DriverBindingHandle, Instance->ChildHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -1375,7 +1379,7 @@ Dns6ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( Instance->UdpIo->UdpHandle, &gEfiUdp6ProtocolGuid, - (VOID **) &Udp6, + (VOID **)&Udp6, gDns6DriverBinding.DriverBindingHandle, Instance->ChildHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -1391,12 +1395,12 @@ Dns6ServiceBindingCreateChild ( *ChildHandle ); - gBS->UninstallMultipleProtocolInterfaces ( - Instance->ChildHandle, - &gEfiDns6ProtocolGuid, - &Instance->Dns6, - NULL - ); + gBS->UninstallMultipleProtocolInterfaces ( + Instance->ChildHandle, + &gEfiDns6ProtocolGuid, + &Instance->Dns6, + NULL + ); goto ON_ERROR; } @@ -1444,12 +1448,12 @@ Dns6ServiceBindingDestroyChild ( IN EFI_HANDLE ChildHandle ) { - DNS_SERVICE *DnsSb; - DNS_INSTANCE *Instance; + DNS_SERVICE *DnsSb; + DNS_INSTANCE *Instance; - EFI_DNS6_PROTOCOL *Dns6; - EFI_STATUS Status; - EFI_TPL OldTpl; + EFI_DNS6_PROTOCOL *Dns6; + EFI_STATUS Status; + EFI_TPL OldTpl; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -1461,7 +1465,7 @@ Dns6ServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiDns6ProtocolGuid, - (VOID **) &Dns6, + (VOID **)&Dns6, gDns6DriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1471,8 +1475,8 @@ Dns6ServiceBindingDestroyChild ( return EFI_UNSUPPORTED; } - Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (Dns6); - DnsSb = DNS_SERVICE_FROM_THIS (This); + Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (Dns6); + DnsSb = DNS_SERVICE_FROM_THIS (This); if (Instance->Service != DnsSb) { return EFI_INVALID_PARAMETER; diff --git a/NetworkPkg/DnsDxe/DnsDriver.h b/NetworkPkg/DnsDxe/DnsDriver.h index 67365ca81a..99123fa3c5 100644 --- a/NetworkPkg/DnsDxe/DnsDriver.h +++ b/NetworkPkg/DnsDxe/DnsDriver.h @@ -15,84 +15,84 @@ SPDX-License-Identifier: BSD-2-Clause-Patent /// /// Dns service block /// -typedef struct _DNS_DRIVER_DATA DNS_DRIVER_DATA; +typedef struct _DNS_DRIVER_DATA DNS_DRIVER_DATA; /// /// Dns service block /// -typedef struct _DNS_SERVICE DNS_SERVICE; +typedef struct _DNS_SERVICE DNS_SERVICE; /// /// Dns instance block /// typedef struct _DNS_INSTANCE DNS_INSTANCE; -#define DNS_SERVICE_SIGNATURE SIGNATURE_32 ('D', 'N', 'S', 'S') +#define DNS_SERVICE_SIGNATURE SIGNATURE_32 ('D', 'N', 'S', 'S') -#define DNS_INSTANCE_SIGNATURE SIGNATURE_32 ('D', 'N', 'S', 'I') +#define DNS_INSTANCE_SIGNATURE SIGNATURE_32 ('D', 'N', 'S', 'I') struct _DNS_DRIVER_DATA { - EFI_EVENT Timer; /// Ticking timer for DNS cache update. + EFI_EVENT Timer; /// Ticking timer for DNS cache update. - LIST_ENTRY Dns4CacheList; - LIST_ENTRY Dns4ServerList; + LIST_ENTRY Dns4CacheList; + LIST_ENTRY Dns4ServerList; - LIST_ENTRY Dns6CacheList; - LIST_ENTRY Dns6ServerList; + LIST_ENTRY Dns6CacheList; + LIST_ENTRY Dns6ServerList; }; struct _DNS_SERVICE { - UINT32 Signature; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + UINT32 Signature; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - UINT16 Dns4ChildrenNum; - LIST_ENTRY Dns4ChildrenList; + UINT16 Dns4ChildrenNum; + LIST_ENTRY Dns4ChildrenList; - UINT16 Dns6ChildrenNum; - LIST_ENTRY Dns6ChildrenList; + UINT16 Dns6ChildrenNum; + LIST_ENTRY Dns6ChildrenList; - EFI_HANDLE ControllerHandle; - EFI_HANDLE ImageHandle; + EFI_HANDLE ControllerHandle; + EFI_HANDLE ImageHandle; - EFI_EVENT TimerToGetMap; + EFI_EVENT TimerToGetMap; - EFI_EVENT Timer; /// Ticking timer for packet retransmission. + EFI_EVENT Timer; /// Ticking timer for packet retransmission. - UINT8 IpVersion; - UDP_IO *ConnectUdp; + UINT8 IpVersion; + UDP_IO *ConnectUdp; }; struct _DNS_INSTANCE { - UINT32 Signature; - LIST_ENTRY Link; + UINT32 Signature; + LIST_ENTRY Link; - EFI_DNS4_PROTOCOL Dns4; - EFI_DNS6_PROTOCOL Dns6; + EFI_DNS4_PROTOCOL Dns4; + EFI_DNS6_PROTOCOL Dns6; - INTN State; - BOOLEAN InDestroy; + INTN State; + BOOLEAN InDestroy; - DNS_SERVICE *Service; - EFI_HANDLE ChildHandle; + DNS_SERVICE *Service; + EFI_HANDLE ChildHandle; - EFI_DNS4_CONFIG_DATA Dns4CfgData; - EFI_DNS6_CONFIG_DATA Dns6CfgData; + EFI_DNS4_CONFIG_DATA Dns4CfgData; + EFI_DNS6_CONFIG_DATA Dns6CfgData; - EFI_IP_ADDRESS SessionDnsServer; + EFI_IP_ADDRESS SessionDnsServer; - NET_MAP Dns4TxTokens; - NET_MAP Dns6TxTokens; + NET_MAP Dns4TxTokens; + NET_MAP Dns6TxTokens; - UDP_IO *UdpIo; + UDP_IO *UdpIo; }; typedef struct { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - UINTN NumberOfChildren; - EFI_HANDLE *ChildHandleBuffer; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; } DNS_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; -extern DNS_DRIVER_DATA *mDriverData; +extern DNS_DRIVER_DATA *mDriverData; #define DNS_SERVICE_FROM_THIS(a) \ CR (a, DNS_SERVICE, ServiceBinding, DNS_SERVICE_SIGNATURE) @@ -103,7 +103,6 @@ extern DNS_DRIVER_DATA *mDriverData; #define DNS_INSTANCE_FROM_THIS_PROTOCOL6(a) \ CR (a, DNS_INSTANCE, Dns6, DNS_INSTANCE_SIGNATURE) - /** Destroy the DNS instance and recycle the resources. @@ -112,7 +111,7 @@ extern DNS_DRIVER_DATA *mDriverData; **/ VOID DnsDestroyInstance ( - IN DNS_INSTANCE *Instance + IN DNS_INSTANCE *Instance ); /** @@ -127,8 +126,8 @@ DnsDestroyInstance ( **/ EFI_STATUS DnsCreateInstance ( - IN DNS_SERVICE *Service, - OUT DNS_INSTANCE **Instance + IN DNS_SERVICE *Service, + OUT DNS_INSTANCE **Instance ); /** @@ -144,8 +143,8 @@ DnsCreateInstance ( EFI_STATUS EFIAPI DnsDestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ); /** @@ -163,8 +162,8 @@ DnsDestroyChildEntryInHandleBuffer ( EFI_STATUS EFIAPI DnsConfigNullUdp ( - IN UDP_IO *UdpIo, - IN VOID *Context + IN UDP_IO *UdpIo, + IN VOID *Context ); /** @@ -175,7 +174,7 @@ DnsConfigNullUdp ( **/ VOID DnsDestroyService ( - IN DNS_SERVICE *DnsSb + IN DNS_SERVICE *DnsSb ); /** @@ -197,10 +196,10 @@ DnsDestroyService ( **/ EFI_STATUS DnsCreateService ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE Image, - IN UINT8 IpVersion, - OUT DNS_SERVICE **Service + IN EFI_HANDLE Controller, + IN EFI_HANDLE Image, + IN UINT8 IpVersion, + OUT DNS_SERVICE **Service ); /** @@ -594,5 +593,4 @@ Dns6ServiceBindingDestroyChild ( IN EFI_HANDLE ChildHandle ); - #endif diff --git a/NetworkPkg/DnsDxe/DnsImpl.c b/NetworkPkg/DnsDxe/DnsImpl.c index 78a56f2b56..d311812800 100644 --- a/NetworkPkg/DnsDxe/DnsImpl.c +++ b/NetworkPkg/DnsDxe/DnsImpl.c @@ -20,8 +20,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS Dns4RemoveTokenEntry ( - IN NET_MAP *TokenMap, - IN DNS4_TOKEN_ENTRY *TokenEntry + IN NET_MAP *TokenMap, + IN DNS4_TOKEN_ENTRY *TokenEntry ) { NET_MAP_ITEM *Item; @@ -29,7 +29,7 @@ Dns4RemoveTokenEntry ( // // Find the TokenEntry first. // - Item = NetMapFindKey (TokenMap, (VOID *) TokenEntry); + Item = NetMapFindKey (TokenMap, (VOID *)TokenEntry); if (Item != NULL) { // @@ -55,8 +55,8 @@ Dns4RemoveTokenEntry ( **/ EFI_STATUS Dns6RemoveTokenEntry ( - IN NET_MAP *TokenMap, - IN DNS6_TOKEN_ENTRY *TokenEntry + IN NET_MAP *TokenMap, + IN DNS6_TOKEN_ENTRY *TokenEntry ) { NET_MAP_ITEM *Item; @@ -64,7 +64,7 @@ Dns6RemoveTokenEntry ( // // Find the TokenEntry first. // - Item = NetMapFindKey (TokenMap, (VOID *) TokenEntry); + Item = NetMapFindKey (TokenMap, (VOID *)TokenEntry); if (Item != NULL) { // @@ -102,9 +102,9 @@ Dns4CancelTokens ( IN VOID *Arg OPTIONAL ) { - DNS4_TOKEN_ENTRY *TokenEntry; - NET_BUF *Packet; - UDP_IO *UdpIo; + DNS4_TOKEN_ENTRY *TokenEntry; + NET_BUF *Packet; + UDP_IO *UdpIo; if ((Arg != NULL) && (Item->Key != Arg)) { return EFI_SUCCESS; @@ -115,8 +115,8 @@ Dns4CancelTokens ( // If the TokenEntry is a transmit TokenEntry, the corresponding Packet is recorded in // Item->Value. // - Packet = (NET_BUF *) (Item->Value); - UdpIo = (UDP_IO *) (*((UINTN *) &Packet->ProtoData[0])); + Packet = (NET_BUF *)(Item->Value); + UdpIo = (UDP_IO *)(*((UINTN *)&Packet->ProtoData[0])); UdpIoCancelSentDatagram (UdpIo, Packet); } @@ -124,7 +124,7 @@ Dns4CancelTokens ( // // Remove TokenEntry from Dns4TxTokens. // - TokenEntry = (DNS4_TOKEN_ENTRY *) Item->Key; + TokenEntry = (DNS4_TOKEN_ENTRY *)Item->Key; if (Dns4RemoveTokenEntry (Map, TokenEntry) == EFI_SUCCESS) { TokenEntry->Token->Status = EFI_ABORTED; gBS->SignalEvent (TokenEntry->Token->Event); @@ -162,9 +162,9 @@ Dns6CancelTokens ( IN VOID *Arg OPTIONAL ) { - DNS6_TOKEN_ENTRY *TokenEntry; - NET_BUF *Packet; - UDP_IO *UdpIo; + DNS6_TOKEN_ENTRY *TokenEntry; + NET_BUF *Packet; + UDP_IO *UdpIo; if ((Arg != NULL) && (Item->Key != Arg)) { return EFI_SUCCESS; @@ -175,8 +175,8 @@ Dns6CancelTokens ( // If the TokenEntry is a transmit TokenEntry, the corresponding Packet is recorded in // Item->Value. // - Packet = (NET_BUF *) (Item->Value); - UdpIo = (UDP_IO *) (*((UINTN *) &Packet->ProtoData[0])); + Packet = (NET_BUF *)(Item->Value); + UdpIo = (UDP_IO *)(*((UINTN *)&Packet->ProtoData[0])); UdpIoCancelSentDatagram (UdpIo, Packet); } @@ -184,7 +184,7 @@ Dns6CancelTokens ( // // Remove TokenEntry from Dns6TxTokens. // - TokenEntry = (DNS6_TOKEN_ENTRY *) Item->Key; + TokenEntry = (DNS6_TOKEN_ENTRY *)Item->Key; if (Dns6RemoveTokenEntry (Map, TokenEntry) == EFI_SUCCESS) { TokenEntry->Token->Status = EFI_ABORTED; gBS->SignalEvent (TokenEntry->Token->Event); @@ -212,18 +212,18 @@ Dns6CancelTokens ( EFI_STATUS EFIAPI GetDns4TokenEntry ( - IN NET_MAP *TokensMap, - IN EFI_DNS4_COMPLETION_TOKEN *Token, - OUT DNS4_TOKEN_ENTRY **TokenEntry + IN NET_MAP *TokensMap, + IN EFI_DNS4_COMPLETION_TOKEN *Token, + OUT DNS4_TOKEN_ENTRY **TokenEntry ) { - LIST_ENTRY *Entry; + LIST_ENTRY *Entry; - NET_MAP_ITEM *Item; + NET_MAP_ITEM *Item; NET_LIST_FOR_EACH (Entry, &TokensMap->Used) { - Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); - *TokenEntry = (DNS4_TOKEN_ENTRY *) (Item->Key); + Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); + *TokenEntry = (DNS4_TOKEN_ENTRY *)(Item->Key); if ((*TokenEntry)->Token == Token) { return EFI_SUCCESS; } @@ -248,24 +248,24 @@ GetDns4TokenEntry ( EFI_STATUS EFIAPI GetDns6TokenEntry ( - IN NET_MAP *TokensMap, - IN EFI_DNS6_COMPLETION_TOKEN *Token, - OUT DNS6_TOKEN_ENTRY **TokenEntry + IN NET_MAP *TokensMap, + IN EFI_DNS6_COMPLETION_TOKEN *Token, + OUT DNS6_TOKEN_ENTRY **TokenEntry ) { - LIST_ENTRY *Entry; + LIST_ENTRY *Entry; - NET_MAP_ITEM *Item; + NET_MAP_ITEM *Item; NET_LIST_FOR_EACH (Entry, &TokensMap->Used) { - Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); - *TokenEntry = (DNS6_TOKEN_ENTRY *) (Item->Key); + Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); + *TokenEntry = (DNS6_TOKEN_ENTRY *)(Item->Key); if ((*TokenEntry)->Token == Token) { return EFI_SUCCESS; } } - *TokenEntry =NULL; + *TokenEntry = NULL; return EFI_NOT_FOUND; } @@ -293,7 +293,7 @@ Dns4InstanceCancelToken ( TokenEntry = NULL; - if(Token != NULL ) { + if (Token != NULL ) { Status = GetDns4TokenEntry (&Instance->Dns4TxTokens, Token, &TokenEntry); if (EFI_ERROR (Status)) { return Status; @@ -313,8 +313,9 @@ Dns4InstanceCancelToken ( // the Dns4TxTokens and returns success. // if (NetMapIsEmpty (&Instance->Dns4TxTokens)) { - Instance->UdpIo->Protocol.Udp4->Cancel (Instance->UdpIo->Protocol.Udp4, &Instance->UdpIo->RecvRequest->Token.Udp4); + Instance->UdpIo->Protocol.Udp4->Cancel (Instance->UdpIo->Protocol.Udp4, &Instance->UdpIo->RecvRequest->Token.Udp4); } + return EFI_SUCCESS; } @@ -350,7 +351,7 @@ Dns6InstanceCancelToken ( TokenEntry = NULL; - if(Token != NULL ) { + if (Token != NULL ) { Status = GetDns6TokenEntry (&Instance->Dns6TxTokens, Token, &TokenEntry); if (EFI_ERROR (Status)) { return Status; @@ -370,8 +371,9 @@ Dns6InstanceCancelToken ( // the Dns6TxTokens and returns success. // if (NetMapIsEmpty (&Instance->Dns6TxTokens)) { - Instance->UdpIo->Protocol.Udp6->Cancel (Instance->UdpIo->Protocol.Udp6, &Instance->UdpIo->RecvRequest->Token.Udp6); + Instance->UdpIo->Protocol.Udp6->Cancel (Instance->UdpIo->Protocol.Udp6, &Instance->UdpIo->RecvRequest->Token.Udp6); } + return EFI_SUCCESS; } @@ -437,8 +439,8 @@ Dns4CopyConfigure ( IN EFI_DNS4_CONFIG_DATA *Src ) { - UINTN Len; - UINT32 Index; + UINTN Len; + UINT32 Index; CopyMem (Dst, Src, sizeof (*Dst)); Dst->DnsServerList = NULL; @@ -479,8 +481,8 @@ Dns6CopyConfigure ( IN EFI_DNS6_CONFIG_DATA *Src ) { - UINTN Len; - UINT32 Index; + UINTN Len; + UINT32 Index; CopyMem (Dst, Src, sizeof (*Dst)); Dst->DnsServerList = NULL; @@ -513,7 +515,7 @@ Dns6CopyConfigure ( VOID EFIAPI DnsDummyExtFree ( - IN VOID *Arg + IN VOID *Arg ) { } @@ -535,15 +537,15 @@ DnsDummyExtFree ( **/ BOOLEAN Dns4GetMapping ( - IN DNS_INSTANCE *Instance, - IN UDP_IO *UdpIo, - IN EFI_UDP4_CONFIG_DATA *UdpCfgData + IN DNS_INSTANCE *Instance, + IN UDP_IO *UdpIo, + IN EFI_UDP4_CONFIG_DATA *UdpCfgData ) { - DNS_SERVICE *Service; - EFI_IP4_MODE_DATA Ip4Mode; - EFI_UDP4_PROTOCOL *Udp; - EFI_STATUS Status; + DNS_SERVICE *Service; + EFI_IP4_MODE_DATA Ip4Mode; + EFI_UDP4_PROTOCOL *Udp; + EFI_STATUS Status; ASSERT (Instance->Dns4CfgData.UseDefaultSetting); @@ -563,10 +565,10 @@ Dns4GetMapping ( Udp->Poll (Udp); if (!EFI_ERROR (Udp->GetModeData (Udp, NULL, &Ip4Mode, NULL, NULL)) && - Ip4Mode.IsConfigured) { - + Ip4Mode.IsConfigured) + { Udp->Configure (Udp, NULL); - return (BOOLEAN) (Udp->Configure (Udp, UdpCfgData) == EFI_SUCCESS); + return (BOOLEAN)(Udp->Configure (Udp, UdpCfgData) == EFI_SUCCESS); } } @@ -587,15 +589,15 @@ Dns4GetMapping ( **/ BOOLEAN Dns6GetMapping ( - IN DNS_INSTANCE *Instance, - IN UDP_IO *UdpIo, - IN EFI_UDP6_CONFIG_DATA *UdpCfgData + IN DNS_INSTANCE *Instance, + IN UDP_IO *UdpIo, + IN EFI_UDP6_CONFIG_DATA *UdpCfgData ) { - DNS_SERVICE *Service; - EFI_IP6_MODE_DATA Ip6Mode; - EFI_UDP6_PROTOCOL *Udp; - EFI_STATUS Status; + DNS_SERVICE *Service; + EFI_IP6_MODE_DATA Ip6Mode; + EFI_UDP6_PROTOCOL *Udp; + EFI_STATUS Status; Service = Instance->Service; Udp = UdpIo->Protocol.Udp6; @@ -661,13 +663,13 @@ Dns6GetMapping ( **/ EFI_STATUS Dns4ConfigUdp ( - IN DNS_INSTANCE *Instance, - IN UDP_IO *UdpIo + IN DNS_INSTANCE *Instance, + IN UDP_IO *UdpIo ) { - EFI_DNS4_CONFIG_DATA *Config; - EFI_UDP4_CONFIG_DATA UdpConfig; - EFI_STATUS Status; + EFI_DNS4_CONFIG_DATA *Config; + EFI_UDP4_CONFIG_DATA UdpConfig; + EFI_STATUS Status; Config = &Instance->Dns4CfgData; @@ -709,13 +711,13 @@ Dns4ConfigUdp ( **/ EFI_STATUS Dns6ConfigUdp ( - IN DNS_INSTANCE *Instance, - IN UDP_IO *UdpIo + IN DNS_INSTANCE *Instance, + IN UDP_IO *UdpIo ) { - EFI_DNS6_CONFIG_DATA *Config; - EFI_UDP6_CONFIG_DATA UdpConfig; - EFI_STATUS Status; + EFI_DNS6_CONFIG_DATA *Config; + EFI_UDP6_CONFIG_DATA UdpConfig; + EFI_STATUS Status; Config = &Instance->Dns6CfgData; @@ -757,16 +759,16 @@ Dns6ConfigUdp ( EFI_STATUS EFIAPI UpdateDns4Cache ( - IN LIST_ENTRY *Dns4CacheList, - IN BOOLEAN DeleteFlag, - IN BOOLEAN Override, - IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry + IN LIST_ENTRY *Dns4CacheList, + IN BOOLEAN DeleteFlag, + IN BOOLEAN Override, + IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry ) { - DNS4_CACHE *NewDnsCache; - DNS4_CACHE *Item; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; + DNS4_CACHE *NewDnsCache; + DNS4_CACHE *Item; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; NewDnsCache = NULL; Item = NULL; @@ -776,8 +778,9 @@ UpdateDns4Cache ( // NET_LIST_FOR_EACH_SAFE (Entry, Next, Dns4CacheList) { Item = NET_LIST_USER_STRUCT (Entry, DNS4_CACHE, AllCacheLink); - if (StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0 && \ - CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv4_ADDRESS)) == 0) { + if ((StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0) && \ + (CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv4_ADDRESS)) == 0)) + { // // This is the Dns cache entry // @@ -855,16 +858,16 @@ UpdateDns4Cache ( EFI_STATUS EFIAPI UpdateDns6Cache ( - IN LIST_ENTRY *Dns6CacheList, - IN BOOLEAN DeleteFlag, - IN BOOLEAN Override, - IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry + IN LIST_ENTRY *Dns6CacheList, + IN BOOLEAN DeleteFlag, + IN BOOLEAN Override, + IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry ) { - DNS6_CACHE *NewDnsCache; - DNS6_CACHE *Item; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; + DNS6_CACHE *NewDnsCache; + DNS6_CACHE *Item; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; NewDnsCache = NULL; Item = NULL; @@ -874,8 +877,9 @@ UpdateDns6Cache ( // NET_LIST_FOR_EACH_SAFE (Entry, Next, Dns6CacheList) { Item = NET_LIST_USER_STRUCT (Entry, DNS6_CACHE, AllCacheLink); - if (StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0 && \ - CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv6_ADDRESS)) == 0) { + if ((StrCmp (DnsCacheEntry.HostName, Item->DnsCache.HostName) == 0) && \ + (CompareMem (DnsCacheEntry.IpAddress, Item->DnsCache.IpAddress, sizeof (EFI_IPv6_ADDRESS)) == 0)) + { // // This is the Dns cache entry // @@ -950,14 +954,14 @@ UpdateDns6Cache ( EFI_STATUS EFIAPI AddDns4ServerIp ( - IN LIST_ENTRY *Dns4ServerList, - IN EFI_IPv4_ADDRESS ServerIp + IN LIST_ENTRY *Dns4ServerList, + IN EFI_IPv4_ADDRESS ServerIp ) { - DNS4_SERVER_IP *NewServerIp; - DNS4_SERVER_IP *Item; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; + DNS4_SERVER_IP *NewServerIp; + DNS4_SERVER_IP *Item; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; NewServerIp = NULL; Item = NULL; @@ -1005,14 +1009,14 @@ AddDns4ServerIp ( EFI_STATUS EFIAPI AddDns6ServerIp ( - IN LIST_ENTRY *Dns6ServerList, - IN EFI_IPv6_ADDRESS ServerIp + IN LIST_ENTRY *Dns6ServerList, + IN EFI_IPv6_ADDRESS ServerIp ) { - DNS6_SERVER_IP *NewServerIp; - DNS6_SERVER_IP *Item; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; + DNS6_SERVER_IP *NewServerIp; + DNS6_SERVER_IP *Item; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; NewServerIp = NULL; Item = NULL; @@ -1062,37 +1066,37 @@ AddDns6ServerIp ( **/ BOOLEAN IsValidDnsResponse ( - IN NET_MAP *TokensMap, - IN UINT16 Identification, - IN UINT16 Type, - IN UINT16 Class, - OUT NET_MAP_ITEM **Item + IN NET_MAP *TokensMap, + IN UINT16 Identification, + IN UINT16 Type, + IN UINT16 Class, + OUT NET_MAP_ITEM **Item ) { - LIST_ENTRY *Entry; + LIST_ENTRY *Entry; - NET_BUF *Packet; - UINT8 *TxString; - DNS_HEADER *DnsHeader; - CHAR8 *QueryName; - DNS_QUERY_SECTION *QuerySection; + NET_BUF *Packet; + UINT8 *TxString; + DNS_HEADER *DnsHeader; + CHAR8 *QueryName; + DNS_QUERY_SECTION *QuerySection; NET_LIST_FOR_EACH (Entry, &TokensMap->Used) { - *Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); - Packet = (NET_BUF *) ((*Item)->Value); + *Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); + Packet = (NET_BUF *)((*Item)->Value); if (Packet == NULL) { - continue; } else { TxString = NetbufGetByte (Packet, 0, NULL); ASSERT (TxString != NULL); - DnsHeader = (DNS_HEADER *) TxString; - QueryName = (CHAR8 *) (TxString + sizeof (*DnsHeader)); - QuerySection = (DNS_QUERY_SECTION *) (QueryName + AsciiStrLen (QueryName) + 1); - - if (NTOHS (DnsHeader->Identification) == Identification && - NTOHS (QuerySection->Type) == Type && - NTOHS (QuerySection->Class) == Class) { + DnsHeader = (DNS_HEADER *)TxString; + QueryName = (CHAR8 *)(TxString + sizeof (*DnsHeader)); + QuerySection = (DNS_QUERY_SECTION *)(QueryName + AsciiStrLen (QueryName) + 1); + + if ((NTOHS (DnsHeader->Identification) == Identification) && + (NTOHS (QuerySection->Type) == Type) && + (NTOHS (QuerySection->Class) == Class)) + { return TRUE; } } @@ -1117,33 +1121,33 @@ IsValidDnsResponse ( **/ EFI_STATUS ParseDnsResponse ( - IN OUT DNS_INSTANCE *Instance, - IN UINT8 *RxString, - IN UINT32 Length, - OUT BOOLEAN *Completed + IN OUT DNS_INSTANCE *Instance, + IN UINT8 *RxString, + IN UINT32 Length, + OUT BOOLEAN *Completed ) { - DNS_HEADER *DnsHeader; + DNS_HEADER *DnsHeader; - CHAR8 *QueryName; - UINT32 QueryNameLen; - DNS_QUERY_SECTION *QuerySection; + CHAR8 *QueryName; + UINT32 QueryNameLen; + DNS_QUERY_SECTION *QuerySection; - CHAR8 *AnswerName; - DNS_ANSWER_SECTION *AnswerSection; - UINT8 *AnswerData; + CHAR8 *AnswerName; + DNS_ANSWER_SECTION *AnswerSection; + UINT8 *AnswerData; - NET_MAP_ITEM *Item; - DNS4_TOKEN_ENTRY *Dns4TokenEntry; - DNS6_TOKEN_ENTRY *Dns6TokenEntry; + NET_MAP_ITEM *Item; + DNS4_TOKEN_ENTRY *Dns4TokenEntry; + DNS6_TOKEN_ENTRY *Dns6TokenEntry; - UINT32 IpCount; - UINT32 RRCount; - UINT32 AnswerSectionNum; - UINT32 CNameTtl; + UINT32 IpCount; + UINT32 RRCount; + UINT32 AnswerSectionNum; + UINT32 CNameTtl; - EFI_IPv4_ADDRESS *HostAddr4; - EFI_IPv6_ADDRESS *HostAddr6; + EFI_IPv4_ADDRESS *HostAddr4; + EFI_IPv6_ADDRESS *HostAddr6; EFI_DNS4_CACHE_ENTRY *Dns4CacheEntry; EFI_DNS6_CACHE_ENTRY *Dns6CacheEntry; @@ -1151,32 +1155,32 @@ ParseDnsResponse ( DNS_RESOURCE_RECORD *Dns4RR; DNS6_RESOURCE_RECORD *Dns6RR; - EFI_STATUS Status; - UINT32 RemainingLength; + EFI_STATUS Status; + UINT32 RemainingLength; - EFI_TPL OldTpl; + EFI_TPL OldTpl; - Item = NULL; - Dns4TokenEntry = NULL; - Dns6TokenEntry = NULL; + Item = NULL; + Dns4TokenEntry = NULL; + Dns6TokenEntry = NULL; IpCount = 0; RRCount = 0; AnswerSectionNum = 0; CNameTtl = 0; - HostAddr4 = NULL; - HostAddr6 = NULL; + HostAddr4 = NULL; + HostAddr6 = NULL; - Dns4CacheEntry = NULL; - Dns6CacheEntry = NULL; + Dns4CacheEntry = NULL; + Dns6CacheEntry = NULL; - Dns4RR = NULL; - Dns6RR = NULL; + Dns4RR = NULL; + Dns6RR = NULL; - *Completed = TRUE; - Status = EFI_SUCCESS; - RemainingLength = Length; + *Completed = TRUE; + Status = EFI_SUCCESS; + RemainingLength = Length; // // Check whether the remaining packet length is available or not. @@ -1191,14 +1195,14 @@ ParseDnsResponse ( // // Get header // - DnsHeader = (DNS_HEADER *) RxString; + DnsHeader = (DNS_HEADER *)RxString; DnsHeader->Identification = NTOHS (DnsHeader->Identification); - DnsHeader->Flags.Uint16 = NTOHS (DnsHeader->Flags.Uint16); - DnsHeader->QuestionsNum = NTOHS (DnsHeader->QuestionsNum); - DnsHeader->AnswersNum = NTOHS (DnsHeader->AnswersNum); - DnsHeader->AuthorityNum = NTOHS (DnsHeader->AuthorityNum); - DnsHeader->AditionalNum = NTOHS (DnsHeader->AditionalNum); + DnsHeader->Flags.Uint16 = NTOHS (DnsHeader->Flags.Uint16); + DnsHeader->QuestionsNum = NTOHS (DnsHeader->QuestionsNum); + DnsHeader->AnswersNum = NTOHS (DnsHeader->AnswersNum); + DnsHeader->AuthorityNum = NTOHS (DnsHeader->AuthorityNum); + DnsHeader->AditionalNum = NTOHS (DnsHeader->AditionalNum); // // There is always one QuestionsNum in DNS message. The capability to handle more @@ -1212,9 +1216,9 @@ ParseDnsResponse ( // // Get Query name // - QueryName = (CHAR8 *) (RxString + sizeof (*DnsHeader)); + QueryName = (CHAR8 *)(RxString + sizeof (*DnsHeader)); - QueryNameLen = (UINT32) AsciiStrLen (QueryName) + 1; + QueryNameLen = (UINT32)AsciiStrLen (QueryName) + 1; // // Check whether the remaining packet length is available or not. @@ -1229,8 +1233,8 @@ ParseDnsResponse ( // // Get query section // - QuerySection = (DNS_QUERY_SECTION *) (QueryName + QueryNameLen); - QuerySection->Type = NTOHS (QuerySection->Type); + QuerySection = (DNS_QUERY_SECTION *)(QueryName + QueryNameLen); + QuerySection->Type = NTOHS (QuerySection->Type); QuerySection->Class = NTOHS (QuerySection->Class); OldTpl = gBS->RaiseTPL (TPL_CALLBACK); @@ -1245,13 +1249,15 @@ ParseDnsResponse ( QuerySection->Type, QuerySection->Class, &Item - )) { + )) + { *Completed = FALSE; - Status = EFI_ABORTED; + Status = EFI_ABORTED; goto ON_EXIT; } + ASSERT (Item != NULL); - Dns4TokenEntry = (DNS4_TOKEN_ENTRY *) (Item->Key); + Dns4TokenEntry = (DNS4_TOKEN_ENTRY *)(Item->Key); } else { if (!IsValidDnsResponse ( &Instance->Dns6TxTokens, @@ -1259,20 +1265,23 @@ ParseDnsResponse ( QuerySection->Type, QuerySection->Class, &Item - )) { + )) + { *Completed = FALSE; - Status = EFI_ABORTED; + Status = EFI_ABORTED; goto ON_EXIT; } + ASSERT (Item != NULL); - Dns6TokenEntry = (DNS6_TOKEN_ENTRY *) (Item->Key); + Dns6TokenEntry = (DNS6_TOKEN_ENTRY *)(Item->Key); } // // Continue Check Some Errors. // - if (DnsHeader->Flags.Bits.RCode != DNS_FLAGS_RCODE_NO_ERROR || DnsHeader->AnswersNum < 1 || \ - DnsHeader->Flags.Bits.QR != DNS_FLAGS_QR_RESPONSE) { + if ((DnsHeader->Flags.Bits.RCode != DNS_FLAGS_RCODE_NO_ERROR) || (DnsHeader->AnswersNum < 1) || \ + (DnsHeader->Flags.Bits.QR != DNS_FLAGS_QR_RESPONSE)) + { // // The domain name referenced in the query does not exist. // @@ -1300,6 +1309,7 @@ ParseDnsResponse ( Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + Dns4TokenEntry->Token->RspData.GLookupData->RRList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (DNS_RESOURCE_RECORD)); if (Dns4TokenEntry->Token->RspData.GLookupData->RRList == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1315,6 +1325,7 @@ ParseDnsResponse ( Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + Dns4TokenEntry->Token->RspData.H2AData->IpList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (EFI_IPv4_ADDRESS)); if (Dns4TokenEntry->Token->RspData.H2AData->IpList == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1337,6 +1348,7 @@ ParseDnsResponse ( Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + Dns6TokenEntry->Token->RspData.GLookupData->RRList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (DNS_RESOURCE_RECORD)); if (Dns6TokenEntry->Token->RspData.GLookupData->RRList == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1352,6 +1364,7 @@ ParseDnsResponse ( Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + Dns6TokenEntry->Token->RspData.H2AData->IpList = AllocateZeroPool (DnsHeader->AnswersNum * sizeof (EFI_IPv6_ADDRESS)); if (Dns6TokenEntry->Token->RspData.H2AData->IpList == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1369,7 +1382,7 @@ ParseDnsResponse ( // // Get Answer name // - AnswerName = (CHAR8 *) QuerySection + sizeof (*QuerySection); + AnswerName = (CHAR8 *)QuerySection + sizeof (*QuerySection); // // Processing AnswerSection. @@ -1380,7 +1393,7 @@ ParseDnsResponse ( // if (RemainingLength <= sizeof (UINT16) + sizeof (DNS_ANSWER_SECTION)) { *Completed = FALSE; - Status = EFI_ABORTED; + Status = EFI_ABORTED; goto ON_EXIT; } else { RemainingLength -= (sizeof (UINT16) + sizeof (DNS_ANSWER_SECTION)); @@ -1389,7 +1402,7 @@ ParseDnsResponse ( // // Answer name should be PTR, else EFI_UNSUPPORTED returned. // - if ((*(UINT8 *) AnswerName & 0xC0) != 0xC0) { + if ((*(UINT8 *)AnswerName & 0xC0) != 0xC0) { Status = EFI_UNSUPPORTED; goto ON_EXIT; } @@ -1397,10 +1410,10 @@ ParseDnsResponse ( // // Get Answer section. // - AnswerSection = (DNS_ANSWER_SECTION *) (AnswerName + sizeof (UINT16)); - AnswerSection->Type = NTOHS (AnswerSection->Type); - AnswerSection->Class = NTOHS (AnswerSection->Class); - AnswerSection->Ttl = NTOHL (AnswerSection->Ttl); + AnswerSection = (DNS_ANSWER_SECTION *)(AnswerName + sizeof (UINT16)); + AnswerSection->Type = NTOHS (AnswerSection->Type); + AnswerSection->Class = NTOHS (AnswerSection->Class); + AnswerSection->Ttl = NTOHL (AnswerSection->Ttl); AnswerSection->DataLength = NTOHS (AnswerSection->DataLength); // @@ -1408,7 +1421,7 @@ ParseDnsResponse ( // if (RemainingLength < AnswerSection->DataLength) { *Completed = FALSE; - Status = EFI_ABORTED; + Status = EFI_ABORTED; goto ON_EXIT; } else { RemainingLength -= AnswerSection->DataLength; @@ -1417,9 +1430,9 @@ ParseDnsResponse ( // // Check whether it's the GeneralLookUp querying. // - if (Instance->Service->IpVersion == IP_VERSION_4 && Dns4TokenEntry->GeneralLookUp) { - Dns4RR = Dns4TokenEntry->Token->RspData.GLookupData->RRList; - AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection); + if ((Instance->Service->IpVersion == IP_VERSION_4) && Dns4TokenEntry->GeneralLookUp) { + Dns4RR = Dns4TokenEntry->Token->RspData.GLookupData->RRList; + AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection); // // Fill the ResourceRecord. @@ -1429,23 +1442,25 @@ ParseDnsResponse ( Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + CopyMem (Dns4RR[RRCount].QName, QueryName, AsciiStrLen (QueryName)); - Dns4RR[RRCount].QType = AnswerSection->Type; - Dns4RR[RRCount].QClass = AnswerSection->Class; - Dns4RR[RRCount].TTL = AnswerSection->Ttl; + Dns4RR[RRCount].QType = AnswerSection->Type; + Dns4RR[RRCount].QClass = AnswerSection->Class; + Dns4RR[RRCount].TTL = AnswerSection->Ttl; Dns4RR[RRCount].DataLength = AnswerSection->DataLength; - Dns4RR[RRCount].RData = AllocateZeroPool (Dns4RR[RRCount].DataLength); + Dns4RR[RRCount].RData = AllocateZeroPool (Dns4RR[RRCount].DataLength); if (Dns4RR[RRCount].RData == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + CopyMem (Dns4RR[RRCount].RData, AnswerData, Dns4RR[RRCount].DataLength); - RRCount ++; + RRCount++; Status = EFI_SUCCESS; - } else if (Instance->Service->IpVersion == IP_VERSION_6 && Dns6TokenEntry->GeneralLookUp) { - Dns6RR = Dns6TokenEntry->Token->RspData.GLookupData->RRList; - AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection); + } else if ((Instance->Service->IpVersion == IP_VERSION_6) && Dns6TokenEntry->GeneralLookUp) { + Dns6RR = Dns6TokenEntry->Token->RspData.GLookupData->RRList; + AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection); // // Fill the ResourceRecord. @@ -1455,19 +1470,21 @@ ParseDnsResponse ( Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + CopyMem (Dns6RR[RRCount].QName, QueryName, AsciiStrLen (QueryName)); - Dns6RR[RRCount].QType = AnswerSection->Type; - Dns6RR[RRCount].QClass = AnswerSection->Class; - Dns6RR[RRCount].TTL = AnswerSection->Ttl; + Dns6RR[RRCount].QType = AnswerSection->Type; + Dns6RR[RRCount].QClass = AnswerSection->Class; + Dns6RR[RRCount].TTL = AnswerSection->Ttl; Dns6RR[RRCount].DataLength = AnswerSection->DataLength; - Dns6RR[RRCount].RData = AllocateZeroPool (Dns6RR[RRCount].DataLength); + Dns6RR[RRCount].RData = AllocateZeroPool (Dns6RR[RRCount].DataLength); if (Dns6RR[RRCount].RData == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + CopyMem (Dns6RR[RRCount].RData, AnswerData, Dns6RR[RRCount].DataLength); - RRCount ++; + RRCount++; Status = EFI_SUCCESS; } else { // @@ -1475,143 +1492,149 @@ ParseDnsResponse ( // Check the Query type, parse the response packet. // switch (AnswerSection->Type) { - case DNS_TYPE_A: - // - // This is address entry, get Data. - // - ASSERT (Dns4TokenEntry != NULL); + case DNS_TYPE_A: + // + // This is address entry, get Data. + // + ASSERT (Dns4TokenEntry != NULL); - if (AnswerSection->DataLength != 4) { - Status = EFI_ABORTED; - goto ON_EXIT; - } + if (AnswerSection->DataLength != 4) { + Status = EFI_ABORTED; + goto ON_EXIT; + } - HostAddr4 = Dns4TokenEntry->Token->RspData.H2AData->IpList; - AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection); - CopyMem (&HostAddr4[IpCount], AnswerData, sizeof (EFI_IPv4_ADDRESS)); + HostAddr4 = Dns4TokenEntry->Token->RspData.H2AData->IpList; + AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection); + CopyMem (&HostAddr4[IpCount], AnswerData, sizeof (EFI_IPv4_ADDRESS)); - // - // Allocate new CacheEntry pool to update DNS cache dynamically. - // - Dns4CacheEntry = AllocateZeroPool (sizeof (EFI_DNS4_CACHE_ENTRY)); - if (Dns4CacheEntry == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } - Dns4CacheEntry->HostName = AllocateZeroPool (2 * (StrLen(Dns4TokenEntry->QueryHostName) + 1)); - if (Dns4CacheEntry->HostName == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } - CopyMem (Dns4CacheEntry->HostName, Dns4TokenEntry->QueryHostName, 2 * (StrLen(Dns4TokenEntry->QueryHostName) + 1)); - Dns4CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv4_ADDRESS)); - if (Dns4CacheEntry->IpAddress == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } - CopyMem (Dns4CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv4_ADDRESS)); + // + // Allocate new CacheEntry pool to update DNS cache dynamically. + // + Dns4CacheEntry = AllocateZeroPool (sizeof (EFI_DNS4_CACHE_ENTRY)); + if (Dns4CacheEntry == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } - if (CNameTtl != 0 && AnswerSection->Ttl != 0) { - Dns4CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl); - } else { - Dns4CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl); - } + Dns4CacheEntry->HostName = AllocateZeroPool (2 * (StrLen (Dns4TokenEntry->QueryHostName) + 1)); + if (Dns4CacheEntry->HostName == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } - UpdateDns4Cache (&mDriverData->Dns4CacheList, FALSE, TRUE, *Dns4CacheEntry); + CopyMem (Dns4CacheEntry->HostName, Dns4TokenEntry->QueryHostName, 2 * (StrLen (Dns4TokenEntry->QueryHostName) + 1)); + Dns4CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv4_ADDRESS)); + if (Dns4CacheEntry->IpAddress == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } - // - // Free allocated CacheEntry pool. - // - FreePool (Dns4CacheEntry->HostName); - Dns4CacheEntry->HostName = NULL; + CopyMem (Dns4CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv4_ADDRESS)); - FreePool (Dns4CacheEntry->IpAddress); - Dns4CacheEntry->IpAddress = NULL; + if ((CNameTtl != 0) && (AnswerSection->Ttl != 0)) { + Dns4CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl); + } else { + Dns4CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl); + } - FreePool (Dns4CacheEntry); - Dns4CacheEntry = NULL; + UpdateDns4Cache (&mDriverData->Dns4CacheList, FALSE, TRUE, *Dns4CacheEntry); - IpCount ++; - Status = EFI_SUCCESS; - break; - case DNS_TYPE_AAAA: - // - // This is address entry, get Data. - // - ASSERT (Dns6TokenEntry != NULL); + // + // Free allocated CacheEntry pool. + // + FreePool (Dns4CacheEntry->HostName); + Dns4CacheEntry->HostName = NULL; - if (AnswerSection->DataLength != 16) { - Status = EFI_ABORTED; - goto ON_EXIT; - } + FreePool (Dns4CacheEntry->IpAddress); + Dns4CacheEntry->IpAddress = NULL; - HostAddr6 = Dns6TokenEntry->Token->RspData.H2AData->IpList; - AnswerData = (UINT8 *) AnswerSection + sizeof (*AnswerSection); - CopyMem (&HostAddr6[IpCount], AnswerData, sizeof (EFI_IPv6_ADDRESS)); + FreePool (Dns4CacheEntry); + Dns4CacheEntry = NULL; - // - // Allocate new CacheEntry pool to update DNS cache dynamically. - // - Dns6CacheEntry = AllocateZeroPool (sizeof (EFI_DNS6_CACHE_ENTRY)); - if (Dns6CacheEntry == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } - Dns6CacheEntry->HostName = AllocateZeroPool (2 * (StrLen(Dns6TokenEntry->QueryHostName) + 1)); - if (Dns6CacheEntry->HostName == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } - CopyMem (Dns6CacheEntry->HostName, Dns6TokenEntry->QueryHostName, 2 * (StrLen(Dns6TokenEntry->QueryHostName) + 1)); - Dns6CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv6_ADDRESS)); - if (Dns6CacheEntry->IpAddress == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } - CopyMem (Dns6CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv6_ADDRESS)); + IpCount++; + Status = EFI_SUCCESS; + break; + case DNS_TYPE_AAAA: + // + // This is address entry, get Data. + // + ASSERT (Dns6TokenEntry != NULL); - if (CNameTtl != 0 && AnswerSection->Ttl != 0) { - Dns6CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl); - } else { - Dns6CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl); - } + if (AnswerSection->DataLength != 16) { + Status = EFI_ABORTED; + goto ON_EXIT; + } - UpdateDns6Cache (&mDriverData->Dns6CacheList, FALSE, TRUE, *Dns6CacheEntry); + HostAddr6 = Dns6TokenEntry->Token->RspData.H2AData->IpList; + AnswerData = (UINT8 *)AnswerSection + sizeof (*AnswerSection); + CopyMem (&HostAddr6[IpCount], AnswerData, sizeof (EFI_IPv6_ADDRESS)); - // - // Free allocated CacheEntry pool. - // - FreePool (Dns6CacheEntry->HostName); - Dns6CacheEntry->HostName = NULL; + // + // Allocate new CacheEntry pool to update DNS cache dynamically. + // + Dns6CacheEntry = AllocateZeroPool (sizeof (EFI_DNS6_CACHE_ENTRY)); + if (Dns6CacheEntry == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } - FreePool (Dns6CacheEntry->IpAddress); - Dns6CacheEntry->IpAddress = NULL; + Dns6CacheEntry->HostName = AllocateZeroPool (2 * (StrLen (Dns6TokenEntry->QueryHostName) + 1)); + if (Dns6CacheEntry->HostName == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } - FreePool (Dns6CacheEntry); - Dns6CacheEntry = NULL; + CopyMem (Dns6CacheEntry->HostName, Dns6TokenEntry->QueryHostName, 2 * (StrLen (Dns6TokenEntry->QueryHostName) + 1)); + Dns6CacheEntry->IpAddress = AllocateZeroPool (sizeof (EFI_IPv6_ADDRESS)); + if (Dns6CacheEntry->IpAddress == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } - IpCount ++; - Status = EFI_SUCCESS; - break; - case DNS_TYPE_CNAME: - // - // According RFC 1034 - 3.6.2, if the query name is an alias, the name server will include the CNAME - // record in the response and restart the query at the domain name specified in the data field of the - // CNAME record. So, just record the TTL value of the CNAME, then skip to parse the next record. - // - CNameTtl = AnswerSection->Ttl; - break; - default: - Status = EFI_UNSUPPORTED; - goto ON_EXIT; + CopyMem (Dns6CacheEntry->IpAddress, AnswerData, sizeof (EFI_IPv6_ADDRESS)); + + if ((CNameTtl != 0) && (AnswerSection->Ttl != 0)) { + Dns6CacheEntry->Timeout = MIN (CNameTtl, AnswerSection->Ttl); + } else { + Dns6CacheEntry->Timeout = MAX (CNameTtl, AnswerSection->Ttl); + } + + UpdateDns6Cache (&mDriverData->Dns6CacheList, FALSE, TRUE, *Dns6CacheEntry); + + // + // Free allocated CacheEntry pool. + // + FreePool (Dns6CacheEntry->HostName); + Dns6CacheEntry->HostName = NULL; + + FreePool (Dns6CacheEntry->IpAddress); + Dns6CacheEntry->IpAddress = NULL; + + FreePool (Dns6CacheEntry); + Dns6CacheEntry = NULL; + + IpCount++; + Status = EFI_SUCCESS; + break; + case DNS_TYPE_CNAME: + // + // According RFC 1034 - 3.6.2, if the query name is an alias, the name server will include the CNAME + // record in the response and restart the query at the domain name specified in the data field of the + // CNAME record. So, just record the TTL value of the CNAME, then skip to parse the next record. + // + CNameTtl = AnswerSection->Ttl; + break; + default: + Status = EFI_UNSUPPORTED; + goto ON_EXIT; } } // // Find next one // - AnswerName = (CHAR8 *) AnswerSection + sizeof (*AnswerSection) + AnswerSection->DataLength; - AnswerSectionNum ++; + AnswerName = (CHAR8 *)AnswerSection + sizeof (*AnswerSection) + AnswerSection->DataLength; + AnswerSectionNum++; } if (Instance->Service->IpVersion == IP_VERSION_4) { @@ -1646,8 +1669,8 @@ ON_COMPLETE: // // Parsing is complete, free the sending packet and signal Event here. // - if (Item != NULL && Item->Value != NULL) { - NetbufFree ((NET_BUF *) (Item->Value)); + if ((Item != NULL) && (Item->Value != NULL)) { + NetbufFree ((NET_BUF *)(Item->Value)); } if (Instance->Service->IpVersion == IP_VERSION_4) { @@ -1678,7 +1701,7 @@ ON_EXIT: if (Dns4TokenEntry->Token->RspData.GLookupData != NULL) { if (Dns4TokenEntry->Token->RspData.GLookupData->RRList != NULL) { while (RRCount != 0) { - RRCount --; + RRCount--; if (Dns4TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName != NULL) { FreePool (Dns4TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName); } @@ -1694,7 +1717,7 @@ ON_EXIT: FreePool (Dns4TokenEntry->Token->RspData.GLookupData); } } else { - if (QuerySection->Type == DNS_TYPE_A && Dns4TokenEntry->Token->RspData.H2AData != NULL) { + if ((QuerySection->Type == DNS_TYPE_A) && (Dns4TokenEntry->Token->RspData.H2AData != NULL)) { if (Dns4TokenEntry->Token->RspData.H2AData->IpList != NULL) { FreePool (Dns4TokenEntry->Token->RspData.H2AData->IpList); } @@ -1710,7 +1733,7 @@ ON_EXIT: if (Dns6TokenEntry->Token->RspData.GLookupData != NULL) { if (Dns6TokenEntry->Token->RspData.GLookupData->RRList != NULL) { while (RRCount != 0) { - RRCount --; + RRCount--; if (Dns6TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName != NULL) { FreePool (Dns6TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName); } @@ -1726,7 +1749,7 @@ ON_EXIT: FreePool (Dns6TokenEntry->Token->RspData.GLookupData); } } else { - if (QuerySection->Type == DNS_TYPE_AAAA && Dns6TokenEntry->Token->RspData.H2AData != NULL) { + if ((QuerySection->Type == DNS_TYPE_AAAA) && (Dns6TokenEntry->Token->RspData.H2AData != NULL)) { if (Dns6TokenEntry->Token->RspData.H2AData->IpList != NULL) { FreePool (Dns6TokenEntry->Token->RspData.H2AData->IpList); } @@ -1778,20 +1801,20 @@ ON_EXIT: VOID EFIAPI DnsOnPacketReceived ( - NET_BUF *Packet, - UDP_END_POINT *EndPoint, - EFI_STATUS IoStatus, - VOID *Context + NET_BUF *Packet, + UDP_END_POINT *EndPoint, + EFI_STATUS IoStatus, + VOID *Context ) { - DNS_INSTANCE *Instance; + DNS_INSTANCE *Instance; - UINT8 *RcvString; - UINT32 Len; + UINT8 *RcvString; + UINT32 Len; - BOOLEAN Completed; + BOOLEAN Completed; - Instance = (DNS_INSTANCE *) Context; + Instance = (DNS_INSTANCE *)Context; NET_CHECK_SIGNATURE (Instance, DNS_INSTANCE_SIGNATURE); RcvString = NULL; @@ -1836,29 +1859,29 @@ ON_EXIT: VOID EFIAPI DnsOnPacketSent ( - NET_BUF *Packet, - UDP_END_POINT *EndPoint, - EFI_STATUS IoStatus, - VOID *Context + NET_BUF *Packet, + UDP_END_POINT *EndPoint, + EFI_STATUS IoStatus, + VOID *Context ) { - DNS_INSTANCE *Instance; - LIST_ENTRY *Entry; - NET_MAP_ITEM *Item; - DNS4_TOKEN_ENTRY *Dns4TokenEntry; - DNS6_TOKEN_ENTRY *Dns6TokenEntry; + DNS_INSTANCE *Instance; + LIST_ENTRY *Entry; + NET_MAP_ITEM *Item; + DNS4_TOKEN_ENTRY *Dns4TokenEntry; + DNS6_TOKEN_ENTRY *Dns6TokenEntry; Dns4TokenEntry = NULL; Dns6TokenEntry = NULL; - Instance = (DNS_INSTANCE *) Context; + Instance = (DNS_INSTANCE *)Context; NET_CHECK_SIGNATURE (Instance, DNS_INSTANCE_SIGNATURE); if (Instance->Service->IpVersion == IP_VERSION_4) { NET_LIST_FOR_EACH (Entry, &Instance->Dns4TxTokens.Used) { Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); if (Packet == (NET_BUF *)(Item->Value)) { - Dns4TokenEntry = ((DNS4_TOKEN_ENTRY *)Item->Key); + Dns4TokenEntry = ((DNS4_TOKEN_ENTRY *)Item->Key); Dns4TokenEntry->PacketToLive = Dns4TokenEntry->Token->RetryInterval; break; } @@ -1867,7 +1890,7 @@ DnsOnPacketSent ( NET_LIST_FOR_EACH (Entry, &Instance->Dns6TxTokens.Used) { Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); if (Packet == (NET_BUF *)(Item->Value)) { - Dns6TokenEntry = ((DNS6_TOKEN_ENTRY *)Item->Key); + Dns6TokenEntry = ((DNS6_TOKEN_ENTRY *)Item->Key); Dns6TokenEntry->PacketToLive = Dns6TokenEntry->Token->RetryInterval; break; } @@ -1889,11 +1912,11 @@ DnsOnPacketSent ( **/ EFI_STATUS DoDnsQuery ( - IN DNS_INSTANCE *Instance, - IN NET_BUF *Packet + IN DNS_INSTANCE *Instance, + IN NET_BUF *Packet ) { - EFI_STATUS Status; + EFI_STATUS Status; // // Ready to receive the DNS response. @@ -1930,16 +1953,16 @@ DoDnsQuery ( **/ EFI_STATUS ConstructDNSQuery ( - IN DNS_INSTANCE *Instance, - IN CHAR8 *QueryName, - IN UINT16 Type, - IN UINT16 Class, - OUT NET_BUF **Packet + IN DNS_INSTANCE *Instance, + IN CHAR8 *QueryName, + IN UINT16 Type, + IN UINT16 Class, + OUT NET_BUF **Packet ) { - NET_FRAGMENT Frag; - DNS_HEADER *DnsHeader; - DNS_QUERY_SECTION *DnsQuery; + NET_FRAGMENT Frag; + DNS_HEADER *DnsHeader; + DNS_QUERY_SECTION *DnsQuery; // // Messages carried by UDP are restricted to 512 bytes (not counting the IP @@ -1953,23 +1976,23 @@ ConstructDNSQuery ( // // Fill header // - DnsHeader = (DNS_HEADER *) Frag.Bulk; - DnsHeader->Identification = (UINT16)NET_RANDOM (NetRandomInitSeed()); - DnsHeader->Flags.Uint16 = 0x0000; - DnsHeader->Flags.Bits.RD = 1; + DnsHeader = (DNS_HEADER *)Frag.Bulk; + DnsHeader->Identification = (UINT16)NET_RANDOM (NetRandomInitSeed ()); + DnsHeader->Flags.Uint16 = 0x0000; + DnsHeader->Flags.Bits.RD = 1; DnsHeader->Flags.Bits.OpCode = DNS_FLAGS_OPCODE_STANDARD; - DnsHeader->Flags.Bits.QR = DNS_FLAGS_QR_QUERY; - DnsHeader->QuestionsNum = 1; - DnsHeader->AnswersNum = 0; - DnsHeader->AuthorityNum = 0; - DnsHeader->AditionalNum = 0; + DnsHeader->Flags.Bits.QR = DNS_FLAGS_QR_QUERY; + DnsHeader->QuestionsNum = 1; + DnsHeader->AnswersNum = 0; + DnsHeader->AuthorityNum = 0; + DnsHeader->AditionalNum = 0; DnsHeader->Identification = HTONS (DnsHeader->Identification); - DnsHeader->Flags.Uint16 = HTONS (DnsHeader->Flags.Uint16); - DnsHeader->QuestionsNum = HTONS (DnsHeader->QuestionsNum); - DnsHeader->AnswersNum = HTONS (DnsHeader->AnswersNum); - DnsHeader->AuthorityNum = HTONS (DnsHeader->AuthorityNum); - DnsHeader->AditionalNum = HTONS (DnsHeader->AditionalNum); + DnsHeader->Flags.Uint16 = HTONS (DnsHeader->Flags.Uint16); + DnsHeader->QuestionsNum = HTONS (DnsHeader->QuestionsNum); + DnsHeader->AnswersNum = HTONS (DnsHeader->AnswersNum); + DnsHeader->AuthorityNum = HTONS (DnsHeader->AuthorityNum); + DnsHeader->AditionalNum = HTONS (DnsHeader->AditionalNum); Frag.Len = sizeof (*DnsHeader); @@ -1977,16 +2000,16 @@ ConstructDNSQuery ( // Fill Query name // CopyMem (Frag.Bulk + Frag.Len, QueryName, AsciiStrLen (QueryName)); - Frag.Len = (UINT32) (Frag.Len + AsciiStrLen (QueryName)); + Frag.Len = (UINT32)(Frag.Len + AsciiStrLen (QueryName)); *(Frag.Bulk + Frag.Len) = 0; - Frag.Len ++; + Frag.Len++; // // Rest query section // - DnsQuery = (DNS_QUERY_SECTION *) (Frag.Bulk + Frag.Len); + DnsQuery = (DNS_QUERY_SECTION *)(Frag.Bulk + Frag.Len); - DnsQuery->Type = HTONS (Type); + DnsQuery->Type = HTONS (Type); DnsQuery->Class = HTONS (Class); Frag.Len += sizeof (*DnsQuery); @@ -2003,7 +2026,7 @@ ConstructDNSQuery ( // // Store the UdpIo in ProtoData. // - *((UINTN *) &((*Packet)->ProtoData[0])) = (UINTN) (Instance->UdpIo); + *((UINTN *)&((*Packet)->ProtoData[0])) = (UINTN)(Instance->UdpIo); return EFI_SUCCESS; } @@ -2020,13 +2043,13 @@ ConstructDNSQuery ( **/ EFI_STATUS DnsRetransmit ( - IN DNS_INSTANCE *Instance, - IN NET_BUF *Packet + IN DNS_INSTANCE *Instance, + IN NET_BUF *Packet ) { - EFI_STATUS Status; + EFI_STATUS Status; - UINT8 *Buffer; + UINT8 *Buffer; ASSERT (Packet != NULL); @@ -2064,26 +2087,25 @@ DnsRetransmit ( VOID EFIAPI DnsOnTimerRetransmit ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - DNS_SERVICE *Service; + DNS_SERVICE *Service; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; - DNS_INSTANCE *Instance; - LIST_ENTRY *EntryNetMap; - NET_MAP_ITEM *ItemNetMap; - DNS4_TOKEN_ENTRY *Dns4TokenEntry; - DNS6_TOKEN_ENTRY *Dns6TokenEntry; + DNS_INSTANCE *Instance; + LIST_ENTRY *EntryNetMap; + NET_MAP_ITEM *ItemNetMap; + DNS4_TOKEN_ENTRY *Dns4TokenEntry; + DNS6_TOKEN_ENTRY *Dns6TokenEntry; Dns4TokenEntry = NULL; Dns6TokenEntry = NULL; - Service = (DNS_SERVICE *) Context; - + Service = (DNS_SERVICE *)Context; if (Service->IpVersion == IP_VERSION_4) { // @@ -2095,9 +2117,9 @@ DnsOnTimerRetransmit ( EntryNetMap = Instance->Dns4TxTokens.Used.ForwardLink; while (EntryNetMap != &Instance->Dns4TxTokens.Used) { - ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link); + ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link); Dns4TokenEntry = (DNS4_TOKEN_ENTRY *)(ItemNetMap->Key); - if (Dns4TokenEntry->PacketToLive == 0 || (--Dns4TokenEntry->PacketToLive > 0)) { + if ((Dns4TokenEntry->PacketToLive == 0) || (--Dns4TokenEntry->PacketToLive > 0)) { EntryNetMap = EntryNetMap->ForwardLink; continue; } @@ -2139,9 +2161,9 @@ DnsOnTimerRetransmit ( EntryNetMap = Instance->Dns6TxTokens.Used.ForwardLink; while (EntryNetMap != &Instance->Dns6TxTokens.Used) { - ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link); - Dns6TokenEntry = (DNS6_TOKEN_ENTRY *) (ItemNetMap->Key); - if (Dns6TokenEntry->PacketToLive == 0 || (--Dns6TokenEntry->PacketToLive > 0)) { + ItemNetMap = NET_LIST_USER_STRUCT (EntryNetMap, NET_MAP_ITEM, Link); + Dns6TokenEntry = (DNS6_TOKEN_ENTRY *)(ItemNetMap->Key); + if ((Dns6TokenEntry->PacketToLive == 0) || (--Dns6TokenEntry->PacketToLive > 0)) { EntryNetMap = EntryNetMap->ForwardLink; continue; } @@ -2151,7 +2173,7 @@ DnsOnTimerRetransmit ( // otherwise exit the transfer. // if (++Dns6TokenEntry->RetryCounting <= Dns6TokenEntry->Token->RetryCount) { - DnsRetransmit (Instance, (NET_BUF *) ItemNetMap->Value); + DnsRetransmit (Instance, (NET_BUF *)ItemNetMap->Value); EntryNetMap = EntryNetMap->ForwardLink; } else { // @@ -2166,7 +2188,7 @@ DnsOnTimerRetransmit ( // Free the sending packet. // if (ItemNetMap->Value != NULL) { - NetbufFree ((NET_BUF *) (ItemNetMap->Value)); + NetbufFree ((NET_BUF *)(ItemNetMap->Value)); } EntryNetMap = Instance->Dns6TxTokens.Used.ForwardLink; @@ -2186,14 +2208,14 @@ DnsOnTimerRetransmit ( VOID EFIAPI DnsOnTimerUpdate ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - DNS4_CACHE *Item4; - DNS6_CACHE *Item6; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + DNS4_CACHE *Item4; + DNS6_CACHE *Item6; Item4 = NULL; Item6 = NULL; @@ -2242,4 +2264,3 @@ DnsOnTimerUpdate ( } } } - diff --git a/NetworkPkg/DnsDxe/DnsImpl.h b/NetworkPkg/DnsDxe/DnsImpl.h index affbb4be8d..c57a6747d2 100644 --- a/NetworkPkg/DnsDxe/DnsImpl.h +++ b/NetworkPkg/DnsDxe/DnsImpl.h @@ -70,110 +70,109 @@ extern EFI_DNS6_PROTOCOL mDns6Protocol; // // DNS related // -#define DNS_SERVER_PORT 53 +#define DNS_SERVER_PORT 53 -#define DNS_PROTOCOL_UDP EFI_IP_PROTO_UDP -#define DNS_PROTOCOL_TCP EFI_IP_PROTO_TCP +#define DNS_PROTOCOL_UDP EFI_IP_PROTO_UDP +#define DNS_PROTOCOL_TCP EFI_IP_PROTO_TCP -#define DNS_STATE_UNCONFIGED 0 -#define DNS_STATE_CONFIGED 1 -#define DNS_STATE_DESTROY 2 +#define DNS_STATE_UNCONFIGED 0 +#define DNS_STATE_CONFIGED 1 +#define DNS_STATE_DESTROY 2 -#define DNS_DEFAULT_TIMEOUT 2 +#define DNS_DEFAULT_TIMEOUT 2 -#define DNS_TIME_TO_GETMAP 5 +#define DNS_TIME_TO_GETMAP 5 #pragma pack(1) -typedef union _DNS_FLAGS DNS_FLAGS; +typedef union _DNS_FLAGS DNS_FLAGS; typedef struct { - LIST_ENTRY AllCacheLink; - EFI_DNS4_CACHE_ENTRY DnsCache; + LIST_ENTRY AllCacheLink; + EFI_DNS4_CACHE_ENTRY DnsCache; } DNS4_CACHE; typedef struct { - LIST_ENTRY AllCacheLink; - EFI_DNS6_CACHE_ENTRY DnsCache; + LIST_ENTRY AllCacheLink; + EFI_DNS6_CACHE_ENTRY DnsCache; } DNS6_CACHE; typedef struct { - LIST_ENTRY AllServerLink; - EFI_IPv4_ADDRESS Dns4ServerIp; + LIST_ENTRY AllServerLink; + EFI_IPv4_ADDRESS Dns4ServerIp; } DNS4_SERVER_IP; typedef struct { - LIST_ENTRY AllServerLink; - EFI_IPv6_ADDRESS Dns6ServerIp; + LIST_ENTRY AllServerLink; + EFI_IPv6_ADDRESS Dns6ServerIp; } DNS6_SERVER_IP; typedef struct { - UINT32 RetryCounting; - UINT32 PacketToLive; - CHAR16 *QueryHostName; - EFI_IPv4_ADDRESS QueryIpAddress; - BOOLEAN GeneralLookUp; - EFI_DNS4_COMPLETION_TOKEN *Token; + UINT32 RetryCounting; + UINT32 PacketToLive; + CHAR16 *QueryHostName; + EFI_IPv4_ADDRESS QueryIpAddress; + BOOLEAN GeneralLookUp; + EFI_DNS4_COMPLETION_TOKEN *Token; } DNS4_TOKEN_ENTRY; typedef struct { - UINT32 RetryCounting; - UINT32 PacketToLive; - CHAR16 *QueryHostName; - EFI_IPv6_ADDRESS QueryIpAddress; - BOOLEAN GeneralLookUp; - EFI_DNS6_COMPLETION_TOKEN *Token; + UINT32 RetryCounting; + UINT32 PacketToLive; + CHAR16 *QueryHostName; + EFI_IPv6_ADDRESS QueryIpAddress; + BOOLEAN GeneralLookUp; + EFI_DNS6_COMPLETION_TOKEN *Token; } DNS6_TOKEN_ENTRY; union _DNS_FLAGS { struct { - UINT16 RCode:4; - UINT16 Zero:3; - UINT16 RA:1; - UINT16 RD:1; - UINT16 TC:1; - UINT16 AA:1; - UINT16 OpCode:4; - UINT16 QR:1; + UINT16 RCode : 4; + UINT16 Zero : 3; + UINT16 RA : 1; + UINT16 RD : 1; + UINT16 TC : 1; + UINT16 AA : 1; + UINT16 OpCode : 4; + UINT16 QR : 1; } Bits; - UINT16 Uint16; + UINT16 Uint16; }; #define DNS_FLAGS_QR_QUERY 0 #define DNS_FLAGS_QR_RESPONSE 1 -#define DNS_FLAGS_OPCODE_STANDARD 0 -#define DNS_FLAGS_OPCODE_INVERSE 1 -#define DNS_FLAGS_OPCODE_SERVER_STATE 2 +#define DNS_FLAGS_OPCODE_STANDARD 0 +#define DNS_FLAGS_OPCODE_INVERSE 1 +#define DNS_FLAGS_OPCODE_SERVER_STATE 2 #define DNS_FLAGS_RCODE_NO_ERROR 0 #define DNS_FLAGS_RCODE_NAME_ERROR 3 typedef struct { - UINT16 Identification; - DNS_FLAGS Flags; - UINT16 QuestionsNum; - UINT16 AnswersNum; - UINT16 AuthorityNum; - UINT16 AditionalNum; + UINT16 Identification; + DNS_FLAGS Flags; + UINT16 QuestionsNum; + UINT16 AnswersNum; + UINT16 AuthorityNum; + UINT16 AditionalNum; } DNS_HEADER; typedef struct { - UINT16 Type; - UINT16 Class; + UINT16 Type; + UINT16 Class; } DNS_QUERY_SECTION; typedef struct { - UINT16 Type; - UINT16 Class; - UINT32 Ttl; - UINT16 DataLength; + UINT16 Type; + UINT16 Class; + UINT32 Ttl; + UINT16 DataLength; } DNS_ANSWER_SECTION; #define DNS4_DOMAIN L"in-addr.arpa" #define DNS6_DOMAIN L"IP6.ARPA" - #pragma pack() /** @@ -188,8 +187,8 @@ typedef struct { **/ EFI_STATUS Dns4RemoveTokenEntry ( - IN NET_MAP *TokenMap, - IN DNS4_TOKEN_ENTRY *TokenEntry + IN NET_MAP *TokenMap, + IN DNS4_TOKEN_ENTRY *TokenEntry ); /** @@ -204,8 +203,8 @@ Dns4RemoveTokenEntry ( **/ EFI_STATUS Dns6RemoveTokenEntry ( - IN NET_MAP *TokenMap, - IN DNS6_TOKEN_ENTRY *TokenEntry + IN NET_MAP *TokenMap, + IN DNS6_TOKEN_ENTRY *TokenEntry ); /** @@ -270,9 +269,9 @@ Dns6CancelTokens ( EFI_STATUS EFIAPI GetDns4TokenEntry ( - IN NET_MAP *TokensMap, - IN EFI_DNS4_COMPLETION_TOKEN *Token, - OUT DNS4_TOKEN_ENTRY **TokenEntry + IN NET_MAP *TokensMap, + IN EFI_DNS4_COMPLETION_TOKEN *Token, + OUT DNS4_TOKEN_ENTRY **TokenEntry ); /** @@ -289,9 +288,9 @@ GetDns4TokenEntry ( EFI_STATUS EFIAPI GetDns6TokenEntry ( - IN NET_MAP *TokensMap, - IN EFI_DNS6_COMPLETION_TOKEN *Token, - OUT DNS6_TOKEN_ENTRY **TokenEntry + IN NET_MAP *TokensMap, + IN EFI_DNS6_COMPLETION_TOKEN *Token, + OUT DNS6_TOKEN_ENTRY **TokenEntry ); /** @@ -395,7 +394,7 @@ Dns6CopyConfigure ( VOID EFIAPI DnsDummyExtFree ( - IN VOID *Arg + IN VOID *Arg ); /** @@ -415,9 +414,9 @@ DnsDummyExtFree ( **/ BOOLEAN Dns4GetMapping ( - IN DNS_INSTANCE *Instance, - IN UDP_IO *UdpIo, - IN EFI_UDP4_CONFIG_DATA *UdpCfgData + IN DNS_INSTANCE *Instance, + IN UDP_IO *UdpIo, + IN EFI_UDP4_CONFIG_DATA *UdpCfgData ); /** @@ -434,9 +433,9 @@ Dns4GetMapping ( **/ BOOLEAN Dns6GetMapping ( - IN DNS_INSTANCE *Instance, - IN UDP_IO *UdpIo, - IN EFI_UDP6_CONFIG_DATA *UdpCfgData + IN DNS_INSTANCE *Instance, + IN UDP_IO *UdpIo, + IN EFI_UDP6_CONFIG_DATA *UdpCfgData ); /** @@ -451,8 +450,8 @@ Dns6GetMapping ( **/ EFI_STATUS Dns4ConfigUdp ( - IN DNS_INSTANCE *Instance, - IN UDP_IO *UdpIo + IN DNS_INSTANCE *Instance, + IN UDP_IO *UdpIo ); /** @@ -467,8 +466,8 @@ Dns4ConfigUdp ( **/ EFI_STATUS Dns6ConfigUdp ( - IN DNS_INSTANCE *Instance, - IN UDP_IO *UdpIo + IN DNS_INSTANCE *Instance, + IN UDP_IO *UdpIo ); /** @@ -488,10 +487,10 @@ Dns6ConfigUdp ( EFI_STATUS EFIAPI UpdateDns4Cache ( - IN LIST_ENTRY *Dns4CacheList, - IN BOOLEAN DeleteFlag, - IN BOOLEAN Override, - IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry + IN LIST_ENTRY *Dns4CacheList, + IN BOOLEAN DeleteFlag, + IN BOOLEAN Override, + IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry ); /** @@ -510,10 +509,10 @@ UpdateDns4Cache ( EFI_STATUS EFIAPI UpdateDns6Cache ( - IN LIST_ENTRY *Dns6CacheList, - IN BOOLEAN DeleteFlag, - IN BOOLEAN Override, - IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry + IN LIST_ENTRY *Dns6CacheList, + IN BOOLEAN DeleteFlag, + IN BOOLEAN Override, + IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry ); /** @@ -529,8 +528,8 @@ UpdateDns6Cache ( EFI_STATUS EFIAPI AddDns4ServerIp ( - IN LIST_ENTRY *Dns4ServerList, - IN EFI_IPv4_ADDRESS ServerIp + IN LIST_ENTRY *Dns4ServerList, + IN EFI_IPv4_ADDRESS ServerIp ); /** @@ -546,8 +545,8 @@ AddDns4ServerIp ( EFI_STATUS EFIAPI AddDns6ServerIp ( - IN LIST_ENTRY *Dns6ServerList, - IN EFI_IPv6_ADDRESS ServerIp + IN LIST_ENTRY *Dns6ServerList, + IN EFI_IPv6_ADDRESS ServerIp ); /** @@ -565,11 +564,11 @@ AddDns6ServerIp ( **/ BOOLEAN IsValidDnsResponse ( - IN NET_MAP *TokensMap, - IN UINT16 Identification, - IN UINT16 Type, - IN UINT16 Class, - OUT NET_MAP_ITEM **Item + IN NET_MAP *TokensMap, + IN UINT16 Identification, + IN UINT16 Type, + IN UINT16 Class, + OUT NET_MAP_ITEM **Item ); /** @@ -586,10 +585,10 @@ IsValidDnsResponse ( **/ EFI_STATUS ParseDnsResponse ( - IN OUT DNS_INSTANCE *Instance, - IN UINT8 *RxString, - IN UINT32 Length, - OUT BOOLEAN *Completed + IN OUT DNS_INSTANCE *Instance, + IN UINT8 *RxString, + IN UINT32 Length, + OUT BOOLEAN *Completed ); /** @@ -604,10 +603,10 @@ ParseDnsResponse ( VOID EFIAPI DnsOnPacketReceived ( - NET_BUF *Packet, - UDP_END_POINT *EndPoint, - EFI_STATUS IoStatus, - VOID *Context + NET_BUF *Packet, + UDP_END_POINT *EndPoint, + EFI_STATUS IoStatus, + VOID *Context ); /** @@ -622,10 +621,10 @@ DnsOnPacketReceived ( VOID EFIAPI DnsOnPacketSent ( - NET_BUF *Packet, - UDP_END_POINT *EndPoint, - EFI_STATUS IoStatus, - VOID *Context + NET_BUF *Packet, + UDP_END_POINT *EndPoint, + EFI_STATUS IoStatus, + VOID *Context ); /** @@ -640,8 +639,8 @@ DnsOnPacketSent ( **/ EFI_STATUS DoDnsQuery ( - IN DNS_INSTANCE *Instance, - IN NET_BUF *Packet + IN DNS_INSTANCE *Instance, + IN NET_BUF *Packet ); /** @@ -659,11 +658,11 @@ DoDnsQuery ( **/ EFI_STATUS ConstructDNSQuery ( - IN DNS_INSTANCE *Instance, - IN CHAR8 *QueryName, - IN UINT16 Type, - IN UINT16 Class, - OUT NET_BUF **Packet + IN DNS_INSTANCE *Instance, + IN CHAR8 *QueryName, + IN UINT16 Type, + IN UINT16 Class, + OUT NET_BUF **Packet ); /** @@ -678,8 +677,8 @@ ConstructDNSQuery ( **/ EFI_STATUS DnsRetransmit ( - IN DNS_INSTANCE *Instance, - IN NET_BUF *Packet + IN DNS_INSTANCE *Instance, + IN NET_BUF *Packet ); /** @@ -692,8 +691,8 @@ DnsRetransmit ( VOID EFIAPI DnsOnTimerRetransmit ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -706,11 +705,10 @@ DnsOnTimerRetransmit ( VOID EFIAPI DnsOnTimerUpdate ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); - /** Retrieve mode data of this DNS instance. @@ -729,8 +727,8 @@ DnsOnTimerUpdate ( EFI_STATUS EFIAPI Dns4GetModeData ( - IN EFI_DNS4_PROTOCOL *This, - OUT EFI_DNS4_MODE_DATA *DnsModeData + IN EFI_DNS4_PROTOCOL *This, + OUT EFI_DNS4_MODE_DATA *DnsModeData ); /** @@ -761,8 +759,8 @@ Dns4GetModeData ( EFI_STATUS EFIAPI Dns4Configure ( - IN EFI_DNS4_PROTOCOL *This, - IN EFI_DNS4_CONFIG_DATA *DnsConfigData + IN EFI_DNS4_PROTOCOL *This, + IN EFI_DNS4_CONFIG_DATA *DnsConfigData ); /** @@ -789,7 +787,7 @@ EFI_STATUS EFIAPI Dns4HostNameToIp ( IN EFI_DNS4_PROTOCOL *This, - IN CHAR16 *HostName, + IN CHAR16 *HostName, IN EFI_DNS4_COMPLETION_TOKEN *Token ); @@ -818,9 +816,9 @@ Dns4HostNameToIp ( EFI_STATUS EFIAPI Dns4IpToHostName ( - IN EFI_DNS4_PROTOCOL *This, - IN EFI_IPv4_ADDRESS IpAddress, - IN EFI_DNS4_COMPLETION_TOKEN *Token + IN EFI_DNS4_PROTOCOL *This, + IN EFI_IPv4_ADDRESS IpAddress, + IN EFI_DNS4_COMPLETION_TOKEN *Token ); /** @@ -853,11 +851,11 @@ Dns4IpToHostName ( EFI_STATUS EFIAPI Dns4GeneralLookUp ( - IN EFI_DNS4_PROTOCOL *This, - IN CHAR8 *QName, - IN UINT16 QType, - IN UINT16 QClass, - IN EFI_DNS4_COMPLETION_TOKEN *Token + IN EFI_DNS4_PROTOCOL *This, + IN CHAR8 *QName, + IN UINT16 QType, + IN UINT16 QClass, + IN EFI_DNS4_COMPLETION_TOKEN *Token ); /** @@ -889,10 +887,10 @@ Dns4GeneralLookUp ( EFI_STATUS EFIAPI Dns4UpdateDnsCache ( - IN EFI_DNS4_PROTOCOL *This, + IN EFI_DNS4_PROTOCOL *This, IN BOOLEAN DeleteFlag, IN BOOLEAN Override, - IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry + IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry ); /** @@ -919,7 +917,7 @@ Dns4UpdateDnsCache ( EFI_STATUS EFIAPI Dns4Poll ( - IN EFI_DNS4_PROTOCOL *This + IN EFI_DNS4_PROTOCOL *This ); /** @@ -954,7 +952,6 @@ Dns4Cancel ( IN EFI_DNS4_COMPLETION_TOKEN *Token ); - /** Retrieve mode data of this DNS instance. @@ -974,8 +971,8 @@ Dns4Cancel ( EFI_STATUS EFIAPI Dns6GetModeData ( - IN EFI_DNS6_PROTOCOL *This, - OUT EFI_DNS6_MODE_DATA *DnsModeData + IN EFI_DNS6_PROTOCOL *This, + OUT EFI_DNS6_MODE_DATA *DnsModeData ); /** @@ -1004,8 +1001,8 @@ Dns6GetModeData ( EFI_STATUS EFIAPI Dns6Configure ( - IN EFI_DNS6_PROTOCOL *This, - IN EFI_DNS6_CONFIG_DATA *DnsConfigData + IN EFI_DNS6_PROTOCOL *This, + IN EFI_DNS6_CONFIG_DATA *DnsConfigData ); /** @@ -1064,9 +1061,9 @@ Dns6HostNameToIp ( EFI_STATUS EFIAPI Dns6IpToHostName ( - IN EFI_DNS6_PROTOCOL *This, - IN EFI_IPv6_ADDRESS IpAddress, - IN EFI_DNS6_COMPLETION_TOKEN *Token + IN EFI_DNS6_PROTOCOL *This, + IN EFI_IPv6_ADDRESS IpAddress, + IN EFI_DNS6_COMPLETION_TOKEN *Token ); /** @@ -1101,11 +1098,11 @@ Dns6IpToHostName ( EFI_STATUS EFIAPI Dns6GeneralLookUp ( - IN EFI_DNS6_PROTOCOL *This, - IN CHAR8 *QName, - IN UINT16 QType, - IN UINT16 QClass, - IN EFI_DNS6_COMPLETION_TOKEN *Token + IN EFI_DNS6_PROTOCOL *This, + IN CHAR8 *QName, + IN UINT16 QType, + IN UINT16 QClass, + IN EFI_DNS6_COMPLETION_TOKEN *Token ); /** @@ -1138,10 +1135,10 @@ Dns6GeneralLookUp ( EFI_STATUS EFIAPI Dns6UpdateDnsCache ( - IN EFI_DNS6_PROTOCOL *This, + IN EFI_DNS6_PROTOCOL *This, IN BOOLEAN DeleteFlag, IN BOOLEAN Override, - IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry + IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry ); /** @@ -1170,7 +1167,7 @@ Dns6UpdateDnsCache ( EFI_STATUS EFIAPI Dns6Poll ( - IN EFI_DNS6_PROTOCOL *This + IN EFI_DNS6_PROTOCOL *This ); /** diff --git a/NetworkPkg/DnsDxe/DnsProtocol.c b/NetworkPkg/DnsDxe/DnsProtocol.c index a0bb58ef1d..563c6ce723 100644 --- a/NetworkPkg/DnsDxe/DnsProtocol.c +++ b/NetworkPkg/DnsDxe/DnsProtocol.c @@ -48,24 +48,24 @@ EFI_DNS6_PROTOCOL mDns6Protocol = { EFI_STATUS EFIAPI Dns4GetModeData ( - IN EFI_DNS4_PROTOCOL *This, - OUT EFI_DNS4_MODE_DATA *DnsModeData + IN EFI_DNS4_PROTOCOL *This, + OUT EFI_DNS4_MODE_DATA *DnsModeData ) { - DNS_INSTANCE *Instance; + DNS_INSTANCE *Instance; - EFI_TPL OldTpl; + EFI_TPL OldTpl; - UINTN Index; + UINTN Index; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; - DNS4_SERVER_IP *ServerItem; - EFI_IPv4_ADDRESS *ServerList; - DNS4_CACHE *CacheItem; - EFI_DNS4_CACHE_ENTRY *CacheList; - EFI_STATUS Status; + DNS4_SERVER_IP *ServerItem; + EFI_IPv4_ADDRESS *ServerList; + DNS4_CACHE *CacheItem; + EFI_DNS4_CACHE_ENTRY *CacheList; + EFI_STATUS Status; ServerItem = NULL; ServerList = NULL; @@ -73,7 +73,6 @@ Dns4GetModeData ( CacheList = NULL; Status = EFI_SUCCESS; - if ((This == NULL) || (DnsModeData == NULL)) { return EFI_INVALID_PARAMETER; } @@ -103,8 +102,8 @@ Dns4GetModeData ( NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns4ServerList) { Index++; } - DnsModeData->DnsServerCount = (UINT32) Index; - ServerList = AllocatePool (sizeof (EFI_IPv4_ADDRESS) * DnsModeData->DnsServerCount); + DnsModeData->DnsServerCount = (UINT32)Index; + ServerList = AllocatePool (sizeof (EFI_IPv4_ADDRESS) * DnsModeData->DnsServerCount); if (ServerList == NULL) { Status = EFI_OUT_OF_RESOURCES; Dns4CleanConfigure (&DnsModeData->DnsConfigData); @@ -122,12 +121,12 @@ Dns4GetModeData ( // // Get the DnsCacheCount and DnsCacheList // - Index =0; + Index = 0; NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns4CacheList) { Index++; } - DnsModeData->DnsCacheCount = (UINT32) Index; - CacheList = AllocatePool (sizeof (EFI_DNS4_CACHE_ENTRY) * DnsModeData->DnsCacheCount); + DnsModeData->DnsCacheCount = (UINT32)Index; + CacheList = AllocatePool (sizeof (EFI_DNS4_CACHE_ENTRY) * DnsModeData->DnsCacheCount); if (CacheList == NULL) { Status = EFI_OUT_OF_RESOURCES; Dns4CleanConfigure (&DnsModeData->DnsConfigData); @@ -135,7 +134,7 @@ Dns4GetModeData ( goto ON_EXIT; } - Index =0; + Index = 0; NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns4CacheList) { CacheItem = NET_LIST_USER_STRUCT (Entry, DNS4_CACHE, AllCacheLink); CopyMem (CacheList + Index, &CacheItem->DnsCache, sizeof (EFI_DNS4_CACHE_ENTRY)); @@ -176,30 +175,31 @@ ON_EXIT: EFI_STATUS EFIAPI Dns4Configure ( - IN EFI_DNS4_PROTOCOL *This, - IN EFI_DNS4_CONFIG_DATA *DnsConfigData + IN EFI_DNS4_PROTOCOL *This, + IN EFI_DNS4_CONFIG_DATA *DnsConfigData ) { - EFI_STATUS Status; - DNS_INSTANCE *Instance; + EFI_STATUS Status; + DNS_INSTANCE *Instance; - EFI_TPL OldTpl; - IP4_ADDR Ip; - IP4_ADDR Netmask; + EFI_TPL OldTpl; + IP4_ADDR Ip; + IP4_ADDR Netmask; - UINT32 ServerListCount; - EFI_IPv4_ADDRESS *ServerList; + UINT32 ServerListCount; + EFI_IPv4_ADDRESS *ServerList; Status = EFI_SUCCESS; ServerList = NULL; - if (This == NULL || - (DnsConfigData != NULL && ((DnsConfigData->DnsServerListCount != 0 && DnsConfigData->DnsServerList == NULL) || - (DnsConfigData->DnsServerListCount == 0 && DnsConfigData->DnsServerList != NULL)))) { + if ((This == NULL) || + ((DnsConfigData != NULL) && (((DnsConfigData->DnsServerListCount != 0) && (DnsConfigData->DnsServerList == NULL)) || + ((DnsConfigData->DnsServerListCount == 0) && (DnsConfigData->DnsServerList != NULL))))) + { return EFI_INVALID_PARAMETER; } - if (DnsConfigData != NULL && DnsConfigData->Protocol != DNS_PROTOCOL_UDP) { + if ((DnsConfigData != NULL) && (DnsConfigData->Protocol != DNS_PROTOCOL_UDP)) { return EFI_UNSUPPORTED; } @@ -213,8 +213,8 @@ Dns4Configure ( // // Reset the Instance if ConfigData is NULL // - if (!NetMapIsEmpty(&Instance->Dns4TxTokens)) { - Dns4InstanceCancelToken(Instance, NULL); + if (!NetMapIsEmpty (&Instance->Dns4TxTokens)) { + Dns4InstanceCancelToken (Instance, NULL); } if (Instance->UdpIo != NULL) { @@ -224,6 +224,7 @@ Dns4Configure ( if (Instance->Dns4CfgData.DnsServerList != NULL) { FreePool (Instance->Dns4CfgData.DnsServerList); } + ZeroMem (&Instance->Dns4CfgData, sizeof (EFI_DNS4_CONFIG_DATA)); Instance->State = DNS_STATE_UNCONFIGED; @@ -234,11 +235,12 @@ Dns4Configure ( CopyMem (&Ip, &DnsConfigData->StationIp, sizeof (IP4_ADDR)); CopyMem (&Netmask, &DnsConfigData->SubnetMask, sizeof (IP4_ADDR)); - Ip = NTOHL (Ip); - Netmask = NTOHL (Netmask); + Ip = NTOHL (Ip); + Netmask = NTOHL (Netmask); if (!DnsConfigData->UseDefaultSetting && - ((!IP4_IS_VALID_NETMASK (Netmask) || (Netmask != 0 && !NetIp4IsUnicast (Ip, Netmask))))) { + ((!IP4_IS_VALID_NETMASK (Netmask) || ((Netmask != 0) && !NetIp4IsUnicast (Ip, Netmask))))) + { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } @@ -263,7 +265,7 @@ Dns4Configure ( return Status; } - ASSERT(ServerList != NULL); + ASSERT (ServerList != NULL); OldTpl = gBS->RaiseTPL (TPL_CALLBACK); @@ -281,6 +283,7 @@ Dns4Configure ( FreePool (Instance->Dns4CfgData.DnsServerList); Instance->Dns4CfgData.DnsServerList = NULL; } + goto ON_EXIT; } @@ -293,6 +296,7 @@ Dns4Configure ( FreePool (Instance->Dns4CfgData.DnsServerList); Instance->Dns4CfgData.DnsServerList = NULL; } + goto ON_EXIT; } @@ -332,23 +336,23 @@ Dns4HostNameToIp ( IN EFI_DNS4_COMPLETION_TOKEN *Token ) { - EFI_STATUS Status; + EFI_STATUS Status; - DNS_INSTANCE *Instance; + DNS_INSTANCE *Instance; EFI_DNS4_CONFIG_DATA *ConfigData; - UINTN Index; - DNS4_CACHE *Item; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; + UINTN Index; + DNS4_CACHE *Item; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; - CHAR8 *QueryName; + CHAR8 *QueryName; - DNS4_TOKEN_ENTRY *TokenEntry; - NET_BUF *Packet; + DNS4_TOKEN_ENTRY *TokenEntry; + NET_BUF *Packet; - EFI_TPL OldTpl; + EFI_TPL OldTpl; Status = EFI_SUCCESS; Item = NULL; @@ -359,11 +363,11 @@ Dns4HostNameToIp ( // // Validate the parameters // - if ((This == NULL) || (HostName == NULL) || Token == NULL) { + if ((This == NULL) || (HostName == NULL) || (Token == NULL)) { return EFI_INVALID_PARAMETER; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL4 (This); @@ -417,7 +421,7 @@ Dns4HostNameToIp ( } Token->RspData.H2AData->IpCount = (UINT32)Index; - Token->RspData.H2AData->IpList = AllocatePool (sizeof (EFI_IPv4_ADDRESS) * Index); + Token->RspData.H2AData->IpList = AllocatePool (sizeof (EFI_IPv4_ADDRESS) * Index); if (Token->RspData.H2AData->IpList == NULL) { if (Token->RspData.H2AData != NULL) { FreePool (Token->RspData.H2AData); @@ -430,7 +434,7 @@ Dns4HostNameToIp ( Index = 0; NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns4CacheList) { Item = NET_LIST_USER_STRUCT (Entry, DNS4_CACHE, AllCacheLink); - if ((UINT32)Index < Token->RspData.H2AData->IpCount && StrCmp (HostName, Item->DnsCache.HostName) == 0) { + if (((UINT32)Index < Token->RspData.H2AData->IpCount) && (StrCmp (HostName, Item->DnsCache.HostName) == 0)) { CopyMem ((Token->RspData.H2AData->IpList) + Index, Item->DnsCache.IpAddress, sizeof (EFI_IPv4_ADDRESS)); Index++; } @@ -451,14 +455,14 @@ Dns4HostNameToIp ( // // Construct DNS TokenEntry. // - TokenEntry = AllocateZeroPool (sizeof(DNS4_TOKEN_ENTRY)); + TokenEntry = AllocateZeroPool (sizeof (DNS4_TOKEN_ENTRY)); if (TokenEntry == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } - TokenEntry->PacketToLive = Token->RetryInterval; - TokenEntry->Token = Token; + TokenEntry->PacketToLive = Token->RetryInterval; + TokenEntry->Token = Token; TokenEntry->QueryHostName = AllocateZeroPool (StrSize (HostName)); if (TokenEntry->QueryHostName == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -551,9 +555,9 @@ ON_EXIT: EFI_STATUS EFIAPI Dns4IpToHostName ( - IN EFI_DNS4_PROTOCOL *This, - IN EFI_IPv4_ADDRESS IpAddress, - IN EFI_DNS4_COMPLETION_TOKEN *Token + IN EFI_DNS4_PROTOCOL *This, + IN EFI_IPv4_ADDRESS IpAddress, + IN EFI_DNS4_COMPLETION_TOKEN *Token ) { return EFI_UNSUPPORTED; @@ -589,23 +593,23 @@ Dns4IpToHostName ( EFI_STATUS EFIAPI Dns4GeneralLookUp ( - IN EFI_DNS4_PROTOCOL *This, - IN CHAR8 *QName, - IN UINT16 QType, - IN UINT16 QClass, - IN EFI_DNS4_COMPLETION_TOKEN *Token + IN EFI_DNS4_PROTOCOL *This, + IN CHAR8 *QName, + IN UINT16 QType, + IN UINT16 QClass, + IN EFI_DNS4_COMPLETION_TOKEN *Token ) { - EFI_STATUS Status; + EFI_STATUS Status; - DNS_INSTANCE *Instance; + DNS_INSTANCE *Instance; EFI_DNS4_CONFIG_DATA *ConfigData; - DNS4_TOKEN_ENTRY *TokenEntry; - NET_BUF *Packet; + DNS4_TOKEN_ENTRY *TokenEntry; + NET_BUF *Packet; - EFI_TPL OldTpl; + EFI_TPL OldTpl; Status = EFI_SUCCESS; TokenEntry = NULL; @@ -614,11 +618,11 @@ Dns4GeneralLookUp ( // // Validate the parameters // - if ((This == NULL) || (QName == NULL) || Token == NULL) { + if ((This == NULL) || (QName == NULL) || (Token == NULL)) { return EFI_INVALID_PARAMETER; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL4 (This); @@ -655,15 +659,15 @@ Dns4GeneralLookUp ( // // Construct DNS TokenEntry. // - TokenEntry = AllocateZeroPool (sizeof(DNS4_TOKEN_ENTRY)); + TokenEntry = AllocateZeroPool (sizeof (DNS4_TOKEN_ENTRY)); if (TokenEntry == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } - TokenEntry->PacketToLive = Token->RetryInterval; + TokenEntry->PacketToLive = Token->RetryInterval; TokenEntry->GeneralLookUp = TRUE; - TokenEntry->Token = Token; + TokenEntry->Token = Token; // // Construct DNS Query Packet. @@ -741,18 +745,18 @@ ON_EXIT: EFI_STATUS EFIAPI Dns4UpdateDnsCache ( - IN EFI_DNS4_PROTOCOL *This, - IN BOOLEAN DeleteFlag, - IN BOOLEAN Override, - IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry + IN EFI_DNS4_PROTOCOL *This, + IN BOOLEAN DeleteFlag, + IN BOOLEAN Override, + IN EFI_DNS4_CACHE_ENTRY DnsCacheEntry ) { - EFI_STATUS Status; - EFI_TPL OldTpl; + EFI_STATUS Status; + EFI_TPL OldTpl; Status = EFI_SUCCESS; - if (DnsCacheEntry.HostName == NULL || DnsCacheEntry.IpAddress == NULL || DnsCacheEntry.Timeout == 0) { + if ((DnsCacheEntry.HostName == NULL) || (DnsCacheEntry.IpAddress == NULL) || (DnsCacheEntry.Timeout == 0)) { return EFI_INVALID_PARAMETER; } @@ -792,11 +796,11 @@ Dns4UpdateDnsCache ( EFI_STATUS EFIAPI Dns4Poll ( - IN EFI_DNS4_PROTOCOL *This + IN EFI_DNS4_PROTOCOL *This ) { - DNS_INSTANCE *Instance; - EFI_UDP4_PROTOCOL *Udp; + DNS_INSTANCE *Instance; + EFI_UDP4_PROTOCOL *Udp; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -847,9 +851,9 @@ Dns4Cancel ( IN EFI_DNS4_COMPLETION_TOKEN *Token ) { - EFI_STATUS Status; - DNS_INSTANCE *Instance; - EFI_TPL OldTpl; + EFI_STATUS Status; + DNS_INSTANCE *Instance; + EFI_TPL OldTpl; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -897,24 +901,24 @@ Dns4Cancel ( EFI_STATUS EFIAPI Dns6GetModeData ( - IN EFI_DNS6_PROTOCOL *This, - OUT EFI_DNS6_MODE_DATA *DnsModeData + IN EFI_DNS6_PROTOCOL *This, + OUT EFI_DNS6_MODE_DATA *DnsModeData ) { - DNS_INSTANCE *Instance; + DNS_INSTANCE *Instance; - EFI_TPL OldTpl; + EFI_TPL OldTpl; - UINTN Index; + UINTN Index; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; - DNS6_SERVER_IP *ServerItem; - EFI_IPv6_ADDRESS *ServerList; - DNS6_CACHE *CacheItem; - EFI_DNS6_CACHE_ENTRY *CacheList; - EFI_STATUS Status; + DNS6_SERVER_IP *ServerItem; + EFI_IPv6_ADDRESS *ServerList; + DNS6_CACHE *CacheItem; + EFI_DNS6_CACHE_ENTRY *CacheList; + EFI_STATUS Status; ServerItem = NULL; ServerList = NULL; @@ -928,7 +932,7 @@ Dns6GetModeData ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This); + Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This); if (Instance->State == DNS_STATE_UNCONFIGED) { Status = EFI_NOT_STARTED; goto ON_EXIT; @@ -951,8 +955,8 @@ Dns6GetModeData ( NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns6ServerList) { Index++; } - DnsModeData->DnsServerCount = (UINT32) Index; - ServerList = AllocatePool (sizeof(EFI_IPv6_ADDRESS) * DnsModeData->DnsServerCount); + DnsModeData->DnsServerCount = (UINT32)Index; + ServerList = AllocatePool (sizeof (EFI_IPv6_ADDRESS) * DnsModeData->DnsServerCount); if (ServerList == NULL) { Status = EFI_OUT_OF_RESOURCES; Dns6CleanConfigure (&DnsModeData->DnsConfigData); @@ -970,12 +974,12 @@ Dns6GetModeData ( // // Get the DnsCacheCount and DnsCacheList // - Index =0; + Index = 0; NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns6CacheList) { Index++; } - DnsModeData->DnsCacheCount = (UINT32) Index; - CacheList = AllocatePool (sizeof(EFI_DNS6_CACHE_ENTRY) * DnsModeData->DnsCacheCount); + DnsModeData->DnsCacheCount = (UINT32)Index; + CacheList = AllocatePool (sizeof (EFI_DNS6_CACHE_ENTRY) * DnsModeData->DnsCacheCount); if (CacheList == NULL) { Status = EFI_OUT_OF_RESOURCES; Dns6CleanConfigure (&DnsModeData->DnsConfigData); @@ -983,7 +987,7 @@ Dns6GetModeData ( goto ON_EXIT; } - Index =0; + Index = 0; NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns6CacheList) { CacheItem = NET_LIST_USER_STRUCT (Entry, DNS6_CACHE, AllCacheLink); CopyMem (CacheList + Index, &CacheItem->DnsCache, sizeof (EFI_DNS6_CACHE_ENTRY)); @@ -1022,28 +1026,29 @@ ON_EXIT: EFI_STATUS EFIAPI Dns6Configure ( - IN EFI_DNS6_PROTOCOL *This, - IN EFI_DNS6_CONFIG_DATA *DnsConfigData + IN EFI_DNS6_PROTOCOL *This, + IN EFI_DNS6_CONFIG_DATA *DnsConfigData ) { - EFI_STATUS Status; - DNS_INSTANCE *Instance; + EFI_STATUS Status; + DNS_INSTANCE *Instance; - EFI_TPL OldTpl; + EFI_TPL OldTpl; - UINT32 ServerListCount; - EFI_IPv6_ADDRESS *ServerList; + UINT32 ServerListCount; + EFI_IPv6_ADDRESS *ServerList; Status = EFI_SUCCESS; ServerList = NULL; - if (This == NULL || - (DnsConfigData != NULL && ((DnsConfigData->DnsServerCount != 0 && DnsConfigData->DnsServerList == NULL) || - (DnsConfigData->DnsServerCount == 0 && DnsConfigData->DnsServerList != NULL)))) { + if ((This == NULL) || + ((DnsConfigData != NULL) && (((DnsConfigData->DnsServerCount != 0) && (DnsConfigData->DnsServerList == NULL)) || + ((DnsConfigData->DnsServerCount == 0) && (DnsConfigData->DnsServerList != NULL))))) + { return EFI_INVALID_PARAMETER; } - if (DnsConfigData != NULL && DnsConfigData->Protocol != DNS_PROTOCOL_UDP) { + if ((DnsConfigData != NULL) && (DnsConfigData->Protocol != DNS_PROTOCOL_UDP)) { return EFI_UNSUPPORTED; } @@ -1057,8 +1062,8 @@ Dns6Configure ( // // Reset the Instance if ConfigData is NULL // - if (!NetMapIsEmpty(&Instance->Dns6TxTokens)) { - Dns6InstanceCancelToken(Instance, NULL); + if (!NetMapIsEmpty (&Instance->Dns6TxTokens)) { + Dns6InstanceCancelToken (Instance, NULL); } if (Instance->UdpIo != NULL) { @@ -1068,6 +1073,7 @@ Dns6Configure ( if (Instance->Dns6CfgData.DnsServerList != NULL) { FreePool (Instance->Dns6CfgData.DnsServerList); } + ZeroMem (&Instance->Dns6CfgData, sizeof (EFI_DNS6_CONFIG_DATA)); Instance->State = DNS_STATE_UNCONFIGED; @@ -1089,7 +1095,7 @@ Dns6Configure ( gBS->RestoreTPL (OldTpl); // - //The DNS instance will retrieve DNS server from DHCP Server. + // The DNS instance will retrieve DNS server from DHCP Server. // Status = GetDns6ServerFromDhcp6 ( Instance->Service->ImageHandle, @@ -1101,7 +1107,7 @@ Dns6Configure ( goto ON_EXIT; } - ASSERT(ServerList != NULL); + ASSERT (ServerList != NULL); OldTpl = gBS->RaiseTPL (TPL_CALLBACK); @@ -1121,6 +1127,7 @@ Dns6Configure ( FreePool (Instance->Dns6CfgData.DnsServerList); Instance->Dns6CfgData.DnsServerList = NULL; } + goto ON_EXIT; } @@ -1133,6 +1140,7 @@ Dns6Configure ( FreePool (Instance->Dns6CfgData.DnsServerList); Instance->Dns6CfgData.DnsServerList = NULL; } + goto ON_EXIT; } @@ -1174,23 +1182,23 @@ Dns6HostNameToIp ( IN EFI_DNS6_COMPLETION_TOKEN *Token ) { - EFI_STATUS Status; + EFI_STATUS Status; - DNS_INSTANCE *Instance; + DNS_INSTANCE *Instance; EFI_DNS6_CONFIG_DATA *ConfigData; - UINTN Index; - DNS6_CACHE *Item; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; + UINTN Index; + DNS6_CACHE *Item; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; - CHAR8 *QueryName; + CHAR8 *QueryName; - DNS6_TOKEN_ENTRY *TokenEntry; - NET_BUF *Packet; + DNS6_TOKEN_ENTRY *TokenEntry; + NET_BUF *Packet; - EFI_TPL OldTpl; + EFI_TPL OldTpl; Status = EFI_SUCCESS; Item = NULL; @@ -1201,11 +1209,11 @@ Dns6HostNameToIp ( // // Validate the parameters // - if ((This == NULL) || (HostName == NULL) || Token == NULL) { + if ((This == NULL) || (HostName == NULL) || (Token == NULL)) { return EFI_INVALID_PARAMETER; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This); @@ -1259,7 +1267,7 @@ Dns6HostNameToIp ( } Token->RspData.H2AData->IpCount = (UINT32)Index; - Token->RspData.H2AData->IpList = AllocatePool (sizeof (EFI_IPv6_ADDRESS) * Index); + Token->RspData.H2AData->IpList = AllocatePool (sizeof (EFI_IPv6_ADDRESS) * Index); if (Token->RspData.H2AData->IpList == NULL) { if (Token->RspData.H2AData != NULL) { FreePool (Token->RspData.H2AData); @@ -1272,7 +1280,7 @@ Dns6HostNameToIp ( Index = 0; NET_LIST_FOR_EACH_SAFE (Entry, Next, &mDriverData->Dns6CacheList) { Item = NET_LIST_USER_STRUCT (Entry, DNS6_CACHE, AllCacheLink); - if ((UINT32)Index < Token->RspData.H2AData->IpCount && StrCmp (HostName, Item->DnsCache.HostName) == 0) { + if (((UINT32)Index < Token->RspData.H2AData->IpCount) && (StrCmp (HostName, Item->DnsCache.HostName) == 0)) { CopyMem ((Token->RspData.H2AData->IpList) + Index, Item->DnsCache.IpAddress, sizeof (EFI_IPv6_ADDRESS)); Index++; } @@ -1299,8 +1307,8 @@ Dns6HostNameToIp ( goto ON_EXIT; } - TokenEntry->PacketToLive = Token->RetryInterval; - TokenEntry->Token = Token; + TokenEntry->PacketToLive = Token->RetryInterval; + TokenEntry->Token = Token; TokenEntry->QueryHostName = AllocateZeroPool (StrSize (HostName)); if (TokenEntry->QueryHostName == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1394,9 +1402,9 @@ ON_EXIT: EFI_STATUS EFIAPI Dns6IpToHostName ( - IN EFI_DNS6_PROTOCOL *This, - IN EFI_IPv6_ADDRESS IpAddress, - IN EFI_DNS6_COMPLETION_TOKEN *Token + IN EFI_DNS6_PROTOCOL *This, + IN EFI_IPv6_ADDRESS IpAddress, + IN EFI_DNS6_COMPLETION_TOKEN *Token ) { return EFI_UNSUPPORTED; @@ -1434,23 +1442,23 @@ Dns6IpToHostName ( EFI_STATUS EFIAPI Dns6GeneralLookUp ( - IN EFI_DNS6_PROTOCOL *This, - IN CHAR8 *QName, - IN UINT16 QType, - IN UINT16 QClass, - IN EFI_DNS6_COMPLETION_TOKEN *Token + IN EFI_DNS6_PROTOCOL *This, + IN CHAR8 *QName, + IN UINT16 QType, + IN UINT16 QClass, + IN EFI_DNS6_COMPLETION_TOKEN *Token ) { - EFI_STATUS Status; + EFI_STATUS Status; - DNS_INSTANCE *Instance; + DNS_INSTANCE *Instance; EFI_DNS6_CONFIG_DATA *ConfigData; - DNS6_TOKEN_ENTRY *TokenEntry; - NET_BUF *Packet; + DNS6_TOKEN_ENTRY *TokenEntry; + NET_BUF *Packet; - EFI_TPL OldTpl; + EFI_TPL OldTpl; Status = EFI_SUCCESS; TokenEntry = NULL; @@ -1459,11 +1467,11 @@ Dns6GeneralLookUp ( // // Validate the parameters // - if ((This == NULL) || (QName == NULL) || Token == NULL) { + if ((This == NULL) || (QName == NULL) || (Token == NULL)) { return EFI_INVALID_PARAMETER; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This); @@ -1500,15 +1508,15 @@ Dns6GeneralLookUp ( // // Construct DNS TokenEntry. // - TokenEntry = AllocateZeroPool (sizeof(DNS6_TOKEN_ENTRY)); + TokenEntry = AllocateZeroPool (sizeof (DNS6_TOKEN_ENTRY)); if (TokenEntry == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } - TokenEntry->PacketToLive = Token->RetryInterval; + TokenEntry->PacketToLive = Token->RetryInterval; TokenEntry->GeneralLookUp = TRUE; - TokenEntry->Token = Token; + TokenEntry->Token = Token; // // Construct DNS Query Packet. @@ -1587,18 +1595,18 @@ ON_EXIT: EFI_STATUS EFIAPI Dns6UpdateDnsCache ( - IN EFI_DNS6_PROTOCOL *This, - IN BOOLEAN DeleteFlag, - IN BOOLEAN Override, - IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry + IN EFI_DNS6_PROTOCOL *This, + IN BOOLEAN DeleteFlag, + IN BOOLEAN Override, + IN EFI_DNS6_CACHE_ENTRY DnsCacheEntry ) { - EFI_STATUS Status; - EFI_TPL OldTpl; + EFI_STATUS Status; + EFI_TPL OldTpl; Status = EFI_SUCCESS; - if (DnsCacheEntry.HostName == NULL || DnsCacheEntry.IpAddress == NULL || DnsCacheEntry.Timeout == 0) { + if ((DnsCacheEntry.HostName == NULL) || (DnsCacheEntry.IpAddress == NULL) || (DnsCacheEntry.Timeout == 0)) { return EFI_INVALID_PARAMETER; } @@ -1640,11 +1648,11 @@ Dns6UpdateDnsCache ( EFI_STATUS EFIAPI Dns6Poll ( - IN EFI_DNS6_PROTOCOL *This + IN EFI_DNS6_PROTOCOL *This ) { - DNS_INSTANCE *Instance; - EFI_UDP6_PROTOCOL *Udp; + DNS_INSTANCE *Instance; + EFI_UDP6_PROTOCOL *Udp; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -1696,9 +1704,9 @@ Dns6Cancel ( IN EFI_DNS6_COMPLETION_TOKEN *Token ) { - EFI_STATUS Status; - DNS_INSTANCE *Instance; - EFI_TPL OldTpl; + EFI_STATUS Status; + DNS_INSTANCE *Instance; + EFI_TPL OldTpl; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -1726,4 +1734,3 @@ Dns6Cancel ( return Status; } - diff --git a/NetworkPkg/DpcDxe/Dpc.c b/NetworkPkg/DpcDxe/Dpc.c index 7c85dd8757..33eeccc7d2 100644 --- a/NetworkPkg/DpcDxe/Dpc.c +++ b/NetworkPkg/DpcDxe/Dpc.c @@ -22,7 +22,7 @@ EFI_HANDLE mDpcHandle = NULL; // // The EFI_DPC_PROTOCOL instances that is installed onto mDpcHandle // -EFI_DPC_PROTOCOL mDpc = { +EFI_DPC_PROTOCOL mDpc = { DpcQueueDpc, DpcDispatchDpc }; @@ -30,7 +30,7 @@ EFI_DPC_PROTOCOL mDpc = { // // Global variables used to measure the DPC Queue Depths // -UINTN mDpcQueueDepth = 0; +UINTN mDpcQueueDepth = 0; UINTN mMaxDpcQueueDepth = 0; // @@ -39,14 +39,14 @@ UINTN mMaxDpcQueueDepth = 0; // If the free list is empty and a DPC is queued, the free list is grown by allocating // an additional set of DPC entries. // -LIST_ENTRY mDpcEntryFreeList = INITIALIZE_LIST_HEAD_VARIABLE(mDpcEntryFreeList); +LIST_ENTRY mDpcEntryFreeList = INITIALIZE_LIST_HEAD_VARIABLE (mDpcEntryFreeList); // // An array of DPC queues. A DPC queue is allocated for every level EFI_TPL value. // As DPCs are queued, they are added to the end of the linked list. // As DPCs are dispatched, they are removed from the beginning of the linked list. // -LIST_ENTRY mDpcQueue[TPL_HIGH_LEVEL + 1]; +LIST_ENTRY mDpcQueue[TPL_HIGH_LEVEL + 1]; /** Add a Deferred Procedure Call to the end of the DPC queue. @@ -81,7 +81,7 @@ DpcQueueDpc ( // // Make sure DpcTpl is valid // - if (DpcTpl < TPL_APPLICATION || DpcTpl > TPL_HIGH_LEVEL) { + if ((DpcTpl < TPL_APPLICATION) || (DpcTpl > TPL_HIGH_LEVEL)) { return EFI_INVALID_PARAMETER; } @@ -265,7 +265,7 @@ DpcDispatchDpc ( // // Invoke the DPC passing in its context // - (DpcEntry->DpcProcedure) (DpcEntry->DpcContext); + (DpcEntry->DpcProcedure)(DpcEntry->DpcContext); // // At least one DPC has been invoked, so set the return status to EFI_SUCCESS diff --git a/NetworkPkg/DpcDxe/Dpc.h b/NetworkPkg/DpcDxe/Dpc.h index a5e6f7b62f..e94858e698 100644 --- a/NetworkPkg/DpcDxe/Dpc.h +++ b/NetworkPkg/DpcDxe/Dpc.h @@ -28,9 +28,9 @@ Abstract: // list or on a DPC queue at a specific EFI_TPL. // typedef struct { - LIST_ENTRY ListEntry; - EFI_DPC_PROCEDURE DpcProcedure; - VOID *DpcContext; + LIST_ENTRY ListEntry; + EFI_DPC_PROCEDURE DpcProcedure; + VOID *DpcContext; } DPC_ENTRY; /** @@ -77,4 +77,3 @@ DpcDispatchDpc ( ); #endif - diff --git a/NetworkPkg/HttpBootDxe/HttpBootClient.c b/NetworkPkg/HttpBootDxe/HttpBootClient.c index d12076b220..62e87238fe 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootClient.c +++ b/NetworkPkg/HttpBootDxe/HttpBootClient.c @@ -21,15 +21,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS HttpBootUpdateDevicePath ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_DEV_PATH *Node; - EFI_DEVICE_PATH_PROTOCOL *TmpIpDevicePath; - EFI_DEVICE_PATH_PROTOCOL *TmpDnsDevicePath; - EFI_DEVICE_PATH_PROTOCOL *NewDevicePath; - UINTN Length; - EFI_STATUS Status; + EFI_DEV_PATH *Node; + EFI_DEVICE_PATH_PROTOCOL *TmpIpDevicePath; + EFI_DEVICE_PATH_PROTOCOL *TmpDnsDevicePath; + EFI_DEVICE_PATH_PROTOCOL *NewDevicePath; + UINTN Length; + EFI_STATUS Status; TmpIpDevicePath = NULL; TmpDnsDevicePath = NULL; @@ -42,6 +42,7 @@ HttpBootUpdateDevicePath ( if (Node == NULL) { return EFI_OUT_OF_RESOURCES; } + Node->Ipv4.Header.Type = MESSAGING_DEVICE_PATH; Node->Ipv4.Header.SubType = MSG_IPv4_DP; SetDevicePathNodeLength (Node, sizeof (IPv4_DEVICE_PATH)); @@ -56,8 +57,9 @@ HttpBootUpdateDevicePath ( if (Node == NULL) { return EFI_OUT_OF_RESOURCES; } - Node->Ipv6.Header.Type = MESSAGING_DEVICE_PATH; - Node->Ipv6.Header.SubType = MSG_IPv6_DP; + + Node->Ipv6.Header.Type = MESSAGING_DEVICE_PATH; + Node->Ipv6.Header.SubType = MSG_IPv6_DP; SetDevicePathNodeLength (Node, sizeof (IPv6_DEVICE_PATH)); Node->Ipv6.PrefixLength = IP6_PREFIX_LENGTH; Node->Ipv6.RemotePort = Private->Port; @@ -68,7 +70,7 @@ HttpBootUpdateDevicePath ( CopyMem (&Node->Ipv6.GatewayIpAddress, &Private->GatewayIp.v6, sizeof (EFI_IPv6_ADDRESS)); } - TmpIpDevicePath = AppendDevicePathNode (Private->ParentDevicePath, (EFI_DEVICE_PATH_PROTOCOL*) Node); + TmpIpDevicePath = AppendDevicePathNode (Private->ParentDevicePath, (EFI_DEVICE_PATH_PROTOCOL *)Node); FreePool (Node); if (TmpIpDevicePath == NULL) { return EFI_OUT_OF_RESOURCES; @@ -79,18 +81,19 @@ HttpBootUpdateDevicePath ( // if (Private->DnsServerIp != NULL) { Length = sizeof (EFI_DEVICE_PATH_PROTOCOL) + sizeof (Node->Dns.IsIPv6) + Private->DnsServerCount * sizeof (EFI_IP_ADDRESS); - Node = AllocatePool (Length); + Node = AllocatePool (Length); if (Node == NULL) { FreePool (TmpIpDevicePath); return EFI_OUT_OF_RESOURCES; } + Node->DevPath.Type = MESSAGING_DEVICE_PATH; Node->DevPath.SubType = MSG_DNS_DP; SetDevicePathNodeLength (Node, Length); Node->Dns.IsIPv6 = Private->UsingIpv6 ? 0x01 : 0x00; - CopyMem ((UINT8*) Node + sizeof (EFI_DEVICE_PATH_PROTOCOL) + sizeof (Node->Dns.IsIPv6), Private->DnsServerIp, Private->DnsServerCount * sizeof (EFI_IP_ADDRESS)); + CopyMem ((UINT8 *)Node + sizeof (EFI_DEVICE_PATH_PROTOCOL) + sizeof (Node->Dns.IsIPv6), Private->DnsServerIp, Private->DnsServerCount * sizeof (EFI_IP_ADDRESS)); - TmpDnsDevicePath = AppendDevicePathNode (TmpIpDevicePath, (EFI_DEVICE_PATH_PROTOCOL*) Node); + TmpDnsDevicePath = AppendDevicePathNode (TmpIpDevicePath, (EFI_DEVICE_PATH_PROTOCOL *)Node); FreePool (Node); FreePool (TmpIpDevicePath); TmpIpDevicePath = NULL; @@ -103,29 +106,33 @@ HttpBootUpdateDevicePath ( // Update the URI node with the boot file URI. // Length = sizeof (EFI_DEVICE_PATH_PROTOCOL) + AsciiStrSize (Private->BootFileUri); - Node = AllocatePool (Length); + Node = AllocatePool (Length); if (Node == NULL) { if (TmpIpDevicePath != NULL) { FreePool (TmpIpDevicePath); } + if (TmpDnsDevicePath != NULL) { FreePool (TmpDnsDevicePath); } + return EFI_OUT_OF_RESOURCES; } + Node->DevPath.Type = MESSAGING_DEVICE_PATH; Node->DevPath.SubType = MSG_URI_DP; SetDevicePathNodeLength (Node, Length); - CopyMem ((UINT8*) Node + sizeof (EFI_DEVICE_PATH_PROTOCOL), Private->BootFileUri, AsciiStrSize (Private->BootFileUri)); + CopyMem ((UINT8 *)Node + sizeof (EFI_DEVICE_PATH_PROTOCOL), Private->BootFileUri, AsciiStrSize (Private->BootFileUri)); if (TmpDnsDevicePath != NULL) { - NewDevicePath = AppendDevicePathNode (TmpDnsDevicePath, (EFI_DEVICE_PATH_PROTOCOL*) Node); + NewDevicePath = AppendDevicePathNode (TmpDnsDevicePath, (EFI_DEVICE_PATH_PROTOCOL *)Node); FreePool (TmpDnsDevicePath); } else { ASSERT (TmpIpDevicePath != NULL); - NewDevicePath = AppendDevicePathNode (TmpIpDevicePath, (EFI_DEVICE_PATH_PROTOCOL*) Node); + NewDevicePath = AppendDevicePathNode (TmpIpDevicePath, (EFI_DEVICE_PATH_PROTOCOL *)Node); FreePool (TmpIpDevicePath); } + FreePool (Node); if (NewDevicePath == NULL) { return EFI_OUT_OF_RESOURCES; @@ -160,6 +167,7 @@ HttpBootUpdateDevicePath ( if (EFI_ERROR (Status)) { return Status; } + FreePool (Private->Ip6Nic->DevicePath); Private->Ip6Nic->DevicePath = NewDevicePath; } @@ -178,16 +186,16 @@ HttpBootUpdateDevicePath ( **/ EFI_STATUS HttpBootDhcp4ExtractUriInfo ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - HTTP_BOOT_DHCP4_PACKET_CACHE *SelectOffer; - HTTP_BOOT_DHCP4_PACKET_CACHE *HttpOffer; - UINT32 SelectIndex; - UINT32 ProxyIndex; - UINT32 DnsServerIndex; - EFI_DHCP4_PACKET_OPTION *Option; - EFI_STATUS Status; + HTTP_BOOT_DHCP4_PACKET_CACHE *SelectOffer; + HTTP_BOOT_DHCP4_PACKET_CACHE *HttpOffer; + UINT32 SelectIndex; + UINT32 ProxyIndex; + UINT32 DnsServerIndex; + EFI_DHCP4_PACKET_OPTION *Option; + EFI_STATUS Status; ASSERT (Private != NULL); ASSERT (Private->SelectIndex != 0); @@ -209,21 +217,23 @@ HttpBootDhcp4ExtractUriInfo ( // if ((SelectOffer->OfferType == HttpOfferTypeDhcpIpUri) || (SelectOffer->OfferType == HttpOfferTypeDhcpIpUriDns) || - (SelectOffer->OfferType == HttpOfferTypeDhcpNameUriDns)) { + (SelectOffer->OfferType == HttpOfferTypeDhcpNameUriDns)) + { HttpOffer = SelectOffer; } else { ASSERT (Private->SelectProxyType != HttpOfferTypeMax); ProxyIndex = Private->OfferIndex[Private->SelectProxyType][0]; - HttpOffer = &Private->OfferBuffer[ProxyIndex].Dhcp4; + HttpOffer = &Private->OfferBuffer[ProxyIndex].Dhcp4; } + Private->BootFileUriParser = HttpOffer->UriParser; - Private->BootFileUri = (CHAR8*) HttpOffer->OptList[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Data; + Private->BootFileUri = (CHAR8 *)HttpOffer->OptList[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Data; } else { // // In Home environment the BootFileUri comes from the FilePath. // Private->BootFileUriParser = Private->FilePathUriParser; - Private->BootFileUri = Private->FilePathUri; + Private->BootFileUri = Private->FilePathUri; } // @@ -237,12 +247,14 @@ HttpBootDhcp4ExtractUriInfo ( } else if (Status == EFI_ACCESS_DENIED) { AsciiPrint ("\n Error: Access forbidden, only HTTPS connection is allowed.\n"); } + return Status; } if ((SelectOffer->OfferType == HttpOfferTypeDhcpNameUriDns) || (SelectOffer->OfferType == HttpOfferTypeDhcpDns) || - (SelectOffer->OfferType == HttpOfferTypeDhcpIpUriDns)) { + (SelectOffer->OfferType == HttpOfferTypeDhcpIpUriDns)) + { Option = SelectOffer->OptList[HTTP_BOOT_DHCP4_TAG_INDEX_DNS_SERVER]; ASSERT (Option != NULL); @@ -257,7 +269,7 @@ HttpBootDhcp4ExtractUriInfo ( } for (DnsServerIndex = 0; DnsServerIndex < Private->DnsServerCount; DnsServerIndex++) { - CopyMem (&(Private->DnsServerIp[DnsServerIndex].v4), &(((EFI_IPv4_ADDRESS *) Option->Data)[DnsServerIndex]), sizeof (EFI_IPv4_ADDRESS)); + CopyMem (&(Private->DnsServerIp[DnsServerIndex].v4), &(((EFI_IPv4_ADDRESS *)Option->Data)[DnsServerIndex]), sizeof (EFI_IPv4_ADDRESS)); } // @@ -283,7 +295,7 @@ HttpBootDhcp4ExtractUriInfo ( Private->BootFileUriParser, &Private->Port ); - if (EFI_ERROR (Status) || Private->Port == 0) { + if (EFI_ERROR (Status) || (Private->Port == 0)) { Private->Port = 80; } @@ -295,7 +307,7 @@ HttpBootDhcp4ExtractUriInfo ( // Update the device path to include the boot resource information. // Status = HttpBootUpdateDevicePath (Private); - if (EFI_ERROR (Status) && Private->DnsServerIp != NULL) { + if (EFI_ERROR (Status) && (Private->DnsServerIp != NULL)) { FreePool (Private->DnsServerIp); Private->DnsServerIp = NULL; } @@ -314,20 +326,20 @@ HttpBootDhcp4ExtractUriInfo ( **/ EFI_STATUS HttpBootDhcp6ExtractUriInfo ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - HTTP_BOOT_DHCP6_PACKET_CACHE *SelectOffer; - HTTP_BOOT_DHCP6_PACKET_CACHE *HttpOffer; - UINT32 SelectIndex; - UINT32 ProxyIndex; - UINT32 DnsServerIndex; - EFI_DHCP6_PACKET_OPTION *Option; - EFI_IPv6_ADDRESS IpAddr; - CHAR8 *HostName; - UINTN HostNameSize; - CHAR16 *HostNameStr; - EFI_STATUS Status; + HTTP_BOOT_DHCP6_PACKET_CACHE *SelectOffer; + HTTP_BOOT_DHCP6_PACKET_CACHE *HttpOffer; + UINT32 SelectIndex; + UINT32 ProxyIndex; + UINT32 DnsServerIndex; + EFI_DHCP6_PACKET_OPTION *Option; + EFI_IPv6_ADDRESS IpAddr; + CHAR8 *HostName; + UINTN HostNameSize; + CHAR16 *HostNameStr; + EFI_STATUS Status; ASSERT (Private != NULL); ASSERT (Private->SelectIndex != 0); @@ -349,21 +361,23 @@ HttpBootDhcp6ExtractUriInfo ( // if ((SelectOffer->OfferType == HttpOfferTypeDhcpIpUri) || (SelectOffer->OfferType == HttpOfferTypeDhcpIpUriDns) || - (SelectOffer->OfferType == HttpOfferTypeDhcpNameUriDns)) { + (SelectOffer->OfferType == HttpOfferTypeDhcpNameUriDns)) + { HttpOffer = SelectOffer; } else { ASSERT (Private->SelectProxyType != HttpOfferTypeMax); ProxyIndex = Private->OfferIndex[Private->SelectProxyType][0]; - HttpOffer = &Private->OfferBuffer[ProxyIndex].Dhcp6; + HttpOffer = &Private->OfferBuffer[ProxyIndex].Dhcp6; } + Private->BootFileUriParser = HttpOffer->UriParser; - Private->BootFileUri = (CHAR8*) HttpOffer->OptList[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data; + Private->BootFileUri = (CHAR8 *)HttpOffer->OptList[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data; } else { // // In Home environment the BootFileUri comes from the FilePath. // Private->BootFileUriParser = Private->FilePathUriParser; - Private->BootFileUri = Private->FilePathUri; + Private->BootFileUri = Private->FilePathUri; } // @@ -377,6 +391,7 @@ HttpBootDhcp6ExtractUriInfo ( } else if (Status == EFI_ACCESS_DENIED) { AsciiPrint ("\n Error: Access forbidden, only HTTPS connection is allowed.\n"); } + return Status; } @@ -398,7 +413,8 @@ HttpBootDhcp6ExtractUriInfo ( if ((SelectOffer->OfferType == HttpOfferTypeDhcpNameUriDns) || (SelectOffer->OfferType == HttpOfferTypeDhcpDns) || - (SelectOffer->OfferType == HttpOfferTypeDhcpIpUriDns)) { + (SelectOffer->OfferType == HttpOfferTypeDhcpIpUriDns)) + { Option = SelectOffer->OptList[HTTP_BOOT_DHCP6_IDX_DNS_SERVER]; ASSERT (Option != NULL); @@ -413,7 +429,7 @@ HttpBootDhcp6ExtractUriInfo ( } for (DnsServerIndex = 0; DnsServerIndex < Private->DnsServerCount; DnsServerIndex++) { - CopyMem (&(Private->DnsServerIp[DnsServerIndex].v6), &(((EFI_IPv6_ADDRESS *) Option->Data)[DnsServerIndex]), sizeof (EFI_IPv6_ADDRESS)); + CopyMem (&(Private->DnsServerIp[DnsServerIndex].v6), &(((EFI_IPv6_ADDRESS *)Option->Data)[DnsServerIndex]), sizeof (EFI_IPv6_ADDRESS)); } // @@ -453,7 +469,7 @@ HttpBootDhcp6ExtractUriInfo ( } HostNameSize = AsciiStrSize (HostName); - HostNameStr = AllocateZeroPool (HostNameSize * sizeof (CHAR16)); + HostNameStr = AllocateZeroPool (HostNameSize * sizeof (CHAR16)); if (HostNameStr == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Error; @@ -483,7 +499,7 @@ HttpBootDhcp6ExtractUriInfo ( Private->BootFileUriParser, &Private->Port ); - if (EFI_ERROR (Status) || Private->Port == 0) { + if (EFI_ERROR (Status) || (Private->Port == 0)) { Private->Port = 80; } @@ -510,7 +526,6 @@ Error: return Status; } - /** Discover all the boot information for boot file. @@ -522,10 +537,10 @@ Error: **/ EFI_STATUS HttpBootDiscoverBootInfo ( - IN OUT HTTP_BOOT_PRIVATE_DATA *Private + IN OUT HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_STATUS Status; + EFI_STATUS Status; // // Start D.O.R.A/S.A.R.R exchange to acquire station ip address and @@ -558,24 +573,26 @@ HttpBootDiscoverBootInfo ( EFI_STATUS EFIAPI HttpBootHttpIoCallback ( - IN HTTP_IO_CALLBACK_EVENT EventType, - IN EFI_HTTP_MESSAGE *Message, - IN VOID *Context + IN HTTP_IO_CALLBACK_EVENT EventType, + IN EFI_HTTP_MESSAGE *Message, + IN VOID *Context ) { - HTTP_BOOT_PRIVATE_DATA *Private; - EFI_STATUS Status; - Private = (HTTP_BOOT_PRIVATE_DATA *) Context; + HTTP_BOOT_PRIVATE_DATA *Private; + EFI_STATUS Status; + + Private = (HTTP_BOOT_PRIVATE_DATA *)Context; if (Private->HttpBootCallback != NULL) { Status = Private->HttpBootCallback->Callback ( - Private->HttpBootCallback, - EventType == HttpIoRequest ? HttpBootHttpRequest : HttpBootHttpResponse, - EventType == HttpIoRequest ? FALSE : TRUE, - sizeof (EFI_HTTP_MESSAGE), - (VOID *) Message - ); + Private->HttpBootCallback, + EventType == HttpIoRequest ? HttpBootHttpRequest : HttpBootHttpResponse, + EventType == HttpIoRequest ? FALSE : TRUE, + sizeof (EFI_HTTP_MESSAGE), + (VOID *)Message + ); return Status; } + return EFI_SUCCESS; } @@ -590,13 +607,13 @@ HttpBootHttpIoCallback ( **/ EFI_STATUS HttpBootCreateHttpIo ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - HTTP_IO_CONFIG_DATA ConfigData; - EFI_STATUS Status; - EFI_HANDLE ImageHandle; - UINT32 TimeoutValue; + HTTP_IO_CONFIG_DATA ConfigData; + EFI_STATUS Status; + EFI_HANDLE ImageHandle; + UINT32 TimeoutValue; ASSERT (Private != NULL); @@ -625,7 +642,7 @@ HttpBootCreateHttpIo ( Private->UsingIpv6 ? IP_VERSION_6 : IP_VERSION_4, &ConfigData, HttpBootHttpIoCallback, - (VOID *) Private, + (VOID *)Private, &Private->HttpIo ); if (EFI_ERROR (Status)) { @@ -644,13 +661,13 @@ HttpBootCreateHttpIo ( **/ VOID HttpBootFreeCache ( - IN HTTP_BOOT_CACHE_CONTENT *Cache + IN HTTP_BOOT_CACHE_CONTENT *Cache ) { - UINTN Index; - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - HTTP_BOOT_ENTITY_DATA *EntityData; + UINTN Index; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + HTTP_BOOT_ENTITY_DATA *EntityData; if (Cache != NULL) { // @@ -660,6 +677,7 @@ HttpBootFreeCache ( if (Cache->RequestData->Url != NULL) { FreePool (Cache->RequestData->Url); } + FreePool (Cache->RequestData); } @@ -672,6 +690,7 @@ HttpBootFreeCache ( FreePool (Cache->ResponseData->Headers[Index].FieldName); FreePool (Cache->ResponseData->Headers[Index].FieldValue); } + FreePool (Cache->ResponseData->Headers); } } @@ -684,6 +703,7 @@ HttpBootFreeCache ( if (EntityData->Block != NULL) { FreePool (EntityData->Block); } + RemoveEntryList (&EntityData->Link); FreePool (EntityData); } @@ -700,12 +720,12 @@ HttpBootFreeCache ( **/ VOID HttpBootFreeCacheList ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - HTTP_BOOT_CACHE_CONTENT *Cache; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + HTTP_BOOT_CACHE_CONTENT *Cache; NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &Private->CacheList) { Cache = NET_LIST_USER_STRUCT (Entry, HTTP_BOOT_CACHE_CONTENT, Link); @@ -734,20 +754,20 @@ HttpBootFreeCacheList ( **/ EFI_STATUS HttpBootGetFileFromCache ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN CHAR16 *Uri, - IN OUT UINTN *BufferSize, - OUT UINT8 *Buffer, - OUT HTTP_BOOT_IMAGE_TYPE *ImageType + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN CHAR16 *Uri, + IN OUT UINTN *BufferSize, + OUT UINT8 *Buffer, + OUT HTTP_BOOT_IMAGE_TYPE *ImageType ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Entry2; - HTTP_BOOT_CACHE_CONTENT *Cache; - HTTP_BOOT_ENTITY_DATA *EntityData; - UINTN CopyedSize; + LIST_ENTRY *Entry; + LIST_ENTRY *Entry2; + HTTP_BOOT_CACHE_CONTENT *Cache; + HTTP_BOOT_ENTITY_DATA *EntityData; + UINTN CopyedSize; - if (Uri == NULL || BufferSize == NULL || Buffer == NULL || ImageType == NULL) { + if ((Uri == NULL) || (BufferSize == NULL) || (Buffer == NULL) || (ImageType == NULL)) { return EFI_INVALID_PARAMETER; } @@ -758,11 +778,12 @@ HttpBootGetFileFromCache ( // if ((Cache->RequestData != NULL) && (Cache->RequestData->Url != NULL) && - (StrCmp (Uri, Cache->RequestData->Url) == 0)) { + (StrCmp (Uri, Cache->RequestData->Url) == 0)) + { // // Hit in cache, record image type. // - *ImageType = Cache->ImageType; + *ImageType = Cache->ImageType; // // Check buffer size. @@ -813,16 +834,16 @@ HttpBootGetFileFromCache ( EFI_STATUS EFIAPI HttpBootGetBootFileCallback ( - IN HTTP_BODY_PARSE_EVENT EventType, - IN CHAR8 *Data, - IN UINTN Length, - IN VOID *Context + IN HTTP_BODY_PARSE_EVENT EventType, + IN CHAR8 *Data, + IN UINTN Length, + IN VOID *Context ) { - HTTP_BOOT_CALLBACK_DATA *CallbackData; - HTTP_BOOT_ENTITY_DATA *NewEntityData; - EFI_STATUS Status; - EFI_HTTP_BOOT_CALLBACK_PROTOCOL *HttpBootCallback; + HTTP_BOOT_CALLBACK_DATA *CallbackData; + HTTP_BOOT_ENTITY_DATA *NewEntityData; + EFI_STATUS Status; + EFI_HTTP_BOOT_CALLBACK_PROTOCOL *HttpBootCallback; // // We only care about the entity data. @@ -831,20 +852,21 @@ HttpBootGetBootFileCallback ( return EFI_SUCCESS; } - CallbackData = (HTTP_BOOT_CALLBACK_DATA *) Context; + CallbackData = (HTTP_BOOT_CALLBACK_DATA *)Context; HttpBootCallback = CallbackData->Private->HttpBootCallback; if (HttpBootCallback != NULL) { Status = HttpBootCallback->Callback ( - HttpBootCallback, - HttpBootHttpEntityBody, - TRUE, - (UINT32)Length, - Data - ); + HttpBootCallback, + HttpBootHttpEntityBody, + TRUE, + (UINT32)Length, + Data + ); if (EFI_ERROR (Status)) { return Status; } } + // // Copy data if caller has provided a buffer. // @@ -865,14 +887,17 @@ HttpBootGetBootFileCallback ( if (NewEntityData == NULL) { return EFI_OUT_OF_RESOURCES; } + if (CallbackData->NewBlock) { NewEntityData->Block = CallbackData->Block; - CallbackData->Block = NULL; + CallbackData->Block = NULL; } + NewEntityData->DataLength = Length; - NewEntityData->DataStart = (UINT8*) Data; + NewEntityData->DataStart = (UINT8 *)Data; InsertTailList (&CallbackData->Cache->EntityDataList, &NewEntityData->Link); } + return EFI_SUCCESS; } @@ -902,39 +927,39 @@ HttpBootGetBootFileCallback ( **/ EFI_STATUS HttpBootGetBootFile ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN BOOLEAN HeaderOnly, - IN OUT UINTN *BufferSize, - OUT UINT8 *Buffer, - OUT HTTP_BOOT_IMAGE_TYPE *ImageType + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN BOOLEAN HeaderOnly, + IN OUT UINTN *BufferSize, + OUT UINT8 *Buffer, + OUT HTTP_BOOT_IMAGE_TYPE *ImageType ) { - EFI_STATUS Status; - EFI_HTTP_STATUS_CODE StatusCode; - CHAR8 *HostName; - EFI_HTTP_REQUEST_DATA *RequestData; - HTTP_IO_RESPONSE_DATA *ResponseData; - HTTP_IO_RESPONSE_DATA ResponseBody; - HTTP_IO *HttpIo; - HTTP_IO_HEADER *HttpIoHeader; - VOID *Parser; - HTTP_BOOT_CALLBACK_DATA Context; - UINTN ContentLength; - HTTP_BOOT_CACHE_CONTENT *Cache; - UINT8 *Block; - UINTN UrlSize; - CHAR16 *Url; - BOOLEAN IdentityMode; - UINTN ReceivedSize; + EFI_STATUS Status; + EFI_HTTP_STATUS_CODE StatusCode; + CHAR8 *HostName; + EFI_HTTP_REQUEST_DATA *RequestData; + HTTP_IO_RESPONSE_DATA *ResponseData; + HTTP_IO_RESPONSE_DATA ResponseBody; + HTTP_IO *HttpIo; + HTTP_IO_HEADER *HttpIoHeader; + VOID *Parser; + HTTP_BOOT_CALLBACK_DATA Context; + UINTN ContentLength; + HTTP_BOOT_CACHE_CONTENT *Cache; + UINT8 *Block; + UINTN UrlSize; + CHAR16 *Url; + BOOLEAN IdentityMode; + UINTN ReceivedSize; ASSERT (Private != NULL); ASSERT (Private->HttpCreated); - if (BufferSize == NULL || ImageType == NULL) { + if ((BufferSize == NULL) || (ImageType == NULL)) { return EFI_INVALID_PARAMETER; } - if (*BufferSize != 0 && Buffer == NULL) { + if ((*BufferSize != 0) && (Buffer == NULL)) { return EFI_INVALID_PARAMETER; } @@ -942,12 +967,13 @@ HttpBootGetBootFile ( // First, check whether we already cached the requested Uri. // UrlSize = AsciiStrSize (Private->BootFileUri); - Url = AllocatePool (UrlSize * sizeof (CHAR16)); + Url = AllocatePool (UrlSize * sizeof (CHAR16)); if (Url == NULL) { return EFI_OUT_OF_RESOURCES; } + AsciiStrToUnicodeStrS (Private->BootFileUri, Url, UrlSize); - if (!HeaderOnly && Buffer != NULL) { + if (!HeaderOnly && (Buffer != NULL)) { Status = HttpBootGetFileFromCache (Private, Url, BufferSize, Buffer, ImageType); if (Status != EFI_NOT_FOUND) { FreePool (Url); @@ -969,6 +995,7 @@ HttpBootGetBootFile ( Status = EFI_OUT_OF_RESOURCES; goto ERROR_1; } + Cache->ImageType = ImageTypeMax; InitializeListHead (&Cache->EntityDataList); } @@ -993,14 +1020,15 @@ HttpBootGetBootFile ( // Add HTTP header field 1: Host // HostName = NULL; - Status = HttpUrlGetHostName ( - Private->BootFileUri, - Private->BootFileUriParser, - &HostName - ); + Status = HttpUrlGetHostName ( + Private->BootFileUri, + Private->BootFileUriParser, + &HostName + ); if (EFI_ERROR (Status)) { goto ERROR_3; } + Status = HttpIoSetHeader ( HttpIoHeader, HTTP_HEADER_HOST, @@ -1043,8 +1071,9 @@ HttpBootGetBootFile ( Status = EFI_OUT_OF_RESOURCES; goto ERROR_3; } + RequestData->Method = HeaderOnly ? HttpMethodHead : HttpMethodGet; - RequestData->Url = Url; + RequestData->Url = Url; // // 2.3 Record the request info in a temp cache item. @@ -1064,7 +1093,7 @@ HttpBootGetBootFile ( HttpIoHeader->Headers, 0, NULL - ); + ); if (EFI_ERROR (Status)) { goto ERROR_4; } @@ -1076,11 +1105,12 @@ HttpBootGetBootFile ( // // 3.1 First step, use zero BodyLength to only receive the response headers. // - ResponseData = AllocateZeroPool (sizeof(HTTP_IO_RESPONSE_DATA)); + ResponseData = AllocateZeroPool (sizeof (HTTP_IO_RESPONSE_DATA)); if (ResponseData == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ERROR_4; } + Status = HttpIoRecvResponse ( &Private->HttpIo, TRUE, @@ -1092,6 +1122,7 @@ HttpBootGetBootFile ( HttpBootPrintErrorMessage (StatusCode); Status = ResponseData->Status; } + goto ERROR_5; } @@ -1114,13 +1145,13 @@ HttpBootGetBootFile ( // if (Cache != NULL) { Cache->ResponseData = ResponseData; - Cache->ImageType = *ImageType; + Cache->ImageType = *ImageType; } // // 3.3 Init a message-body parser from the header information. // - Parser = NULL; + Parser = NULL; Context.NewBlock = FALSE; Context.Block = NULL; Context.CopyedSize = 0; @@ -1128,15 +1159,15 @@ HttpBootGetBootFile ( Context.BufferSize = *BufferSize; Context.Cache = Cache; Context.Private = Private; - Status = HttpInitMsgParser ( - HeaderOnly ? HttpMethodHead : HttpMethodGet, - ResponseData->Response.StatusCode, - ResponseData->HeaderCount, - ResponseData->Headers, - HttpBootGetBootFileCallback, - (VOID*) &Context, - &Parser - ); + Status = HttpInitMsgParser ( + HeaderOnly ? HttpMethodHead : HttpMethodGet, + ResponseData->Response.StatusCode, + ResponseData->HeaderCount, + ResponseData->Headers, + HttpBootGetBootFileCallback, + (VOID *)&Context, + &Parser + ); if (EFI_ERROR (Status)) { goto ERROR_6; } @@ -1150,7 +1181,7 @@ HttpBootGetBootFile ( // 3.4.1, check whether we are in identity transfer-coding. // ContentLength = 0; - Status = HttpGetEntityLength (Parser, &ContentLength); + Status = HttpGetEntityLength (Parser, &ContentLength); if (!EFI_ERROR (Status)) { IdentityMode = TRUE; } else { @@ -1169,28 +1200,30 @@ HttpBootGetBootFile ( // ReceivedSize = 0; while (ReceivedSize < ContentLength) { - ResponseBody.Body = (CHAR8*) Buffer + ReceivedSize; + ResponseBody.Body = (CHAR8 *)Buffer + ReceivedSize; ResponseBody.BodyLength = *BufferSize - ReceivedSize; - Status = HttpIoRecvResponse ( - &Private->HttpIo, - FALSE, - &ResponseBody - ); + Status = HttpIoRecvResponse ( + &Private->HttpIo, + FALSE, + &ResponseBody + ); if (EFI_ERROR (Status) || EFI_ERROR (ResponseBody.Status)) { if (EFI_ERROR (ResponseBody.Status)) { Status = ResponseBody.Status; } + goto ERROR_6; } + ReceivedSize += ResponseBody.BodyLength; if (Private->HttpBootCallback != NULL) { Status = Private->HttpBootCallback->Callback ( - Private->HttpBootCallback, - HttpBootHttpEntityBody, - TRUE, - (UINT32)ResponseBody.BodyLength, - ResponseBody.Body - ); + Private->HttpBootCallback, + HttpBootHttpEntityBody, + TRUE, + (UINT32)ResponseBody.BodyLength, + ResponseBody.Body + ); if (EFI_ERROR (Status)) { goto ERROR_6; } @@ -1209,29 +1242,31 @@ HttpBootGetBootFile ( // Otherwise a buffer, the buffer in Block will be cached and we should allocate a new before // every HttpIoRecvResponse(). // - if (Block == NULL || Context.BufferSize == 0) { + if ((Block == NULL) || (Context.BufferSize == 0)) { Block = AllocatePool (HTTP_BOOT_BLOCK_SIZE); if (Block == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ERROR_6; } + Context.NewBlock = TRUE; - Context.Block = Block; + Context.Block = Block; } else { Context.NewBlock = FALSE; } - ResponseBody.Body = (CHAR8*) Block; + ResponseBody.Body = (CHAR8 *)Block; ResponseBody.BodyLength = HTTP_BOOT_BLOCK_SIZE; - Status = HttpIoRecvResponse ( - &Private->HttpIo, - FALSE, - &ResponseBody - ); + Status = HttpIoRecvResponse ( + &Private->HttpIo, + FALSE, + &ResponseBody + ); if (EFI_ERROR (Status) || EFI_ERROR (ResponseBody.Status)) { if (EFI_ERROR (ResponseBody.Status)) { Status = ResponseBody.Status; } + goto ERROR_6; } @@ -1263,6 +1298,7 @@ HttpBootGetBootFile ( } else { Status = EFI_SUCCESS; } + *BufferSize = ContentLength; // @@ -1283,25 +1319,30 @@ ERROR_6: if (Parser != NULL) { HttpFreeMsgParser (Parser); } + if (Context.Block != NULL) { FreePool (Context.Block); } + HttpBootFreeCache (Cache); ERROR_5: if (ResponseData != NULL) { FreePool (ResponseData); } + ERROR_4: if (RequestData != NULL) { FreePool (RequestData); } + ERROR_3: HttpIoFreeHeader (HttpIoHeader); ERROR_2: if (Cache != NULL) { FreePool (Cache); } + ERROR_1: if (Url != NULL) { FreePool (Url); diff --git a/NetworkPkg/HttpBootDxe/HttpBootClient.h b/NetworkPkg/HttpBootDxe/HttpBootClient.h index 3a98f0f557..406529dfd9 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootClient.h +++ b/NetworkPkg/HttpBootDxe/HttpBootClient.h @@ -10,29 +10,29 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_HTTP_BOOT_HTTP_H__ #define __EFI_HTTP_BOOT_HTTP_H__ -#define HTTP_BOOT_BLOCK_SIZE 1500 -#define HTTP_USER_AGENT_EFI_HTTP_BOOT "UefiHttpBoot/1.0" +#define HTTP_BOOT_BLOCK_SIZE 1500 +#define HTTP_USER_AGENT_EFI_HTTP_BOOT "UefiHttpBoot/1.0" // // Record the data length and start address of a data block. // typedef struct { - LIST_ENTRY Link; // Link to the EntityDataList in HTTP_BOOT_CACHE_CONTENT - UINT8 *Block; // If NULL, the data is in previous data block. - UINT8 *DataStart; // Point to somewhere in the Block - UINTN DataLength; + LIST_ENTRY Link; // Link to the EntityDataList in HTTP_BOOT_CACHE_CONTENT + UINT8 *Block; // If NULL, the data is in previous data block. + UINT8 *DataStart; // Point to somewhere in the Block + UINTN DataLength; } HTTP_BOOT_ENTITY_DATA; // // Structure for a cache item // typedef struct { - LIST_ENTRY Link; // Link to the CacheList in driver's private data. - EFI_HTTP_REQUEST_DATA *RequestData; - HTTP_IO_RESPONSE_DATA *ResponseData; // Not include any message-body data. - HTTP_BOOT_IMAGE_TYPE ImageType; - UINTN EntityLength; - LIST_ENTRY EntityDataList; // Entity data (message-body) + LIST_ENTRY Link; // Link to the CacheList in driver's private data. + EFI_HTTP_REQUEST_DATA *RequestData; + HTTP_IO_RESPONSE_DATA *ResponseData; // Not include any message-body data. + HTTP_BOOT_IMAGE_TYPE ImageType; + UINTN EntityLength; + LIST_ENTRY EntityDataList; // Entity data (message-body) } HTTP_BOOT_CACHE_CONTENT; // @@ -68,7 +68,7 @@ typedef struct { **/ EFI_STATUS HttpBootDiscoverBootInfo ( - IN OUT HTTP_BOOT_PRIVATE_DATA *Private + IN OUT HTTP_BOOT_PRIVATE_DATA *Private ); /** @@ -82,7 +82,7 @@ HttpBootDiscoverBootInfo ( **/ EFI_STATUS HttpBootCreateHttpIo ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); /** @@ -111,11 +111,11 @@ HttpBootCreateHttpIo ( **/ EFI_STATUS HttpBootGetBootFile ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN BOOLEAN HeaderOnly, - IN OUT UINTN *BufferSize, - OUT UINT8 *Buffer, - OUT HTTP_BOOT_IMAGE_TYPE *ImageType + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN BOOLEAN HeaderOnly, + IN OUT UINTN *BufferSize, + OUT UINT8 *Buffer, + OUT HTTP_BOOT_IMAGE_TYPE *ImageType ); /** @@ -126,7 +126,7 @@ HttpBootGetBootFile ( **/ VOID HttpBootFreeCacheList ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); #endif diff --git a/NetworkPkg/HttpBootDxe/HttpBootComponentName.c b/NetworkPkg/HttpBootDxe/HttpBootComponentName.c index dbaa944adc..bc1993df43 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootComponentName.c +++ b/NetworkPkg/HttpBootDxe/HttpBootComponentName.c @@ -13,7 +13,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent /// GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gHttpBootDxeComponentName = { - (EFI_COMPONENT_NAME_GET_DRIVER_NAME) HttpBootDxeComponentNameGetDriverName, + (EFI_COMPONENT_NAME_GET_DRIVER_NAME)HttpBootDxeComponentNameGetDriverName, (EFI_COMPONENT_NAME_GET_CONTROLLER_NAME)HttpBootDxeComponentNameGetControllerName, "eng" }; @@ -32,18 +32,18 @@ EFI_COMPONENT_NAME2_PROTOCOL gHttpBootDxeComponentName2 = { /// Table of driver names /// GLOBAL_REMOVE_IF_UNREFERENCED -EFI_UNICODE_STRING_TABLE mHttpBootDxeDriverNameTable[] = { +EFI_UNICODE_STRING_TABLE mHttpBootDxeDriverNameTable[] = { { "eng;en", (CHAR16 *)L"UEFI HTTP Boot Driver" }, - { NULL, NULL } + { NULL, NULL } }; /// /// Table of controller names /// GLOBAL_REMOVE_IF_UNREFERENCED -EFI_UNICODE_STRING_TABLE mHttpBootDxeControllerNameTable[] = { +EFI_UNICODE_STRING_TABLE mHttpBootDxeControllerNameTable[] = { { "eng;en", (CHAR16 *)L"UEFI Http Boot Controller" }, - { NULL, NULL } + { NULL, NULL } }; /** @@ -81,7 +81,7 @@ HttpBootDxeComponentNameGetDriverName ( This->SupportedLanguages, mHttpBootDxeDriverNameTable, DriverName, - (BOOLEAN) (This != &gHttpBootDxeComponentName2) + (BOOLEAN)(This != &gHttpBootDxeComponentName2) ); } @@ -135,17 +135,17 @@ HttpBootDxeComponentNameGetControllerName ( OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_HANDLE NicHandle; - UINT32 *Id; + EFI_STATUS Status; + EFI_HANDLE NicHandle; + UINT32 *Id; - if (ControllerHandle == NULL || ChildHandle != NULL) { + if ((ControllerHandle == NULL) || (ChildHandle != NULL)) { return EFI_UNSUPPORTED; } NicHandle = HttpBootGetNicByIp4Children (ControllerHandle); if (NicHandle == NULL) { - NicHandle = HttpBootGetNicByIp6Children(ControllerHandle); + NicHandle = HttpBootGetNicByIp6Children (ControllerHandle); if (NicHandle == NULL) { return EFI_UNSUPPORTED; } @@ -157,7 +157,7 @@ HttpBootDxeComponentNameGetControllerName ( Status = gBS->OpenProtocol ( NicHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -173,5 +173,4 @@ HttpBootDxeComponentNameGetControllerName ( ControllerName, (BOOLEAN)(This != &gHttpBootDxeComponentName2) ); - } diff --git a/NetworkPkg/HttpBootDxe/HttpBootConfig.c b/NetworkPkg/HttpBootDxe/HttpBootConfig.c index 795e61b5b4..42d3fdc1fb 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootConfig.c +++ b/NetworkPkg/HttpBootDxe/HttpBootConfig.c @@ -9,7 +9,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "HttpBootDxe.h" #include -CHAR16 mHttpBootConfigStorageName[] = L"HTTP_BOOT_CONFIG_IFR_NVDATA"; +CHAR16 mHttpBootConfigStorageName[] = L"HTTP_BOOT_CONFIG_IFR_NVDATA"; /** Add new boot option for HTTP boot. @@ -25,20 +25,20 @@ CHAR16 mHttpBootConfigStorageName[] = L"HTTP_BOOT_CONFIG_IFR_NVDATA"; **/ EFI_STATUS HttpBootAddBootOption ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN BOOLEAN UsingIpv6, - IN CHAR16 *Description, - IN CHAR16 *Uri + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN BOOLEAN UsingIpv6, + IN CHAR16 *Description, + IN CHAR16 *Uri ) { - EFI_DEV_PATH *Node; - EFI_DEVICE_PATH_PROTOCOL *TmpDevicePath; - EFI_DEVICE_PATH_PROTOCOL *NewDevicePath; - UINTN Length; - CHAR8 AsciiUri[URI_STR_MAX_SIZE]; - EFI_STATUS Status; - UINTN Index; - EFI_BOOT_MANAGER_LOAD_OPTION NewOption; + EFI_DEV_PATH *Node; + EFI_DEVICE_PATH_PROTOCOL *TmpDevicePath; + EFI_DEVICE_PATH_PROTOCOL *NewDevicePath; + UINTN Length; + CHAR8 AsciiUri[URI_STR_MAX_SIZE]; + EFI_STATUS Status; + UINTN Index; + EFI_BOOT_MANAGER_LOAD_OPTION NewOption; NewDevicePath = NULL; Node = NULL; @@ -55,7 +55,8 @@ HttpBootAddBootOption ( if (Uri[Index] == L':') { break; } - if (Uri[Index] >= L'A' && Uri[Index] <= L'Z') { + + if ((Uri[Index] >= L'A') && (Uri[Index] <= L'Z')) { Uri[Index] -= (CHAR16)(L'A' - L'a'); } } @@ -77,6 +78,7 @@ HttpBootAddBootOption ( Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + Node->Ipv4.Header.Type = MESSAGING_DEVICE_PATH; Node->Ipv4.Header.SubType = MSG_IPv4_DP; SetDevicePathNodeLength (Node, sizeof (IPv4_DEVICE_PATH)); @@ -86,31 +88,35 @@ HttpBootAddBootOption ( Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } - Node->Ipv6.Header.Type = MESSAGING_DEVICE_PATH; - Node->Ipv6.Header.SubType = MSG_IPv6_DP; + + Node->Ipv6.Header.Type = MESSAGING_DEVICE_PATH; + Node->Ipv6.Header.SubType = MSG_IPv6_DP; SetDevicePathNodeLength (Node, sizeof (IPv6_DEVICE_PATH)); } - TmpDevicePath = AppendDevicePathNode (Private->ParentDevicePath, (EFI_DEVICE_PATH_PROTOCOL*) Node); + + TmpDevicePath = AppendDevicePathNode (Private->ParentDevicePath, (EFI_DEVICE_PATH_PROTOCOL *)Node); FreePool (Node); if (TmpDevicePath == NULL) { return EFI_OUT_OF_RESOURCES; } + // // Update the URI node with the input boot file URI. // UnicodeStrToAsciiStrS (Uri, AsciiUri, sizeof (AsciiUri)); Length = sizeof (EFI_DEVICE_PATH_PROTOCOL) + AsciiStrSize (AsciiUri); - Node = AllocatePool (Length); + Node = AllocatePool (Length); if (Node == NULL) { Status = EFI_OUT_OF_RESOURCES; FreePool (TmpDevicePath); goto ON_EXIT; } + Node->DevPath.Type = MESSAGING_DEVICE_PATH; Node->DevPath.SubType = MSG_URI_DP; SetDevicePathNodeLength (Node, Length); - CopyMem ((UINT8*) Node + sizeof (EFI_DEVICE_PATH_PROTOCOL), AsciiUri, AsciiStrSize (AsciiUri)); - NewDevicePath = AppendDevicePathNode (TmpDevicePath, (EFI_DEVICE_PATH_PROTOCOL*) Node); + CopyMem ((UINT8 *)Node + sizeof (EFI_DEVICE_PATH_PROTOCOL), AsciiUri, AsciiStrSize (AsciiUri)); + NewDevicePath = AppendDevicePathNode (TmpDevicePath, (EFI_DEVICE_PATH_PROTOCOL *)Node); FreePool (Node); FreePool (TmpDevicePath); if (NewDevicePath == NULL) { @@ -122,20 +128,20 @@ HttpBootAddBootOption ( // Add a new load option. // Status = EfiBootManagerInitializeLoadOption ( - &NewOption, - LoadOptionNumberUnassigned, - LoadOptionTypeBoot, - LOAD_OPTION_ACTIVE, - Description, - NewDevicePath, - NULL, - 0 - ); + &NewOption, + LoadOptionNumberUnassigned, + LoadOptionTypeBoot, + LOAD_OPTION_ACTIVE, + Description, + NewDevicePath, + NULL, + 0 + ); if (EFI_ERROR (Status)) { goto ON_EXIT; } - Status = EfiBootManagerAddLoadOptionVariable (&NewOption, (UINTN) -1); + Status = EfiBootManagerAddLoadOptionVariable (&NewOption, (UINTN)-1); EfiBootManagerFreeLoadOption (&NewOption); ON_EXIT: @@ -221,21 +227,21 @@ ON_EXIT: EFI_STATUS EFIAPI HttpBootFormExtractConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Request, - OUT EFI_STRING *Progress, - OUT EFI_STRING *Results + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results ) { - EFI_STATUS Status; - UINTN BufferSize; - HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo; - EFI_STRING ConfigRequestHdr; - EFI_STRING ConfigRequest; - BOOLEAN AllocatedRequest; - UINTN Size; - - if (Progress == NULL || Results == NULL) { + EFI_STATUS Status; + UINTN BufferSize; + HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo; + EFI_STRING ConfigRequestHdr; + EFI_STRING ConfigRequest; + BOOLEAN AllocatedRequest; + UINTN Size; + + if ((Progress == NULL) || (Results == NULL)) { return EFI_INVALID_PARAMETER; } @@ -265,11 +271,12 @@ HttpBootFormExtractConfig ( // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator // ConfigRequestHdr = HiiConstructConfigHdr (&gHttpBootConfigGuid, mHttpBootConfigStorageName, CallbackInfo->ChildHandle); - Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); - ConfigRequest = AllocateZeroPool (Size); + Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); + ConfigRequest = AllocateZeroPool (Size); if (ConfigRequest == NULL) { return EFI_OUT_OF_RESOURCES; } + AllocatedRequest = TRUE; UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize); FreePool (ConfigRequestHdr); @@ -278,7 +285,7 @@ HttpBootFormExtractConfig ( Status = gHiiConfigRouting->BlockToConfig ( gHiiConfigRouting, ConfigRequest, - (UINT8 *) &CallbackInfo->HttpBootNvData, + (UINT8 *)&CallbackInfo->HttpBootNvData, BufferSize, Results, Progress @@ -291,6 +298,7 @@ HttpBootFormExtractConfig ( FreePool (ConfigRequest); ConfigRequest = NULL; } + // // Set Progress string to the original request string. // @@ -346,19 +354,20 @@ HttpBootFormExtractConfig ( EFI_STATUS EFIAPI HttpBootFormRouteConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Configuration, - OUT EFI_STRING *Progress + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress ) { - EFI_STATUS Status; - UINTN BufferSize; - HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo; - HTTP_BOOT_PRIVATE_DATA *Private; + EFI_STATUS Status; + UINTN BufferSize; + HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo; + HTTP_BOOT_PRIVATE_DATA *Private; if (Progress == NULL) { return EFI_INVALID_PARAMETER; } + *Progress = Configuration; if (Configuration == NULL) { @@ -380,12 +389,12 @@ HttpBootFormRouteConfig ( ZeroMem (&CallbackInfo->HttpBootNvData, BufferSize); Status = gHiiConfigRouting->ConfigToBlock ( - gHiiConfigRouting, - Configuration, - (UINT8 *) &CallbackInfo->HttpBootNvData, - &BufferSize, - Progress - ); + gHiiConfigRouting, + Configuration, + (UINT8 *)&CallbackInfo->HttpBootNvData, + &BufferSize, + Progress + ); if (EFI_ERROR (Status)) { return Status; } @@ -431,27 +440,27 @@ HttpBootFormRouteConfig ( EFI_STATUS EFIAPI HttpBootFormCallback ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN EFI_BROWSER_ACTION Action, - IN EFI_QUESTION_ID QuestionId, - IN UINT8 Type, - IN OUT EFI_IFR_TYPE_VALUE *Value, - OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN OUT EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest ) { - EFI_INPUT_KEY Key; - CHAR16 *Uri; - UINTN UriLen; - CHAR8 *AsciiUri; - HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo; - EFI_STATUS Status; + EFI_INPUT_KEY Key; + CHAR16 *Uri; + UINTN UriLen; + CHAR8 *AsciiUri; + HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo; + EFI_STATUS Status; Uri = NULL; UriLen = 0; AsciiUri = NULL; Status = EFI_SUCCESS; - if (This == NULL || Value == NULL) { + if ((This == NULL) || (Value == NULL)) { return EFI_INVALID_PARAMETER; } @@ -462,68 +471,66 @@ HttpBootFormCallback ( } switch (QuestionId) { - case KEY_INITIATOR_URI: - // - // Get user input URI string - // - Uri = HiiGetString (CallbackInfo->RegisteredHandle, Value->string, NULL); - if(Uri == NULL) { - return EFI_INVALID_PARAMETER; - } - - // - // The URI should be either an empty string (for corporate environment) ,or http(s) for home environment. - // Pop up a message box for the unsupported URI. - // - if (StrLen (Uri) != 0) { - UriLen = StrLen (Uri) + 1; - AsciiUri = AllocateZeroPool (UriLen); - if (AsciiUri == NULL) { - FreePool (Uri); - return EFI_OUT_OF_RESOURCES; + case KEY_INITIATOR_URI: + // + // Get user input URI string + // + Uri = HiiGetString (CallbackInfo->RegisteredHandle, Value->string, NULL); + if (Uri == NULL) { + return EFI_INVALID_PARAMETER; } - UnicodeStrToAsciiStrS (Uri, AsciiUri, UriLen); - - Status = HttpBootCheckUriScheme (AsciiUri); - - if (Status == EFI_INVALID_PARAMETER) { - - DEBUG ((DEBUG_ERROR, "HttpBootFormCallback: %r.\n", Status)); - - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"ERROR: Unsupported URI!", - L"Only supports HTTP and HTTPS", - NULL - ); - } else if (Status == EFI_ACCESS_DENIED) { - - DEBUG ((DEBUG_ERROR, "HttpBootFormCallback: %r.\n", Status)); - - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"ERROR: Unsupported URI!", - L"HTTP is disabled", - NULL - ); + // + // The URI should be either an empty string (for corporate environment) ,or http(s) for home environment. + // Pop up a message box for the unsupported URI. + // + if (StrLen (Uri) != 0) { + UriLen = StrLen (Uri) + 1; + AsciiUri = AllocateZeroPool (UriLen); + if (AsciiUri == NULL) { + FreePool (Uri); + return EFI_OUT_OF_RESOURCES; + } + + UnicodeStrToAsciiStrS (Uri, AsciiUri, UriLen); + + Status = HttpBootCheckUriScheme (AsciiUri); + + if (Status == EFI_INVALID_PARAMETER) { + DEBUG ((DEBUG_ERROR, "HttpBootFormCallback: %r.\n", Status)); + + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"ERROR: Unsupported URI!", + L"Only supports HTTP and HTTPS", + NULL + ); + } else if (Status == EFI_ACCESS_DENIED) { + DEBUG ((DEBUG_ERROR, "HttpBootFormCallback: %r.\n", Status)); + + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"ERROR: Unsupported URI!", + L"HTTP is disabled", + NULL + ); + } } - } - if (Uri != NULL) { - FreePool (Uri); - } + if (Uri != NULL) { + FreePool (Uri); + } - if (AsciiUri != NULL) { - FreePool (AsciiUri); - } + if (AsciiUri != NULL) { + FreePool (AsciiUri); + } - break; + break; - default: - break; + default: + break; } return Status; @@ -540,15 +547,15 @@ HttpBootFormCallback ( **/ EFI_STATUS HttpBootConfigFormInit ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_STATUS Status; - HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo; - VENDOR_DEVICE_PATH VendorDeviceNode; - CHAR16 *MacString; - CHAR16 *OldMenuString; - CHAR16 MenuString[128]; + EFI_STATUS Status; + HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo; + VENDOR_DEVICE_PATH VendorDeviceNode; + CHAR16 *MacString; + CHAR16 *OldMenuString; + CHAR16 MenuString[128]; CallbackInfo = &Private->CallbackInfo; @@ -570,7 +577,7 @@ HttpBootConfigFormInit ( SetDevicePathNodeLength (&VendorDeviceNode.Header, sizeof (VENDOR_DEVICE_PATH)); CallbackInfo->HiiVendorDevicePath = AppendDevicePathNode ( Private->ParentDevicePath, - (EFI_DEVICE_PATH_PROTOCOL *) &VendorDeviceNode + (EFI_DEVICE_PATH_PROTOCOL *)&VendorDeviceNode ); if (CallbackInfo->HiiVendorDevicePath == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -655,12 +662,12 @@ Error: **/ EFI_STATUS HttpBootConfigFormUnload ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo; + HTTP_BOOT_FORM_CALLBACK_INFO *CallbackInfo; - if (Private->Ip4Nic != NULL || Private->Ip6Nic != NULL) { + if ((Private->Ip4Nic != NULL) || (Private->Ip6Nic != NULL)) { // // Only unload the configuration form when both IP4 and IP6 stack are stopped. // diff --git a/NetworkPkg/HttpBootDxe/HttpBootConfig.h b/NetworkPkg/HttpBootDxe/HttpBootConfig.h index 84eab425b0..9e5f05bdd8 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootConfig.h +++ b/NetworkPkg/HttpBootDxe/HttpBootConfig.h @@ -10,13 +10,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef _HTTP_BOOT_CONFIG_H_ #define _HTTP_BOOT_CONFIG_H_ - #include "HttpBootConfigNVDataStruc.h" -typedef struct _HTTP_BOOT_FORM_CALLBACK_INFO HTTP_BOOT_FORM_CALLBACK_INFO; +typedef struct _HTTP_BOOT_FORM_CALLBACK_INFO HTTP_BOOT_FORM_CALLBACK_INFO; -extern UINT8 HttpBootDxeStrings[]; -extern UINT8 HttpBootConfigVfrBin[]; +extern UINT8 HttpBootDxeStrings[]; +extern UINT8 HttpBootConfigVfrBin[]; #pragma pack() @@ -31,13 +30,13 @@ extern UINT8 HttpBootConfigVfrBin[]; ) struct _HTTP_BOOT_FORM_CALLBACK_INFO { - UINT32 Signature; - BOOLEAN Initialized; - EFI_HANDLE ChildHandle; - EFI_DEVICE_PATH_PROTOCOL *HiiVendorDevicePath; - EFI_HII_HANDLE RegisteredHandle; - EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; - HTTP_BOOT_CONFIG_IFR_NVDATA HttpBootNvData; + UINT32 Signature; + BOOLEAN Initialized; + EFI_HANDLE ChildHandle; + EFI_DEVICE_PATH_PROTOCOL *HiiVendorDevicePath; + EFI_HII_HANDLE RegisteredHandle; + EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; + HTTP_BOOT_CONFIG_IFR_NVDATA HttpBootNvData; }; /** @@ -51,7 +50,7 @@ struct _HTTP_BOOT_FORM_CALLBACK_INFO { **/ EFI_STATUS HttpBootConfigFormInit ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); /** @@ -67,7 +66,7 @@ HttpBootConfigFormInit ( **/ EFI_STATUS HttpBootConfigFormUnload ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); #endif diff --git a/NetworkPkg/HttpBootDxe/HttpBootConfigNVDataStruc.h b/NetworkPkg/HttpBootDxe/HttpBootConfigNVDataStruc.h index 3afa97598b..a24fa5cb08 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootConfigNVDataStruc.h +++ b/NetworkPkg/HttpBootDxe/HttpBootConfigNVDataStruc.h @@ -11,25 +11,25 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include -#define HTTP_BOOT_IP_VERSION_4 0 -#define HTTP_BOOT_IP_VERSION_6 1 +#define HTTP_BOOT_IP_VERSION_4 0 +#define HTTP_BOOT_IP_VERSION_6 1 // // Macros used for an IPv4 or an IPv6 address. // -#define URI_STR_MIN_SIZE 0 -#define URI_STR_MAX_SIZE 255 +#define URI_STR_MIN_SIZE 0 +#define URI_STR_MAX_SIZE 255 -#define DESCRIPTION_STR_MIN_SIZE 6 -#define DESCRIPTION_STR_MAX_SIZE 75 +#define DESCRIPTION_STR_MIN_SIZE 6 +#define DESCRIPTION_STR_MAX_SIZE 75 -#define CONFIGURATION_VARSTORE_ID 0x1234 +#define CONFIGURATION_VARSTORE_ID 0x1234 -#define FORMID_MAIN_FORM 1 +#define FORMID_MAIN_FORM 1 -#define KEY_INITIATOR_URI 0x101 +#define KEY_INITIATOR_URI 0x101 -#define HTTP_BOOT_DEFAULT_DESCRIPTION_STR L"UEFI HTTP" +#define HTTP_BOOT_DEFAULT_DESCRIPTION_STR L"UEFI HTTP" #pragma pack(1) typedef struct _HTTP_BOOT_CONFIG_IFR_NVDATA { @@ -40,5 +40,4 @@ typedef struct _HTTP_BOOT_CONFIG_IFR_NVDATA { } HTTP_BOOT_CONFIG_IFR_NVDATA; #pragma pack() - #endif diff --git a/NetworkPkg/HttpBootDxe/HttpBootDhcp4.c b/NetworkPkg/HttpBootDxe/HttpBootDhcp4.c index 1da05dbf0e..6931a14827 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootDhcp4.c +++ b/NetworkPkg/HttpBootDxe/HttpBootDhcp4.c @@ -11,7 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // This is a map from the interested DHCP4 option tags' index to the tag value. // -UINT8 mInterestedDhcp4Tags[HTTP_BOOT_DHCP4_TAG_INDEX_MAX] = { +UINT8 mInterestedDhcp4Tags[HTTP_BOOT_DHCP4_TAG_INDEX_MAX] = { DHCP4_TAG_BOOTFILE_LEN, DHCP4_TAG_OVERLOAD, DHCP4_TAG_MSG_TYPE, @@ -24,7 +24,7 @@ UINT8 mInterestedDhcp4Tags[HTTP_BOOT_DHCP4_TAG_INDEX_MAX] = { // // There are 4 times retries with the value of 4, 8, 16 and 32, refers to UEFI 2.5 spec. // -UINT32 mHttpDhcpTimeout[4] = {4, 8, 16, 32}; +UINT32 mHttpDhcpTimeout[4] = { 4, 8, 16, 32 }; /** Build the options buffer for the DHCPv4 request packet. @@ -38,9 +38,9 @@ UINT32 mHttpDhcpTimeout[4] = {4, 8, 16, 32}; **/ UINT32 HttpBootBuildDhcp4Options ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - OUT EFI_DHCP4_PACKET_OPTION **OptList, - IN UINT8 *Buffer + IN HTTP_BOOT_PRIVATE_DATA *Private, + OUT EFI_DHCP4_PACKET_OPTION **OptList, + IN UINT8 *Buffer ) { HTTP_BOOT_DHCP4_OPTION_ENTRY OptEnt; @@ -48,14 +48,14 @@ HttpBootBuildDhcp4Options ( UINT32 Index; Index = 0; - OptList[0] = (EFI_DHCP4_PACKET_OPTION *) Buffer; + OptList[0] = (EFI_DHCP4_PACKET_OPTION *)Buffer; // // Append parameter request list option. // OptList[Index]->OpCode = DHCP4_TAG_PARA_LIST; OptList[Index]->Length = 27; - OptEnt.Para = (HTTP_BOOT_DHCP4_OPTION_PARA *) OptList[Index]->Data; + OptEnt.Para = (HTTP_BOOT_DHCP4_OPTION_PARA *)OptList[Index]->Data; OptEnt.Para->ParaList[0] = DHCP4_TAG_NETMASK; OptEnt.Para->ParaList[1] = DHCP4_TAG_TIME_OFFSET; OptEnt.Para->ParaList[2] = DHCP4_TAG_ROUTER; @@ -83,30 +83,31 @@ HttpBootBuildDhcp4Options ( OptEnt.Para->ParaList[25] = DHCP4_TAG_BOOTFILE; OptEnt.Para->ParaList[26] = DHCP4_TAG_UUID; Index++; - OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); // // Append UUID/Guid-based client identifier option // - OptList[Index]->OpCode = DHCP4_TAG_UUID; - OptList[Index]->Length = (UINT8) sizeof (HTTP_BOOT_DHCP4_OPTION_UUID); - OptEnt.Uuid = (HTTP_BOOT_DHCP4_OPTION_UUID *) OptList[Index]->Data; - OptEnt.Uuid->Type = 0; - if (EFI_ERROR (NetLibGetSystemGuid ((EFI_GUID *) OptEnt.Uuid->Guid))) { + OptList[Index]->OpCode = DHCP4_TAG_UUID; + OptList[Index]->Length = (UINT8)sizeof (HTTP_BOOT_DHCP4_OPTION_UUID); + OptEnt.Uuid = (HTTP_BOOT_DHCP4_OPTION_UUID *)OptList[Index]->Data; + OptEnt.Uuid->Type = 0; + if (EFI_ERROR (NetLibGetSystemGuid ((EFI_GUID *)OptEnt.Uuid->Guid))) { // // Zero the Guid to indicate NOT programmable if failed to get system Guid. // ZeroMem (OptEnt.Uuid->Guid, sizeof (EFI_GUID)); } + Index++; - OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); // // Append client network device interface option // - OptList[Index]->OpCode = DHCP4_TAG_UNDI; - OptList[Index]->Length = (UINT8) sizeof (HTTP_BOOT_DHCP4_OPTION_UNDI); - OptEnt.Undi = (HTTP_BOOT_DHCP4_OPTION_UNDI *) OptList[Index]->Data; + OptList[Index]->OpCode = DHCP4_TAG_UNDI; + OptList[Index]->Length = (UINT8)sizeof (HTTP_BOOT_DHCP4_OPTION_UNDI); + OptEnt.Undi = (HTTP_BOOT_DHCP4_OPTION_UNDI *)OptList[Index]->Data; if (Private->Nii != NULL) { OptEnt.Undi->Type = Private->Nii->Type; @@ -124,20 +125,20 @@ HttpBootBuildDhcp4Options ( // // Append client system architecture option // - OptList[Index]->OpCode = DHCP4_TAG_ARCH; - OptList[Index]->Length = (UINT8) sizeof (HTTP_BOOT_DHCP4_OPTION_ARCH); - OptEnt.Arch = (HTTP_BOOT_DHCP4_OPTION_ARCH *) OptList[Index]->Data; - Value = HTONS (EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE); + OptList[Index]->OpCode = DHCP4_TAG_ARCH; + OptList[Index]->Length = (UINT8)sizeof (HTTP_BOOT_DHCP4_OPTION_ARCH); + OptEnt.Arch = (HTTP_BOOT_DHCP4_OPTION_ARCH *)OptList[Index]->Data; + Value = HTONS (EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE); CopyMem (&OptEnt.Arch->Type, &Value, sizeof (UINT16)); Index++; - OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); // // Append vendor class identify option // - OptList[Index]->OpCode = DHCP4_TAG_VENDOR_CLASS_ID; - OptList[Index]->Length = (UINT8) sizeof (HTTP_BOOT_DHCP4_OPTION_CLID); - OptEnt.Clid = (HTTP_BOOT_DHCP4_OPTION_CLID *) OptList[Index]->Data; + OptList[Index]->OpCode = DHCP4_TAG_VENDOR_CLASS_ID; + OptList[Index]->Length = (UINT8)sizeof (HTTP_BOOT_DHCP4_OPTION_CLID); + OptEnt.Clid = (HTTP_BOOT_DHCP4_OPTION_CLID *)OptList[Index]->Data; CopyMem ( OptEnt.Clid, DEFAULT_CLASS_ID_DATA, @@ -173,19 +174,18 @@ HttpBootBuildDhcp4Options ( **/ EFI_DHCP4_PACKET_OPTION * HttpBootParseDhcp4Options ( - IN UINT8 *Buffer, - IN UINT32 Length, - IN UINT8 OptTag + IN UINT8 *Buffer, + IN UINT32 Length, + IN UINT8 OptTag ) { - EFI_DHCP4_PACKET_OPTION *Option; - UINT32 Offset; + EFI_DHCP4_PACKET_OPTION *Option; + UINT32 Offset; - Option = (EFI_DHCP4_PACKET_OPTION *) Buffer; - Offset = 0; + Option = (EFI_DHCP4_PACKET_OPTION *)Buffer; + Offset = 0; while (Offset < Length && Option->OpCode != DHCP4_TAG_EOP) { - if (Option->OpCode == OptTag) { // // Found the required option. @@ -202,7 +202,7 @@ HttpBootParseDhcp4Options ( Offset += Option->Length + 2; } - Option = (EFI_DHCP4_PACKET_OPTION *) (Buffer + Offset); + Option = (EFI_DHCP4_PACKET_OPTION *)(Buffer + Offset); } return NULL; @@ -220,8 +220,8 @@ HttpBootParseDhcp4Options ( **/ EFI_STATUS HttpBootCacheDhcp4Packet ( - IN EFI_DHCP4_PACKET *Dst, - IN EFI_DHCP4_PACKET *Src + IN EFI_DHCP4_PACKET *Dst, + IN EFI_DHCP4_PACKET *Src ) { if (Dst->Size < Src->Length) { @@ -245,27 +245,27 @@ HttpBootCacheDhcp4Packet ( **/ EFI_STATUS HttpBootParseDhcp4Packet ( - IN HTTP_BOOT_DHCP4_PACKET_CACHE *Cache4 + IN HTTP_BOOT_DHCP4_PACKET_CACHE *Cache4 ) { - EFI_DHCP4_PACKET *Offer; - EFI_DHCP4_PACKET_OPTION **Options; - UINTN Index; - EFI_DHCP4_PACKET_OPTION *Option; - BOOLEAN IsProxyOffer; - BOOLEAN IsHttpOffer; - BOOLEAN IsDnsOffer; - BOOLEAN IpExpressedUri; - UINT8 *Ptr8; - EFI_STATUS Status; - HTTP_BOOT_OFFER_TYPE OfferType; - EFI_IPv4_ADDRESS IpAddr; - BOOLEAN FileFieldOverloaded; - - IsDnsOffer = FALSE; - IpExpressedUri = FALSE; - IsProxyOffer = FALSE; - IsHttpOffer = FALSE; + EFI_DHCP4_PACKET *Offer; + EFI_DHCP4_PACKET_OPTION **Options; + UINTN Index; + EFI_DHCP4_PACKET_OPTION *Option; + BOOLEAN IsProxyOffer; + BOOLEAN IsHttpOffer; + BOOLEAN IsDnsOffer; + BOOLEAN IpExpressedUri; + UINT8 *Ptr8; + EFI_STATUS Status; + HTTP_BOOT_OFFER_TYPE OfferType; + EFI_IPv4_ADDRESS IpAddr; + BOOLEAN FileFieldOverloaded; + + IsDnsOffer = FALSE; + IpExpressedUri = FALSE; + IsProxyOffer = FALSE; + IsHttpOffer = FALSE; FileFieldOverloaded = FALSE; ZeroMem (Cache4->OptList, sizeof (Cache4->OptList)); @@ -284,6 +284,7 @@ HttpBootParseDhcp4Packet ( mInterestedDhcp4Tags[Index] ); } + // // Second, Check if bootfilename and serverhostname is overloaded to carry DHCP options refers to rfc-2132. // If yes, try to parse options from the BootFileName field, then ServerName field. @@ -295,18 +296,19 @@ HttpBootParseDhcp4Packet ( for (Index = 0; Index < HTTP_BOOT_DHCP4_TAG_INDEX_MAX; Index++) { if (Options[Index] == NULL) { Options[Index] = HttpBootParseDhcp4Options ( - (UINT8 *) Offer->Dhcp4.Header.BootFileName, + (UINT8 *)Offer->Dhcp4.Header.BootFileName, sizeof (Offer->Dhcp4.Header.BootFileName), mInterestedDhcp4Tags[Index] ); } } } + if ((Option->Data[0] & HTTP_BOOT_DHCP4_OVERLOAD_SERVER_NAME) != 0) { for (Index = 0; Index < HTTP_BOOT_DHCP4_TAG_INDEX_MAX; Index++) { if (Options[Index] == NULL) { Options[Index] = HttpBootParseDhcp4Options ( - (UINT8 *) Offer->Dhcp4.Header.ServerName, + (UINT8 *)Offer->Dhcp4.Header.ServerName, sizeof (Offer->Dhcp4.Header.ServerName), mInterestedDhcp4Tags[Index] ); @@ -327,7 +329,8 @@ HttpBootParseDhcp4Packet ( // Option = Options[HTTP_BOOT_DHCP4_TAG_INDEX_CLASS_ID]; if ((Option != NULL) && (Option->Length >= 10) && - (CompareMem (Option->Data, DEFAULT_CLASS_ID_DATA, 10) == 0)) { + (CompareMem (Option->Data, DEFAULT_CLASS_ID_DATA, 10) == 0)) + { IsHttpOffer = TRUE; } @@ -350,25 +353,25 @@ HttpBootParseDhcp4Packet ( // RFC 2132, Section 9.5 does not strictly state Bootfile name (option 67) is null // terminated string. So force to append null terminated character at the end of string. // - Ptr8 = (UINT8*)&Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Data[0]; + Ptr8 = (UINT8 *)&Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Data[0]; Ptr8 += Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Length; if (*(Ptr8 - 1) != '\0') { *Ptr8 = '\0'; } - } else if (!FileFieldOverloaded && Offer->Dhcp4.Header.BootFileName[0] != 0) { + } else if (!FileFieldOverloaded && (Offer->Dhcp4.Header.BootFileName[0] != 0)) { // // If the bootfile is not present and bootfilename is present in DHCPv4 packet, just parse it. // Do not count dhcp option header here, or else will destroy the serverhostname. // Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE] = (EFI_DHCP4_PACKET_OPTION *) - (&Offer->Dhcp4.Header.BootFileName[0] - - OFFSET_OF (EFI_DHCP4_PACKET_OPTION, Data[0])); + (&Offer->Dhcp4.Header.BootFileName[0] - + OFFSET_OF (EFI_DHCP4_PACKET_OPTION, Data[0])); } // // Http offer must have a boot URI. // - if (IsHttpOffer && Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE] == NULL) { + if (IsHttpOffer && (Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE] == NULL)) { return EFI_DEVICE_ERROR; } @@ -377,8 +380,8 @@ HttpBootParseDhcp4Packet ( // if (IsHttpOffer) { Status = HttpParseUrl ( - (CHAR8*) Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Data, - (UINT32) AsciiStrLen ((CHAR8*) Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Data), + (CHAR8 *)Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Data, + (UINT32)AsciiStrLen ((CHAR8 *)Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Data), FALSE, &Cache4->UriParser ); @@ -387,7 +390,7 @@ HttpBootParseDhcp4Packet ( } Status = HttpUrlGetIp4 ( - (CHAR8*) Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Data, + (CHAR8 *)Options[HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE]->Data, Cache4->UriParser, &IpAddr ); @@ -411,7 +414,6 @@ HttpBootParseDhcp4Packet ( OfferType = HttpOfferTypeProxyNameUri; } } - } else { if (!IsProxyOffer) { OfferType = IsDnsOffer ? HttpOfferTypeDhcpDns : HttpOfferTypeDhcpOnly; @@ -419,6 +421,7 @@ HttpBootParseDhcp4Packet ( if (Cache4->UriParser != NULL) { FreePool (Cache4->UriParser); } + return EFI_DEVICE_ERROR; } } @@ -490,7 +493,7 @@ HttpBootSelectDhcpOffer ( IN HTTP_BOOT_PRIVATE_DATA *Private ) { - Private->SelectIndex = 0; + Private->SelectIndex = 0; Private->SelectProxyType = HttpOfferTypeMax; if (Private->FilePathUri != NULL) { @@ -500,26 +503,16 @@ HttpBootSelectDhcpOffer ( // The offer with DNS server address takes priority here. // if (Private->OfferCount[HttpOfferTypeDhcpDns] > 0) { - Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpDns][0] + 1; - } else if (Private->OfferCount[HttpOfferTypeDhcpIpUriDns] > 0) { - Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpIpUriDns][0] + 1; - } else if (Private->OfferCount[HttpOfferTypeDhcpNameUriDns] > 0) { - Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpNameUriDns][0] + 1; - - } else if (Private->OfferCount[HttpOfferTypeDhcpOnly] > 0) { - + } else if (Private->OfferCount[HttpOfferTypeDhcpOnly] > 0) { Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpOnly][0] + 1; - - } else if (Private->OfferCount[HttpOfferTypeDhcpIpUri] > 0) { - + } else if (Private->OfferCount[HttpOfferTypeDhcpIpUri] > 0) { Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpIpUri][0] + 1; } - } else { // // We are in corporate environment. @@ -532,45 +525,35 @@ HttpBootSelectDhcpOffer ( // Priority6: HttpOfferTypeDhcpDns + HttpOfferTypeDhcpNameUri // if (Private->OfferCount[HttpOfferTypeDhcpIpUri] > 0) { - Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpIpUri][0] + 1; - } else if (Private->OfferCount[HttpOfferTypeDhcpIpUriDns] > 0) { - Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpIpUriDns][0] + 1; - - }else if (Private->OfferCount[HttpOfferTypeDhcpNameUriDns] > 0) { - + } else if (Private->OfferCount[HttpOfferTypeDhcpNameUriDns] > 0) { Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpNameUriDns][0] + 1; - - } else if (Private->OfferCount[HttpOfferTypeDhcpOnly] > 0 && - Private->OfferCount[HttpOfferTypeProxyIpUri] > 0) { - + } else if ((Private->OfferCount[HttpOfferTypeDhcpOnly] > 0) && + (Private->OfferCount[HttpOfferTypeProxyIpUri] > 0)) + { Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpOnly][0] + 1; Private->SelectProxyType = HttpOfferTypeProxyIpUri; - - } else if (Private->OfferCount[HttpOfferTypeDhcpDns] > 0 && - Private->OfferCount[HttpOfferTypeProxyIpUri] > 0) { - + } else if ((Private->OfferCount[HttpOfferTypeDhcpDns] > 0) && + (Private->OfferCount[HttpOfferTypeProxyIpUri] > 0)) + { Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpDns][0] + 1; Private->SelectProxyType = HttpOfferTypeProxyIpUri; - - } else if (Private->OfferCount[HttpOfferTypeDhcpDns] > 0 && - Private->OfferCount[HttpOfferTypeProxyNameUri] > 0) { - + } else if ((Private->OfferCount[HttpOfferTypeDhcpDns] > 0) && + (Private->OfferCount[HttpOfferTypeProxyNameUri] > 0)) + { Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpDns][0] + 1; Private->SelectProxyType = HttpOfferTypeProxyNameUri; - - } else if (Private->OfferCount[HttpOfferTypeDhcpDns] > 0 && - Private->OfferCount[HttpOfferTypeDhcpNameUri] > 0) { - + } else if ((Private->OfferCount[HttpOfferTypeDhcpDns] > 0) && + (Private->OfferCount[HttpOfferTypeDhcpNameUri] > 0)) + { Private->SelectIndex = Private->OfferIndex[HttpOfferTypeDhcpDns][0] + 1; Private->SelectProxyType = HttpOfferTypeDhcpNameUri; } } } - /** EFI_DHCP4_CALLBACK is provided by the consumer of the EFI DHCPv4 Protocol driver to intercept events that occurred in the configuration process. @@ -594,29 +577,30 @@ HttpBootSelectDhcpOffer ( EFI_STATUS EFIAPI HttpBootDhcp4CallBack ( - IN EFI_DHCP4_PROTOCOL *This, - IN VOID *Context, - IN EFI_DHCP4_STATE CurrentState, - IN EFI_DHCP4_EVENT Dhcp4Event, - IN EFI_DHCP4_PACKET *Packet OPTIONAL, - OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL + IN EFI_DHCP4_PROTOCOL *This, + IN VOID *Context, + IN EFI_DHCP4_STATE CurrentState, + IN EFI_DHCP4_EVENT Dhcp4Event, + IN EFI_DHCP4_PACKET *Packet OPTIONAL, + OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL ) { - HTTP_BOOT_PRIVATE_DATA *Private; - EFI_DHCP4_PACKET_OPTION *MaxMsgSize; - UINT16 Value; - EFI_STATUS Status; - BOOLEAN Received; + HTTP_BOOT_PRIVATE_DATA *Private; + EFI_DHCP4_PACKET_OPTION *MaxMsgSize; + UINT16 Value; + EFI_STATUS Status; + BOOLEAN Received; if ((Dhcp4Event != Dhcp4SendDiscover) && (Dhcp4Event != Dhcp4RcvdOffer) && (Dhcp4Event != Dhcp4SendRequest) && (Dhcp4Event != Dhcp4RcvdAck) && - (Dhcp4Event != Dhcp4SelectOffer)) { + (Dhcp4Event != Dhcp4SelectOffer)) + { return EFI_SUCCESS; } - Private = (HTTP_BOOT_PRIVATE_DATA *) Context; + Private = (HTTP_BOOT_PRIVATE_DATA *)Context; // // Override the Maximum DHCP Message Size. @@ -634,15 +618,15 @@ HttpBootDhcp4CallBack ( // // Callback to user if any packets sent or received. // - if (Private->HttpBootCallback != NULL && Dhcp4Event != Dhcp4SelectOffer) { - Received = (BOOLEAN) (Dhcp4Event == Dhcp4RcvdOffer || Dhcp4Event == Dhcp4RcvdAck); - Status = Private->HttpBootCallback->Callback ( - Private->HttpBootCallback, - HttpBootDhcp4, - Received, - Packet->Length, - &Packet->Dhcp4 - ); + if ((Private->HttpBootCallback != NULL) && (Dhcp4Event != Dhcp4SelectOffer)) { + Received = (BOOLEAN)(Dhcp4Event == Dhcp4RcvdOffer || Dhcp4Event == Dhcp4RcvdAck); + Status = Private->HttpBootCallback->Callback ( + Private->HttpBootCallback, + HttpBootDhcp4, + Received, + Packet->Length, + &Packet->Dhcp4 + ); if (EFI_ERROR (Status)) { return EFI_ABORTED; } @@ -650,40 +634,43 @@ HttpBootDhcp4CallBack ( Status = EFI_SUCCESS; switch (Dhcp4Event) { - case Dhcp4RcvdOffer: - Status = EFI_NOT_READY; - if (Packet->Length > HTTP_BOOT_DHCP4_PACKET_MAX_SIZE) { - // - // Ignore the incoming packets which exceed the maximum length. - // + case Dhcp4RcvdOffer: + Status = EFI_NOT_READY; + if (Packet->Length > HTTP_BOOT_DHCP4_PACKET_MAX_SIZE) { + // + // Ignore the incoming packets which exceed the maximum length. + // + break; + } + + if (Private->OfferNum < HTTP_BOOT_OFFER_MAX_NUM) { + // + // Cache the DHCPv4 offers to OfferBuffer[] for select later, and record + // the OfferIndex and OfferCount. + // If error happens, just ignore this packet and continue to wait more offer. + // + HttpBootCacheDhcp4Offer (Private, Packet); + } + break; - } - if (Private->OfferNum < HTTP_BOOT_OFFER_MAX_NUM) { + + case Dhcp4SelectOffer: // - // Cache the DHCPv4 offers to OfferBuffer[] for select later, and record - // the OfferIndex and OfferCount. - // If error happens, just ignore this packet and continue to wait more offer. + // Select offer according to the priority in UEFI spec, and record the SelectIndex + // and SelectProxyType. // - HttpBootCacheDhcp4Offer (Private, Packet); - } - break; + HttpBootSelectDhcpOffer (Private); - case Dhcp4SelectOffer: - // - // Select offer according to the priority in UEFI spec, and record the SelectIndex - // and SelectProxyType. - // - HttpBootSelectDhcpOffer (Private); + if (Private->SelectIndex == 0) { + Status = EFI_ABORTED; + } else { + *NewPacket = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp4.Packet.Offer; + } - if (Private->SelectIndex == 0) { - Status = EFI_ABORTED; - } else { - *NewPacket = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp4.Packet.Offer; - } - break; + break; - default: - break; + default: + break; } return Status; @@ -700,11 +687,11 @@ HttpBootDhcp4CallBack ( **/ EFI_STATUS HttpBootRegisterIp4Gateway ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_STATUS Status; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + EFI_STATUS Status; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; ASSERT (!Private->UsingIpv6); @@ -742,12 +729,12 @@ HttpBootRegisterIp4Gateway ( **/ EFI_STATUS HttpBootRegisterIp4Dns ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN UINTN DataLength, - IN VOID *DnsServerData + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN UINTN DataLength, + IN VOID *DnsServerData ) { - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; ASSERT (!Private->UsingIpv6); @@ -761,7 +748,6 @@ HttpBootRegisterIp4Dns ( ); } - /** This function will switch the IP4 configuration policy to Static. @@ -773,35 +759,35 @@ HttpBootRegisterIp4Dns ( **/ EFI_STATUS HttpBootSetIp4Policy ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_IP4_CONFIG2_POLICY Policy; - EFI_STATUS Status; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; - UINTN DataSize; + EFI_IP4_CONFIG2_POLICY Policy; + EFI_STATUS Status; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + UINTN DataSize; Ip4Config2 = Private->Ip4Config2; DataSize = sizeof (EFI_IP4_CONFIG2_POLICY); - Status = Ip4Config2->GetData ( - Ip4Config2, - Ip4Config2DataTypePolicy, - &DataSize, - &Policy - ); + Status = Ip4Config2->GetData ( + Ip4Config2, + Ip4Config2DataTypePolicy, + &DataSize, + &Policy + ); if (EFI_ERROR (Status)) { return Status; } if (Policy != Ip4Config2PolicyStatic) { Policy = Ip4Config2PolicyStatic; - Status= Ip4Config2->SetData ( - Ip4Config2, - Ip4Config2DataTypePolicy, - sizeof (EFI_IP4_CONFIG2_POLICY), - &Policy - ); + Status = Ip4Config2->SetData ( + Ip4Config2, + Ip4Config2DataTypePolicy, + sizeof (EFI_IP4_CONFIG2_POLICY), + &Policy + ); if (EFI_ERROR (Status)) { return Status; } @@ -821,16 +807,16 @@ HttpBootSetIp4Policy ( **/ EFI_STATUS HttpBootDhcp4Dora ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_DHCP4_PROTOCOL *Dhcp4; - UINT32 OptCount; - EFI_DHCP4_PACKET_OPTION *OptList[HTTP_BOOT_DHCP4_OPTION_MAX_NUM]; - UINT8 Buffer[HTTP_BOOT_DHCP4_OPTION_MAX_SIZE]; - EFI_DHCP4_CONFIG_DATA Config; - EFI_STATUS Status; - EFI_DHCP4_MODE_DATA Mode; + EFI_DHCP4_PROTOCOL *Dhcp4; + UINT32 OptCount; + EFI_DHCP4_PACKET_OPTION *OptList[HTTP_BOOT_DHCP4_OPTION_MAX_NUM]; + UINT8 Buffer[HTTP_BOOT_DHCP4_OPTION_MAX_SIZE]; + EFI_DHCP4_CONFIG_DATA Config; + EFI_STATUS Status; + EFI_DHCP4_MODE_DATA Mode; Dhcp4 = Private->Dhcp4; ASSERT (Dhcp4 != NULL); @@ -846,7 +832,7 @@ HttpBootDhcp4Dora ( OptCount = HttpBootBuildDhcp4Options (Private, OptList, Buffer); ASSERT (OptCount > 0); - ZeroMem (&Config, sizeof(Config)); + ZeroMem (&Config, sizeof (Config)); Config.OptionCount = OptCount; Config.OptionList = OptList; Config.Dhcp4Callback = HttpBootDhcp4CallBack; diff --git a/NetworkPkg/HttpBootDxe/HttpBootDhcp4.h b/NetworkPkg/HttpBootDxe/HttpBootDhcp4.h index 606a466aae..d76f0e84d6 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootDhcp4.h +++ b/NetworkPkg/HttpBootDxe/HttpBootDhcp4.h @@ -10,17 +10,17 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_UEFI_HTTP_BOOT_DHCP4_H__ #define __EFI_UEFI_HTTP_BOOT_DHCP4_H__ -#define HTTP_BOOT_DHCP4_OPTION_MAX_NUM 16 -#define HTTP_BOOT_DHCP4_OPTION_MAX_SIZE 312 -#define HTTP_BOOT_DHCP4_PACKET_MAX_SIZE 1472 +#define HTTP_BOOT_DHCP4_OPTION_MAX_NUM 16 +#define HTTP_BOOT_DHCP4_OPTION_MAX_SIZE 312 +#define HTTP_BOOT_DHCP4_PACKET_MAX_SIZE 1472 -#define HTTP_BOOT_DHCP4_OPCODE_REQUEST 1 -#define HTTP_BOOT_DHCP4_OPCODE_REPLY 2 -#define HTTP_BOOT_DHCP4_MSG_TYPE_REQUEST 3 -#define HTTP_BOOT_DHCP4_MAGIC 0x63538263 // network byte order +#define HTTP_BOOT_DHCP4_OPCODE_REQUEST 1 +#define HTTP_BOOT_DHCP4_OPCODE_REPLY 2 +#define HTTP_BOOT_DHCP4_MSG_TYPE_REQUEST 3 +#define HTTP_BOOT_DHCP4_MAGIC 0x63538263 // network byte order -#define HTTP_BOOT_DHCP4_OVERLOAD_FILE 1 -#define HTTP_BOOT_DHCP4_OVERLOAD_SERVER_NAME 2 +#define HTTP_BOOT_DHCP4_OVERLOAD_FILE 1 +#define HTTP_BOOT_DHCP4_OVERLOAD_SERVER_NAME 2 /// /// HTTP Tag definition that identifies the processor @@ -29,17 +29,17 @@ SPDX-License-Identifier: BSD-2-Clause-Patent /// http://www.ietf.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml /// #if defined (MDE_CPU_IA32) -#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_IA32 +#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_IA32 #elif defined (MDE_CPU_X64) -#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_X64 +#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_X64 #elif defined (MDE_CPU_ARM) -#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_ARM +#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_ARM #elif defined (MDE_CPU_AARCH64) -#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_AARCH64 +#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_AARCH64 #elif defined (MDE_CPU_RISCV64) -#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_RISCV64 +#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_RISCV64 #elif defined (MDE_CPU_EBC) -#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_EBC +#define EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE HTTP_CLIENT_ARCH_EBC #endif /// DHCP offer types among HTTP boot. @@ -88,75 +88,75 @@ typedef enum { HttpOfferTypeMax } HTTP_BOOT_OFFER_TYPE; -#define HTTP_BOOT_DHCP_RETRIES 4 -#define HTTP_BOOT_OFFER_MAX_NUM 16 +#define HTTP_BOOT_DHCP_RETRIES 4 +#define HTTP_BOOT_OFFER_MAX_NUM 16 // The array index of the DHCP4 option tag interested // -#define HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE_LEN 0 -#define HTTP_BOOT_DHCP4_TAG_INDEX_OVERLOAD 1 -#define HTTP_BOOT_DHCP4_TAG_INDEX_MSG_TYPE 2 -#define HTTP_BOOT_DHCP4_TAG_INDEX_SERVER_ID 3 -#define HTTP_BOOT_DHCP4_TAG_INDEX_CLASS_ID 4 -#define HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE 5 -#define HTTP_BOOT_DHCP4_TAG_INDEX_DNS_SERVER 6 -#define HTTP_BOOT_DHCP4_TAG_INDEX_MAX 7 +#define HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE_LEN 0 +#define HTTP_BOOT_DHCP4_TAG_INDEX_OVERLOAD 1 +#define HTTP_BOOT_DHCP4_TAG_INDEX_MSG_TYPE 2 +#define HTTP_BOOT_DHCP4_TAG_INDEX_SERVER_ID 3 +#define HTTP_BOOT_DHCP4_TAG_INDEX_CLASS_ID 4 +#define HTTP_BOOT_DHCP4_TAG_INDEX_BOOTFILE 5 +#define HTTP_BOOT_DHCP4_TAG_INDEX_DNS_SERVER 6 +#define HTTP_BOOT_DHCP4_TAG_INDEX_MAX 7 #pragma pack(1) typedef struct { - UINT8 ParaList[135]; + UINT8 ParaList[135]; } HTTP_BOOT_DHCP4_OPTION_PARA; typedef struct { - UINT16 Size; + UINT16 Size; } HTTP_BOOT_DHCP4_OPTION_MAX_MESG_SIZE; typedef struct { - UINT8 Type; - UINT8 MajorVer; - UINT8 MinorVer; + UINT8 Type; + UINT8 MajorVer; + UINT8 MinorVer; } HTTP_BOOT_DHCP4_OPTION_UNDI; typedef struct { - UINT8 Type; + UINT8 Type; } HTTP_BOOT_DHCP4_OPTION_MESG; typedef struct { - UINT16 Type; + UINT16 Type; } HTTP_BOOT_DHCP4_OPTION_ARCH; typedef struct { - UINT8 ClassIdentifier[11]; - UINT8 ArchitecturePrefix[5]; - UINT8 ArchitectureType[5]; - UINT8 Lit3[1]; - UINT8 InterfaceName[4]; - UINT8 Lit4[1]; - UINT8 UndiMajor[3]; - UINT8 UndiMinor[3]; + UINT8 ClassIdentifier[11]; + UINT8 ArchitecturePrefix[5]; + UINT8 ArchitectureType[5]; + UINT8 Lit3[1]; + UINT8 InterfaceName[4]; + UINT8 Lit4[1]; + UINT8 UndiMajor[3]; + UINT8 UndiMinor[3]; } HTTP_BOOT_DHCP4_OPTION_CLID; typedef struct { - UINT8 Type; - UINT8 Guid[16]; + UINT8 Type; + UINT8 Guid[16]; } HTTP_BOOT_DHCP4_OPTION_UUID; typedef struct { - UINT16 Type; - UINT16 Layer; + UINT16 Type; + UINT16 Layer; } HTTP_BOOT_OPTION_BOOT_ITEM; #pragma pack() typedef union { - HTTP_BOOT_DHCP4_OPTION_PARA *Para; - HTTP_BOOT_DHCP4_OPTION_UNDI *Undi; - HTTP_BOOT_DHCP4_OPTION_ARCH *Arch; - HTTP_BOOT_DHCP4_OPTION_CLID *Clid; - HTTP_BOOT_DHCP4_OPTION_UUID *Uuid; - HTTP_BOOT_DHCP4_OPTION_MESG *Mesg; - HTTP_BOOT_DHCP4_OPTION_MAX_MESG_SIZE *MaxMesgSize; + HTTP_BOOT_DHCP4_OPTION_PARA *Para; + HTTP_BOOT_DHCP4_OPTION_UNDI *Undi; + HTTP_BOOT_DHCP4_OPTION_ARCH *Arch; + HTTP_BOOT_DHCP4_OPTION_CLID *Clid; + HTTP_BOOT_DHCP4_OPTION_UUID *Uuid; + HTTP_BOOT_DHCP4_OPTION_MESG *Mesg; + HTTP_BOOT_DHCP4_OPTION_MAX_MESG_SIZE *MaxMesgSize; } HTTP_BOOT_DHCP4_OPTION_ENTRY; #define GET_NEXT_DHCP_OPTION(Opt) \ @@ -166,44 +166,44 @@ typedef union { #define GET_OPTION_BUFFER_LEN(Pkt) \ ((Pkt)->Length - sizeof (EFI_DHCP4_HEADER) - 4) -#define DEFAULT_CLASS_ID_DATA "HTTPClient:Arch:xxxxx:UNDI:003000" -#define DEFAULT_UNDI_TYPE 1 -#define DEFAULT_UNDI_MAJOR 3 -#define DEFAULT_UNDI_MINOR 0 +#define DEFAULT_CLASS_ID_DATA "HTTPClient:Arch:xxxxx:UNDI:003000" +#define DEFAULT_UNDI_TYPE 1 +#define DEFAULT_UNDI_MAJOR 3 +#define DEFAULT_UNDI_MINOR 0 typedef struct { - UINT32 Reserved; + UINT32 Reserved; } HTTP_BOOT_VENDOR_OPTION; #define HTTP_CACHED_DHCP4_PACKET_MAX_SIZE (OFFSET_OF (EFI_DHCP4_PACKET, Dhcp4) + HTTP_BOOT_DHCP4_PACKET_MAX_SIZE) typedef union { - EFI_DHCP4_PACKET Offer; - EFI_DHCP4_PACKET Ack; - UINT8 Buffer[HTTP_CACHED_DHCP4_PACKET_MAX_SIZE]; + EFI_DHCP4_PACKET Offer; + EFI_DHCP4_PACKET Ack; + UINT8 Buffer[HTTP_CACHED_DHCP4_PACKET_MAX_SIZE]; } HTTP_BOOT_DHCP4_PACKET; typedef struct { // // URI component // - CHAR8 *Scheme; - CHAR8 *Authority; - CHAR8 *Path; - CHAR8 *Query; - CHAR8 *Fragment; /// TODO: may not required in HTTP URL + CHAR8 *Scheme; + CHAR8 *Authority; + CHAR8 *Path; + CHAR8 *Query; + CHAR8 *Fragment; /// TODO: may not required in HTTP URL - CHAR8 *RegName; /// Point to somewhere in Authority - BOOLEAN AddrIsOk; - EFI_IP_ADDRESS Address; - UINT16 Port; + CHAR8 *RegName; /// Point to somewhere in Authority + BOOLEAN AddrIsOk; + EFI_IP_ADDRESS Address; + UINT16 Port; } HTTP_BOOT_URI_CONTENT; typedef struct { - HTTP_BOOT_DHCP4_PACKET Packet; - HTTP_BOOT_OFFER_TYPE OfferType; - VOID *UriParser; - EFI_DHCP4_PACKET_OPTION *OptList[HTTP_BOOT_DHCP4_TAG_INDEX_MAX]; + HTTP_BOOT_DHCP4_PACKET Packet; + HTTP_BOOT_OFFER_TYPE OfferType; + VOID *UriParser; + EFI_DHCP4_PACKET_OPTION *OptList[HTTP_BOOT_DHCP4_TAG_INDEX_MAX]; } HTTP_BOOT_DHCP4_PACKET_CACHE; /** @@ -228,7 +228,7 @@ HttpBootSelectDhcpOffer ( **/ EFI_STATUS HttpBootDhcp4Dora ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); /** @@ -245,9 +245,9 @@ HttpBootDhcp4Dora ( **/ EFI_STATUS HttpBootRegisterIp4Dns ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN UINTN DataLength, - IN VOID *DnsServerData + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN UINTN DataLength, + IN VOID *DnsServerData ); #endif diff --git a/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c b/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c index 4905bca4ad..b22cef4ff5 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c +++ b/NetworkPkg/HttpBootDxe/HttpBootDhcp6.c @@ -20,70 +20,70 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ UINT32 HttpBootBuildDhcp6Options ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - OUT EFI_DHCP6_PACKET_OPTION **OptList, - IN UINT8 *Buffer + IN HTTP_BOOT_PRIVATE_DATA *Private, + OUT EFI_DHCP6_PACKET_OPTION **OptList, + IN UINT8 *Buffer ) { - HTTP_BOOT_DHCP6_OPTION_ENTRY OptEnt; - UINT16 Value; - UINT32 Index; + HTTP_BOOT_DHCP6_OPTION_ENTRY OptEnt; + UINT16 Value; + UINT32 Index; Index = 0; - OptList[0] = (EFI_DHCP6_PACKET_OPTION *) Buffer; + OptList[0] = (EFI_DHCP6_PACKET_OPTION *)Buffer; // // Append client option request option // - OptList[Index]->OpCode = HTONS (DHCP6_OPT_ORO); - OptList[Index]->OpLen = HTONS (8); - OptEnt.Oro = (HTTP_BOOT_DHCP6_OPTION_ORO *) OptList[Index]->Data; - OptEnt.Oro->OpCode[0] = HTONS(DHCP6_OPT_BOOT_FILE_URL); - OptEnt.Oro->OpCode[1] = HTONS(DHCP6_OPT_BOOT_FILE_PARAM); - OptEnt.Oro->OpCode[2] = HTONS(DHCP6_OPT_DNS_SERVERS); - OptEnt.Oro->OpCode[3] = HTONS(DHCP6_OPT_VENDOR_CLASS); + OptList[Index]->OpCode = HTONS (DHCP6_OPT_ORO); + OptList[Index]->OpLen = HTONS (8); + OptEnt.Oro = (HTTP_BOOT_DHCP6_OPTION_ORO *)OptList[Index]->Data; + OptEnt.Oro->OpCode[0] = HTONS (DHCP6_OPT_BOOT_FILE_URL); + OptEnt.Oro->OpCode[1] = HTONS (DHCP6_OPT_BOOT_FILE_PARAM); + OptEnt.Oro->OpCode[2] = HTONS (DHCP6_OPT_DNS_SERVERS); + OptEnt.Oro->OpCode[3] = HTONS (DHCP6_OPT_VENDOR_CLASS); Index++; - OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); // // Append client network device interface option // - OptList[Index]->OpCode = HTONS (DHCP6_OPT_UNDI); - OptList[Index]->OpLen = HTONS ((UINT16)3); - OptEnt.Undi = (HTTP_BOOT_DHCP6_OPTION_UNDI *) OptList[Index]->Data; + OptList[Index]->OpCode = HTONS (DHCP6_OPT_UNDI); + OptList[Index]->OpLen = HTONS ((UINT16)3); + OptEnt.Undi = (HTTP_BOOT_DHCP6_OPTION_UNDI *)OptList[Index]->Data; if (Private->Nii != NULL) { - OptEnt.Undi->Type = Private->Nii->Type; - OptEnt.Undi->MajorVer = Private->Nii->MajorVer; - OptEnt.Undi->MinorVer = Private->Nii->MinorVer; + OptEnt.Undi->Type = Private->Nii->Type; + OptEnt.Undi->MajorVer = Private->Nii->MajorVer; + OptEnt.Undi->MinorVer = Private->Nii->MinorVer; } else { - OptEnt.Undi->Type = DEFAULT_UNDI_TYPE; - OptEnt.Undi->MajorVer = DEFAULT_UNDI_MAJOR; - OptEnt.Undi->MinorVer = DEFAULT_UNDI_MINOR; + OptEnt.Undi->Type = DEFAULT_UNDI_TYPE; + OptEnt.Undi->MajorVer = DEFAULT_UNDI_MAJOR; + OptEnt.Undi->MinorVer = DEFAULT_UNDI_MINOR; } Index++; - OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); // // Append client system architecture option // - OptList[Index]->OpCode = HTONS (DHCP6_OPT_ARCH); - OptList[Index]->OpLen = HTONS ((UINT16) sizeof (HTTP_BOOT_DHCP6_OPTION_ARCH)); - OptEnt.Arch = (HTTP_BOOT_DHCP6_OPTION_ARCH *) OptList[Index]->Data; - Value = HTONS (EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE); + OptList[Index]->OpCode = HTONS (DHCP6_OPT_ARCH); + OptList[Index]->OpLen = HTONS ((UINT16)sizeof (HTTP_BOOT_DHCP6_OPTION_ARCH)); + OptEnt.Arch = (HTTP_BOOT_DHCP6_OPTION_ARCH *)OptList[Index]->Data; + Value = HTONS (EFI_HTTP_BOOT_CLIENT_SYSTEM_ARCHITECTURE); CopyMem (&OptEnt.Arch->Type, &Value, sizeof (UINT16)); Index++; - OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); // // Append vendor class identify option. // OptList[Index]->OpCode = HTONS (DHCP6_OPT_VENDOR_CLASS); - OptList[Index]->OpLen = HTONS ((UINT16) sizeof (HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS)); - OptEnt.VendorClass = (HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS *) OptList[Index]->Data; + OptList[Index]->OpLen = HTONS ((UINT16)sizeof (HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS)); + OptEnt.VendorClass = (HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS *)OptList[Index]->Data; OptEnt.VendorClass->Vendor = HTONL (HTTP_BOOT_DHCP6_ENTERPRISE_NUM); - OptEnt.VendorClass->ClassLen = HTONS ((UINT16) sizeof (HTTP_BOOT_CLASS_ID)); + OptEnt.VendorClass->ClassLen = HTONS ((UINT16)sizeof (HTTP_BOOT_CLASS_ID)); CopyMem ( &OptEnt.VendorClass->ClassId, DEFAULT_CLASS_ID_DATA, @@ -131,33 +131,30 @@ HttpBootBuildDhcp6Options ( **/ EFI_DHCP6_PACKET_OPTION * HttpBootParseDhcp6Options ( - IN UINT8 *Buffer, - IN UINT32 Length, - IN UINT16 OptTag + IN UINT8 *Buffer, + IN UINT32 Length, + IN UINT16 OptTag ) { - EFI_DHCP6_PACKET_OPTION *Option; - UINT32 Offset; + EFI_DHCP6_PACKET_OPTION *Option; + UINT32 Offset; - Option = (EFI_DHCP6_PACKET_OPTION *) Buffer; - Offset = 0; + Option = (EFI_DHCP6_PACKET_OPTION *)Buffer; + Offset = 0; // // OpLen and OpCode here are both stored in network order. // while (Offset < Length) { - if (NTOHS (Option->OpCode) == OptTag) { - return Option; } - Offset += (NTOHS(Option->OpLen) + 4); - Option = (EFI_DHCP6_PACKET_OPTION *) (Buffer + Offset); + Offset += (NTOHS (Option->OpLen) + 4); + Option = (EFI_DHCP6_PACKET_OPTION *)(Buffer + Offset); } return NULL; - } /** @@ -171,40 +168,39 @@ HttpBootParseDhcp6Options ( **/ EFI_STATUS HttpBootParseDhcp6Packet ( - IN HTTP_BOOT_DHCP6_PACKET_CACHE *Cache6 + IN HTTP_BOOT_DHCP6_PACKET_CACHE *Cache6 ) { - EFI_DHCP6_PACKET *Offer; - EFI_DHCP6_PACKET_OPTION **Options; - EFI_DHCP6_PACKET_OPTION *Option; - HTTP_BOOT_OFFER_TYPE OfferType; - EFI_IPv6_ADDRESS IpAddr; - BOOLEAN IsProxyOffer; - BOOLEAN IsHttpOffer; - BOOLEAN IsDnsOffer; - BOOLEAN IpExpressedUri; - EFI_STATUS Status; - UINT32 Offset; - UINT32 Length; + EFI_DHCP6_PACKET *Offer; + EFI_DHCP6_PACKET_OPTION **Options; + EFI_DHCP6_PACKET_OPTION *Option; + HTTP_BOOT_OFFER_TYPE OfferType; + EFI_IPv6_ADDRESS IpAddr; + BOOLEAN IsProxyOffer; + BOOLEAN IsHttpOffer; + BOOLEAN IsDnsOffer; + BOOLEAN IpExpressedUri; + EFI_STATUS Status; + UINT32 Offset; + UINT32 Length; IsDnsOffer = FALSE; IpExpressedUri = FALSE; IsProxyOffer = TRUE; IsHttpOffer = FALSE; - Offer = &Cache6->Packet.Offer; - Options = Cache6->OptList; + Offer = &Cache6->Packet.Offer; + Options = Cache6->OptList; ZeroMem (Cache6->OptList, sizeof (Cache6->OptList)); - Option = (EFI_DHCP6_PACKET_OPTION *) (Offer->Dhcp6.Option); - Offset = 0; - Length = GET_DHCP6_OPTION_SIZE (Offer); + Option = (EFI_DHCP6_PACKET_OPTION *)(Offer->Dhcp6.Option); + Offset = 0; + Length = GET_DHCP6_OPTION_SIZE (Offer); // // OpLen and OpCode here are both stored in network order, since they are from original packet. // while (Offset < Length) { - if (NTOHS (Option->OpCode) == DHCP6_OPT_IA_NA) { Options[HTTP_BOOT_DHCP6_IDX_IA_NA] = Option; } else if (NTOHS (Option->OpCode) == DHCP6_OPT_BOOT_FILE_URL) { @@ -221,8 +217,9 @@ HttpBootParseDhcp6Packet ( } Offset += (NTOHS (Option->OpLen) + 4); - Option = (EFI_DHCP6_PACKET_OPTION *) (Offer->Dhcp6.Option + Offset); + Option = (EFI_DHCP6_PACKET_OPTION *)(Offer->Dhcp6.Option + Offset); } + // // The offer with assigned client address is NOT a proxy offer. // An ia_na option, embedded with valid ia_addr option and a status_code of success. @@ -234,7 +231,7 @@ HttpBootParseDhcp6Packet ( NTOHS (Option->OpLen), DHCP6_OPT_STATUS_CODE ); - if ((Option != NULL && Option->Data[0] == 0) || (Option == NULL)) { + if (((Option != NULL) && (Option->Data[0] == 0)) || (Option == NULL)) { IsProxyOffer = FALSE; } } @@ -244,10 +241,11 @@ HttpBootParseDhcp6Packet ( // Option = Options[HTTP_BOOT_DHCP6_IDX_VENDOR_CLASS]; - if (Option != NULL && - NTOHS(Option->OpLen) >= 16 && - CompareMem ((Option->Data + 6), DEFAULT_CLASS_ID_DATA, 10) == 0) { - IsHttpOffer = TRUE; + if ((Option != NULL) && + (NTOHS (Option->OpLen) >= 16) && + (CompareMem ((Option->Data + 6), DEFAULT_CLASS_ID_DATA, 10) == 0)) + { + IsHttpOffer = TRUE; } // @@ -261,7 +259,7 @@ HttpBootParseDhcp6Packet ( // // Http offer must have a boot URI. // - if (IsHttpOffer && Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL] == NULL) { + if (IsHttpOffer && (Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL] == NULL)) { return EFI_DEVICE_ERROR; } @@ -270,8 +268,8 @@ HttpBootParseDhcp6Packet ( // if (IsHttpOffer) { Status = HttpParseUrl ( - (CHAR8*) Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data, - (UINT32) AsciiStrLen ((CHAR8*) Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data), + (CHAR8 *)Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data, + (UINT32)AsciiStrLen ((CHAR8 *)Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data), FALSE, &Cache6->UriParser ); @@ -280,7 +278,7 @@ HttpBootParseDhcp6Packet ( } Status = HttpUrlGetIp6 ( - (CHAR8*) Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data, + (CHAR8 *)Options[HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL]->Data, Cache6->UriParser, &IpAddr ); @@ -304,7 +302,6 @@ HttpBootParseDhcp6Packet ( OfferType = HttpOfferTypeProxyNameUri; } } - } else { if (!IsProxyOffer) { OfferType = IsDnsOffer ? HttpOfferTypeDhcpDns : HttpOfferTypeDhcpOnly; @@ -329,8 +326,8 @@ HttpBootParseDhcp6Packet ( **/ EFI_STATUS HttpBootCacheDhcp6Packet ( - IN EFI_DHCP6_PACKET *Dst, - IN EFI_DHCP6_PACKET *Src + IN EFI_DHCP6_PACKET *Dst, + IN EFI_DHCP6_PACKET *Src ) { if (Dst->Size < Src->Length) { @@ -359,10 +356,10 @@ HttpBootCacheDhcp6Offer ( IN EFI_DHCP6_PACKET *RcvdOffer ) { - HTTP_BOOT_DHCP6_PACKET_CACHE *Cache6; - EFI_DHCP6_PACKET *Offer; - HTTP_BOOT_OFFER_TYPE OfferType; - EFI_STATUS Status; + HTTP_BOOT_DHCP6_PACKET_CACHE *Cache6; + EFI_DHCP6_PACKET *Offer; + HTTP_BOOT_OFFER_TYPE OfferType; + EFI_STATUS Status; Cache6 = &Private->OfferBuffer[Private->OfferNum].Dhcp6; Offer = &Cache6->Packet.Offer; @@ -370,7 +367,7 @@ HttpBootCacheDhcp6Offer ( // // Cache the content of DHCPv6 packet firstly. // - Status = HttpBootCacheDhcp6Packet(Offer, RcvdOffer); + Status = HttpBootCacheDhcp6Packet (Offer, RcvdOffer); if (EFI_ERROR (Status)) { return Status; } @@ -417,86 +414,91 @@ HttpBootCacheDhcp6Offer ( EFI_STATUS EFIAPI HttpBootDhcp6CallBack ( - IN EFI_DHCP6_PROTOCOL *This, - IN VOID *Context, - IN EFI_DHCP6_STATE CurrentState, - IN EFI_DHCP6_EVENT Dhcp6Event, - IN EFI_DHCP6_PACKET *Packet, - OUT EFI_DHCP6_PACKET **NewPacket OPTIONAL + IN EFI_DHCP6_PROTOCOL *This, + IN VOID *Context, + IN EFI_DHCP6_STATE CurrentState, + IN EFI_DHCP6_EVENT Dhcp6Event, + IN EFI_DHCP6_PACKET *Packet, + OUT EFI_DHCP6_PACKET **NewPacket OPTIONAL ) { - HTTP_BOOT_PRIVATE_DATA *Private; - EFI_DHCP6_PACKET *SelectAd; - EFI_STATUS Status; - BOOLEAN Received; + HTTP_BOOT_PRIVATE_DATA *Private; + EFI_DHCP6_PACKET *SelectAd; + EFI_STATUS Status; + BOOLEAN Received; if ((Dhcp6Event != Dhcp6SendSolicit) && - (Dhcp6Event != Dhcp6RcvdAdvertise) && - (Dhcp6Event != Dhcp6SendRequest) && - (Dhcp6Event != Dhcp6RcvdReply) && - (Dhcp6Event != Dhcp6SelectAdvertise)) { + (Dhcp6Event != Dhcp6RcvdAdvertise) && + (Dhcp6Event != Dhcp6SendRequest) && + (Dhcp6Event != Dhcp6RcvdReply) && + (Dhcp6Event != Dhcp6SelectAdvertise)) + { return EFI_SUCCESS; } ASSERT (Packet != NULL); - Private = (HTTP_BOOT_PRIVATE_DATA *) Context; - Status = EFI_SUCCESS; - if (Private->HttpBootCallback != NULL && Dhcp6Event != Dhcp6SelectAdvertise) { - Received = (BOOLEAN) (Dhcp6Event == Dhcp6RcvdAdvertise || Dhcp6Event == Dhcp6RcvdReply); - Status = Private->HttpBootCallback->Callback ( - Private->HttpBootCallback, - HttpBootDhcp6, - Received, - Packet->Length, - &Packet->Dhcp6 - ); + Private = (HTTP_BOOT_PRIVATE_DATA *)Context; + Status = EFI_SUCCESS; + if ((Private->HttpBootCallback != NULL) && (Dhcp6Event != Dhcp6SelectAdvertise)) { + Received = (BOOLEAN)(Dhcp6Event == Dhcp6RcvdAdvertise || Dhcp6Event == Dhcp6RcvdReply); + Status = Private->HttpBootCallback->Callback ( + Private->HttpBootCallback, + HttpBootDhcp6, + Received, + Packet->Length, + &Packet->Dhcp6 + ); if (EFI_ERROR (Status)) { return EFI_ABORTED; } } + switch (Dhcp6Event) { + case Dhcp6RcvdAdvertise: + Status = EFI_NOT_READY; + if (Packet->Length > HTTP_BOOT_DHCP6_PACKET_MAX_SIZE) { + // + // Ignore the incoming packets which exceed the maximum length. + // + break; + } + + if (Private->OfferNum < HTTP_BOOT_OFFER_MAX_NUM) { + // + // Cache the dhcp offers to OfferBuffer[] for select later, and record + // the OfferIndex and OfferCount. + // If error happens, just ignore this packet and continue to wait more offer. + // + HttpBootCacheDhcp6Offer (Private, Packet); + } - case Dhcp6RcvdAdvertise: - Status = EFI_NOT_READY; - if (Packet->Length > HTTP_BOOT_DHCP6_PACKET_MAX_SIZE) { - // - // Ignore the incoming packets which exceed the maximum length. - // break; - } - if (Private->OfferNum < HTTP_BOOT_OFFER_MAX_NUM) { + + case Dhcp6SelectAdvertise: // - // Cache the dhcp offers to OfferBuffer[] for select later, and record - // the OfferIndex and OfferCount. - // If error happens, just ignore this packet and continue to wait more offer. + // Select offer by the default policy or by order, and record the SelectIndex + // and SelectProxyType. // - HttpBootCacheDhcp6Offer (Private, Packet); - } - break; - - case Dhcp6SelectAdvertise: - // - // Select offer by the default policy or by order, and record the SelectIndex - // and SelectProxyType. - // - HttpBootSelectDhcpOffer (Private); + HttpBootSelectDhcpOffer (Private); - if (Private->SelectIndex == 0) { - Status = EFI_ABORTED; - } else { - ASSERT (NewPacket != NULL); - SelectAd = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp6.Packet.Offer; - *NewPacket = AllocateZeroPool (SelectAd->Size); - if (*NewPacket == NULL) { - return EFI_OUT_OF_RESOURCES; + if (Private->SelectIndex == 0) { + Status = EFI_ABORTED; + } else { + ASSERT (NewPacket != NULL); + SelectAd = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp6.Packet.Offer; + *NewPacket = AllocateZeroPool (SelectAd->Size); + if (*NewPacket == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + CopyMem (*NewPacket, SelectAd, SelectAd->Size); } - CopyMem (*NewPacket, SelectAd, SelectAd->Size); - } - break; - default: - break; + break; + + default: + break; } return Status; @@ -519,18 +521,18 @@ HttpBootDhcp6CallBack ( **/ EFI_STATUS HttpBootCheckRouteTable ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN UINTN TimeOutInSecond, - OUT EFI_IPv6_ADDRESS *GatewayAddr + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN UINTN TimeOutInSecond, + OUT EFI_IPv6_ADDRESS *GatewayAddr ) { - EFI_STATUS Status; - EFI_IP6_PROTOCOL *Ip6; - EFI_IP6_MODE_DATA Ip6ModeData; - UINTN Index; - EFI_EVENT TimeOutEvt; - UINTN RetryCount; - BOOLEAN GatewayIsFound; + EFI_STATUS Status; + EFI_IP6_PROTOCOL *Ip6; + EFI_IP6_MODE_DATA Ip6ModeData; + UINTN Index; + EFI_EVENT TimeOutEvt; + UINTN RetryCount; + BOOLEAN GatewayIsFound; ASSERT (GatewayAddr != NULL); ASSERT (Private != NULL); @@ -562,23 +564,28 @@ HttpBootCheckRouteTable ( if (Ip6ModeData.AddressList != NULL) { FreePool (Ip6ModeData.AddressList); } + if (Ip6ModeData.GroupTable != NULL) { FreePool (Ip6ModeData.GroupTable); } + if (Ip6ModeData.RouteTable != NULL) { FreePool (Ip6ModeData.RouteTable); } + if (Ip6ModeData.NeighborCache != NULL) { FreePool (Ip6ModeData.NeighborCache); } + if (Ip6ModeData.PrefixTable != NULL) { FreePool (Ip6ModeData.PrefixTable); } + if (Ip6ModeData.IcmpTypeList != NULL) { FreePool (Ip6ModeData.IcmpTypeList); } - if (GatewayIsFound || RetryCount == TimeOutInSecond) { + if (GatewayIsFound || (RetryCount == TimeOutInSecond)) { break; } @@ -604,6 +611,7 @@ HttpBootCheckRouteTable ( if (EFI_ERROR (Status)) { goto ON_EXIT; } + while (EFI_ERROR (gBS->CheckEvent (TimeOutEvt))) { Ip6->Poll (Ip6); } @@ -634,16 +642,16 @@ ON_EXIT: **/ EFI_STATUS HttpBootSetIp6Policy ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_IP6_CONFIG_POLICY Policy; - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; - EFI_STATUS Status; - UINTN DataSize; + EFI_IP6_CONFIG_POLICY Policy; + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + EFI_STATUS Status; + UINTN DataSize; - Ip6Config = Private->Ip6Config; - DataSize = sizeof (EFI_IP6_CONFIG_POLICY); + Ip6Config = Private->Ip6Config; + DataSize = sizeof (EFI_IP6_CONFIG_POLICY); // // Get and store the current policy of IP6 driver. @@ -663,13 +671,14 @@ HttpBootSetIp6Policy ( Status = Ip6Config->SetData ( Ip6Config, Ip6ConfigDataTypePolicy, - sizeof(EFI_IP6_CONFIG_POLICY), + sizeof (EFI_IP6_CONFIG_POLICY), &Policy ); if (EFI_ERROR (Status)) { return Status; } } + return EFI_SUCCESS; } @@ -687,12 +696,12 @@ HttpBootSetIp6Policy ( **/ EFI_STATUS HttpBootSetIp6Dns ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN UINTN DataLength, - IN VOID *DnsServerData + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN UINTN DataLength, + IN VOID *DnsServerData ) { - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; ASSERT (Private->UsingIpv6); @@ -717,11 +726,11 @@ HttpBootSetIp6Dns ( **/ EFI_STATUS HttpBootSetIp6Gateway ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; - EFI_STATUS Status; + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + EFI_STATUS Status; ASSERT (Private->UsingIpv6); Ip6Config = Private->Ip6Config; @@ -736,7 +745,7 @@ HttpBootSetIp6Gateway ( sizeof (EFI_IPv6_ADDRESS), &Private->GatewayIp.v6 ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } } @@ -755,21 +764,21 @@ HttpBootSetIp6Gateway ( **/ EFI_STATUS HttpBootSetIp6Address ( - IN HTTP_BOOT_PRIVATE_DATA *Private -) + IN HTTP_BOOT_PRIVATE_DATA *Private + ) { - EFI_STATUS Status; - EFI_IP6_PROTOCOL *Ip6; - EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; - EFI_IP6_CONFIG_POLICY Policy; - EFI_IP6_CONFIG_MANUAL_ADDRESS CfgAddr; - EFI_IPv6_ADDRESS *Ip6Addr; - EFI_IPv6_ADDRESS GatewayAddr; - EFI_IP6_CONFIG_DATA Ip6CfgData; - EFI_EVENT MappedEvt; - UINTN DataSize; - BOOLEAN IsAddressOk; - UINTN Index; + EFI_STATUS Status; + EFI_IP6_PROTOCOL *Ip6; + EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; + EFI_IP6_CONFIG_POLICY Policy; + EFI_IP6_CONFIG_MANUAL_ADDRESS CfgAddr; + EFI_IPv6_ADDRESS *Ip6Addr; + EFI_IPv6_ADDRESS GatewayAddr; + EFI_IP6_CONFIG_DATA Ip6CfgData; + EFI_EVENT MappedEvt; + UINTN DataSize; + BOOLEAN IsAddressOk; + UINTN Index; ASSERT (Private->UsingIpv6); @@ -783,11 +792,11 @@ HttpBootSetIp6Address ( CopyMem (&CfgAddr, &Private->StationIp.v6, sizeof (EFI_IPv6_ADDRESS)); ZeroMem (&Ip6CfgData, sizeof (EFI_IP6_CONFIG_DATA)); - Ip6CfgData.AcceptIcmpErrors = TRUE; - Ip6CfgData.DefaultProtocol = IP6_ICMP; - Ip6CfgData.HopLimit = HTTP_BOOT_DEFAULT_HOPLIMIT; - Ip6CfgData.ReceiveTimeout = HTTP_BOOT_DEFAULT_LIFETIME; - Ip6CfgData.TransmitTimeout = HTTP_BOOT_DEFAULT_LIFETIME; + Ip6CfgData.AcceptIcmpErrors = TRUE; + Ip6CfgData.DefaultProtocol = IP6_ICMP; + Ip6CfgData.HopLimit = HTTP_BOOT_DEFAULT_HOPLIMIT; + Ip6CfgData.ReceiveTimeout = HTTP_BOOT_DEFAULT_LIFETIME; + Ip6CfgData.TransmitTimeout = HTTP_BOOT_DEFAULT_LIFETIME; Status = Ip6->Configure (Ip6, &Ip6CfgData); if (EFI_ERROR (Status)) { @@ -811,7 +820,7 @@ HttpBootSetIp6Address ( Status = Ip6Cfg->SetData ( Ip6Cfg, Ip6ConfigDataTypePolicy, - sizeof(EFI_IP6_CONFIG_POLICY), + sizeof (EFI_IP6_CONFIG_POLICY), &Policy ); if (EFI_ERROR (Status)) { @@ -840,7 +849,7 @@ HttpBootSetIp6Address ( Ip6ConfigDataTypeManualAddress, MappedEvt ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -850,7 +859,7 @@ HttpBootSetIp6Address ( sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS), &CfgAddr ); - if (EFI_ERROR (Status) && Status != EFI_NOT_READY) { + if (EFI_ERROR (Status) && (Status != EFI_NOT_READY)) { goto ON_EXIT; } else if (Status == EFI_NOT_READY) { // @@ -859,17 +868,18 @@ HttpBootSetIp6Address ( while (!IsAddressOk) { Ip6->Poll (Ip6); } + // // Check whether the Ip6 Address setting is successed. // DataSize = 0; - Status = Ip6Cfg->GetData ( - Ip6Cfg, - Ip6ConfigDataTypeManualAddress, - &DataSize, - NULL - ); - if (Status != EFI_BUFFER_TOO_SMALL || DataSize == 0) { + Status = Ip6Cfg->GetData ( + Ip6Cfg, + Ip6ConfigDataTypeManualAddress, + &DataSize, + NULL + ); + if ((Status != EFI_BUFFER_TOO_SMALL) || (DataSize == 0)) { Status = EFI_DEVICE_ERROR; goto ON_EXIT; } @@ -878,22 +888,24 @@ HttpBootSetIp6Address ( if (Ip6Addr == NULL) { return EFI_OUT_OF_RESOURCES; } + Status = Ip6Cfg->GetData ( Ip6Cfg, Ip6ConfigDataTypeManualAddress, &DataSize, - (VOID *) Ip6Addr + (VOID *)Ip6Addr ); if (EFI_ERROR (Status)) { Status = EFI_DEVICE_ERROR; goto ON_EXIT; } - for (Index = 0; Index < DataSize / sizeof (EFI_IPv6_ADDRESS); Index ++) { + for (Index = 0; Index < DataSize / sizeof (EFI_IPv6_ADDRESS); Index++) { if (CompareMem (Ip6Addr + Index, &CfgAddr, sizeof (EFI_IPv6_ADDRESS)) == 0) { break; } } + if (Index == DataSize / sizeof (EFI_IPv6_ADDRESS)) { Status = EFI_ABORTED; goto ON_EXIT; @@ -928,17 +940,17 @@ ON_EXIT: **/ EFI_STATUS HttpBootDhcp6Sarr ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_DHCP6_PROTOCOL *Dhcp6; - EFI_DHCP6_CONFIG_DATA Config; - EFI_DHCP6_MODE_DATA Mode; - EFI_DHCP6_RETRANSMISSION *Retransmit; - EFI_DHCP6_PACKET_OPTION *OptList[HTTP_BOOT_DHCP6_OPTION_MAX_NUM]; - UINT32 OptCount; - UINT8 Buffer[HTTP_BOOT_DHCP6_OPTION_MAX_SIZE]; - EFI_STATUS Status; + EFI_DHCP6_PROTOCOL *Dhcp6; + EFI_DHCP6_CONFIG_DATA Config; + EFI_DHCP6_MODE_DATA Mode; + EFI_DHCP6_RETRANSMISSION *Retransmit; + EFI_DHCP6_PACKET_OPTION *OptList[HTTP_BOOT_DHCP6_OPTION_MAX_NUM]; + UINT32 OptCount; + UINT8 Buffer[HTTP_BOOT_DHCP6_OPTION_MAX_SIZE]; + EFI_STATUS Status; Dhcp6 = Private->Dhcp6; ASSERT (Dhcp6 != NULL); @@ -947,7 +959,7 @@ HttpBootDhcp6Sarr ( // Build options list for the request packet. // OptCount = HttpBootBuildDhcp6Options (Private, OptList, Buffer); - ASSERT (OptCount >0); + ASSERT (OptCount > 0); Retransmit = AllocateZeroPool (sizeof (EFI_DHCP6_RETRANSMISSION)); if (Retransmit == NULL) { @@ -980,11 +992,12 @@ HttpBootDhcp6Sarr ( if (EFI_ERROR (Status)) { goto ON_EXIT; } + // // Initialize the record fields for DHCPv6 offer in private data. // - Private->OfferNum = 0; - Private->SelectIndex = 0; + Private->OfferNum = 0; + Private->SelectIndex = 0; ZeroMem (Private->OfferCount, sizeof (Private->OfferCount)); ZeroMem (Private->OfferIndex, sizeof (Private->OfferIndex)); @@ -1021,12 +1034,11 @@ ON_EXIT: if (Mode.ClientId != NULL) { FreePool (Mode.ClientId); } + if (Mode.Ia != NULL) { FreePool (Mode.Ia); } } return Status; - } - diff --git a/NetworkPkg/HttpBootDxe/HttpBootDhcp6.h b/NetworkPkg/HttpBootDxe/HttpBootDhcp6.h index e1a6520319..4da32aadaa 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootDhcp6.h +++ b/NetworkPkg/HttpBootDxe/HttpBootDhcp6.h @@ -6,82 +6,81 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #ifndef __EFI_HTTP_BOOT_DHCP6_H__ #define __EFI_HTTP_BOOT_DHCP6_H__ -#define HTTP_BOOT_OFFER_MAX_NUM 16 -#define HTTP_BOOT_DHCP6_OPTION_MAX_NUM 16 -#define HTTP_BOOT_DHCP6_OPTION_MAX_SIZE 312 -#define HTTP_BOOT_DHCP6_PACKET_MAX_SIZE 1472 -#define HTTP_BOOT_IP6_ROUTE_TABLE_TIMEOUT 10 -#define HTTP_BOOT_DEFAULT_HOPLIMIT 64 -#define HTTP_BOOT_DEFAULT_LIFETIME 50000 +#define HTTP_BOOT_OFFER_MAX_NUM 16 +#define HTTP_BOOT_DHCP6_OPTION_MAX_NUM 16 +#define HTTP_BOOT_DHCP6_OPTION_MAX_SIZE 312 +#define HTTP_BOOT_DHCP6_PACKET_MAX_SIZE 1472 +#define HTTP_BOOT_IP6_ROUTE_TABLE_TIMEOUT 10 +#define HTTP_BOOT_DEFAULT_HOPLIMIT 64 +#define HTTP_BOOT_DEFAULT_LIFETIME 50000 -#define HTTP_BOOT_DHCP6_ENTERPRISE_NUM 343 // TODO: IANA TBD: temporarily using Intel's -#define HTTP_BOOT_DHCP6_MAX_BOOT_FILE_SIZE 65535 // It's a limitation of bit length, 65535*512 bytes. +#define HTTP_BOOT_DHCP6_ENTERPRISE_NUM 343 // TODO: IANA TBD: temporarily using Intel's +#define HTTP_BOOT_DHCP6_MAX_BOOT_FILE_SIZE 65535 // It's a limitation of bit length, 65535*512 bytes. -#define HTTP_BOOT_DHCP6_IDX_IA_NA 0 -#define HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL 1 -#define HTTP_BOOT_DHCP6_IDX_BOOT_FILE_PARAM 2 -#define HTTP_BOOT_DHCP6_IDX_VENDOR_CLASS 3 -#define HTTP_BOOT_DHCP6_IDX_DNS_SERVER 4 -#define HTTP_BOOT_DHCP6_IDX_MAX 5 +#define HTTP_BOOT_DHCP6_IDX_IA_NA 0 +#define HTTP_BOOT_DHCP6_IDX_BOOT_FILE_URL 1 +#define HTTP_BOOT_DHCP6_IDX_BOOT_FILE_PARAM 2 +#define HTTP_BOOT_DHCP6_IDX_VENDOR_CLASS 3 +#define HTTP_BOOT_DHCP6_IDX_DNS_SERVER 4 +#define HTTP_BOOT_DHCP6_IDX_MAX 5 #pragma pack(1) typedef struct { - UINT16 OpCode[256]; + UINT16 OpCode[256]; } HTTP_BOOT_DHCP6_OPTION_ORO; typedef struct { - UINT8 Type; - UINT8 MajorVer; - UINT8 MinorVer; + UINT8 Type; + UINT8 MajorVer; + UINT8 MinorVer; } HTTP_BOOT_DHCP6_OPTION_UNDI; typedef struct { - UINT16 Type; + UINT16 Type; } HTTP_BOOT_DHCP6_OPTION_ARCH; typedef struct { - UINT8 ClassIdentifier[11]; - UINT8 ArchitecturePrefix[5]; - UINT8 ArchitectureType[5]; - UINT8 Lit3[1]; - UINT8 InterfaceName[4]; - UINT8 Lit4[1]; - UINT8 UndiMajor[3]; - UINT8 UndiMinor[3]; + UINT8 ClassIdentifier[11]; + UINT8 ArchitecturePrefix[5]; + UINT8 ArchitectureType[5]; + UINT8 Lit3[1]; + UINT8 InterfaceName[4]; + UINT8 Lit4[1]; + UINT8 UndiMajor[3]; + UINT8 UndiMinor[3]; } HTTP_BOOT_CLASS_ID; typedef struct { - UINT32 Vendor; - UINT16 ClassLen; - HTTP_BOOT_CLASS_ID ClassId; + UINT32 Vendor; + UINT16 ClassLen; + HTTP_BOOT_CLASS_ID ClassId; } HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS; #pragma pack() typedef union { - HTTP_BOOT_DHCP6_OPTION_ORO *Oro; - HTTP_BOOT_DHCP6_OPTION_UNDI *Undi; - HTTP_BOOT_DHCP6_OPTION_ARCH *Arch; - HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS *VendorClass; + HTTP_BOOT_DHCP6_OPTION_ORO *Oro; + HTTP_BOOT_DHCP6_OPTION_UNDI *Undi; + HTTP_BOOT_DHCP6_OPTION_ARCH *Arch; + HTTP_BOOT_DHCP6_OPTION_VENDOR_CLASS *VendorClass; } HTTP_BOOT_DHCP6_OPTION_ENTRY; #define HTTP_CACHED_DHCP6_PACKET_MAX_SIZE (OFFSET_OF (EFI_DHCP6_PACKET, Dhcp6) + HTTP_BOOT_DHCP6_PACKET_MAX_SIZE) typedef union { - EFI_DHCP6_PACKET Offer; - EFI_DHCP6_PACKET Ack; - UINT8 Buffer[HTTP_CACHED_DHCP6_PACKET_MAX_SIZE]; + EFI_DHCP6_PACKET Offer; + EFI_DHCP6_PACKET Ack; + UINT8 Buffer[HTTP_CACHED_DHCP6_PACKET_MAX_SIZE]; } HTTP_BOOT_DHCP6_PACKET; typedef struct { - HTTP_BOOT_DHCP6_PACKET Packet; - HTTP_BOOT_OFFER_TYPE OfferType; - EFI_DHCP6_PACKET_OPTION *OptList[HTTP_BOOT_DHCP6_IDX_MAX]; - VOID *UriParser; + HTTP_BOOT_DHCP6_PACKET Packet; + HTTP_BOOT_OFFER_TYPE OfferType; + EFI_DHCP6_PACKET_OPTION *OptList[HTTP_BOOT_DHCP6_IDX_MAX]; + VOID *UriParser; } HTTP_BOOT_DHCP6_PACKET_CACHE; #define GET_NEXT_DHCP6_OPTION(Opt) \ @@ -102,7 +101,7 @@ typedef struct { **/ EFI_STATUS HttpBootDhcp6Sarr ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); /** @@ -116,7 +115,7 @@ HttpBootDhcp6Sarr ( **/ EFI_STATUS HttpBootSetIp6Policy ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); /** @@ -133,9 +132,9 @@ HttpBootSetIp6Policy ( **/ EFI_STATUS HttpBootSetIp6Dns ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN UINTN DataLength, - IN VOID *DnsServerData + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN UINTN DataLength, + IN VOID *DnsServerData ); /** @@ -149,7 +148,7 @@ HttpBootSetIp6Dns ( **/ EFI_STATUS HttpBootSetIp6Gateway ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); /** @@ -163,7 +162,7 @@ HttpBootSetIp6Gateway ( **/ EFI_STATUS HttpBootSetIp6Address ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); #endif diff --git a/NetworkPkg/HttpBootDxe/HttpBootDxe.c b/NetworkPkg/HttpBootDxe/HttpBootDxe.c index 5d9c24f4a2..168d4b7c10 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootDxe.c +++ b/NetworkPkg/HttpBootDxe/HttpBootDxe.c @@ -11,7 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent /// /// Driver Binding Protocol instance /// -EFI_DRIVER_BINDING_PROTOCOL gHttpBootIp4DxeDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gHttpBootIp4DxeDriverBinding = { HttpBootIp4DxeDriverBindingSupported, HttpBootIp4DxeDriverBindingStart, HttpBootIp4DxeDriverBindingStop, @@ -20,7 +20,7 @@ EFI_DRIVER_BINDING_PROTOCOL gHttpBootIp4DxeDriverBinding = { NULL }; -EFI_DRIVER_BINDING_PROTOCOL gHttpBootIp6DxeDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gHttpBootIp6DxeDriverBinding = { HttpBootIp6DxeDriverBindingSupported, HttpBootIp6DxeDriverBindingStart, HttpBootIp6DxeDriverBindingStop, @@ -29,8 +29,6 @@ EFI_DRIVER_BINDING_PROTOCOL gHttpBootIp6DxeDriverBinding = { NULL }; - - /** Check whether UNDI protocol supports IPv6. @@ -43,19 +41,19 @@ EFI_DRIVER_BINDING_PROTOCOL gHttpBootIp6DxeDriverBinding = { **/ EFI_STATUS HttpBootCheckIpv6Support ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - OUT BOOLEAN *Ipv6Support + IN HTTP_BOOT_PRIVATE_DATA *Private, + OUT BOOLEAN *Ipv6Support ) { - EFI_HANDLE Handle; - EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; - EFI_STATUS Status; - EFI_GUID *InfoTypesBuffer; - UINTN InfoTypeBufferCount; - UINTN TypeIndex; - BOOLEAN Supported; - VOID *InfoBlock; - UINTN InfoBlockSize; + EFI_HANDLE Handle; + EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; + EFI_STATUS Status; + EFI_GUID *InfoTypesBuffer; + UINTN InfoTypeBufferCount; + UINTN TypeIndex; + BOOLEAN Supported; + VOID *InfoBlock; + UINTN InfoBlockSize; ASSERT (Private != NULL && Ipv6Support != NULL); @@ -79,16 +77,16 @@ HttpBootCheckIpv6Support ( Status = gBS->HandleProtocol ( Handle, &gEfiAdapterInformationProtocolGuid, - (VOID *) &Aip + (VOID *)&Aip ); - if (EFI_ERROR (Status) || Aip == NULL) { + if (EFI_ERROR (Status) || (Aip == NULL)) { return EFI_NOT_FOUND; } InfoTypesBuffer = NULL; InfoTypeBufferCount = 0; - Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); - if (EFI_ERROR (Status) || InfoTypesBuffer == NULL) { + Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); + if (EFI_ERROR (Status) || (InfoTypesBuffer == NULL)) { FreePool (InfoTypesBuffer); return EFI_NOT_FOUND; } @@ -111,13 +109,13 @@ HttpBootCheckIpv6Support ( // InfoBlock = NULL; InfoBlockSize = 0; - Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); - if (EFI_ERROR (Status) || InfoBlock == NULL) { + Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); + if (EFI_ERROR (Status) || (InfoBlock == NULL)) { FreePool (InfoBlock); return EFI_NOT_FOUND; } - *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *) InfoBlock)->Ipv6Support; + *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *)InfoBlock)->Ipv6Support; FreePool (InfoBlock); return EFI_SUCCESS; @@ -155,13 +153,12 @@ HttpBootDestroyIp4Children ( ); } - if (Private->Ip6Nic == NULL && Private->HttpCreated) { + if ((Private->Ip6Nic == NULL) && Private->HttpCreated) { HttpIoDestroyIo (&Private->HttpIo); Private->HttpCreated = FALSE; } if (Private->Ip4Nic != NULL) { - gBS->CloseProtocol ( Private->Controller, &gEfiCallerIdGuid, @@ -180,7 +177,6 @@ HttpBootDestroyIp4Children ( FreePool (Private->Ip4Nic); Private->Ip4Nic = NULL; } - } /** @@ -231,13 +227,12 @@ HttpBootDestroyIp6Children ( ); } - if (Private->Ip4Nic == NULL && Private->HttpCreated) { - HttpIoDestroyIo(&Private->HttpIo); + if ((Private->Ip4Nic == NULL) && Private->HttpCreated) { + HttpIoDestroyIo (&Private->HttpIo); Private->HttpCreated = FALSE; } if (Private->Ip6Nic != NULL) { - gBS->CloseProtocol ( Private->Controller, &gEfiCallerIdGuid, @@ -308,7 +303,7 @@ HttpBootIp4DxeDriverBindingSupported ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; // // Try to open the DHCP4, HTTP4 and Device Path protocol. @@ -349,7 +344,6 @@ HttpBootIp4DxeDriverBindingSupported ( return Status; } - /** Starts a device controller or a bus controller. @@ -393,26 +387,26 @@ HttpBootIp4DxeDriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; - HTTP_BOOT_PRIVATE_DATA *Private; - EFI_DEV_PATH *Node; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - UINT32 *Id; - BOOLEAN FirstStart; + EFI_STATUS Status; + HTTP_BOOT_PRIVATE_DATA *Private; + EFI_DEV_PATH *Node; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + UINT32 *Id; + BOOLEAN FirstStart; FirstStart = FALSE; Status = gBS->OpenProtocol ( ControllerHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL ); if (!EFI_ERROR (Status)) { - Private = HTTP_BOOT_PRIVATE_DATA_FROM_ID(Id); + Private = HTTP_BOOT_PRIVATE_DATA_FROM_ID (Id); } else { FirstStart = TRUE; @@ -423,7 +417,8 @@ HttpBootIp4DxeDriverBindingStart ( if (Private == NULL) { return EFI_OUT_OF_RESOURCES; } - Private->Signature = HTTP_BOOT_PRIVATE_DATA_SIGNATURE; + + Private->Signature = HTTP_BOOT_PRIVATE_DATA_SIGNATURE; Private->Controller = ControllerHandle; InitializeListHead (&Private->CacheList); // @@ -432,7 +427,7 @@ HttpBootIp4DxeDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiNetworkInterfaceIdentifierProtocolGuid_31, - (VOID **) &Private->Nii, + (VOID **)&Private->Nii, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -447,7 +442,7 @@ HttpBootIp4DxeDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiDevicePathProtocolGuid, - (VOID **) &Private->ParentDevicePath, + (VOID **)&Private->ParentDevicePath, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -477,7 +472,6 @@ HttpBootIp4DxeDriverBindingStart ( if (EFI_ERROR (Status)) { goto ON_ERROR; } - } if (Private->Ip4Nic != NULL) { @@ -492,6 +486,7 @@ HttpBootIp4DxeDriverBindingStart ( Status = EFI_OUT_OF_RESOURCES; goto ON_ERROR; } + Private->Ip4Nic->Private = Private; Private->Ip4Nic->ImageHandle = This->DriverBindingHandle; Private->Ip4Nic->Signature = HTTP_BOOT_VIRTUAL_NIC_SIGNATURE; @@ -512,7 +507,7 @@ HttpBootIp4DxeDriverBindingStart ( Status = gBS->OpenProtocol ( Private->Dhcp4Child, &gEfiDhcp4ProtocolGuid, - (VOID **) &Private->Dhcp4, + (VOID **)&Private->Dhcp4, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -527,7 +522,7 @@ HttpBootIp4DxeDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiIp4Config2ProtocolGuid, - (VOID **) &Private->Ip4Config2, + (VOID **)&Private->Ip4Config2, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -544,11 +539,12 @@ HttpBootIp4DxeDriverBindingStart ( Status = EFI_OUT_OF_RESOURCES; goto ON_ERROR; } - Node->Ipv4.Header.Type = MESSAGING_DEVICE_PATH; + + Node->Ipv4.Header.Type = MESSAGING_DEVICE_PATH; Node->Ipv4.Header.SubType = MSG_IPv4_DP; SetDevicePathNodeLength (Node, sizeof (IPv4_DEVICE_PATH)); Node->Ipv4.StaticIpAddress = FALSE; - DevicePath = AppendDevicePathNode (Private->ParentDevicePath, (EFI_DEVICE_PATH_PROTOCOL*) Node); + DevicePath = AppendDevicePathNode (Private->ParentDevicePath, (EFI_DEVICE_PATH_PROTOCOL *)Node); FreePool (Node); if (DevicePath == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -563,10 +559,11 @@ HttpBootIp4DxeDriverBindingStart ( Status = EFI_OUT_OF_RESOURCES; goto ON_ERROR; } - Node->DevPath.Type = MESSAGING_DEVICE_PATH; + + Node->DevPath.Type = MESSAGING_DEVICE_PATH; Node->DevPath.SubType = MSG_URI_DP; SetDevicePathNodeLength (Node, sizeof (EFI_DEVICE_PATH_PROTOCOL)); - Private->Ip4Nic->DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL*) Node); + Private->Ip4Nic->DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)Node); FreePool (Node); FreePool (DevicePath); if (Private->Ip4Nic->DevicePath == NULL) { @@ -597,7 +594,7 @@ HttpBootIp4DxeDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, This->DriverBindingHandle, Private->Ip4Nic->Controller, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -629,7 +626,6 @@ ON_ERROR: return Status; } - /** Stops a device controller or a bus controller. @@ -665,11 +661,11 @@ HttpBootIp4DxeDriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ) { - EFI_STATUS Status; - EFI_LOAD_FILE_PROTOCOL *LoadFile; - HTTP_BOOT_PRIVATE_DATA *Private; - EFI_HANDLE NicHandle; - UINT32 *Id; + EFI_STATUS Status; + EFI_LOAD_FILE_PROTOCOL *LoadFile; + HTTP_BOOT_PRIVATE_DATA *Private; + EFI_HANDLE NicHandle; + UINT32 *Id; // // Try to get the Load File Protocol from the controller handle. @@ -677,7 +673,7 @@ HttpBootIp4DxeDriverBindingStop ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiLoadFileProtocolGuid, - (VOID **) &LoadFile, + (VOID **)&LoadFile, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -697,7 +693,7 @@ HttpBootIp4DxeDriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -705,9 +701,10 @@ HttpBootIp4DxeDriverBindingStop ( if (EFI_ERROR (Status)) { return Status; } + Private = HTTP_BOOT_PRIVATE_DATA_FROM_ID (Id); } else { - Private = HTTP_BOOT_PRIVATE_DATA_FROM_LOADFILE (LoadFile); + Private = HTTP_BOOT_PRIVATE_DATA_FROM_LOADFILE (LoadFile); NicHandle = Private->Controller; } @@ -715,7 +712,7 @@ HttpBootIp4DxeDriverBindingStop ( // Disable the HTTP boot function. // Status = HttpBootStop (Private); - if (Status != EFI_SUCCESS && Status != EFI_NOT_STARTED) { + if ((Status != EFI_SUCCESS) && (Status != EFI_NOT_STARTED)) { return Status; } @@ -724,7 +721,7 @@ HttpBootIp4DxeDriverBindingStop ( // HttpBootDestroyIp4Children (This, Private); - if (Private->Ip4Nic == NULL && Private->Ip6Nic == NULL) { + if ((Private->Ip4Nic == NULL) && (Private->Ip6Nic == NULL)) { // // Release the cached data. // @@ -741,7 +738,6 @@ HttpBootIp4DxeDriverBindingStop ( &Private->Id ); FreePool (Private); - } return EFI_SUCCESS; @@ -797,7 +793,7 @@ HttpBootIp6DxeDriverBindingSupported ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; // // Try to open the DHCP6, HTTP and Device Path protocol. @@ -836,7 +832,6 @@ HttpBootIp6DxeDriverBindingSupported ( ); return Status; - } /** @@ -882,27 +877,27 @@ HttpBootIp6DxeDriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; - HTTP_BOOT_PRIVATE_DATA *Private; - EFI_DEV_PATH *Node; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - UINT32 *Id; - BOOLEAN Ipv6Available; - BOOLEAN FirstStart; + EFI_STATUS Status; + HTTP_BOOT_PRIVATE_DATA *Private; + EFI_DEV_PATH *Node; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + UINT32 *Id; + BOOLEAN Ipv6Available; + BOOLEAN FirstStart; FirstStart = FALSE; Status = gBS->OpenProtocol ( ControllerHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL ); if (!EFI_ERROR (Status)) { - Private = HTTP_BOOT_PRIVATE_DATA_FROM_ID(Id); + Private = HTTP_BOOT_PRIVATE_DATA_FROM_ID (Id); } else { FirstStart = TRUE; @@ -913,7 +908,8 @@ HttpBootIp6DxeDriverBindingStart ( if (Private == NULL) { return EFI_OUT_OF_RESOURCES; } - Private->Signature = HTTP_BOOT_PRIVATE_DATA_SIGNATURE; + + Private->Signature = HTTP_BOOT_PRIVATE_DATA_SIGNATURE; Private->Controller = ControllerHandle; InitializeListHead (&Private->CacheList); // @@ -922,7 +918,7 @@ HttpBootIp6DxeDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiNetworkInterfaceIdentifierProtocolGuid_31, - (VOID **) &Private->Nii, + (VOID **)&Private->Nii, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -937,7 +933,7 @@ HttpBootIp6DxeDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiDevicePathProtocolGuid, - (VOID **) &Private->ParentDevicePath, + (VOID **)&Private->ParentDevicePath, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -967,7 +963,6 @@ HttpBootIp6DxeDriverBindingStart ( if (EFI_ERROR (Status)) { goto ON_ERROR; } - } // @@ -999,6 +994,7 @@ HttpBootIp6DxeDriverBindingStart ( Status = EFI_OUT_OF_RESOURCES; goto ON_ERROR; } + Private->Ip6Nic->Private = Private; Private->Ip6Nic->ImageHandle = This->DriverBindingHandle; Private->Ip6Nic->Signature = HTTP_BOOT_VIRTUAL_NIC_SIGNATURE; @@ -1018,7 +1014,7 @@ HttpBootIp6DxeDriverBindingStart ( Status = gBS->OpenProtocol ( Private->Dhcp6Child, &gEfiDhcp6ProtocolGuid, - (VOID **) &Private->Dhcp6, + (VOID **)&Private->Dhcp6, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -1031,11 +1027,11 @@ HttpBootIp6DxeDriverBindingStart ( // Create Ip6 child and open Ip6 protocol for background ICMP packets. // Status = NetLibCreateServiceChild ( - ControllerHandle, - This->DriverBindingHandle, - &gEfiIp6ServiceBindingProtocolGuid, - &Private->Ip6Child - ); + ControllerHandle, + This->DriverBindingHandle, + &gEfiIp6ServiceBindingProtocolGuid, + &Private->Ip6Child + ); if (EFI_ERROR (Status)) { goto ON_ERROR; } @@ -1043,7 +1039,7 @@ HttpBootIp6DxeDriverBindingStart ( Status = gBS->OpenProtocol ( Private->Ip6Child, &gEfiIp6ProtocolGuid, - (VOID **) &Private->Ip6, + (VOID **)&Private->Ip6, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -1058,7 +1054,7 @@ HttpBootIp6DxeDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiIp6ConfigProtocolGuid, - (VOID **) &Private->Ip6Config, + (VOID **)&Private->Ip6Config, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1075,12 +1071,13 @@ HttpBootIp6DxeDriverBindingStart ( Status = EFI_OUT_OF_RESOURCES; goto ON_ERROR; } - Node->Ipv6.Header.Type = MESSAGING_DEVICE_PATH; + + Node->Ipv6.Header.Type = MESSAGING_DEVICE_PATH; Node->Ipv6.Header.SubType = MSG_IPv6_DP; - Node->Ipv6.PrefixLength = IP6_PREFIX_LENGTH; + Node->Ipv6.PrefixLength = IP6_PREFIX_LENGTH; SetDevicePathNodeLength (Node, sizeof (IPv6_DEVICE_PATH)); - DevicePath = AppendDevicePathNode(Private->ParentDevicePath, (EFI_DEVICE_PATH*) Node); - FreePool(Node); + DevicePath = AppendDevicePathNode (Private->ParentDevicePath, (EFI_DEVICE_PATH *)Node); + FreePool (Node); if (DevicePath == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_ERROR; @@ -1094,10 +1091,11 @@ HttpBootIp6DxeDriverBindingStart ( Status = EFI_OUT_OF_RESOURCES; goto ON_ERROR; } - Node->DevPath.Type = MESSAGING_DEVICE_PATH; + + Node->DevPath.Type = MESSAGING_DEVICE_PATH; Node->DevPath.SubType = MSG_URI_DP; SetDevicePathNodeLength (Node, sizeof (EFI_DEVICE_PATH_PROTOCOL)); - Private->Ip6Nic->DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL*) Node); + Private->Ip6Nic->DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)Node); FreePool (Node); FreePool (DevicePath); if (Private->Ip6Nic->DevicePath == NULL) { @@ -1128,7 +1126,7 @@ HttpBootIp6DxeDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, This->DriverBindingHandle, Private->Ip6Nic->Controller, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -1149,7 +1147,7 @@ ON_ERROR: ); } - HttpBootDestroyIp6Children(This, Private); + HttpBootDestroyIp6Children (This, Private); HttpBootConfigFormUnload (Private); if (FirstStart) { @@ -1195,11 +1193,11 @@ HttpBootIp6DxeDriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ) { - EFI_STATUS Status; - EFI_LOAD_FILE_PROTOCOL *LoadFile; - HTTP_BOOT_PRIVATE_DATA *Private; - EFI_HANDLE NicHandle; - UINT32 *Id; + EFI_STATUS Status; + EFI_LOAD_FILE_PROTOCOL *LoadFile; + HTTP_BOOT_PRIVATE_DATA *Private; + EFI_HANDLE NicHandle; + UINT32 *Id; // // Try to get the Load File Protocol from the controller handle. @@ -1207,7 +1205,7 @@ HttpBootIp6DxeDriverBindingStop ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiLoadFileProtocolGuid, - (VOID **) &LoadFile, + (VOID **)&LoadFile, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1227,7 +1225,7 @@ HttpBootIp6DxeDriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1235,9 +1233,10 @@ HttpBootIp6DxeDriverBindingStop ( if (EFI_ERROR (Status)) { return Status; } + Private = HTTP_BOOT_PRIVATE_DATA_FROM_ID (Id); } else { - Private = HTTP_BOOT_PRIVATE_DATA_FROM_LOADFILE (LoadFile); + Private = HTTP_BOOT_PRIVATE_DATA_FROM_LOADFILE (LoadFile); NicHandle = Private->Controller; } @@ -1245,7 +1244,7 @@ HttpBootIp6DxeDriverBindingStop ( // Disable the HTTP boot function. // Status = HttpBootStop (Private); - if (Status != EFI_SUCCESS && Status != EFI_NOT_STARTED) { + if ((Status != EFI_SUCCESS) && (Status != EFI_NOT_STARTED)) { return Status; } @@ -1254,7 +1253,7 @@ HttpBootIp6DxeDriverBindingStop ( // HttpBootDestroyIp6Children (This, Private); - if (Private->Ip4Nic == NULL && Private->Ip6Nic == NULL) { + if ((Private->Ip4Nic == NULL) && (Private->Ip6Nic == NULL)) { // // Release the cached data. // @@ -1271,11 +1270,11 @@ HttpBootIp6DxeDriverBindingStop ( &Private->Id ); FreePool (Private); - } return EFI_SUCCESS; } + /** This is the declaration of an EFI image entry point. This entry point is the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including @@ -1295,7 +1294,7 @@ HttpBootDxeDriverEntryPoint ( IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; // // Install UEFI Driver Model protocol(s). @@ -1321,12 +1320,12 @@ HttpBootDxeDriverEntryPoint ( &gHttpBootDxeComponentName2 ); if (EFI_ERROR (Status)) { - EfiLibUninstallDriverBindingComponentName2( + EfiLibUninstallDriverBindingComponentName2 ( &gHttpBootIp4DxeDriverBinding, &gHttpBootDxeComponentName, &gHttpBootDxeComponentName2 ); } + return Status; } - diff --git a/NetworkPkg/HttpBootDxe/HttpBootDxe.h b/NetworkPkg/HttpBootDxe/HttpBootDxe.h index d692c3ad3c..5acbae9bfa 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootDxe.h +++ b/NetworkPkg/HttpBootDxe/HttpBootDxe.h @@ -75,22 +75,22 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // Standard Media Types defined in // http://www.iana.org/assignments/media-types // -#define HTTP_CONTENT_TYPE_APP_EFI "application/efi" -#define HTTP_CONTENT_TYPE_APP_IMG "application/vnd.efi-img" -#define HTTP_CONTENT_TYPE_APP_ISO "application/vnd.efi-iso" +#define HTTP_CONTENT_TYPE_APP_EFI "application/efi" +#define HTTP_CONTENT_TYPE_APP_IMG "application/vnd.efi-img" +#define HTTP_CONTENT_TYPE_APP_ISO "application/vnd.efi-iso" // // Protocol instances // -extern EFI_DRIVER_BINDING_PROTOCOL gHttpBootDxeDriverBinding; -extern EFI_COMPONENT_NAME2_PROTOCOL gHttpBootDxeComponentName2; -extern EFI_COMPONENT_NAME_PROTOCOL gHttpBootDxeComponentName; +extern EFI_DRIVER_BINDING_PROTOCOL gHttpBootDxeDriverBinding; +extern EFI_COMPONENT_NAME2_PROTOCOL gHttpBootDxeComponentName2; +extern EFI_COMPONENT_NAME_PROTOCOL gHttpBootDxeComponentName; // // Private data structure // -typedef struct _HTTP_BOOT_PRIVATE_DATA HTTP_BOOT_PRIVATE_DATA; -typedef struct _HTTP_BOOT_VIRTUAL_NIC HTTP_BOOT_VIRTUAL_NIC; +typedef struct _HTTP_BOOT_PRIVATE_DATA HTTP_BOOT_PRIVATE_DATA; +typedef struct _HTTP_BOOT_VIRTUAL_NIC HTTP_BOOT_VIRTUAL_NIC; typedef enum { ImageTypeEfi, @@ -111,17 +111,17 @@ typedef enum { #include "HttpBootConfig.h" typedef union { - HTTP_BOOT_DHCP4_PACKET_CACHE Dhcp4; - HTTP_BOOT_DHCP6_PACKET_CACHE Dhcp6; + HTTP_BOOT_DHCP4_PACKET_CACHE Dhcp4; + HTTP_BOOT_DHCP6_PACKET_CACHE Dhcp6; } HTTP_BOOT_DHCP_PACKET_CACHE; struct _HTTP_BOOT_VIRTUAL_NIC { - UINT32 Signature; - EFI_HANDLE Controller; - EFI_HANDLE ImageHandle; - EFI_LOAD_FILE_PROTOCOL LoadFile; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - HTTP_BOOT_PRIVATE_DATA *Private; + UINT32 Signature; + EFI_HANDLE Controller; + EFI_HANDLE ImageHandle; + EFI_LOAD_FILE_PROTOCOL LoadFile; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + HTTP_BOOT_PRIVATE_DATA *Private; }; #define HTTP_BOOT_PRIVATE_DATA_FROM_CALLBACK_INFO(Callback) \ @@ -141,87 +141,86 @@ struct _HTTP_BOOT_VIRTUAL_NIC { ) struct _HTTP_BOOT_PRIVATE_DATA { - UINT32 Signature; - EFI_HANDLE Controller; + UINT32 Signature; + EFI_HANDLE Controller; - HTTP_BOOT_VIRTUAL_NIC *Ip4Nic; - HTTP_BOOT_VIRTUAL_NIC *Ip6Nic; + HTTP_BOOT_VIRTUAL_NIC *Ip4Nic; + HTTP_BOOT_VIRTUAL_NIC *Ip6Nic; // // Consumed children // - EFI_HANDLE Ip6Child; - EFI_HANDLE Dhcp4Child; - EFI_HANDLE Dhcp6Child; - HTTP_IO HttpIo; - BOOLEAN HttpCreated; + EFI_HANDLE Ip6Child; + EFI_HANDLE Dhcp4Child; + EFI_HANDLE Dhcp6Child; + HTTP_IO HttpIo; + BOOLEAN HttpCreated; // // Consumed protocol // - EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii; - EFI_IP6_PROTOCOL *Ip6; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; - EFI_DHCP4_PROTOCOL *Dhcp4; - EFI_DHCP6_PROTOCOL *Dhcp6; - EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; - + EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii; + EFI_IP6_PROTOCOL *Ip6; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + EFI_DHCP4_PROTOCOL *Dhcp4; + EFI_DHCP6_PROTOCOL *Dhcp6; + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; // // Produced protocol // - EFI_LOAD_FILE_PROTOCOL LoadFile; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - UINT32 Id; - EFI_HTTP_BOOT_CALLBACK_PROTOCOL *HttpBootCallback; - EFI_HTTP_BOOT_CALLBACK_PROTOCOL LoadFileCallback; + EFI_LOAD_FILE_PROTOCOL LoadFile; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + UINT32 Id; + EFI_HTTP_BOOT_CALLBACK_PROTOCOL *HttpBootCallback; + EFI_HTTP_BOOT_CALLBACK_PROTOCOL LoadFileCallback; // // Data for the default HTTP Boot callback protocol // - UINT64 FileSize; - UINT64 ReceivedSize; - UINT32 Percentage; + UINT64 FileSize; + UINT64 ReceivedSize; + UINT32 Percentage; // // HII callback info block // - HTTP_BOOT_FORM_CALLBACK_INFO CallbackInfo; + HTTP_BOOT_FORM_CALLBACK_INFO CallbackInfo; // // Mode data // - BOOLEAN UsingIpv6; - BOOLEAN Started; - EFI_IP_ADDRESS StationIp; - EFI_IP_ADDRESS SubnetMask; - EFI_IP_ADDRESS GatewayIp; - EFI_IP_ADDRESS ServerIp; - UINT16 Port; - UINT32 DnsServerCount; - EFI_IP_ADDRESS *DnsServerIp; + BOOLEAN UsingIpv6; + BOOLEAN Started; + EFI_IP_ADDRESS StationIp; + EFI_IP_ADDRESS SubnetMask; + EFI_IP_ADDRESS GatewayIp; + EFI_IP_ADDRESS ServerIp; + UINT16 Port; + UINT32 DnsServerCount; + EFI_IP_ADDRESS *DnsServerIp; // // The URI string attempt to download through HTTP, may point to // the memory in cached DHCP offer, or to the memory in FilePathUri. // - CHAR8 *BootFileUri; - VOID *BootFileUriParser; - UINTN BootFileSize; - BOOLEAN NoGateway; - HTTP_BOOT_IMAGE_TYPE ImageType; + CHAR8 *BootFileUri; + VOID *BootFileUriParser; + UINTN BootFileSize; + BOOLEAN NoGateway; + HTTP_BOOT_IMAGE_TYPE ImageType; // // URI string extracted from the input FilePath parameter. // - CHAR8 *FilePathUri; - VOID *FilePathUriParser; + CHAR8 *FilePathUri; + VOID *FilePathUriParser; // // Cached HTTP data // - LIST_ENTRY CacheList; + LIST_ENTRY CacheList; // // Cached DHCP offer @@ -252,20 +251,20 @@ struct _HTTP_BOOT_PRIVATE_DATA { // (OfferIndex is 0-based.) // // - UINT32 SelectIndex; - UINT32 SelectProxyType; - HTTP_BOOT_DHCP_PACKET_CACHE OfferBuffer[HTTP_BOOT_OFFER_MAX_NUM]; - UINT32 OfferNum; - UINT32 OfferCount[HttpOfferTypeMax]; - UINT32 OfferIndex[HttpOfferTypeMax][HTTP_BOOT_OFFER_MAX_NUM]; + UINT32 SelectIndex; + UINT32 SelectProxyType; + HTTP_BOOT_DHCP_PACKET_CACHE OfferBuffer[HTTP_BOOT_OFFER_MAX_NUM]; + UINT32 OfferNum; + UINT32 OfferCount[HttpOfferTypeMax]; + UINT32 OfferIndex[HttpOfferTypeMax][HTTP_BOOT_OFFER_MAX_NUM]; }; -#define HTTP_BOOT_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('H', 'B', 'P', 'D') -#define HTTP_BOOT_VIRTUAL_NIC_SIGNATURE SIGNATURE_32 ('H', 'B', 'V', 'N') -#define HTTP_BOOT_PRIVATE_DATA_FROM_LOADFILE(a) CR (a, HTTP_BOOT_PRIVATE_DATA, LoadFile, HTTP_BOOT_PRIVATE_DATA_SIGNATURE) -#define HTTP_BOOT_PRIVATE_DATA_FROM_ID(a) CR (a, HTTP_BOOT_PRIVATE_DATA, Id, HTTP_BOOT_PRIVATE_DATA_SIGNATURE) -#define HTTP_BOOT_VIRTUAL_NIC_FROM_LOADFILE(a) CR (a, HTTP_BOOT_VIRTUAL_NIC, LoadFile, HTTP_BOOT_VIRTUAL_NIC_SIGNATURE) -extern EFI_LOAD_FILE_PROTOCOL gHttpBootDxeLoadFile; +#define HTTP_BOOT_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('H', 'B', 'P', 'D') +#define HTTP_BOOT_VIRTUAL_NIC_SIGNATURE SIGNATURE_32 ('H', 'B', 'V', 'N') +#define HTTP_BOOT_PRIVATE_DATA_FROM_LOADFILE(a) CR (a, HTTP_BOOT_PRIVATE_DATA, LoadFile, HTTP_BOOT_PRIVATE_DATA_SIGNATURE) +#define HTTP_BOOT_PRIVATE_DATA_FROM_ID(a) CR (a, HTTP_BOOT_PRIVATE_DATA, Id, HTTP_BOOT_PRIVATE_DATA_SIGNATURE) +#define HTTP_BOOT_VIRTUAL_NIC_FROM_LOADFILE(a) CR (a, HTTP_BOOT_VIRTUAL_NIC, LoadFile, HTTP_BOOT_VIRTUAL_NIC_SIGNATURE) +extern EFI_LOAD_FILE_PROTOCOL gHttpBootDxeLoadFile; /** Tests to see if this driver supports a given controller. If a child device is provided, @@ -522,4 +521,5 @@ HttpBootIp6DxeDriverBindingStop ( IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ); + #endif diff --git a/NetworkPkg/HttpBootDxe/HttpBootImpl.c b/NetworkPkg/HttpBootDxe/HttpBootImpl.c index 79cc5697cc..3da585a291 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootImpl.c +++ b/NetworkPkg/HttpBootDxe/HttpBootImpl.c @@ -20,11 +20,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS HttpBootInstallCallback ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_STATUS Status; - EFI_HANDLE ControllerHandle; + EFI_STATUS Status; + EFI_HANDLE ControllerHandle; if (!Private->UsingIpv6) { ControllerHandle = Private->Ip4Nic->Controller; @@ -38,10 +38,9 @@ HttpBootInstallCallback ( Status = gBS->HandleProtocol ( ControllerHandle, &gEfiHttpBootCallbackProtocolGuid, - (VOID **) &Private->HttpBootCallback + (VOID **)&Private->HttpBootCallback ); if (Status == EFI_UNSUPPORTED) { - CopyMem ( &Private->LoadFileCallback, &gHttpBootDxeHttpBootCallback, @@ -60,6 +59,7 @@ HttpBootInstallCallback ( if (EFI_ERROR (Status)) { return Status; } + Private->HttpBootCallback = &Private->LoadFileCallback; } @@ -74,15 +74,15 @@ HttpBootInstallCallback ( **/ VOID HttpBootUninstallCallback ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { if (Private->HttpBootCallback == &Private->LoadFileCallback) { gBS->UninstallProtocolInterface ( - Private->Controller, - &gEfiHttpBootCallbackProtocolGuid, - &Private->HttpBootCallback - ); + Private->Controller, + &gEfiHttpBootCallbackProtocolGuid, + &Private->HttpBootCallback + ); Private->HttpBootCallback = NULL; } } @@ -108,18 +108,18 @@ HttpBootUninstallCallback ( **/ EFI_STATUS HttpBootStart ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN BOOLEAN UsingIpv6, - IN EFI_DEVICE_PATH_PROTOCOL *FilePath + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN BOOLEAN UsingIpv6, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath ) { - UINTN Index; - EFI_STATUS Status; - CHAR8 *Uri; + UINTN Index; + EFI_STATUS Status; + CHAR8 *Uri; Uri = NULL; - if (Private == NULL || FilePath == NULL) { + if ((Private == NULL) || (FilePath == NULL)) { return EFI_INVALID_PARAMETER; } @@ -143,7 +143,8 @@ HttpBootStart ( // recorded before. // if ((UsingIpv6 != Private->UsingIpv6) || - ((Uri != NULL) && (AsciiStrCmp (Private->BootFileUri, Uri) != 0))) { + ((Uri != NULL) && (AsciiStrCmp (Private->BootFileUri, Uri) != 0))) + { // // Restart is required, first stop then continue this start function. // @@ -152,6 +153,7 @@ HttpBootStart ( if (Uri != NULL) { FreePool (Uri); } + return Status; } } else { @@ -161,6 +163,7 @@ HttpBootStart ( if (Uri != NULL) { FreePool (Uri); } + return EFI_ALREADY_STARTED; } } @@ -168,14 +171,15 @@ HttpBootStart ( // // Detect whether using ipv6 or not, and set it to the private data. // - if (UsingIpv6 && Private->Ip6Nic != NULL) { + if (UsingIpv6 && (Private->Ip6Nic != NULL)) { Private->UsingIpv6 = TRUE; - } else if (!UsingIpv6 && Private->Ip4Nic != NULL) { + } else if (!UsingIpv6 && (Private->Ip4Nic != NULL)) { Private->UsingIpv6 = FALSE; } else { if (Uri != NULL) { FreePool (Uri); } + return EFI_UNSUPPORTED; } @@ -186,7 +190,7 @@ HttpBootStart ( if (Private->FilePathUri != NULL) { Status = HttpParseUrl ( Private->FilePathUri, - (UINT32) AsciiStrLen (Private->FilePathUri), + (UINT32)AsciiStrLen (Private->FilePathUri), FALSE, &Private->FilePathUriParser ); @@ -219,7 +223,8 @@ HttpBootStart ( return Status; } } - Private->Started = TRUE; + + Private->Started = TRUE; Print (L"\n>>Start HTTP Boot over IPv%d", Private->UsingIpv6 ? 6 : 4); return EFI_SUCCESS; @@ -239,10 +244,10 @@ HttpBootStart ( **/ EFI_STATUS HttpBootDhcp ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - EFI_STATUS Status; + EFI_STATUS Status; if (Private == NULL) { return EFI_INVALID_PARAMETER; @@ -260,7 +265,7 @@ HttpBootDhcp ( // Status = HttpBootDhcp4Dora (Private); } else { - // + // // Start S.A.R.R process to get a IPv6 address and other boot information. // Status = HttpBootDhcp6Sarr (Private); @@ -294,19 +299,19 @@ HttpBootDhcp ( **/ EFI_STATUS HttpBootLoadFile ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN OUT UINTN *BufferSize, - IN VOID *Buffer OPTIONAL, - OUT HTTP_BOOT_IMAGE_TYPE *ImageType + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN OUT UINTN *BufferSize, + IN VOID *Buffer OPTIONAL, + OUT HTTP_BOOT_IMAGE_TYPE *ImageType ) { - EFI_STATUS Status; + EFI_STATUS Status; - if (Private == NULL || ImageType == NULL || BufferSize == NULL ) { + if ((Private == NULL) || (ImageType == NULL) || (BufferSize == NULL)) { return EFI_INVALID_PARAMETER; } - if (*BufferSize != 0 && Buffer == NULL) { + if ((*BufferSize != 0) && (Buffer == NULL)) { return EFI_INVALID_PARAMETER; } @@ -315,7 +320,7 @@ HttpBootLoadFile ( } Status = HttpBootInstallCallback (Private); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -355,7 +360,7 @@ HttpBootLoadFile ( NULL, &Private->ImageType ); - if (EFI_ERROR (Status) && Status != EFI_BUFFER_TOO_SMALL) { + if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) { // // Failed to get file size by HEAD method, may be trunked encoding, try HTTP GET method. // @@ -367,7 +372,7 @@ HttpBootLoadFile ( NULL, &Private->ImageType ); - if (EFI_ERROR (Status) && Status != EFI_BUFFER_TOO_SMALL) { + if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) { AsciiPrint ("\n Error: Could not retrieve NBP file size from HTTP server.\n"); goto ON_EXIT; } @@ -376,8 +381,8 @@ HttpBootLoadFile ( if (*BufferSize < Private->BootFileSize) { *BufferSize = Private->BootFileSize; - *ImageType = Private->ImageType; - Status = EFI_BUFFER_TOO_SMALL; + *ImageType = Private->ImageType; + Status = EFI_BUFFER_TOO_SMALL; goto ON_EXIT; } @@ -398,7 +403,7 @@ ON_EXIT: if (EFI_ERROR (Status)) { if (Status == EFI_ACCESS_DENIED) { AsciiPrint ("\n Error: Could not establish connection with HTTP server.\n"); - } else if (Status == EFI_BUFFER_TOO_SMALL && Buffer != NULL) { + } else if ((Status == EFI_BUFFER_TOO_SMALL) && (Buffer != NULL)) { AsciiPrint ("\n Error: Buffer size is smaller than the requested file.\n"); } else if (Status == EFI_OUT_OF_RESOURCES) { AsciiPrint ("\n Error: Could not allocate I/O buffers.\n"); @@ -429,10 +434,10 @@ ON_EXIT: **/ EFI_STATUS HttpBootStop ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ) { - UINTN Index; + UINTN Index; if (Private == NULL) { return EFI_INVALID_PARAMETER; @@ -451,12 +456,12 @@ HttpBootStop ( ZeroMem (&Private->StationIp, sizeof (EFI_IP_ADDRESS)); ZeroMem (&Private->SubnetMask, sizeof (EFI_IP_ADDRESS)); ZeroMem (&Private->GatewayIp, sizeof (EFI_IP_ADDRESS)); - Private->Port = 0; - Private->BootFileUri = NULL; + Private->Port = 0; + Private->BootFileUri = NULL; Private->BootFileUriParser = NULL; - Private->BootFileSize = 0; - Private->SelectIndex = 0; - Private->SelectProxyType = HttpOfferTypeMax; + Private->BootFileSize = 0; + Private->SelectIndex = 0; + Private->SelectProxyType = HttpOfferTypeMax; if (!Private->UsingIpv6) { // @@ -489,10 +494,10 @@ HttpBootStop ( Private->DnsServerIp = NULL; } - if (Private->FilePathUri!= NULL) { + if (Private->FilePathUri != NULL) { FreePool (Private->FilePathUri); HttpUrlFreeParser (Private->FilePathUriParser); - Private->FilePathUri = NULL; + Private->FilePathUri = NULL; Private->FilePathUriParser = NULL; } @@ -540,21 +545,21 @@ HttpBootStop ( EFI_STATUS EFIAPI HttpBootDxeLoadFile ( - IN EFI_LOAD_FILE_PROTOCOL *This, - IN EFI_DEVICE_PATH_PROTOCOL *FilePath, - IN BOOLEAN BootPolicy, - IN OUT UINTN *BufferSize, - IN VOID *Buffer OPTIONAL + IN EFI_LOAD_FILE_PROTOCOL *This, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath, + IN BOOLEAN BootPolicy, + IN OUT UINTN *BufferSize, + IN VOID *Buffer OPTIONAL ) { - HTTP_BOOT_PRIVATE_DATA *Private; - HTTP_BOOT_VIRTUAL_NIC *VirtualNic; - EFI_STATUS MediaStatus; - BOOLEAN UsingIpv6; - EFI_STATUS Status; - HTTP_BOOT_IMAGE_TYPE ImageType; - - if (This == NULL || BufferSize == NULL || FilePath == NULL) { + HTTP_BOOT_PRIVATE_DATA *Private; + HTTP_BOOT_VIRTUAL_NIC *VirtualNic; + EFI_STATUS MediaStatus; + BOOLEAN UsingIpv6; + EFI_STATUS Status; + HTTP_BOOT_IMAGE_TYPE ImageType; + + if ((This == NULL) || (BufferSize == NULL) || (FilePath == NULL)) { return EFI_INVALID_PARAMETER; } @@ -566,7 +571,7 @@ HttpBootDxeLoadFile ( } VirtualNic = HTTP_BOOT_VIRTUAL_NIC_FROM_LOADFILE (This); - Private = VirtualNic->Private; + Private = VirtualNic->Private; // // Check media status before HTTP boot start @@ -590,7 +595,7 @@ HttpBootDxeLoadFile ( // Initialize HTTP boot. // Status = HttpBootStart (Private, UsingIpv6, FilePath); - if (Status != EFI_SUCCESS && Status != EFI_ALREADY_STARTED) { + if ((Status != EFI_SUCCESS) && (Status != EFI_ALREADY_STARTED)) { return Status; } @@ -598,20 +603,21 @@ HttpBootDxeLoadFile ( // Load the boot file. // ImageType = ImageTypeMax; - Status = HttpBootLoadFile (Private, BufferSize, Buffer, &ImageType); + Status = HttpBootLoadFile (Private, BufferSize, Buffer, &ImageType); if (EFI_ERROR (Status)) { - if (Status == EFI_BUFFER_TOO_SMALL && (ImageType == ImageTypeVirtualCd || ImageType == ImageTypeVirtualDisk)) { + if ((Status == EFI_BUFFER_TOO_SMALL) && ((ImageType == ImageTypeVirtualCd) || (ImageType == ImageTypeVirtualDisk))) { Status = EFI_WARN_FILE_SYSTEM; } else if (Status != EFI_BUFFER_TOO_SMALL) { HttpBootStop (Private); } + return Status; } // // Register the RAM Disk to the system if needed. // - if (ImageType == ImageTypeVirtualCd || ImageType == ImageTypeVirtualDisk) { + if ((ImageType == ImageTypeVirtualCd) || (ImageType == ImageTypeVirtualDisk)) { Status = HttpBootRegisterRamDisk (Private, *BufferSize, Buffer, ImageType); if (!EFI_ERROR (Status)) { Status = EFI_WARN_FILE_SYSTEM; @@ -659,11 +665,11 @@ EFI_LOAD_FILE_PROTOCOL gHttpBootDxeLoadFile = { EFI_STATUS EFIAPI HttpBootCallback ( - IN EFI_HTTP_BOOT_CALLBACK_PROTOCOL *This, - IN EFI_HTTP_BOOT_CALLBACK_DATA_TYPE DataType, - IN BOOLEAN Received, - IN UINT32 DataLength, - IN VOID *Data OPTIONAL + IN EFI_HTTP_BOOT_CALLBACK_PROTOCOL *This, + IN EFI_HTTP_BOOT_CALLBACK_DATA_TYPE DataType, + IN BOOLEAN Received, + IN UINT32 DataLength, + IN VOID *Data OPTIONAL ) { EFI_HTTP_MESSAGE *HttpMessage; @@ -671,89 +677,95 @@ HttpBootCallback ( HTTP_BOOT_PRIVATE_DATA *Private; UINT32 Percentage; - Private = HTTP_BOOT_PRIVATE_DATA_FROM_CALLBACK_PROTOCOL(This); + Private = HTTP_BOOT_PRIVATE_DATA_FROM_CALLBACK_PROTOCOL (This); switch (DataType) { - case HttpBootDhcp4: - case HttpBootDhcp6: - Print (L"."); - break; - - case HttpBootHttpRequest: - if (Data != NULL) { - HttpMessage = (EFI_HTTP_MESSAGE *) Data; - if (HttpMessage->Data.Request->Method == HttpMethodGet && - HttpMessage->Data.Request->Url != NULL) { - Print (L"\n URI: %s\n", HttpMessage->Data.Request->Url); + case HttpBootDhcp4: + case HttpBootDhcp6: + Print (L"."); + break; + + case HttpBootHttpRequest: + if (Data != NULL) { + HttpMessage = (EFI_HTTP_MESSAGE *)Data; + if ((HttpMessage->Data.Request->Method == HttpMethodGet) && + (HttpMessage->Data.Request->Url != NULL)) + { + Print (L"\n URI: %s\n", HttpMessage->Data.Request->Url); + } + } + + break; + + case HttpBootHttpResponse: + if (Data != NULL) { + HttpMessage = (EFI_HTTP_MESSAGE *)Data; + + if (HttpMessage->Data.Response != NULL) { + if (HttpBootIsHttpRedirectStatusCode (HttpMessage->Data.Response->StatusCode)) { + // + // Server indicates the resource has been redirected to a different URL + // according to the section 6.4 of RFC7231 and the RFC 7538. + // Display the redirect information on the screen. + // + HttpHeader = HttpFindHeader ( + HttpMessage->HeaderCount, + HttpMessage->Headers, + HTTP_HEADER_LOCATION + ); + if (HttpHeader != NULL) { + Print (L"\n HTTP ERROR: Resource Redirected.\n New Location: %a\n", HttpHeader->FieldValue); + } + + break; + } + } + + HttpHeader = HttpFindHeader ( + HttpMessage->HeaderCount, + HttpMessage->Headers, + HTTP_HEADER_CONTENT_LENGTH + ); + if (HttpHeader != NULL) { + Private->FileSize = AsciiStrDecimalToUintn (HttpHeader->FieldValue); + Private->ReceivedSize = 0; + Private->Percentage = 0; + } } - } - break; - case HttpBootHttpResponse: - if (Data != NULL) { - HttpMessage = (EFI_HTTP_MESSAGE *) Data; + break; - if (HttpMessage->Data.Response != NULL) { - if (HttpBootIsHttpRedirectStatusCode (HttpMessage->Data.Response->StatusCode)) { + case HttpBootHttpEntityBody: + if (DataLength != 0) { + if (Private->FileSize != 0) { // - // Server indicates the resource has been redirected to a different URL - // according to the section 6.4 of RFC7231 and the RFC 7538. - // Display the redirect information on the screen. + // We already know the file size, print in percentage format. // - HttpHeader = HttpFindHeader ( - HttpMessage->HeaderCount, - HttpMessage->Headers, - HTTP_HEADER_LOCATION - ); - if (HttpHeader != NULL) { - Print (L"\n HTTP ERROR: Resource Redirected.\n New Location: %a\n", HttpHeader->FieldValue); + if (Private->ReceivedSize == 0) { + Print (L" File Size: %lu Bytes\n", Private->FileSize); } - break; - } - } - HttpHeader = HttpFindHeader ( - HttpMessage->HeaderCount, - HttpMessage->Headers, - HTTP_HEADER_CONTENT_LENGTH - ); - if (HttpHeader != NULL) { - Private->FileSize = AsciiStrDecimalToUintn (HttpHeader->FieldValue); - Private->ReceivedSize = 0; - Private->Percentage = 0; - } - } - break; - - case HttpBootHttpEntityBody: - if (DataLength != 0) { - if (Private->FileSize != 0) { - // - // We already know the file size, print in percentage format. - // - if (Private->ReceivedSize == 0) { - Print (L" File Size: %lu Bytes\n", Private->FileSize); - } - Private->ReceivedSize += DataLength; - Percentage = (UINT32) DivU64x64Remainder (MultU64x32 (Private->ReceivedSize, 100), Private->FileSize, NULL); - if (Private->Percentage != Percentage) { - Private->Percentage = Percentage; - Print (L"\r Downloading...%d%%", Percentage); + Private->ReceivedSize += DataLength; + Percentage = (UINT32)DivU64x64Remainder (MultU64x32 (Private->ReceivedSize, 100), Private->FileSize, NULL); + if (Private->Percentage != Percentage) { + Private->Percentage = Percentage; + Print (L"\r Downloading...%d%%", Percentage); + } + } else { + // + // In some case we couldn't get the file size from the HTTP header, so we + // just print the downloaded file size. + // + Private->ReceivedSize += DataLength; + Print (L"\r Downloading...%lu Bytes", Private->ReceivedSize); } - } else { - // - // In some case we couldn't get the file size from the HTTP header, so we - // just print the downloaded file size. - // - Private->ReceivedSize += DataLength; - Print (L"\r Downloading...%lu Bytes", Private->ReceivedSize); } - } - break; - default: - break; - }; + break; + + default: + break; + } return EFI_SUCCESS; } diff --git a/NetworkPkg/HttpBootDxe/HttpBootImpl.h b/NetworkPkg/HttpBootDxe/HttpBootImpl.h index 7b30583e24..55adc9cb50 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootImpl.h +++ b/NetworkPkg/HttpBootDxe/HttpBootImpl.h @@ -5,10 +5,11 @@ Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ + #ifndef __EFI_HTTP_BOOT_IMPL_H__ #define __EFI_HTTP_BOOT_IMPL_H__ -#define HTTP_BOOT_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) +#define HTTP_BOOT_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) /** Attempt to complete a DHCPv4 D.O.R.A or DHCPv6 S.R.A.A sequence to retrieve the boot resource information. @@ -24,7 +25,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS HttpBootDhcp ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); /** @@ -40,7 +41,7 @@ HttpBootDhcp ( **/ EFI_STATUS HttpBootStop ( - IN HTTP_BOOT_PRIVATE_DATA *Private + IN HTTP_BOOT_PRIVATE_DATA *Private ); extern EFI_HTTP_BOOT_CALLBACK_PROTOCOL gHttpBootDxeHttpBootCallback; diff --git a/NetworkPkg/HttpBootDxe/HttpBootSupport.c b/NetworkPkg/HttpBootDxe/HttpBootSupport.c index 99d7fb39c7..236ef25931 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootSupport.c +++ b/NetworkPkg/HttpBootDxe/HttpBootSupport.c @@ -9,7 +9,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "HttpBootDxe.h" - /** Get the Nic handle using any child handle in the IPv4 stack. @@ -21,10 +20,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_HANDLE HttpBootGetNicByIp4Children ( - IN EFI_HANDLE ControllerHandle + IN EFI_HANDLE ControllerHandle ) { - EFI_HANDLE NicHandle; + EFI_HANDLE NicHandle; NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiHttpProtocolGuid); if (NicHandle == NULL) { @@ -48,10 +47,11 @@ HttpBootGetNicByIp4Children ( **/ EFI_HANDLE HttpBootGetNicByIp6Children ( - IN EFI_HANDLE ControllerHandle + IN EFI_HANDLE ControllerHandle ) { - EFI_HANDLE NicHandle; + EFI_HANDLE NicHandle; + NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiHttpProtocolGuid); if (NicHandle == NULL) { NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiDhcp6ProtocolGuid); @@ -73,17 +73,17 @@ HttpBootGetNicByIp6Children ( **/ VOID HttpBootUintnToAscDecWithFormat ( - IN UINTN Number, - IN UINT8 *Buffer, - IN INTN Length + IN UINTN Number, + IN UINT8 *Buffer, + IN INTN Length ) { - UINTN Remainder; + UINTN Remainder; - for (; Length > 0; Length--) { - Remainder = Number % 10; - Number /= 10; - Buffer[Length - 1] = (UINT8) ('0' + Remainder); + for ( ; Length > 0; Length--) { + Remainder = Number % 10; + Number /= 10; + Buffer[Length - 1] = (UINT8)('0' + Remainder); } } @@ -95,10 +95,10 @@ HttpBootUintnToAscDecWithFormat ( **/ VOID HttpBootShowIp4Addr ( - IN EFI_IPv4_ADDRESS *Ip + IN EFI_IPv4_ADDRESS *Ip ) { - UINTN Index; + UINTN Index; for (Index = 0; Index < 4; Index++) { AsciiPrint ("%d", Ip->Addr[Index]); @@ -116,23 +116,25 @@ HttpBootShowIp4Addr ( **/ VOID HttpBootShowIp6Addr ( - IN EFI_IPv6_ADDRESS *Ip + IN EFI_IPv6_ADDRESS *Ip ) { - UINTN Index; + UINTN Index; for (Index = 0; Index < 16; Index++) { - if (Ip->Addr[Index] != 0) { AsciiPrint ("%x", Ip->Addr[Index]); } + Index++; if (Index > 15) { return; } + if (((Ip->Addr[Index] & 0xf0) == 0) && (Ip->Addr[Index - 1] != 0)) { AsciiPrint ("0"); } + AsciiPrint ("%x", Ip->Addr[Index]); if (Index < 15) { AsciiPrint (":"); @@ -148,142 +150,141 @@ HttpBootShowIp6Addr ( **/ VOID HttpBootPrintErrorMessage ( - EFI_HTTP_STATUS_CODE StatusCode + EFI_HTTP_STATUS_CODE StatusCode ) { AsciiPrint ("\n"); switch (StatusCode) { - case HTTP_STATUS_300_MULTIPLE_CHOICES: - AsciiPrint ("\n Redirection: 300 Multiple Choices"); - break; - - case HTTP_STATUS_301_MOVED_PERMANENTLY: - AsciiPrint ("\n Redirection: 301 Moved Permanently"); - break; + case HTTP_STATUS_300_MULTIPLE_CHOICES: + AsciiPrint ("\n Redirection: 300 Multiple Choices"); + break; - case HTTP_STATUS_302_FOUND: - AsciiPrint ("\n Redirection: 302 Found"); - break; + case HTTP_STATUS_301_MOVED_PERMANENTLY: + AsciiPrint ("\n Redirection: 301 Moved Permanently"); + break; - case HTTP_STATUS_303_SEE_OTHER: - AsciiPrint ("\n Redirection: 303 See Other"); - break; + case HTTP_STATUS_302_FOUND: + AsciiPrint ("\n Redirection: 302 Found"); + break; - case HTTP_STATUS_304_NOT_MODIFIED: - AsciiPrint ("\n Redirection: 304 Not Modified"); - break; + case HTTP_STATUS_303_SEE_OTHER: + AsciiPrint ("\n Redirection: 303 See Other"); + break; - case HTTP_STATUS_305_USE_PROXY: - AsciiPrint ("\n Redirection: 305 Use Proxy"); - break; + case HTTP_STATUS_304_NOT_MODIFIED: + AsciiPrint ("\n Redirection: 304 Not Modified"); + break; - case HTTP_STATUS_307_TEMPORARY_REDIRECT: - AsciiPrint ("\n Redirection: 307 Temporary Redirect"); - break; + case HTTP_STATUS_305_USE_PROXY: + AsciiPrint ("\n Redirection: 305 Use Proxy"); + break; - case HTTP_STATUS_308_PERMANENT_REDIRECT: - AsciiPrint ("\n Redirection: 308 Permanent Redirect"); - break; + case HTTP_STATUS_307_TEMPORARY_REDIRECT: + AsciiPrint ("\n Redirection: 307 Temporary Redirect"); + break; - case HTTP_STATUS_400_BAD_REQUEST: - AsciiPrint ("\n Client Error: 400 Bad Request"); - break; + case HTTP_STATUS_308_PERMANENT_REDIRECT: + AsciiPrint ("\n Redirection: 308 Permanent Redirect"); + break; - case HTTP_STATUS_401_UNAUTHORIZED: - AsciiPrint ("\n Client Error: 401 Unauthorized"); - break; + case HTTP_STATUS_400_BAD_REQUEST: + AsciiPrint ("\n Client Error: 400 Bad Request"); + break; - case HTTP_STATUS_402_PAYMENT_REQUIRED: - AsciiPrint ("\n Client Error: 402 Payment Required"); - break; + case HTTP_STATUS_401_UNAUTHORIZED: + AsciiPrint ("\n Client Error: 401 Unauthorized"); + break; - case HTTP_STATUS_403_FORBIDDEN: - AsciiPrint ("\n Client Error: 403 Forbidden"); - break; + case HTTP_STATUS_402_PAYMENT_REQUIRED: + AsciiPrint ("\n Client Error: 402 Payment Required"); + break; - case HTTP_STATUS_404_NOT_FOUND: - AsciiPrint ("\n Client Error: 404 Not Found"); - break; + case HTTP_STATUS_403_FORBIDDEN: + AsciiPrint ("\n Client Error: 403 Forbidden"); + break; - case HTTP_STATUS_405_METHOD_NOT_ALLOWED: - AsciiPrint ("\n Client Error: 405 Method Not Allowed"); - break; + case HTTP_STATUS_404_NOT_FOUND: + AsciiPrint ("\n Client Error: 404 Not Found"); + break; - case HTTP_STATUS_406_NOT_ACCEPTABLE: - AsciiPrint ("\n Client Error: 406 Not Acceptable"); - break; + case HTTP_STATUS_405_METHOD_NOT_ALLOWED: + AsciiPrint ("\n Client Error: 405 Method Not Allowed"); + break; - case HTTP_STATUS_407_PROXY_AUTHENTICATION_REQUIRED: - AsciiPrint ("\n Client Error: 407 Proxy Authentication Required"); - break; + case HTTP_STATUS_406_NOT_ACCEPTABLE: + AsciiPrint ("\n Client Error: 406 Not Acceptable"); + break; - case HTTP_STATUS_408_REQUEST_TIME_OUT: - AsciiPrint ("\n Client Error: 408 Request Timeout"); - break; + case HTTP_STATUS_407_PROXY_AUTHENTICATION_REQUIRED: + AsciiPrint ("\n Client Error: 407 Proxy Authentication Required"); + break; - case HTTP_STATUS_409_CONFLICT: - AsciiPrint ("\n Client Error: 409 Conflict"); - break; + case HTTP_STATUS_408_REQUEST_TIME_OUT: + AsciiPrint ("\n Client Error: 408 Request Timeout"); + break; - case HTTP_STATUS_410_GONE: - AsciiPrint ("\n Client Error: 410 Gone"); - break; + case HTTP_STATUS_409_CONFLICT: + AsciiPrint ("\n Client Error: 409 Conflict"); + break; - case HTTP_STATUS_411_LENGTH_REQUIRED: - AsciiPrint ("\n Client Error: 411 Length Required"); - break; + case HTTP_STATUS_410_GONE: + AsciiPrint ("\n Client Error: 410 Gone"); + break; - case HTTP_STATUS_412_PRECONDITION_FAILED: - AsciiPrint ("\n Client Error: 412 Precondition Failed"); - break; + case HTTP_STATUS_411_LENGTH_REQUIRED: + AsciiPrint ("\n Client Error: 411 Length Required"); + break; - case HTTP_STATUS_413_REQUEST_ENTITY_TOO_LARGE: - AsciiPrint ("\n Client Error: 413 Request Entity Too Large"); - break; + case HTTP_STATUS_412_PRECONDITION_FAILED: + AsciiPrint ("\n Client Error: 412 Precondition Failed"); + break; - case HTTP_STATUS_414_REQUEST_URI_TOO_LARGE: - AsciiPrint ("\n Client Error: 414 Request URI Too Long"); - break; + case HTTP_STATUS_413_REQUEST_ENTITY_TOO_LARGE: + AsciiPrint ("\n Client Error: 413 Request Entity Too Large"); + break; - case HTTP_STATUS_415_UNSUPPORTED_MEDIA_TYPE: - AsciiPrint ("\n Client Error: 415 Unsupported Media Type"); - break; + case HTTP_STATUS_414_REQUEST_URI_TOO_LARGE: + AsciiPrint ("\n Client Error: 414 Request URI Too Long"); + break; - case HTTP_STATUS_416_REQUESTED_RANGE_NOT_SATISFIED: - AsciiPrint ("\n Client Error: 416 Requested Range Not Satisfiable"); - break; + case HTTP_STATUS_415_UNSUPPORTED_MEDIA_TYPE: + AsciiPrint ("\n Client Error: 415 Unsupported Media Type"); + break; - case HTTP_STATUS_417_EXPECTATION_FAILED: - AsciiPrint ("\n Client Error: 417 Expectation Failed"); - break; + case HTTP_STATUS_416_REQUESTED_RANGE_NOT_SATISFIED: + AsciiPrint ("\n Client Error: 416 Requested Range Not Satisfiable"); + break; - case HTTP_STATUS_500_INTERNAL_SERVER_ERROR: - AsciiPrint ("\n Server Error: 500 Internal Server Error"); - break; + case HTTP_STATUS_417_EXPECTATION_FAILED: + AsciiPrint ("\n Client Error: 417 Expectation Failed"); + break; - case HTTP_STATUS_501_NOT_IMPLEMENTED: - AsciiPrint ("\n Server Error: 501 Not Implemented"); - break; + case HTTP_STATUS_500_INTERNAL_SERVER_ERROR: + AsciiPrint ("\n Server Error: 500 Internal Server Error"); + break; - case HTTP_STATUS_502_BAD_GATEWAY: - AsciiPrint ("\n Server Error: 502 Bad Gateway"); - break; + case HTTP_STATUS_501_NOT_IMPLEMENTED: + AsciiPrint ("\n Server Error: 501 Not Implemented"); + break; - case HTTP_STATUS_503_SERVICE_UNAVAILABLE: - AsciiPrint ("\n Server Error: 503 Service Unavailable"); - break; + case HTTP_STATUS_502_BAD_GATEWAY: + AsciiPrint ("\n Server Error: 502 Bad Gateway"); + break; - case HTTP_STATUS_504_GATEWAY_TIME_OUT: - AsciiPrint ("\n Server Error: 504 Gateway Timeout"); - break; + case HTTP_STATUS_503_SERVICE_UNAVAILABLE: + AsciiPrint ("\n Server Error: 503 Service Unavailable"); + break; - case HTTP_STATUS_505_HTTP_VERSION_NOT_SUPPORTED: - AsciiPrint ("\n Server Error: 505 HTTP Version Not Supported"); - break; + case HTTP_STATUS_504_GATEWAY_TIME_OUT: + AsciiPrint ("\n Server Error: 504 Gateway Timeout"); + break; - default: ; + case HTTP_STATUS_505_HTTP_VERSION_NOT_SUPPORTED: + AsciiPrint ("\n Server Error: 505 HTTP Version Not Supported"); + break; + default:; } } @@ -297,11 +298,11 @@ HttpBootPrintErrorMessage ( VOID EFIAPI HttpBootCommonNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - *((BOOLEAN *) Context) = TRUE; + *((BOOLEAN *)Context) = TRUE; } /** @@ -317,38 +318,38 @@ HttpBootCommonNotify ( **/ EFI_STATUS HttpBootDns ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN CHAR16 *HostName, - OUT EFI_IPv6_ADDRESS *IpAddress + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN CHAR16 *HostName, + OUT EFI_IPv6_ADDRESS *IpAddress ) { - EFI_STATUS Status; - EFI_DNS6_PROTOCOL *Dns6; - EFI_DNS6_CONFIG_DATA Dns6ConfigData; - EFI_DNS6_COMPLETION_TOKEN Token; - EFI_HANDLE Dns6Handle; - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; - EFI_IPv6_ADDRESS *DnsServerList; - UINTN DnsServerListCount; - UINTN DataSize; - BOOLEAN IsDone; - - DnsServerList = NULL; - DnsServerListCount = 0; - Dns6 = NULL; - Dns6Handle = NULL; + EFI_STATUS Status; + EFI_DNS6_PROTOCOL *Dns6; + EFI_DNS6_CONFIG_DATA Dns6ConfigData; + EFI_DNS6_COMPLETION_TOKEN Token; + EFI_HANDLE Dns6Handle; + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + EFI_IPv6_ADDRESS *DnsServerList; + UINTN DnsServerListCount; + UINTN DataSize; + BOOLEAN IsDone; + + DnsServerList = NULL; + DnsServerListCount = 0; + Dns6 = NULL; + Dns6Handle = NULL; ZeroMem (&Token, sizeof (EFI_DNS6_COMPLETION_TOKEN)); // // Get DNS server list from EFI IPv6 Configuration protocol. // - Status = gBS->HandleProtocol (Private->Controller, &gEfiIp6ConfigProtocolGuid, (VOID **) &Ip6Config); + Status = gBS->HandleProtocol (Private->Controller, &gEfiIp6ConfigProtocolGuid, (VOID **)&Ip6Config); if (!EFI_ERROR (Status)) { // // Get the required size. // DataSize = 0; - Status = Ip6Config->GetData (Ip6Config, Ip6ConfigDataTypeDnsServer, &DataSize, NULL); + Status = Ip6Config->GetData (Ip6Config, Ip6ConfigDataTypeDnsServer, &DataSize, NULL); if (Status == EFI_BUFFER_TOO_SMALL) { DnsServerList = AllocatePool (DataSize); if (DnsServerList == NULL) { @@ -364,6 +365,7 @@ HttpBootDns ( } } } + // // Create a DNSv6 child instance and get the protocol. // @@ -380,7 +382,7 @@ HttpBootDns ( Status = gBS->OpenProtocol ( Dns6Handle, &gEfiDns6ProtocolGuid, - (VOID **) &Dns6, + (VOID **)&Dns6, Private->Ip6Nic->ImageHandle, Private->Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -397,11 +399,11 @@ HttpBootDns ( Dns6ConfigData.DnsServerList = DnsServerList; Dns6ConfigData.EnableDnsCache = TRUE; Dns6ConfigData.Protocol = EFI_IP_PROTO_UDP; - IP6_COPY_ADDRESS (&Dns6ConfigData.StationIp,&Private->StationIp.v6); + IP6_COPY_ADDRESS (&Dns6ConfigData.StationIp, &Private->StationIp.v6); Status = Dns6->Configure ( - Dns6, - &Dns6ConfigData - ); + Dns6, + &Dns6ConfigData + ); if (EFI_ERROR (Status)) { goto Exit; } @@ -443,25 +445,30 @@ HttpBootDns ( Status = EFI_DEVICE_ERROR; goto Exit; } - if (Token.RspData.H2AData->IpCount == 0 || Token.RspData.H2AData->IpList == NULL) { + + if ((Token.RspData.H2AData->IpCount == 0) || (Token.RspData.H2AData->IpList == NULL)) { Status = EFI_DEVICE_ERROR; goto Exit; } + // // We just return the first IPv6 address from DNS protocol. // IP6_COPY_ADDRESS (IpAddress, Token.RspData.H2AData->IpList); Status = EFI_SUCCESS; } + Exit: if (Token.Event != NULL) { gBS->CloseEvent (Token.Event); } + if (Token.RspData.H2AData != NULL) { if (Token.RspData.H2AData->IpList != NULL) { FreePool (Token.RspData.H2AData->IpList); } + FreePool (Token.RspData.H2AData); } @@ -504,11 +511,11 @@ Exit: **/ EFI_STATUS HttpBootCheckUriScheme ( - IN CHAR8 *Uri + IN CHAR8 *Uri ) { - UINTN Index; - EFI_STATUS Status; + UINTN Index; + EFI_STATUS Status; Status = EFI_SUCCESS; @@ -519,7 +526,8 @@ HttpBootCheckUriScheme ( if (Uri[Index] == ':') { break; } - if (Uri[Index] >= 'A' && Uri[Index] <= 'Z') { + + if ((Uri[Index] >= 'A') && (Uri[Index] <= 'Z')) { Uri[Index] -= (CHAR8)('A' - 'a'); } } @@ -557,8 +565,8 @@ HttpBootCheckUriScheme ( **/ EFI_STATUS HttpBootParseFilePath ( - IN EFI_DEVICE_PATH_PROTOCOL *FilePath, - OUT CHAR8 **UriAddress + IN EFI_DEVICE_PATH_PROTOCOL *FilePath, + OUT CHAR8 **UriAddress ) { EFI_DEVICE_PATH_PROTOCOL *TempDevicePath; @@ -578,28 +586,32 @@ HttpBootParseFilePath ( TempDevicePath = FilePath; while (!IsDevicePathEnd (TempDevicePath)) { if ((DevicePathType (TempDevicePath) == MESSAGING_DEVICE_PATH) && - (DevicePathSubType (TempDevicePath) == MSG_URI_DP)) { - UriDevicePath = (URI_DEVICE_PATH*) TempDevicePath; + (DevicePathSubType (TempDevicePath) == MSG_URI_DP)) + { + UriDevicePath = (URI_DEVICE_PATH *)TempDevicePath; // // UEFI Spec doesn't require the URI to be a NULL-terminated string // So we allocate a new buffer and always append a '\0' to it. // - UriStrLength = DevicePathNodeLength (UriDevicePath) - sizeof(EFI_DEVICE_PATH_PROTOCOL); + UriStrLength = DevicePathNodeLength (UriDevicePath) - sizeof (EFI_DEVICE_PATH_PROTOCOL); if (UriStrLength == 0) { // // return a NULL UriAddress if it's a empty URI device path node. // break; } + Uri = AllocatePool (UriStrLength + 1); if (Uri == NULL) { return EFI_OUT_OF_RESOURCES; } - CopyMem (Uri, UriDevicePath->Uri, DevicePathNodeLength (UriDevicePath) - sizeof(EFI_DEVICE_PATH_PROTOCOL)); - Uri[DevicePathNodeLength (UriDevicePath) - sizeof(EFI_DEVICE_PATH_PROTOCOL)] = '\0'; + + CopyMem (Uri, UriDevicePath->Uri, DevicePathNodeLength (UriDevicePath) - sizeof (EFI_DEVICE_PATH_PROTOCOL)); + Uri[DevicePathNodeLength (UriDevicePath) - sizeof (EFI_DEVICE_PATH_PROTOCOL)] = '\0'; *UriAddress = Uri; } + TempDevicePath = NextDevicePathNode (TempDevicePath); } @@ -625,23 +637,23 @@ HttpBootParseFilePath ( **/ EFI_STATUS HttpBootCheckImageType ( - IN CHAR8 *Uri, - IN VOID *UriParser, - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - OUT HTTP_BOOT_IMAGE_TYPE *ImageType + IN CHAR8 *Uri, + IN VOID *UriParser, + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + OUT HTTP_BOOT_IMAGE_TYPE *ImageType ) { - EFI_STATUS Status; - EFI_HTTP_HEADER *Header; - CHAR8 *FilePath; - CHAR8 *FilePost; + EFI_STATUS Status; + EFI_HTTP_HEADER *Header; + CHAR8 *FilePath; + CHAR8 *FilePost; - if (Uri == NULL || UriParser == NULL || ImageType == NULL) { + if ((Uri == NULL) || (UriParser == NULL) || (ImageType == NULL)) { return EFI_INVALID_PARAMETER; } - if (HeaderCount != 0 && Headers == NULL) { + if ((HeaderCount != 0) && (Headers == NULL)) { return EFI_INVALID_PARAMETER; } @@ -712,22 +724,22 @@ HttpBootCheckImageType ( **/ EFI_STATUS HttpBootRegisterRamDisk ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN UINTN BufferSize, - IN VOID *Buffer, - IN HTTP_BOOT_IMAGE_TYPE ImageType + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN UINTN BufferSize, + IN VOID *Buffer, + IN HTTP_BOOT_IMAGE_TYPE ImageType ) { - EFI_RAM_DISK_PROTOCOL *RamDisk; - EFI_STATUS Status; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - EFI_GUID *RamDiskType; + EFI_RAM_DISK_PROTOCOL *RamDisk; + EFI_STATUS Status; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + EFI_GUID *RamDiskType; ASSERT (Private != NULL); ASSERT (Buffer != NULL); ASSERT (BufferSize != 0); - Status = gBS->LocateProtocol (&gEfiRamDiskProtocolGuid, NULL, (VOID**) &RamDisk); + Status = gBS->LocateProtocol (&gEfiRamDiskProtocolGuid, NULL, (VOID **)&RamDisk); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "HTTP Boot: Couldn't find the RAM Disk protocol - %r\n", Status)); return Status; @@ -742,12 +754,12 @@ HttpBootRegisterRamDisk ( } Status = RamDisk->Register ( - (UINTN)Buffer, - (UINT64)BufferSize, - RamDiskType, - Private->UsingIpv6 ? Private->Ip6Nic->DevicePath : Private->Ip4Nic->DevicePath, - &DevicePath - ); + (UINTN)Buffer, + (UINT64)BufferSize, + RamDiskType, + Private->UsingIpv6 ? Private->Ip6Nic->DevicePath : Private->Ip4Nic->DevicePath, + &DevicePath + ); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "HTTP Boot: Failed to register RAM Disk - %r\n", Status)); } @@ -765,13 +777,14 @@ HttpBootRegisterRamDisk ( **/ BOOLEAN HttpBootIsHttpRedirectStatusCode ( - IN EFI_HTTP_STATUS_CODE StatusCode + IN EFI_HTTP_STATUS_CODE StatusCode ) { - if (StatusCode == HTTP_STATUS_301_MOVED_PERMANENTLY || - StatusCode == HTTP_STATUS_302_FOUND || - StatusCode == HTTP_STATUS_307_TEMPORARY_REDIRECT || - StatusCode == HTTP_STATUS_308_PERMANENT_REDIRECT) { + if ((StatusCode == HTTP_STATUS_301_MOVED_PERMANENTLY) || + (StatusCode == HTTP_STATUS_302_FOUND) || + (StatusCode == HTTP_STATUS_307_TEMPORARY_REDIRECT) || + (StatusCode == HTTP_STATUS_308_PERMANENT_REDIRECT)) + { return TRUE; } diff --git a/NetworkPkg/HttpBootDxe/HttpBootSupport.h b/NetworkPkg/HttpBootDxe/HttpBootSupport.h index c2ac1b785a..3698e55936 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootSupport.h +++ b/NetworkPkg/HttpBootDxe/HttpBootSupport.h @@ -21,7 +21,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_HANDLE HttpBootGetNicByIp4Children ( - IN EFI_HANDLE ControllerHandle + IN EFI_HANDLE ControllerHandle ); /** @@ -35,7 +35,7 @@ HttpBootGetNicByIp4Children ( **/ EFI_HANDLE HttpBootGetNicByIp6Children ( - IN EFI_HANDLE ControllerHandle + IN EFI_HANDLE ControllerHandle ); /** @@ -48,12 +48,11 @@ HttpBootGetNicByIp6Children ( **/ VOID HttpBootUintnToAscDecWithFormat ( - IN UINTN Number, - IN UINT8 *Buffer, - IN INTN Length + IN UINTN Number, + IN UINT8 *Buffer, + IN INTN Length ); - /** This function is to display the IPv4 address. @@ -62,7 +61,7 @@ HttpBootUintnToAscDecWithFormat ( **/ VOID HttpBootShowIp4Addr ( - IN EFI_IPv4_ADDRESS *Ip + IN EFI_IPv4_ADDRESS *Ip ); /** @@ -73,7 +72,7 @@ HttpBootShowIp4Addr ( **/ VOID HttpBootShowIp6Addr ( - IN EFI_IPv6_ADDRESS *Ip + IN EFI_IPv6_ADDRESS *Ip ); /** @@ -84,7 +83,7 @@ HttpBootShowIp6Addr ( **/ VOID HttpBootPrintErrorMessage ( - EFI_HTTP_STATUS_CODE StatusCode + EFI_HTTP_STATUS_CODE StatusCode ); /** @@ -100,9 +99,9 @@ HttpBootPrintErrorMessage ( **/ EFI_STATUS HttpBootDns ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN CHAR16 *HostName, - OUT EFI_IPv6_ADDRESS *IpAddress + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN CHAR16 *HostName, + OUT EFI_IPv6_ADDRESS *IpAddress ); /** @@ -115,8 +114,8 @@ HttpBootDns ( VOID EFIAPI HttpBootCommonNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -131,7 +130,7 @@ HttpBootCommonNotify ( **/ EFI_STATUS HttpBootCheckUriScheme ( - IN CHAR8 *Uri + IN CHAR8 *Uri ); /** @@ -148,8 +147,8 @@ HttpBootCheckUriScheme ( **/ EFI_STATUS HttpBootParseFilePath ( - IN EFI_DEVICE_PATH_PROTOCOL *FilePath, - OUT CHAR8 **UriAddress + IN EFI_DEVICE_PATH_PROTOCOL *FilePath, + OUT CHAR8 **UriAddress ); /** @@ -171,11 +170,11 @@ HttpBootParseFilePath ( **/ EFI_STATUS HttpBootCheckImageType ( - IN CHAR8 *Uri, - IN VOID *UriParser, - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - OUT HTTP_BOOT_IMAGE_TYPE *ImageType + IN CHAR8 *Uri, + IN VOID *UriParser, + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + OUT HTTP_BOOT_IMAGE_TYPE *ImageType ); /** @@ -194,10 +193,10 @@ HttpBootCheckImageType ( **/ EFI_STATUS HttpBootRegisterRamDisk ( - IN HTTP_BOOT_PRIVATE_DATA *Private, - IN UINTN BufferSize, - IN VOID *Buffer, - IN HTTP_BOOT_IMAGE_TYPE ImageType + IN HTTP_BOOT_PRIVATE_DATA *Private, + IN UINTN BufferSize, + IN VOID *Buffer, + IN HTTP_BOOT_IMAGE_TYPE ImageType ); /** @@ -210,6 +209,7 @@ HttpBootRegisterRamDisk ( **/ BOOLEAN HttpBootIsHttpRedirectStatusCode ( - IN EFI_HTTP_STATUS_CODE StatusCode + IN EFI_HTTP_STATUS_CODE StatusCode ); + #endif diff --git a/NetworkPkg/HttpDxe/ComponentName.c b/NetworkPkg/HttpDxe/ComponentName.c index d51b55ae2e..db41d582c3 100644 --- a/NetworkPkg/HttpDxe/ComponentName.c +++ b/NetworkPkg/HttpDxe/ComponentName.c @@ -15,8 +15,8 @@ /// GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gHttpDxeComponentName = { - (EFI_COMPONENT_NAME_GET_DRIVER_NAME) HttpDxeComponentNameGetDriverName, - (EFI_COMPONENT_NAME_GET_CONTROLLER_NAME) HttpDxeComponentNameGetControllerName, + (EFI_COMPONENT_NAME_GET_DRIVER_NAME)HttpDxeComponentNameGetDriverName, + (EFI_COMPONENT_NAME_GET_CONTROLLER_NAME)HttpDxeComponentNameGetControllerName, "eng" }; @@ -34,9 +34,9 @@ EFI_COMPONENT_NAME2_PROTOCOL gHttpDxeComponentName2 = { /// Table of driver names /// GLOBAL_REMOVE_IF_UNREFERENCED -EFI_UNICODE_STRING_TABLE mHttpDxeDriverNameTable[] = { - { "eng;en", (CHAR16 *) L"HttpDxe" }, - { NULL, NULL } +EFI_UNICODE_STRING_TABLE mHttpDxeDriverNameTable[] = { + { "eng;en", (CHAR16 *)L"HttpDxe" }, + { NULL, NULL } }; /** diff --git a/NetworkPkg/HttpDxe/HttpDns.c b/NetworkPkg/HttpDxe/HttpDns.c index 5f092c00e3..59a2784e6a 100644 --- a/NetworkPkg/HttpDxe/HttpDns.c +++ b/NetworkPkg/HttpDxe/HttpDns.c @@ -23,23 +23,22 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS HttpDns4 ( - IN HTTP_PROTOCOL *HttpInstance, - IN CHAR16 *HostName, - OUT EFI_IPv4_ADDRESS *IpAddress + IN HTTP_PROTOCOL *HttpInstance, + IN CHAR16 *HostName, + OUT EFI_IPv4_ADDRESS *IpAddress ) { - EFI_STATUS Status; - EFI_DNS4_PROTOCOL *Dns4; - EFI_DNS4_CONFIG_DATA Dns4CfgData; - EFI_DNS4_COMPLETION_TOKEN Token; - BOOLEAN IsDone; - HTTP_SERVICE *Service; - EFI_HANDLE Dns4Handle; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; - UINTN DnsServerListCount; - EFI_IPv4_ADDRESS *DnsServerList; - UINTN DataSize; - + EFI_STATUS Status; + EFI_DNS4_PROTOCOL *Dns4; + EFI_DNS4_CONFIG_DATA Dns4CfgData; + EFI_DNS4_COMPLETION_TOKEN Token; + BOOLEAN IsDone; + HTTP_SERVICE *Service; + EFI_HANDLE Dns4Handle; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + UINTN DnsServerListCount; + EFI_IPv4_ADDRESS *DnsServerList; + UINTN DataSize; Service = HttpInstance->Service; ASSERT (Service != NULL); @@ -51,7 +50,7 @@ HttpDns4 ( // // Get DNS server list from EFI IPv4 Configuration II protocol. // - Status = gBS->HandleProtocol (Service->ControllerHandle, &gEfiIp4Config2ProtocolGuid, (VOID **) &Ip4Config2); + Status = gBS->HandleProtocol (Service->ControllerHandle, &gEfiIp4Config2ProtocolGuid, (VOID **)&Ip4Config2); if (!EFI_ERROR (Status)) { // // Get the required size. @@ -64,7 +63,7 @@ HttpDns4 ( return EFI_OUT_OF_RESOURCES; } - Status = Ip4Config2->GetData (Ip4Config2, Ip4Config2DataTypeDnsServer, &DataSize, DnsServerList); + Status = Ip4Config2->GetData (Ip4Config2, Ip4Config2DataTypeDnsServer, &DataSize, DnsServerList); if (EFI_ERROR (Status)) { FreePool (DnsServerList); DnsServerList = NULL; @@ -93,7 +92,7 @@ HttpDns4 ( Status = gBS->OpenProtocol ( Dns4Handle, &gEfiDns4ProtocolGuid, - (VOID **) &Dns4, + (VOID **)&Dns4, Service->Ip4DriverBindingHandle, Service->ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -113,12 +112,13 @@ HttpDns4 ( IP4_COPY_ADDRESS (&Dns4CfgData.StationIp, &HttpInstance->IPv4Node.LocalAddress); IP4_COPY_ADDRESS (&Dns4CfgData.SubnetMask, &HttpInstance->IPv4Node.LocalSubnet); } - Dns4CfgData.EnableDnsCache = TRUE; - Dns4CfgData.Protocol = EFI_IP_PROTO_UDP; - Status = Dns4->Configure ( - Dns4, - &Dns4CfgData - ); + + Dns4CfgData.EnableDnsCache = TRUE; + Dns4CfgData.Protocol = EFI_IP_PROTO_UDP; + Status = Dns4->Configure ( + Dns4, + &Dns4CfgData + ); if (EFI_ERROR (Status)) { goto Exit; } @@ -143,7 +143,7 @@ HttpDns4 ( // Token.Status = EFI_NOT_READY; IsDone = FALSE; - Status = Dns4->HostNameToIp (Dns4, HostName, &Token); + Status = Dns4->HostNameToIp (Dns4, HostName, &Token); if (EFI_ERROR (Status)) { goto Exit; } @@ -161,10 +161,12 @@ HttpDns4 ( Status = EFI_DEVICE_ERROR; goto Exit; } - if (Token.RspData.H2AData->IpCount == 0 || Token.RspData.H2AData->IpList == NULL) { + + if ((Token.RspData.H2AData->IpCount == 0) || (Token.RspData.H2AData->IpList == NULL)) { Status = EFI_DEVICE_ERROR; goto Exit; } + // // We just return the first IP address from DNS protocol. // @@ -177,10 +179,12 @@ Exit: if (Token.Event != NULL) { gBS->CloseEvent (Token.Event); } + if (Token.RspData.H2AData != NULL) { if (Token.RspData.H2AData->IpList != NULL) { FreePool (Token.RspData.H2AData->IpList); } + FreePool (Token.RspData.H2AData); } @@ -226,43 +230,42 @@ Exit: **/ EFI_STATUS HttpDns6 ( - IN HTTP_PROTOCOL *HttpInstance, - IN CHAR16 *HostName, - OUT EFI_IPv6_ADDRESS *IpAddress + IN HTTP_PROTOCOL *HttpInstance, + IN CHAR16 *HostName, + OUT EFI_IPv6_ADDRESS *IpAddress ) { - EFI_STATUS Status; - HTTP_SERVICE *Service; - EFI_DNS6_PROTOCOL *Dns6; - EFI_DNS6_CONFIG_DATA Dns6ConfigData; - EFI_DNS6_COMPLETION_TOKEN Token; - EFI_HANDLE Dns6Handle; - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; - EFI_IPv6_ADDRESS *DnsServerList; - UINTN DnsServerListCount; - UINTN DataSize; - BOOLEAN IsDone; - + EFI_STATUS Status; + HTTP_SERVICE *Service; + EFI_DNS6_PROTOCOL *Dns6; + EFI_DNS6_CONFIG_DATA Dns6ConfigData; + EFI_DNS6_COMPLETION_TOKEN Token; + EFI_HANDLE Dns6Handle; + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + EFI_IPv6_ADDRESS *DnsServerList; + UINTN DnsServerListCount; + UINTN DataSize; + BOOLEAN IsDone; Service = HttpInstance->Service; ASSERT (Service != NULL); - DnsServerList = NULL; - DnsServerListCount = 0; - Dns6 = NULL; - Dns6Handle = NULL; + DnsServerList = NULL; + DnsServerListCount = 0; + Dns6 = NULL; + Dns6Handle = NULL; ZeroMem (&Token, sizeof (EFI_DNS6_COMPLETION_TOKEN)); // // Get DNS server list from EFI IPv6 Configuration protocol. // - Status = gBS->HandleProtocol (Service->ControllerHandle, &gEfiIp6ConfigProtocolGuid, (VOID **) &Ip6Config); + Status = gBS->HandleProtocol (Service->ControllerHandle, &gEfiIp6ConfigProtocolGuid, (VOID **)&Ip6Config); if (!EFI_ERROR (Status)) { // // Get the required size. // DataSize = 0; - Status = Ip6Config->GetData (Ip6Config, Ip6ConfigDataTypeDnsServer, &DataSize, NULL); + Status = Ip6Config->GetData (Ip6Config, Ip6ConfigDataTypeDnsServer, &DataSize, NULL); if (Status == EFI_BUFFER_TOO_SMALL) { DnsServerList = AllocatePool (DataSize); if (DnsServerList == NULL) { @@ -295,7 +298,7 @@ HttpDns6 ( Status = gBS->OpenProtocol ( Dns6Handle, &gEfiDns6ProtocolGuid, - (VOID **) &Dns6, + (VOID **)&Dns6, Service->Ip6DriverBindingHandle, Service->ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -358,10 +361,12 @@ HttpDns6 ( Status = EFI_DEVICE_ERROR; goto Exit; } - if (Token.RspData.H2AData->IpCount == 0 || Token.RspData.H2AData->IpList == NULL) { + + if ((Token.RspData.H2AData->IpCount == 0) || (Token.RspData.H2AData->IpList == NULL)) { Status = EFI_DEVICE_ERROR; goto Exit; } + // // We just return the first IPv6 address from DNS protocol. // @@ -374,10 +379,12 @@ Exit: if (Token.Event != NULL) { gBS->CloseEvent (Token.Event); } + if (Token.RspData.H2AData != NULL) { if (Token.RspData.H2AData->IpList != NULL) { FreePool (Token.RspData.H2AData->IpList); } + FreePool (Token.RspData.H2AData); } diff --git a/NetworkPkg/HttpDxe/HttpDns.h b/NetworkPkg/HttpDxe/HttpDns.h index 3ddcbdf39a..11145942f4 100644 --- a/NetworkPkg/HttpDxe/HttpDns.h +++ b/NetworkPkg/HttpDxe/HttpDns.h @@ -24,9 +24,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS HttpDns4 ( - IN HTTP_PROTOCOL *HttpInstance, - IN CHAR16 *HostName, - OUT EFI_IPv4_ADDRESS *IpAddress + IN HTTP_PROTOCOL *HttpInstance, + IN CHAR16 *HostName, + OUT EFI_IPv4_ADDRESS *IpAddress ); /** @@ -44,9 +44,9 @@ HttpDns4 ( **/ EFI_STATUS HttpDns6 ( - IN HTTP_PROTOCOL *HttpInstance, - IN CHAR16 *HostName, - OUT EFI_IPv6_ADDRESS *IpAddress + IN HTTP_PROTOCOL *HttpInstance, + IN CHAR16 *HostName, + OUT EFI_IPv6_ADDRESS *IpAddress ); #endif diff --git a/NetworkPkg/HttpDxe/HttpDriver.c b/NetworkPkg/HttpDxe/HttpDriver.c index a9f5c0949f..5d918d3c4d 100644 --- a/NetworkPkg/HttpDxe/HttpDriver.c +++ b/NetworkPkg/HttpDxe/HttpDriver.c @@ -10,12 +10,12 @@ #include "HttpDriver.h" -EFI_HTTP_UTILITIES_PROTOCOL *mHttpUtilities = NULL; +EFI_HTTP_UTILITIES_PROTOCOL *mHttpUtilities = NULL; /// /// Driver Binding Protocol instance /// -EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp4DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp4DriverBinding = { HttpDxeIp4DriverBindingSupported, HttpDxeIp4DriverBindingStart, HttpDxeIp4DriverBindingStop, @@ -24,7 +24,7 @@ EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp4DriverBinding = { NULL }; -EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp6DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp6DriverBinding = { HttpDxeIp6DriverBindingSupported, HttpDxeIp6DriverBindingStart, HttpDxeIp6DriverBindingStop, @@ -33,7 +33,6 @@ EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp6DriverBinding = { NULL }; - /** Create a HTTP driver service binding private instance. @@ -47,11 +46,11 @@ EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp6DriverBinding = { **/ EFI_STATUS HttpCreateService ( - IN EFI_HANDLE Controller, - OUT HTTP_SERVICE **ServiceData + IN EFI_HANDLE Controller, + OUT HTTP_SERVICE **ServiceData ) { - HTTP_SERVICE *HttpService; + HTTP_SERVICE *HttpService; ASSERT (ServiceData != NULL); *ServiceData = NULL; @@ -61,11 +60,11 @@ HttpCreateService ( return EFI_OUT_OF_RESOURCES; } - HttpService->Signature = HTTP_SERVICE_SIGNATURE; - HttpService->ServiceBinding.CreateChild = HttpServiceBindingCreateChild; + HttpService->Signature = HTTP_SERVICE_SIGNATURE; + HttpService->ServiceBinding.CreateChild = HttpServiceBindingCreateChild; HttpService->ServiceBinding.DestroyChild = HttpServiceBindingDestroyChild; - HttpService->ControllerHandle = Controller; - HttpService->ChildrenNumber = 0; + HttpService->ControllerHandle = Controller; + HttpService->ChildrenNumber = 0; InitializeListHead (&HttpService->ChildrenList); *ServiceData = HttpService; @@ -82,14 +81,14 @@ HttpCreateService ( **/ VOID HttpCleanService ( - IN HTTP_SERVICE *HttpService, - IN BOOLEAN UsingIpv6 + IN HTTP_SERVICE *HttpService, + IN BOOLEAN UsingIpv6 ) { - if (HttpService == NULL) { - return ; + return; } + if (!UsingIpv6) { if (HttpService->Tcp4ChildHandle != NULL) { gBS->CloseProtocol ( @@ -127,7 +126,6 @@ HttpCleanService ( HttpService->Tcp6ChildHandle = NULL; } } - } /** @@ -148,14 +146,14 @@ HttpUtilitiesInstalledCallback ( gBS->LocateProtocol ( &gEfiHttpUtilitiesProtocolGuid, NULL, - (VOID **) &mHttpUtilities + (VOID **)&mHttpUtilities ); // // Close the event if Http utilities protocol is located. // - if (mHttpUtilities != NULL && Event != NULL) { - gBS->CloseEvent (Event); + if ((mHttpUtilities != NULL) && (Event != NULL)) { + gBS->CloseEvent (Event); } } @@ -178,13 +176,13 @@ HttpDxeDriverEntryPoint ( IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; - VOID *Registration; + EFI_STATUS Status; + VOID *Registration; gBS->LocateProtocol ( &gEfiHttpUtilitiesProtocolGuid, NULL, - (VOID **) &mHttpUtilities + (VOID **)&mHttpUtilities ); if (mHttpUtilities == NULL) { @@ -230,6 +228,7 @@ HttpDxeDriverEntryPoint ( &gHttpDxeComponentName2 ); } + return Status; } @@ -247,8 +246,8 @@ HttpDxeDriverEntryPoint ( EFI_STATUS EFIAPI HttpDestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { HTTP_PROTOCOL *HttpInstance; @@ -256,14 +255,14 @@ HttpDestroyChildEntryInHandleBuffer ( UINTN NumberOfChildren; EFI_HANDLE *ChildHandleBuffer; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - HttpInstance = NET_LIST_USER_STRUCT_S (Entry, HTTP_PROTOCOL, Link, HTTP_PROTOCOL_SIGNATURE); - ServiceBinding = ((HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; - NumberOfChildren = ((HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; - ChildHandleBuffer = ((HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; + HttpInstance = NET_LIST_USER_STRUCT_S (Entry, HTTP_PROTOCOL, Link, HTTP_PROTOCOL_SIGNATURE); + ServiceBinding = ((HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; + NumberOfChildren = ((HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; + ChildHandleBuffer = ((HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; if (!NetIsInHandleBuffer (HttpInstance->Handle, NumberOfChildren, ChildHandleBuffer)) { return EFI_SUCCESS; @@ -295,8 +294,8 @@ HttpDxeSupported ( IN UINT8 IpVersion ) { - EFI_STATUS Status; - EFI_GUID *TcpServiceBindingProtocolGuid; + EFI_STATUS Status; + EFI_GUID *TcpServiceBindingProtocolGuid; if (IpVersion == IP_VERSION_4) { TcpServiceBindingProtocolGuid = &gEfiTcp4ServiceBindingProtocolGuid; @@ -305,13 +304,13 @@ HttpDxeSupported ( } Status = gBS->OpenProtocol ( - ControllerHandle, - TcpServiceBindingProtocolGuid, - NULL, - This->DriverBindingHandle, - ControllerHandle, - EFI_OPEN_PROTOCOL_TEST_PROTOCOL - ); + ControllerHandle, + TcpServiceBindingProtocolGuid, + NULL, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_TEST_PROTOCOL + ); if (EFI_ERROR (Status)) { return EFI_UNSUPPORTED; @@ -345,11 +344,11 @@ HttpDxeStart ( IN UINT8 IpVersion ) { - EFI_STATUS Status; - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - HTTP_SERVICE *HttpService; - VOID *Interface; - BOOLEAN UsingIpv6; + EFI_STATUS Status; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + HTTP_SERVICE *HttpService; + VOID *Interface; + BOOLEAN UsingIpv6; UsingIpv6 = FALSE; @@ -359,7 +358,7 @@ HttpDxeStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiHttpServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -420,13 +419,11 @@ HttpDxeStart ( if (EFI_ERROR (Status)) { goto ON_ERROR; } - } else { return EFI_ALREADY_STARTED; } - } else { - UsingIpv6 = TRUE; + UsingIpv6 = TRUE; HttpService->Ip6DriverBindingHandle = This->DriverBindingHandle; if (HttpService->Tcp6ChildHandle == NULL) { @@ -456,11 +453,9 @@ HttpDxeStart ( if (EFI_ERROR (Status)) { goto ON_ERROR; } - } else { return EFI_ALREADY_STARTED; } - } return EFI_SUCCESS; @@ -469,14 +464,12 @@ ON_ERROR: if (HttpService != NULL) { HttpCleanService (HttpService, UsingIpv6); - if (HttpService->Tcp4ChildHandle == NULL && HttpService->Tcp6ChildHandle == NULL) { + if ((HttpService->Tcp4ChildHandle == NULL) && (HttpService->Tcp6ChildHandle == NULL)) { FreePool (HttpService); } } return Status; - - } /** @@ -505,13 +498,13 @@ HttpDxeStop ( IN UINT8 IpVersion ) { - EFI_HANDLE NicHandle; - EFI_STATUS Status; - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - HTTP_SERVICE *HttpService; - LIST_ENTRY *List; - HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; - BOOLEAN UsingIpv6; + EFI_HANDLE NicHandle; + EFI_STATUS Status; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + HTTP_SERVICE *HttpService; + LIST_ENTRY *List; + HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; + BOOLEAN UsingIpv6; // // HTTP driver opens TCP4(6) child, So, Controller is a TCP4(6) @@ -533,35 +526,33 @@ HttpDxeStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiHttpServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL ); if (!EFI_ERROR (Status)) { - HttpService = HTTP_SERVICE_FROM_PROTOCOL (ServiceBinding); if (NumberOfChildren != 0) { // // Destroy the HTTP child instance in ChildHandleBuffer. // - List = &HttpService->ChildrenList; + List = &HttpService->ChildrenList; Context.ServiceBinding = ServiceBinding; Context.NumberOfChildren = NumberOfChildren; Context.ChildHandleBuffer = ChildHandleBuffer; - Status = NetDestroyLinkList ( - List, - HttpDestroyChildEntryInHandleBuffer, - &Context, - NULL - ); + Status = NetDestroyLinkList ( + List, + HttpDestroyChildEntryInHandleBuffer, + &Context, + NULL + ); } else { - HttpCleanService (HttpService, UsingIpv6); - if (HttpService->Tcp4ChildHandle == NULL && HttpService->Tcp6ChildHandle == NULL) { + if ((HttpService->Tcp4ChildHandle == NULL) && (HttpService->Tcp6ChildHandle == NULL)) { gBS->UninstallProtocolInterface ( NicHandle, &gEfiHttpServiceBindingProtocolGuid, @@ -569,12 +560,12 @@ HttpDxeStop ( ); FreePool (HttpService); } + Status = EFI_SUCCESS; } } return Status; - } /** @@ -787,7 +778,6 @@ HttpDxeIp6DriverBindingSupported ( RemainingDevicePath, IP_VERSION_6 ); - } /** @@ -885,6 +875,7 @@ HttpDxeIp6DriverBindingStop ( IP_VERSION_6 ); } + /** Creates a child handle and installs a protocol. @@ -911,10 +902,10 @@ HttpServiceBindingCreateChild ( IN OUT EFI_HANDLE *ChildHandle ) { - HTTP_SERVICE *HttpService; - HTTP_PROTOCOL *HttpInstance; - EFI_STATUS Status; - EFI_TPL OldTpl; + HTTP_SERVICE *HttpService; + HTTP_PROTOCOL *HttpInstance; + EFI_STATUS Status; + EFI_TPL OldTpl; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -928,7 +919,7 @@ HttpServiceBindingCreateChild ( HttpInstance->Signature = HTTP_PROTOCOL_SIGNATURE; HttpInstance->Service = HttpService; - HttpInstance->Method = HttpMethodMax; + HttpInstance->Method = HttpMethodMax; CopyMem (&HttpInstance->Http, &mEfiHttpTemplate, sizeof (HttpInstance->Http)); NetMapInit (&HttpInstance->TxTokens); @@ -948,7 +939,7 @@ HttpServiceBindingCreateChild ( goto ON_ERROR; } - HttpInstance->Handle = *ChildHandle; + HttpInstance->Handle = *ChildHandle; // // Add it to the HTTP service's child list. @@ -994,25 +985,25 @@ HttpServiceBindingDestroyChild ( IN EFI_HANDLE ChildHandle ) { - HTTP_SERVICE *HttpService; - HTTP_PROTOCOL *HttpInstance; - EFI_HTTP_PROTOCOL *Http; - EFI_STATUS Status; - EFI_TPL OldTpl; + HTTP_SERVICE *HttpService; + HTTP_PROTOCOL *HttpInstance; + EFI_HTTP_PROTOCOL *Http; + EFI_STATUS Status; + EFI_TPL OldTpl; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; } HttpService = HTTP_SERVICE_FROM_PROTOCOL (This); - Status = gBS->OpenProtocol ( - ChildHandle, - &gEfiHttpProtocolGuid, - (VOID **) &Http, - NULL, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); + Status = gBS->OpenProtocol ( + ChildHandle, + &gEfiHttpProtocolGuid, + (VOID **)&Http, + NULL, + NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); if (EFI_ERROR (Status)) { return EFI_UNSUPPORTED; } diff --git a/NetworkPkg/HttpDxe/HttpDriver.h b/NetworkPkg/HttpDxe/HttpDriver.h index b701b80858..01a6bb7f4b 100644 --- a/NetworkPkg/HttpDxe/HttpDriver.h +++ b/NetworkPkg/HttpDxe/HttpDriver.h @@ -63,7 +63,7 @@ // // Driver Version // -#define HTTP_DRIVER_VERSION 0xa +#define HTTP_DRIVER_VERSION 0xa // // Protocol instances @@ -71,8 +71,8 @@ extern EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp4DriverBinding; extern EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp6DriverBinding; -extern EFI_COMPONENT_NAME2_PROTOCOL gHttpDxeComponentName2; -extern EFI_COMPONENT_NAME_PROTOCOL gHttpDxeComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gHttpDxeComponentName2; +extern EFI_COMPONENT_NAME_PROTOCOL gHttpDxeComponentName; extern EFI_HTTP_UTILITIES_PROTOCOL *mHttpUtilities; @@ -86,9 +86,9 @@ extern EFI_HTTP_UTILITIES_PROTOCOL *mHttpUtilities; #include "HttpDns.h" typedef struct { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - UINTN NumberOfChildren; - EFI_HANDLE *ChildHandleBuffer; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; } HTTP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; /** diff --git a/NetworkPkg/HttpDxe/HttpImpl.c b/NetworkPkg/HttpDxe/HttpImpl.c index 7024821515..d64cd9e965 100644 --- a/NetworkPkg/HttpDxe/HttpImpl.c +++ b/NetworkPkg/HttpDxe/HttpImpl.c @@ -45,11 +45,11 @@ EFI_HTTP_PROTOCOL mEfiHttpTemplate = { EFI_STATUS EFIAPI EfiHttpGetModeData ( - IN EFI_HTTP_PROTOCOL *This, - OUT EFI_HTTP_CONFIG_DATA *HttpConfigData + IN EFI_HTTP_PROTOCOL *This, + OUT EFI_HTTP_CONFIG_DATA *HttpConfigData ) { - HTTP_PROTOCOL *HttpInstance; + HTTP_PROTOCOL *HttpInstance; // // Check input parameters. @@ -61,7 +61,8 @@ EfiHttpGetModeData ( HttpInstance = HTTP_INSTANCE_FROM_PROTOCOL (This); if ((HttpConfigData->AccessPoint.IPv6Node == NULL) || - (HttpConfigData->AccessPoint.IPv4Node == NULL)) { + (HttpConfigData->AccessPoint.IPv4Node == NULL)) + { return EFI_INVALID_PARAMETER; } @@ -78,7 +79,7 @@ EfiHttpGetModeData ( HttpConfigData->AccessPoint.IPv6Node, &HttpInstance->Ipv6Node, sizeof (HttpInstance->Ipv6Node) - ); + ); } else { CopyMem ( HttpConfigData->AccessPoint.IPv4Node, @@ -124,20 +125,21 @@ EfiHttpGetModeData ( EFI_STATUS EFIAPI EfiHttpConfigure ( - IN EFI_HTTP_PROTOCOL *This, - IN EFI_HTTP_CONFIG_DATA *HttpConfigData OPTIONAL + IN EFI_HTTP_PROTOCOL *This, + IN EFI_HTTP_CONFIG_DATA *HttpConfigData OPTIONAL ) { - HTTP_PROTOCOL *HttpInstance; - EFI_STATUS Status; + HTTP_PROTOCOL *HttpInstance; + EFI_STATUS Status; // // Check input parameters. // - if (This == NULL || - (HttpConfigData != NULL && - ((HttpConfigData->LocalAddressIsIPv6 && HttpConfigData->AccessPoint.IPv6Node == NULL) || - (!HttpConfigData->LocalAddressIsIPv6 && HttpConfigData->AccessPoint.IPv4Node == NULL)))) { + if ((This == NULL) || + ((HttpConfigData != NULL) && + ((HttpConfigData->LocalAddressIsIPv6 && (HttpConfigData->AccessPoint.IPv6Node == NULL)) || + (!HttpConfigData->LocalAddressIsIPv6 && (HttpConfigData->AccessPoint.IPv4Node == NULL))))) + { return EFI_INVALID_PARAMETER; } @@ -145,7 +147,6 @@ EfiHttpConfigure ( ASSERT (HttpInstance->Service != NULL); if (HttpConfigData != NULL) { - if (HttpConfigData->HttpVersion >= HttpVersionUnsupported) { return EFI_UNSUPPORTED; } @@ -185,7 +186,6 @@ EfiHttpConfigure ( HttpInstance->State = HTTP_STATE_HTTP_CONFIGED; return EFI_SUCCESS; - } else { // // Reset all the resources related to HttpInstance. @@ -196,7 +196,6 @@ EfiHttpConfigure ( } } - /** The Request() function queues an HTTP request to this HTTP instance. @@ -226,41 +225,41 @@ EfiHttpConfigure ( EFI_STATUS EFIAPI EfiHttpRequest ( - IN EFI_HTTP_PROTOCOL *This, - IN EFI_HTTP_TOKEN *Token + IN EFI_HTTP_PROTOCOL *This, + IN EFI_HTTP_TOKEN *Token ) { - EFI_HTTP_MESSAGE *HttpMsg; - EFI_HTTP_REQUEST_DATA *Request; - VOID *UrlParser; - EFI_STATUS Status; - CHAR8 *HostName; - UINTN HostNameSize; - UINT16 RemotePort; - HTTP_PROTOCOL *HttpInstance; - BOOLEAN Configure; - BOOLEAN ReConfigure; - BOOLEAN TlsConfigure; - CHAR8 *RequestMsg; - CHAR8 *Url; - UINTN UrlLen; - CHAR16 *HostNameStr; - HTTP_TOKEN_WRAP *Wrap; - CHAR8 *FileUrl; - UINTN RequestMsgSize; - EFI_HANDLE ImageHandle; + EFI_HTTP_MESSAGE *HttpMsg; + EFI_HTTP_REQUEST_DATA *Request; + VOID *UrlParser; + EFI_STATUS Status; + CHAR8 *HostName; + UINTN HostNameSize; + UINT16 RemotePort; + HTTP_PROTOCOL *HttpInstance; + BOOLEAN Configure; + BOOLEAN ReConfigure; + BOOLEAN TlsConfigure; + CHAR8 *RequestMsg; + CHAR8 *Url; + UINTN UrlLen; + CHAR16 *HostNameStr; + HTTP_TOKEN_WRAP *Wrap; + CHAR8 *FileUrl; + UINTN RequestMsgSize; + EFI_HANDLE ImageHandle; // // Initializations // - Url = NULL; - UrlParser = NULL; - RemotePort = 0; - HostName = NULL; - RequestMsg = NULL; - HostNameStr = NULL; - Wrap = NULL; - FileUrl = NULL; + Url = NULL; + UrlParser = NULL; + RemotePort = 0; + HostName = NULL; + RequestMsg = NULL; + HostNameStr = NULL; + Wrap = NULL; + FileUrl = NULL; TlsConfigure = FALSE; if ((This == NULL) || (Token == NULL)) { @@ -280,7 +279,8 @@ EfiHttpRequest ( if ((Request != NULL) && (Request->Method != HttpMethodGet) && (Request->Method != HttpMethodHead) && (Request->Method != HttpMethodDelete) && (Request->Method != HttpMethodPut) && (Request->Method != HttpMethodPost) && - (Request->Method != HttpMethodPatch)) { + (Request->Method != HttpMethodPatch)) + { return EFI_UNSUPPORTED; } @@ -303,7 +303,8 @@ EfiHttpRequest ( // if ((HttpInstance->Method != HttpMethodPut) && (HttpInstance->Method != HttpMethodPost) && - (HttpInstance->Method != HttpMethodPatch)) { + (HttpInstance->Method != HttpMethodPatch)) + { return EFI_INVALID_PARAMETER; } @@ -317,7 +318,7 @@ EfiHttpRequest ( // // We need to have the Message Body for sending the HTTP message across in these cases. // - if (HttpMsg->Body == NULL || HttpMsg->BodyLength == 0) { + if ((HttpMsg->Body == NULL) || (HttpMsg->BodyLength == 0)) { return EFI_INVALID_PARAMETER; } @@ -337,18 +338,18 @@ EfiHttpRequest ( // // Parse the URI of the remote host. // - Url = HttpInstance->Url; + Url = HttpInstance->Url; UrlLen = StrLen (Request->Url) + 1; if (UrlLen > HTTP_URL_BUFFER_LEN) { Url = AllocateZeroPool (UrlLen); if (Url == NULL) { return EFI_OUT_OF_RESOURCES; } + FreePool (HttpInstance->Url); HttpInstance->Url = Url; } - UnicodeStrToAsciiStrS (Request->Url, Url, UrlLen); // @@ -361,7 +362,6 @@ EfiHttpRequest ( // HTTP is disabled, return directly if the URI is not HTTPS. // if (!PcdGetBool (PcdAllowHttpConnections) && !(HttpInstance->UseHttps)) { - DEBUG ((DEBUG_ERROR, "EfiHttpRequest: HTTP is disabled.\n")); return EFI_ACCESS_DENIED; @@ -370,7 +370,7 @@ EfiHttpRequest ( // // Check whether we need to create Tls child and open the TLS protocol. // - if (HttpInstance->UseHttps && HttpInstance->TlsChildHandle == NULL) { + if (HttpInstance->UseHttps && (HttpInstance->TlsChildHandle == NULL)) { // // Use TlsSb to create Tls child and open the TLS protocol. // @@ -394,7 +394,7 @@ EfiHttpRequest ( } UrlParser = NULL; - Status = HttpParseUrl (Url, (UINT32) AsciiStrLen (Url), FALSE, &UrlParser); + Status = HttpParseUrl (Url, (UINT32)AsciiStrLen (Url), FALSE, &UrlParser); if (EFI_ERROR (Status)) { goto Error1; } @@ -407,7 +407,7 @@ EfiHttpRequest ( if (HttpInstance->LocalAddressIsIPv6) { HostNameSize = AsciiStrSize (HostName); - if (HostNameSize > 2 && HostName[0] == '[' && HostName[HostNameSize - 2] == ']') { + if ((HostNameSize > 2) && (HostName[0] == '[') && (HostName[HostNameSize - 2] == ']')) { // // HostName format is expressed as IPv6, so, remove '[' and ']'. // @@ -425,6 +425,7 @@ EfiHttpRequest ( RemotePort = HTTP_DEFAULT_PORT; } } + // // If Configure is TRUE, it indicates the first time to call Request(); // If ReConfigure is TRUE, it indicates the request URL is not same @@ -443,7 +444,8 @@ EfiHttpRequest ( (AsciiStrCmp (HttpInstance->RemoteHost, HostName) == 0) && (!HttpInstance->UseHttps || (HttpInstance->UseHttps && !TlsConfigure && - HttpInstance->TlsSessionState == EfiTlsSessionDataTransferring))) { + (HttpInstance->TlsSessionState == EfiTlsSessionDataTransferring)))) + { // // Host Name and port number of the request URL are the same with previous call to Request(). // If Https protocol used, the corresponding SessionState is EfiTlsSessionDataTransferring. @@ -515,7 +517,7 @@ EfiHttpRequest ( if (EFI_ERROR (Status)) { HostNameSize = AsciiStrSize (HostName); - HostNameStr = AllocateZeroPool (HostNameSize * sizeof (CHAR16)); + HostNameStr = AllocateZeroPool (HostNameSize * sizeof (CHAR16)); if (HostNameStr == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Error1; @@ -527,6 +529,7 @@ EfiHttpRequest ( } else { Status = HttpDns6 (HttpInstance, HostNameStr, &HttpInstance->RemoteIpv6Addr); } + HttpNotify (HttpEventDns, Status); FreePool (HostNameStr); @@ -542,7 +545,7 @@ EfiHttpRequest ( ASSERT (HttpInstance->RemoteHost == NULL); HttpInstance->RemotePort = RemotePort; HttpInstance->RemoteHost = HostName; - HostName = NULL; + HostName = NULL; } if (ReConfigure) { @@ -577,8 +580,8 @@ EfiHttpRequest ( goto Error1; } - Wrap->HttpToken = Token; - Wrap->HttpInstance = HttpInstance; + Wrap->HttpToken = Token; + Wrap->HttpInstance = HttpInstance; if (Request != NULL) { Wrap->TcpWrap.Method = Request->Method; } @@ -608,13 +611,14 @@ EfiHttpRequest ( // Create request message. // FileUrl = Url; - if (Url != NULL && *FileUrl != '/') { + if ((Url != NULL) && (*FileUrl != '/')) { // // Convert the absolute-URI to the absolute-path // while (*FileUrl != ':') { FileUrl++; } + if ((*(FileUrl+1) == '/') && (*(FileUrl+2) == '/')) { FileUrl += 3; while (*FileUrl != '/') { @@ -628,7 +632,7 @@ EfiHttpRequest ( Status = HttpGenRequestMessage (HttpMsg, FileUrl, &RequestMsg, &RequestMsgSize); - if (EFI_ERROR (Status) || NULL == RequestMsg) { + if (EFI_ERROR (Status) || (NULL == RequestMsg)) { goto Error3; } @@ -651,7 +655,7 @@ EfiHttpRequest ( Status = HttpTransmitTcp ( HttpInstance, Wrap, - (UINT8*) RequestMsg, + (UINT8 *)RequestMsg, RequestMsgSize ); if (EFI_ERROR (Status)) { @@ -698,6 +702,7 @@ Error2: gBS->CloseEvent (Wrap->TcpWrap.Tx4Token.CompletionToken.Event); Wrap->TcpWrap.Tx4Token.CompletionToken.Event = NULL; } + if (NULL != Wrap->TcpWrap.Tx6Token.CompletionToken.Event) { gBS->CloseEvent (Wrap->TcpWrap.Tx6Token.CompletionToken.Event); Wrap->TcpWrap.Tx6Token.CompletionToken.Event = NULL; @@ -707,15 +712,16 @@ Error1: if (HostName != NULL) { FreePool (HostName); } + if (Wrap != NULL) { FreePool (Wrap); } + if (UrlParser != NULL) { HttpUrlFreeParser (UrlParser); } return Status; - } /** @@ -732,16 +738,16 @@ Error1: EFI_STATUS EFIAPI HttpCancelTokens ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { - EFI_HTTP_TOKEN *Token; - HTTP_TOKEN_WRAP *Wrap; - HTTP_PROTOCOL *HttpInstance; + EFI_HTTP_TOKEN *Token; + HTTP_TOKEN_WRAP *Wrap; + HTTP_PROTOCOL *HttpInstance; - Token = (EFI_HTTP_TOKEN *) Context; + Token = (EFI_HTTP_TOKEN *)Context; // // Return EFI_SUCCESS to check the next item in the map if @@ -751,7 +757,7 @@ HttpCancelTokens ( return EFI_SUCCESS; } - Wrap = (HTTP_TOKEN_WRAP *) Item->Value; + Wrap = (HTTP_TOKEN_WRAP *)Item->Value; ASSERT (Wrap != NULL); HttpInstance = Wrap->HttpInstance; @@ -808,11 +814,11 @@ HttpCancelTokens ( **/ EFI_STATUS HttpCancel ( - IN HTTP_PROTOCOL *HttpInstance, - IN EFI_HTTP_TOKEN *Token + IN HTTP_PROTOCOL *HttpInstance, + IN EFI_HTTP_TOKEN *Token ) { - EFI_STATUS Status; + EFI_STATUS Status; // // First check the tokens queued by EfiHttpRequest(). @@ -855,7 +861,6 @@ HttpCancel ( return EFI_SUCCESS; } - /** Abort an asynchronous HTTP request or response token. @@ -881,11 +886,11 @@ HttpCancel ( EFI_STATUS EFIAPI EfiHttpCancel ( - IN EFI_HTTP_PROTOCOL *This, - IN EFI_HTTP_TOKEN *Token + IN EFI_HTTP_PROTOCOL *This, + IN EFI_HTTP_TOKEN *Token ) { - HTTP_PROTOCOL *HttpInstance; + HTTP_PROTOCOL *HttpInstance; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -898,7 +903,6 @@ EfiHttpCancel ( } return HttpCancel (HttpInstance, Token); - } /** @@ -918,28 +922,28 @@ EfiHttpCancel ( EFI_STATUS EFIAPI HttpBodyParserCallback ( - IN HTTP_BODY_PARSE_EVENT EventType, - IN CHAR8 *Data, - IN UINTN Length, - IN VOID *Context + IN HTTP_BODY_PARSE_EVENT EventType, + IN CHAR8 *Data, + IN UINTN Length, + IN VOID *Context ) { - HTTP_CALLBACK_DATA *CallbackData; - HTTP_TOKEN_WRAP *Wrap; - UINTN BodyLength; - CHAR8 *Body; + HTTP_CALLBACK_DATA *CallbackData; + HTTP_TOKEN_WRAP *Wrap; + UINTN BodyLength; + CHAR8 *Body; if (EventType != BodyParseEventOnComplete) { return EFI_SUCCESS; } - if (Data == NULL || Length != 0 || Context == NULL) { + if ((Data == NULL) || (Length != 0) || (Context == NULL)) { return EFI_SUCCESS; } - CallbackData = (HTTP_CALLBACK_DATA *) Context; + CallbackData = (HTTP_CALLBACK_DATA *)Context; - Wrap = (HTTP_TOKEN_WRAP *) (CallbackData->Wrap); + Wrap = (HTTP_TOKEN_WRAP *)(CallbackData->Wrap); Body = CallbackData->ParseData; BodyLength = CallbackData->ParseDataLength; @@ -965,35 +969,35 @@ HttpBodyParserCallback ( **/ EFI_STATUS HttpResponseWorker ( - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_TOKEN_WRAP *Wrap ) { - EFI_STATUS Status; - EFI_HTTP_MESSAGE *HttpMsg; - CHAR8 *EndofHeader; - CHAR8 *HttpHeaders; - UINTN SizeofHeaders; - UINTN BufferSize; - UINTN StatusCode; - CHAR8 *Tmp; - CHAR8 *HeaderTmp; - CHAR8 *StatusCodeStr; - UINTN BodyLen; - HTTP_PROTOCOL *HttpInstance; - EFI_HTTP_TOKEN *Token; - NET_MAP_ITEM *Item; - HTTP_TOKEN_WRAP *ValueInItem; - UINTN HdrLen; - NET_FRAGMENT Fragment; - UINT32 TimeoutValue; - - if (Wrap == NULL || Wrap->HttpInstance == NULL) { + EFI_STATUS Status; + EFI_HTTP_MESSAGE *HttpMsg; + CHAR8 *EndofHeader; + CHAR8 *HttpHeaders; + UINTN SizeofHeaders; + UINTN BufferSize; + UINTN StatusCode; + CHAR8 *Tmp; + CHAR8 *HeaderTmp; + CHAR8 *StatusCodeStr; + UINTN BodyLen; + HTTP_PROTOCOL *HttpInstance; + EFI_HTTP_TOKEN *Token; + NET_MAP_ITEM *Item; + HTTP_TOKEN_WRAP *ValueInItem; + UINTN HdrLen; + NET_FRAGMENT Fragment; + UINT32 TimeoutValue; + + if ((Wrap == NULL) || (Wrap->HttpInstance == NULL)) { return EFI_INVALID_PARAMETER; } HttpInstance = Wrap->HttpInstance; - Token = Wrap->HttpToken; - HttpMsg = Token->Message; + Token = Wrap->HttpToken; + HttpMsg = Token->Message; HttpInstance->EndofHeader = NULL; HttpInstance->HttpHeaders = NULL; @@ -1014,7 +1018,7 @@ HttpResponseWorker ( // // The data is stored at [NextMsg, CacheBody + CacheLen]. // - HdrLen = HttpInstance->CacheBody + HttpInstance->CacheLen - HttpInstance->NextMsg; + HdrLen = HttpInstance->CacheBody + HttpInstance->CacheLen - HttpInstance->NextMsg; HttpHeaders = AllocateZeroPool (HdrLen); if (HttpHeaders == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1026,8 +1030,8 @@ HttpResponseWorker ( HttpInstance->CacheBody = NULL; HttpInstance->NextMsg = NULL; HttpInstance->CacheOffset = 0; - SizeofHeaders = HdrLen; - BufferSize = HttpInstance->CacheLen; + SizeofHeaders = HdrLen; + BufferSize = HttpInstance->CacheLen; // // Check whether we cached the whole HTTP headers. @@ -1038,7 +1042,6 @@ HttpResponseWorker ( HttpInstance->EndofHeader = &EndofHeader; HttpInstance->HttpHeaders = &HttpHeaders; - if (HttpInstance->TimeoutEvent == NULL) { // // Create TimeoutEvent for response @@ -1131,9 +1134,9 @@ HttpResponseWorker ( } HttpMsg->Data.Response->StatusCode = HttpMappingToStatusCode (StatusCode); - HttpInstance->StatusCode = StatusCode; + HttpInstance->StatusCode = StatusCode; - Status = EFI_NOT_READY; + Status = EFI_NOT_READY; ValueInItem = NULL; // @@ -1144,8 +1147,8 @@ HttpResponseWorker ( // Hence, check that case before doing a NetMapRemoveHead. // if (!NetMapIsEmpty (&HttpInstance->TxTokens)) { - NetMapRemoveHead (&HttpInstance->TxTokens, (VOID**) &ValueInItem); - if (ValueInItem == NULL) { + NetMapRemoveHead (&HttpInstance->TxTokens, (VOID **)&ValueInItem); + if (ValueInItem == NULL) { goto Error; } @@ -1193,7 +1196,6 @@ HttpResponseWorker ( FreePool (HttpHeaders); HttpHeaders = NULL; - // // Init message-body parser by header information. // @@ -1203,7 +1205,7 @@ HttpResponseWorker ( HttpMsg->HeaderCount, HttpMsg->Headers, HttpBodyParserCallback, - (VOID *) (&HttpInstance->CallbackData), + (VOID *)(&HttpInstance->CallbackData), &HttpInstance->MsgParser ); if (EFI_ERROR (Status)) { @@ -1217,8 +1219,8 @@ HttpResponseWorker ( // // Record the CallbackData data. // - HttpInstance->CallbackData.Wrap = (VOID *) Wrap; - HttpInstance->CallbackData.ParseData = (VOID *) HttpInstance->CacheBody; + HttpInstance->CallbackData.Wrap = (VOID *)Wrap; + HttpInstance->CallbackData.ParseData = (VOID *)HttpInstance->CacheBody; HttpInstance->CallbackData.ParseDataLength = HttpInstance->CacheLen; // @@ -1279,7 +1281,7 @@ HttpResponseWorker ( // CopyMem (HttpMsg->Body, HttpInstance->CacheBody + HttpInstance->CacheOffset, BodyLen); HttpInstance->CacheOffset = BodyLen + HttpInstance->CacheOffset; - HttpMsg->BodyLength = BodyLen; + HttpMsg->BodyLength = BodyLen; if (HttpInstance->NextMsg == NULL) { // @@ -1291,6 +1293,7 @@ HttpResponseWorker ( HttpInstance->CacheOffset = 0; } } + // // Return since we already received required data. // @@ -1298,12 +1301,12 @@ HttpResponseWorker ( goto Exit; } - if (BodyLen == 0 && HttpInstance->MsgParser == NULL) { + if ((BodyLen == 0) && (HttpInstance->MsgParser == NULL)) { // // We received a complete HTTP message, and we don't have more data to return to caller. // HttpMsg->BodyLength = 0; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; goto Exit; } } @@ -1319,7 +1322,6 @@ HttpResponseWorker ( if (EFI_ERROR (Status)) { goto Error2; } - } else { if (HttpInstance->TimeoutEvent == NULL) { // @@ -1361,15 +1363,15 @@ HttpResponseWorker ( // // Process the received the body packet. // - HttpMsg->BodyLength = MIN ((UINTN) Fragment.Len, HttpMsg->BodyLength); + HttpMsg->BodyLength = MIN ((UINTN)Fragment.Len, HttpMsg->BodyLength); CopyMem (HttpMsg->Body, Fragment.Bulk, HttpMsg->BodyLength); // // Record the CallbackData data. // - HttpInstance->CallbackData.Wrap = (VOID *) Wrap; - HttpInstance->CallbackData.ParseData = HttpMsg->Body; + HttpInstance->CallbackData.Wrap = (VOID *)Wrap; + HttpInstance->CallbackData.ParseData = HttpMsg->Body; HttpInstance->CallbackData.ParseDataLength = HttpMsg->BodyLength; // @@ -1396,7 +1398,7 @@ HttpResponseWorker ( // Check whether there is the next message header in the HttpMsg->Body. // if (HttpInstance->NextMsg != NULL) { - HttpMsg->BodyLength = HttpInstance->NextMsg - (CHAR8 *) HttpMsg->Body; + HttpMsg->BodyLength = HttpInstance->NextMsg - (CHAR8 *)HttpMsg->Body; } HttpInstance->CacheLen = Fragment.Len - HttpMsg->BodyLength; @@ -1491,10 +1493,8 @@ Error: gBS->SignalEvent (Token->Event); return Status; - } - /** The Response() function queues an HTTP response to this HTTP instance, similar to Receive() function in the EFI TCP driver. When the HTTP response is received successfully, @@ -1545,14 +1545,14 @@ Error: EFI_STATUS EFIAPI EfiHttpResponse ( - IN EFI_HTTP_PROTOCOL *This, - IN EFI_HTTP_TOKEN *Token + IN EFI_HTTP_PROTOCOL *This, + IN EFI_HTTP_TOKEN *Token ) { - EFI_STATUS Status; - EFI_HTTP_MESSAGE *HttpMsg; - HTTP_PROTOCOL *HttpInstance; - HTTP_TOKEN_WRAP *Wrap; + EFI_STATUS Status; + EFI_HTTP_MESSAGE *HttpMsg; + HTTP_PROTOCOL *HttpInstance; + HTTP_TOKEN_WRAP *Wrap; if ((This == NULL) || (Token == NULL)) { return EFI_INVALID_PARAMETER; @@ -1619,6 +1619,7 @@ Error: if (Wrap->TcpWrap.Rx6Token.CompletionToken.Event != NULL) { gBS->CloseEvent (Wrap->TcpWrap.Rx6Token.CompletionToken.Event); } + FreePool (Wrap); } @@ -1648,11 +1649,11 @@ Error: EFI_STATUS EFIAPI EfiHttpPoll ( - IN EFI_HTTP_PROTOCOL *This + IN EFI_HTTP_PROTOCOL *This ) { - EFI_STATUS Status; - HTTP_PROTOCOL *HttpInstance; + EFI_STATUS Status; + HTTP_PROTOCOL *HttpInstance; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -1668,11 +1669,13 @@ EfiHttpPoll ( if (HttpInstance->Tcp6 == NULL) { return EFI_NOT_STARTED; } + Status = HttpInstance->Tcp6->Poll (HttpInstance->Tcp6); } else { if (HttpInstance->Tcp4 == NULL) { return EFI_NOT_STARTED; } + Status = HttpInstance->Tcp4->Poll (HttpInstance->Tcp4); } diff --git a/NetworkPkg/HttpDxe/HttpImpl.h b/NetworkPkg/HttpDxe/HttpImpl.h index ec6992f4ae..61fe2aaa15 100644 --- a/NetworkPkg/HttpDxe/HttpImpl.h +++ b/NetworkPkg/HttpDxe/HttpImpl.h @@ -11,13 +11,12 @@ #ifndef __EFI_HTTP_IMPL_H__ #define __EFI_HTTP_IMPL_H__ -#define HTTP_DEFAULT_PORT 80 -#define HTTP_END_OF_HDR_STR "\r\n\r\n" -#define HTTP_CRLF_STR "\r\n" -#define HTTP_VERSION_STR HTTP_VERSION -#define HTTP_VERSION_CRLF_STR " HTTP/1.1\r\n" -#define HTTP_ERROR_OR_NOT_SUPPORT_STATUS_CODE 300 - +#define HTTP_DEFAULT_PORT 80 +#define HTTP_END_OF_HDR_STR "\r\n\r\n" +#define HTTP_CRLF_STR "\r\n" +#define HTTP_VERSION_STR HTTP_VERSION +#define HTTP_VERSION_CRLF_STR " HTTP/1.1\r\n" +#define HTTP_ERROR_OR_NOT_SUPPORT_STATUS_CODE 300 /** Returns the operational parameters for the current HTTP child instance. @@ -45,8 +44,8 @@ EFI_STATUS EFIAPI EfiHttpGetModeData ( - IN EFI_HTTP_PROTOCOL *This, - OUT EFI_HTTP_CONFIG_DATA *HttpConfigData + IN EFI_HTTP_PROTOCOL *This, + OUT EFI_HTTP_CONFIG_DATA *HttpConfigData ); /** @@ -83,8 +82,8 @@ EfiHttpGetModeData ( EFI_STATUS EFIAPI EfiHttpConfigure ( - IN EFI_HTTP_PROTOCOL *This, - IN EFI_HTTP_CONFIG_DATA *HttpConfigData + IN EFI_HTTP_PROTOCOL *This, + IN EFI_HTTP_CONFIG_DATA *HttpConfigData ); /** @@ -116,8 +115,8 @@ EfiHttpConfigure ( EFI_STATUS EFIAPI EfiHttpRequest ( - IN EFI_HTTP_PROTOCOL *This, - IN EFI_HTTP_TOKEN *Token + IN EFI_HTTP_PROTOCOL *This, + IN EFI_HTTP_TOKEN *Token ); /** @@ -144,8 +143,8 @@ EfiHttpRequest ( EFI_STATUS EFIAPI EfiHttpCancel ( - IN EFI_HTTP_PROTOCOL *This, - IN EFI_HTTP_TOKEN *Token + IN EFI_HTTP_PROTOCOL *This, + IN EFI_HTTP_TOKEN *Token ); /** @@ -198,8 +197,8 @@ EfiHttpCancel ( EFI_STATUS EFIAPI EfiHttpResponse ( - IN EFI_HTTP_PROTOCOL *This, - IN EFI_HTTP_TOKEN *Token + IN EFI_HTTP_PROTOCOL *This, + IN EFI_HTTP_TOKEN *Token ); /** @@ -225,7 +224,7 @@ EfiHttpResponse ( EFI_STATUS EFIAPI EfiHttpPoll ( - IN EFI_HTTP_PROTOCOL *This + IN EFI_HTTP_PROTOCOL *This ); extern EFI_HTTP_PROTOCOL mEfiHttpTemplate; diff --git a/NetworkPkg/HttpDxe/HttpProto.c b/NetworkPkg/HttpDxe/HttpProto.c index 227c093f20..9457dd2623 100644 --- a/NetworkPkg/HttpDxe/HttpProto.c +++ b/NetworkPkg/HttpDxe/HttpProto.c @@ -24,10 +24,10 @@ HttpCommonNotify ( ) { if ((Event == NULL) || (Context == NULL)) { - return ; + return; } - *((BOOLEAN *) Context) = TRUE; + *((BOOLEAN *)Context) = TRUE; } /** @@ -39,34 +39,33 @@ HttpCommonNotify ( VOID EFIAPI HttpTcpTransmitNotifyDpc ( - IN VOID *Context + IN VOID *Context ) { - HTTP_TOKEN_WRAP *Wrap; - HTTP_PROTOCOL *HttpInstance; + HTTP_TOKEN_WRAP *Wrap; + HTTP_PROTOCOL *HttpInstance; if (Context == NULL) { - return ; + return; } - Wrap = (HTTP_TOKEN_WRAP *) Context; + Wrap = (HTTP_TOKEN_WRAP *)Context; HttpInstance = Wrap->HttpInstance; if (!HttpInstance->LocalAddressIsIPv6) { - Wrap->HttpToken->Status = Wrap->TcpWrap.Tx4Token.CompletionToken.Status; - gBS->SignalEvent (Wrap->HttpToken->Event); - - // - // Free resources. - // - if (Wrap->TcpWrap.Tx4Token.Packet.TxData->FragmentTable[0].FragmentBuffer != NULL) { - FreePool (Wrap->TcpWrap.Tx4Token.Packet.TxData->FragmentTable[0].FragmentBuffer); - } + Wrap->HttpToken->Status = Wrap->TcpWrap.Tx4Token.CompletionToken.Status; + gBS->SignalEvent (Wrap->HttpToken->Event); - if (Wrap->TcpWrap.Tx4Token.CompletionToken.Event != NULL) { - gBS->CloseEvent (Wrap->TcpWrap.Tx4Token.CompletionToken.Event); - } + // + // Free resources. + // + if (Wrap->TcpWrap.Tx4Token.Packet.TxData->FragmentTable[0].FragmentBuffer != NULL) { + FreePool (Wrap->TcpWrap.Tx4Token.Packet.TxData->FragmentTable[0].FragmentBuffer); + } + if (Wrap->TcpWrap.Tx4Token.CompletionToken.Event != NULL) { + gBS->CloseEvent (Wrap->TcpWrap.Tx4Token.CompletionToken.Event); + } } else { Wrap->HttpToken->Status = Wrap->TcpWrap.Tx6Token.CompletionToken.Status; gBS->SignalEvent (Wrap->HttpToken->Event); @@ -83,14 +82,12 @@ HttpTcpTransmitNotifyDpc ( } } - Wrap->TcpWrap.IsTxDone = TRUE; // // Check pending TxTokens and sent out. // NetMapIterate (&Wrap->HttpInstance->TxTokens, HttpTcpTransmit, NULL); - } /** @@ -103,8 +100,8 @@ HttpTcpTransmitNotifyDpc ( VOID EFIAPI HttpTcpTransmitNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -122,21 +119,21 @@ HttpTcpTransmitNotify ( VOID EFIAPI HttpTcpReceiveNotifyDpc ( - IN VOID *Context + IN VOID *Context ) { - HTTP_TOKEN_WRAP *Wrap; - NET_MAP_ITEM *Item; - UINTN Length; - EFI_STATUS Status; - HTTP_PROTOCOL *HttpInstance; - BOOLEAN UsingIpv6; + HTTP_TOKEN_WRAP *Wrap; + NET_MAP_ITEM *Item; + UINTN Length; + EFI_STATUS Status; + HTTP_PROTOCOL *HttpInstance; + BOOLEAN UsingIpv6; if (Context == NULL) { - return ; + return; } - Wrap = (HTTP_TOKEN_WRAP *) Context; + Wrap = (HTTP_TOKEN_WRAP *)Context; HttpInstance = Wrap->HttpInstance; UsingIpv6 = HttpInstance->LocalAddressIsIPv6; @@ -157,9 +154,8 @@ HttpTcpReceiveNotifyDpc ( FreePool (Wrap); Wrap = NULL; - return ; + return; } - } else { gBS->CloseEvent (Wrap->TcpWrap.Rx4Token.CompletionToken.Event); Wrap->TcpWrap.Rx4Token.CompletionToken.Event = NULL; @@ -177,7 +173,7 @@ HttpTcpReceiveNotifyDpc ( FreePool (Wrap); Wrap = NULL; - return ; + return; } } @@ -186,16 +182,16 @@ HttpTcpReceiveNotifyDpc ( // ASSERT (HttpInstance->MsgParser != NULL); if (UsingIpv6) { - Length = (UINTN) Wrap->TcpWrap.Rx6Data.FragmentTable[0].FragmentLength; + Length = (UINTN)Wrap->TcpWrap.Rx6Data.FragmentTable[0].FragmentLength; } else { - Length = (UINTN) Wrap->TcpWrap.Rx4Data.FragmentTable[0].FragmentLength; + Length = (UINTN)Wrap->TcpWrap.Rx4Data.FragmentTable[0].FragmentLength; } // // Record the CallbackData data. // - HttpInstance->CallbackData.Wrap = (VOID *) Wrap; - HttpInstance->CallbackData.ParseData = Wrap->HttpToken->Message->Body; + HttpInstance->CallbackData.Wrap = (VOID *)Wrap; + HttpInstance->CallbackData.ParseData = Wrap->HttpToken->Message->Body; HttpInstance->CallbackData.ParseDataLength = Length; // @@ -207,7 +203,7 @@ HttpTcpReceiveNotifyDpc ( Wrap->HttpToken->Message->Body ); if (EFI_ERROR (Status)) { - return ; + return; } if (HttpIsMessageComplete (HttpInstance->MsgParser)) { @@ -225,15 +221,16 @@ HttpTcpReceiveNotifyDpc ( // if (HttpInstance->NextMsg != NULL) { Wrap->HttpToken->Message->BodyLength = HttpInstance->NextMsg - - (CHAR8 *) Wrap->HttpToken->Message->Body; + (CHAR8 *)Wrap->HttpToken->Message->Body; HttpInstance->CacheLen = Length - Wrap->HttpToken->Message->BodyLength; if (HttpInstance->CacheLen != 0) { HttpInstance->CacheBody = AllocateZeroPool (HttpInstance->CacheLen); if (HttpInstance->CacheBody == NULL) { - return ; + return; } + CopyMem (HttpInstance->CacheBody, HttpInstance->NextMsg, HttpInstance->CacheLen); - HttpInstance->NextMsg = HttpInstance->CacheBody; + HttpInstance->NextMsg = HttpInstance->CacheBody; HttpInstance->CacheOffset = 0; } } @@ -243,7 +240,6 @@ HttpTcpReceiveNotifyDpc ( NetMapRemoveItem (&Wrap->HttpInstance->RxTokens, Item, NULL); } - Wrap->TcpWrap.IsRxDone = TRUE; if (UsingIpv6) { Wrap->HttpToken->Status = Wrap->TcpWrap.Rx6Token.CompletionToken.Status; @@ -251,7 +247,6 @@ HttpTcpReceiveNotifyDpc ( Wrap->HttpToken->Status = Wrap->TcpWrap.Rx4Token.CompletionToken.Status; } - gBS->SignalEvent (Wrap->HttpToken->Event); // @@ -273,8 +268,8 @@ HttpTcpReceiveNotifyDpc ( VOID EFIAPI HttpTcpReceiveNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -294,10 +289,10 @@ HttpTcpReceiveNotify ( **/ EFI_STATUS HttpCreateTcpConnCloseEvent ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; + EFI_STATUS Status; if (!HttpInstance->LocalAddressIsIPv6) { // @@ -327,7 +322,6 @@ HttpCreateTcpConnCloseEvent ( if (EFI_ERROR (Status)) { goto ERROR; } - } else { // // Create events for various asynchronous operations. @@ -369,7 +363,6 @@ ERROR: return Status; } - /** Close events in the TCP connection token and TCP close token. @@ -378,7 +371,7 @@ ERROR: **/ VOID HttpCloseTcpConnCloseEvent ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { ASSERT (HttpInstance != NULL); @@ -390,10 +383,9 @@ HttpCloseTcpConnCloseEvent ( } if (NULL != HttpInstance->Tcp6CloseToken.CompletionToken.Event) { - gBS->CloseEvent(HttpInstance->Tcp6CloseToken.CompletionToken.Event); + gBS->CloseEvent (HttpInstance->Tcp6CloseToken.CompletionToken.Event); HttpInstance->Tcp6CloseToken.CompletionToken.Event = NULL; } - } else { if (NULL != HttpInstance->Tcp4ConnToken.CompletionToken.Event) { gBS->CloseEvent (HttpInstance->Tcp4ConnToken.CompletionToken.Event); @@ -401,11 +393,10 @@ HttpCloseTcpConnCloseEvent ( } if (NULL != HttpInstance->Tcp4CloseToken.CompletionToken.Event) { - gBS->CloseEvent(HttpInstance->Tcp4CloseToken.CompletionToken.Event); + gBS->CloseEvent (HttpInstance->Tcp4CloseToken.CompletionToken.Event); HttpInstance->Tcp4CloseToken.CompletionToken.Event = NULL; } } - } /** @@ -419,12 +410,12 @@ HttpCloseTcpConnCloseEvent ( **/ EFI_STATUS HttpCreateTcpTxEvent ( - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_TOKEN_WRAP *Wrap ) { - EFI_STATUS Status; - HTTP_PROTOCOL *HttpInstance; - HTTP_TCP_TOKEN_WRAP *TcpWrap; + EFI_STATUS Status; + HTTP_PROTOCOL *HttpInstance; + HTTP_TCP_TOKEN_WRAP *TcpWrap; HttpInstance = Wrap->HttpInstance; TcpWrap = &Wrap->TcpWrap; @@ -441,12 +432,11 @@ HttpCreateTcpTxEvent ( return Status; } - TcpWrap->Tx4Data.Push = TRUE; - TcpWrap->Tx4Data.Urgent = FALSE; - TcpWrap->Tx4Data.FragmentCount = 1; - TcpWrap->Tx4Token.Packet.TxData = &Wrap->TcpWrap.Tx4Data; + TcpWrap->Tx4Data.Push = TRUE; + TcpWrap->Tx4Data.Urgent = FALSE; + TcpWrap->Tx4Data.FragmentCount = 1; + TcpWrap->Tx4Token.Packet.TxData = &Wrap->TcpWrap.Tx4Data; TcpWrap->Tx4Token.CompletionToken.Status = EFI_NOT_READY; - } else { Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, @@ -459,12 +449,11 @@ HttpCreateTcpTxEvent ( return Status; } - TcpWrap->Tx6Data.Push = TRUE; - TcpWrap->Tx6Data.Urgent = FALSE; - TcpWrap->Tx6Data.FragmentCount = 1; - TcpWrap->Tx6Token.Packet.TxData = &Wrap->TcpWrap.Tx6Data; - TcpWrap->Tx6Token.CompletionToken.Status =EFI_NOT_READY; - + TcpWrap->Tx6Data.Push = TRUE; + TcpWrap->Tx6Data.Urgent = FALSE; + TcpWrap->Tx6Data.FragmentCount = 1; + TcpWrap->Tx6Token.Packet.TxData = &Wrap->TcpWrap.Tx6Data; + TcpWrap->Tx6Token.CompletionToken.Status = EFI_NOT_READY; } return EFI_SUCCESS; @@ -481,10 +470,10 @@ HttpCreateTcpTxEvent ( **/ EFI_STATUS HttpCreateTcpRxEventForHeader ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; + EFI_STATUS Status; if (!HttpInstance->LocalAddressIsIPv6) { Status = gBS->CreateEvent ( @@ -498,10 +487,9 @@ HttpCreateTcpRxEventForHeader ( return Status; } - HttpInstance->Rx4Data.FragmentCount = 1; - HttpInstance->Rx4Token.Packet.RxData = &HttpInstance->Rx4Data; + HttpInstance->Rx4Data.FragmentCount = 1; + HttpInstance->Rx4Token.Packet.RxData = &HttpInstance->Rx4Data; HttpInstance->Rx4Token.CompletionToken.Status = EFI_NOT_READY; - } else { Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, @@ -514,13 +502,11 @@ HttpCreateTcpRxEventForHeader ( return Status; } - HttpInstance->Rx6Data.FragmentCount =1; - HttpInstance->Rx6Token.Packet.RxData = &HttpInstance->Rx6Data; + HttpInstance->Rx6Data.FragmentCount = 1; + HttpInstance->Rx6Token.Packet.RxData = &HttpInstance->Rx6Data; HttpInstance->Rx6Token.CompletionToken.Status = EFI_NOT_READY; - } - return EFI_SUCCESS; } @@ -535,12 +521,12 @@ HttpCreateTcpRxEventForHeader ( **/ EFI_STATUS HttpCreateTcpRxEvent ( - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_TOKEN_WRAP *Wrap ) { - EFI_STATUS Status; - HTTP_PROTOCOL *HttpInstance; - HTTP_TCP_TOKEN_WRAP *TcpWrap; + EFI_STATUS Status; + HTTP_PROTOCOL *HttpInstance; + HTTP_TCP_TOKEN_WRAP *TcpWrap; HttpInstance = Wrap->HttpInstance; TcpWrap = &Wrap->TcpWrap; @@ -556,10 +542,9 @@ HttpCreateTcpRxEvent ( return Status; } - TcpWrap->Rx4Data.FragmentCount = 1; - TcpWrap->Rx4Token.Packet.RxData = &Wrap->TcpWrap.Rx4Data; + TcpWrap->Rx4Data.FragmentCount = 1; + TcpWrap->Rx4Token.Packet.RxData = &Wrap->TcpWrap.Rx4Data; TcpWrap->Rx4Token.CompletionToken.Status = EFI_NOT_READY; - } else { Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, @@ -572,8 +557,8 @@ HttpCreateTcpRxEvent ( return Status; } - TcpWrap->Rx6Data.FragmentCount = 1; - TcpWrap->Rx6Token.Packet.RxData = &Wrap->TcpWrap.Rx6Data; + TcpWrap->Rx6Data.FragmentCount = 1; + TcpWrap->Rx6Token.Packet.RxData = &Wrap->TcpWrap.Rx6Data; TcpWrap->Rx6Token.CompletionToken.Status = EFI_NOT_READY; } @@ -588,13 +573,13 @@ HttpCreateTcpRxEvent ( **/ VOID HttpCloseTcpRxEvent ( - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_TOKEN_WRAP *Wrap ) { - HTTP_PROTOCOL *HttpInstance; + HTTP_PROTOCOL *HttpInstance; ASSERT (Wrap != NULL); - HttpInstance = Wrap->HttpInstance; + HttpInstance = Wrap->HttpInstance; if (HttpInstance->LocalAddressIsIPv6) { if (Wrap->TcpWrap.Rx6Token.CompletionToken.Event != NULL) { @@ -629,13 +614,13 @@ HttpCloseTcpRxEvent ( **/ EFI_STATUS HttpInitProtocol ( - IN OUT HTTP_PROTOCOL *HttpInstance, - IN BOOLEAN IpVersion + IN OUT HTTP_PROTOCOL *HttpInstance, + IN BOOLEAN IpVersion ) { - EFI_STATUS Status; - VOID *Interface; - BOOLEAN UsingIpv6; + EFI_STATUS Status; + VOID *Interface; + BOOLEAN UsingIpv6; ASSERT (HttpInstance != NULL); UsingIpv6 = IpVersion; @@ -658,7 +643,7 @@ HttpInitProtocol ( Status = gBS->OpenProtocol ( HttpInstance->Tcp4ChildHandle, &gEfiTcp4ProtocolGuid, - (VOID **) &Interface, + (VOID **)&Interface, HttpInstance->Service->Ip4DriverBindingHandle, HttpInstance->Service->ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -671,24 +656,24 @@ HttpInitProtocol ( Status = gBS->OpenProtocol ( HttpInstance->Tcp4ChildHandle, &gEfiTcp4ProtocolGuid, - (VOID **) &HttpInstance->Tcp4, + (VOID **)&HttpInstance->Tcp4, HttpInstance->Service->Ip4DriverBindingHandle, HttpInstance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { goto ON_ERROR; } Status = gBS->OpenProtocol ( HttpInstance->Service->Tcp4ChildHandle, &gEfiTcp4ProtocolGuid, - (VOID **) &Interface, + (VOID **)&Interface, HttpInstance->Service->Ip4DriverBindingHandle, HttpInstance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { goto ON_ERROR; } } else { @@ -709,7 +694,7 @@ HttpInitProtocol ( Status = gBS->OpenProtocol ( HttpInstance->Tcp6ChildHandle, &gEfiTcp6ProtocolGuid, - (VOID **) &Interface, + (VOID **)&Interface, HttpInstance->Service->Ip6DriverBindingHandle, HttpInstance->Service->ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -722,26 +707,26 @@ HttpInitProtocol ( Status = gBS->OpenProtocol ( HttpInstance->Tcp6ChildHandle, &gEfiTcp6ProtocolGuid, - (VOID **) &HttpInstance->Tcp6, + (VOID **)&HttpInstance->Tcp6, HttpInstance->Service->Ip6DriverBindingHandle, HttpInstance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { goto ON_ERROR; } Status = gBS->OpenProtocol ( HttpInstance->Service->Tcp6ChildHandle, &gEfiTcp6ProtocolGuid, - (VOID **) &Interface, + (VOID **)&Interface, HttpInstance->Service->Ip6DriverBindingHandle, HttpInstance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { goto ON_ERROR; } } @@ -821,7 +806,6 @@ ON_ERROR: } return EFI_UNSUPPORTED; - } /** @@ -832,7 +816,7 @@ ON_ERROR: **/ VOID HttpCleanProtocol ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { HttpCloseConnection (HttpInstance); @@ -868,7 +852,7 @@ HttpCleanProtocol ( NetMapClean (&HttpInstance->TxTokens); NetMapClean (&HttpInstance->RxTokens); - if (HttpInstance->TlsSb != NULL && HttpInstance->TlsChildHandle != NULL) { + if ((HttpInstance->TlsSb != NULL) && (HttpInstance->TlsChildHandle != NULL)) { // // Destroy the TLS instance. // @@ -954,18 +938,18 @@ HttpCleanProtocol ( **/ EFI_STATUS HttpCreateConnection ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; + EFI_STATUS Status; // // Connect to Http server // if (!HttpInstance->LocalAddressIsIPv6) { - HttpInstance->IsTcp4ConnDone = FALSE; + HttpInstance->IsTcp4ConnDone = FALSE; HttpInstance->Tcp4ConnToken.CompletionToken.Status = EFI_NOT_READY; - Status = HttpInstance->Tcp4->Connect (HttpInstance->Tcp4, &HttpInstance->Tcp4ConnToken); + Status = HttpInstance->Tcp4->Connect (HttpInstance->Tcp4, &HttpInstance->Tcp4ConnToken); HttpNotify (HttpEventConnectTcp, Status); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "HttpCreateConnection: Tcp4->Connect() = %r\n", Status)); @@ -977,18 +961,17 @@ HttpCreateConnection ( } Status = HttpInstance->Tcp4ConnToken.CompletionToken.Status; - } else { - HttpInstance->IsTcp6ConnDone = FALSE; + HttpInstance->IsTcp6ConnDone = FALSE; HttpInstance->Tcp6ConnToken.CompletionToken.Status = EFI_NOT_READY; - Status = HttpInstance->Tcp6->Connect (HttpInstance->Tcp6, &HttpInstance->Tcp6ConnToken); + Status = HttpInstance->Tcp6->Connect (HttpInstance->Tcp6, &HttpInstance->Tcp6ConnToken); HttpNotify (HttpEventConnectTcp, Status); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "HttpCreateConnection: Tcp6->Connect() = %r\n", Status)); return Status; } - while(!HttpInstance->IsTcp6ConnDone) { + while (!HttpInstance->IsTcp6ConnDone) { HttpInstance->Tcp6->Poll (HttpInstance->Tcp6); } @@ -1013,17 +996,16 @@ HttpCreateConnection ( **/ EFI_STATUS HttpCloseConnection ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; + EFI_STATUS Status; if (HttpInstance->State == HTTP_STATE_TCP_CONNECTED) { - if (HttpInstance->LocalAddressIsIPv6) { HttpInstance->Tcp6CloseToken.AbortOnClose = TRUE; HttpInstance->IsTcp6CloseDone = FALSE; - Status = HttpInstance->Tcp6->Close (HttpInstance->Tcp6, &HttpInstance->Tcp6CloseToken); + Status = HttpInstance->Tcp6->Close (HttpInstance->Tcp6, &HttpInstance->Tcp6CloseToken); if (EFI_ERROR (Status)) { return Status; } @@ -1031,11 +1013,10 @@ HttpCloseConnection ( while (!HttpInstance->IsTcp6CloseDone) { HttpInstance->Tcp6->Poll (HttpInstance->Tcp6); } - } else { HttpInstance->Tcp4CloseToken.AbortOnClose = TRUE; HttpInstance->IsTcp4CloseDone = FALSE; - Status = HttpInstance->Tcp4->Close (HttpInstance->Tcp4, &HttpInstance->Tcp4CloseToken); + Status = HttpInstance->Tcp4->Close (HttpInstance->Tcp4, &HttpInstance->Tcp4CloseToken); if (EFI_ERROR (Status)) { return Status; } @@ -1044,7 +1025,6 @@ HttpCloseConnection ( HttpInstance->Tcp4->Poll (HttpInstance->Tcp4); } } - } HttpInstance->State = HTTP_STATE_TCP_CLOSED; @@ -1063,18 +1043,17 @@ HttpCloseConnection ( **/ EFI_STATUS HttpConfigureTcp4 ( - IN HTTP_PROTOCOL *HttpInstance, - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_PROTOCOL *HttpInstance, + IN HTTP_TOKEN_WRAP *Wrap ) { - EFI_STATUS Status; - EFI_TCP4_CONFIG_DATA *Tcp4CfgData; - EFI_TCP4_ACCESS_POINT *Tcp4AP; - EFI_TCP4_OPTION *Tcp4Option; + EFI_STATUS Status; + EFI_TCP4_CONFIG_DATA *Tcp4CfgData; + EFI_TCP4_ACCESS_POINT *Tcp4AP; + EFI_TCP4_OPTION *Tcp4Option; ASSERT (HttpInstance != NULL); - Tcp4CfgData = &HttpInstance->Tcp4CfgData; ZeroMem (Tcp4CfgData, sizeof (EFI_TCP4_CONFIG_DATA)); @@ -1082,7 +1061,7 @@ HttpConfigureTcp4 ( Tcp4CfgData->TimeToLive = HTTP_TTL_DEAULT; Tcp4CfgData->ControlOption = &HttpInstance->Tcp4Option; - Tcp4AP = &Tcp4CfgData->AccessPoint; + Tcp4AP = &Tcp4CfgData->AccessPoint; Tcp4AP->UseDefaultAddress = HttpInstance->IPv4Node.UseDefaultAddress; if (!Tcp4AP->UseDefaultAddress) { IP4_COPY_ADDRESS (&Tcp4AP->StationAddress, &HttpInstance->IPv4Node.LocalAddress); @@ -1094,18 +1073,18 @@ HttpConfigureTcp4 ( Tcp4AP->ActiveFlag = TRUE; IP4_COPY_ADDRESS (&Tcp4AP->RemoteAddress, &HttpInstance->RemoteAddr); - Tcp4Option = Tcp4CfgData->ControlOption; - Tcp4Option->ReceiveBufferSize = HTTP_BUFFER_SIZE_DEAULT; - Tcp4Option->SendBufferSize = HTTP_BUFFER_SIZE_DEAULT; - Tcp4Option->MaxSynBackLog = HTTP_MAX_SYN_BACK_LOG; - Tcp4Option->ConnectionTimeout = HTTP_CONNECTION_TIMEOUT; - Tcp4Option->DataRetries = HTTP_DATA_RETRIES; - Tcp4Option->FinTimeout = HTTP_FIN_TIMEOUT; - Tcp4Option->KeepAliveProbes = HTTP_KEEP_ALIVE_PROBES; - Tcp4Option->KeepAliveTime = HTTP_KEEP_ALIVE_TIME; - Tcp4Option->KeepAliveInterval = HTTP_KEEP_ALIVE_INTERVAL; - Tcp4Option->EnableNagle = TRUE; - Tcp4CfgData->ControlOption = Tcp4Option; + Tcp4Option = Tcp4CfgData->ControlOption; + Tcp4Option->ReceiveBufferSize = HTTP_BUFFER_SIZE_DEAULT; + Tcp4Option->SendBufferSize = HTTP_BUFFER_SIZE_DEAULT; + Tcp4Option->MaxSynBackLog = HTTP_MAX_SYN_BACK_LOG; + Tcp4Option->ConnectionTimeout = HTTP_CONNECTION_TIMEOUT; + Tcp4Option->DataRetries = HTTP_DATA_RETRIES; + Tcp4Option->FinTimeout = HTTP_FIN_TIMEOUT; + Tcp4Option->KeepAliveProbes = HTTP_KEEP_ALIVE_PROBES; + Tcp4Option->KeepAliveTime = HTTP_KEEP_ALIVE_TIME; + Tcp4Option->KeepAliveInterval = HTTP_KEEP_ALIVE_INTERVAL; + Tcp4Option->EnableNagle = TRUE; + Tcp4CfgData->ControlOption = Tcp4Option; Status = HttpInstance->Tcp4->Configure (HttpInstance->Tcp4, Tcp4CfgData); if (EFI_ERROR (Status)) { @@ -1140,14 +1119,14 @@ HttpConfigureTcp4 ( **/ EFI_STATUS HttpConfigureTcp6 ( - IN HTTP_PROTOCOL *HttpInstance, - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_PROTOCOL *HttpInstance, + IN HTTP_TOKEN_WRAP *Wrap ) { - EFI_STATUS Status; - EFI_TCP6_CONFIG_DATA *Tcp6CfgData; - EFI_TCP6_ACCESS_POINT *Tcp6Ap; - EFI_TCP6_OPTION *Tcp6Option; + EFI_STATUS Status; + EFI_TCP6_CONFIG_DATA *Tcp6CfgData; + EFI_TCP6_ACCESS_POINT *Tcp6Ap; + EFI_TCP6_OPTION *Tcp6Option; ASSERT (HttpInstance != NULL); @@ -1158,24 +1137,24 @@ HttpConfigureTcp6 ( Tcp6CfgData->HopLimit = 255; Tcp6CfgData->ControlOption = &HttpInstance->Tcp6Option; - Tcp6Ap = &Tcp6CfgData->AccessPoint; + Tcp6Ap = &Tcp6CfgData->AccessPoint; Tcp6Ap->ActiveFlag = TRUE; Tcp6Ap->StationPort = HttpInstance->Ipv6Node.LocalPort; Tcp6Ap->RemotePort = HttpInstance->RemotePort; IP6_COPY_ADDRESS (&Tcp6Ap->StationAddress, &HttpInstance->Ipv6Node.LocalAddress); - IP6_COPY_ADDRESS (&Tcp6Ap->RemoteAddress , &HttpInstance->RemoteIpv6Addr); - - Tcp6Option = Tcp6CfgData->ControlOption; - Tcp6Option->ReceiveBufferSize = HTTP_BUFFER_SIZE_DEAULT; - Tcp6Option->SendBufferSize = HTTP_BUFFER_SIZE_DEAULT; - Tcp6Option->MaxSynBackLog = HTTP_MAX_SYN_BACK_LOG; - Tcp6Option->ConnectionTimeout = HTTP_CONNECTION_TIMEOUT; - Tcp6Option->DataRetries = HTTP_DATA_RETRIES; - Tcp6Option->FinTimeout = HTTP_FIN_TIMEOUT; - Tcp6Option->KeepAliveProbes = HTTP_KEEP_ALIVE_PROBES; - Tcp6Option->KeepAliveTime = HTTP_KEEP_ALIVE_TIME; - Tcp6Option->KeepAliveInterval = HTTP_KEEP_ALIVE_INTERVAL; - Tcp6Option->EnableNagle = TRUE; + IP6_COPY_ADDRESS (&Tcp6Ap->RemoteAddress, &HttpInstance->RemoteIpv6Addr); + + Tcp6Option = Tcp6CfgData->ControlOption; + Tcp6Option->ReceiveBufferSize = HTTP_BUFFER_SIZE_DEAULT; + Tcp6Option->SendBufferSize = HTTP_BUFFER_SIZE_DEAULT; + Tcp6Option->MaxSynBackLog = HTTP_MAX_SYN_BACK_LOG; + Tcp6Option->ConnectionTimeout = HTTP_CONNECTION_TIMEOUT; + Tcp6Option->DataRetries = HTTP_DATA_RETRIES; + Tcp6Option->FinTimeout = HTTP_FIN_TIMEOUT; + Tcp6Option->KeepAliveProbes = HTTP_KEEP_ALIVE_PROBES; + Tcp6Option->KeepAliveTime = HTTP_KEEP_ALIVE_TIME; + Tcp6Option->KeepAliveInterval = HTTP_KEEP_ALIVE_INTERVAL; + Tcp6Option->EnableNagle = TRUE; Status = HttpInstance->Tcp6->Configure (HttpInstance->Tcp6, Tcp6CfgData); if (EFI_ERROR (Status)) { @@ -1196,7 +1175,6 @@ HttpConfigureTcp6 ( HttpInstance->State = HTTP_STATE_TCP_CONFIGED; return EFI_SUCCESS; - } /** @@ -1212,18 +1190,17 @@ HttpConfigureTcp6 ( **/ EFI_STATUS HttpConnectTcp4 ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; - EFI_TCP4_CONNECTION_STATE Tcp4State; - + EFI_STATUS Status; + EFI_TCP4_CONNECTION_STATE Tcp4State; - if (HttpInstance->State < HTTP_STATE_TCP_CONFIGED || HttpInstance->Tcp4 == NULL) { + if ((HttpInstance->State < HTTP_STATE_TCP_CONFIGED) || (HttpInstance->Tcp4 == NULL)) { return EFI_NOT_READY; } - Status = HttpInstance->Tcp4->GetModeData( + Status = HttpInstance->Tcp4->GetModeData ( HttpInstance->Tcp4, &Tcp4State, NULL, @@ -1231,7 +1208,7 @@ HttpConnectTcp4 ( NULL, NULL ); - if (EFI_ERROR(Status)){ + if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Tcp4 GetModeData fail - %x\n", Status)); return Status; } @@ -1239,11 +1216,11 @@ HttpConnectTcp4 ( if (Tcp4State == Tcp4StateEstablished) { return EFI_SUCCESS; } else if (Tcp4State > Tcp4StateEstablished ) { - HttpCloseConnection(HttpInstance); + HttpCloseConnection (HttpInstance); } Status = HttpCreateConnection (HttpInstance); - if (EFI_ERROR(Status)){ + if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Tcp4 Connection fail - %x\n", Status)); return Status; } @@ -1305,13 +1282,13 @@ HttpConnectTcp4 ( **/ EFI_STATUS HttpConnectTcp6 ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; - EFI_TCP6_CONNECTION_STATE Tcp6State; + EFI_STATUS Status; + EFI_TCP6_CONNECTION_STATE Tcp6State; - if (HttpInstance->State < HTTP_STATE_TCP_CONFIGED || HttpInstance->Tcp6 == NULL) { + if ((HttpInstance->State < HTTP_STATE_TCP_CONFIGED) || (HttpInstance->Tcp6 == NULL)) { return EFI_NOT_READY; } @@ -1324,19 +1301,19 @@ HttpConnectTcp6 ( NULL ); - if (EFI_ERROR(Status)){ - DEBUG ((DEBUG_ERROR, "Tcp6 GetModeData fail - %x\n", Status)); - return Status; + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Tcp6 GetModeData fail - %x\n", Status)); + return Status; } if (Tcp6State == Tcp6StateEstablished) { return EFI_SUCCESS; } else if (Tcp6State > Tcp6StateEstablished ) { - HttpCloseConnection(HttpInstance); + HttpCloseConnection (HttpInstance); } Status = HttpCreateConnection (HttpInstance); - if (EFI_ERROR(Status)){ + if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Tcp6 Connection fail - %x\n", Status)); return Status; } @@ -1405,7 +1382,8 @@ HttpInitSession ( IN BOOLEAN TlsConfigure ) { - EFI_STATUS Status; + EFI_STATUS Status; + ASSERT (HttpInstance != NULL); // @@ -1457,7 +1435,6 @@ HttpInitSession ( } return EFI_SUCCESS; - } /** @@ -1480,27 +1457,27 @@ HttpTransmitTcp ( IN UINTN TxStringLen ) { - EFI_STATUS Status; - EFI_TCP4_IO_TOKEN *Tx4Token; - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_IO_TOKEN *Tx6Token; - EFI_TCP6_PROTOCOL *Tcp6; - UINT8 *TlsRecord; - UINT16 PayloadSize; - NET_FRAGMENT TempFragment; - NET_FRAGMENT Fragment; - UINTN RecordCount; - UINTN RemainingLen; - - Status = EFI_SUCCESS; - TlsRecord = NULL; - PayloadSize = 0; - TempFragment.Len = 0; - TempFragment.Bulk = NULL; - Fragment.Len = 0; - Fragment.Bulk = NULL; - RecordCount = 0; - RemainingLen = 0; + EFI_STATUS Status; + EFI_TCP4_IO_TOKEN *Tx4Token; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_IO_TOKEN *Tx6Token; + EFI_TCP6_PROTOCOL *Tcp6; + UINT8 *TlsRecord; + UINT16 PayloadSize; + NET_FRAGMENT TempFragment; + NET_FRAGMENT Fragment; + UINTN RecordCount; + UINTN RemainingLen; + + Status = EFI_SUCCESS; + TlsRecord = NULL; + PayloadSize = 0; + TempFragment.Len = 0; + TempFragment.Bulk = NULL; + Fragment.Len = 0; + Fragment.Bulk = NULL; + RecordCount = 0; + RemainingLen = 0; // // Need to encrypt data. @@ -1518,7 +1495,7 @@ HttpTransmitTcp ( // // Allocate enough buffer for all TLS ciphertext records. // - RecordCount = TxStringLen / TLS_PLAINTEXT_RECORD_MAX_PAYLOAD_LENGTH + 1; + RecordCount = TxStringLen / TLS_PLAINTEXT_RECORD_MAX_PAYLOAD_LENGTH + 1; Fragment.Bulk = AllocateZeroPool (RecordCount * (TLS_RECORD_HEADER_LENGTH + TLS_CIPHERTEXT_RECORD_MAX_PAYLOAD_LENGTH)); if (Fragment.Bulk == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1530,12 +1507,12 @@ HttpTransmitTcp ( // RemainingLen = TxStringLen; while (RemainingLen != 0) { - PayloadSize = (UINT16) MIN (TLS_PLAINTEXT_RECORD_MAX_PAYLOAD_LENGTH, RemainingLen); + PayloadSize = (UINT16)MIN (TLS_PLAINTEXT_RECORD_MAX_PAYLOAD_LENGTH, RemainingLen); - ((TLS_RECORD_HEADER *) TlsRecord)->ContentType = TlsContentTypeApplicationData; - ((TLS_RECORD_HEADER *) TlsRecord)->Version.Major = HttpInstance->TlsConfigData.Version.Major; - ((TLS_RECORD_HEADER *) TlsRecord)->Version.Minor = HttpInstance->TlsConfigData.Version.Minor; - ((TLS_RECORD_HEADER *) TlsRecord)->Length = PayloadSize; + ((TLS_RECORD_HEADER *)TlsRecord)->ContentType = TlsContentTypeApplicationData; + ((TLS_RECORD_HEADER *)TlsRecord)->Version.Major = HttpInstance->TlsConfigData.Version.Major; + ((TLS_RECORD_HEADER *)TlsRecord)->Version.Minor = HttpInstance->TlsConfigData.Version.Minor; + ((TLS_RECORD_HEADER *)TlsRecord)->Length = PayloadSize; CopyMem (TlsRecord + TLS_RECORD_HEADER_LENGTH, TxString + (TxStringLen - RemainingLen), PayloadSize); @@ -1560,7 +1537,7 @@ HttpTransmitTcp ( TempFragment.Len = 0; TempFragment.Bulk = NULL; - RemainingLen -= (UINTN) PayloadSize; + RemainingLen -= (UINTN)PayloadSize; ZeroMem (TlsRecord, TLS_RECORD_HEADER_LENGTH + TLS_PLAINTEXT_RECORD_MAX_PAYLOAD_LENGTH); } @@ -1569,46 +1546,45 @@ HttpTransmitTcp ( } if (!HttpInstance->LocalAddressIsIPv6) { - Tcp4 = HttpInstance->Tcp4; + Tcp4 = HttpInstance->Tcp4; Tx4Token = &Wrap->TcpWrap.Tx4Token; if (HttpInstance->UseHttps) { - Tx4Token->Packet.TxData->DataLength = Fragment.Len; + Tx4Token->Packet.TxData->DataLength = Fragment.Len; Tx4Token->Packet.TxData->FragmentTable[0].FragmentLength = Fragment.Len; - Tx4Token->Packet.TxData->FragmentTable[0].FragmentBuffer = (VOID *) Fragment.Bulk; + Tx4Token->Packet.TxData->FragmentTable[0].FragmentBuffer = (VOID *)Fragment.Bulk; } else { - Tx4Token->Packet.TxData->DataLength = (UINT32) TxStringLen; - Tx4Token->Packet.TxData->FragmentTable[0].FragmentLength = (UINT32) TxStringLen; - Tx4Token->Packet.TxData->FragmentTable[0].FragmentBuffer = (VOID *) TxString; + Tx4Token->Packet.TxData->DataLength = (UINT32)TxStringLen; + Tx4Token->Packet.TxData->FragmentTable[0].FragmentLength = (UINT32)TxStringLen; + Tx4Token->Packet.TxData->FragmentTable[0].FragmentBuffer = (VOID *)TxString; } Tx4Token->CompletionToken.Status = EFI_NOT_READY; Wrap->TcpWrap.IsTxDone = FALSE; - Status = Tcp4->Transmit (Tcp4, Tx4Token); + Status = Tcp4->Transmit (Tcp4, Tx4Token); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Transmit failed: %r\n", Status)); goto ON_ERROR; } - } else { - Tcp6 = HttpInstance->Tcp6; + Tcp6 = HttpInstance->Tcp6; Tx6Token = &Wrap->TcpWrap.Tx6Token; if (HttpInstance->UseHttps) { - Tx6Token->Packet.TxData->DataLength = Fragment.Len; + Tx6Token->Packet.TxData->DataLength = Fragment.Len; Tx6Token->Packet.TxData->FragmentTable[0].FragmentLength = Fragment.Len; - Tx6Token->Packet.TxData->FragmentTable[0].FragmentBuffer = (VOID *) Fragment.Bulk; + Tx6Token->Packet.TxData->FragmentTable[0].FragmentBuffer = (VOID *)Fragment.Bulk; } else { - Tx6Token->Packet.TxData->DataLength = (UINT32) TxStringLen; - Tx6Token->Packet.TxData->FragmentTable[0].FragmentLength = (UINT32) TxStringLen; - Tx6Token->Packet.TxData->FragmentTable[0].FragmentBuffer = (VOID *) TxString; + Tx6Token->Packet.TxData->DataLength = (UINT32)TxStringLen; + Tx6Token->Packet.TxData->FragmentTable[0].FragmentLength = (UINT32)TxStringLen; + Tx6Token->Packet.TxData->FragmentTable[0].FragmentBuffer = (VOID *)TxString; } Tx6Token->CompletionToken.Status = EFI_NOT_READY; Wrap->TcpWrap.IsTxDone = FALSE; - Status = Tcp6->Transmit (Tcp6, Tx6Token); + Status = Tcp6->Transmit (Tcp6, Tx6Token); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Transmit failed: %r\n", Status)); goto ON_ERROR; @@ -1651,18 +1627,18 @@ ON_ERROR: EFI_STATUS EFIAPI HttpTokenExist ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { - EFI_HTTP_TOKEN *Token; - EFI_HTTP_TOKEN *TokenInItem; + EFI_HTTP_TOKEN *Token; + EFI_HTTP_TOKEN *TokenInItem; - Token = (EFI_HTTP_TOKEN *) Context; - TokenInItem = (EFI_HTTP_TOKEN *) Item->Key; + Token = (EFI_HTTP_TOKEN *)Context; + TokenInItem = (EFI_HTTP_TOKEN *)Item->Key; - if (Token == TokenInItem || Token->Event == TokenInItem->Event) { + if ((Token == TokenInItem) || (Token->Event == TokenInItem->Event)) { return EFI_ACCESS_DENIED; } @@ -1683,14 +1659,14 @@ HttpTokenExist ( EFI_STATUS EFIAPI HttpTcpNotReady ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { - HTTP_TOKEN_WRAP *ValueInItem; + HTTP_TOKEN_WRAP *ValueInItem; - ValueInItem = (HTTP_TOKEN_WRAP *) Item->Value; + ValueInItem = (HTTP_TOKEN_WRAP *)Item->Value; if (!ValueInItem->TcpWrap.IsTxDone) { return EFI_NOT_READY; @@ -1714,21 +1690,21 @@ HttpTcpNotReady ( EFI_STATUS EFIAPI HttpTcpTransmit ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { - HTTP_TOKEN_WRAP *ValueInItem; - EFI_STATUS Status; - CHAR8 *RequestMsg; - CHAR8 *Url; - UINTN UrlSize; - UINTN RequestMsgSize; + HTTP_TOKEN_WRAP *ValueInItem; + EFI_STATUS Status; + CHAR8 *RequestMsg; + CHAR8 *Url; + UINTN UrlSize; + UINTN RequestMsgSize; RequestMsg = NULL; - ValueInItem = (HTTP_TOKEN_WRAP *) Item->Value; + ValueInItem = (HTTP_TOKEN_WRAP *)Item->Value; if (ValueInItem->TcpWrap.IsTxDone) { return EFI_SUCCESS; } @@ -1737,7 +1713,7 @@ HttpTcpTransmit ( // Parse the URI of the remote host. // UrlSize = StrLen (ValueInItem->HttpToken->Message->Data.Request->Url) + 1; - Url = AllocatePool (UrlSize); + Url = AllocatePool (UrlSize); if (Url == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -1748,14 +1724,14 @@ HttpTcpTransmit ( // Create request message. // Status = HttpGenRequestMessage ( - ValueInItem->HttpToken->Message, - Url, - &RequestMsg, - &RequestMsgSize - ); + ValueInItem->HttpToken->Message, + Url, + &RequestMsg, + &RequestMsgSize + ); FreePool (Url); - if (EFI_ERROR (Status) || NULL == RequestMsg){ + if (EFI_ERROR (Status) || (NULL == RequestMsg)) { return Status; } @@ -1767,7 +1743,7 @@ HttpTcpTransmit ( Status = HttpTransmitTcp ( ValueInItem->HttpInstance, ValueInItem, - (UINT8*) RequestMsg, + (UINT8 *)RequestMsg, RequestMsgSize ); FreePool (RequestMsg); @@ -1789,15 +1765,15 @@ HttpTcpTransmit ( EFI_STATUS EFIAPI HttpTcpReceive ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { // // Process the queued HTTP response. // - return HttpResponseWorker ((HTTP_TOKEN_WRAP *) Item->Value); + return HttpResponseWorker ((HTTP_TOKEN_WRAP *)Item->Value); } /** @@ -1814,31 +1790,31 @@ HttpTcpReceive ( **/ EFI_STATUS HttpTcpReceiveHeader ( - IN HTTP_PROTOCOL *HttpInstance, - IN OUT UINTN *SizeofHeaders, - IN OUT UINTN *BufferSize, - IN EFI_EVENT Timeout + IN HTTP_PROTOCOL *HttpInstance, + IN OUT UINTN *SizeofHeaders, + IN OUT UINTN *BufferSize, + IN EFI_EVENT Timeout ) { - EFI_STATUS Status; - EFI_TCP4_IO_TOKEN *Rx4Token; - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_IO_TOKEN *Rx6Token; - EFI_TCP6_PROTOCOL *Tcp6; - CHAR8 **EndofHeader; - CHAR8 **HttpHeaders; - CHAR8 *Buffer; - NET_FRAGMENT Fragment; + EFI_STATUS Status; + EFI_TCP4_IO_TOKEN *Rx4Token; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_IO_TOKEN *Rx6Token; + EFI_TCP6_PROTOCOL *Tcp6; + CHAR8 **EndofHeader; + CHAR8 **HttpHeaders; + CHAR8 *Buffer; + NET_FRAGMENT Fragment; ASSERT (HttpInstance != NULL); - EndofHeader = HttpInstance->EndofHeader; - HttpHeaders = HttpInstance->HttpHeaders; - Tcp4 = HttpInstance->Tcp4; - Tcp6 = HttpInstance->Tcp6; - Buffer = NULL; - Rx4Token = NULL; - Rx6Token = NULL; + EndofHeader = HttpInstance->EndofHeader; + HttpHeaders = HttpInstance->HttpHeaders; + Tcp4 = HttpInstance->Tcp4; + Tcp6 = HttpInstance->Tcp6; + Buffer = NULL; + Rx4Token = NULL; + Rx6Token = NULL; Fragment.Len = 0; Fragment.Bulk = NULL; @@ -1857,7 +1833,7 @@ HttpTcpReceiveHeader ( if (!HttpInstance->LocalAddressIsIPv6) { if (!HttpInstance->UseHttps) { - Rx4Token = &HttpInstance->Rx4Token; + Rx4Token = &HttpInstance->Rx4Token; Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer = AllocateZeroPool (DEF_BUF_LEN); if (Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1870,10 +1846,10 @@ HttpTcpReceiveHeader ( // while (*EndofHeader == NULL) { if (!HttpInstance->UseHttps) { - HttpInstance->IsRxDone = FALSE; - Rx4Token->Packet.RxData->DataLength = DEF_BUF_LEN; + HttpInstance->IsRxDone = FALSE; + Rx4Token->Packet.RxData->DataLength = DEF_BUF_LEN; Rx4Token->Packet.RxData->FragmentTable[0].FragmentLength = DEF_BUF_LEN; - Status = Tcp4->Receive (Tcp4, Rx4Token); + Status = Tcp4->Receive (Tcp4, Rx4Token); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Tcp4 receive failed: %r\n", Status)); return Status; @@ -1898,7 +1874,7 @@ HttpTcpReceiveHeader ( } Fragment.Len = Rx4Token->Packet.RxData->FragmentTable[0].FragmentLength; - Fragment.Bulk = (UINT8 *) Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer; + Fragment.Bulk = (UINT8 *)Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer; } else { if (Fragment.Bulk != NULL) { FreePool (Fragment.Bulk); @@ -1933,22 +1909,22 @@ HttpTcpReceiveHeader ( Fragment.Len ); *(Buffer + *BufferSize) = '\0'; - *HttpHeaders = Buffer; - *SizeofHeaders = *BufferSize; + *HttpHeaders = Buffer; + *SizeofHeaders = *BufferSize; // // Check whether we received end of HTTP headers. // *EndofHeader = AsciiStrStr (*HttpHeaders, HTTP_END_OF_HDR_STR); - }; + } // // Free the buffer. // - if (Rx4Token != NULL && Rx4Token->Packet.RxData != NULL && Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer != NULL) { + if ((Rx4Token != NULL) && (Rx4Token->Packet.RxData != NULL) && (Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer != NULL)) { FreePool (Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer); Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer = NULL; - Fragment.Bulk = NULL; + Fragment.Bulk = NULL; } if (Fragment.Bulk != NULL) { @@ -1957,7 +1933,7 @@ HttpTcpReceiveHeader ( } } else { if (!HttpInstance->UseHttps) { - Rx6Token = &HttpInstance->Rx6Token; + Rx6Token = &HttpInstance->Rx6Token; Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer = AllocateZeroPool (DEF_BUF_LEN); if (Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1970,10 +1946,10 @@ HttpTcpReceiveHeader ( // while (*EndofHeader == NULL) { if (!HttpInstance->UseHttps) { - HttpInstance->IsRxDone = FALSE; - Rx6Token->Packet.RxData->DataLength = DEF_BUF_LEN; + HttpInstance->IsRxDone = FALSE; + Rx6Token->Packet.RxData->DataLength = DEF_BUF_LEN; Rx6Token->Packet.RxData->FragmentTable[0].FragmentLength = DEF_BUF_LEN; - Status = Tcp6->Receive (Tcp6, Rx6Token); + Status = Tcp6->Receive (Tcp6, Rx6Token); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Tcp6 receive failed: %r\n", Status)); return Status; @@ -1998,7 +1974,7 @@ HttpTcpReceiveHeader ( } Fragment.Len = Rx6Token->Packet.RxData->FragmentTable[0].FragmentLength; - Fragment.Bulk = (UINT8 *) Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer; + Fragment.Bulk = (UINT8 *)Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer; } else { if (Fragment.Bulk != NULL) { FreePool (Fragment.Bulk); @@ -2033,22 +2009,22 @@ HttpTcpReceiveHeader ( Fragment.Len ); *(Buffer + *BufferSize) = '\0'; - *HttpHeaders = Buffer; - *SizeofHeaders = *BufferSize; + *HttpHeaders = Buffer; + *SizeofHeaders = *BufferSize; // // Check whether we received end of HTTP headers. // *EndofHeader = AsciiStrStr (*HttpHeaders, HTTP_END_OF_HDR_STR); - }; + } // // Free the buffer. // - if (Rx6Token != NULL && Rx6Token->Packet.RxData != NULL && Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer != NULL) { + if ((Rx6Token != NULL) && (Rx6Token->Packet.RxData != NULL) && (Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer != NULL)) { FreePool (Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer); Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer = NULL; - Fragment.Bulk = NULL; + Fragment.Bulk = NULL; } if (Fragment.Bulk != NULL) { @@ -2079,22 +2055,22 @@ HttpTcpReceiveHeader ( **/ EFI_STATUS HttpTcpReceiveBody ( - IN HTTP_TOKEN_WRAP *Wrap, - IN EFI_HTTP_MESSAGE *HttpMsg + IN HTTP_TOKEN_WRAP *Wrap, + IN EFI_HTTP_MESSAGE *HttpMsg ) { - EFI_STATUS Status; - HTTP_PROTOCOL *HttpInstance; - EFI_TCP6_PROTOCOL *Tcp6; - EFI_TCP6_IO_TOKEN *Rx6Token; - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP4_IO_TOKEN *Rx4Token; - - HttpInstance = Wrap->HttpInstance; - Tcp4 = HttpInstance->Tcp4; - Tcp6 = HttpInstance->Tcp6; - Rx4Token = NULL; - Rx6Token = NULL; + EFI_STATUS Status; + HTTP_PROTOCOL *HttpInstance; + EFI_TCP6_PROTOCOL *Tcp6; + EFI_TCP6_IO_TOKEN *Rx6Token; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP4_IO_TOKEN *Rx4Token; + + HttpInstance = Wrap->HttpInstance; + Tcp4 = HttpInstance->Tcp4; + Tcp6 = HttpInstance->Tcp6; + Rx4Token = NULL; + Rx6Token = NULL; if (HttpInstance->LocalAddressIsIPv6) { ASSERT (Tcp6 != NULL); @@ -2103,11 +2079,11 @@ HttpTcpReceiveBody ( } if (HttpInstance->LocalAddressIsIPv6) { - Rx6Token = &Wrap->TcpWrap.Rx6Token; - Rx6Token ->Packet.RxData->DataLength = (UINT32) MIN (MAX_UINT32, HttpMsg->BodyLength); - Rx6Token ->Packet.RxData->FragmentTable[0].FragmentLength = (UINT32) MIN (MAX_UINT32, HttpMsg->BodyLength); - Rx6Token ->Packet.RxData->FragmentTable[0].FragmentBuffer = (VOID *) HttpMsg->Body; - Rx6Token->CompletionToken.Status = EFI_NOT_READY; + Rx6Token = &Wrap->TcpWrap.Rx6Token; + Rx6Token->Packet.RxData->DataLength = (UINT32)MIN (MAX_UINT32, HttpMsg->BodyLength); + Rx6Token->Packet.RxData->FragmentTable[0].FragmentLength = (UINT32)MIN (MAX_UINT32, HttpMsg->BodyLength); + Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer = (VOID *)HttpMsg->Body; + Rx6Token->CompletionToken.Status = EFI_NOT_READY; Status = Tcp6->Receive (Tcp6, Rx6Token); if (EFI_ERROR (Status)) { @@ -2115,13 +2091,13 @@ HttpTcpReceiveBody ( return Status; } } else { - Rx4Token = &Wrap->TcpWrap.Rx4Token; - Rx4Token->Packet.RxData->DataLength = (UINT32) MIN (MAX_UINT32, HttpMsg->BodyLength); - Rx4Token->Packet.RxData->FragmentTable[0].FragmentLength = (UINT32) MIN (MAX_UINT32, HttpMsg->BodyLength); - Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer = (VOID *) HttpMsg->Body; + Rx4Token = &Wrap->TcpWrap.Rx4Token; + Rx4Token->Packet.RxData->DataLength = (UINT32)MIN (MAX_UINT32, HttpMsg->BodyLength); + Rx4Token->Packet.RxData->FragmentTable[0].FragmentLength = (UINT32)MIN (MAX_UINT32, HttpMsg->BodyLength); + Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer = (VOID *)HttpMsg->Body; Rx4Token->CompletionToken.Status = EFI_NOT_READY; - Status = Tcp4->Receive (Tcp4, Rx4Token); + Status = Tcp4->Receive (Tcp4, Rx4Token); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Tcp4 receive failed: %r\n", Status)); return Status; @@ -2129,7 +2105,6 @@ HttpTcpReceiveBody ( } return EFI_SUCCESS; - } /** @@ -2140,17 +2115,17 @@ HttpTcpReceiveBody ( **/ VOID HttpTcpTokenCleanup ( - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_TOKEN_WRAP *Wrap ) { - HTTP_PROTOCOL *HttpInstance; - EFI_TCP4_IO_TOKEN *Rx4Token; - EFI_TCP6_IO_TOKEN *Rx6Token; + HTTP_PROTOCOL *HttpInstance; + EFI_TCP4_IO_TOKEN *Rx4Token; + EFI_TCP6_IO_TOKEN *Rx6Token; ASSERT (Wrap != NULL); - HttpInstance = Wrap->HttpInstance; - Rx4Token = NULL; - Rx6Token = NULL; + HttpInstance = Wrap->HttpInstance; + Rx4Token = NULL; + Rx6Token = NULL; if (HttpInstance->LocalAddressIsIPv6) { Rx6Token = &Wrap->TcpWrap.Rx6Token; @@ -2173,7 +2148,6 @@ HttpTcpTokenCleanup ( FreePool (Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer); Rx6Token->Packet.RxData->FragmentTable[0].FragmentBuffer = NULL; } - } else { Rx4Token = &Wrap->TcpWrap.Rx4Token; @@ -2191,13 +2165,11 @@ HttpTcpTokenCleanup ( Rx4Token->CompletionToken.Event = NULL; } - if (Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer != NULL) { FreePool (Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer); Rx4Token->Packet.RxData->FragmentTable[0].FragmentBuffer = NULL; } } - } /** @@ -2209,45 +2181,46 @@ HttpTcpTokenCleanup ( **/ VOID HttpNotify ( - IN EDKII_HTTP_CALLBACK_EVENT Event, - IN EFI_STATUS EventStatus + IN EDKII_HTTP_CALLBACK_EVENT Event, + IN EFI_STATUS EventStatus ) { - EFI_STATUS Status; - EFI_HANDLE *Handles; - UINTN Index; - UINTN HandleCount; - EFI_HANDLE Handle; - EDKII_HTTP_CALLBACK_PROTOCOL *HttpCallback; + EFI_STATUS Status; + EFI_HANDLE *Handles; + UINTN Index; + UINTN HandleCount; + EFI_HANDLE Handle; + EDKII_HTTP_CALLBACK_PROTOCOL *HttpCallback; DEBUG ((DEBUG_INFO, "HttpNotify: Event - %d, EventStatus - %r\n", Event, EventStatus)); - Handles = NULL; + Handles = NULL; HandleCount = 0; - Status = gBS->LocateHandleBuffer ( - ByProtocol, - &gEdkiiHttpCallbackProtocolGuid, - NULL, - &HandleCount, - &Handles - ); + Status = gBS->LocateHandleBuffer ( + ByProtocol, + &gEdkiiHttpCallbackProtocolGuid, + NULL, + &HandleCount, + &Handles + ); if (Status == EFI_SUCCESS) { for (Index = 0; Index < HandleCount; Index++) { Handle = Handles[Index]; Status = gBS->HandleProtocol ( Handle, &gEdkiiHttpCallbackProtocolGuid, - (VOID **) &HttpCallback + (VOID **)&HttpCallback ); if (Status == EFI_SUCCESS) { DEBUG ((DEBUG_INFO, "HttpNotify: Notifying %p\n", HttpCallback)); HttpCallback->Callback ( - HttpCallback, - Event, - EventStatus - ); + HttpCallback, + Event, + EventStatus + ); } } + FreePool (Handles); } } diff --git a/NetworkPkg/HttpDxe/HttpProto.h b/NetworkPkg/HttpDxe/HttpProto.h index 637d350539..8ed99c7a02 100644 --- a/NetworkPkg/HttpDxe/HttpProto.h +++ b/NetworkPkg/HttpDxe/HttpProto.h @@ -10,7 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_HTTP_PROTO_H__ #define __EFI_HTTP_PROTO_H__ -#define DEF_BUF_LEN 2048 +#define DEF_BUF_LEN 2048 #define HTTP_SERVICE_SIGNATURE SIGNATURE_32('H', 't', 't', 'S') @@ -22,188 +22,186 @@ SPDX-License-Identifier: BSD-2-Clause-Patent HTTP_SERVICE_SIGNATURE \ ) - // // The state of HTTP protocol. It starts from UNCONFIGED. // -#define HTTP_STATE_UNCONFIGED 0 -#define HTTP_STATE_HTTP_CONFIGED 1 -#define HTTP_STATE_TCP_CONFIGED 2 -#define HTTP_STATE_TCP_UNCONFIGED 3 -#define HTTP_STATE_TCP_CONNECTED 4 -#define HTTP_STATE_TCP_CLOSED 5 +#define HTTP_STATE_UNCONFIGED 0 +#define HTTP_STATE_HTTP_CONFIGED 1 +#define HTTP_STATE_TCP_CONFIGED 2 +#define HTTP_STATE_TCP_UNCONFIGED 3 +#define HTTP_STATE_TCP_CONNECTED 4 +#define HTTP_STATE_TCP_CLOSED 5 // // TCP configured data. // -#define HTTP_TOS_DEAULT 8 -#define HTTP_TTL_DEAULT 255 -#define HTTP_BUFFER_SIZE_DEAULT 65535 -#define HTTP_MAX_SYN_BACK_LOG 5 -#define HTTP_CONNECTION_TIMEOUT 60 -#define HTTP_DATA_RETRIES 12 -#define HTTP_FIN_TIMEOUT 2 -#define HTTP_KEEP_ALIVE_PROBES 6 -#define HTTP_KEEP_ALIVE_TIME 7200 -#define HTTP_KEEP_ALIVE_INTERVAL 30 - -#define HTTP_URL_BUFFER_LEN 4096 +#define HTTP_TOS_DEAULT 8 +#define HTTP_TTL_DEAULT 255 +#define HTTP_BUFFER_SIZE_DEAULT 65535 +#define HTTP_MAX_SYN_BACK_LOG 5 +#define HTTP_CONNECTION_TIMEOUT 60 +#define HTTP_DATA_RETRIES 12 +#define HTTP_FIN_TIMEOUT 2 +#define HTTP_KEEP_ALIVE_PROBES 6 +#define HTTP_KEEP_ALIVE_TIME 7200 +#define HTTP_KEEP_ALIVE_INTERVAL 30 + +#define HTTP_URL_BUFFER_LEN 4096 typedef struct _HTTP_SERVICE { - UINT32 Signature; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - EFI_HANDLE Ip4DriverBindingHandle; - EFI_HANDLE Ip6DriverBindingHandle; - EFI_HANDLE ControllerHandle; - EFI_HANDLE Tcp4ChildHandle; - EFI_HANDLE Tcp6ChildHandle; - LIST_ENTRY ChildrenList; - UINTN ChildrenNumber; - INTN State; + UINT32 Signature; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + EFI_HANDLE Ip4DriverBindingHandle; + EFI_HANDLE Ip6DriverBindingHandle; + EFI_HANDLE ControllerHandle; + EFI_HANDLE Tcp4ChildHandle; + EFI_HANDLE Tcp6ChildHandle; + LIST_ENTRY ChildrenList; + UINTN ChildrenNumber; + INTN State; } HTTP_SERVICE; typedef struct { - EFI_TCP4_IO_TOKEN Tx4Token; - EFI_TCP4_TRANSMIT_DATA Tx4Data; - EFI_TCP6_IO_TOKEN Tx6Token; - EFI_TCP6_TRANSMIT_DATA Tx6Data; - EFI_TCP4_IO_TOKEN Rx4Token; - EFI_TCP4_RECEIVE_DATA Rx4Data; - EFI_TCP6_IO_TOKEN Rx6Token; - EFI_TCP6_RECEIVE_DATA Rx6Data; - BOOLEAN IsTxDone; - BOOLEAN IsRxDone; - UINTN BodyLen; - EFI_HTTP_METHOD Method; + EFI_TCP4_IO_TOKEN Tx4Token; + EFI_TCP4_TRANSMIT_DATA Tx4Data; + EFI_TCP6_IO_TOKEN Tx6Token; + EFI_TCP6_TRANSMIT_DATA Tx6Data; + EFI_TCP4_IO_TOKEN Rx4Token; + EFI_TCP4_RECEIVE_DATA Rx4Data; + EFI_TCP6_IO_TOKEN Rx6Token; + EFI_TCP6_RECEIVE_DATA Rx6Data; + BOOLEAN IsTxDone; + BOOLEAN IsRxDone; + UINTN BodyLen; + EFI_HTTP_METHOD Method; } HTTP_TCP_TOKEN_WRAP; typedef struct { - EFI_TLS_VERSION Version; - EFI_TLS_CONNECTION_END ConnectionEnd; - EFI_TLS_VERIFY VerifyMethod; - EFI_TLS_VERIFY_HOST VerifyHost; - EFI_TLS_SESSION_STATE SessionState; + EFI_TLS_VERSION Version; + EFI_TLS_CONNECTION_END ConnectionEnd; + EFI_TLS_VERIFY VerifyMethod; + EFI_TLS_VERIFY_HOST VerifyHost; + EFI_TLS_SESSION_STATE SessionState; } TLS_CONFIG_DATA; // // Callback data for HTTP_PARSER_CALLBACK() // typedef struct { - UINTN ParseDataLength; - VOID *ParseData; - VOID *Wrap; + UINTN ParseDataLength; + VOID *ParseData; + VOID *Wrap; } HTTP_CALLBACK_DATA; typedef struct _HTTP_PROTOCOL { - UINT32 Signature; - EFI_HTTP_PROTOCOL Http; - EFI_HANDLE Handle; - HTTP_SERVICE *Service; - LIST_ENTRY Link; // Link to all HTTP instance from the service. - BOOLEAN InDestroy; - INTN State; - EFI_HTTP_METHOD Method; - - UINTN StatusCode; - - EFI_EVENT TimeoutEvent; - - EFI_HANDLE Tcp4ChildHandle; - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP4_CONFIG_DATA Tcp4CfgData; - EFI_TCP4_OPTION Tcp4Option; - - EFI_TCP4_CONNECTION_TOKEN Tcp4ConnToken; - BOOLEAN IsTcp4ConnDone; - EFI_TCP4_CLOSE_TOKEN Tcp4CloseToken; - BOOLEAN IsTcp4CloseDone; - CHAR8 *RemoteHost; - UINT16 RemotePort; - EFI_IPv4_ADDRESS RemoteAddr; - - EFI_HANDLE Tcp6ChildHandle; - EFI_TCP6_PROTOCOL *Tcp6; - EFI_TCP6_CONFIG_DATA Tcp6CfgData; - EFI_TCP6_OPTION Tcp6Option; - - EFI_TCP6_CONNECTION_TOKEN Tcp6ConnToken; - BOOLEAN IsTcp6ConnDone; - EFI_TCP6_CLOSE_TOKEN Tcp6CloseToken; - BOOLEAN IsTcp6CloseDone; - EFI_IPv6_ADDRESS RemoteIpv6Addr; + UINT32 Signature; + EFI_HTTP_PROTOCOL Http; + EFI_HANDLE Handle; + HTTP_SERVICE *Service; + LIST_ENTRY Link; // Link to all HTTP instance from the service. + BOOLEAN InDestroy; + INTN State; + EFI_HTTP_METHOD Method; + + UINTN StatusCode; + + EFI_EVENT TimeoutEvent; + + EFI_HANDLE Tcp4ChildHandle; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP4_CONFIG_DATA Tcp4CfgData; + EFI_TCP4_OPTION Tcp4Option; + + EFI_TCP4_CONNECTION_TOKEN Tcp4ConnToken; + BOOLEAN IsTcp4ConnDone; + EFI_TCP4_CLOSE_TOKEN Tcp4CloseToken; + BOOLEAN IsTcp4CloseDone; + CHAR8 *RemoteHost; + UINT16 RemotePort; + EFI_IPv4_ADDRESS RemoteAddr; + + EFI_HANDLE Tcp6ChildHandle; + EFI_TCP6_PROTOCOL *Tcp6; + EFI_TCP6_CONFIG_DATA Tcp6CfgData; + EFI_TCP6_OPTION Tcp6Option; + + EFI_TCP6_CONNECTION_TOKEN Tcp6ConnToken; + BOOLEAN IsTcp6ConnDone; + EFI_TCP6_CLOSE_TOKEN Tcp6CloseToken; + BOOLEAN IsTcp6CloseDone; + EFI_IPv6_ADDRESS RemoteIpv6Addr; // // Rx4Token or Rx6Token used for receiving HTTP header. // - EFI_TCP4_IO_TOKEN Rx4Token; - EFI_TCP4_RECEIVE_DATA Rx4Data; - EFI_TCP6_IO_TOKEN Rx6Token; - EFI_TCP6_RECEIVE_DATA Rx6Data; - BOOLEAN IsRxDone; - - CHAR8 **EndofHeader; - CHAR8 **HttpHeaders; - CHAR8 *CacheBody; - CHAR8 *NextMsg; - UINTN CacheLen; - UINTN CacheOffset; + EFI_TCP4_IO_TOKEN Rx4Token; + EFI_TCP4_RECEIVE_DATA Rx4Data; + EFI_TCP6_IO_TOKEN Rx6Token; + EFI_TCP6_RECEIVE_DATA Rx6Data; + BOOLEAN IsRxDone; + + CHAR8 **EndofHeader; + CHAR8 **HttpHeaders; + CHAR8 *CacheBody; + CHAR8 *NextMsg; + UINTN CacheLen; + UINTN CacheOffset; // // HTTP message-body parser. // - VOID *MsgParser; - HTTP_CALLBACK_DATA CallbackData; + VOID *MsgParser; + HTTP_CALLBACK_DATA CallbackData; - EFI_HTTP_VERSION HttpVersion; - UINT32 TimeOutMillisec; - BOOLEAN LocalAddressIsIPv6; + EFI_HTTP_VERSION HttpVersion; + UINT32 TimeOutMillisec; + BOOLEAN LocalAddressIsIPv6; - EFI_HTTPv4_ACCESS_POINT IPv4Node; - EFI_HTTPv6_ACCESS_POINT Ipv6Node; + EFI_HTTPv4_ACCESS_POINT IPv4Node; + EFI_HTTPv6_ACCESS_POINT Ipv6Node; - NET_MAP TxTokens; - NET_MAP RxTokens; + NET_MAP TxTokens; + NET_MAP RxTokens; - CHAR8 *Url; + CHAR8 *Url; // // Https Support // - BOOLEAN UseHttps; + BOOLEAN UseHttps; - EFI_SERVICE_BINDING_PROTOCOL *TlsSb; - EFI_HANDLE TlsChildHandle; /// Tls ChildHandle - TLS_CONFIG_DATA TlsConfigData; - EFI_TLS_PROTOCOL *Tls; - EFI_TLS_CONFIGURATION_PROTOCOL *TlsConfiguration; - EFI_TLS_SESSION_STATE TlsSessionState; + EFI_SERVICE_BINDING_PROTOCOL *TlsSb; + EFI_HANDLE TlsChildHandle; /// Tls ChildHandle + TLS_CONFIG_DATA TlsConfigData; + EFI_TLS_PROTOCOL *Tls; + EFI_TLS_CONFIGURATION_PROTOCOL *TlsConfiguration; + EFI_TLS_SESSION_STATE TlsSessionState; // // TlsTxData used for transmitting TLS related messages. // - EFI_TCP4_IO_TOKEN Tcp4TlsTxToken; - EFI_TCP4_TRANSMIT_DATA Tcp4TlsTxData; - EFI_TCP6_IO_TOKEN Tcp6TlsTxToken; - EFI_TCP6_TRANSMIT_DATA Tcp6TlsTxData; - BOOLEAN TlsIsTxDone; + EFI_TCP4_IO_TOKEN Tcp4TlsTxToken; + EFI_TCP4_TRANSMIT_DATA Tcp4TlsTxData; + EFI_TCP6_IO_TOKEN Tcp6TlsTxToken; + EFI_TCP6_TRANSMIT_DATA Tcp6TlsTxData; + BOOLEAN TlsIsTxDone; // // TlsRxData used for receiving TLS related messages. // - EFI_TCP4_IO_TOKEN Tcp4TlsRxToken; - EFI_TCP4_RECEIVE_DATA Tcp4TlsRxData; - EFI_TCP6_IO_TOKEN Tcp6TlsRxToken; - EFI_TCP6_RECEIVE_DATA Tcp6TlsRxData; - BOOLEAN TlsIsRxDone; + EFI_TCP4_IO_TOKEN Tcp4TlsRxToken; + EFI_TCP4_RECEIVE_DATA Tcp4TlsRxData; + EFI_TCP6_IO_TOKEN Tcp6TlsRxToken; + EFI_TCP6_RECEIVE_DATA Tcp6TlsRxData; + BOOLEAN TlsIsRxDone; } HTTP_PROTOCOL; typedef struct { - EFI_HTTP_TOKEN *HttpToken; - HTTP_PROTOCOL *HttpInstance; - HTTP_TCP_TOKEN_WRAP TcpWrap; + EFI_HTTP_TOKEN *HttpToken; + HTTP_PROTOCOL *HttpInstance; + HTTP_TCP_TOKEN_WRAP TcpWrap; } HTTP_TOKEN_WRAP; - #define HTTP_PROTOCOL_SIGNATURE SIGNATURE_32('H', 't', 't', 'P') #define HTTP_INSTANCE_FROM_PROTOCOL(a) \ @@ -239,7 +237,7 @@ HttpCommonNotify ( **/ EFI_STATUS HttpCreateTcpConnCloseEvent ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ); /** @@ -250,7 +248,7 @@ HttpCreateTcpConnCloseEvent ( **/ VOID HttpCloseTcpConnCloseEvent ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ); /** @@ -264,7 +262,7 @@ HttpCloseTcpConnCloseEvent ( **/ EFI_STATUS HttpCreateTcpTxEvent ( - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_TOKEN_WRAP *Wrap ); /** @@ -278,7 +276,7 @@ HttpCreateTcpTxEvent ( **/ EFI_STATUS HttpCreateTcpRxEventForHeader ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ); /** @@ -292,7 +290,7 @@ HttpCreateTcpRxEventForHeader ( **/ EFI_STATUS HttpCreateTcpRxEvent ( - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_TOKEN_WRAP *Wrap ); /** @@ -303,7 +301,7 @@ HttpCreateTcpRxEvent ( **/ VOID HttpCloseTcpRxEvent ( - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_TOKEN_WRAP *Wrap ); /** @@ -318,8 +316,8 @@ HttpCloseTcpRxEvent ( **/ EFI_STATUS HttpInitProtocol ( - IN OUT HTTP_PROTOCOL *HttpInstance, - IN BOOLEAN IpVersion + IN OUT HTTP_PROTOCOL *HttpInstance, + IN BOOLEAN IpVersion ); /** @@ -330,7 +328,7 @@ HttpInitProtocol ( **/ VOID HttpCleanProtocol ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ); /** @@ -344,7 +342,7 @@ HttpCleanProtocol ( **/ EFI_STATUS HttpCreateConnection ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ); /** @@ -358,7 +356,7 @@ HttpCreateConnection ( **/ EFI_STATUS HttpCloseConnection ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ); /** @@ -373,8 +371,8 @@ HttpCloseConnection ( **/ EFI_STATUS HttpConfigureTcp4 ( - IN HTTP_PROTOCOL *HttpInstance, - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_PROTOCOL *HttpInstance, + IN HTTP_TOKEN_WRAP *Wrap ); /** @@ -389,8 +387,8 @@ HttpConfigureTcp4 ( **/ EFI_STATUS HttpConfigureTcp6 ( - IN HTTP_PROTOCOL *HttpInstance, - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_PROTOCOL *HttpInstance, + IN HTTP_TOKEN_WRAP *Wrap ); /** @@ -406,7 +404,7 @@ HttpConfigureTcp6 ( **/ EFI_STATUS HttpConnectTcp4 ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ); /** @@ -422,7 +420,7 @@ HttpConnectTcp4 ( **/ EFI_STATUS HttpConnectTcp6 ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ); /** @@ -462,9 +460,9 @@ HttpTransmitTcp ( EFI_STATUS EFIAPI HttpTokenExist ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ); /** @@ -481,9 +479,9 @@ HttpTokenExist ( EFI_STATUS EFIAPI HttpTcpNotReady ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ); /** @@ -521,9 +519,9 @@ HttpInitSession ( EFI_STATUS EFIAPI HttpTcpTransmit ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ); /** @@ -541,9 +539,9 @@ HttpTcpTransmit ( EFI_STATUS EFIAPI HttpTcpReceive ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ); /** @@ -560,10 +558,10 @@ HttpTcpReceive ( **/ EFI_STATUS HttpTcpReceiveHeader ( - IN HTTP_PROTOCOL *HttpInstance, - IN OUT UINTN *SizeofHeaders, - IN OUT UINTN *BufferSize, - IN EFI_EVENT Timeout + IN HTTP_PROTOCOL *HttpInstance, + IN OUT UINTN *SizeofHeaders, + IN OUT UINTN *BufferSize, + IN EFI_EVENT Timeout ); /** @@ -578,8 +576,8 @@ HttpTcpReceiveHeader ( **/ EFI_STATUS HttpTcpReceiveBody ( - IN HTTP_TOKEN_WRAP *Wrap, - IN EFI_HTTP_MESSAGE *HttpMsg + IN HTTP_TOKEN_WRAP *Wrap, + IN EFI_HTTP_MESSAGE *HttpMsg ); /** @@ -590,7 +588,7 @@ HttpTcpReceiveBody ( **/ VOID HttpTcpTokenCleanup ( - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_TOKEN_WRAP *Wrap ); /** @@ -605,7 +603,7 @@ HttpTcpTokenCleanup ( **/ EFI_STATUS HttpResponseWorker ( - IN HTTP_TOKEN_WRAP *Wrap + IN HTTP_TOKEN_WRAP *Wrap ); /** @@ -617,8 +615,8 @@ HttpResponseWorker ( **/ VOID HttpNotify ( - IN EDKII_HTTP_CALLBACK_EVENT Event, - IN EFI_STATUS EventStatus + IN EDKII_HTTP_CALLBACK_EVENT Event, + IN EFI_STATUS EventStatus ); #endif diff --git a/NetworkPkg/HttpDxe/HttpsSupport.c b/NetworkPkg/HttpDxe/HttpsSupport.c index d503e38515..ad611e7c38 100644 --- a/NetworkPkg/HttpDxe/HttpsSupport.c +++ b/NetworkPkg/HttpDxe/HttpsSupport.c @@ -31,15 +31,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ CHAR8 * AsciiStrCaseStr ( - IN CONST CHAR8 *String, - IN CONST CHAR8 *SearchString + IN CONST CHAR8 *String, + IN CONST CHAR8 *SearchString ) { - CONST CHAR8 *FirstMatch; - CONST CHAR8 *SearchStringTmp; + CONST CHAR8 *FirstMatch; + CONST CHAR8 *SearchStringTmp; - CHAR8 Src; - CHAR8 Dst; + CHAR8 Src; + CHAR8 Dst; // // ASSERT both strings are less long than PcdMaximumAsciiStringLength @@ -48,15 +48,16 @@ AsciiStrCaseStr ( ASSERT (AsciiStrSize (SearchString) != 0); if (*SearchString == '\0') { - return (CHAR8 *) String; + return (CHAR8 *)String; } while (*String != '\0') { SearchStringTmp = SearchString; - FirstMatch = String; + FirstMatch = String; - while ((*SearchStringTmp != '\0') - && (*String != '\0')) { + while ( (*SearchStringTmp != '\0') + && (*String != '\0')) + { Src = *String; Dst = *SearchStringTmp; @@ -77,7 +78,7 @@ AsciiStrCaseStr ( } if (*SearchStringTmp == '\0') { - return (CHAR8 *) FirstMatch; + return (CHAR8 *)FirstMatch; } String = FirstMatch + 1; @@ -95,12 +96,12 @@ AsciiStrCaseStr ( VOID EFIAPI FreeNbufList ( - IN VOID *Arg + IN VOID *Arg ) { ASSERT (Arg != NULL); - NetbufFreeList ((LIST_ENTRY *) Arg); + NetbufFreeList ((LIST_ENTRY *)Arg); FreePool (Arg); } @@ -115,7 +116,7 @@ FreeNbufList ( **/ BOOLEAN IsHttpsUrl ( - IN CHAR8 *Url + IN CHAR8 *Url ) { CHAR8 *Tmp; @@ -123,7 +124,7 @@ IsHttpsUrl ( Tmp = NULL; Tmp = AsciiStrCaseStr (Url, HTTPS_FLAG); - if (Tmp != NULL && Tmp == Url) { + if ((Tmp != NULL) && (Tmp == Url)) { return TRUE; } @@ -144,14 +145,14 @@ IsHttpsUrl ( EFI_HANDLE EFIAPI TlsCreateChild ( - IN EFI_HANDLE ImageHandle, - OUT EFI_SERVICE_BINDING_PROTOCOL **TlsSb, - OUT EFI_TLS_PROTOCOL **TlsProto, - OUT EFI_TLS_CONFIGURATION_PROTOCOL **TlsConfiguration + IN EFI_HANDLE ImageHandle, + OUT EFI_SERVICE_BINDING_PROTOCOL **TlsSb, + OUT EFI_TLS_PROTOCOL **TlsProto, + OUT EFI_TLS_CONFIGURATION_PROTOCOL **TlsConfiguration ) { - EFI_STATUS Status; - EFI_HANDLE TlsChildHandle; + EFI_STATUS Status; + EFI_HANDLE TlsChildHandle; TlsChildHandle = 0; @@ -159,10 +160,10 @@ TlsCreateChild ( // Locate TlsServiceBinding protocol. // gBS->LocateProtocol ( - &gEfiTlsServiceBindingProtocolGuid, - NULL, - (VOID **) TlsSb - ); + &gEfiTlsServiceBindingProtocolGuid, + NULL, + (VOID **)TlsSb + ); if (*TlsSb == NULL) { return NULL; } @@ -175,7 +176,7 @@ TlsCreateChild ( Status = gBS->OpenProtocol ( TlsChildHandle, &gEfiTlsProtocolGuid, - (VOID **) TlsProto, + (VOID **)TlsProto, ImageHandle, TlsChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -188,7 +189,7 @@ TlsCreateChild ( Status = gBS->OpenProtocol ( TlsChildHandle, &gEfiTlsConfigurationProtocolGuid, - (VOID **) TlsConfiguration, + (VOID **)TlsConfiguration, ImageHandle, TlsChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -214,10 +215,10 @@ TlsCreateChild ( EFI_STATUS EFIAPI TlsCreateTxRxEvent ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; + EFI_STATUS Status; if (!HttpInstance->LocalAddressIsIPv6) { // @@ -234,14 +235,14 @@ TlsCreateTxRxEvent ( goto ERROR; } - HttpInstance->Tcp4TlsTxData.Push = TRUE; - HttpInstance->Tcp4TlsTxData.Urgent = FALSE; - HttpInstance->Tcp4TlsTxData.DataLength = 0; - HttpInstance->Tcp4TlsTxData.FragmentCount = 1; + HttpInstance->Tcp4TlsTxData.Push = TRUE; + HttpInstance->Tcp4TlsTxData.Urgent = FALSE; + HttpInstance->Tcp4TlsTxData.DataLength = 0; + HttpInstance->Tcp4TlsTxData.FragmentCount = 1; HttpInstance->Tcp4TlsTxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp4TlsTxData.DataLength; HttpInstance->Tcp4TlsTxData.FragmentTable[0].FragmentBuffer = NULL; - HttpInstance->Tcp4TlsTxToken.Packet.TxData = &HttpInstance->Tcp4TlsTxData; - HttpInstance->Tcp4TlsTxToken.CompletionToken.Status = EFI_NOT_READY; + HttpInstance->Tcp4TlsTxToken.Packet.TxData = &HttpInstance->Tcp4TlsTxData; + HttpInstance->Tcp4TlsTxToken.CompletionToken.Status = EFI_NOT_READY; // // For Tcp4TlsRxToken. @@ -257,12 +258,12 @@ TlsCreateTxRxEvent ( goto ERROR; } - HttpInstance->Tcp4TlsRxData.DataLength = 0; - HttpInstance->Tcp4TlsRxData.FragmentCount = 1; - HttpInstance->Tcp4TlsRxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp4TlsRxData.DataLength ; - HttpInstance->Tcp4TlsRxData.FragmentTable[0].FragmentBuffer = NULL; - HttpInstance->Tcp4TlsRxToken.Packet.RxData = &HttpInstance->Tcp4TlsRxData; - HttpInstance->Tcp4TlsRxToken.CompletionToken.Status = EFI_NOT_READY; + HttpInstance->Tcp4TlsRxData.DataLength = 0; + HttpInstance->Tcp4TlsRxData.FragmentCount = 1; + HttpInstance->Tcp4TlsRxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp4TlsRxData.DataLength; + HttpInstance->Tcp4TlsRxData.FragmentTable[0].FragmentBuffer = NULL; + HttpInstance->Tcp4TlsRxToken.Packet.RxData = &HttpInstance->Tcp4TlsRxData; + HttpInstance->Tcp4TlsRxToken.CompletionToken.Status = EFI_NOT_READY; } else { // // For Tcp6TlsTxToken. @@ -278,14 +279,14 @@ TlsCreateTxRxEvent ( goto ERROR; } - HttpInstance->Tcp6TlsTxData.Push = TRUE; - HttpInstance->Tcp6TlsTxData.Urgent = FALSE; - HttpInstance->Tcp6TlsTxData.DataLength = 0; - HttpInstance->Tcp6TlsTxData.FragmentCount = 1; + HttpInstance->Tcp6TlsTxData.Push = TRUE; + HttpInstance->Tcp6TlsTxData.Urgent = FALSE; + HttpInstance->Tcp6TlsTxData.DataLength = 0; + HttpInstance->Tcp6TlsTxData.FragmentCount = 1; HttpInstance->Tcp6TlsTxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp6TlsTxData.DataLength; HttpInstance->Tcp6TlsTxData.FragmentTable[0].FragmentBuffer = NULL; - HttpInstance->Tcp6TlsTxToken.Packet.TxData = &HttpInstance->Tcp6TlsTxData; - HttpInstance->Tcp6TlsTxToken.CompletionToken.Status = EFI_NOT_READY; + HttpInstance->Tcp6TlsTxToken.Packet.TxData = &HttpInstance->Tcp6TlsTxData; + HttpInstance->Tcp6TlsTxToken.CompletionToken.Status = EFI_NOT_READY; // // For Tcp6TlsRxToken. @@ -301,12 +302,12 @@ TlsCreateTxRxEvent ( goto ERROR; } - HttpInstance->Tcp6TlsRxData.DataLength = 0; - HttpInstance->Tcp6TlsRxData.FragmentCount = 1; - HttpInstance->Tcp6TlsRxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp6TlsRxData.DataLength ; - HttpInstance->Tcp6TlsRxData.FragmentTable[0].FragmentBuffer = NULL; - HttpInstance->Tcp6TlsRxToken.Packet.RxData = &HttpInstance->Tcp6TlsRxData; - HttpInstance->Tcp6TlsRxToken.CompletionToken.Status = EFI_NOT_READY; + HttpInstance->Tcp6TlsRxData.DataLength = 0; + HttpInstance->Tcp6TlsRxData.FragmentCount = 1; + HttpInstance->Tcp6TlsRxData.FragmentTable[0].FragmentLength = HttpInstance->Tcp6TlsRxData.DataLength; + HttpInstance->Tcp6TlsRxData.FragmentTable[0].FragmentBuffer = NULL; + HttpInstance->Tcp6TlsRxToken.Packet.RxData = &HttpInstance->Tcp6TlsRxData; + HttpInstance->Tcp6TlsRxToken.CompletionToken.Status = EFI_NOT_READY; } return Status; @@ -329,13 +330,13 @@ ERROR: VOID EFIAPI TlsCloseTxRxEvent ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { ASSERT (HttpInstance != NULL); if (!HttpInstance->LocalAddressIsIPv6) { if (NULL != HttpInstance->Tcp4TlsTxToken.CompletionToken.Event) { - gBS->CloseEvent(HttpInstance->Tcp4TlsTxToken.CompletionToken.Event); + gBS->CloseEvent (HttpInstance->Tcp4TlsTxToken.CompletionToken.Event); HttpInstance->Tcp4TlsTxToken.CompletionToken.Event = NULL; } @@ -345,7 +346,7 @@ TlsCloseTxRxEvent ( } } else { if (NULL != HttpInstance->Tcp6TlsTxToken.CompletionToken.Event) { - gBS->CloseEvent(HttpInstance->Tcp6TlsTxToken.CompletionToken.Event); + gBS->CloseEvent (HttpInstance->Tcp6TlsTxToken.CompletionToken.Event); HttpInstance->Tcp6TlsTxToken.CompletionToken.Event = NULL; } @@ -369,7 +370,7 @@ TlsCloseTxRxEvent ( **/ EFI_STATUS TlsConfigCertificate ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ) { EFI_STATUS Status; @@ -388,15 +389,15 @@ TlsConfigCertificate ( // // Try to read the TlsCaCertificate variable. // - Status = gRT->GetVariable ( - EFI_TLS_CA_CERTIFICATE_VARIABLE, - &gEfiTlsCaCertificateGuid, - NULL, - &CACertSize, - NULL - ); + Status = gRT->GetVariable ( + EFI_TLS_CA_CERTIFICATE_VARIABLE, + &gEfiTlsCaCertificateGuid, + NULL, + &CACertSize, + NULL + ); - if (EFI_ERROR (Status) && Status != EFI_BUFFER_TOO_SMALL) { + if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) { return Status; } @@ -427,62 +428,82 @@ TlsConfigCertificate ( // // Sanity check // - Status = EFI_INVALID_PARAMETER; - CertCount = 0; - ItemDataSize = (UINT32) CACertSize; + Status = EFI_INVALID_PARAMETER; + CertCount = 0; + ItemDataSize = (UINT32)CACertSize; while (ItemDataSize > 0) { if (ItemDataSize < sizeof (EFI_SIGNATURE_LIST)) { - DEBUG ((DEBUG_ERROR, "%a: truncated EFI_SIGNATURE_LIST header\n", - __FUNCTION__)); + DEBUG (( + DEBUG_ERROR, + "%a: truncated EFI_SIGNATURE_LIST header\n", + __FUNCTION__ + )); goto FreeCACert; } - CertList = (EFI_SIGNATURE_LIST *) (CACert + (CACertSize - ItemDataSize)); + CertList = (EFI_SIGNATURE_LIST *)(CACert + (CACertSize - ItemDataSize)); if (CertList->SignatureListSize < sizeof (EFI_SIGNATURE_LIST)) { - DEBUG ((DEBUG_ERROR, + DEBUG (( + DEBUG_ERROR, "%a: SignatureListSize too small for EFI_SIGNATURE_LIST\n", - __FUNCTION__)); + __FUNCTION__ + )); goto FreeCACert; } if (CertList->SignatureListSize > ItemDataSize) { - DEBUG ((DEBUG_ERROR, "%a: truncated EFI_SIGNATURE_LIST body\n", - __FUNCTION__)); + DEBUG (( + DEBUG_ERROR, + "%a: truncated EFI_SIGNATURE_LIST body\n", + __FUNCTION__ + )); goto FreeCACert; } if (!CompareGuid (&CertList->SignatureType, &gEfiCertX509Guid)) { - DEBUG ((DEBUG_ERROR, "%a: only X509 certificates are supported\n", - __FUNCTION__)); + DEBUG (( + DEBUG_ERROR, + "%a: only X509 certificates are supported\n", + __FUNCTION__ + )); Status = EFI_UNSUPPORTED; goto FreeCACert; } if (CertList->SignatureHeaderSize != 0) { - DEBUG ((DEBUG_ERROR, "%a: SignatureHeaderSize must be 0 for X509\n", - __FUNCTION__)); + DEBUG (( + DEBUG_ERROR, + "%a: SignatureHeaderSize must be 0 for X509\n", + __FUNCTION__ + )); goto FreeCACert; } if (CertList->SignatureSize < sizeof (EFI_SIGNATURE_DATA)) { - DEBUG ((DEBUG_ERROR, - "%a: SignatureSize too small for EFI_SIGNATURE_DATA\n", __FUNCTION__)); + DEBUG (( + DEBUG_ERROR, + "%a: SignatureSize too small for EFI_SIGNATURE_DATA\n", + __FUNCTION__ + )); goto FreeCACert; } CertArraySizeInBytes = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST)); if (CertArraySizeInBytes % CertList->SignatureSize != 0) { - DEBUG ((DEBUG_ERROR, + DEBUG (( + DEBUG_ERROR, "%a: EFI_SIGNATURE_DATA array not a multiple of SignatureSize\n", - __FUNCTION__)); + __FUNCTION__ + )); goto FreeCACert; } - CertCount += CertArraySizeInBytes / CertList->SignatureSize; + CertCount += CertArraySizeInBytes / CertList->SignatureSize; ItemDataSize -= CertList->SignatureListSize; } + if (CertCount == 0) { DEBUG ((DEBUG_ERROR, "%a: no X509 certificates provided\n", __FUNCTION__)); goto FreeCACert; @@ -491,11 +512,11 @@ TlsConfigCertificate ( // // Enumerate all data and erasing the target item. // - ItemDataSize = (UINT32) CACertSize; - CertList = (EFI_SIGNATURE_LIST *) CACert; + ItemDataSize = (UINT32)CACertSize; + CertList = (EFI_SIGNATURE_LIST *)CACert; while ((ItemDataSize > 0) && (ItemDataSize >= CertList->SignatureListSize)) { - Cert = (EFI_SIGNATURE_DATA *) ((UINT8 *) CertList + sizeof (EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); - CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; + Cert = (EFI_SIGNATURE_DATA *)((UINT8 *)CertList + sizeof (EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); + CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; for (Index = 0; Index < CertCount; Index++) { // // EfiTlsConfigDataTypeCACertificate @@ -510,11 +531,11 @@ TlsConfigCertificate ( goto FreeCACert; } - Cert = (EFI_SIGNATURE_DATA *) ((UINT8 *) Cert + CertList->SignatureSize); + Cert = (EFI_SIGNATURE_DATA *)((UINT8 *)Cert + CertList->SignatureSize); } ItemDataSize -= CertList->SignatureListSize; - CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList + CertList->SignatureListSize); + CertList = (EFI_SIGNATURE_LIST *)((UINT8 *)CertList + CertList->SignatureListSize); } FreeCACert: @@ -537,12 +558,12 @@ FreeCACert: **/ EFI_STATUS TlsConfigCipherList ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; - UINT8 *CipherList; - UINTN CipherListSize; + EFI_STATUS Status; + UINT8 *CipherList; + UINTN CipherListSize; CipherList = NULL; CipherListSize = 0; @@ -550,13 +571,13 @@ TlsConfigCipherList ( // // Try to read the HttpTlsCipherList variable. // - Status = gRT->GetVariable ( - EDKII_HTTP_TLS_CIPHER_LIST_VARIABLE, - &gEdkiiHttpTlsCipherListGuid, - NULL, - &CipherListSize, - NULL - ); + Status = gRT->GetVariable ( + EDKII_HTTP_TLS_CIPHER_LIST_VARIABLE, + &gEdkiiHttpTlsCipherListGuid, + NULL, + &CipherListSize, + NULL + ); ASSERT (EFI_ERROR (Status)); if (Status != EFI_BUFFER_TOO_SMALL) { return Status; @@ -615,10 +636,10 @@ ON_EXIT: EFI_STATUS EFIAPI TlsConfigureSession ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; + EFI_STATUS Status; // // TlsConfigData initialization @@ -679,7 +700,7 @@ TlsConfigureSession ( // Tls Cipher List // Status = TlsConfigCipherList (HttpInstance); - if (EFI_ERROR (Status) && Status != EFI_NOT_FOUND) { + if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) { DEBUG ((DEBUG_ERROR, "TlsConfigCipherList: return %r error.\n", Status)); return Status; } @@ -725,13 +746,13 @@ ERROR: EFI_STATUS EFIAPI TlsCommonTransmit ( - IN OUT HTTP_PROTOCOL *HttpInstance, - IN NET_BUF *Packet + IN OUT HTTP_PROTOCOL *HttpInstance, + IN NET_BUF *Packet ) { - EFI_STATUS Status; - VOID *Data; - UINTN Size; + EFI_STATUS Status; + VOID *Data; + UINTN Size; if ((HttpInstance == NULL) || (Packet == NULL)) { return EFI_INVALID_PARAMETER; @@ -751,29 +772,29 @@ TlsCommonTransmit ( } if (!HttpInstance->LocalAddressIsIPv6) { - ((EFI_TCP4_TRANSMIT_DATA *) Data)->Push = TRUE; - ((EFI_TCP4_TRANSMIT_DATA *) Data)->Urgent = FALSE; - ((EFI_TCP4_TRANSMIT_DATA *) Data)->DataLength = Packet->TotalSize; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->Push = TRUE; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->Urgent = FALSE; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->DataLength = Packet->TotalSize; // // Build the fragment table. // - ((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentCount = Packet->BlockOpNum; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->FragmentCount = Packet->BlockOpNum; NetbufBuildExt ( Packet, - (NET_FRAGMENT *) &((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentTable[0], - &((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentCount + (NET_FRAGMENT *)&((EFI_TCP4_TRANSMIT_DATA *)Data)->FragmentTable[0], + &((EFI_TCP4_TRANSMIT_DATA *)Data)->FragmentCount ); - HttpInstance->Tcp4TlsTxToken.Packet.TxData = (EFI_TCP4_TRANSMIT_DATA *) Data; + HttpInstance->Tcp4TlsTxToken.Packet.TxData = (EFI_TCP4_TRANSMIT_DATA *)Data; Status = EFI_DEVICE_ERROR; // // Transmit the packet. // - Status = HttpInstance->Tcp4->Transmit (HttpInstance->Tcp4, &HttpInstance->Tcp4TlsTxToken); + Status = HttpInstance->Tcp4->Transmit (HttpInstance->Tcp4, &HttpInstance->Tcp4TlsTxToken); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -783,31 +804,31 @@ TlsCommonTransmit ( } HttpInstance->TlsIsTxDone = FALSE; - Status = HttpInstance->Tcp4TlsTxToken.CompletionToken.Status; + Status = HttpInstance->Tcp4TlsTxToken.CompletionToken.Status; } else { - ((EFI_TCP6_TRANSMIT_DATA *) Data)->Push = TRUE; - ((EFI_TCP6_TRANSMIT_DATA *) Data)->Urgent = FALSE; - ((EFI_TCP6_TRANSMIT_DATA *) Data)->DataLength = Packet->TotalSize; + ((EFI_TCP6_TRANSMIT_DATA *)Data)->Push = TRUE; + ((EFI_TCP6_TRANSMIT_DATA *)Data)->Urgent = FALSE; + ((EFI_TCP6_TRANSMIT_DATA *)Data)->DataLength = Packet->TotalSize; // // Build the fragment table. // - ((EFI_TCP6_TRANSMIT_DATA *) Data)->FragmentCount = Packet->BlockOpNum; + ((EFI_TCP6_TRANSMIT_DATA *)Data)->FragmentCount = Packet->BlockOpNum; NetbufBuildExt ( Packet, - (NET_FRAGMENT *) &((EFI_TCP6_TRANSMIT_DATA *) Data)->FragmentTable[0], - &((EFI_TCP6_TRANSMIT_DATA *) Data)->FragmentCount + (NET_FRAGMENT *)&((EFI_TCP6_TRANSMIT_DATA *)Data)->FragmentTable[0], + &((EFI_TCP6_TRANSMIT_DATA *)Data)->FragmentCount ); - HttpInstance->Tcp6TlsTxToken.Packet.TxData = (EFI_TCP6_TRANSMIT_DATA *) Data; + HttpInstance->Tcp6TlsTxToken.Packet.TxData = (EFI_TCP6_TRANSMIT_DATA *)Data; Status = EFI_DEVICE_ERROR; // // Transmit the packet. // - Status = HttpInstance->Tcp6->Transmit (HttpInstance->Tcp6, &HttpInstance->Tcp6TlsTxToken); + Status = HttpInstance->Tcp6->Transmit (HttpInstance->Tcp6, &HttpInstance->Tcp6TlsTxToken); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -817,7 +838,7 @@ TlsCommonTransmit ( } HttpInstance->TlsIsTxDone = FALSE; - Status = HttpInstance->Tcp6TlsTxToken.CompletionToken.Status; + Status = HttpInstance->Tcp6TlsTxToken.CompletionToken.Status; } ON_EXIT: @@ -843,17 +864,17 @@ ON_EXIT: EFI_STATUS EFIAPI TlsCommonReceive ( - IN OUT HTTP_PROTOCOL *HttpInstance, - IN NET_BUF *Packet, - IN EFI_EVENT Timeout + IN OUT HTTP_PROTOCOL *HttpInstance, + IN NET_BUF *Packet, + IN EFI_EVENT Timeout ) { - EFI_TCP4_RECEIVE_DATA *Tcp4RxData; - EFI_TCP6_RECEIVE_DATA *Tcp6RxData; - EFI_STATUS Status; - NET_FRAGMENT *Fragment; - UINT32 FragmentCount; - UINT32 CurrentFragment; + EFI_TCP4_RECEIVE_DATA *Tcp4RxData; + EFI_TCP6_RECEIVE_DATA *Tcp6RxData; + EFI_STATUS Status; + NET_FRAGMENT *Fragment; + UINT32 FragmentCount; + UINT32 CurrentFragment; Tcp4RxData = NULL; Tcp6RxData = NULL; @@ -879,30 +900,33 @@ TlsCommonReceive ( if (Tcp4RxData == NULL) { return EFI_INVALID_PARAMETER; } - Tcp4RxData->FragmentCount = 1; + + Tcp4RxData->FragmentCount = 1; } else { Tcp6RxData = HttpInstance->Tcp6TlsRxToken.Packet.RxData; if (Tcp6RxData == NULL) { return EFI_INVALID_PARAMETER; } - Tcp6RxData->FragmentCount = 1; + + Tcp6RxData->FragmentCount = 1; } - CurrentFragment = 0; - Status = EFI_SUCCESS; + CurrentFragment = 0; + Status = EFI_SUCCESS; while (CurrentFragment < FragmentCount) { if (!HttpInstance->LocalAddressIsIPv6) { - Tcp4RxData->DataLength = Fragment[CurrentFragment].Len; - Tcp4RxData->FragmentTable[0].FragmentLength = Fragment[CurrentFragment].Len; - Tcp4RxData->FragmentTable[0].FragmentBuffer = Fragment[CurrentFragment].Bulk; - Status = HttpInstance->Tcp4->Receive (HttpInstance->Tcp4, &HttpInstance->Tcp4TlsRxToken); + Tcp4RxData->DataLength = Fragment[CurrentFragment].Len; + Tcp4RxData->FragmentTable[0].FragmentLength = Fragment[CurrentFragment].Len; + Tcp4RxData->FragmentTable[0].FragmentBuffer = Fragment[CurrentFragment].Bulk; + Status = HttpInstance->Tcp4->Receive (HttpInstance->Tcp4, &HttpInstance->Tcp4TlsRxToken); } else { - Tcp6RxData->DataLength = Fragment[CurrentFragment].Len; - Tcp6RxData->FragmentTable[0].FragmentLength = Fragment[CurrentFragment].Len; - Tcp6RxData->FragmentTable[0].FragmentBuffer = Fragment[CurrentFragment].Bulk; - Status = HttpInstance->Tcp6->Receive (HttpInstance->Tcp6, &HttpInstance->Tcp6TlsRxToken); + Tcp6RxData->DataLength = Fragment[CurrentFragment].Len; + Tcp6RxData->FragmentTable[0].FragmentLength = Fragment[CurrentFragment].Len; + Tcp6RxData->FragmentTable[0].FragmentBuffer = Fragment[CurrentFragment].Bulk; + Status = HttpInstance->Tcp6->Receive (HttpInstance->Tcp6, &HttpInstance->Tcp6TlsRxToken); } + if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -988,22 +1012,22 @@ ON_EXIT: EFI_STATUS EFIAPI TlsReceiveOnePdu ( - IN OUT HTTP_PROTOCOL *HttpInstance, - OUT NET_BUF **Pdu, - IN EFI_EVENT Timeout + IN OUT HTTP_PROTOCOL *HttpInstance, + OUT NET_BUF **Pdu, + IN EFI_EVENT Timeout ) { - EFI_STATUS Status; + EFI_STATUS Status; - LIST_ENTRY *NbufList; + LIST_ENTRY *NbufList; - UINT32 Len; + UINT32 Len; - NET_BUF *PduHdr; - UINT8 *Header; - TLS_RECORD_HEADER RecordHeader; + NET_BUF *PduHdr; + UINT8 *Header; + TLS_RECORD_HEADER RecordHeader; - NET_BUF *DataSeg; + NET_BUF *DataSeg; NbufList = NULL; PduHdr = NULL; @@ -1020,8 +1044,8 @@ TlsReceiveOnePdu ( // // Allocate buffer to receive one TLS header. // - Len = TLS_RECORD_HEADER_LENGTH; - PduHdr = NetbufAlloc (Len); + Len = TLS_RECORD_HEADER_LENGTH; + PduHdr = NetbufAlloc (Len); if (PduHdr == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; @@ -1041,23 +1065,24 @@ TlsReceiveOnePdu ( goto ON_EXIT; } - RecordHeader = *(TLS_RECORD_HEADER *) Header; - if ((RecordHeader.ContentType == TlsContentTypeHandshake || - RecordHeader.ContentType == TlsContentTypeAlert || - RecordHeader.ContentType == TlsContentTypeChangeCipherSpec || - RecordHeader.ContentType == TlsContentTypeApplicationData) && - (RecordHeader.Version.Major == 0x03) && /// Major versions are same. - (RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor ==TLS11_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR) - ) { + RecordHeader = *(TLS_RECORD_HEADER *)Header; + if (((RecordHeader.ContentType == TlsContentTypeHandshake) || + (RecordHeader.ContentType == TlsContentTypeAlert) || + (RecordHeader.ContentType == TlsContentTypeChangeCipherSpec) || + (RecordHeader.ContentType == TlsContentTypeApplicationData)) && + (RecordHeader.Version.Major == 0x03) && /// Major versions are same. + ((RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS11_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR)) + ) + { InsertTailList (NbufList, &PduHdr->List); } else { Status = EFI_PROTOCOL_ERROR; goto ON_EXIT; } - Len = SwapBytes16(RecordHeader.Length); + Len = SwapBytes16 (RecordHeader.Length); if (Len == 0) { // // No TLS payload. @@ -1122,37 +1147,37 @@ ON_EXIT: EFI_STATUS EFIAPI TlsConnectSession ( - IN HTTP_PROTOCOL *HttpInstance, - IN EFI_EVENT Timeout + IN HTTP_PROTOCOL *HttpInstance, + IN EFI_EVENT Timeout ) { - EFI_STATUS Status; - UINT8 *BufferOut; - UINTN BufferOutSize; - NET_BUF *PacketOut; - UINT8 *DataOut; - NET_BUF *Pdu; - UINT8 *BufferIn; - UINTN BufferInSize; - UINT8 *GetSessionDataBuffer; - UINTN GetSessionDataBufferSize; - - BufferOut = NULL; - PacketOut = NULL; - DataOut = NULL; - Pdu = NULL; - BufferIn = NULL; + EFI_STATUS Status; + UINT8 *BufferOut; + UINTN BufferOutSize; + NET_BUF *PacketOut; + UINT8 *DataOut; + NET_BUF *Pdu; + UINT8 *BufferIn; + UINTN BufferInSize; + UINT8 *GetSessionDataBuffer; + UINTN GetSessionDataBufferSize; + + BufferOut = NULL; + PacketOut = NULL; + DataOut = NULL; + Pdu = NULL; + BufferIn = NULL; // // Initialize TLS state. // HttpInstance->TlsSessionState = EfiTlsSessionNotStarted; - Status = HttpInstance->Tls->SetSessionData ( - HttpInstance->Tls, - EfiTlsSessionState, - &(HttpInstance->TlsSessionState), - sizeof (EFI_TLS_SESSION_STATE) - ); + Status = HttpInstance->Tls->SetSessionData ( + HttpInstance->Tls, + EfiTlsSessionState, + &(HttpInstance->TlsSessionState), + sizeof (EFI_TLS_SESSION_STATE) + ); if (EFI_ERROR (Status)) { return Status; } @@ -1161,7 +1186,7 @@ TlsConnectSession ( // Create ClientHello // BufferOutSize = DEF_BUF_LEN; - BufferOut = AllocateZeroPool (BufferOutSize); + BufferOut = AllocateZeroPool (BufferOutSize); if (BufferOut == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1190,6 +1215,7 @@ TlsConnectSession ( &BufferOutSize ); } + if (EFI_ERROR (Status)) { FreePool (BufferOut); return Status; @@ -1198,8 +1224,8 @@ TlsConnectSession ( // // Transmit ClientHello // - PacketOut = NetbufAlloc ((UINT32) BufferOutSize); - DataOut = NetbufAllocSpace (PacketOut, (UINT32) BufferOutSize, NET_BUF_TAIL); + PacketOut = NetbufAlloc ((UINT32)BufferOutSize); + DataOut = NetbufAllocSpace (PacketOut, (UINT32)BufferOutSize, NET_BUF_TAIL); if (DataOut == NULL) { FreePool (BufferOut); return EFI_OUT_OF_RESOURCES; @@ -1215,8 +1241,9 @@ TlsConnectSession ( return Status; } - while(HttpInstance->TlsSessionState != EfiTlsSessionDataTransferring && \ - ((Timeout == NULL) || EFI_ERROR (gBS->CheckEvent (Timeout)))) { + while (HttpInstance->TlsSessionState != EfiTlsSessionDataTransferring && \ + ((Timeout == NULL) || EFI_ERROR (gBS->CheckEvent (Timeout)))) + { // // Receive one TLS record. // @@ -1226,7 +1253,7 @@ TlsConnectSession ( } BufferInSize = Pdu->TotalSize; - BufferIn = AllocateZeroPool (BufferInSize); + BufferIn = AllocateZeroPool (BufferInSize); if (BufferIn == NULL) { NetbufFree (Pdu); Status = EFI_OUT_OF_RESOURCES; @@ -1241,7 +1268,7 @@ TlsConnectSession ( // Handle Receive data. // BufferOutSize = DEF_BUF_LEN; - BufferOut = AllocateZeroPool (BufferOutSize); + BufferOut = AllocateZeroPool (BufferOutSize); if (BufferOut == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1255,21 +1282,21 @@ TlsConnectSession ( &BufferOutSize ); if (Status == EFI_BUFFER_TOO_SMALL) { - FreePool (BufferOut); - BufferOut = AllocateZeroPool (BufferOutSize); - if (BufferOut == NULL) { - FreePool (BufferIn); - Status = EFI_OUT_OF_RESOURCES; - return Status; - } - - Status = HttpInstance->Tls->BuildResponsePacket ( - HttpInstance->Tls, - BufferIn, - BufferInSize, - BufferOut, - &BufferOutSize - ); + FreePool (BufferOut); + BufferOut = AllocateZeroPool (BufferOutSize); + if (BufferOut == NULL) { + FreePool (BufferIn); + Status = EFI_OUT_OF_RESOURCES; + return Status; + } + + Status = HttpInstance->Tls->BuildResponsePacket ( + HttpInstance->Tls, + BufferIn, + BufferInSize, + BufferOut, + &BufferOutSize + ); } FreePool (BufferIn); @@ -1283,8 +1310,8 @@ TlsConnectSession ( // // Transmit the response packet. // - PacketOut = NetbufAlloc ((UINT32) BufferOutSize); - DataOut = NetbufAllocSpace (PacketOut, (UINT32) BufferOutSize, NET_BUF_TAIL); + PacketOut = NetbufAlloc ((UINT32)BufferOutSize); + DataOut = NetbufAllocSpace (PacketOut, (UINT32)BufferOutSize, NET_BUF_TAIL); if (DataOut == NULL) { FreePool (BufferOut); return EFI_OUT_OF_RESOURCES; @@ -1308,7 +1335,7 @@ TlsConnectSession ( // Get the session state, then decide whether need to continue handle received packet. // GetSessionDataBufferSize = DEF_BUF_LEN; - GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); + GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); if (GetSessionDataBuffer == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1321,31 +1348,32 @@ TlsConnectSession ( &GetSessionDataBufferSize ); if (Status == EFI_BUFFER_TOO_SMALL) { - FreePool (GetSessionDataBuffer); - GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); - if (GetSessionDataBuffer == NULL) { - Status = EFI_OUT_OF_RESOURCES; - return Status; - } - - Status = HttpInstance->Tls->GetSessionData ( - HttpInstance->Tls, - EfiTlsSessionState, - GetSessionDataBuffer, - &GetSessionDataBufferSize - ); + FreePool (GetSessionDataBuffer); + GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); + if (GetSessionDataBuffer == NULL) { + Status = EFI_OUT_OF_RESOURCES; + return Status; + } + + Status = HttpInstance->Tls->GetSessionData ( + HttpInstance->Tls, + EfiTlsSessionState, + GetSessionDataBuffer, + &GetSessionDataBufferSize + ); } + if (EFI_ERROR (Status)) { - FreePool(GetSessionDataBuffer); + FreePool (GetSessionDataBuffer); return Status; } - ASSERT(GetSessionDataBufferSize == sizeof (EFI_TLS_SESSION_STATE)); - HttpInstance->TlsSessionState = *(EFI_TLS_SESSION_STATE *) GetSessionDataBuffer; + ASSERT (GetSessionDataBufferSize == sizeof (EFI_TLS_SESSION_STATE)); + HttpInstance->TlsSessionState = *(EFI_TLS_SESSION_STATE *)GetSessionDataBuffer; FreePool (GetSessionDataBuffer); - if(HttpInstance->TlsSessionState == EfiTlsSessionError) { + if (HttpInstance->TlsSessionState == EfiTlsSessionError) { return EFI_ABORTED; } } @@ -1371,16 +1399,16 @@ TlsConnectSession ( EFI_STATUS EFIAPI TlsCloseSession ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ) { - EFI_STATUS Status; + EFI_STATUS Status; - UINT8 *BufferOut; - UINTN BufferOutSize; + UINT8 *BufferOut; + UINTN BufferOutSize; - NET_BUF *PacketOut; - UINT8 *DataOut; + NET_BUF *PacketOut; + UINT8 *DataOut; Status = EFI_SUCCESS; BufferOut = NULL; @@ -1404,7 +1432,7 @@ TlsCloseSession ( } BufferOutSize = DEF_BUF_LEN; - BufferOut = AllocateZeroPool (BufferOutSize); + BufferOut = AllocateZeroPool (BufferOutSize); if (BufferOut == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1439,8 +1467,8 @@ TlsCloseSession ( return Status; } - PacketOut = NetbufAlloc ((UINT32) BufferOutSize); - DataOut = NetbufAllocSpace (PacketOut, (UINT32) BufferOutSize, NET_BUF_TAIL); + PacketOut = NetbufAlloc ((UINT32)BufferOutSize); + DataOut = NetbufAllocSpace (PacketOut, (UINT32)BufferOutSize, NET_BUF_TAIL); if (DataOut == NULL) { FreePool (BufferOut); return EFI_OUT_OF_RESOURCES; @@ -1482,28 +1510,28 @@ TlsCloseSession ( EFI_STATUS EFIAPI TlsProcessMessage ( - IN HTTP_PROTOCOL *HttpInstance, - IN UINT8 *Message, - IN UINTN MessageSize, - IN EFI_TLS_CRYPT_MODE ProcessMode, - IN OUT NET_FRAGMENT *Fragment + IN HTTP_PROTOCOL *HttpInstance, + IN UINT8 *Message, + IN UINTN MessageSize, + IN EFI_TLS_CRYPT_MODE ProcessMode, + IN OUT NET_FRAGMENT *Fragment ) { - EFI_STATUS Status; - UINT8 *Buffer; - UINT32 BufferSize; - UINT32 BytesCopied; - EFI_TLS_FRAGMENT_DATA *FragmentTable; - UINT32 FragmentCount; - EFI_TLS_FRAGMENT_DATA *OriginalFragmentTable; - UINTN Index; - - Status = EFI_SUCCESS; - Buffer = NULL; - BufferSize = 0; - BytesCopied = 0; - FragmentTable = NULL; - OriginalFragmentTable = NULL; + EFI_STATUS Status; + UINT8 *Buffer; + UINT32 BufferSize; + UINT32 BytesCopied; + EFI_TLS_FRAGMENT_DATA *FragmentTable; + UINT32 FragmentCount; + EFI_TLS_FRAGMENT_DATA *OriginalFragmentTable; + UINTN Index; + + Status = EFI_SUCCESS; + Buffer = NULL; + BufferSize = 0; + BytesCopied = 0; + FragmentTable = NULL; + OriginalFragmentTable = NULL; // // Rebuild fragment table from BufferIn. @@ -1515,7 +1543,7 @@ TlsProcessMessage ( goto ON_EXIT; } - FragmentTable->FragmentLength = (UINT32) MessageSize; + FragmentTable->FragmentLength = (UINT32)MessageSize; FragmentTable->FragmentBuffer = Message; // @@ -1575,9 +1603,10 @@ TlsProcessMessage ( ON_EXIT: if (OriginalFragmentTable != NULL) { - if( FragmentTable == OriginalFragmentTable) { + if ( FragmentTable == OriginalFragmentTable) { FragmentTable = NULL; } + FreePool (OriginalFragmentTable); OriginalFragmentTable = NULL; } @@ -1609,23 +1638,23 @@ ON_EXIT: EFI_STATUS EFIAPI HttpsReceive ( - IN HTTP_PROTOCOL *HttpInstance, - IN OUT NET_FRAGMENT *Fragment, - IN EFI_EVENT Timeout + IN HTTP_PROTOCOL *HttpInstance, + IN OUT NET_FRAGMENT *Fragment, + IN EFI_EVENT Timeout ) { - EFI_STATUS Status; - NET_BUF *Pdu; - TLS_RECORD_HEADER RecordHeader; - UINT8 *BufferIn; - UINTN BufferInSize; - NET_FRAGMENT TempFragment; - UINT8 *BufferOut; - UINTN BufferOutSize; - NET_BUF *PacketOut; - UINT8 *DataOut; - UINT8 *GetSessionDataBuffer; - UINTN GetSessionDataBufferSize; + EFI_STATUS Status; + NET_BUF *Pdu; + TLS_RECORD_HEADER RecordHeader; + UINT8 *BufferIn; + UINTN BufferInSize; + NET_FRAGMENT TempFragment; + UINT8 *BufferOut; + UINTN BufferOutSize; + NET_BUF *PacketOut; + UINT8 *DataOut; + UINT8 *GetSessionDataBuffer; + UINTN GetSessionDataBufferSize; Status = EFI_SUCCESS; Pdu = NULL; @@ -1647,28 +1676,29 @@ HttpsReceive ( } BufferInSize = Pdu->TotalSize; - BufferIn = AllocateZeroPool (BufferInSize); + BufferIn = AllocateZeroPool (BufferInSize); if (BufferIn == NULL) { Status = EFI_OUT_OF_RESOURCES; NetbufFree (Pdu); return Status; } - NetbufCopy (Pdu, 0, (UINT32) BufferInSize, BufferIn); + NetbufCopy (Pdu, 0, (UINT32)BufferInSize, BufferIn); NetbufFree (Pdu); // // Handle Receive data. // - RecordHeader = *(TLS_RECORD_HEADER *) BufferIn; + RecordHeader = *(TLS_RECORD_HEADER *)BufferIn; if ((RecordHeader.ContentType == TlsContentTypeApplicationData) && - (RecordHeader.Version.Major == 0x03) && - (RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor == TLS11_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR) - ) { + (RecordHeader.Version.Major == 0x03) && + ((RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS11_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR)) + ) + { // // Decrypt Packet. // @@ -1689,7 +1719,7 @@ HttpsReceive ( // BuildResponsePacket() will be called to generate Error Alert message and send it out. // BufferOutSize = DEF_BUF_LEN; - BufferOut = AllocateZeroPool (BufferOutSize); + BufferOut = AllocateZeroPool (BufferOutSize); if (BufferOut == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1718,14 +1748,15 @@ HttpsReceive ( &BufferOutSize ); } + if (EFI_ERROR (Status)) { - FreePool(BufferOut); + FreePool (BufferOut); return Status; } if (BufferOutSize != 0) { PacketOut = NetbufAlloc ((UINT32)BufferOutSize); - DataOut = NetbufAllocSpace (PacketOut, (UINT32) BufferOutSize, NET_BUF_TAIL); + DataOut = NetbufAllocSpace (PacketOut, (UINT32)BufferOutSize, NET_BUF_TAIL); if (DataOut == NULL) { FreePool (BufferOut); return EFI_OUT_OF_RESOURCES; @@ -1738,7 +1769,7 @@ HttpsReceive ( NetbufFree (PacketOut); } - FreePool(BufferOut); + FreePool (BufferOut); if (EFI_ERROR (Status)) { return Status; @@ -1753,10 +1784,10 @@ HttpsReceive ( // // Parsing buffer. // - ASSERT (((TLS_RECORD_HEADER *) (TempFragment.Bulk))->ContentType == TlsContentTypeApplicationData); + ASSERT (((TLS_RECORD_HEADER *)(TempFragment.Bulk))->ContentType == TlsContentTypeApplicationData); - BufferInSize = ((TLS_RECORD_HEADER *) (TempFragment.Bulk))->Length; - BufferIn = AllocateZeroPool (BufferInSize); + BufferInSize = ((TLS_RECORD_HEADER *)(TempFragment.Bulk))->Length; + BufferIn = AllocateZeroPool (BufferInSize); if (BufferIn == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1768,15 +1799,15 @@ HttpsReceive ( // Free the buffer in TempFragment. // FreePool (TempFragment.Bulk); - } else if ((RecordHeader.ContentType == TlsContentTypeAlert) && - (RecordHeader.Version.Major == 0x03) && - (RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor == TLS11_PROTOCOL_VERSION_MINOR || - RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR) - ) { + (RecordHeader.Version.Major == 0x03) && + ((RecordHeader.Version.Minor == TLS10_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS11_PROTOCOL_VERSION_MINOR) || + (RecordHeader.Version.Minor == TLS12_PROTOCOL_VERSION_MINOR)) + ) + { BufferOutSize = DEF_BUF_LEN; - BufferOut = AllocateZeroPool (BufferOutSize); + BufferOut = AllocateZeroPool (BufferOutSize); if (BufferOut == NULL) { FreePool (BufferIn); Status = EFI_OUT_OF_RESOURCES; @@ -1816,8 +1847,8 @@ HttpsReceive ( } if (BufferOutSize != 0) { - PacketOut = NetbufAlloc ((UINT32) BufferOutSize); - DataOut = NetbufAllocSpace (PacketOut, (UINT32) BufferOutSize, NET_BUF_TAIL); + PacketOut = NetbufAlloc ((UINT32)BufferOutSize); + DataOut = NetbufAllocSpace (PacketOut, (UINT32)BufferOutSize, NET_BUF_TAIL); if (DataOut == NULL) { FreePool (BufferOut); return EFI_OUT_OF_RESOURCES; @@ -1836,7 +1867,7 @@ HttpsReceive ( // Get the session state. // GetSessionDataBufferSize = DEF_BUF_LEN; - GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); + GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); if (GetSessionDataBuffer == NULL) { Status = EFI_OUT_OF_RESOURCES; return Status; @@ -1849,41 +1880,42 @@ HttpsReceive ( &GetSessionDataBufferSize ); if (Status == EFI_BUFFER_TOO_SMALL) { - FreePool (GetSessionDataBuffer); - GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); - if (GetSessionDataBuffer == NULL) { - Status = EFI_OUT_OF_RESOURCES; - return Status; - } - - Status = HttpInstance->Tls->GetSessionData ( - HttpInstance->Tls, - EfiTlsSessionState, - GetSessionDataBuffer, - &GetSessionDataBufferSize - ); + FreePool (GetSessionDataBuffer); + GetSessionDataBuffer = AllocateZeroPool (GetSessionDataBufferSize); + if (GetSessionDataBuffer == NULL) { + Status = EFI_OUT_OF_RESOURCES; + return Status; + } + + Status = HttpInstance->Tls->GetSessionData ( + HttpInstance->Tls, + EfiTlsSessionState, + GetSessionDataBuffer, + &GetSessionDataBufferSize + ); } + if (EFI_ERROR (Status)) { FreePool (GetSessionDataBuffer); return Status; } - ASSERT(GetSessionDataBufferSize == sizeof (EFI_TLS_SESSION_STATE)); - HttpInstance->TlsSessionState = *(EFI_TLS_SESSION_STATE *) GetSessionDataBuffer; + ASSERT (GetSessionDataBufferSize == sizeof (EFI_TLS_SESSION_STATE)); + HttpInstance->TlsSessionState = *(EFI_TLS_SESSION_STATE *)GetSessionDataBuffer; FreePool (GetSessionDataBuffer); - if(HttpInstance->TlsSessionState == EfiTlsSessionError) { + if (HttpInstance->TlsSessionState == EfiTlsSessionError) { DEBUG ((DEBUG_ERROR, "TLS Session State Error!\n")); return EFI_ABORTED; } - BufferIn = NULL; + BufferIn = NULL; BufferInSize = 0; } Fragment->Bulk = BufferIn; - Fragment->Len = (UINT32) BufferInSize; + Fragment->Len = (UINT32)BufferInSize; return Status; } diff --git a/NetworkPkg/HttpDxe/HttpsSupport.h b/NetworkPkg/HttpDxe/HttpsSupport.h index 6851ceea75..3c70825e8c 100644 --- a/NetworkPkg/HttpDxe/HttpsSupport.h +++ b/NetworkPkg/HttpDxe/HttpsSupport.h @@ -9,9 +9,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_HTTPS_SUPPORT_H__ #define __EFI_HTTPS_SUPPORT_H__ -#define HTTPS_DEFAULT_PORT 443 +#define HTTPS_DEFAULT_PORT 443 -#define HTTPS_FLAG "https://" +#define HTTPS_FLAG "https://" /** Check whether the Url is from Https. @@ -24,7 +24,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ BOOLEAN IsHttpsUrl ( - IN CHAR8 *Url + IN CHAR8 *Url ); /** @@ -41,10 +41,10 @@ IsHttpsUrl ( EFI_HANDLE EFIAPI TlsCreateChild ( - IN EFI_HANDLE ImageHandle, - OUT EFI_SERVICE_BINDING_PROTOCOL **TlsSb, - OUT EFI_TLS_PROTOCOL **TlsProto, - OUT EFI_TLS_CONFIGURATION_PROTOCOL **TlsConfiguration + IN EFI_HANDLE ImageHandle, + OUT EFI_SERVICE_BINDING_PROTOCOL **TlsSb, + OUT EFI_TLS_PROTOCOL **TlsProto, + OUT EFI_TLS_CONFIGURATION_PROTOCOL **TlsConfiguration ); /** @@ -60,7 +60,7 @@ TlsCreateChild ( EFI_STATUS EFIAPI TlsCreateTxRxEvent ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ); /** @@ -72,7 +72,7 @@ TlsCreateTxRxEvent ( VOID EFIAPI TlsCloseTxRxEvent ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ); /** @@ -88,7 +88,7 @@ TlsCloseTxRxEvent ( **/ EFI_STATUS TlsConfigCertificate ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ); /** @@ -103,7 +103,7 @@ TlsConfigCertificate ( EFI_STATUS EFIAPI TlsConfigureSession ( - IN OUT HTTP_PROTOCOL *HttpInstance + IN OUT HTTP_PROTOCOL *HttpInstance ); /** @@ -122,8 +122,8 @@ TlsConfigureSession ( EFI_STATUS EFIAPI TlsCommonTransmit ( - IN OUT HTTP_PROTOCOL *HttpInstance, - IN NET_BUF *Packet + IN OUT HTTP_PROTOCOL *HttpInstance, + IN NET_BUF *Packet ); /** @@ -143,9 +143,9 @@ TlsCommonTransmit ( EFI_STATUS EFIAPI TlsCommonReceive ( - IN OUT HTTP_PROTOCOL *HttpInstance, - IN NET_BUF *Packet, - IN EFI_EVENT Timeout + IN OUT HTTP_PROTOCOL *HttpInstance, + IN NET_BUF *Packet, + IN EFI_EVENT Timeout ); /** @@ -166,9 +166,9 @@ TlsCommonReceive ( EFI_STATUS EFIAPI TlsReceiveOnePdu ( - IN OUT HTTP_PROTOCOL *HttpInstance, - OUT NET_BUF **Pdu, - IN EFI_EVENT Timeout + IN OUT HTTP_PROTOCOL *HttpInstance, + OUT NET_BUF **Pdu, + IN EFI_EVENT Timeout ); /** @@ -186,8 +186,8 @@ TlsReceiveOnePdu ( EFI_STATUS EFIAPI TlsConnectSession ( - IN HTTP_PROTOCOL *HttpInstance, - IN EFI_EVENT Timeout + IN HTTP_PROTOCOL *HttpInstance, + IN EFI_EVENT Timeout ); /** @@ -204,7 +204,7 @@ TlsConnectSession ( EFI_STATUS EFIAPI TlsCloseSession ( - IN HTTP_PROTOCOL *HttpInstance + IN HTTP_PROTOCOL *HttpInstance ); /** @@ -233,11 +233,11 @@ TlsCloseSession ( EFI_STATUS EFIAPI TlsProcessMessage ( - IN HTTP_PROTOCOL *HttpInstance, - IN UINT8 *Message, - IN UINTN MessageSize, - IN EFI_TLS_CRYPT_MODE ProcessMode, - IN OUT NET_FRAGMENT *Fragment + IN HTTP_PROTOCOL *HttpInstance, + IN UINT8 *Message, + IN UINTN MessageSize, + IN EFI_TLS_CRYPT_MODE ProcessMode, + IN OUT NET_FRAGMENT *Fragment ); /** @@ -256,10 +256,9 @@ TlsProcessMessage ( EFI_STATUS EFIAPI HttpsReceive ( - IN HTTP_PROTOCOL *HttpInstance, - IN OUT NET_FRAGMENT *Fragment, - IN EFI_EVENT Timeout + IN HTTP_PROTOCOL *HttpInstance, + IN OUT NET_FRAGMENT *Fragment, + IN EFI_EVENT Timeout ); #endif - diff --git a/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.c b/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.c index 4c1e44d24c..a3e1ea4691 100644 --- a/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.c +++ b/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.c @@ -9,7 +9,6 @@ #include "HttpUtilitiesDxe.h" - /** Unloads an image. @@ -25,14 +24,13 @@ HttpUtilitiesDxeUnload ( IN EFI_HANDLE ImageHandle ) { - EFI_STATUS Status; - UINTN HandleNum; - EFI_HANDLE *HandleBuffer; - UINT32 Index; - EFI_HTTP_UTILITIES_PROTOCOL *HttpUtilitiesProtocol; - + EFI_STATUS Status; + UINTN HandleNum; + EFI_HANDLE *HandleBuffer; + UINT32 Index; + EFI_HTTP_UTILITIES_PROTOCOL *HttpUtilitiesProtocol; - HandleBuffer = NULL; + HandleBuffer = NULL; // // Locate all the handles with HttpUtilities protocol. @@ -55,7 +53,7 @@ HttpUtilitiesDxeUnload ( Status = gBS->OpenProtocol ( HandleBuffer[Index], &gEfiHttpUtilitiesProtocolGuid, - (VOID **) &HttpUtilitiesProtocol, + (VOID **)&HttpUtilitiesProtocol, ImageHandle, NULL, EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL @@ -69,7 +67,8 @@ HttpUtilitiesDxeUnload ( // Status = gBS->UninstallMultipleProtocolInterfaces ( HandleBuffer[Index], - &gEfiHttpUtilitiesProtocolGuid, HttpUtilitiesProtocol, + &gEfiHttpUtilitiesProtocolGuid, + HttpUtilitiesProtocol, NULL ); if (EFI_ERROR (Status)) { @@ -80,7 +79,6 @@ HttpUtilitiesDxeUnload ( return EFI_SUCCESS; } - /** This is the declaration of an EFI image entry point. This entry point is the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including @@ -99,9 +97,9 @@ HttpUtilitiesDxeDriverEntryPoint ( IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; - EFI_HANDLE Handle; + EFI_HANDLE Handle; Handle = NULL; @@ -117,4 +115,3 @@ HttpUtilitiesDxeDriverEntryPoint ( return Status; } - diff --git a/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.h b/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.h index ce9895ded1..c9cf966c75 100644 --- a/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.h +++ b/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.h @@ -33,7 +33,7 @@ // // Protocol instances // -extern EFI_HTTP_UTILITIES_PROTOCOL mHttpUtilitiesProtocol; +extern EFI_HTTP_UTILITIES_PROTOCOL mHttpUtilitiesProtocol; /** Create HTTP header based on a combination of seed header, fields @@ -70,18 +70,17 @@ extern EFI_HTTP_UTILITIES_PROTOCOL mHttpUtilitiesProtocol; EFI_STATUS EFIAPI HttpUtilitiesBuild ( - IN EFI_HTTP_UTILITIES_PROTOCOL *This, - IN UINTN SeedMessageSize, - IN VOID *SeedMessage OPTIONAL, - IN UINTN DeleteCount, - IN CHAR8 *DeleteList[] OPTIONAL, - IN UINTN AppendCount, - IN EFI_HTTP_HEADER *AppendList[] OPTIONAL, - OUT UINTN *NewMessageSize, - OUT VOID **NewMessage + IN EFI_HTTP_UTILITIES_PROTOCOL *This, + IN UINTN SeedMessageSize, + IN VOID *SeedMessage OPTIONAL, + IN UINTN DeleteCount, + IN CHAR8 *DeleteList[] OPTIONAL, + IN UINTN AppendCount, + IN EFI_HTTP_HEADER *AppendList[] OPTIONAL, + OUT UINTN *NewMessageSize, + OUT VOID **NewMessage ); - /** Parses HTTP header and produces an array of key/value pairs. diff --git a/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesProtocol.c b/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesProtocol.c index efa4091135..c7d43576ea 100644 --- a/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesProtocol.c +++ b/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesProtocol.c @@ -9,12 +9,11 @@ #include "HttpUtilitiesDxe.h" -EFI_HTTP_UTILITIES_PROTOCOL mHttpUtilitiesProtocol = { +EFI_HTTP_UTILITIES_PROTOCOL mHttpUtilitiesProtocol = { HttpUtilitiesBuild, HttpUtilitiesParse }; - /** Create HTTP header based on a combination of seed header, fields to delete, and fields to append. @@ -50,28 +49,28 @@ EFI_HTTP_UTILITIES_PROTOCOL mHttpUtilitiesProtocol = { EFI_STATUS EFIAPI HttpUtilitiesBuild ( - IN EFI_HTTP_UTILITIES_PROTOCOL *This, - IN UINTN SeedMessageSize, - IN VOID *SeedMessage OPTIONAL, - IN UINTN DeleteCount, - IN CHAR8 *DeleteList[] OPTIONAL, - IN UINTN AppendCount, - IN EFI_HTTP_HEADER *AppendList[] OPTIONAL, - OUT UINTN *NewMessageSize, - OUT VOID **NewMessage + IN EFI_HTTP_UTILITIES_PROTOCOL *This, + IN UINTN SeedMessageSize, + IN VOID *SeedMessage OPTIONAL, + IN UINTN DeleteCount, + IN CHAR8 *DeleteList[] OPTIONAL, + IN UINTN AppendCount, + IN EFI_HTTP_HEADER *AppendList[] OPTIONAL, + OUT UINTN *NewMessageSize, + OUT VOID **NewMessage ) { - EFI_STATUS Status; - EFI_HTTP_HEADER *SeedHeaderFields; - UINTN SeedFieldCount; - UINTN Index; - EFI_HTTP_HEADER *TempHeaderFields; - UINTN TempFieldCount; - EFI_HTTP_HEADER *NewHeaderFields; - UINTN NewFieldCount; - EFI_HTTP_HEADER *HttpHeader; - UINTN StrLength; - UINT8 *NewMessagePtr; + EFI_STATUS Status; + EFI_HTTP_HEADER *SeedHeaderFields; + UINTN SeedFieldCount; + UINTN Index; + EFI_HTTP_HEADER *TempHeaderFields; + UINTN TempFieldCount; + EFI_HTTP_HEADER *NewHeaderFields; + UINTN NewFieldCount; + EFI_HTTP_HEADER *HttpHeader; + UINTN StrLength; + UINT8 *NewMessagePtr; SeedHeaderFields = NULL; SeedFieldCount = 0; @@ -80,11 +79,11 @@ HttpUtilitiesBuild ( NewHeaderFields = NULL; NewFieldCount = 0; - HttpHeader = NULL; - StrLength = 0; - NewMessagePtr = NULL; - *NewMessageSize = 0; - Status = EFI_SUCCESS; + HttpHeader = NULL; + StrLength = 0; + NewMessagePtr = NULL; + *NewMessageSize = 0; + Status = EFI_SUCCESS; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -106,8 +105,8 @@ HttpUtilitiesBuild ( // // Handle DeleteList // - if (SeedFieldCount != 0 && DeleteCount != 0) { - TempHeaderFields = AllocateZeroPool (SeedFieldCount * sizeof(EFI_HTTP_HEADER)); + if ((SeedFieldCount != 0) && (DeleteCount != 0)) { + TempHeaderFields = AllocateZeroPool (SeedFieldCount * sizeof (EFI_HTTP_HEADER)); if (TempHeaderFields == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; @@ -117,7 +116,7 @@ HttpUtilitiesBuild ( // // Check whether each SeedHeaderFields member is in DeleteList // - if (HttpIsValidHttpHeader( DeleteList, DeleteCount, SeedHeaderFields[Index].FieldName)) { + if (HttpIsValidHttpHeader (DeleteList, DeleteCount, SeedHeaderFields[Index].FieldName)) { Status = HttpSetFieldNameAndValue ( &TempHeaderFields[TempFieldCount], SeedHeaderFields[Index].FieldName, @@ -126,12 +125,13 @@ HttpUtilitiesBuild ( if (EFI_ERROR (Status)) { goto ON_EXIT; } + TempFieldCount++; } } } else { TempHeaderFields = SeedHeaderFields; - TempFieldCount = SeedFieldCount; + TempFieldCount = SeedFieldCount; } // @@ -176,6 +176,7 @@ HttpUtilitiesBuild ( if (EFI_ERROR (Status)) { goto ON_EXIT; } + NewFieldCount++; } } @@ -186,19 +187,20 @@ HttpUtilitiesBuild ( for (Index = 0; Index < NewFieldCount; Index++) { HttpHeader = &NewHeaderFields[Index]; - StrLength = AsciiStrLen (HttpHeader->FieldName); + StrLength = AsciiStrLen (HttpHeader->FieldName); *NewMessageSize += StrLength; - StrLength = sizeof(": ") - 1; + StrLength = sizeof (": ") - 1; *NewMessageSize += StrLength; - StrLength = AsciiStrLen (HttpHeader->FieldValue); + StrLength = AsciiStrLen (HttpHeader->FieldValue); *NewMessageSize += StrLength; - StrLength = sizeof("\r\n") - 1; + StrLength = sizeof ("\r\n") - 1; *NewMessageSize += StrLength; } - StrLength = sizeof("\r\n") - 1; + + StrLength = sizeof ("\r\n") - 1; *NewMessageSize += StrLength; *NewMessage = AllocateZeroPool (*NewMessageSize); @@ -216,7 +218,7 @@ HttpUtilitiesBuild ( CopyMem (NewMessagePtr, HttpHeader->FieldName, StrLength); NewMessagePtr += StrLength; - StrLength = sizeof(": ") - 1; + StrLength = sizeof (": ") - 1; CopyMem (NewMessagePtr, ": ", StrLength); NewMessagePtr += StrLength; @@ -224,11 +226,12 @@ HttpUtilitiesBuild ( CopyMem (NewMessagePtr, HttpHeader->FieldValue, StrLength); NewMessagePtr += StrLength; - StrLength = sizeof("\r\n") - 1; + StrLength = sizeof ("\r\n") - 1; CopyMem (NewMessagePtr, "\r\n", StrLength); NewMessagePtr += StrLength; } - StrLength = sizeof("\r\n") - 1; + + StrLength = sizeof ("\r\n") - 1; CopyMem (NewMessagePtr, "\r\n", StrLength); NewMessagePtr += StrLength; @@ -239,21 +242,20 @@ HttpUtilitiesBuild ( // ON_EXIT: if (SeedHeaderFields != NULL) { - HttpFreeHeaderFields(SeedHeaderFields, SeedFieldCount); + HttpFreeHeaderFields (SeedHeaderFields, SeedFieldCount); } if (TempHeaderFields != NULL) { - HttpFreeHeaderFields(TempHeaderFields, TempFieldCount); + HttpFreeHeaderFields (TempHeaderFields, TempFieldCount); } if (NewHeaderFields != NULL) { - HttpFreeHeaderFields(NewHeaderFields, NewFieldCount); + HttpFreeHeaderFields (NewHeaderFields, NewFieldCount); } return Status; } - /** Parses HTTP header and produces an array of key/value pairs. @@ -285,14 +287,14 @@ HttpUtilitiesParse ( OUT UINTN *FieldCount ) { - EFI_STATUS Status; - CHAR8 *TempHttpMessage; - CHAR8 *Token; - CHAR8 *NextToken; - CHAR8 *FieldName; - CHAR8 *FieldValue; - UINTN Index; - UINTN HttpBufferSize; + EFI_STATUS Status; + CHAR8 *TempHttpMessage; + CHAR8 *Token; + CHAR8 *NextToken; + CHAR8 *FieldName; + CHAR8 *FieldValue; + UINTN Index; + UINTN HttpBufferSize; Status = EFI_SUCCESS; TempHttpMessage = NULL; @@ -302,14 +304,14 @@ HttpUtilitiesParse ( FieldValue = NULL; Index = 0; - if (This == NULL || HttpMessage == NULL || HeaderFields == NULL || FieldCount == NULL) { + if ((This == NULL) || (HttpMessage == NULL) || (HeaderFields == NULL) || (FieldCount == NULL)) { return EFI_INVALID_PARAMETER; } // // Append the http response string along with a Null-terminator. // - HttpBufferSize = HttpMessageSize + 1; + HttpBufferSize = HttpMessageSize + 1; TempHttpMessage = AllocatePool (HttpBufferSize); if (TempHttpMessage == NULL) { return EFI_OUT_OF_RESOURCES; @@ -322,13 +324,13 @@ HttpUtilitiesParse ( // Get header number // *FieldCount = 0; - Token = TempHttpMessage; + Token = TempHttpMessage; while (TRUE) { - FieldName = NULL; - FieldValue = NULL; - NextToken = HttpGetFieldNameAndValue (Token, &FieldName, &FieldValue); - Token = NextToken; - if (FieldName == NULL || FieldValue == NULL) { + FieldName = NULL; + FieldValue = NULL; + NextToken = HttpGetFieldNameAndValue (Token, &FieldName, &FieldValue); + Token = NextToken; + if ((FieldName == NULL) || (FieldValue == NULL)) { break; } @@ -343,10 +345,10 @@ HttpUtilitiesParse ( // // Allocate buffer for header // - *HeaderFields = AllocateZeroPool ((*FieldCount) * sizeof(EFI_HTTP_HEADER)); + *HeaderFields = AllocateZeroPool ((*FieldCount) * sizeof (EFI_HTTP_HEADER)); if (*HeaderFields == NULL) { *FieldCount = 0; - Status = EFI_OUT_OF_RESOURCES; + Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } @@ -357,11 +359,11 @@ HttpUtilitiesParse ( // Token = TempHttpMessage; while (Index < *FieldCount) { - FieldName = NULL; - FieldValue = NULL; - NextToken = HttpGetFieldNameAndValue (Token, &FieldName, &FieldValue); - Token = NextToken; - if (FieldName == NULL || FieldValue == NULL) { + FieldName = NULL; + FieldValue = NULL; + NextToken = HttpGetFieldNameAndValue (Token, &FieldName, &FieldValue); + Token = NextToken; + if ((FieldName == NULL) || (FieldValue == NULL)) { break; } diff --git a/NetworkPkg/IScsiDxe/ComponentName.c b/NetworkPkg/IScsiDxe/ComponentName.c index 8572ac281d..2e1324c569 100644 --- a/NetworkPkg/IScsiDxe/ComponentName.c +++ b/NetworkPkg/IScsiDxe/ComponentName.c @@ -11,7 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // EFI Component Name Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gIScsiComponentName = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gIScsiComponentName = { IScsiComponentNameGetDriverName, IScsiComponentNameGetControllerName, "eng" @@ -20,13 +20,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gIScsiComponentName = // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gIScsiComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) IScsiComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) IScsiComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gIScsiComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)IScsiComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)IScsiComponentNameGetControllerName, "en" }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mIScsiDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mIScsiDriverNameTable[] = { { "eng;en", L"iSCSI Driver" @@ -81,9 +81,9 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gIScsiControllerNameTab EFI_STATUS EFIAPI IScsiComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName ) { return LookupUnicodeString2 ( @@ -91,7 +91,7 @@ IScsiComponentNameGetDriverName ( This->SupportedLanguages, mIScsiDriverNameTable, DriverName, - (BOOLEAN) (This == &gIScsiComponentName) + (BOOLEAN)(This == &gIScsiComponentName) ); } @@ -108,14 +108,14 @@ IScsiComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *IScsiExtScsiPassThru, - IN BOOLEAN Ipv6Flag + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *IScsiExtScsiPassThru, + IN BOOLEAN Ipv6Flag ) { - EFI_STATUS Status; - CHAR16 HandleName[80]; - ISCSI_DRIVER_DATA *Private; - UINT8 NicIndex; + EFI_STATUS Status; + CHAR16 HandleName[80]; + ISCSI_DRIVER_DATA *Private; + UINT8 NicIndex; if (IScsiExtScsiPassThru == NULL) { return EFI_INVALID_PARAMETER; @@ -130,7 +130,7 @@ UpdateName ( L"iSCSI (%s, NicIndex=%d)", Ipv6Flag ? L"IPv6" : L"IPv4", NicIndex - ); + ); if (gIScsiControllerNameTable != NULL) { FreeUnicodeStringTable (gIScsiControllerNameTable); @@ -228,21 +228,21 @@ UpdateName ( EFI_STATUS EFIAPI IScsiComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; + EFI_STATUS Status; - EFI_HANDLE IScsiController; - BOOLEAN Ipv6Flag; - EFI_GUID *IScsiPrivateGuid; - ISCSI_PRIVATE_PROTOCOL *IScsiIdentifier; + EFI_HANDLE IScsiController; + BOOLEAN Ipv6Flag; + EFI_GUID *IScsiPrivateGuid; + ISCSI_PRIVATE_PROTOCOL *IScsiIdentifier; - EFI_EXT_SCSI_PASS_THRU_PROTOCOL *IScsiExtScsiPassThru; + EFI_EXT_SCSI_PASS_THRU_PROTOCOL *IScsiExtScsiPassThru; if (ControllerHandle == NULL) { return EFI_UNSUPPORTED; @@ -254,12 +254,12 @@ IScsiComponentNameGetControllerName ( IScsiController = NetLibGetNicHandle (ControllerHandle, &gEfiTcp4ProtocolGuid); if (IScsiController != NULL) { IScsiPrivateGuid = &gIScsiV4PrivateGuid; - Ipv6Flag = FALSE; + Ipv6Flag = FALSE; } else { IScsiController = NetLibGetNicHandle (ControllerHandle, &gEfiTcp6ProtocolGuid); if (IScsiController != NULL) { IScsiPrivateGuid = &gIScsiV6PrivateGuid; - Ipv6Flag = TRUE; + Ipv6Flag = TRUE; } else { return EFI_UNSUPPORTED; } @@ -268,7 +268,7 @@ IScsiComponentNameGetControllerName ( Status = gBS->OpenProtocol ( IScsiController, IScsiPrivateGuid, - (VOID **) &IScsiIdentifier, + (VOID **)&IScsiIdentifier, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -277,8 +277,8 @@ IScsiComponentNameGetControllerName ( return Status; } - if(ChildHandle != NULL) { - if(!Ipv6Flag) { + if (ChildHandle != NULL) { + if (!Ipv6Flag) { // // Make sure this driver produced ChildHandle // @@ -310,7 +310,7 @@ IScsiComponentNameGetControllerName ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiExtScsiPassThruProtocolGuid, - (VOID **)&IScsiExtScsiPassThru, + (VOID **)&IScsiExtScsiPassThru, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL diff --git a/NetworkPkg/IScsiDxe/IScsiAuthenticationInfo.c b/NetworkPkg/IScsiDxe/IScsiAuthenticationInfo.c index aeff646156..de62ae8dbd 100644 --- a/NetworkPkg/IScsiDxe/IScsiAuthenticationInfo.c +++ b/NetworkPkg/IScsiDxe/IScsiAuthenticationInfo.c @@ -9,7 +9,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "IScsiImpl.h" -EFI_AUTHENTICATION_INFO_PROTOCOL gIScsiAuthenticationInfo = { +EFI_AUTHENTICATION_INFO_PROTOCOL gIScsiAuthenticationInfo = { IScsiGetAuthenticationInfo, IScsiSetAuthenticationInfo }; @@ -30,9 +30,9 @@ EFI_AUTHENTICATION_INFO_PROTOCOL gIScsiAuthenticationInfo = { EFI_STATUS EFIAPI IScsiGetAuthenticationInfo ( - IN EFI_AUTHENTICATION_INFO_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - OUT VOID **Buffer + IN EFI_AUTHENTICATION_INFO_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + OUT VOID **Buffer ) { return EFI_DEVICE_ERROR; diff --git a/NetworkPkg/IScsiDxe/IScsiCHAP.c b/NetworkPkg/IScsiDxe/IScsiCHAP.c index 0491ef42db..b507f11cd4 100644 --- a/NetworkPkg/IScsiDxe/IScsiCHAP.c +++ b/NetworkPkg/IScsiDxe/IScsiCHAP.c @@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // macros. CHAP_HASH structures at lower subscripts in the array are preferred // by the initiator. // -STATIC CONST CHAP_HASH mChapHash[] = { +STATIC CONST CHAP_HASH mChapHash[] = { { ISCSI_CHAP_ALGORITHM_SHA256, SHA256_DIGEST_SIZE, @@ -23,7 +23,7 @@ STATIC CONST CHAP_HASH mChapHash[] = { Sha256Update, Sha256Final }, -#ifdef ENABLE_MD5_DEPRECATED_INTERFACES + #ifdef ENABLE_MD5_DEPRECATED_INTERFACES // // Keep the deprecated MD5 entry at the end of the array (making MD5 the // least preferred choice of the initiator). @@ -36,7 +36,7 @@ STATIC CONST CHAP_HASH mChapHash[] = { Md5Update, Md5Final }, -#endif // ENABLE_MD5_DEPRECATED_INTERFACES + #endif // ENABLE_MD5_DEPRECATED_INTERFACES }; // @@ -44,17 +44,17 @@ STATIC CONST CHAP_HASH mChapHash[] = { // CHAP_A= value string, by the IScsiCHAPInitHashList() function. It // is sent by the initiator in ISCSI_CHAP_STEP_ONE. // -STATIC CHAR8 mChapHashListString[ - 3 + // UINT8 identifier in - // decimal - (1 + 3) * (ARRAY_SIZE (mChapHash) - 1) + // comma prepended for - // entries after the - // first - 1 + // extra character for - // AsciiSPrint() - // truncation check - 1 // terminating NUL - ]; +STATIC CHAR8 mChapHashListString[ + 3 + // UINT8 identifier in + // decimal + (1 + 3) * (ARRAY_SIZE (mChapHash) - 1) + // comma prepended for + // entries after the + // first + 1 + // extra character for + // AsciiSPrint() + // truncation check + 1 // terminating NUL +]; /** Initiator calculates its own expected hash value. @@ -82,13 +82,13 @@ STATIC CHAR8 mChapHashListString[ **/ EFI_STATUS IScsiCHAPCalculateResponse ( - IN UINT32 ChapIdentifier, - IN CHAR8 *ChapSecret, - IN UINT32 SecretLength, - IN UINT8 *ChapChallenge, - IN UINT32 ChallengeLength, - IN CONST CHAP_HASH *Hash, - OUT UINT8 *ChapResponse + IN UINT32 ChapIdentifier, + IN CHAR8 *ChapSecret, + IN UINT32 SecretLength, + IN UINT8 *ChapChallenge, + IN UINT32 ChallengeLength, + IN CONST CHAP_HASH *Hash, + OUT UINT8 *ChapResponse ) { UINTN ContextSize; @@ -103,7 +103,7 @@ IScsiCHAPCalculateResponse ( ASSERT (Hash != NULL); ContextSize = Hash->GetContextSize (); - Ctx = AllocatePool (ContextSize); + Ctx = AllocatePool (ContextSize); if (Ctx == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -117,7 +117,7 @@ IScsiCHAPCalculateResponse ( // // Hash Identifier - Only calculate 1 byte data (RFC1994) // - IdByte[0] = (CHAR8) ChapIdentifier; + IdByte[0] = (CHAR8)ChapIdentifier; if (!Hash->Update (Ctx, IdByte, 1)) { goto Exit; } @@ -170,9 +170,9 @@ IScsiCHAPAuthTarget ( UINT8 VerifyRsp[ISCSI_CHAP_MAX_DIGEST_SIZE]; INTN Mismatch; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; - SecretSize = (UINT32) AsciiStrLen (AuthData->AuthConfig->ReverseCHAPSecret); + SecretSize = (UINT32)AsciiStrLen (AuthData->AuthConfig->ReverseCHAPSecret); ASSERT (AuthData->Hash != NULL); @@ -198,7 +198,6 @@ IScsiCHAPAuthTarget ( return Status; } - /** This function checks the received iSCSI Login Response during the security negotiation stage. @@ -216,33 +215,34 @@ IScsiCHAPOnRspReceived ( IN ISCSI_CONNECTION *Conn ) { - EFI_STATUS Status; - ISCSI_SESSION *Session; - ISCSI_CHAP_AUTH_DATA *AuthData; - CHAR8 *Value; - UINT8 *Data; - UINT32 Len; - LIST_ENTRY *KeyValueList; - UINTN Algorithm; - CHAR8 *Identifier; - CHAR8 *Challenge; - CHAR8 *Name; - CHAR8 *Response; - UINT8 TargetRsp[ISCSI_CHAP_MAX_DIGEST_SIZE]; - UINT32 RspLen; - UINTN Result; - UINTN HashIndex; + EFI_STATUS Status; + ISCSI_SESSION *Session; + ISCSI_CHAP_AUTH_DATA *AuthData; + CHAR8 *Value; + UINT8 *Data; + UINT32 Len; + LIST_ENTRY *KeyValueList; + UINTN Algorithm; + CHAR8 *Identifier; + CHAR8 *Challenge; + CHAR8 *Name; + CHAR8 *Response; + UINT8 TargetRsp[ISCSI_CHAP_MAX_DIGEST_SIZE]; + UINT32 RspLen; + UINTN Result; + UINTN HashIndex; ASSERT (Conn->CurrentStage == ISCSI_SECURITY_NEGOTIATION); ASSERT (Conn->RspQue.BufNum != 0); - Session = Conn->Session; - AuthData = &Session->AuthData.CHAP; - Len = Conn->RspQue.BufSize; - Data = AllocateZeroPool (Len); + Session = Conn->Session; + AuthData = &Session->AuthData.CHAP; + Len = Conn->RspQue.BufSize; + Data = AllocateZeroPool (Len); if (Data == NULL) { return EFI_OUT_OF_RESOURCES; } + // // Copy the data in case the data spans over multiple PDUs. // @@ -251,7 +251,7 @@ IScsiCHAPOnRspReceived ( // // Build the key-value list from the data segment of the Login Response. // - KeyValueList = IScsiBuildKeyValueList ((CHAR8 *) Data, Len); + KeyValueList = IScsiBuildKeyValueList ((CHAR8 *)Data, Len); if (KeyValueList == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; @@ -260,179 +260,184 @@ IScsiCHAPOnRspReceived ( Status = EFI_PROTOCOL_ERROR; switch (Conn->AuthStep) { - case ISCSI_AUTH_INITIAL: - // - // The first Login Response. - // - Value = IScsiGetValueByKeyFromList ( - KeyValueList, - ISCSI_KEY_TARGET_PORTAL_GROUP_TAG - ); - if (Value == NULL) { - goto ON_EXIT; - } - - Result = IScsiNetNtoi (Value); - if (Result > 0xFFFF) { - goto ON_EXIT; - } - - Session->TargetPortalGroupTag = (UINT16) Result; - - Value = IScsiGetValueByKeyFromList ( - KeyValueList, - ISCSI_KEY_AUTH_METHOD - ); - if (Value == NULL) { - goto ON_EXIT; - } - // - // Initiator mandates CHAP authentication but target replies without - // "CHAP", or initiator suggets "None" but target replies with some kind of - // auth method. - // - if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) { - if (AsciiStrCmp (Value, ISCSI_KEY_VALUE_NONE) != 0) { + case ISCSI_AUTH_INITIAL: + // + // The first Login Response. + // + Value = IScsiGetValueByKeyFromList ( + KeyValueList, + ISCSI_KEY_TARGET_PORTAL_GROUP_TAG + ); + if (Value == NULL) { goto ON_EXIT; } - } else if (Session->AuthType == ISCSI_AUTH_TYPE_CHAP) { - if (AsciiStrCmp (Value, ISCSI_AUTH_METHOD_CHAP) != 0) { + + Result = IScsiNetNtoi (Value); + if (Result > 0xFFFF) { goto ON_EXIT; } - } else { - goto ON_EXIT; - } - // - // Transit to CHAP step one. - // - Conn->AuthStep = ISCSI_CHAP_STEP_ONE; - Status = EFI_SUCCESS; - break; + Session->TargetPortalGroupTag = (UINT16)Result; - case ISCSI_CHAP_STEP_TWO: - // - // The Target replies with CHAP_A= CHAP_I= CHAP_C= - // - Value = IScsiGetValueByKeyFromList ( - KeyValueList, - ISCSI_KEY_CHAP_ALGORITHM - ); - if (Value == NULL) { - goto ON_EXIT; - } - - Algorithm = IScsiNetNtoi (Value); - for (HashIndex = 0; HashIndex < ARRAY_SIZE (mChapHash); HashIndex++) { - if (Algorithm == mChapHash[HashIndex].Algorithm) { - break; + Value = IScsiGetValueByKeyFromList ( + KeyValueList, + ISCSI_KEY_AUTH_METHOD + ); + if (Value == NULL) { + goto ON_EXIT; } - } - if (HashIndex == ARRAY_SIZE (mChapHash)) { + // - // Unsupported algorithm is chosen by target. + // Initiator mandates CHAP authentication but target replies without + // "CHAP", or initiator suggets "None" but target replies with some kind of + // auth method. // - goto ON_EXIT; - } - // - // Remember the target's chosen hash algorithm. - // - ASSERT (AuthData->Hash == NULL); - AuthData->Hash = &mChapHash[HashIndex]; + if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) { + if (AsciiStrCmp (Value, ISCSI_KEY_VALUE_NONE) != 0) { + goto ON_EXIT; + } + } else if (Session->AuthType == ISCSI_AUTH_TYPE_CHAP) { + if (AsciiStrCmp (Value, ISCSI_AUTH_METHOD_CHAP) != 0) { + goto ON_EXIT; + } + } else { + goto ON_EXIT; + } - Identifier = IScsiGetValueByKeyFromList ( - KeyValueList, - ISCSI_KEY_CHAP_IDENTIFIER - ); - if (Identifier == NULL) { - goto ON_EXIT; - } - - Challenge = IScsiGetValueByKeyFromList ( - KeyValueList, - ISCSI_KEY_CHAP_CHALLENGE - ); - if (Challenge == NULL) { - goto ON_EXIT; - } - // - // Process the CHAP identifier and CHAP Challenge from Target. - // Calculate Response value. - // - Result = IScsiNetNtoi (Identifier); - if (Result > 0xFF) { - goto ON_EXIT; - } - - AuthData->InIdentifier = (UINT32) Result; - AuthData->InChallengeLength = (UINT32) sizeof (AuthData->InChallenge); - Status = IScsiHexToBin ( - (UINT8 *) AuthData->InChallenge, - &AuthData->InChallengeLength, - Challenge - ); - if (EFI_ERROR (Status)) { - Status = EFI_PROTOCOL_ERROR; - goto ON_EXIT; - } - Status = IScsiCHAPCalculateResponse ( - AuthData->InIdentifier, - AuthData->AuthConfig->CHAPSecret, - (UINT32) AsciiStrLen (AuthData->AuthConfig->CHAPSecret), - AuthData->InChallenge, - AuthData->InChallengeLength, - AuthData->Hash, - AuthData->CHAPResponse - ); + // + // Transit to CHAP step one. + // + Conn->AuthStep = ISCSI_CHAP_STEP_ONE; + Status = EFI_SUCCESS; + break; - // - // Transit to next step. - // - Conn->AuthStep = ISCSI_CHAP_STEP_THREE; - break; + case ISCSI_CHAP_STEP_TWO: + // + // The Target replies with CHAP_A= CHAP_I= CHAP_C= + // + Value = IScsiGetValueByKeyFromList ( + KeyValueList, + ISCSI_KEY_CHAP_ALGORITHM + ); + if (Value == NULL) { + goto ON_EXIT; + } - case ISCSI_CHAP_STEP_THREE: - // - // One way CHAP authentication and the target would like to - // authenticate us. - // - Status = EFI_SUCCESS; - break; + Algorithm = IScsiNetNtoi (Value); + for (HashIndex = 0; HashIndex < ARRAY_SIZE (mChapHash); HashIndex++) { + if (Algorithm == mChapHash[HashIndex].Algorithm) { + break; + } + } - case ISCSI_CHAP_STEP_FOUR: - ASSERT (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL); - // - // The forth step, CHAP_N= CHAP_R= is received from Target. - // - Name = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_NAME); - if (Name == NULL) { - goto ON_EXIT; - } - - Response = IScsiGetValueByKeyFromList ( - KeyValueList, - ISCSI_KEY_CHAP_RESPONSE + if (HashIndex == ARRAY_SIZE (mChapHash)) { + // + // Unsupported algorithm is chosen by target. + // + goto ON_EXIT; + } + + // + // Remember the target's chosen hash algorithm. + // + ASSERT (AuthData->Hash == NULL); + AuthData->Hash = &mChapHash[HashIndex]; + + Identifier = IScsiGetValueByKeyFromList ( + KeyValueList, + ISCSI_KEY_CHAP_IDENTIFIER + ); + if (Identifier == NULL) { + goto ON_EXIT; + } + + Challenge = IScsiGetValueByKeyFromList ( + KeyValueList, + ISCSI_KEY_CHAP_CHALLENGE + ); + if (Challenge == NULL) { + goto ON_EXIT; + } + + // + // Process the CHAP identifier and CHAP Challenge from Target. + // Calculate Response value. + // + Result = IScsiNetNtoi (Identifier); + if (Result > 0xFF) { + goto ON_EXIT; + } + + AuthData->InIdentifier = (UINT32)Result; + AuthData->InChallengeLength = (UINT32)sizeof (AuthData->InChallenge); + Status = IScsiHexToBin ( + (UINT8 *)AuthData->InChallenge, + &AuthData->InChallengeLength, + Challenge + ); + if (EFI_ERROR (Status)) { + Status = EFI_PROTOCOL_ERROR; + goto ON_EXIT; + } + + Status = IScsiCHAPCalculateResponse ( + AuthData->InIdentifier, + AuthData->AuthConfig->CHAPSecret, + (UINT32)AsciiStrLen (AuthData->AuthConfig->CHAPSecret), + AuthData->InChallenge, + AuthData->InChallengeLength, + AuthData->Hash, + AuthData->CHAPResponse ); - if (Response == NULL) { - goto ON_EXIT; - } - - ASSERT (AuthData->Hash != NULL); - RspLen = AuthData->Hash->DigestSize; - Status = IScsiHexToBin (TargetRsp, &RspLen, Response); - if (EFI_ERROR (Status) || RspLen != AuthData->Hash->DigestSize) { - Status = EFI_PROTOCOL_ERROR; - goto ON_EXIT; - } - // - // Check the CHAP Name and Response replied by Target. - // - Status = IScsiCHAPAuthTarget (AuthData, TargetRsp); - break; + // + // Transit to next step. + // + Conn->AuthStep = ISCSI_CHAP_STEP_THREE; + break; + + case ISCSI_CHAP_STEP_THREE: + // + // One way CHAP authentication and the target would like to + // authenticate us. + // + Status = EFI_SUCCESS; + break; + + case ISCSI_CHAP_STEP_FOUR: + ASSERT (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL); + // + // The forth step, CHAP_N= CHAP_R= is received from Target. + // + Name = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_CHAP_NAME); + if (Name == NULL) { + goto ON_EXIT; + } + + Response = IScsiGetValueByKeyFromList ( + KeyValueList, + ISCSI_KEY_CHAP_RESPONSE + ); + if (Response == NULL) { + goto ON_EXIT; + } - default: - break; + ASSERT (AuthData->Hash != NULL); + RspLen = AuthData->Hash->DigestSize; + Status = IScsiHexToBin (TargetRsp, &RspLen, Response); + if (EFI_ERROR (Status) || (RspLen != AuthData->Hash->DigestSize)) { + Status = EFI_PROTOCOL_ERROR; + goto ON_EXIT; + } + + // + // Check the CHAP Name and Response replied by Target. + // + Status = IScsiCHAPAuthTarget (AuthData, TargetRsp); + break; + + default: + break; } ON_EXIT: @@ -446,7 +451,6 @@ ON_EXIT: return Status; } - /** This function fills the CHAP authentication information into the login PDU during the security negotiation stage in the iSCSI connection login. @@ -467,140 +471,142 @@ IScsiCHAPToSendReq ( IN OUT NET_BUF *Pdu ) { - EFI_STATUS Status; - ISCSI_SESSION *Session; - ISCSI_LOGIN_REQUEST *LoginReq; - ISCSI_CHAP_AUTH_DATA *AuthData; - CHAR8 *Value; - CHAR8 ValueStr[256]; - CHAR8 *Response; - UINT32 RspLen; - CHAR8 *Challenge; - UINT32 ChallengeLen; - EFI_STATUS BinToHexStatus; + EFI_STATUS Status; + ISCSI_SESSION *Session; + ISCSI_LOGIN_REQUEST *LoginReq; + ISCSI_CHAP_AUTH_DATA *AuthData; + CHAR8 *Value; + CHAR8 ValueStr[256]; + CHAR8 *Response; + UINT32 RspLen; + CHAR8 *Challenge; + UINT32 ChallengeLen; + EFI_STATUS BinToHexStatus; ASSERT (Conn->CurrentStage == ISCSI_SECURITY_NEGOTIATION); - Session = Conn->Session; - AuthData = &Session->AuthData.CHAP; - LoginReq = (ISCSI_LOGIN_REQUEST *) NetbufGetByte (Pdu, 0, 0); + Session = Conn->Session; + AuthData = &Session->AuthData.CHAP; + LoginReq = (ISCSI_LOGIN_REQUEST *)NetbufGetByte (Pdu, 0, 0); if (LoginReq == NULL) { return EFI_PROTOCOL_ERROR; } - Status = EFI_SUCCESS; - RspLen = 2 * ISCSI_CHAP_MAX_DIGEST_SIZE + 3; - Response = AllocateZeroPool (RspLen); + Status = EFI_SUCCESS; + + RspLen = 2 * ISCSI_CHAP_MAX_DIGEST_SIZE + 3; + Response = AllocateZeroPool (RspLen); if (Response == NULL) { return EFI_OUT_OF_RESOURCES; } - ChallengeLen = 2 * ISCSI_CHAP_MAX_DIGEST_SIZE + 3; - Challenge = AllocateZeroPool (ChallengeLen); + ChallengeLen = 2 * ISCSI_CHAP_MAX_DIGEST_SIZE + 3; + Challenge = AllocateZeroPool (ChallengeLen); if (Challenge == NULL) { FreePool (Response); return EFI_OUT_OF_RESOURCES; } switch (Conn->AuthStep) { - case ISCSI_AUTH_INITIAL: - // - // It's the initial Login Request. Fill in the key=value pairs mandatory - // for the initial Login Request. - // - IScsiAddKeyValuePair ( - Pdu, - ISCSI_KEY_INITIATOR_NAME, - mPrivate->InitiatorName - ); - IScsiAddKeyValuePair (Pdu, ISCSI_KEY_SESSION_TYPE, "Normal"); - IScsiAddKeyValuePair ( - Pdu, - ISCSI_KEY_TARGET_NAME, - Session->ConfigData->SessionConfigData.TargetName - ); - - if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) { - Value = ISCSI_KEY_VALUE_NONE; - ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT); - } else { - Value = ISCSI_AUTH_METHOD_CHAP; - } - - IScsiAddKeyValuePair (Pdu, ISCSI_KEY_AUTH_METHOD, Value); + case ISCSI_AUTH_INITIAL: + // + // It's the initial Login Request. Fill in the key=value pairs mandatory + // for the initial Login Request. + // + IScsiAddKeyValuePair ( + Pdu, + ISCSI_KEY_INITIATOR_NAME, + mPrivate->InitiatorName + ); + IScsiAddKeyValuePair (Pdu, ISCSI_KEY_SESSION_TYPE, "Normal"); + IScsiAddKeyValuePair ( + Pdu, + ISCSI_KEY_TARGET_NAME, + Session->ConfigData->SessionConfigData.TargetName + ); - break; + if (Session->AuthType == ISCSI_AUTH_TYPE_NONE) { + Value = ISCSI_KEY_VALUE_NONE; + ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT); + } else { + Value = ISCSI_AUTH_METHOD_CHAP; + } - case ISCSI_CHAP_STEP_ONE: - // - // First step, send the Login Request with CHAP_A= key-value - // pair. - // - IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_ALGORITHM, mChapHashListString); + IScsiAddKeyValuePair (Pdu, ISCSI_KEY_AUTH_METHOD, Value); - Conn->AuthStep = ISCSI_CHAP_STEP_TWO; - break; + break; - case ISCSI_CHAP_STEP_THREE: - // - // Third step, send the Login Request with CHAP_N= CHAP_R= or - // CHAP_N= CHAP_R= CHAP_I= CHAP_C= if target authentication is - // required too. - // - // CHAP_N= - // - IScsiAddKeyValuePair ( - Pdu, - ISCSI_KEY_CHAP_NAME, - (CHAR8 *) &AuthData->AuthConfig->CHAPName - ); - // - // CHAP_R= - // - ASSERT (AuthData->Hash != NULL); - BinToHexStatus = IScsiBinToHex ( - (UINT8 *) AuthData->CHAPResponse, - AuthData->Hash->DigestSize, - Response, - &RspLen - ); - ASSERT_EFI_ERROR (BinToHexStatus); - IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_RESPONSE, Response); - - if (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL) { + case ISCSI_CHAP_STEP_ONE: // - // CHAP_I= + // First step, send the Login Request with CHAP_A= key-value + // pair. // - IScsiGenRandom ((UINT8 *) &AuthData->OutIdentifier, 1); - AsciiSPrint (ValueStr, sizeof (ValueStr), "%d", AuthData->OutIdentifier); - IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_IDENTIFIER, ValueStr); + IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_ALGORITHM, mChapHashListString); + + Conn->AuthStep = ISCSI_CHAP_STEP_TWO; + break; + + case ISCSI_CHAP_STEP_THREE: // - // CHAP_C= + // Third step, send the Login Request with CHAP_N= CHAP_R= or + // CHAP_N= CHAP_R= CHAP_I= CHAP_C= if target authentication is + // required too. // - IScsiGenRandom ( - (UINT8 *) AuthData->OutChallenge, - AuthData->Hash->DigestSize + // CHAP_N= + // + IScsiAddKeyValuePair ( + Pdu, + ISCSI_KEY_CHAP_NAME, + (CHAR8 *)&AuthData->AuthConfig->CHAPName ); + // + // CHAP_R= + // + ASSERT (AuthData->Hash != NULL); BinToHexStatus = IScsiBinToHex ( - (UINT8 *) AuthData->OutChallenge, + (UINT8 *)AuthData->CHAPResponse, AuthData->Hash->DigestSize, - Challenge, - &ChallengeLen + Response, + &RspLen ); ASSERT_EFI_ERROR (BinToHexStatus); - IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_CHALLENGE, Challenge); + IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_RESPONSE, Response); + + if (AuthData->AuthConfig->CHAPType == ISCSI_CHAP_MUTUAL) { + // + // CHAP_I= + // + IScsiGenRandom ((UINT8 *)&AuthData->OutIdentifier, 1); + AsciiSPrint (ValueStr, sizeof (ValueStr), "%d", AuthData->OutIdentifier); + IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_IDENTIFIER, ValueStr); + // + // CHAP_C= + // + IScsiGenRandom ( + (UINT8 *)AuthData->OutChallenge, + AuthData->Hash->DigestSize + ); + BinToHexStatus = IScsiBinToHex ( + (UINT8 *)AuthData->OutChallenge, + AuthData->Hash->DigestSize, + Challenge, + &ChallengeLen + ); + ASSERT_EFI_ERROR (BinToHexStatus); + IScsiAddKeyValuePair (Pdu, ISCSI_KEY_CHAP_CHALLENGE, Challenge); + + Conn->AuthStep = ISCSI_CHAP_STEP_FOUR; + } - Conn->AuthStep = ISCSI_CHAP_STEP_FOUR; - } - // - // Set the stage transition flag. - // - ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT); - break; + // + // Set the stage transition flag. + // + ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT); + break; - default: - Status = EFI_PROTOCOL_ERROR; - break; + default: + Status = EFI_PROTOCOL_ERROR; + break; } FreePool (Response); @@ -621,14 +627,14 @@ IScsiCHAPInitHashList ( VOID ) { - CHAR8 *Position; - UINTN Left; - UINTN HashIndex; - CONST CHAP_HASH *Hash; - UINTN Printed; + CHAR8 *Position; + UINTN Left; + UINTN HashIndex; + CONST CHAP_HASH *Hash; + UINTN Printed; Position = mChapHashListString; - Left = sizeof (mChapHashListString); + Left = sizeof (mChapHashListString); for (HashIndex = 0; HashIndex < ARRAY_SIZE (mChapHash); HashIndex++) { Hash = &mChapHash[HashIndex]; @@ -657,7 +663,7 @@ IScsiCHAPInitHashList ( ASSERT (Printed + 1 < Left); Position += Printed; - Left -= Printed; + Left -= Printed; // // Sanity-check the digest size for Hash. diff --git a/NetworkPkg/IScsiDxe/IScsiCHAP.h b/NetworkPkg/IScsiDxe/IScsiCHAP.h index e2df634c4e..1be85d3978 100644 --- a/NetworkPkg/IScsiDxe/IScsiCHAP.h +++ b/NetworkPkg/IScsiDxe/IScsiCHAP.h @@ -9,41 +9,40 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef _ISCSI_CHAP_H_ #define _ISCSI_CHAP_H_ -#define ISCSI_AUTH_METHOD_CHAP "CHAP" +#define ISCSI_AUTH_METHOD_CHAP "CHAP" -#define ISCSI_KEY_CHAP_ALGORITHM "CHAP_A" -#define ISCSI_KEY_CHAP_IDENTIFIER "CHAP_I" -#define ISCSI_KEY_CHAP_CHALLENGE "CHAP_C" -#define ISCSI_KEY_CHAP_NAME "CHAP_N" -#define ISCSI_KEY_CHAP_RESPONSE "CHAP_R" +#define ISCSI_KEY_CHAP_ALGORITHM "CHAP_A" +#define ISCSI_KEY_CHAP_IDENTIFIER "CHAP_I" +#define ISCSI_KEY_CHAP_CHALLENGE "CHAP_C" +#define ISCSI_KEY_CHAP_NAME "CHAP_N" +#define ISCSI_KEY_CHAP_RESPONSE "CHAP_R" // // Identifiers of supported CHAP hash algorithms: // https://www.iana.org/assignments/ppp-numbers/ppp-numbers.xhtml#ppp-numbers-9 // -#define ISCSI_CHAP_ALGORITHM_MD5 5 -#define ISCSI_CHAP_ALGORITHM_SHA256 7 +#define ISCSI_CHAP_ALGORITHM_MD5 5 +#define ISCSI_CHAP_ALGORITHM_SHA256 7 // // Byte count of the largest digest over the above-listed // ISCSI_CHAP_ALGORITHM_* hash algorithms. // -#define ISCSI_CHAP_MAX_DIGEST_SIZE SHA256_DIGEST_SIZE - -#define ISCSI_CHAP_STEP_ONE 1 -#define ISCSI_CHAP_STEP_TWO 2 -#define ISCSI_CHAP_STEP_THREE 3 -#define ISCSI_CHAP_STEP_FOUR 4 +#define ISCSI_CHAP_MAX_DIGEST_SIZE SHA256_DIGEST_SIZE +#define ISCSI_CHAP_STEP_ONE 1 +#define ISCSI_CHAP_STEP_TWO 2 +#define ISCSI_CHAP_STEP_THREE 3 +#define ISCSI_CHAP_STEP_FOUR 4 #pragma pack(1) typedef struct _ISCSI_CHAP_AUTH_CONFIG_NVDATA { - UINT8 CHAPType; - CHAR8 CHAPName[ISCSI_CHAP_NAME_STORAGE]; - CHAR8 CHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; - CHAR8 ReverseCHAPName[ISCSI_CHAP_NAME_STORAGE]; - CHAR8 ReverseCHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; + UINT8 CHAPType; + CHAR8 CHAPName[ISCSI_CHAP_NAME_STORAGE]; + CHAR8 CHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; + CHAR8 ReverseCHAPName[ISCSI_CHAP_NAME_STORAGE]; + CHAR8 ReverseCHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; } ISCSI_CHAP_AUTH_CONFIG_NVDATA; #pragma pack() @@ -53,19 +52,19 @@ typedef struct _ISCSI_CHAP_AUTH_CONFIG_NVDATA { // typedef UINTN -(EFIAPI *CHAP_HASH_GET_CONTEXT_SIZE) ( +(EFIAPI *CHAP_HASH_GET_CONTEXT_SIZE)( VOID ); typedef BOOLEAN -(EFIAPI *CHAP_HASH_INIT) ( +(EFIAPI *CHAP_HASH_INIT)( OUT VOID *Context ); typedef BOOLEAN -(EFIAPI *CHAP_HASH_UPDATE) ( +(EFIAPI *CHAP_HASH_UPDATE)( IN OUT VOID *Context, IN CONST VOID *Data, IN UINTN DataSize @@ -73,37 +72,37 @@ BOOLEAN typedef BOOLEAN -(EFIAPI *CHAP_HASH_FINAL) ( +(EFIAPI *CHAP_HASH_FINAL)( IN OUT VOID *Context, OUT UINT8 *HashValue ); typedef struct { - UINT8 Algorithm; // ISCSI_CHAP_ALGORITHM_*, CHAP_A - UINT32 DigestSize; - CHAP_HASH_GET_CONTEXT_SIZE GetContextSize; - CHAP_HASH_INIT Init; - CHAP_HASH_UPDATE Update; - CHAP_HASH_FINAL Final; + UINT8 Algorithm; // ISCSI_CHAP_ALGORITHM_*, CHAP_A + UINT32 DigestSize; + CHAP_HASH_GET_CONTEXT_SIZE GetContextSize; + CHAP_HASH_INIT Init; + CHAP_HASH_UPDATE Update; + CHAP_HASH_FINAL Final; } CHAP_HASH; /// /// ISCSI CHAP Authentication Data /// typedef struct _ISCSI_CHAP_AUTH_DATA { - ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfig; - UINT32 InIdentifier; - UINT8 InChallenge[1024]; - UINT32 InChallengeLength; + ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfig; + UINT32 InIdentifier; + UINT8 InChallenge[1024]; + UINT32 InChallengeLength; // // The hash algorithm (CHAP_A) that the target selects in // ISCSI_CHAP_STEP_TWO. // - CONST CHAP_HASH *Hash; + CONST CHAP_HASH *Hash; // // Calculated CHAP Response (CHAP_R) value. // - UINT8 CHAPResponse[ISCSI_CHAP_MAX_DIGEST_SIZE]; + UINT8 CHAPResponse[ISCSI_CHAP_MAX_DIGEST_SIZE]; // // Auth-data to be sent out for mutual authentication. @@ -113,8 +112,8 @@ typedef struct _ISCSI_CHAP_AUTH_DATA { // digest size. In other words, it's good practice to feed *at least as many // bytes* to the hashing algorithm as the hashing algorithm will output. // - UINT32 OutIdentifier; - UINT8 OutChallenge[ISCSI_CHAP_MAX_DIGEST_SIZE]; + UINT32 OutIdentifier; + UINT8 OutChallenge[ISCSI_CHAP_MAX_DIGEST_SIZE]; } ISCSI_CHAP_AUTH_DATA; /** @@ -133,6 +132,7 @@ EFI_STATUS IScsiCHAPOnRspReceived ( IN ISCSI_CONNECTION *Conn ); + /** This function fills the CHAP authentication information into the login PDU during the security negotiation stage in the iSCSI connection login. @@ -164,4 +164,5 @@ VOID IScsiCHAPInitHashList ( VOID ); + #endif diff --git a/NetworkPkg/IScsiDxe/IScsiConfig.c b/NetworkPkg/IScsiDxe/IScsiConfig.c index 326b1da39e..37f6255af0 100644 --- a/NetworkPkg/IScsiDxe/IScsiConfig.c +++ b/NetworkPkg/IScsiDxe/IScsiConfig.c @@ -8,8 +8,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "IScsiImpl.h" -CHAR16 mVendorStorageName[] = L"ISCSI_CONFIG_IFR_NVDATA"; -ISCSI_FORM_CALLBACK_INFO *mCallbackInfo = NULL; +CHAR16 mVendorStorageName[] = L"ISCSI_CONFIG_IFR_NVDATA"; +ISCSI_FORM_CALLBACK_INFO *mCallbackInfo = NULL; HII_VENDOR_DEVICE_PATH mIScsiHiiVendorDevicePath = { { @@ -17,8 +17,8 @@ HII_VENDOR_DEVICE_PATH mIScsiHiiVendorDevicePath = { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { - (UINT8) (sizeof (VENDOR_DEVICE_PATH)), - (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + (UINT8)(sizeof (VENDOR_DEVICE_PATH)), + (UINT8)((sizeof (VENDOR_DEVICE_PATH)) >> 8) } }, ISCSI_CONFIG_GUID @@ -27,13 +27,12 @@ HII_VENDOR_DEVICE_PATH mIScsiHiiVendorDevicePath = { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, { - (UINT8) (END_DEVICE_PATH_LENGTH), - (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + (UINT8)(END_DEVICE_PATH_LENGTH), + (UINT8)((END_DEVICE_PATH_LENGTH) >> 8) } } }; - /** Convert the IP address into a dotted string. @@ -44,32 +43,32 @@ HII_VENDOR_DEVICE_PATH mIScsiHiiVendorDevicePath = { **/ VOID IScsiIpToStr ( - IN EFI_IP_ADDRESS *Ip, - IN BOOLEAN Ipv6Flag, - OUT CHAR16 *Str + IN EFI_IP_ADDRESS *Ip, + IN BOOLEAN Ipv6Flag, + OUT CHAR16 *Str ) { - EFI_IPv4_ADDRESS *Ip4; - EFI_IPv6_ADDRESS *Ip6; - UINTN Index; - BOOLEAN Short; - UINTN Number; - CHAR16 FormatString[8]; + EFI_IPv4_ADDRESS *Ip4; + EFI_IPv6_ADDRESS *Ip6; + UINTN Index; + BOOLEAN Short; + UINTN Number; + CHAR16 FormatString[8]; if (!Ipv6Flag) { Ip4 = &Ip->v4; UnicodeSPrint ( Str, - (UINTN) 2 * IP4_STR_MAX_SIZE, + (UINTN)2 * IP4_STR_MAX_SIZE, L"%d.%d.%d.%d", - (UINTN) Ip4->Addr[0], - (UINTN) Ip4->Addr[1], - (UINTN) Ip4->Addr[2], - (UINTN) Ip4->Addr[3] + (UINTN)Ip4->Addr[0], + (UINTN)Ip4->Addr[1], + (UINTN)Ip4->Addr[2], + (UINTN)Ip4->Addr[3] ); - return ; + return; } Ip6 = &Ip->v6; @@ -77,10 +76,11 @@ IScsiIpToStr ( for (Index = 0; Index < 15; Index = Index + 2) { if (!Short && - Index % 2 == 0 && - Ip6->Addr[Index] == 0 && - Ip6->Addr[Index + 1] == 0 - ) { + (Index % 2 == 0) && + (Ip6->Addr[Index] == 0) && + (Ip6->Addr[Index + 1] == 0) + ) + { // // Deal with the case of ::. // @@ -89,8 +89,8 @@ IScsiIpToStr ( *(Str + 1) = L':'; Str = Str + 2; } else { - *Str = L':'; - Str = Str + 1; + *Str = L':'; + Str = Str + 1; } while ((Index < 15) && (Ip6->Addr[Index] == 0) && (Ip6->Addr[Index + 1] == 0)) { @@ -111,7 +111,7 @@ IScsiIpToStr ( ASSERT (Index < 15); if (Ip6->Addr[Index] == 0) { - Number = UnicodeSPrint (Str, 2 * IP_STR_MAX_SIZE, L"%x:", (UINTN) Ip6->Addr[Index + 1]); + Number = UnicodeSPrint (Str, 2 * IP_STR_MAX_SIZE, L"%x:", (UINTN)Ip6->Addr[Index + 1]); } else { if (Ip6->Addr[Index + 1] < 0x10) { CopyMem (FormatString, L"%x0%x:", StrSize (L"%x0%x:")); @@ -122,9 +122,9 @@ IScsiIpToStr ( Number = UnicodeSPrint ( Str, 2 * IP_STR_MAX_SIZE, - (CONST CHAR16 *) FormatString, - (UINTN) Ip6->Addr[Index], - (UINTN) Ip6->Addr[Index + 1] + (CONST CHAR16 *)FormatString, + (UINTN)Ip6->Addr[Index], + (UINTN)Ip6->Addr[Index + 1] ); } @@ -151,14 +151,15 @@ IScsiIpToStr ( **/ BOOLEAN IpIsUnicast ( - IN EFI_IP_ADDRESS *Ip, + IN EFI_IP_ADDRESS *Ip, IN UINT8 IpMode ) { if (IpMode == IP_MODE_IP4) { - if (IP4_IS_UNSPECIFIED (NTOHL (Ip->Addr[0])) || IP4_IS_LOCAL_BROADCAST (NTOHL (Ip->Addr[0]))) { + if (IP4_IS_UNSPECIFIED (NTOHL (Ip->Addr[0])) || IP4_IS_LOCAL_BROADCAST (NTOHL (Ip->Addr[0]))) { return FALSE; } + return TRUE; } else if (IpMode == IP_MODE_IP6) { return NetIp6IsValidUnicast (&Ip->v6); @@ -180,27 +181,27 @@ IpIsUnicast ( **/ EFI_STATUS IScsiParseIsIdFromString ( - IN CONST CHAR16 *String, - IN OUT UINT8 *IsId + IN CONST CHAR16 *String, + IN OUT UINT8 *IsId ) { - UINT8 Index; - CHAR16 *IsIdStr; - CHAR16 TempStr[3]; - UINTN NodeVal; - CHAR16 PortString[ISCSI_NAME_IFR_MAX_SIZE]; - EFI_INPUT_KEY Key; + UINT8 Index; + CHAR16 *IsIdStr; + CHAR16 TempStr[3]; + UINTN NodeVal; + CHAR16 PortString[ISCSI_NAME_IFR_MAX_SIZE]; + EFI_INPUT_KEY Key; if ((String == NULL) || (IsId == NULL)) { return EFI_INVALID_PARAMETER; } - IsIdStr = (CHAR16 *) String; + IsIdStr = (CHAR16 *)String; - if (StrLen (IsIdStr) != 6 && StrLen (IsIdStr) != 12) { + if ((StrLen (IsIdStr) != 6) && (StrLen (IsIdStr) != 12)) { UnicodeSPrint ( PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Error! Only last 3 bytes are configurable, please input 6 hex numbers for last 3 bytes only or 12 hex numbers for full SSID!\n" ); @@ -228,7 +229,7 @@ IScsiParseIsIdFromString ( // NodeVal = StrHexToUintn (TempStr); - IsId[Index] = (UINT8) NodeVal; + IsId[Index] = (UINT8)NodeVal; IsIdStr = IsIdStr + 2; } @@ -248,12 +249,12 @@ IScsiParseIsIdFromString ( **/ EFI_STATUS IScsiConvertIsIdToString ( - OUT CHAR16 *String, - IN UINT8 *IsId + OUT CHAR16 *String, + IN UINT8 *IsId ) { - UINT8 Index; - UINTN Number; + UINT8 Index; + UINTN Number; if ((String == NULL) || (IsId == NULL)) { return EFI_INVALID_PARAMETER; @@ -265,16 +266,15 @@ IScsiConvertIsIdToString ( String, 2 * ISID_CONFIGURABLE_STORAGE, L"0%X", - (UINTN) IsId[Index] + (UINTN)IsId[Index] ); } else { Number = UnicodeSPrint ( String, 2 * ISID_CONFIGURABLE_STORAGE, L"%X", - (UINTN) IsId[Index] + (UINTN)IsId[Index] ); - } String = String + Number; @@ -301,36 +301,37 @@ IScsiConvertIsIdToString ( **/ EFI_STATUS IScsiGetValue ( - IN CONST EFI_STRING Configuration, - IN CHAR16 *String, - OUT UINTN *Value + IN CONST EFI_STRING Configuration, + IN CHAR16 *String, + OUT UINTN *Value ) { - CHAR16 *StringPtr; - CHAR16 *TmpPtr; - CHAR16 *Str; - CHAR16 TmpStr[2]; - UINTN Length; - UINTN Len; - UINTN Index; - UINT8 *Buf; - UINT8 DigitUint8; - EFI_STATUS Status; + CHAR16 *StringPtr; + CHAR16 *TmpPtr; + CHAR16 *Str; + CHAR16 TmpStr[2]; + UINTN Length; + UINTN Len; + UINTN Index; + UINT8 *Buf; + UINT8 DigitUint8; + EFI_STATUS Status; // // Get Value. // - Buf = NULL; + Buf = NULL; StringPtr = StrStr (Configuration, String); - ASSERT(StringPtr != NULL); + ASSERT (StringPtr != NULL); StringPtr += StrLen (String); - TmpPtr = StringPtr; + TmpPtr = StringPtr; while (*StringPtr != L'\0' && *StringPtr != L'&') { - StringPtr ++; + StringPtr++; } + Length = StringPtr - TmpPtr; - Len = Length + 1; + Len = Length + 1; Str = AllocateZeroPool (Len * sizeof (CHAR16)); if (Str == NULL) { @@ -342,20 +343,20 @@ IScsiGetValue ( *(Str + Length) = L'\0'; Len = (Len + 1) / 2; - Buf = (UINT8 *) AllocateZeroPool (Len); + Buf = (UINT8 *)AllocateZeroPool (Len); if (Buf == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; } ZeroMem (TmpStr, sizeof (TmpStr)); - for (Index = 0; Index < Length; Index ++) { - TmpStr[0] = Str[Length - Index - 1]; - DigitUint8 = (UINT8) StrHexToUint64 (TmpStr); + for (Index = 0; Index < Length; Index++) { + TmpStr[0] = Str[Length - Index - 1]; + DigitUint8 = (UINT8)StrHexToUint64 (TmpStr); if ((Index & 1) == 0) { - Buf [Index/2] = DigitUint8; + Buf[Index/2] = DigitUint8; } else { - Buf [Index/2] = (UINT8) ((DigitUint8 << 4) + Buf [Index/2]); + Buf[Index/2] = (UINT8)((DigitUint8 << 4) + Buf[Index/2]); } } @@ -388,7 +389,7 @@ Exit: **/ ISCSI_ATTEMPT_CONFIG_NVDATA * IScsiConfigGetAttemptByConfigIndex ( - IN UINT8 AttemptConfigIndex + IN UINT8 AttemptConfigIndex ) { LIST_ENTRY *Entry; @@ -404,7 +405,6 @@ IScsiConfigGetAttemptByConfigIndex ( return NULL; } - /** Get the existing attempt config data from global structure by the NicIndex. @@ -419,8 +419,8 @@ IScsiConfigGetAttemptByConfigIndex ( **/ ISCSI_ATTEMPT_CONFIG_NVDATA * IScsiConfigGetAttemptByNic ( - IN ISCSI_ATTEMPT_CONFIG_NVDATA *NewAttempt, - IN UINT8 IScsiMode + IN ISCSI_ATTEMPT_CONFIG_NVDATA *NewAttempt, + IN UINT8 IScsiMode ) { LIST_ENTRY *Entry; @@ -428,8 +428,9 @@ IScsiConfigGetAttemptByNic ( NET_LIST_FOR_EACH (Entry, &mPrivate->AttemptConfigs) { Attempt = NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA, Link); - if (Attempt != NewAttempt && Attempt->NicIndex == NewAttempt->NicIndex && - Attempt->SessionConfigData.Enabled == IScsiMode) { + if ((Attempt != NewAttempt) && (Attempt->NicIndex == NewAttempt->NicIndex) && + (Attempt->SessionConfigData.Enabled == IScsiMode)) + { return Attempt; } } @@ -451,16 +452,16 @@ IScsiConfigGetAttemptByNic ( **/ EFI_STATUS IScsiGetAttemptIndexList ( - IN CHAR16 *AttemptNameList, - OUT UINT8 *AttemptIndexList, - IN BOOLEAN IsAddAttempts -) + IN CHAR16 *AttemptNameList, + OUT UINT8 *AttemptIndexList, + IN BOOLEAN IsAddAttempts + ) { - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - CHAR16 *AttemptStr; - UINT8 AttemptIndex; - UINTN Len; - UINTN Index; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + CHAR16 *AttemptStr; + UINT8 AttemptIndex; + UINTN Len; + UINTN Index; Index = 0; @@ -469,16 +470,17 @@ IScsiGetAttemptIndexList ( } AttemptStr = AttemptNameList; - Len = StrLen (L"attempt:"); + Len = StrLen (L"attempt:"); while (*AttemptStr != L'\0') { AttemptStr = StrStr (AttemptStr, L"attempt:"); if (AttemptStr == NULL) { return EFI_INVALID_PARAMETER; } - AttemptStr += Len; - AttemptIndex = (UINT8)(*AttemptStr - L'0'); - AttemptConfigData = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + + AttemptStr += Len; + AttemptIndex = (UINT8)(*AttemptStr - L'0'); + AttemptConfigData = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (IsAddAttempts) { if ((AttemptConfigData != NULL) || ((AttemptIndex) > PcdGet8 (PcdMaxIScsiAttemptNumber))) { return EFI_INVALID_PARAMETER; @@ -490,9 +492,10 @@ IScsiGetAttemptIndexList ( } AttemptIndexList[Index] = AttemptIndex; - Index ++; + Index++; AttemptStr += 2; } + return EFI_SUCCESS; } @@ -509,22 +512,22 @@ IScsiConvertAttemptConfigDataToIfrNvData ( IN OUT ISCSI_CONFIG_IFR_NVDATA *IfrNvData ) { - ISCSI_SESSION_CONFIG_NVDATA *SessionConfigData; - ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfigData; - EFI_IP_ADDRESS Ip; - BOOLEAN DnsMode; + ISCSI_SESSION_CONFIG_NVDATA *SessionConfigData; + ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfigData; + EFI_IP_ADDRESS Ip; + BOOLEAN DnsMode; // // Normal session configuration parameters. // - SessionConfigData = &Attempt->SessionConfigData; - IfrNvData->Enabled = SessionConfigData->Enabled; - IfrNvData->IpMode = SessionConfigData->IpMode; - DnsMode = SessionConfigData->DnsMode; + SessionConfigData = &Attempt->SessionConfigData; + IfrNvData->Enabled = SessionConfigData->Enabled; + IfrNvData->IpMode = SessionConfigData->IpMode; + DnsMode = SessionConfigData->DnsMode; - IfrNvData->InitiatorInfoFromDhcp = SessionConfigData->InitiatorInfoFromDhcp; - IfrNvData->TargetInfoFromDhcp = SessionConfigData->TargetInfoFromDhcp; - IfrNvData->TargetPort = SessionConfigData->TargetPort; + IfrNvData->InitiatorInfoFromDhcp = SessionConfigData->InitiatorInfoFromDhcp; + IfrNvData->TargetInfoFromDhcp = SessionConfigData->TargetInfoFromDhcp; + IfrNvData->TargetPort = SessionConfigData->TargetPort; if (IfrNvData->IpMode == IP_MODE_IP4) { CopyMem (&Ip.v4, &SessionConfigData->LocalIp, sizeof (EFI_IPv4_ADDRESS)); @@ -538,7 +541,6 @@ IScsiConvertAttemptConfigDataToIfrNvData ( CopyMem (&Ip.v4, &SessionConfigData->TargetIp, sizeof (EFI_IPv4_ADDRESS)); IScsiIpToStr (&Ip, FALSE, IfrNvData->TargetIp); } - } else if (IfrNvData->IpMode == IP_MODE_IP6) { ZeroMem (IfrNvData->TargetIp, sizeof (IfrNvData->TargetIp)); if (SessionConfigData->TargetIp.v6.Addr[0] != '\0') { @@ -620,16 +622,16 @@ IScsiConvertAttemptConfigDataToIfrNvDataByKeyword ( IN OUT ISCSI_CONFIG_IFR_NVDATA *IfrNvData ) { - LIST_ENTRY *Entry; - ISCSI_ATTEMPT_CONFIG_NVDATA *Attempt; - ISCSI_SESSION_CONFIG_NVDATA *SessionConfigData; - ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfigData; - CHAR16 AttemptNameList[ATTEMPT_NAME_LIST_SIZE]; - ISCSI_NIC_INFO *NicInfo; - CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; - EFI_IP_ADDRESS Ip; - UINTN Index; - UINTN StringLen; + LIST_ENTRY *Entry; + ISCSI_ATTEMPT_CONFIG_NVDATA *Attempt; + ISCSI_SESSION_CONFIG_NVDATA *SessionConfigData; + ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfigData; + CHAR16 AttemptNameList[ATTEMPT_NAME_LIST_SIZE]; + ISCSI_NIC_INFO *NicInfo; + CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; + EFI_IP_ADDRESS Ip; + UINTN Index; + UINTN StringLen; NicInfo = NULL; ZeroMem (AttemptNameList, sizeof (AttemptNameList)); @@ -640,10 +642,10 @@ IScsiConvertAttemptConfigDataToIfrNvDataByKeyword ( // // Normal session configuration parameters. // - SessionConfigData = &Attempt->SessionConfigData; + SessionConfigData = &Attempt->SessionConfigData; ASSERT ((Attempt->AttemptConfigIndex > 0) && (Attempt->AttemptConfigIndex <= FixedPcdGet8 (PcdMaxIScsiAttemptNumber))); - Index = Attempt->AttemptConfigIndex - 1; + Index = Attempt->AttemptConfigIndex - 1; // // Save the attempt to AttemptNameList as Attempt:1 Attempt:2 @@ -652,7 +654,7 @@ IScsiConvertAttemptConfigDataToIfrNvDataByKeyword ( Attempt->AttemptName, AttemptNameList + StrLen (AttemptNameList), ATTEMPT_NAME_LIST_SIZE - StrLen (AttemptNameList) - ); + ); StringLen = StrLen (AttemptNameList); ASSERT (StringLen > 2); @@ -663,16 +665,16 @@ IScsiConvertAttemptConfigDataToIfrNvDataByKeyword ( Attempt->AttemptName, IfrNvData->ISCSIAttemptName + ATTEMPT_NAME_SIZE * Index, ATTEMPT_NAME_LIST_SIZE - ATTEMPT_NAME_SIZE * Index - ); + ); - IfrNvData->ISCSIBootEnableList[Index] = SessionConfigData->Enabled; - IfrNvData->ISCSIIpAddressTypeList[Index] = SessionConfigData->IpMode; + IfrNvData->ISCSIBootEnableList[Index] = SessionConfigData->Enabled; + IfrNvData->ISCSIIpAddressTypeList[Index] = SessionConfigData->IpMode; - IfrNvData->ISCSIInitiatorInfoViaDHCP[Index] = SessionConfigData->InitiatorInfoFromDhcp; - IfrNvData->ISCSITargetInfoViaDHCP[Index] = SessionConfigData->TargetInfoFromDhcp; - IfrNvData->ISCSIConnectRetry[Index] = SessionConfigData->ConnectRetryCount; - IfrNvData->ISCSIConnectTimeout[Index] = SessionConfigData->ConnectTimeout; - IfrNvData->ISCSITargetTcpPort[Index] = SessionConfigData->TargetPort; + IfrNvData->ISCSIInitiatorInfoViaDHCP[Index] = SessionConfigData->InitiatorInfoFromDhcp; + IfrNvData->ISCSITargetInfoViaDHCP[Index] = SessionConfigData->TargetInfoFromDhcp; + IfrNvData->ISCSIConnectRetry[Index] = SessionConfigData->ConnectRetryCount; + IfrNvData->ISCSIConnectTimeout[Index] = SessionConfigData->ConnectTimeout; + IfrNvData->ISCSITargetTcpPort[Index] = SessionConfigData->TargetPort; if (SessionConfigData->IpMode == IP_MODE_IP4) { CopyMem (&Ip.v4, &SessionConfigData->LocalIp, sizeof (EFI_IPv4_ADDRESS)); @@ -710,10 +712,10 @@ IScsiConvertAttemptConfigDataToIfrNvDataByKeyword ( IScsiLunToUnicodeStr (SessionConfigData->BootLun, IfrNvData->Keyword[Index].ISCSILun); IScsiConvertIsIdToString (IfrNvData->Keyword[Index].ISCSIIsId, SessionConfigData->IsId); - IfrNvData->ISCSIAuthenticationMethod[Index] = Attempt->AuthenticationType; + IfrNvData->ISCSIAuthenticationMethod[Index] = Attempt->AuthenticationType; if (Attempt->AuthenticationType == ISCSI_AUTH_TYPE_CHAP) { - AuthConfigData = &Attempt->AuthConfigData.CHAP; + AuthConfigData = &Attempt->AuthConfigData.CHAP; IfrNvData->ISCSIChapType[Index] = AuthConfigData->CHAPType; AsciiStrToUnicodeStrS ( AuthConfigData->CHAPName, @@ -740,7 +742,7 @@ IScsiConvertAttemptConfigDataToIfrNvDataByKeyword ( ); } } - CopyMem(IfrNvData->ISCSIDisplayAttemptList, AttemptNameList, ATTEMPT_NAME_LIST_SIZE); + CopyMem (IfrNvData->ISCSIDisplayAttemptList, AttemptNameList, ATTEMPT_NAME_LIST_SIZE); ZeroMem (IfrNvData->ISCSIMacAddr, sizeof (IfrNvData->ISCSIMacAddr)); NET_LIST_FOR_EACH (Entry, &mPrivate->NicInfoList) { @@ -786,34 +788,34 @@ IScsiConvertIfrNvDataToAttemptConfigData ( IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *Attempt ) { - EFI_IP_ADDRESS HostIp; - EFI_IP_ADDRESS SubnetMask; - EFI_IP_ADDRESS Gateway; - CHAR16 *MacString; - CHAR16 *AttemptName1; - CHAR16 *AttemptName2; - ISCSI_ATTEMPT_CONFIG_NVDATA *ExistAttempt; - ISCSI_ATTEMPT_CONFIG_NVDATA *SameNicAttempt; - CHAR16 IScsiMode[64]; - CHAR16 IpMode[64]; - ISCSI_NIC_INFO *NicInfo; - EFI_INPUT_KEY Key; - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - UINT8 *AttemptOrderTmp; - UINTN TotalNumber; - EFI_STATUS Status; - - if (IfrNvData == NULL || Attempt == NULL) { + EFI_IP_ADDRESS HostIp; + EFI_IP_ADDRESS SubnetMask; + EFI_IP_ADDRESS Gateway; + CHAR16 *MacString; + CHAR16 *AttemptName1; + CHAR16 *AttemptName2; + ISCSI_ATTEMPT_CONFIG_NVDATA *ExistAttempt; + ISCSI_ATTEMPT_CONFIG_NVDATA *SameNicAttempt; + CHAR16 IScsiMode[64]; + CHAR16 IpMode[64]; + ISCSI_NIC_INFO *NicInfo; + EFI_INPUT_KEY Key; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + UINT8 *AttemptOrderTmp; + UINTN TotalNumber; + EFI_STATUS Status; + + if ((IfrNvData == NULL) || (Attempt == NULL)) { return EFI_INVALID_PARAMETER; } // // Update those fields which don't have INTERACTIVE attribute. // - Attempt->SessionConfigData.ConnectRetryCount = IfrNvData->ConnectRetryCount; - Attempt->SessionConfigData.ConnectTimeout = IfrNvData->ConnectTimeout; - Attempt->SessionConfigData.IpMode = IfrNvData->IpMode; + Attempt->SessionConfigData.ConnectRetryCount = IfrNvData->ConnectRetryCount; + Attempt->SessionConfigData.ConnectTimeout = IfrNvData->ConnectTimeout; + Attempt->SessionConfigData.IpMode = IfrNvData->IpMode; if (IfrNvData->IpMode < IP_MODE_AUTOCONFIG) { Attempt->SessionConfigData.InitiatorInfoFromDhcp = IfrNvData->InitiatorInfoFromDhcp; @@ -878,10 +880,11 @@ IScsiConvertIfrNvDataToAttemptConfigData ( } } } + // // Validate target configuration if DHCP isn't deployed. // - if (!Attempt->SessionConfigData.TargetInfoFromDhcp && Attempt->SessionConfigData.IpMode < IP_MODE_AUTOCONFIG) { + if (!Attempt->SessionConfigData.TargetInfoFromDhcp && (Attempt->SessionConfigData.IpMode < IP_MODE_AUTOCONFIG)) { if (!Attempt->SessionConfigData.DnsMode) { if (!IpIsUnicast (&Attempt->SessionConfigData.TargetIp, IfrNvData->IpMode)) { CreatePopUp ( @@ -937,7 +940,8 @@ IScsiConvertIfrNvDataToAttemptConfigData ( if ((IfrNvData->CHAPType == ISCSI_CHAP_MUTUAL) && ((IfrNvData->ReverseCHAPName[0] == '\0') || (IfrNvData->ReverseCHAPSecret[0] == '\0')) - ) { + ) + { CreatePopUp ( EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, @@ -953,12 +957,12 @@ IScsiConvertIfrNvDataToAttemptConfigData ( // SameNicAttempt = IScsiConfigGetAttemptByNic (Attempt, IfrNvData->Enabled); if (SameNicAttempt != NULL) { - AttemptName1 = (CHAR16 *) AllocateZeroPool (ATTEMPT_NAME_SIZE * sizeof (CHAR16)); + AttemptName1 = (CHAR16 *)AllocateZeroPool (ATTEMPT_NAME_SIZE * sizeof (CHAR16)); if (AttemptName1 == NULL) { return EFI_OUT_OF_RESOURCES; } - AttemptName2 = (CHAR16 *) AllocateZeroPool (ATTEMPT_NAME_SIZE * sizeof (CHAR16)); + AttemptName2 = (CHAR16 *)AllocateZeroPool (ATTEMPT_NAME_SIZE * sizeof (CHAR16)); if (AttemptName2 == NULL) { FreePool (AttemptName1); return EFI_OUT_OF_RESOURCES; @@ -969,7 +973,7 @@ IScsiConvertIfrNvDataToAttemptConfigData ( UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Warning! Attempt \"%s\" uses same NIC as Attempt \"%s\".", AttemptName1, AttemptName2 @@ -1011,7 +1015,7 @@ IScsiConvertIfrNvDataToAttemptConfigData ( return EFI_NOT_FOUND; } - MacString = (CHAR16 *) AllocateZeroPool (ISCSI_MAX_MAC_STRING_LEN * sizeof (CHAR16)); + MacString = (CHAR16 *)AllocateZeroPool (ISCSI_MAX_MAC_STRING_LEN * sizeof (CHAR16)); if (MacString == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -1020,7 +1024,7 @@ IScsiConvertIfrNvDataToAttemptConfigData ( UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"MAC: %s, PFA: Bus %d | Dev %d | Func %d, iSCSI mode: %s, IP version: %s", MacString, NicInfo->BusNumber, @@ -1048,9 +1052,9 @@ IScsiConvertIfrNvDataToAttemptConfigData ( if (ExistAttempt != NULL) { ASSERT (ExistAttempt == Attempt); - if (IfrNvData->Enabled == ISCSI_DISABLED && - Attempt->SessionConfigData.Enabled != ISCSI_DISABLED) { - + if ((IfrNvData->Enabled == ISCSI_DISABLED) && + (Attempt->SessionConfigData.Enabled != ISCSI_DISABLED)) + { // // User updates the Attempt from "Enabled"/"Enabled for MPIO" to "Disabled". // @@ -1066,11 +1070,12 @@ IScsiConvertIfrNvDataToAttemptConfigData ( if (mPrivate->SinglePathCount < 1) { return EFI_ABORTED; } + mPrivate->SinglePathCount--; } - - } else if (IfrNvData->Enabled == ISCSI_ENABLED_FOR_MPIO && - Attempt->SessionConfigData.Enabled == ISCSI_ENABLED) { + } else if ((IfrNvData->Enabled == ISCSI_ENABLED_FOR_MPIO) && + (Attempt->SessionConfigData.Enabled == ISCSI_ENABLED)) + { // // User updates the Attempt from "Enabled" to "Enabled for MPIO". // @@ -1081,9 +1086,9 @@ IScsiConvertIfrNvDataToAttemptConfigData ( mPrivate->EnableMpio = TRUE; mPrivate->MpioCount++; mPrivate->SinglePathCount--; - - } else if (IfrNvData->Enabled == ISCSI_ENABLED && - Attempt->SessionConfigData.Enabled == ISCSI_ENABLED_FOR_MPIO) { + } else if ((IfrNvData->Enabled == ISCSI_ENABLED) && + (Attempt->SessionConfigData.Enabled == ISCSI_ENABLED_FOR_MPIO)) + { // // User updates the Attempt from "Enabled for MPIO" to "Enabled". // @@ -1094,22 +1099,21 @@ IScsiConvertIfrNvDataToAttemptConfigData ( if (--mPrivate->MpioCount == 0) { mPrivate->EnableMpio = FALSE; } - mPrivate->SinglePathCount++; - } else if (IfrNvData->Enabled != ISCSI_DISABLED && - Attempt->SessionConfigData.Enabled == ISCSI_DISABLED) { + mPrivate->SinglePathCount++; + } else if ((IfrNvData->Enabled != ISCSI_DISABLED) && + (Attempt->SessionConfigData.Enabled == ISCSI_DISABLED)) + { // // User updates the Attempt from "Disabled" to "Enabled"/"Enabled for MPIO". // if (IfrNvData->Enabled == ISCSI_ENABLED_FOR_MPIO) { mPrivate->EnableMpio = TRUE; mPrivate->MpioCount++; - } else if (IfrNvData->Enabled == ISCSI_ENABLED) { mPrivate->SinglePathCount++; } } - } else if (ExistAttempt == NULL) { // // When a new attempt is created, pointer of the attempt is saved to @@ -1138,6 +1142,7 @@ IScsiConvertIfrNvDataToAttemptConfigData ( if (AttemptConfigOrder != NULL) { FreePool (AttemptConfigOrder); } + return EFI_OUT_OF_RESOURCES; } @@ -1180,12 +1185,13 @@ IScsiConvertIfrNvDataToAttemptConfigData ( IScsiConfigUpdateAttempt (); } + Attempt->SessionConfigData.Enabled = IfrNvData->Enabled; // // Record the user configuration information in NVR. // - UnicodeSPrint (mPrivate->PortString, (UINTN) ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", Attempt->AttemptConfigIndex); + UnicodeSPrint (mPrivate->PortString, (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", Attempt->AttemptConfigIndex); FreePool (MacString); @@ -1210,40 +1216,40 @@ IScsiConvertIfrNvDataToAttemptConfigData ( **/ EFI_STATUS IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( - IN ISCSI_CONFIG_IFR_NVDATA *IfrNvData, - IN UINTN OffSet + IN ISCSI_CONFIG_IFR_NVDATA *IfrNvData, + IN UINTN OffSet ) { - ISCSI_ATTEMPT_CONFIG_NVDATA *Attempt; - UINT8 AttemptIndex; - UINT8 Index; - UINT8 ChapSecretLen; - UINT8 ReverseChapSecretLen; - CHAR16 *AttemptName1; - CHAR16 *AttemptName2; - ISCSI_ATTEMPT_CONFIG_NVDATA *SameNicAttempt; - CHAR8 LunString[ISCSI_LUN_STR_MAX_LEN]; - CHAR8 IScsiName[ISCSI_NAME_MAX_SIZE]; - CHAR8 IpString[IP_STR_MAX_SIZE]; - EFI_IP_ADDRESS HostIp; - EFI_IP_ADDRESS SubnetMask; - EFI_IP_ADDRESS Gateway; - EFI_INPUT_KEY Key; - UINT64 Lun; - EFI_STATUS Status; + ISCSI_ATTEMPT_CONFIG_NVDATA *Attempt; + UINT8 AttemptIndex; + UINT8 Index; + UINT8 ChapSecretLen; + UINT8 ReverseChapSecretLen; + CHAR16 *AttemptName1; + CHAR16 *AttemptName2; + ISCSI_ATTEMPT_CONFIG_NVDATA *SameNicAttempt; + CHAR8 LunString[ISCSI_LUN_STR_MAX_LEN]; + CHAR8 IScsiName[ISCSI_NAME_MAX_SIZE]; + CHAR8 IpString[IP_STR_MAX_SIZE]; + EFI_IP_ADDRESS HostIp; + EFI_IP_ADDRESS SubnetMask; + EFI_IP_ADDRESS Gateway; + EFI_INPUT_KEY Key; + UINT64 Lun; + EFI_STATUS Status; Attempt = NULL; ZeroMem (IScsiName, sizeof (IScsiName)); if (OffSet < ATTEMPT_BOOTENABLE_VAR_OFFSET) { return EFI_SUCCESS; - } else if ((OffSet >= ATTEMPT_BOOTENABLE_VAR_OFFSET) && (OffSet < ATTEMPT_ADDRESS_TYPE_VAR_OFFSET)) { - AttemptIndex = (UINT8) ((OffSet - ATTEMPT_BOOTENABLE_VAR_OFFSET) + 1); - Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + AttemptIndex = (UINT8)((OffSet - ATTEMPT_BOOTENABLE_VAR_OFFSET) + 1); + Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (Attempt == NULL) { return EFI_INVALID_PARAMETER; } + IfrNvData->Enabled = IfrNvData->ISCSIBootEnableList[AttemptIndex - 1]; // // Validate the configuration of attempt. @@ -1254,12 +1260,12 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( // SameNicAttempt = IScsiConfigGetAttemptByNic (Attempt, IfrNvData->Enabled); if (SameNicAttempt != NULL) { - AttemptName1 = (CHAR16 *) AllocateZeroPool (ATTEMPT_NAME_SIZE * sizeof (CHAR16)); + AttemptName1 = (CHAR16 *)AllocateZeroPool (ATTEMPT_NAME_SIZE * sizeof (CHAR16)); if (AttemptName1 == NULL) { return EFI_OUT_OF_RESOURCES; } - AttemptName2 = (CHAR16 *) AllocateZeroPool (ATTEMPT_NAME_SIZE * sizeof (CHAR16)); + AttemptName2 = (CHAR16 *)AllocateZeroPool (ATTEMPT_NAME_SIZE * sizeof (CHAR16)); if (AttemptName2 == NULL) { FreePool (AttemptName1); return EFI_OUT_OF_RESOURCES; @@ -1270,7 +1276,7 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Warning! \"%s\" uses same NIC as Attempt \"%s\".", AttemptName1, AttemptName2 @@ -1288,9 +1294,9 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( } } - if (IfrNvData->Enabled == ISCSI_DISABLED && - Attempt->SessionConfigData.Enabled != ISCSI_DISABLED) { - + if ((IfrNvData->Enabled == ISCSI_DISABLED) && + (Attempt->SessionConfigData.Enabled != ISCSI_DISABLED)) + { // // User updates the Attempt from "Enabled"/"Enabled for MPIO" to "Disabled". // @@ -1306,11 +1312,12 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( if (mPrivate->SinglePathCount < 1) { return EFI_ABORTED; } + mPrivate->SinglePathCount--; } - - } else if (IfrNvData->Enabled == ISCSI_ENABLED_FOR_MPIO && - Attempt->SessionConfigData.Enabled == ISCSI_ENABLED) { + } else if ((IfrNvData->Enabled == ISCSI_ENABLED_FOR_MPIO) && + (Attempt->SessionConfigData.Enabled == ISCSI_ENABLED)) + { // // User updates the Attempt from "Enabled" to "Enabled for MPIO". // @@ -1321,9 +1328,9 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( mPrivate->EnableMpio = TRUE; mPrivate->MpioCount++; mPrivate->SinglePathCount--; - - } else if (IfrNvData->Enabled == ISCSI_ENABLED && - Attempt->SessionConfigData.Enabled == ISCSI_ENABLED_FOR_MPIO) { + } else if ((IfrNvData->Enabled == ISCSI_ENABLED) && + (Attempt->SessionConfigData.Enabled == ISCSI_ENABLED_FOR_MPIO)) + { // // User updates the Attempt from "Enabled for MPIO" to "Enabled". // @@ -1334,61 +1341,62 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( if (--mPrivate->MpioCount == 0) { mPrivate->EnableMpio = FALSE; } - mPrivate->SinglePathCount++; - } else if (IfrNvData->Enabled != ISCSI_DISABLED && - Attempt->SessionConfigData.Enabled == ISCSI_DISABLED) { + mPrivate->SinglePathCount++; + } else if ((IfrNvData->Enabled != ISCSI_DISABLED) && + (Attempt->SessionConfigData.Enabled == ISCSI_DISABLED)) + { // // User updates the Attempt from "Disabled" to "Enabled"/"Enabled for MPIO". // if (IfrNvData->Enabled == ISCSI_ENABLED_FOR_MPIO) { mPrivate->EnableMpio = TRUE; mPrivate->MpioCount++; - } else if (IfrNvData->Enabled == ISCSI_ENABLED) { mPrivate->SinglePathCount++; } } - Attempt->SessionConfigData.Enabled = IfrNvData->Enabled; + Attempt->SessionConfigData.Enabled = IfrNvData->Enabled; } else if ((OffSet >= ATTEMPT_ADDRESS_TYPE_VAR_OFFSET) && (OffSet < ATTEMPT_CONNECT_RETRY_VAR_OFFSET)) { - AttemptIndex = (UINT8) ((OffSet - ATTEMPT_ADDRESS_TYPE_VAR_OFFSET) + 1); - Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + AttemptIndex = (UINT8)((OffSet - ATTEMPT_ADDRESS_TYPE_VAR_OFFSET) + 1); + Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (Attempt == NULL) { return EFI_INVALID_PARAMETER; } + Attempt->SessionConfigData.IpMode = IfrNvData->ISCSIIpAddressTypeList[AttemptIndex - 1]; if (Attempt->SessionConfigData.IpMode < IP_MODE_AUTOCONFIG) { Attempt->AutoConfigureMode = 0; } - } else if ((OffSet >= ATTEMPT_CONNECT_RETRY_VAR_OFFSET) && (OffSet < ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET)) { - AttemptIndex = (UINT8) ((OffSet - ATTEMPT_CONNECT_RETRY_VAR_OFFSET) + 1); - Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + AttemptIndex = (UINT8)((OffSet - ATTEMPT_CONNECT_RETRY_VAR_OFFSET) + 1); + Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (Attempt == NULL) { return EFI_INVALID_PARAMETER; } if (IfrNvData->ISCSIConnectRetry[AttemptIndex - 1] > CONNECT_MAX_RETRY) { CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"The minimum value is 0 and the maximum is 16. 0 means no retry.", - NULL - ); + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"The minimum value is 0 and the maximum is 16. 0 means no retry.", + NULL + ); return EFI_INVALID_PARAMETER; } - Attempt->SessionConfigData.ConnectRetryCount = IfrNvData->ISCSIConnectRetry[AttemptIndex - 1]; + Attempt->SessionConfigData.ConnectRetryCount = IfrNvData->ISCSIConnectRetry[AttemptIndex - 1]; } else if ((OffSet >= ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET) && (OffSet < ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET)) { - AttemptIndex = (UINT8) ((OffSet - ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET) / 2 + 1); - Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + AttemptIndex = (UINT8)((OffSet - ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET) / 2 + 1); + Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (Attempt == NULL) { return EFI_INVALID_PARAMETER; } if ((IfrNvData->ISCSIConnectTimeout[AttemptIndex - 1] < CONNECT_MIN_TIMEOUT) || - (IfrNvData->ISCSIConnectTimeout[AttemptIndex - 1] > CONNECT_MAX_TIMEOUT)) { + (IfrNvData->ISCSIConnectTimeout[AttemptIndex - 1] > CONNECT_MAX_TIMEOUT)) + { CreatePopUp ( EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, @@ -1402,18 +1410,17 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( if (Attempt->SessionConfigData.ConnectTimeout == 0) { Attempt->SessionConfigData.ConnectTimeout = CONNECT_DEFAULT_TIMEOUT; } - } else if ((OffSet >= ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET) && (OffSet < ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET)) { - AttemptIndex = (UINT8) ((OffSet - ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET) + 1); - Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + AttemptIndex = (UINT8)((OffSet - ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET) + 1); + Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (Attempt == NULL) { return EFI_INVALID_PARAMETER; } - Attempt->SessionConfigData.InitiatorInfoFromDhcp = IfrNvData->ISCSIInitiatorInfoViaDHCP[AttemptIndex - 1]; + Attempt->SessionConfigData.InitiatorInfoFromDhcp = IfrNvData->ISCSIInitiatorInfoViaDHCP[AttemptIndex - 1]; } else if ((OffSet >= ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET) && (OffSet < ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET)) { - AttemptIndex = (UINT8) ((OffSet - ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET) + 1); - Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + AttemptIndex = (UINT8)((OffSet - ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET) + 1); + Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (Attempt == NULL) { return EFI_INVALID_PARAMETER; } @@ -1429,13 +1436,13 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if ((OffSet >= ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET) && (OffSet < ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET)) { - AttemptIndex = (UINT8) ((OffSet - ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET) / 2 + 1); - Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + AttemptIndex = (UINT8)((OffSet - ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET) / 2 + 1); + Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (Attempt == NULL) { return EFI_INVALID_PARAMETER; } + if ((Attempt->SessionConfigData.IpMode < IP_MODE_AUTOCONFIG) && (!Attempt->SessionConfigData.TargetInfoFromDhcp)) { Attempt->SessionConfigData.TargetPort = IfrNvData->ISCSITargetTcpPort[AttemptIndex - 1]; if (Attempt->SessionConfigData.TargetPort == 0) { @@ -1450,30 +1457,28 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if ((OffSet >= ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET) && (OffSet < ATTEMPT_CHARTYPE_VAR_OFFSET)) { - AttemptIndex = (UINT8) ((OffSet - ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET) + 1); - Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + AttemptIndex = (UINT8)((OffSet - ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET) + 1); + Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (Attempt == NULL) { return EFI_INVALID_PARAMETER; } Attempt->AuthenticationType = IfrNvData->ISCSIAuthenticationMethod[AttemptIndex - 1]; - } else if ((OffSet >= ATTEMPT_CHARTYPE_VAR_OFFSET) && (OffSet < ATTEMPT_ISID_VAR_OFFSET)) { - AttemptIndex = (UINT8) ((OffSet - ATTEMPT_CHARTYPE_VAR_OFFSET) + 1); - Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + AttemptIndex = (UINT8)((OffSet - ATTEMPT_CHARTYPE_VAR_OFFSET) + 1); + Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (Attempt == NULL) { return EFI_INVALID_PARAMETER; } + if (Attempt->AuthenticationType == ISCSI_AUTH_TYPE_CHAP) { Attempt->AuthConfigData.CHAP.CHAPType = IfrNvData->ISCSIChapType[AttemptIndex - 1]; } - } else if (OffSet >= ATTEMPT_ISID_VAR_OFFSET) { - Index = (UINT8) ((OffSet - ATTEMPT_ISID_VAR_OFFSET) / sizeof (KEYWORD_STR)); + Index = (UINT8)((OffSet - ATTEMPT_ISID_VAR_OFFSET) / sizeof (KEYWORD_STR)); AttemptIndex = Index + 1; - Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); + Attempt = IScsiConfigGetAttemptByConfigIndex (AttemptIndex); if (Attempt == NULL) { return EFI_INVALID_PARAMETER; } @@ -1482,15 +1487,15 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( if ((OffSet >= ATTEMPT_ISID_VAR_OFFSET) && (OffSet < ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET)) { IScsiParseIsIdFromString (IfrNvData->Keyword[Index].ISCSIIsId, Attempt->SessionConfigData.IsId); - - } else if ((OffSet >= ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET) && (OffSet < ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET)) { + } else if ((OffSet >= ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET) && (OffSet < ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET)) { if ((Attempt->SessionConfigData.IpMode == IP_MODE_IP4) && (!Attempt->SessionConfigData.InitiatorInfoFromDhcp)) { // // Config Local ip // Status = NetLibStrToIp4 (IfrNvData->Keyword[Index].ISCSIInitiatorIpAddress, &HostIp.v4); if (EFI_ERROR (Status) || ((Attempt->SessionConfigData.SubnetMask.Addr[0] != 0) && - !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), NTOHL(*(UINT32*)Attempt->SessionConfigData.SubnetMask.Addr)))) { + !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), NTOHL (*(UINT32 *)Attempt->SessionConfigData.SubnetMask.Addr)))) + { CreatePopUp ( EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, @@ -1510,7 +1515,6 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if ((OffSet >= ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET) && (OffSet < ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET)) { if ((Attempt->SessionConfigData.IpMode == IP_MODE_IP4) && (!Attempt->SessionConfigData.InitiatorInfoFromDhcp)) { Status = NetLibStrToIp4 (IfrNvData->Keyword[Index].ISCSIInitiatorNetmask, &SubnetMask.v4); @@ -1534,13 +1538,13 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if ((OffSet >= ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET) && (OffSet < ATTEMPT_TARGET_NAME_VAR_OFFSET)) { if ((Attempt->SessionConfigData.IpMode == IP_MODE_IP4) && (!Attempt->SessionConfigData.InitiatorInfoFromDhcp)) { Status = NetLibStrToIp4 (IfrNvData->Keyword[Index].ISCSIInitiatorGateway, &Gateway.v4); if (EFI_ERROR (Status) || - ((Gateway.Addr[0] != 0) && (Attempt->SessionConfigData.SubnetMask.Addr[0] != 0) && - !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), NTOHL(*(UINT32*)Attempt->SessionConfigData.SubnetMask.Addr)))) { + ((Gateway.Addr[0] != 0) && (Attempt->SessionConfigData.SubnetMask.Addr[0] != 0) && + !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), NTOHL (*(UINT32 *)Attempt->SessionConfigData.SubnetMask.Addr)))) + { CreatePopUp ( EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, @@ -1560,7 +1564,6 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if ((OffSet >= ATTEMPT_TARGET_NAME_VAR_OFFSET) && (OffSet < ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET)) { if ((Attempt->SessionConfigData.IpMode < IP_MODE_AUTOCONFIG) && (!Attempt->SessionConfigData.TargetInfoFromDhcp)) { UnicodeStrToAsciiStrS (IfrNvData->Keyword[Index].ISCSITargetName, IScsiName, ISCSI_NAME_MAX_SIZE); @@ -1575,6 +1578,7 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( } else { AsciiStrCpyS (Attempt->SessionConfigData.TargetName, ISCSI_NAME_MAX_SIZE, IScsiName); } + if (Attempt->SessionConfigData.Enabled != ISCSI_DISABLED) { if (Attempt->SessionConfigData.TargetName[0] == L'\0') { CreatePopUp ( @@ -1595,7 +1599,6 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if ((OffSet >= ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET) && (OffSet < ATTEMPT_LUN_VAR_OFFSET)) { if ((Attempt->SessionConfigData.IpMode < IP_MODE_AUTOCONFIG) && (!Attempt->SessionConfigData.TargetInfoFromDhcp)) { UnicodeStrToAsciiStrS (IfrNvData->Keyword[Index].ISCSITargetIpAddress, IpString, sizeof (IpString)); @@ -1617,14 +1620,13 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if ((OffSet >= ATTEMPT_LUN_VAR_OFFSET) && (OffSet < ATTEMPT_CHAR_USER_NAME_VAR_OFFSET)) { if ((Attempt->SessionConfigData.IpMode < IP_MODE_AUTOCONFIG) && (Attempt->SessionConfigData.TargetInfoFromDhcp == 0)) { // // Config LUN. // UnicodeStrToAsciiStrS (IfrNvData->Keyword[Index].ISCSILun, LunString, ISCSI_LUN_STR_MAX_LEN); - Status = IScsiAsciiStrToLun (LunString, (UINT8 *) &Lun); + Status = IScsiAsciiStrToLun (LunString, (UINT8 *)&Lun); if (EFI_ERROR (Status)) { CreatePopUp ( EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, @@ -1644,7 +1646,6 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if ((OffSet >= ATTEMPT_CHAR_USER_NAME_VAR_OFFSET) && (OffSet < ATTEMPT_CHAR_SECRET_VAR_OFFSET)) { if (Attempt->AuthenticationType == ISCSI_AUTH_TYPE_CHAP) { UnicodeStrToAsciiStrS ( @@ -1673,7 +1674,6 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if ((OffSet >= ATTEMPT_CHAR_SECRET_VAR_OFFSET) && (OffSet < ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET)) { if (Attempt->AuthenticationType == ISCSI_AUTH_TYPE_CHAP) { ChapSecretLen = (UINT8)StrLen (IfrNvData->Keyword[Index].ISCSIChapSecret); @@ -1703,7 +1703,6 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if ((OffSet >= ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET) && (OffSet < ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET)) { if (Attempt->AuthConfigData.CHAP.CHAPType == ISCSI_CHAP_MUTUAL) { UnicodeStrToAsciiStrS ( @@ -1731,7 +1730,6 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( ); return EFI_INVALID_PARAMETER; } - } else if (OffSet >= ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET) { if (Attempt->AuthConfigData.CHAP.CHAPType == ISCSI_CHAP_MUTUAL) { ReverseChapSecretLen = (UINT8)StrLen (IfrNvData->Keyword[Index].ISCSIReverseChapSecret); @@ -1764,13 +1762,11 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( } } - - // // Record the user configuration information in NVR. // ASSERT (Attempt != NULL); - UnicodeSPrint (mPrivate->PortString, (UINTN) ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", Attempt->AttemptConfigIndex); + UnicodeSPrint (mPrivate->PortString, (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", Attempt->AttemptConfigIndex); return gRT->SetVariable ( mPrivate->PortString, &gEfiIScsiInitiatorNameProtocolGuid, @@ -1778,7 +1774,6 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( sizeof (ISCSI_ATTEMPT_CONFIG_NVDATA), Attempt ); - } /** @@ -1799,18 +1794,18 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( **/ EFI_STATUS IScsiCreateOpCode ( - IN UINT16 StartLabelNumber, - OUT VOID **StartOpCodeHandle, - OUT EFI_IFR_GUID_LABEL **StartLabel, - OUT VOID **EndOpCodeHandle, - OUT EFI_IFR_GUID_LABEL **EndLabel + IN UINT16 StartLabelNumber, + OUT VOID **StartOpCodeHandle, + OUT EFI_IFR_GUID_LABEL **StartLabel, + OUT VOID **EndOpCodeHandle, + OUT EFI_IFR_GUID_LABEL **EndLabel ) { - EFI_STATUS Status; - EFI_IFR_GUID_LABEL *InternalStartLabel; - EFI_IFR_GUID_LABEL *InternalEndLabel; + EFI_STATUS Status; + EFI_IFR_GUID_LABEL *InternalStartLabel; + EFI_IFR_GUID_LABEL *InternalEndLabel; - if (StartOpCodeHandle == NULL || StartLabel == NULL || EndOpCodeHandle == NULL || EndLabel == NULL) { + if ((StartOpCodeHandle == NULL) || (StartLabel == NULL) || (EndOpCodeHandle == NULL) || (EndLabel == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1834,12 +1829,12 @@ IScsiCreateOpCode ( // // Create Hii Extend Label OpCode as the start opcode. // - InternalStartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - *StartOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + InternalStartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + *StartOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); if (InternalStartLabel == NULL) { goto Exit; } @@ -1850,12 +1845,12 @@ IScsiCreateOpCode ( // // Create Hii Extend Label OpCode as the end opcode. // - InternalEndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - *EndOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + InternalEndLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + *EndOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); if (InternalEndLabel == NULL) { goto Exit; } @@ -1877,6 +1872,7 @@ Exit: if (*EndOpCodeHandle != NULL) { HiiFreeOpCodeHandle (*EndOpCodeHandle); } + return Status; } @@ -1889,13 +1885,13 @@ IScsiConfigUpdateAttempt ( VOID ) { - LIST_ENTRY *Entry; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - VOID *StartOpCodeHandle; - EFI_IFR_GUID_LABEL *StartLabel; - VOID *EndOpCodeHandle; - EFI_IFR_GUID_LABEL *EndLabel; - EFI_STATUS Status; + LIST_ENTRY *Entry; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + VOID *StartOpCodeHandle; + EFI_IFR_GUID_LABEL *StartLabel; + VOID *EndOpCodeHandle; + EFI_IFR_GUID_LABEL *EndLabel; + EFI_STATUS Status; Status = IScsiCreateOpCode ( ATTEMPT_ENTRY_LABEL, @@ -1905,7 +1901,7 @@ IScsiConfigUpdateAttempt ( &EndLabel ); if (EFI_ERROR (Status)) { - return ; + return; } NET_LIST_FOR_EACH (Entry, &mPrivate->AttemptConfigs) { @@ -1914,7 +1910,7 @@ IScsiConfigUpdateAttempt ( // // Update Attempt Help Info. // - UnicodeSPrint (mPrivate->PortString, (UINTN) ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", (UINTN) AttemptConfigData->AttemptConfigIndex); + UnicodeSPrint (mPrivate->PortString, (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", (UINTN)AttemptConfigData->AttemptConfigIndex); AttemptConfigData->AttemptTitleToken = HiiSetString ( mCallbackInfo->RegisteredHandle, 0, @@ -1922,16 +1918,16 @@ IScsiConfigUpdateAttempt ( NULL ); if (AttemptConfigData->AttemptTitleToken == 0) { - return ; + return; } HiiCreateGotoOpCode ( - StartOpCodeHandle, // Container for dynamic created opcodes - FORMID_ATTEMPT_FORM, // Form ID - AttemptConfigData->AttemptTitleToken, // Prompt text - AttemptConfigData->AttemptTitleHelpToken, // Help text - EFI_IFR_FLAG_CALLBACK, // Question flag - (UINT16) (KEY_ATTEMPT_ENTRY_BASE + AttemptConfigData->AttemptConfigIndex) // Question ID + StartOpCodeHandle, // Container for dynamic created opcodes + FORMID_ATTEMPT_FORM, // Form ID + AttemptConfigData->AttemptTitleToken, // Prompt text + AttemptConfigData->AttemptTitleHelpToken, // Help text + EFI_IFR_FLAG_CALLBACK, // Question flag + (UINT16)(KEY_ATTEMPT_ENTRY_BASE + AttemptConfigData->AttemptConfigIndex) // Question ID ); } } @@ -1942,7 +1938,7 @@ IScsiConfigUpdateAttempt ( FORMID_MAIN_FORM, // Form ID StartOpCodeHandle, // Label for where to insert opcodes EndOpCodeHandle // Replace data - ); + ); HiiFreeOpCodeHandle (StartOpCodeHandle); HiiFreeOpCodeHandle (EndOpCodeHandle); @@ -1961,16 +1957,16 @@ IScsiConfigAddAttempt ( VOID ) { - LIST_ENTRY *Entry; - ISCSI_NIC_INFO *NicInfo; - EFI_STRING_ID PortTitleToken; - EFI_STRING_ID PortTitleHelpToken; - CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; - EFI_STATUS Status; - VOID *StartOpCodeHandle; - EFI_IFR_GUID_LABEL *StartLabel; - VOID *EndOpCodeHandle; - EFI_IFR_GUID_LABEL *EndLabel; + LIST_ENTRY *Entry; + ISCSI_NIC_INFO *NicInfo; + EFI_STRING_ID PortTitleToken; + EFI_STRING_ID PortTitleHelpToken; + CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; + EFI_STATUS Status; + VOID *StartOpCodeHandle; + EFI_IFR_GUID_LABEL *StartLabel; + VOID *EndOpCodeHandle; + EFI_IFR_GUID_LABEL *EndLabel; Status = IScsiCreateOpCode ( MAC_ENTRY_LABEL, @@ -1995,7 +1991,7 @@ IScsiConfigAddAttempt ( MacString ); - UnicodeSPrint (mPrivate->PortString, (UINTN) ISCSI_NAME_IFR_MAX_SIZE, L"MAC %s", MacString); + UnicodeSPrint (mPrivate->PortString, (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"MAC %s", MacString); PortTitleToken = HiiSetString ( mCallbackInfo->RegisteredHandle, 0, @@ -2009,7 +2005,7 @@ IScsiConfigAddAttempt ( UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"PFA: Bus %d | Dev %d | Func %d", NicInfo->BusNumber, NicInfo->DeviceNumber, @@ -2027,7 +2023,7 @@ IScsiConfigAddAttempt ( PortTitleToken, PortTitleHelpToken, EFI_IFR_FLAG_CALLBACK, // Question flag - (UINT16) (KEY_MAC_ENTRY_BASE + NicInfo->NicIndex) + (UINT16)(KEY_MAC_ENTRY_BASE + NicInfo->NicIndex) ); } @@ -2062,24 +2058,24 @@ Exit: **/ EFI_STATUS IScsiConfigAddAttemptsByKeywords ( - IN UINT8 *AttemptList + IN UINT8 *AttemptList ) { - UINT8 Index; - UINT8 Number; - UINTN TotalNumber; - UINT8 Nic; - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - UINT8 *AttemptConfigOrderTmp; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - ISCSI_NIC_INFO *NicInfo; - CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; - CHAR16 IScsiMode[64]; - CHAR16 IpMode[64]; - EFI_STATUS Status; - - Nic = mPrivate->CurrentNic; + UINT8 Index; + UINT8 Number; + UINTN TotalNumber; + UINT8 Nic; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + UINT8 *AttemptConfigOrderTmp; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + ISCSI_NIC_INFO *NicInfo; + CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; + CHAR16 IScsiMode[64]; + CHAR16 IpMode[64]; + EFI_STATUS Status; + + Nic = mPrivate->CurrentNic; NicInfo = IScsiGetNicInfoByIndex (Nic); if (NicInfo == NULL) { return EFI_NOT_FOUND; @@ -2107,22 +2103,22 @@ IScsiConfigAddAttemptsByKeywords ( UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", Number ); GetVariable2 ( - mPrivate->PortString, - &gEfiIScsiInitiatorNameProtocolGuid, - (VOID**)&AttemptConfigData, - NULL - ); - if (AttemptConfigData == NULL || AttemptConfigData->Actived == ISCSI_ACTIVE_ENABLED) { + mPrivate->PortString, + &gEfiIScsiInitiatorNameProtocolGuid, + (VOID **)&AttemptConfigData, + NULL + ); + if ((AttemptConfigData == NULL) || (AttemptConfigData->Actived == ISCSI_ACTIVE_ENABLED)) { return EFI_INVALID_PARAMETER; } - AttemptConfigData->Actived = ISCSI_ACTIVE_ENABLED; + AttemptConfigData->Actived = ISCSI_ACTIVE_ENABLED; AttemptConfigData->NicIndex = NicInfo->NicIndex; UnicodeStrToAsciiStrS (MacString, AttemptConfigData->MacString, ISCSI_MAX_MAC_STRING_LEN); @@ -2131,7 +2127,7 @@ IScsiConfigAddAttemptsByKeywords ( // CopyMem (AttemptConfigData->SessionConfigData.IsId, &NicInfo->PermanentAddress, 6); AttemptConfigData->SessionConfigData.IsId[0] = - (UINT8) (AttemptConfigData->SessionConfigData.IsId[0] & 0x3F); + (UINT8)(AttemptConfigData->SessionConfigData.IsId[0] & 0x3F); // // Configure the iSCSI Mode and IpMode to default. @@ -2141,7 +2137,7 @@ IScsiConfigAddAttemptsByKeywords ( UnicodeSPrint (IpMode, 64, L"IP4"); UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"MAC: %s, PFA: Bus %d | Dev %d | Func %d, iSCSI mode: %s, IP version: %s", MacString, NicInfo->BusNumber, @@ -2180,16 +2176,18 @@ IScsiConfigAddAttemptsByKeywords ( if (AttemptConfigOrder != NULL) { FreePool (AttemptConfigOrder); } + return EFI_OUT_OF_RESOURCES; } + if (AttemptConfigOrder != NULL) { CopyMem (AttemptConfigOrderTmp, AttemptConfigOrder, AttemptConfigOrderSize); FreePool (AttemptConfigOrder); } AttemptConfigOrderTmp[TotalNumber - 1] = Number; - AttemptConfigOrder = AttemptConfigOrderTmp; - AttemptConfigOrderSize = TotalNumber * sizeof (UINT8); + AttemptConfigOrder = AttemptConfigOrderTmp; + AttemptConfigOrderSize = TotalNumber * sizeof (UINT8); Status = gRT->SetVariable ( L"AttemptOrder", @@ -2208,7 +2206,7 @@ IScsiConfigAddAttemptsByKeywords ( // InsertTailList (&mPrivate->AttemptConfigs, &AttemptConfigData->Link); mPrivate->AttemptCount++; - UnicodeSPrint (mPrivate->PortString, (UINTN) ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", AttemptConfigData->AttemptConfigIndex); + UnicodeSPrint (mPrivate->PortString, (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", AttemptConfigData->AttemptConfigIndex); gRT->SetVariable ( mPrivate->PortString, &gEfiIScsiInitiatorNameProtocolGuid, @@ -2216,7 +2214,6 @@ IScsiConfigAddAttemptsByKeywords ( sizeof (ISCSI_ATTEMPT_CONFIG_NVDATA), AttemptConfigData ); - } return EFI_SUCCESS; @@ -2240,22 +2237,22 @@ IScsiConfigDeleteAttempts ( IN ISCSI_CONFIG_IFR_NVDATA *IfrNvData ) { - EFI_STATUS Status; - UINTN Index; - UINTN NewIndex; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - UINT8 *AttemptNewOrder; - UINT8 AttemptConfigIndex; - UINT32 Attribute; - UINTN Total; - UINTN NewTotal; - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - ISCSI_SESSION_CONFIG_NVDATA *ConfigData; - - Index = 0; + EFI_STATUS Status; + UINTN Index; + UINTN NewIndex; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + UINT8 *AttemptNewOrder; + UINT8 AttemptConfigIndex; + UINT32 Attribute; + UINTN Total; + UINTN NewTotal; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + ISCSI_SESSION_CONFIG_NVDATA *ConfigData; + + Index = 0; AttemptConfigOrder = IScsiGetVariableAndSize ( L"AttemptOrder", @@ -2324,6 +2321,7 @@ IScsiConfigDeleteAttempts ( if (AttemptConfigData == NULL) { return EFI_OUT_OF_RESOURCES; } + ConfigData = &AttemptConfigData->SessionConfigData; ConfigData->TargetPort = ISCSI_WELL_KNOWN_PORT; ConfigData->ConnectTimeout = CONNECT_DEFAULT_TIMEOUT; @@ -2341,9 +2339,9 @@ IScsiConfigDeleteAttempts ( // UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", - (UINTN) AttemptConfigData->AttemptConfigIndex + (UINTN)AttemptConfigData->AttemptConfigIndex ); UnicodeStrToAsciiStrS (mPrivate->PortString, AttemptConfigData->AttemptName, ATTEMPT_NAME_SIZE); gRT->SetVariable ( @@ -2368,6 +2366,7 @@ IScsiConfigDeleteAttempts ( if (mCallbackInfo->Current == AttemptConfigData) { mCallbackInfo->Current = NULL; } + FreePool (AttemptConfigData); // @@ -2411,7 +2410,6 @@ Error: return Status; } - /** Callback function when user presses "Delete Attempts". @@ -2427,17 +2425,16 @@ IScsiConfigDisplayDeleteAttempts ( IN ISCSI_CONFIG_IFR_NVDATA *IfrNvData ) { - - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - LIST_ENTRY *Entry; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - UINT8 Index; - VOID *StartOpCodeHandle; - EFI_IFR_GUID_LABEL *StartLabel; - VOID *EndOpCodeHandle; - EFI_IFR_GUID_LABEL *EndLabel; - EFI_STATUS Status; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + LIST_ENTRY *Entry; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + UINT8 Index; + VOID *StartOpCodeHandle; + EFI_IFR_GUID_LABEL *StartLabel; + VOID *EndOpCodeHandle; + EFI_IFR_GUID_LABEL *EndLabel; + EFI_STATUS Status; Status = IScsiCreateOpCode ( DELETE_ENTRY_LABEL, @@ -2462,14 +2459,14 @@ IScsiConfigDisplayDeleteAttempts ( Index = 0; NET_LIST_FOR_EACH (Entry, &mPrivate->AttemptConfigs) { - AttemptConfigData = NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA, Link); + AttemptConfigData = NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA, Link); IfrNvData->DeleteAttemptList[Index] = 0x00; - HiiCreateCheckBoxOpCode( + HiiCreateCheckBoxOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_DEL_QUESTION_ID + Index), + (EFI_QUESTION_ID)(ATTEMPT_DEL_QUESTION_ID + Index), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_DEL_VAR_OFFSET + Index), + (UINT16)(ATTEMPT_DEL_VAR_OFFSET + Index), AttemptConfigData->AttemptTitleToken, AttemptConfigData->AttemptTitleHelpToken, 0, @@ -2501,7 +2498,6 @@ IScsiConfigDisplayDeleteAttempts ( return Status; } - /** Callback function when user presses "Change Attempt Order". @@ -2516,15 +2512,15 @@ IScsiConfigDisplayOrderAttempts ( VOID ) { - EFI_STATUS Status; - UINT8 Index; - LIST_ENTRY *Entry; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - VOID *StartOpCodeHandle; - EFI_IFR_GUID_LABEL *StartLabel; - VOID *EndOpCodeHandle; - EFI_IFR_GUID_LABEL *EndLabel; - VOID *OptionsOpCodeHandle; + EFI_STATUS Status; + UINT8 Index; + LIST_ENTRY *Entry; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + VOID *StartOpCodeHandle; + EFI_IFR_GUID_LABEL *StartLabel; + VOID *EndOpCodeHandle; + EFI_IFR_GUID_LABEL *EndLabel; + VOID *OptionsOpCodeHandle; Status = IScsiCreateOpCode ( ORDER_ENTRY_LABEL, @@ -2536,6 +2532,7 @@ IScsiConfigDisplayOrderAttempts ( if (EFI_ERROR (Status)) { return Status; } + ASSERT (StartOpCodeHandle != NULL); OptionsOpCodeHandle = NULL; @@ -2622,14 +2619,14 @@ IScsiConfigOrderAttempts ( IN ISCSI_CONFIG_IFR_NVDATA *IfrNvData ) { - EFI_STATUS Status; - UINTN Index; - UINTN Indexj; - UINT8 AttemptConfigIndex; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - UINT8 *AttemptConfigOrder; - UINT8 *AttemptConfigOrderTmp; - UINTN AttemptConfigOrderSize; + EFI_STATUS Status; + UINTN Index; + UINTN Indexj; + UINT8 AttemptConfigIndex; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + UINT8 *AttemptConfigOrder; + UINT8 *AttemptConfigOrderTmp; + UINTN AttemptConfigOrderSize; AttemptConfigOrder = IScsiGetVariableAndSize ( L"AttemptOrder", @@ -2683,7 +2680,7 @@ IScsiConfigOrderAttempts ( // // Adjust the attempt order in NVR. // - for (; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { + for ( ; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { for (Indexj = 0; Indexj < AttemptConfigOrderSize / sizeof (UINT8); Indexj++) { if (AttemptConfigOrder[Indexj] != 0) { AttemptConfigOrderTmp[Index] = AttemptConfigOrder[Indexj]; @@ -2710,7 +2707,6 @@ Exit: return Status; } - /** Callback function when a user presses "Attempt *" or when a user selects a NIC to create the new attempt. @@ -2729,20 +2725,20 @@ Exit: **/ EFI_STATUS IScsiConfigProcessDefault ( - IN EFI_QUESTION_ID KeyValue, - IN ISCSI_CONFIG_IFR_NVDATA *IfrNvData + IN EFI_QUESTION_ID KeyValue, + IN ISCSI_CONFIG_IFR_NVDATA *IfrNvData ) { - BOOLEAN NewAttempt; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - UINT8 CurrentAttemptConfigIndex; - ISCSI_NIC_INFO *NicInfo; - UINT8 NicIndex; - CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - UINTN Index; - EFI_INPUT_KEY Key; + BOOLEAN NewAttempt; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + UINT8 CurrentAttemptConfigIndex; + ISCSI_NIC_INFO *NicInfo; + UINT8 NicIndex; + CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + UINTN Index; + EFI_INPUT_KEY Key; AttemptConfigData = NULL; // @@ -2751,14 +2747,15 @@ IScsiConfigProcessDefault ( NewAttempt = FALSE; if ((KeyValue >= KEY_MAC_ENTRY_BASE) && - (KeyValue <= (UINT16) (mPrivate->MaxNic + KEY_MAC_ENTRY_BASE))) { + (KeyValue <= (UINT16)(mPrivate->MaxNic + KEY_MAC_ENTRY_BASE))) + { // // User has pressed "Add an Attempt" and then selects a NIC. // NewAttempt = TRUE; } else if ((KeyValue >= KEY_ATTEMPT_ENTRY_BASE) && - (KeyValue < (ISCSI_MAX_ATTEMPTS_NUM + KEY_ATTEMPT_ENTRY_BASE))) { - + (KeyValue < (ISCSI_MAX_ATTEMPTS_NUM + KEY_ATTEMPT_ENTRY_BASE))) + { // // User has pressed "Attempt *". // @@ -2774,8 +2771,8 @@ IScsiConfigProcessDefault ( // // Determine which NIC user has selected for the new created attempt. // - NicIndex = (UINT8) (KeyValue - KEY_MAC_ENTRY_BASE); - NicInfo = IScsiGetNicInfoByIndex (NicIndex); + NicIndex = (UINT8)(KeyValue - KEY_MAC_ENTRY_BASE); + NicInfo = IScsiGetNicInfoByIndex (NicIndex); if (NicInfo == NULL) { return EFI_NOT_FOUND; } @@ -2796,17 +2793,17 @@ IScsiConfigProcessDefault ( for (Index = 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", - (UINTN) AttemptConfigOrder[Index] + (UINTN)AttemptConfigOrder[Index] ); GetVariable2 ( - mPrivate->PortString, - &gEfiIScsiInitiatorNameProtocolGuid, - (VOID**)&AttemptConfigData, - NULL - ); - if (AttemptConfigData == NULL || AttemptConfigData->Actived == ISCSI_ACTIVE_ENABLED) { + mPrivate->PortString, + &gEfiIScsiInitiatorNameProtocolGuid, + (VOID **)&AttemptConfigData, + NULL + ); + if ((AttemptConfigData == NULL) || (AttemptConfigData->Actived == ISCSI_ACTIVE_ENABLED)) { continue; } @@ -2840,21 +2837,21 @@ IScsiConfigProcessDefault ( ASSERT (AttemptConfigData != NULL); UnicodeStrToAsciiStrS (MacString, AttemptConfigData->MacString, sizeof (AttemptConfigData->MacString)); AttemptConfigData->NicIndex = NicIndex; - AttemptConfigData->Actived = ISCSI_ACTIVE_ENABLED; + AttemptConfigData->Actived = ISCSI_ACTIVE_ENABLED; // // Generate OUI-format ISID based on MAC address. // CopyMem (AttemptConfigData->SessionConfigData.IsId, &NicInfo->PermanentAddress, 6); AttemptConfigData->SessionConfigData.IsId[0] = - (UINT8) (AttemptConfigData->SessionConfigData.IsId[0] & 0x3F); + (UINT8)(AttemptConfigData->SessionConfigData.IsId[0] & 0x3F); // // Add the help info for the new attempt. // UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"MAC: %s, PFA: Bus %d | Dev %d | Func %d", MacString, NicInfo->BusNumber, @@ -2862,23 +2859,22 @@ IScsiConfigProcessDefault ( NicInfo->FunctionNumber ); - AttemptConfigData->AttemptTitleHelpToken = HiiSetString ( - mCallbackInfo->RegisteredHandle, - 0, - mPrivate->PortString, - NULL - ); + AttemptConfigData->AttemptTitleHelpToken = HiiSetString ( + mCallbackInfo->RegisteredHandle, + 0, + mPrivate->PortString, + NULL + ); if (AttemptConfigData->AttemptTitleHelpToken == 0) { FreePool (AttemptConfigData); return EFI_OUT_OF_RESOURCES; } - } else { // // Determine which Attempt user has selected to configure. // Get the attempt configuration data. // - CurrentAttemptConfigIndex = (UINT8) (KeyValue - KEY_ATTEMPT_ENTRY_BASE); + CurrentAttemptConfigIndex = (UINT8)(KeyValue - KEY_ATTEMPT_ENTRY_BASE); AttemptConfigData = IScsiConfigGetAttemptByConfigIndex (CurrentAttemptConfigIndex); if (AttemptConfigData == NULL) { @@ -2907,7 +2903,6 @@ IScsiConfigProcessDefault ( return EFI_SUCCESS; } - /** This function allows the caller to request the current @@ -2982,23 +2977,23 @@ IScsiConfigProcessDefault ( EFI_STATUS EFIAPI IScsiFormExtractConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Request, - OUT EFI_STRING *Progress, - OUT EFI_STRING *Results + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results ) { - EFI_STATUS Status; - CHAR8 *InitiatorName; - UINTN BufferSize; - ISCSI_CONFIG_IFR_NVDATA *IfrNvData; - ISCSI_FORM_CALLBACK_INFO *Private; - EFI_STRING ConfigRequestHdr; - EFI_STRING ConfigRequest; - BOOLEAN AllocatedRequest; - UINTN Size; - - if (This == NULL || Progress == NULL || Results == NULL) { + EFI_STATUS Status; + CHAR8 *InitiatorName; + UINTN BufferSize; + ISCSI_CONFIG_IFR_NVDATA *IfrNvData; + ISCSI_FORM_CALLBACK_INFO *Private; + EFI_STRING ConfigRequestHdr; + EFI_STRING ConfigRequest; + BOOLEAN AllocatedRequest; + UINTN Size; + + if ((This == NULL) || (Progress == NULL) || (Results == NULL)) { return EFI_INVALID_PARAMETER; } @@ -3012,14 +3007,13 @@ IScsiFormExtractConfig ( AllocatedRequest = FALSE; Size = 0; - Private = ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This); + Private = ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This); IfrNvData = AllocateZeroPool (sizeof (ISCSI_CONFIG_IFR_NVDATA)); if (IfrNvData == NULL) { return EFI_OUT_OF_RESOURCES; } - - if (Private->Current!= NULL) { + if (Private->Current != NULL) { IScsiConvertAttemptConfigDataToIfrNvData (Private->Current, IfrNvData); } @@ -3029,7 +3023,7 @@ IScsiFormExtractConfig ( IScsiConvertAttemptConfigDataToIfrNvDataByKeyword (IfrNvData); BufferSize = ISCSI_NAME_MAX_SIZE; - InitiatorName = (CHAR8 *) AllocateZeroPool (BufferSize); + InitiatorName = (CHAR8 *)AllocateZeroPool (BufferSize); if (InitiatorName == NULL) { FreePool (IfrNvData); return EFI_OUT_OF_RESOURCES; @@ -3049,7 +3043,7 @@ IScsiFormExtractConfig ( // // Convert buffer data to by helper function BlockToConfig(). // - BufferSize = sizeof (ISCSI_CONFIG_IFR_NVDATA); + BufferSize = sizeof (ISCSI_CONFIG_IFR_NVDATA); ConfigRequest = Request; if ((Request == NULL) || (StrStr (Request, L"OFFSET") == NULL)) { // @@ -3058,13 +3052,14 @@ IScsiFormExtractConfig ( // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator // ConfigRequestHdr = HiiConstructConfigHdr (&gIScsiConfigGuid, mVendorStorageName, Private->DriverHandle); - Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); - ConfigRequest = AllocateZeroPool (Size); + Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); + ConfigRequest = AllocateZeroPool (Size); if (ConfigRequest == NULL) { FreePool (IfrNvData); FreePool (InitiatorName); return EFI_OUT_OF_RESOURCES; } + AllocatedRequest = TRUE; UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize); FreePool (ConfigRequestHdr); @@ -3073,7 +3068,7 @@ IScsiFormExtractConfig ( Status = gHiiConfigRouting->BlockToConfig ( gHiiConfigRouting, ConfigRequest, - (UINT8 *) IfrNvData, + (UINT8 *)IfrNvData, BufferSize, Results, Progress @@ -3088,6 +3083,7 @@ IScsiFormExtractConfig ( FreePool (ConfigRequest); ConfigRequest = NULL; } + // // Set Progress string to the original request string. // @@ -3100,7 +3096,6 @@ IScsiFormExtractConfig ( return Status; } - /** This function applies changes in a driver's configuration. @@ -3144,33 +3139,33 @@ IScsiFormExtractConfig ( EFI_STATUS EFIAPI IScsiFormRouteConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Configuration, - OUT EFI_STRING *Progress + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress ) { - EFI_STATUS Status; - ISCSI_CONFIG_IFR_NVDATA *IfrNvData; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - ISCSI_NIC_INFO *NicInfo; - EFI_INPUT_KEY Key; - CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; - CHAR8 *InitiatorName; - UINT8 *AttemptList; - UINTN BufferSize; - UINTN OffSet; - UINTN Index; - UINTN Index2; - - Index = 0; - Index2 = 0; - NicInfo = NULL; + EFI_STATUS Status; + ISCSI_CONFIG_IFR_NVDATA *IfrNvData; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + ISCSI_NIC_INFO *NicInfo; + EFI_INPUT_KEY Key; + CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; + CHAR8 *InitiatorName; + UINT8 *AttemptList; + UINTN BufferSize; + UINTN OffSet; + UINTN Index; + UINTN Index2; + + Index = 0; + Index2 = 0; + NicInfo = NULL; AttemptList = NULL; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; - if (This == NULL || Configuration == NULL || Progress == NULL) { + if ((This == NULL) || (Configuration == NULL) || (Progress == NULL)) { return EFI_INVALID_PARAMETER; } @@ -3189,7 +3184,7 @@ IScsiFormRouteConfig ( } BufferSize = ISCSI_NAME_MAX_SIZE; - InitiatorName = (CHAR8 *) AllocateZeroPool (BufferSize); + InitiatorName = (CHAR8 *)AllocateZeroPool (BufferSize); if (InitiatorName == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; @@ -3199,22 +3194,22 @@ IScsiFormRouteConfig ( // Convert to buffer data by helper function ConfigToBlock(). // BufferSize = sizeof (ISCSI_CONFIG_IFR_NVDATA); - Status = gHiiConfigRouting->ConfigToBlock ( - gHiiConfigRouting, - Configuration, - (UINT8 *) IfrNvData, - &BufferSize, - Progress - ); + Status = gHiiConfigRouting->ConfigToBlock ( + gHiiConfigRouting, + Configuration, + (UINT8 *)IfrNvData, + &BufferSize, + Progress + ); if (EFI_ERROR (Status)) { goto Exit; } if (IfrNvData->InitiatorName[0] != L'\0') { UnicodeStrToAsciiStrS (IfrNvData->InitiatorName, InitiatorName, ISCSI_NAME_MAX_SIZE); - BufferSize = AsciiStrSize (InitiatorName); + BufferSize = AsciiStrSize (InitiatorName); - Status = gIScsiInitiatorName.Set (&gIScsiInitiatorName, &BufferSize, InitiatorName); + Status = gIScsiInitiatorName.Set (&gIScsiInitiatorName, &BufferSize, InitiatorName); if (EFI_ERROR (Status)) { CreatePopUp ( EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, @@ -3246,14 +3241,14 @@ IScsiFormRouteConfig ( } if (IfrNvData->ISCSIAddAttemptList[0] != L'\0') { - Status =IScsiGetAttemptIndexList (IfrNvData->ISCSIAddAttemptList, IfrNvData->AddAttemptList, TRUE); + Status = IScsiGetAttemptIndexList (IfrNvData->ISCSIAddAttemptList, IfrNvData->AddAttemptList, TRUE); if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Error: The add attempt list is invalid", - NULL - ); + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Error: The add attempt list is invalid", + NULL + ); goto Exit; } @@ -3261,21 +3256,21 @@ IScsiFormRouteConfig ( if (EFI_ERROR (Status)) { goto Exit; } - } else if (IfrNvData->ISCSIDeleteAttemptList[0] != L'\0') { - AttemptList =(UINT8 *) AllocateZeroPool ((ISCSI_MAX_ATTEMPTS_NUM + 1) * sizeof (UINT8)); + AttemptList = (UINT8 *)AllocateZeroPool ((ISCSI_MAX_ATTEMPTS_NUM + 1) * sizeof (UINT8)); if (AttemptList == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; } + Status = IScsiGetAttemptIndexList (IfrNvData->ISCSIDeleteAttemptList, AttemptList, FALSE); if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Error: The delete attempt list is invalid", - NULL - ); + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Error: The delete attempt list is invalid", + NULL + ); goto Exit; } @@ -3289,9 +3284,11 @@ IScsiFormRouteConfig ( IfrNvData->DeleteAttemptList[Index2] = 1; break; } - Index ++; + + Index++; } - Index2 ++; + + Index2++; Index = 0; } @@ -3301,16 +3298,15 @@ IScsiFormRouteConfig ( } FreePool (AttemptList); - } else if (IfrNvData->ISCSIAttemptOrder[0] != L'\0') { Status = IScsiGetAttemptIndexList (IfrNvData->ISCSIAttemptOrder, IfrNvData->DynamicOrderedList, FALSE); if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Error: The new attempt order list is invalid", - NULL - ); + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Error: The new attempt order list is invalid", + NULL + ); goto Exit; } @@ -3318,17 +3314,16 @@ IScsiFormRouteConfig ( if (EFI_ERROR (Status)) { goto Exit; } - } else if (IfrNvData->ISCSIMacAddr[0] != L'\0') { NET_LIST_FOR_EACH (Entry, &mPrivate->NicInfoList) { NicInfo = NET_LIST_USER_STRUCT (Entry, ISCSI_NIC_INFO, Link); IScsiMacAddrToStr ( - &NicInfo->PermanentAddress, - NicInfo->HwAddressSize, - NicInfo->VlanId, - MacString - ); - if (!StrCmp(MacString, IfrNvData->ISCSIMacAddr)) { + &NicInfo->PermanentAddress, + NicInfo->HwAddressSize, + NicInfo->VlanId, + MacString + ); + if (!StrCmp (MacString, IfrNvData->ISCSIMacAddr)) { mPrivate->CurrentNic = NicInfo->NicIndex; break; } @@ -3338,7 +3333,6 @@ IScsiFormRouteConfig ( Status = EFI_NOT_FOUND; goto Exit; } - } else { Status = IScsiConvertlfrNvDataToAttemptConfigDataByKeyword (IfrNvData, OffSet); if (EFI_ERROR (Status)) { @@ -3389,28 +3383,28 @@ Exit: EFI_STATUS EFIAPI IScsiFormCallback ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN EFI_BROWSER_ACTION Action, - IN EFI_QUESTION_ID QuestionId, - IN UINT8 Type, - IN OUT EFI_IFR_TYPE_VALUE *Value, - OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN OUT EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest ) { - ISCSI_FORM_CALLBACK_INFO *Private; - UINTN BufferSize; - CHAR8 *IScsiName; - CHAR8 IpString[ISCSI_NAME_MAX_SIZE]; - CHAR8 LunString[ISCSI_LUN_STR_MAX_LEN]; - UINT64 Lun; - EFI_IP_ADDRESS HostIp; - EFI_IP_ADDRESS SubnetMask; - EFI_IP_ADDRESS Gateway; - ISCSI_CONFIG_IFR_NVDATA *IfrNvData; - ISCSI_CONFIG_IFR_NVDATA OldIfrNvData; - EFI_STATUS Status; - EFI_INPUT_KEY Key; - ISCSI_NIC_INFO *NicInfo; + ISCSI_FORM_CALLBACK_INFO *Private; + UINTN BufferSize; + CHAR8 *IScsiName; + CHAR8 IpString[ISCSI_NAME_MAX_SIZE]; + CHAR8 LunString[ISCSI_LUN_STR_MAX_LEN]; + UINT64 Lun; + EFI_IP_ADDRESS HostIp; + EFI_IP_ADDRESS SubnetMask; + EFI_IP_ADDRESS Gateway; + ISCSI_CONFIG_IFR_NVDATA *IfrNvData; + ISCSI_CONFIG_IFR_NVDATA OldIfrNvData; + EFI_STATUS Status; + EFI_INPUT_KEY Key; + ISCSI_NIC_INFO *NicInfo; NicInfo = NULL; @@ -3439,12 +3433,12 @@ IScsiFormCallback ( // BufferSize = sizeof (ISCSI_CONFIG_IFR_NVDATA); - IfrNvData = AllocateZeroPool (BufferSize); + IfrNvData = AllocateZeroPool (BufferSize); if (IfrNvData == NULL) { return EFI_OUT_OF_RESOURCES; } - IScsiName = (CHAR8 *) AllocateZeroPool (ISCSI_NAME_MAX_SIZE); + IScsiName = (CHAR8 *)AllocateZeroPool (ISCSI_NAME_MAX_SIZE); if (IScsiName == NULL) { FreePool (IfrNvData); return EFI_OUT_OF_RESOURCES; @@ -3454,332 +3448,334 @@ IScsiFormCallback ( ZeroMem (&OldIfrNvData, BufferSize); - HiiGetBrowserData (NULL, NULL, BufferSize, (UINT8 *) IfrNvData); + HiiGetBrowserData (NULL, NULL, BufferSize, (UINT8 *)IfrNvData); CopyMem (&OldIfrNvData, IfrNvData, BufferSize); if (Action == EFI_BROWSER_ACTION_CHANGING) { switch (QuestionId) { - case KEY_ADD_ATTEMPT: - // - // Check whether iSCSI initiator name is configured already. - // - mPrivate->InitiatorNameLength = ISCSI_NAME_MAX_SIZE; - Status = gIScsiInitiatorName.Get ( - &gIScsiInitiatorName, - &mPrivate->InitiatorNameLength, - mPrivate->InitiatorName - ); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Error: please configure iSCSI initiator name first!", - NULL - ); - break; - } + case KEY_ADD_ATTEMPT: + // + // Check whether iSCSI initiator name is configured already. + // + mPrivate->InitiatorNameLength = ISCSI_NAME_MAX_SIZE; + Status = gIScsiInitiatorName.Get ( + &gIScsiInitiatorName, + &mPrivate->InitiatorNameLength, + mPrivate->InitiatorName + ); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Error: please configure iSCSI initiator name first!", + NULL + ); + break; + } - Status = IScsiConfigAddAttempt (); - break; + Status = IScsiConfigAddAttempt (); + break; - case KEY_DELETE_ATTEMPT: - CopyMem ( - OldIfrNvData.DeleteAttemptList, - IfrNvData->DeleteAttemptList, - sizeof (IfrNvData->DeleteAttemptList) - ); - Status = IScsiConfigDisplayDeleteAttempts (IfrNvData); - break; + case KEY_DELETE_ATTEMPT: + CopyMem ( + OldIfrNvData.DeleteAttemptList, + IfrNvData->DeleteAttemptList, + sizeof (IfrNvData->DeleteAttemptList) + ); + Status = IScsiConfigDisplayDeleteAttempts (IfrNvData); + break; - case KEY_ORDER_ATTEMPT_CONFIG: - // - // Order the attempt according to user input. - // - CopyMem ( - OldIfrNvData.DynamicOrderedList, - IfrNvData->DynamicOrderedList, - sizeof (IfrNvData->DynamicOrderedList) - ); - IScsiConfigDisplayOrderAttempts (); - break; + case KEY_ORDER_ATTEMPT_CONFIG: + // + // Order the attempt according to user input. + // + CopyMem ( + OldIfrNvData.DynamicOrderedList, + IfrNvData->DynamicOrderedList, + sizeof (IfrNvData->DynamicOrderedList) + ); + IScsiConfigDisplayOrderAttempts (); + break; - default: - Status = IScsiConfigProcessDefault (QuestionId, IfrNvData); - break; + default: + Status = IScsiConfigProcessDefault (QuestionId, IfrNvData); + break; } } else if (Action == EFI_BROWSER_ACTION_CHANGED) { switch (QuestionId) { - case KEY_INITIATOR_NAME: - UnicodeStrToAsciiStrS (IfrNvData->InitiatorName, IScsiName, ISCSI_NAME_MAX_SIZE); - BufferSize = AsciiStrSize (IScsiName); + case KEY_INITIATOR_NAME: + UnicodeStrToAsciiStrS (IfrNvData->InitiatorName, IScsiName, ISCSI_NAME_MAX_SIZE); + BufferSize = AsciiStrSize (IScsiName); - Status = gIScsiInitiatorName.Set (&gIScsiInitiatorName, &BufferSize, IScsiName); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Invalid iSCSI Name!", - NULL - ); - } + Status = gIScsiInitiatorName.Set (&gIScsiInitiatorName, &BufferSize, IScsiName); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Invalid iSCSI Name!", + NULL + ); + } - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; - break; + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; + break; - case KEY_SAVE_ATTEMPT_CONFIG: - Status = IScsiConvertIfrNvDataToAttemptConfigData (IfrNvData, Private->Current); - if (EFI_ERROR (Status)) { + case KEY_SAVE_ATTEMPT_CONFIG: + Status = IScsiConvertIfrNvDataToAttemptConfigData (IfrNvData, Private->Current); + if (EFI_ERROR (Status)) { + break; + } + + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT; break; - } - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT; - break; + case KEY_SAVE_ORDER_CHANGES: + // + // Sync the Attempt Order to NVR. + // + Status = IScsiConfigOrderAttempts (IfrNvData); + if (EFI_ERROR (Status)) { + break; + } - case KEY_SAVE_ORDER_CHANGES: - // - // Sync the Attempt Order to NVR. - // - Status = IScsiConfigOrderAttempts (IfrNvData); - if (EFI_ERROR (Status)) { + IScsiConfigUpdateAttempt (); + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT; break; - } - IScsiConfigUpdateAttempt (); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT; - break; + case KEY_IGNORE_ORDER_CHANGES: + CopyMem ( + IfrNvData->DynamicOrderedList, + OldIfrNvData.DynamicOrderedList, + sizeof (IfrNvData->DynamicOrderedList) + ); + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT; + break; - case KEY_IGNORE_ORDER_CHANGES: - CopyMem ( - IfrNvData->DynamicOrderedList, - OldIfrNvData.DynamicOrderedList, - sizeof (IfrNvData->DynamicOrderedList) - ); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT; - break; + case KEY_SAVE_DELETE_ATTEMPT: + // + // Delete the Attempt Order from NVR + // + Status = IScsiConfigDeleteAttempts (IfrNvData); + if (EFI_ERROR (Status)) { + break; + } - case KEY_SAVE_DELETE_ATTEMPT: - // - // Delete the Attempt Order from NVR - // - Status = IScsiConfigDeleteAttempts (IfrNvData); - if (EFI_ERROR (Status)) { + IScsiConfigUpdateAttempt (); + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT; break; - } - IScsiConfigUpdateAttempt (); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT; - break; + case KEY_IGNORE_DELETE_ATTEMPT: + CopyMem ( + IfrNvData->DeleteAttemptList, + OldIfrNvData.DeleteAttemptList, + sizeof (IfrNvData->DeleteAttemptList) + ); + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT; + break; - case KEY_IGNORE_DELETE_ATTEMPT: - CopyMem ( - IfrNvData->DeleteAttemptList, - OldIfrNvData.DeleteAttemptList, - sizeof (IfrNvData->DeleteAttemptList) - ); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT; - break; + case KEY_IP_MODE: + switch (Value->u8) { + case IP_MODE_IP6: + NicInfo = IScsiGetNicInfoByIndex (Private->Current->NicIndex); + if (NicInfo == NULL) { + break; + } + + if (!NicInfo->Ipv6Available) { + // + // Current NIC doesn't Support IPv6, hence use IPv4. + // + IfrNvData->IpMode = IP_MODE_IP4; + + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Current NIC doesn't Support IPv6!", + NULL + ); + } + + case IP_MODE_IP4: + ZeroMem (IfrNvData->LocalIp, sizeof (IfrNvData->LocalIp)); + ZeroMem (IfrNvData->SubnetMask, sizeof (IfrNvData->SubnetMask)); + ZeroMem (IfrNvData->Gateway, sizeof (IfrNvData->Gateway)); + ZeroMem (IfrNvData->TargetIp, sizeof (IfrNvData->TargetIp)); + Private->Current->AutoConfigureMode = 0; + ZeroMem (&Private->Current->SessionConfigData.LocalIp, sizeof (EFI_IP_ADDRESS)); + ZeroMem (&Private->Current->SessionConfigData.SubnetMask, sizeof (EFI_IPv4_ADDRESS)); + ZeroMem (&Private->Current->SessionConfigData.Gateway, sizeof (EFI_IP_ADDRESS)); + ZeroMem (&Private->Current->SessionConfigData.TargetIp, sizeof (EFI_IP_ADDRESS)); - case KEY_IP_MODE: - switch (Value->u8) { - case IP_MODE_IP6: - NicInfo = IScsiGetNicInfoByIndex (Private->Current->NicIndex); - if(NicInfo == NULL) { - break; + break; } - if(!NicInfo->Ipv6Available) { - // - // Current NIC doesn't Support IPv6, hence use IPv4. - // - IfrNvData->IpMode = IP_MODE_IP4; + break; + case KEY_LOCAL_IP: + Status = NetLibStrToIp4 (IfrNvData->LocalIp, &HostIp.v4); + if (EFI_ERROR (Status) || + ((Private->Current->SessionConfigData.SubnetMask.Addr[0] != 0) && + !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), NTOHL (*(UINT32 *)Private->Current->SessionConfigData.SubnetMask.Addr)))) + { CreatePopUp ( EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, - L"Current NIC doesn't Support IPv6!", + L"Invalid IP address!", NULL ); - } - case IP_MODE_IP4: - ZeroMem (IfrNvData->LocalIp, sizeof (IfrNvData->LocalIp)); - ZeroMem (IfrNvData->SubnetMask, sizeof (IfrNvData->SubnetMask)); - ZeroMem (IfrNvData->Gateway, sizeof (IfrNvData->Gateway)); - ZeroMem (IfrNvData->TargetIp, sizeof (IfrNvData->TargetIp)); - Private->Current->AutoConfigureMode = 0; - ZeroMem (&Private->Current->SessionConfigData.LocalIp, sizeof (EFI_IP_ADDRESS)); - ZeroMem (&Private->Current->SessionConfigData.SubnetMask, sizeof (EFI_IPv4_ADDRESS)); - ZeroMem (&Private->Current->SessionConfigData.Gateway, sizeof (EFI_IP_ADDRESS)); - ZeroMem (&Private->Current->SessionConfigData.TargetIp, sizeof (EFI_IP_ADDRESS)); + Status = EFI_INVALID_PARAMETER; + } else { + CopyMem (&Private->Current->SessionConfigData.LocalIp, &HostIp.v4, sizeof (HostIp.v4)); + } break; - } - break; + case KEY_SUBNET_MASK: + Status = NetLibStrToIp4 (IfrNvData->SubnetMask, &SubnetMask.v4); + if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (IScsiGetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Invalid Subnet Mask!", + NULL + ); - case KEY_LOCAL_IP: - Status = NetLibStrToIp4 (IfrNvData->LocalIp, &HostIp.v4); - if (EFI_ERROR (Status) || - ((Private->Current->SessionConfigData.SubnetMask.Addr[0] != 0) && - !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), NTOHL(*(UINT32*)Private->Current->SessionConfigData.SubnetMask.Addr)))) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Invalid IP address!", - NULL - ); + Status = EFI_INVALID_PARAMETER; + } else { + CopyMem (&Private->Current->SessionConfigData.SubnetMask, &SubnetMask.v4, sizeof (SubnetMask.v4)); + } - Status = EFI_INVALID_PARAMETER; - } else { - CopyMem (&Private->Current->SessionConfigData.LocalIp, &HostIp.v4, sizeof (HostIp.v4)); - } + break; - break; + case KEY_GATE_WAY: + Status = NetLibStrToIp4 (IfrNvData->Gateway, &Gateway.v4); + if (EFI_ERROR (Status) || + ((Gateway.Addr[0] != 0) && + (Private->Current->SessionConfigData.SubnetMask.Addr[0] != 0) && + !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), NTOHL (*(UINT32 *)Private->Current->SessionConfigData.SubnetMask.Addr)))) + { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Invalid Gateway!", + NULL + ); + Status = EFI_INVALID_PARAMETER; + } else { + CopyMem (&Private->Current->SessionConfigData.Gateway, &Gateway.v4, sizeof (Gateway.v4)); + } - case KEY_SUBNET_MASK: - Status = NetLibStrToIp4 (IfrNvData->SubnetMask, &SubnetMask.v4); - if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (IScsiGetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Invalid Subnet Mask!", - NULL - ); + break; - Status = EFI_INVALID_PARAMETER; - } else { - CopyMem (&Private->Current->SessionConfigData.SubnetMask, &SubnetMask.v4, sizeof (SubnetMask.v4)); - } + case KEY_TARGET_IP: + UnicodeStrToAsciiStrS (IfrNvData->TargetIp, IpString, sizeof (IpString)); + Status = IScsiAsciiStrToIp (IpString, IfrNvData->IpMode, &HostIp); + if (EFI_ERROR (Status) || !IpIsUnicast (&HostIp, IfrNvData->IpMode)) { + // + // The target is expressed in URL format or an invalid Ip address, just save. + // + Private->Current->SessionConfigData.DnsMode = TRUE; + ZeroMem (&Private->Current->SessionConfigData.TargetIp, sizeof (Private->Current->SessionConfigData.TargetIp)); + UnicodeStrToAsciiStrS (IfrNvData->TargetIp, Private->Current->SessionConfigData.TargetUrl, ISCSI_NAME_MAX_SIZE); + } else { + Private->Current->SessionConfigData.DnsMode = FALSE; + CopyMem (&Private->Current->SessionConfigData.TargetIp, &HostIp, sizeof (HostIp)); + } - break; + break; - case KEY_GATE_WAY: - Status = NetLibStrToIp4 (IfrNvData->Gateway, &Gateway.v4); - if (EFI_ERROR (Status) || - ((Gateway.Addr[0] != 0) && - (Private->Current->SessionConfigData.SubnetMask.Addr[0] != 0) && - !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), NTOHL(*(UINT32*)Private->Current->SessionConfigData.SubnetMask.Addr)))) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Invalid Gateway!", - NULL - ); - Status = EFI_INVALID_PARAMETER; - } else { - CopyMem (&Private->Current->SessionConfigData.Gateway, &Gateway.v4, sizeof (Gateway.v4)); - } + case KEY_TARGET_NAME: + UnicodeStrToAsciiStrS (IfrNvData->TargetName, IScsiName, ISCSI_NAME_MAX_SIZE); + Status = IScsiNormalizeName (IScsiName, AsciiStrLen (IScsiName)); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Invalid iSCSI Name!", + NULL + ); + } else { + AsciiStrCpyS (Private->Current->SessionConfigData.TargetName, ISCSI_NAME_MAX_SIZE, IScsiName); + } - break; + break; - case KEY_TARGET_IP: - UnicodeStrToAsciiStrS (IfrNvData->TargetIp, IpString, sizeof (IpString)); - Status = IScsiAsciiStrToIp (IpString, IfrNvData->IpMode, &HostIp); - if (EFI_ERROR (Status) || !IpIsUnicast (&HostIp, IfrNvData->IpMode)) { - // - // The target is expressed in URL format or an invalid Ip address, just save. - // - Private->Current->SessionConfigData.DnsMode = TRUE; - ZeroMem (&Private->Current->SessionConfigData.TargetIp, sizeof (Private->Current->SessionConfigData.TargetIp)); - UnicodeStrToAsciiStrS (IfrNvData->TargetIp, Private->Current->SessionConfigData.TargetUrl, ISCSI_NAME_MAX_SIZE); - } else { - Private->Current->SessionConfigData.DnsMode = FALSE; - CopyMem (&Private->Current->SessionConfigData.TargetIp, &HostIp, sizeof (HostIp)); - } + case KEY_DHCP_ENABLE: + if (IfrNvData->InitiatorInfoFromDhcp == 0) { + IfrNvData->TargetInfoFromDhcp = 0; + } - break; + break; - case KEY_TARGET_NAME: - UnicodeStrToAsciiStrS (IfrNvData->TargetName, IScsiName, ISCSI_NAME_MAX_SIZE); - Status = IScsiNormalizeName (IScsiName, AsciiStrLen (IScsiName)); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Invalid iSCSI Name!", - NULL - ); - } else { - AsciiStrCpyS (Private->Current->SessionConfigData.TargetName, ISCSI_NAME_MAX_SIZE, IScsiName); - } + case KEY_BOOT_LUN: + UnicodeStrToAsciiStrS (IfrNvData->BootLun, LunString, sizeof (LunString)); + Status = IScsiAsciiStrToLun (LunString, (UINT8 *)&Lun); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Invalid LUN string!", + NULL + ); + } else { + CopyMem (Private->Current->SessionConfigData.BootLun, &Lun, sizeof (Lun)); + } - break; + break; - case KEY_DHCP_ENABLE: - if (IfrNvData->InitiatorInfoFromDhcp == 0) { - IfrNvData->TargetInfoFromDhcp = 0; - } + case KEY_AUTH_TYPE: + switch (Value->u8) { + case ISCSI_AUTH_TYPE_CHAP: + IfrNvData->CHAPType = ISCSI_CHAP_UNI; + break; + default: + break; + } - break; + break; - case KEY_BOOT_LUN: - UnicodeStrToAsciiStrS (IfrNvData->BootLun, LunString, sizeof (LunString)); - Status = IScsiAsciiStrToLun (LunString, (UINT8 *) &Lun); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Invalid LUN string!", - NULL + case KEY_CHAP_NAME: + UnicodeStrToAsciiStrS ( + IfrNvData->CHAPName, + Private->Current->AuthConfigData.CHAP.CHAPName, + sizeof (Private->Current->AuthConfigData.CHAP.CHAPName) ); - } else { - CopyMem (Private->Current->SessionConfigData.BootLun, &Lun, sizeof (Lun)); - } - - break; - - case KEY_AUTH_TYPE: - switch (Value->u8) { - case ISCSI_AUTH_TYPE_CHAP: - IfrNvData->CHAPType = ISCSI_CHAP_UNI; - break; - default: break; - } - - break; - case KEY_CHAP_NAME: - UnicodeStrToAsciiStrS ( - IfrNvData->CHAPName, - Private->Current->AuthConfigData.CHAP.CHAPName, - sizeof (Private->Current->AuthConfigData.CHAP.CHAPName) - ); - break; - - case KEY_CHAP_SECRET: - UnicodeStrToAsciiStrS ( - IfrNvData->CHAPSecret, - Private->Current->AuthConfigData.CHAP.CHAPSecret, - sizeof (Private->Current->AuthConfigData.CHAP.CHAPSecret) - ); - break; + case KEY_CHAP_SECRET: + UnicodeStrToAsciiStrS ( + IfrNvData->CHAPSecret, + Private->Current->AuthConfigData.CHAP.CHAPSecret, + sizeof (Private->Current->AuthConfigData.CHAP.CHAPSecret) + ); + break; - case KEY_REVERSE_CHAP_NAME: - UnicodeStrToAsciiStrS ( - IfrNvData->ReverseCHAPName, - Private->Current->AuthConfigData.CHAP.ReverseCHAPName, - sizeof (Private->Current->AuthConfigData.CHAP.ReverseCHAPName) - ); - break; + case KEY_REVERSE_CHAP_NAME: + UnicodeStrToAsciiStrS ( + IfrNvData->ReverseCHAPName, + Private->Current->AuthConfigData.CHAP.ReverseCHAPName, + sizeof (Private->Current->AuthConfigData.CHAP.ReverseCHAPName) + ); + break; - case KEY_REVERSE_CHAP_SECRET: - UnicodeStrToAsciiStrS ( - IfrNvData->ReverseCHAPSecret, - Private->Current->AuthConfigData.CHAP.ReverseCHAPSecret, - sizeof (Private->Current->AuthConfigData.CHAP.ReverseCHAPSecret) - ); - break; + case KEY_REVERSE_CHAP_SECRET: + UnicodeStrToAsciiStrS ( + IfrNvData->ReverseCHAPSecret, + Private->Current->AuthConfigData.CHAP.ReverseCHAPSecret, + sizeof (Private->Current->AuthConfigData.CHAP.ReverseCHAPSecret) + ); + break; - case KEY_CONFIG_ISID: - IScsiParseIsIdFromString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId); - IScsiConvertIsIdToString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId); + case KEY_CONFIG_ISID: + IScsiParseIsIdFromString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId); + IScsiConvertIsIdToString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId); - break; + break; - default: - break; + default: + break; } } @@ -3788,7 +3784,7 @@ IScsiFormCallback ( // Pass changed uncommitted data back to Form Browser. // BufferSize = sizeof (ISCSI_CONFIG_IFR_NVDATA); - HiiSetBrowserData (NULL, NULL, BufferSize, (UINT8 *) IfrNvData, NULL); + HiiSetBrowserData (NULL, NULL, BufferSize, (UINT8 *)IfrNvData, NULL); } FreePool (IfrNvData); @@ -3797,7 +3793,6 @@ IScsiFormCallback ( return Status; } - /** Initialize the iSCSI configuration form. @@ -3812,16 +3807,16 @@ IScsiConfigFormInit ( IN EFI_HANDLE DriverBindingHandle ) { - EFI_STATUS Status; - ISCSI_FORM_CALLBACK_INFO *CallbackInfo; + EFI_STATUS Status; + ISCSI_FORM_CALLBACK_INFO *CallbackInfo; - CallbackInfo = (ISCSI_FORM_CALLBACK_INFO *) AllocateZeroPool (sizeof (ISCSI_FORM_CALLBACK_INFO)); + CallbackInfo = (ISCSI_FORM_CALLBACK_INFO *)AllocateZeroPool (sizeof (ISCSI_FORM_CALLBACK_INFO)); if (CallbackInfo == NULL) { return EFI_OUT_OF_RESOURCES; } - CallbackInfo->Signature = ISCSI_FORM_CALLBACK_INFO_SIGNATURE; - CallbackInfo->Current = NULL; + CallbackInfo->Signature = ISCSI_FORM_CALLBACK_INFO_SIGNATURE; + CallbackInfo->Current = NULL; CallbackInfo->ConfigAccess.ExtractConfig = IScsiFormExtractConfig; CallbackInfo->ConfigAccess.RouteConfig = IScsiFormRouteConfig; @@ -3859,7 +3854,7 @@ IScsiConfigFormInit ( &CallbackInfo->ConfigAccess, NULL ); - FreePool(CallbackInfo); + FreePool (CallbackInfo); return EFI_OUT_OF_RESOURCES; } @@ -3868,7 +3863,6 @@ IScsiConfigFormInit ( return EFI_SUCCESS; } - /** Unload the iSCSI configuration form, this includes: delete all the iSCSI configuration entries, uninstall the form callback protocol, and @@ -3885,13 +3879,13 @@ IScsiConfigFormUnload ( IN EFI_HANDLE DriverBindingHandle ) { - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - ISCSI_NIC_INFO *NicInfo; - LIST_ENTRY *Entry; - EFI_STATUS Status; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + ISCSI_NIC_INFO *NicInfo; + LIST_ENTRY *Entry; + EFI_STATUS Status; while (!IsListEmpty (&mPrivate->AttemptConfigs)) { - Entry = NetListRemoveHead (&mPrivate->AttemptConfigs); + Entry = NetListRemoveHead (&mPrivate->AttemptConfigs); AttemptConfigData = NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA, Link); FreePool (AttemptConfigData); mPrivate->AttemptCount--; @@ -3900,7 +3894,7 @@ IScsiConfigFormUnload ( ASSERT (mPrivate->AttemptCount == 0); while (!IsListEmpty (&mPrivate->NicInfoList)) { - Entry = NetListRemoveHead (&mPrivate->NicInfoList); + Entry = NetListRemoveHead (&mPrivate->NicInfoList); NicInfo = NET_LIST_USER_STRUCT (Entry, ISCSI_NIC_INFO, Link); FreePool (NicInfo); mPrivate->NicCount--; diff --git a/NetworkPkg/IScsiDxe/IScsiConfig.h b/NetworkPkg/IScsiDxe/IScsiConfig.h index 2125351ce8..1f9ec1fdb7 100644 --- a/NetworkPkg/IScsiDxe/IScsiConfig.h +++ b/NetworkPkg/IScsiDxe/IScsiConfig.h @@ -14,10 +14,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent typedef struct _ISCSI_FORM_CALLBACK_INFO ISCSI_FORM_CALLBACK_INFO; -extern UINT8 IScsiConfigVfrBin[]; -extern UINT8 IScsiDxeStrings[]; -extern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo; - +extern UINT8 IScsiConfigVfrBin[]; +extern UINT8 IScsiDxeStrings[]; +extern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo; #define VAR_OFFSET(Field) \ ((UINT16) ((UINTN) &(((ISCSI_CONFIG_IFR_NVDATA *) 0)->Field))) @@ -25,65 +24,64 @@ extern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo; #define QUESTION_ID(Field) \ ((UINT16) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)) -#define DYNAMIC_ONE_OF_VAR_OFFSET VAR_OFFSET (Enabled) -#define DYNAMIC_ORDERED_LIST_QUESTION_ID QUESTION_ID (DynamicOrderedList) -#define DYNAMIC_ORDERED_LIST_VAR_OFFSET VAR_OFFSET (DynamicOrderedList) -#define ATTEMPT_DEL_QUESTION_ID QUESTION_ID (DeleteAttemptList) -#define ATTEMPT_DEL_VAR_OFFSET VAR_OFFSET (DeleteAttemptList) -#define ATTEMPT_ADD_QUESTION_ID QUESTION_ID (AddAttemptList) -#define ATTEMPT_ADD_VAR_OFFSET VAR_OFFSET (AddAttemptList) +#define DYNAMIC_ONE_OF_VAR_OFFSET VAR_OFFSET (Enabled) +#define DYNAMIC_ORDERED_LIST_QUESTION_ID QUESTION_ID (DynamicOrderedList) +#define DYNAMIC_ORDERED_LIST_VAR_OFFSET VAR_OFFSET (DynamicOrderedList) +#define ATTEMPT_DEL_QUESTION_ID QUESTION_ID (DeleteAttemptList) +#define ATTEMPT_DEL_VAR_OFFSET VAR_OFFSET (DeleteAttemptList) +#define ATTEMPT_ADD_QUESTION_ID QUESTION_ID (AddAttemptList) +#define ATTEMPT_ADD_VAR_OFFSET VAR_OFFSET (AddAttemptList) // // Define QuestionId and OffSet for Keywords. // -#define ATTEMPT_MAC_ADDR_VAR_OFFSET VAR_OFFSET (ISCSIMacAddr) -#define ATTEMPT_ATTEMPT_NAME_QUESTION_ID QUESTION_ID (ISCSIAttemptName) -#define ATTEMPT_ATTEMPT_NAME_VAR_OFFSET VAR_OFFSET (ISCSIAttemptName) -#define ATTEMPT_BOOTENABLE_QUESTION_ID QUESTION_ID (ISCSIBootEnableList) -#define ATTEMPT_BOOTENABLE_VAR_OFFSET VAR_OFFSET (ISCSIBootEnableList) -#define ATTEMPT_ADDRESS_TYPE_QUESTION_ID QUESTION_ID (ISCSIIpAddressTypeList) -#define ATTEMPT_ADDRESS_TYPE_VAR_OFFSET VAR_OFFSET (ISCSIIpAddressTypeList) -#define ATTEMPT_CONNECT_RETRY_QUESTION_ID QUESTION_ID (ISCSIConnectRetry) -#define ATTEMPT_CONNECT_RETRY_VAR_OFFSET VAR_OFFSET (ISCSIConnectRetry) -#define ATTEMPT_CONNECT_TIMEOUT_QUESTION_ID QUESTION_ID (ISCSIConnectTimeout) -#define ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET VAR_OFFSET (ISCSIConnectTimeout) -#define ATTEMPT_ISID_QUESTION_ID QUESTION_ID (Keyword->ISCSIIsId) -#define ATTEMPT_ISID_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIIsId) -#define ATTEMPT_INITIATOR_VIA_DHCP_QUESTION_ID QUESTION_ID (ISCSIInitiatorInfoViaDHCP) -#define ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET VAR_OFFSET (ISCSIInitiatorInfoViaDHCP) -#define ATTEMPT_INITIATOR_IP_ADDRESS_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorIpAddress) -#define ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorIpAddress) -#define ATTEMPT_INITIATOR_NET_MASK_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorNetmask) -#define ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorNetmask) -#define ATTEMPT_INITIATOR_GATE_WAY_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorGateway) -#define ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorGateway) -#define ATTEMPT_TARGET_VIA_DHCP_QUESTION_ID QUESTION_ID (ISCSITargetInfoViaDHCP) -#define ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET VAR_OFFSET (ISCSITargetInfoViaDHCP) -#define ATTEMPT_TARGET_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSITargetName) -#define ATTEMPT_TARGET_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSITargetName) -#define ATTEMPT_TARGET_IP_ADDRESS_QUESTION_ID QUESTION_ID (Keyword->ISCSITargetIpAddress) -#define ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET VAR_OFFSET (Keyword->ISCSITargetIpAddress) -#define ATTEMPT_TARGET_TCP_PORT_QUESTION_ID QUESTION_ID (ISCSITargetTcpPort) -#define ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET VAR_OFFSET (ISCSITargetTcpPort) -#define ATTEMPT_LUN_QUESTION_ID QUESTION_ID (Keyword->ISCSILun) -#define ATTEMPT_LUN_VAR_OFFSET VAR_OFFSET (Keyword->ISCSILun) -#define ATTEMPT_AUTHENTICATION_METHOD_QUESTION_ID QUESTION_ID (ISCSIAuthenticationMethod) -#define ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET VAR_OFFSET (ISCSIAuthenticationMethod) -#define ATTEMPT_CHARTYPE_QUESTION_ID QUESTION_ID (ISCSIChapType) -#define ATTEMPT_CHARTYPE_VAR_OFFSET VAR_OFFSET (ISCSIChapType) -#define ATTEMPT_CHAR_USER_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSIChapUsername) -#define ATTEMPT_CHAR_USER_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIChapUsername) -#define ATTEMPT_CHAR_SECRET_QUESTION_ID QUESTION_ID (Keyword->ISCSIChapSecret) -#define ATTEMPT_CHAR_SECRET_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIChapSecret) -#define ATTEMPT_CHAR_REVERSE_USER_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSIReverseChapUsername) -#define ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIReverseChapUsername) -#define ATTEMPT_CHAR_REVERSE_SECRET_QUESTION_ID QUESTION_ID (Keyword->ISCSIReverseChapSecret) -#define ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIReverseChapSecret) - - -#define ISCSI_INITATOR_NAME_VAR_NAME L"I_NAME" - -#define ISCSI_CONFIG_VAR_ATTR (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE) +#define ATTEMPT_MAC_ADDR_VAR_OFFSET VAR_OFFSET (ISCSIMacAddr) +#define ATTEMPT_ATTEMPT_NAME_QUESTION_ID QUESTION_ID (ISCSIAttemptName) +#define ATTEMPT_ATTEMPT_NAME_VAR_OFFSET VAR_OFFSET (ISCSIAttemptName) +#define ATTEMPT_BOOTENABLE_QUESTION_ID QUESTION_ID (ISCSIBootEnableList) +#define ATTEMPT_BOOTENABLE_VAR_OFFSET VAR_OFFSET (ISCSIBootEnableList) +#define ATTEMPT_ADDRESS_TYPE_QUESTION_ID QUESTION_ID (ISCSIIpAddressTypeList) +#define ATTEMPT_ADDRESS_TYPE_VAR_OFFSET VAR_OFFSET (ISCSIIpAddressTypeList) +#define ATTEMPT_CONNECT_RETRY_QUESTION_ID QUESTION_ID (ISCSIConnectRetry) +#define ATTEMPT_CONNECT_RETRY_VAR_OFFSET VAR_OFFSET (ISCSIConnectRetry) +#define ATTEMPT_CONNECT_TIMEOUT_QUESTION_ID QUESTION_ID (ISCSIConnectTimeout) +#define ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET VAR_OFFSET (ISCSIConnectTimeout) +#define ATTEMPT_ISID_QUESTION_ID QUESTION_ID (Keyword->ISCSIIsId) +#define ATTEMPT_ISID_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIIsId) +#define ATTEMPT_INITIATOR_VIA_DHCP_QUESTION_ID QUESTION_ID (ISCSIInitiatorInfoViaDHCP) +#define ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET VAR_OFFSET (ISCSIInitiatorInfoViaDHCP) +#define ATTEMPT_INITIATOR_IP_ADDRESS_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorIpAddress) +#define ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorIpAddress) +#define ATTEMPT_INITIATOR_NET_MASK_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorNetmask) +#define ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorNetmask) +#define ATTEMPT_INITIATOR_GATE_WAY_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorGateway) +#define ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorGateway) +#define ATTEMPT_TARGET_VIA_DHCP_QUESTION_ID QUESTION_ID (ISCSITargetInfoViaDHCP) +#define ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET VAR_OFFSET (ISCSITargetInfoViaDHCP) +#define ATTEMPT_TARGET_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSITargetName) +#define ATTEMPT_TARGET_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSITargetName) +#define ATTEMPT_TARGET_IP_ADDRESS_QUESTION_ID QUESTION_ID (Keyword->ISCSITargetIpAddress) +#define ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET VAR_OFFSET (Keyword->ISCSITargetIpAddress) +#define ATTEMPT_TARGET_TCP_PORT_QUESTION_ID QUESTION_ID (ISCSITargetTcpPort) +#define ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET VAR_OFFSET (ISCSITargetTcpPort) +#define ATTEMPT_LUN_QUESTION_ID QUESTION_ID (Keyword->ISCSILun) +#define ATTEMPT_LUN_VAR_OFFSET VAR_OFFSET (Keyword->ISCSILun) +#define ATTEMPT_AUTHENTICATION_METHOD_QUESTION_ID QUESTION_ID (ISCSIAuthenticationMethod) +#define ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET VAR_OFFSET (ISCSIAuthenticationMethod) +#define ATTEMPT_CHARTYPE_QUESTION_ID QUESTION_ID (ISCSIChapType) +#define ATTEMPT_CHARTYPE_VAR_OFFSET VAR_OFFSET (ISCSIChapType) +#define ATTEMPT_CHAR_USER_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSIChapUsername) +#define ATTEMPT_CHAR_USER_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIChapUsername) +#define ATTEMPT_CHAR_SECRET_QUESTION_ID QUESTION_ID (Keyword->ISCSIChapSecret) +#define ATTEMPT_CHAR_SECRET_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIChapSecret) +#define ATTEMPT_CHAR_REVERSE_USER_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSIReverseChapUsername) +#define ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIReverseChapUsername) +#define ATTEMPT_CHAR_REVERSE_SECRET_QUESTION_ID QUESTION_ID (Keyword->ISCSIReverseChapSecret) +#define ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIReverseChapSecret) + +#define ISCSI_INITATOR_NAME_VAR_NAME L"I_NAME" + +#define ISCSI_CONFIG_VAR_ATTR (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE) #define ISCSI_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'f', 'c', 'i') @@ -97,47 +95,47 @@ extern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo; #pragma pack(1) struct _ISCSI_ATTEMPT_CONFIG_NVDATA { - LIST_ENTRY Link; - UINT8 NicIndex; - UINT8 AttemptConfigIndex; - BOOLEAN DhcpSuccess; - BOOLEAN ValidiBFTPath; - BOOLEAN ValidPath; - UINT8 AutoConfigureMode; - EFI_STRING_ID AttemptTitleToken; - EFI_STRING_ID AttemptTitleHelpToken; - CHAR8 AttemptName[ATTEMPT_NAME_SIZE]; - CHAR8 MacString[ISCSI_MAX_MAC_STRING_LEN]; - EFI_IP_ADDRESS PrimaryDns; - EFI_IP_ADDRESS SecondaryDns; - EFI_IP_ADDRESS DhcpServer; - ISCSI_SESSION_CONFIG_NVDATA SessionConfigData; - UINT8 AuthenticationType; + LIST_ENTRY Link; + UINT8 NicIndex; + UINT8 AttemptConfigIndex; + BOOLEAN DhcpSuccess; + BOOLEAN ValidiBFTPath; + BOOLEAN ValidPath; + UINT8 AutoConfigureMode; + EFI_STRING_ID AttemptTitleToken; + EFI_STRING_ID AttemptTitleHelpToken; + CHAR8 AttemptName[ATTEMPT_NAME_SIZE]; + CHAR8 MacString[ISCSI_MAX_MAC_STRING_LEN]; + EFI_IP_ADDRESS PrimaryDns; + EFI_IP_ADDRESS SecondaryDns; + EFI_IP_ADDRESS DhcpServer; + ISCSI_SESSION_CONFIG_NVDATA SessionConfigData; + UINT8 AuthenticationType; union { - ISCSI_CHAP_AUTH_CONFIG_NVDATA CHAP; + ISCSI_CHAP_AUTH_CONFIG_NVDATA CHAP; } AuthConfigData; - BOOLEAN AutoConfigureSuccess; - UINT8 Actived; + BOOLEAN AutoConfigureSuccess; + UINT8 Actived; }; /// /// HII specific Vendor Device Path definition. /// typedef struct { - VENDOR_DEVICE_PATH VendorDevicePath; - EFI_DEVICE_PATH_PROTOCOL End; + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; } HII_VENDOR_DEVICE_PATH; #pragma pack() struct _ISCSI_FORM_CALLBACK_INFO { - UINT32 Signature; - EFI_HANDLE DriverHandle; - EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; - UINT16 *KeyList; - VOID *FormBuffer; - EFI_HII_HANDLE RegisteredHandle; - ISCSI_ATTEMPT_CONFIG_NVDATA *Current; + UINT32 Signature; + EFI_HANDLE DriverHandle; + EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; + UINT16 *KeyList; + VOID *FormBuffer; + EFI_HII_HANDLE RegisteredHandle; + ISCSI_ATTEMPT_CONFIG_NVDATA *Current; }; /** @@ -158,11 +156,11 @@ struct _ISCSI_FORM_CALLBACK_INFO { **/ EFI_STATUS IScsiCreateOpCode ( - IN UINT16 StartLabelNumber, - OUT VOID **StartOpCodeHandle, - OUT EFI_IFR_GUID_LABEL **StartLabel, - OUT VOID **EndOpCodeHandle, - OUT EFI_IFR_GUID_LABEL **EndLabel + IN UINT16 StartLabelNumber, + OUT VOID **StartOpCodeHandle, + OUT EFI_IFR_GUID_LABEL **StartLabel, + OUT VOID **EndOpCodeHandle, + OUT EFI_IFR_GUID_LABEL **EndLabel ); /** @@ -215,7 +213,7 @@ IScsiConfigUpdateAttempt ( **/ ISCSI_ATTEMPT_CONFIG_NVDATA * IScsiConfigGetAttemptByConfigIndex ( - IN UINT8 AttemptConfigIndex + IN UINT8 AttemptConfigIndex ); #endif diff --git a/NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h b/NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h index 688fb03bf5..bcc8923200 100644 --- a/NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h +++ b/NetworkPkg/IScsiDxe/IScsiConfigNVDataStruc.h @@ -11,139 +11,139 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include -#define VAR_EQ_TEST_NAME 0x100 -#define CONFIGURATION_VARSTORE_ID 0x6666 +#define VAR_EQ_TEST_NAME 0x100 +#define CONFIGURATION_VARSTORE_ID 0x6666 -#define FORMID_MAIN_FORM 1 -#define FORMID_MAC_FORM 2 -#define FORMID_ATTEMPT_FORM 3 -#define FORMID_ORDER_FORM 4 -#define FORMID_DELETE_FORM 5 +#define FORMID_MAIN_FORM 1 +#define FORMID_MAC_FORM 2 +#define FORMID_ATTEMPT_FORM 3 +#define FORMID_ORDER_FORM 4 +#define FORMID_DELETE_FORM 5 -#define ISCSI_MAX_ATTEMPTS_NUM FixedPcdGet8 (PcdMaxIScsiAttemptNumber) +#define ISCSI_MAX_ATTEMPTS_NUM FixedPcdGet8 (PcdMaxIScsiAttemptNumber) -#define ISCSI_NAME_IFR_MIN_SIZE 4 -#define ISCSI_NAME_IFR_MAX_SIZE 223 -#define ISCSI_NAME_MAX_SIZE 224 +#define ISCSI_NAME_IFR_MIN_SIZE 4 +#define ISCSI_NAME_IFR_MAX_SIZE 223 +#define ISCSI_NAME_MAX_SIZE 224 -#define ATTEMPT_NAME_LIST_SIZE 96 -#define ATTEMPT_NAME_SIZE 12 +#define ATTEMPT_NAME_LIST_SIZE 96 +#define ATTEMPT_NAME_SIZE 12 -#define CONNECT_MIN_RETRY 0 -#define CONNECT_MAX_RETRY 16 +#define CONNECT_MIN_RETRY 0 +#define CONNECT_MAX_RETRY 16 -#define CONNECT_MIN_TIMEOUT 100 -#define CONNECT_MAX_TIMEOUT 20000 -#define CONNECT_DEFAULT_TIMEOUT 1000 +#define CONNECT_MIN_TIMEOUT 100 +#define CONNECT_MAX_TIMEOUT 20000 +#define CONNECT_DEFAULT_TIMEOUT 1000 -#define ISCSI_ACTIVE_DISABLED 0 -#define ISCSI_ACTIVE_ENABLED 1 +#define ISCSI_ACTIVE_DISABLED 0 +#define ISCSI_ACTIVE_ENABLED 1 -#define ISCSI_DISABLED 0 -#define ISCSI_ENABLED 1 -#define ISCSI_ENABLED_FOR_MPIO 2 +#define ISCSI_DISABLED 0 +#define ISCSI_ENABLED 1 +#define ISCSI_ENABLED_FOR_MPIO 2 -#define IP_MODE_IP4 0 -#define IP_MODE_IP6 1 -#define IP_MODE_AUTOCONFIG 2 +#define IP_MODE_IP4 0 +#define IP_MODE_IP6 1 +#define IP_MODE_AUTOCONFIG 2 -#define ISCSI_AUTH_TYPE_NONE 0 -#define ISCSI_AUTH_TYPE_CHAP 1 -#define ISCSI_AUTH_TYPE_KRB 2 +#define ISCSI_AUTH_TYPE_NONE 0 +#define ISCSI_AUTH_TYPE_CHAP 1 +#define ISCSI_AUTH_TYPE_KRB 2 -#define IP4_MIN_SIZE 7 -#define IP4_MAX_SIZE 15 -#define IP4_STR_MAX_SIZE 16 +#define IP4_MIN_SIZE 7 +#define IP4_MAX_SIZE 15 +#define IP4_STR_MAX_SIZE 16 // // Macros used for an IPv4 or an IPv6 address. // -#define IP_MIN_SIZE 2 -#define IP_MAX_SIZE 39 -#define IP_STR_MAX_SIZE 40 - -#define LUN_MIN_SIZE 1 -#define LUN_MAX_SIZE 20 -#define ISCSI_LUN_STR_MAX_LEN 21 - -#define ISCSI_CHAP_UNI 0 -#define ISCSI_CHAP_MUTUAL 1 - -#define TARGET_PORT_MIN_NUM 0 -#define TARGET_PORT_MAX_NUM 65535 -#define LABEL_END 0xffff - -#define KEY_INITIATOR_NAME 0x101 -#define KEY_DHCP_ENABLE 0x102 -#define KEY_LOCAL_IP 0x103 -#define KEY_SUBNET_MASK 0x104 -#define KEY_GATE_WAY 0x105 -#define KEY_TARGET_IP 0x106 -#define KEY_CHAP_NAME 0x107 -#define KEY_CHAP_SECRET 0x108 -#define KEY_REVERSE_CHAP_NAME 0x109 -#define KEY_REVERSE_CHAP_SECRET 0x10a -#define KEY_SAVE_CHANGES 0x10b -#define KEY_TARGET_NAME 0x10c -#define KEY_BOOT_LUN 0x10d - -#define KEY_ADD_ATTEMPT 0x10e -#define KEY_SAVE_ATTEMPT_CONFIG 0x10f -#define KEY_ORDER_ATTEMPT_CONFIG 0x110 -#define KEY_SAVE_ORDER_CHANGES 0x111 -#define KEY_IGNORE_ORDER_CHANGES 0x112 -#define KEY_ATTEMPT_NAME 0x113 -#define KEY_SAVE_DELETE_ATTEMPT 0x114 -#define KEY_IGNORE_DELETE_ATTEMPT 0x115 -#define KEY_DELETE_ATTEMPT 0x116 - -#define KEY_IP_MODE 0x11c -#define KEY_AUTH_TYPE 0x11d -#define KEY_CONFIG_ISID 0x11e - -#define ATTEMPT_ENTRY_LABEL 0x9000 -#define KEY_ATTEMPT_ENTRY_BASE 0xa000 -#define KEY_DE_ATTEMPT_ENTRY_BASE 0xb000 - -#define KEY_DEVICE_ENTRY_BASE 0x1000 -#define KEY_MAC_ENTRY_BASE 0x2000 -#define MAC_ENTRY_LABEL 0x3000 -#define ORDER_ENTRY_LABEL 0x4000 -#define DELETE_ENTRY_LABEL 0x5000 -#define KEYWORD_ENTRY_LABEL 0x6000 -#define CONFIG_OPTION_OFFSET 0x9000 - -#define ISCSI_CHAP_SECRET_MIN_LEN 12 -#define ISCSI_CHAP_SECRET_MAX_LEN 16 +#define IP_MIN_SIZE 2 +#define IP_MAX_SIZE 39 +#define IP_STR_MAX_SIZE 40 + +#define LUN_MIN_SIZE 1 +#define LUN_MAX_SIZE 20 +#define ISCSI_LUN_STR_MAX_LEN 21 + +#define ISCSI_CHAP_UNI 0 +#define ISCSI_CHAP_MUTUAL 1 + +#define TARGET_PORT_MIN_NUM 0 +#define TARGET_PORT_MAX_NUM 65535 +#define LABEL_END 0xffff + +#define KEY_INITIATOR_NAME 0x101 +#define KEY_DHCP_ENABLE 0x102 +#define KEY_LOCAL_IP 0x103 +#define KEY_SUBNET_MASK 0x104 +#define KEY_GATE_WAY 0x105 +#define KEY_TARGET_IP 0x106 +#define KEY_CHAP_NAME 0x107 +#define KEY_CHAP_SECRET 0x108 +#define KEY_REVERSE_CHAP_NAME 0x109 +#define KEY_REVERSE_CHAP_SECRET 0x10a +#define KEY_SAVE_CHANGES 0x10b +#define KEY_TARGET_NAME 0x10c +#define KEY_BOOT_LUN 0x10d + +#define KEY_ADD_ATTEMPT 0x10e +#define KEY_SAVE_ATTEMPT_CONFIG 0x10f +#define KEY_ORDER_ATTEMPT_CONFIG 0x110 +#define KEY_SAVE_ORDER_CHANGES 0x111 +#define KEY_IGNORE_ORDER_CHANGES 0x112 +#define KEY_ATTEMPT_NAME 0x113 +#define KEY_SAVE_DELETE_ATTEMPT 0x114 +#define KEY_IGNORE_DELETE_ATTEMPT 0x115 +#define KEY_DELETE_ATTEMPT 0x116 + +#define KEY_IP_MODE 0x11c +#define KEY_AUTH_TYPE 0x11d +#define KEY_CONFIG_ISID 0x11e + +#define ATTEMPT_ENTRY_LABEL 0x9000 +#define KEY_ATTEMPT_ENTRY_BASE 0xa000 +#define KEY_DE_ATTEMPT_ENTRY_BASE 0xb000 + +#define KEY_DEVICE_ENTRY_BASE 0x1000 +#define KEY_MAC_ENTRY_BASE 0x2000 +#define MAC_ENTRY_LABEL 0x3000 +#define ORDER_ENTRY_LABEL 0x4000 +#define DELETE_ENTRY_LABEL 0x5000 +#define KEYWORD_ENTRY_LABEL 0x6000 +#define CONFIG_OPTION_OFFSET 0x9000 + +#define ISCSI_CHAP_SECRET_MIN_LEN 12 +#define ISCSI_CHAP_SECRET_MAX_LEN 16 // // ISCSI_CHAP_SECRET_STORAGE = ISCSI_CHAP_SECRET_MAX_LEN + sizeof (NULL-Terminator) // #define ISCSI_CHAP_SECRET_STORAGE 17 -#define ISCSI_CHAP_NAME_MAX_LEN 126 -#define ISCSI_CHAP_NAME_STORAGE 127 +#define ISCSI_CHAP_NAME_MAX_LEN 126 +#define ISCSI_CHAP_NAME_STORAGE 127 -#define KERBEROS_SECRET_MIN_LEN 12 -#define KERBEROS_SECRET_MAX_LEN 16 -#define KERBEROS_SECRET_STORAGE 17 -#define KERBEROS_NAME_MAX_LEN 96 -#define KERBEROS_KDC_PORT_MIN_NUM 0 -#define KERBEROS_KDC_PORT_MAX_NUM 65535 +#define KERBEROS_SECRET_MIN_LEN 12 +#define KERBEROS_SECRET_MAX_LEN 16 +#define KERBEROS_SECRET_STORAGE 17 +#define KERBEROS_NAME_MAX_LEN 96 +#define KERBEROS_KDC_PORT_MIN_NUM 0 +#define KERBEROS_KDC_PORT_MAX_NUM 65535 -#define ISID_CONFIGURABLE_MIN_LEN 6 -#define ISID_CONFIGURABLE_MAX_LEN 12 -#define ISID_CONFIGURABLE_STORAGE 13 +#define ISID_CONFIGURABLE_MIN_LEN 6 +#define ISID_CONFIGURABLE_MAX_LEN 12 +#define ISID_CONFIGURABLE_STORAGE 13 // // sizeof (EFI_MAC_ADDRESS) * 3 // -#define ISCSI_MAX_MAC_STRING_LEN 96 +#define ISCSI_MAX_MAC_STRING_LEN 96 /// /// Macro used for target Url. /// -#define ISCSI_TARGET_URI_MIN_SIZE 0 -#define ISCSI_TARGET_URI_MAX_SIZE 255 +#define ISCSI_TARGET_URI_MIN_SIZE 0 +#define ISCSI_TARGET_URI_MAX_SIZE 255 #pragma pack(1) @@ -151,81 +151,81 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // Used by keyword. // typedef struct { - CHAR16 ISCSIIsId[ISID_CONFIGURABLE_STORAGE]; - CHAR16 ISCSIInitiatorIpAddress[IP4_STR_MAX_SIZE]; - CHAR16 ISCSIInitiatorNetmask[IP4_STR_MAX_SIZE]; - CHAR16 ISCSIInitiatorGateway[IP4_STR_MAX_SIZE]; - CHAR16 ISCSITargetName[ISCSI_NAME_MAX_SIZE]; - CHAR16 ISCSITargetIpAddress[ISCSI_TARGET_URI_MAX_SIZE]; - CHAR16 ISCSILun[ISCSI_LUN_STR_MAX_LEN]; - CHAR16 ISCSIChapUsername[ISCSI_CHAP_NAME_STORAGE]; - CHAR16 ISCSIChapSecret[ISCSI_CHAP_SECRET_STORAGE]; - CHAR16 ISCSIReverseChapUsername[ISCSI_CHAP_NAME_STORAGE]; - CHAR16 ISCSIReverseChapSecret[ISCSI_CHAP_SECRET_STORAGE]; + CHAR16 ISCSIIsId[ISID_CONFIGURABLE_STORAGE]; + CHAR16 ISCSIInitiatorIpAddress[IP4_STR_MAX_SIZE]; + CHAR16 ISCSIInitiatorNetmask[IP4_STR_MAX_SIZE]; + CHAR16 ISCSIInitiatorGateway[IP4_STR_MAX_SIZE]; + CHAR16 ISCSITargetName[ISCSI_NAME_MAX_SIZE]; + CHAR16 ISCSITargetIpAddress[ISCSI_TARGET_URI_MAX_SIZE]; + CHAR16 ISCSILun[ISCSI_LUN_STR_MAX_LEN]; + CHAR16 ISCSIChapUsername[ISCSI_CHAP_NAME_STORAGE]; + CHAR16 ISCSIChapSecret[ISCSI_CHAP_SECRET_STORAGE]; + CHAR16 ISCSIReverseChapUsername[ISCSI_CHAP_NAME_STORAGE]; + CHAR16 ISCSIReverseChapSecret[ISCSI_CHAP_SECRET_STORAGE]; } KEYWORD_STR; typedef struct _ISCSI_CONFIG_IFR_NVDATA { - CHAR16 InitiatorName[ISCSI_NAME_MAX_SIZE]; - CHAR16 AttemptName[ATTEMPT_NAME_SIZE]; - UINT8 Enabled; - UINT8 IpMode; - - UINT8 ConnectRetryCount; - UINT8 Padding1; - UINT16 ConnectTimeout; // Timeout value in milliseconds. - - UINT8 InitiatorInfoFromDhcp; - UINT8 TargetInfoFromDhcp; - CHAR16 LocalIp[IP4_STR_MAX_SIZE]; - CHAR16 SubnetMask[IP4_STR_MAX_SIZE]; - CHAR16 Gateway[IP4_STR_MAX_SIZE]; - - CHAR16 TargetName[ISCSI_NAME_MAX_SIZE]; - CHAR16 TargetIp[ISCSI_TARGET_URI_MAX_SIZE]; - UINT16 TargetPort; - CHAR16 BootLun[ISCSI_LUN_STR_MAX_LEN]; - - UINT8 AuthenticationType; - - UINT8 CHAPType; - CHAR16 CHAPName[ISCSI_CHAP_NAME_STORAGE]; - CHAR16 CHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; - CHAR16 ReverseCHAPName[ISCSI_CHAP_NAME_STORAGE]; - CHAR16 ReverseCHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; - - BOOLEAN MutualRequired; - UINT8 Padding2; - CHAR16 KerberosUserName[KERBEROS_NAME_MAX_LEN]; - CHAR16 KerberosUserSecret[KERBEROS_SECRET_STORAGE]; - CHAR16 KerberosKDCName[KERBEROS_NAME_MAX_LEN]; - CHAR16 KerberosKDCRealm[KERBEROS_NAME_MAX_LEN]; - CHAR16 KerberosKDCIp[IP_STR_MAX_SIZE]; - UINT16 KerberosKDCPort; - - UINT8 DynamicOrderedList[ISCSI_MAX_ATTEMPTS_NUM]; - UINT8 DeleteAttemptList[ISCSI_MAX_ATTEMPTS_NUM]; - UINT8 AddAttemptList[ISCSI_MAX_ATTEMPTS_NUM]; - CHAR16 IsId[ISID_CONFIGURABLE_STORAGE]; + CHAR16 InitiatorName[ISCSI_NAME_MAX_SIZE]; + CHAR16 AttemptName[ATTEMPT_NAME_SIZE]; + UINT8 Enabled; + UINT8 IpMode; + + UINT8 ConnectRetryCount; + UINT8 Padding1; + UINT16 ConnectTimeout; // Timeout value in milliseconds. + + UINT8 InitiatorInfoFromDhcp; + UINT8 TargetInfoFromDhcp; + CHAR16 LocalIp[IP4_STR_MAX_SIZE]; + CHAR16 SubnetMask[IP4_STR_MAX_SIZE]; + CHAR16 Gateway[IP4_STR_MAX_SIZE]; + + CHAR16 TargetName[ISCSI_NAME_MAX_SIZE]; + CHAR16 TargetIp[ISCSI_TARGET_URI_MAX_SIZE]; + UINT16 TargetPort; + CHAR16 BootLun[ISCSI_LUN_STR_MAX_LEN]; + + UINT8 AuthenticationType; + + UINT8 CHAPType; + CHAR16 CHAPName[ISCSI_CHAP_NAME_STORAGE]; + CHAR16 CHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; + CHAR16 ReverseCHAPName[ISCSI_CHAP_NAME_STORAGE]; + CHAR16 ReverseCHAPSecret[ISCSI_CHAP_SECRET_STORAGE]; + + BOOLEAN MutualRequired; + UINT8 Padding2; + CHAR16 KerberosUserName[KERBEROS_NAME_MAX_LEN]; + CHAR16 KerberosUserSecret[KERBEROS_SECRET_STORAGE]; + CHAR16 KerberosKDCName[KERBEROS_NAME_MAX_LEN]; + CHAR16 KerberosKDCRealm[KERBEROS_NAME_MAX_LEN]; + CHAR16 KerberosKDCIp[IP_STR_MAX_SIZE]; + UINT16 KerberosKDCPort; + + UINT8 DynamicOrderedList[ISCSI_MAX_ATTEMPTS_NUM]; + UINT8 DeleteAttemptList[ISCSI_MAX_ATTEMPTS_NUM]; + UINT8 AddAttemptList[ISCSI_MAX_ATTEMPTS_NUM]; + CHAR16 IsId[ISID_CONFIGURABLE_STORAGE]; // // This will be used by keywords. // - CHAR16 ISCSIMacAddr[ISCSI_MAX_MAC_STRING_LEN]; - CHAR16 ISCSIAttemptOrder[ATTEMPT_NAME_LIST_SIZE]; - CHAR16 ISCSIAddAttemptList[ATTEMPT_NAME_LIST_SIZE]; - CHAR16 ISCSIDeleteAttemptList[ATTEMPT_NAME_LIST_SIZE]; - CHAR16 ISCSIDisplayAttemptList[ATTEMPT_NAME_LIST_SIZE]; - CHAR16 ISCSIAttemptName[ATTEMPT_NAME_LIST_SIZE]; - UINT8 ISCSIBootEnableList[ISCSI_MAX_ATTEMPTS_NUM]; - UINT8 ISCSIIpAddressTypeList[ISCSI_MAX_ATTEMPTS_NUM]; - UINT8 ISCSIConnectRetry[ISCSI_MAX_ATTEMPTS_NUM]; - UINT16 ISCSIConnectTimeout[ISCSI_MAX_ATTEMPTS_NUM]; - UINT8 ISCSIInitiatorInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM]; - UINT8 ISCSITargetInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM]; - UINT16 ISCSITargetTcpPort[ISCSI_MAX_ATTEMPTS_NUM]; - UINT8 ISCSIAuthenticationMethod[ISCSI_MAX_ATTEMPTS_NUM]; - UINT8 ISCSIChapType[ISCSI_MAX_ATTEMPTS_NUM]; - KEYWORD_STR Keyword[ISCSI_MAX_ATTEMPTS_NUM]; + CHAR16 ISCSIMacAddr[ISCSI_MAX_MAC_STRING_LEN]; + CHAR16 ISCSIAttemptOrder[ATTEMPT_NAME_LIST_SIZE]; + CHAR16 ISCSIAddAttemptList[ATTEMPT_NAME_LIST_SIZE]; + CHAR16 ISCSIDeleteAttemptList[ATTEMPT_NAME_LIST_SIZE]; + CHAR16 ISCSIDisplayAttemptList[ATTEMPT_NAME_LIST_SIZE]; + CHAR16 ISCSIAttemptName[ATTEMPT_NAME_LIST_SIZE]; + UINT8 ISCSIBootEnableList[ISCSI_MAX_ATTEMPTS_NUM]; + UINT8 ISCSIIpAddressTypeList[ISCSI_MAX_ATTEMPTS_NUM]; + UINT8 ISCSIConnectRetry[ISCSI_MAX_ATTEMPTS_NUM]; + UINT16 ISCSIConnectTimeout[ISCSI_MAX_ATTEMPTS_NUM]; + UINT8 ISCSIInitiatorInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM]; + UINT8 ISCSITargetInfoViaDHCP[ISCSI_MAX_ATTEMPTS_NUM]; + UINT16 ISCSITargetTcpPort[ISCSI_MAX_ATTEMPTS_NUM]; + UINT8 ISCSIAuthenticationMethod[ISCSI_MAX_ATTEMPTS_NUM]; + UINT8 ISCSIChapType[ISCSI_MAX_ATTEMPTS_NUM]; + KEYWORD_STR Keyword[ISCSI_MAX_ATTEMPTS_NUM]; } ISCSI_CONFIG_IFR_NVDATA; #pragma pack() diff --git a/NetworkPkg/IScsiDxe/IScsiDhcp.c b/NetworkPkg/IScsiDxe/IScsiDhcp.c index 2c77e99f98..4af01a18a8 100644 --- a/NetworkPkg/IScsiDxe/IScsiDhcp.c +++ b/NetworkPkg/IScsiDxe/IScsiDhcp.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "IScsiImpl.h" - /** Extract the Root Path option and get the required target information. @@ -27,46 +26,47 @@ EFI_STATUS IScsiDhcpExtractRootPath ( IN CHAR8 *RootPath, IN UINT8 Length, - IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData + IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData ) { - EFI_STATUS Status; - UINT8 IScsiRootPathIdLen; - CHAR8 *TmpStr; - ISCSI_ROOT_PATH_FIELD Fields[RP_FIELD_IDX_MAX]; - ISCSI_ROOT_PATH_FIELD *Field; - UINT32 FieldIndex; - UINT8 Index; - ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData; - EFI_IP_ADDRESS Ip; - UINT8 IpMode; + EFI_STATUS Status; + UINT8 IScsiRootPathIdLen; + CHAR8 *TmpStr; + ISCSI_ROOT_PATH_FIELD Fields[RP_FIELD_IDX_MAX]; + ISCSI_ROOT_PATH_FIELD *Field; + UINT32 FieldIndex; + UINT8 Index; + ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData; + EFI_IP_ADDRESS Ip; + UINT8 IpMode; ConfigNvData = &ConfigData->SessionConfigData; // // "iscsi:"":"":"":"":" // - IScsiRootPathIdLen = (UINT8) AsciiStrLen (ISCSI_ROOT_PATH_ID); + IScsiRootPathIdLen = (UINT8)AsciiStrLen (ISCSI_ROOT_PATH_ID); if ((Length <= IScsiRootPathIdLen) || (CompareMem (RootPath, ISCSI_ROOT_PATH_ID, IScsiRootPathIdLen) != 0)) { return EFI_NOT_FOUND; } + // // Skip the iSCSI RootPath ID "iscsi:". // RootPath += IScsiRootPathIdLen; - Length = (UINT8) (Length - IScsiRootPathIdLen); + Length = (UINT8)(Length - IScsiRootPathIdLen); - TmpStr = (CHAR8 *) AllocatePool (Length + 1); + TmpStr = (CHAR8 *)AllocatePool (Length + 1); if (TmpStr == NULL) { return EFI_OUT_OF_RESOURCES; } CopyMem (TmpStr, RootPath, Length); - TmpStr[Length] = '\0'; + TmpStr[Length] = '\0'; - Index = 0; - FieldIndex = RP_FIELD_IDX_SERVERNAME; + Index = 0; + FieldIndex = RP_FIELD_IDX_SERVERNAME; ZeroMem (&Fields[0], sizeof (Fields)); // @@ -88,7 +88,7 @@ IScsiDhcpExtractRootPath ( } if (Fields[FieldIndex].Str != NULL) { - Fields[FieldIndex].Len = (UINT8) AsciiStrLen (Fields[FieldIndex].Str); + Fields[FieldIndex].Len = (UINT8)AsciiStrLen (Fields[FieldIndex].Str); } } } @@ -101,15 +101,16 @@ IScsiDhcpExtractRootPath ( if ((Fields[RP_FIELD_IDX_SERVERNAME].Str == NULL) || (Fields[RP_FIELD_IDX_TARGETNAME].Str == NULL) || (Fields[RP_FIELD_IDX_PROTOCOL].Len > 1) - ) { - + ) + { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } + // // Get the IP address of the target. // - Field = &Fields[RP_FIELD_IDX_SERVERNAME]; + Field = &Fields[RP_FIELD_IDX_SERVERNAME]; if (ConfigNvData->IpMode < IP_MODE_AUTOCONFIG) { IpMode = ConfigNvData->IpMode; @@ -125,11 +126,12 @@ IScsiDhcpExtractRootPath ( if ((Field->Len + 2) > sizeof (ConfigNvData->TargetUrl)) { return EFI_INVALID_PARAMETER; } + CopyMem (&ConfigNvData->TargetUrl, Field->Str, Field->Len); ConfigNvData->TargetUrl[Field->Len + 1] = '\0'; } else { ConfigNvData->DnsMode = FALSE; - ZeroMem(ConfigNvData->TargetUrl, sizeof (ConfigNvData->TargetUrl)); + ZeroMem (ConfigNvData->TargetUrl, sizeof (ConfigNvData->TargetUrl)); Status = IScsiAsciiStrToIp (Field->Str, IpMode, &Ip); CopyMem (&ConfigNvData->TargetIp, &Ip, sizeof (EFI_IP_ADDRESS)); @@ -137,6 +139,7 @@ IScsiDhcpExtractRootPath ( goto ON_EXIT; } } + // // Check the protocol type. // @@ -145,15 +148,17 @@ IScsiDhcpExtractRootPath ( Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } + // // Get the port of the iSCSI target. // Field = &Fields[RP_FIELD_IDX_PORT]; if (Field->Str != NULL) { - ConfigNvData->TargetPort = (UINT16) AsciiStrDecimalToUintn (Field->Str); + ConfigNvData->TargetPort = (UINT16)AsciiStrDecimalToUintn (Field->Str); } else { ConfigNvData->TargetPort = ISCSI_WELL_KNOWN_PORT; } + // // Get the LUN. // @@ -166,6 +171,7 @@ IScsiDhcpExtractRootPath ( } else { ZeroMem (ConfigNvData->BootLun, sizeof (ConfigNvData->BootLun)); } + // // Get the target iSCSI Name. // @@ -175,6 +181,7 @@ IScsiDhcpExtractRootPath ( Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } + // // Validate the iSCSI name. // @@ -220,10 +227,10 @@ IScsiDhcpSelectOffer ( OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL ) { - EFI_STATUS Status; - UINT32 OptionCount; - EFI_DHCP4_PACKET_OPTION **OptionList; - UINT32 Index; + EFI_STATUS Status; + UINT32 OptionCount; + EFI_DHCP4_PACKET_OPTION **OptionList; + UINT32 Index; if ((Dhcp4Event != Dhcp4RcvdOffer) && (Dhcp4Event != Dhcp4SelectOffer)) { return EFI_SUCCESS; @@ -231,7 +238,7 @@ IScsiDhcpSelectOffer ( OptionCount = 0; - Status = This->Parse (This, Packet, &OptionCount, NULL); + Status = This->Parse (This, Packet, &OptionCount, NULL); if (Status != EFI_BUFFER_TOO_SMALL) { return EFI_NOT_READY; } @@ -253,9 +260,9 @@ IScsiDhcpSelectOffer ( } Status = IScsiDhcpExtractRootPath ( - (CHAR8 *) &OptionList[Index]->Data[0], + (CHAR8 *)&OptionList[Index]->Data[0], OptionList[Index]->Length, - (ISCSI_ATTEMPT_CONFIG_NVDATA *) Context + (ISCSI_ATTEMPT_CONFIG_NVDATA *)Context ); break; @@ -285,16 +292,16 @@ IScsiDhcpSelectOffer ( **/ EFI_STATUS IScsiParseDhcpAck ( - IN EFI_DHCP4_PROTOCOL *Dhcp4, - IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData + IN EFI_DHCP4_PROTOCOL *Dhcp4, + IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData ) { - EFI_STATUS Status; - EFI_DHCP4_MODE_DATA Dhcp4ModeData; - UINT32 OptionCount; - EFI_DHCP4_PACKET_OPTION **OptionList; - UINT32 Index; - ISCSI_SESSION_CONFIG_NVDATA *NvData; + EFI_STATUS Status; + EFI_DHCP4_MODE_DATA Dhcp4ModeData; + UINT32 OptionCount; + EFI_DHCP4_PACKET_OPTION **OptionList; + UINT32 Index; + ISCSI_SESSION_CONFIG_NVDATA *NvData; Status = Dhcp4->GetModeData (Dhcp4, &Dhcp4ModeData); if (EFI_ERROR (Status)) { @@ -314,7 +321,7 @@ IScsiParseDhcpAck ( OptionCount = 0; OptionList = NULL; - Status = Dhcp4->Parse (Dhcp4, Dhcp4ModeData.ReplyPacket, &OptionCount, OptionList); + Status = Dhcp4->Parse (Dhcp4, Dhcp4ModeData.ReplyPacket, &OptionCount, OptionList); if (Status != EFI_BUFFER_TOO_SMALL) { return EFI_DEVICE_ERROR; } @@ -335,11 +342,11 @@ IScsiParseDhcpAck ( // Get DNS server addresses and DHCP server address from this offer. // if (OptionList[Index]->OpCode == DHCP4_TAG_DNS_SERVER) { - if (((OptionList[Index]->Length & 0x3) != 0) || (OptionList[Index]->Length == 0)) { Status = EFI_INVALID_PARAMETER; break; } + // // Primary DNS server address. // @@ -377,32 +384,32 @@ IScsiParseDhcpAck ( **/ EFI_STATUS IScsiSetIp4Policy ( - IN EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2 + IN EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2 ) { - EFI_IP4_CONFIG2_POLICY Policy; - EFI_STATUS Status; - UINTN DataSize; + EFI_IP4_CONFIG2_POLICY Policy; + EFI_STATUS Status; + UINTN DataSize; DataSize = sizeof (EFI_IP4_CONFIG2_POLICY); - Status = Ip4Config2->GetData ( - Ip4Config2, - Ip4Config2DataTypePolicy, - &DataSize, - &Policy - ); + Status = Ip4Config2->GetData ( + Ip4Config2, + Ip4Config2DataTypePolicy, + &DataSize, + &Policy + ); if (EFI_ERROR (Status)) { return Status; } if (Policy != Ip4Config2PolicyStatic) { Policy = Ip4Config2PolicyStatic; - Status= Ip4Config2->SetData ( - Ip4Config2, - Ip4Config2DataTypePolicy, - sizeof (EFI_IP4_CONFIG2_POLICY), - &Policy - ); + Status = Ip4Config2->SetData ( + Ip4Config2, + Ip4Config2DataTypePolicy, + sizeof (EFI_IP4_CONFIG2_POLICY), + &Policy + ); if (EFI_ERROR (Status)) { return Status; } @@ -426,19 +433,19 @@ IScsiSetIp4Policy ( **/ EFI_STATUS IScsiDoDhcp ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData ) { - EFI_HANDLE Dhcp4Handle; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; - EFI_DHCP4_PROTOCOL *Dhcp4; - EFI_STATUS Status; - EFI_DHCP4_PACKET_OPTION *ParaList; - EFI_DHCP4_CONFIG_DATA Dhcp4ConfigData; - ISCSI_SESSION_CONFIG_NVDATA *NvData; - EFI_STATUS MediaStatus; + EFI_HANDLE Dhcp4Handle; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + EFI_DHCP4_PROTOCOL *Dhcp4; + EFI_STATUS Status; + EFI_DHCP4_PACKET_OPTION *ParaList; + EFI_DHCP4_CONFIG_DATA Dhcp4ConfigData; + ISCSI_SESSION_CONFIG_NVDATA *NvData; + EFI_STATUS MediaStatus; Dhcp4Handle = NULL; Ip4Config2 = NULL; @@ -450,7 +457,7 @@ IScsiDoDhcp ( // MediaStatus = EFI_SUCCESS; NetLibDetectMediaWaitTimeout (Controller, ISCSI_CHECK_MEDIA_GET_DHCP_WAITING_TIME, &MediaStatus); - if (MediaStatus!= EFI_SUCCESS) { + if (MediaStatus != EFI_SUCCESS) { AsciiPrint ("\n Error: Could not detect network connection.\n"); return EFI_NO_MEDIA; } @@ -462,7 +469,7 @@ IScsiDoDhcp ( // will not be in the right state for the iSCSI to start a new round D.O.R.A. // So, we need to switch its policy to static. // - Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **) &Ip4Config2); + Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **)&Ip4Config2); if (!EFI_ERROR (Status)) { Status = IScsiSetIp4Policy (Ip4Config2); if (EFI_ERROR (Status)) { @@ -486,7 +493,7 @@ IScsiDoDhcp ( Status = gBS->OpenProtocol ( Dhcp4Handle, &gEfiDhcp4ProtocolGuid, - (VOID **) &Dhcp4, + (VOID **)&Dhcp4, Image, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -495,7 +502,7 @@ IScsiDoDhcp ( goto ON_EXIT; } - NvData = &ConfigData->SessionConfigData; + NvData = &ConfigData->SessionConfigData; ParaList = AllocatePool (sizeof (EFI_DHCP4_PACKET_OPTION) + 3); if (ParaList == NULL) { @@ -507,7 +514,7 @@ IScsiDoDhcp ( // Ask the server to reply with Netmask, Router, DNS, and RootPath options. // ParaList->OpCode = DHCP4_TAG_PARA_LIST; - ParaList->Length = (UINT8) (NvData->TargetInfoFromDhcp ? 4 : 3); + ParaList->Length = (UINT8)(NvData->TargetInfoFromDhcp ? 4 : 3); ParaList->Data[0] = DHCP4_TAG_NETMASK; ParaList->Data[1] = DHCP4_TAG_ROUTER; ParaList->Data[2] = DHCP4_TAG_DNS_SERVER; @@ -534,6 +541,7 @@ IScsiDoDhcp ( if (EFI_ERROR (Status)) { goto ON_EXIT; } + // // Parse the ACK to get required information. // diff --git a/NetworkPkg/IScsiDxe/IScsiDhcp.h b/NetworkPkg/IScsiDxe/IScsiDhcp.h index 69b501d630..9a0d5d27e5 100644 --- a/NetworkPkg/IScsiDxe/IScsiDhcp.h +++ b/NetworkPkg/IScsiDxe/IScsiDhcp.h @@ -9,21 +9,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef _ISCSI_DHCP_H_ #define _ISCSI_DHCP_H_ -#define ISCSI_ROOT_PATH_ID "iscsi:" -#define ISCSI_ROOT_PATH_FIELD_DELIMITER ':' +#define ISCSI_ROOT_PATH_ID "iscsi:" +#define ISCSI_ROOT_PATH_FIELD_DELIMITER ':' -#define RP_FIELD_IDX_SERVERNAME 0 -#define RP_FIELD_IDX_PROTOCOL 1 -#define RP_FIELD_IDX_PORT 2 -#define RP_FIELD_IDX_LUN 3 -#define RP_FIELD_IDX_TARGETNAME 4 -#define RP_FIELD_IDX_MAX 5 +#define RP_FIELD_IDX_SERVERNAME 0 +#define RP_FIELD_IDX_PROTOCOL 1 +#define RP_FIELD_IDX_PORT 2 +#define RP_FIELD_IDX_LUN 3 +#define RP_FIELD_IDX_TARGETNAME 4 +#define RP_FIELD_IDX_MAX 5 typedef struct _ISCSI_ATTEMPT_CONFIG_NVDATA ISCSI_ATTEMPT_CONFIG_NVDATA; typedef struct _ISCSI_ROOT_PATH_FIELD { - CHAR8 *Str; - UINT8 Len; + CHAR8 *Str; + UINT8 Len; } ISCSI_ROOT_PATH_FIELD; /** @@ -41,9 +41,9 @@ typedef struct _ISCSI_ROOT_PATH_FIELD { **/ EFI_STATUS IScsiDoDhcp ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData ); #endif diff --git a/NetworkPkg/IScsiDxe/IScsiDhcp6.c b/NetworkPkg/IScsiDxe/IScsiDhcp6.c index 691650b733..8ca92b20d1 100644 --- a/NetworkPkg/IScsiDxe/IScsiDhcp6.c +++ b/NetworkPkg/IScsiDxe/IScsiDhcp6.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "IScsiImpl.h" - /** Extract the Root Path option and get the required target information from Boot File Uniform Resource Locator (URL) Option. @@ -29,47 +28,49 @@ EFI_STATUS IScsiDhcp6ExtractRootPath ( IN CHAR8 *RootPath, IN UINT16 Length, - IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData + IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData ) { - EFI_STATUS Status; - UINT16 IScsiRootPathIdLen; - CHAR8 *TmpStr; - ISCSI_ROOT_PATH_FIELD Fields[RP_FIELD_IDX_MAX]; - ISCSI_ROOT_PATH_FIELD *Field; - UINT32 FieldIndex; - UINT8 Index; - ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData; - EFI_IP_ADDRESS Ip; - UINT8 IpMode; - - ConfigNvData = &ConfigData->SessionConfigData; + EFI_STATUS Status; + UINT16 IScsiRootPathIdLen; + CHAR8 *TmpStr; + ISCSI_ROOT_PATH_FIELD Fields[RP_FIELD_IDX_MAX]; + ISCSI_ROOT_PATH_FIELD *Field; + UINT32 FieldIndex; + UINT8 Index; + ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData; + EFI_IP_ADDRESS Ip; + UINT8 IpMode; + + ConfigNvData = &ConfigData->SessionConfigData; ConfigNvData->DnsMode = FALSE; // // "iscsi:"":"":"":"":" // - IScsiRootPathIdLen = (UINT16) AsciiStrLen (ISCSI_ROOT_PATH_ID); + IScsiRootPathIdLen = (UINT16)AsciiStrLen (ISCSI_ROOT_PATH_ID); if ((Length <= IScsiRootPathIdLen) || - (CompareMem (RootPath, ISCSI_ROOT_PATH_ID, IScsiRootPathIdLen) != 0)) { + (CompareMem (RootPath, ISCSI_ROOT_PATH_ID, IScsiRootPathIdLen) != 0)) + { return EFI_NOT_FOUND; } + // // Skip the iSCSI RootPath ID "iscsi:". // RootPath = RootPath + IScsiRootPathIdLen; - Length = (UINT16) (Length - IScsiRootPathIdLen); + Length = (UINT16)(Length - IScsiRootPathIdLen); - TmpStr = (CHAR8 *) AllocatePool (Length + 1); + TmpStr = (CHAR8 *)AllocatePool (Length + 1); if (TmpStr == NULL) { return EFI_OUT_OF_RESOURCES; } CopyMem (TmpStr, RootPath, Length); - TmpStr[Length] = '\0'; + TmpStr[Length] = '\0'; - Index = 0; - FieldIndex = 0; + Index = 0; + FieldIndex = 0; ZeroMem (&Fields[0], sizeof (Fields)); // @@ -87,7 +88,7 @@ IScsiDhcp6ExtractRootPath ( Fields[RP_FIELD_IDX_SERVERNAME].Str = &TmpStr[Index]; if (!ConfigNvData->DnsMode) { - while ((TmpStr[Index] != ISCSI_ROOT_PATH_ADDR_END_DELIMITER)&& (Index < Length)) { + while ((TmpStr[Index] != ISCSI_ROOT_PATH_ADDR_END_DELIMITER) && (Index < Length)) { Index++; } @@ -95,25 +96,25 @@ IScsiDhcp6ExtractRootPath ( // Skip ']' and ':'. // TmpStr[Index] = '\0'; - Index += 2; + Index += 2; } else { while ((TmpStr[Index] != ISCSI_ROOT_PATH_FIELD_DELIMITER) && (Index < Length)) { Index++; } + // // Skip ':'. // TmpStr[Index] = '\0'; - Index += 1; + Index += 1; } - Fields[RP_FIELD_IDX_SERVERNAME].Len = (UINT8) AsciiStrLen (Fields[RP_FIELD_IDX_SERVERNAME].Str); + Fields[RP_FIELD_IDX_SERVERNAME].Len = (UINT8)AsciiStrLen (Fields[RP_FIELD_IDX_SERVERNAME].Str); // // Extract others fields in the Root Path option string. // for (FieldIndex = 1; (FieldIndex < RP_FIELD_IDX_MAX) && (Index < Length); FieldIndex++) { - if (TmpStr[Index] != ISCSI_ROOT_PATH_FIELD_DELIMITER) { Fields[FieldIndex].Str = &TmpStr[Index]; } @@ -129,7 +130,7 @@ IScsiDhcp6ExtractRootPath ( } if (Fields[FieldIndex].Str != NULL) { - Fields[FieldIndex].Len = (UINT8) AsciiStrLen (Fields[FieldIndex].Str); + Fields[FieldIndex].Len = (UINT8)AsciiStrLen (Fields[FieldIndex].Str); } } } @@ -142,15 +143,16 @@ IScsiDhcp6ExtractRootPath ( if ((Fields[RP_FIELD_IDX_SERVERNAME].Str == NULL) || (Fields[RP_FIELD_IDX_TARGETNAME].Str == NULL) || (Fields[RP_FIELD_IDX_PROTOCOL].Len > 1) - ) { - + ) + { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } + // // Get the IP address of the target. // - Field = &Fields[RP_FIELD_IDX_SERVERNAME]; + Field = &Fields[RP_FIELD_IDX_SERVERNAME]; if (ConfigNvData->IpMode < IP_MODE_AUTOCONFIG) { IpMode = ConfigNvData->IpMode; } else { @@ -164,10 +166,11 @@ IScsiDhcp6ExtractRootPath ( if ((Field->Len + 2) > sizeof (ConfigNvData->TargetUrl)) { return EFI_INVALID_PARAMETER; } + CopyMem (&ConfigNvData->TargetUrl, Field->Str, Field->Len); ConfigNvData->TargetUrl[Field->Len + 1] = '\0'; } else { - ZeroMem(&ConfigNvData->TargetUrl, sizeof (ConfigNvData->TargetUrl)); + ZeroMem (&ConfigNvData->TargetUrl, sizeof (ConfigNvData->TargetUrl)); Status = IScsiAsciiStrToIp (Field->Str, IpMode, &Ip); CopyMem (&ConfigNvData->TargetIp, &Ip, sizeof (EFI_IP_ADDRESS)); @@ -184,15 +187,17 @@ IScsiDhcp6ExtractRootPath ( Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } + // // Get the port of the iSCSI target. // Field = &Fields[RP_FIELD_IDX_PORT]; if (Field->Str != NULL) { - ConfigNvData->TargetPort = (UINT16) AsciiStrDecimalToUintn (Field->Str); + ConfigNvData->TargetPort = (UINT16)AsciiStrDecimalToUintn (Field->Str); } else { ConfigNvData->TargetPort = ISCSI_WELL_KNOWN_PORT; } + // // Get the LUN. // @@ -205,6 +210,7 @@ IScsiDhcp6ExtractRootPath ( } else { ZeroMem (ConfigNvData->BootLun, sizeof (ConfigNvData->BootLun)); } + // // Get the target iSCSI Name. // @@ -214,6 +220,7 @@ IScsiDhcp6ExtractRootPath ( Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } + // // Validate the iSCSI name. // @@ -258,23 +265,23 @@ ON_EXIT: EFI_STATUS EFIAPI IScsiDhcp6ParseReply ( - IN EFI_DHCP6_PROTOCOL *This, - IN VOID *Context, - IN EFI_DHCP6_PACKET *Packet + IN EFI_DHCP6_PROTOCOL *This, + IN VOID *Context, + IN EFI_DHCP6_PACKET *Packet ) { - EFI_STATUS Status; - UINT32 Index; - UINT32 OptionCount; - EFI_DHCP6_PACKET_OPTION *BootFileOpt; - EFI_DHCP6_PACKET_OPTION **OptionList; - ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData; - UINT16 ParaLen; + EFI_STATUS Status; + UINT32 Index; + UINT32 OptionCount; + EFI_DHCP6_PACKET_OPTION *BootFileOpt; + EFI_DHCP6_PACKET_OPTION **OptionList; + ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData; + UINT16 ParaLen; OptionCount = 0; BootFileOpt = NULL; - Status = This->Parse (This, Packet, &OptionCount, NULL); + Status = This->Parse (This, Packet, &OptionCount, NULL); if (Status != EFI_BUFFER_TOO_SMALL) { return EFI_NOT_READY; } @@ -290,7 +297,7 @@ IScsiDhcp6ParseReply ( goto Exit; } - ConfigData = (ISCSI_ATTEMPT_CONFIG_NVDATA *) Context; + ConfigData = (ISCSI_ATTEMPT_CONFIG_NVDATA *)Context; for (Index = 0; Index < OptionCount; Index++) { OptionList[Index]->OpCode = NTOHS (OptionList[Index]->OpCode); @@ -300,11 +307,11 @@ IScsiDhcp6ParseReply ( // Get DNS server addresses from this reply packet. // if (OptionList[Index]->OpCode == DHCP6_OPT_DNS_SERVERS) { - if (((OptionList[Index]->OpLen & 0xf) != 0) || (OptionList[Index]->OpLen == 0)) { Status = EFI_UNSUPPORTED; goto Exit; } + // // Primary DNS server address. // @@ -316,7 +323,6 @@ IScsiDhcp6ParseReply ( // CopyMem (&ConfigData->SecondaryDns, &OptionList[Index]->Data[16], sizeof (EFI_IPv6_ADDRESS)); } - } else if (OptionList[Index]->OpCode == DHCP6_OPT_BOOT_FILE_URL) { // // The server sends this option to inform the client about an URL to a boot file. @@ -330,6 +336,7 @@ IScsiDhcp6ParseReply ( Status = EFI_UNSUPPORTED; goto Exit; } + // // Check param-len 1, should be 16 bytes. // @@ -352,7 +359,7 @@ IScsiDhcp6ParseReply ( // Get iSCSI root path from Boot File Uniform Resource Locator (URL) Option // Status = IScsiDhcp6ExtractRootPath ( - (CHAR8 *) BootFileOpt->Data, + (CHAR8 *)BootFileOpt->Data, BootFileOpt->OpLen, ConfigData ); @@ -363,7 +370,6 @@ Exit: return Status; } - /** Parse the DHCP ACK to get the address configuration and DNS information. @@ -383,9 +389,9 @@ Exit: **/ EFI_STATUS IScsiDoDhcp6 ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData ) { EFI_HANDLE Dhcp6Handle; @@ -435,7 +441,7 @@ IScsiDoDhcp6 ( Status = gBS->OpenProtocol ( Dhcp6Handle, &gEfiDhcp6ProtocolGuid, - (VOID **) &Dhcp6, + (VOID **)&Dhcp6, Image, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -493,7 +499,6 @@ IScsiDoDhcp6 ( } do { - TimerStatus = gBS->CheckEvent (Timer); if (!EFI_ERROR (TimerStatus)) { @@ -509,9 +514,7 @@ IScsiDoDhcp6 ( ConfigData ); } - } while (TimerStatus == EFI_NOT_READY); - } ON_EXIT: @@ -542,4 +545,3 @@ ON_EXIT: return Status; } - diff --git a/NetworkPkg/IScsiDxe/IScsiDhcp6.h b/NetworkPkg/IScsiDxe/IScsiDhcp6.h index 666338c7d2..d086a69459 100644 --- a/NetworkPkg/IScsiDxe/IScsiDhcp6.h +++ b/NetworkPkg/IScsiDxe/IScsiDhcp6.h @@ -9,11 +9,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef _ISCSI_DHCP6_H_ #define _ISCSI_DHCP6_H_ -#define ISCSI_ROOT_PATH_ID "iscsi:" -#define ISCSI_ROOT_PATH_FIELD_DELIMITER ':' -#define ISCSI_ROOT_PATH_ADDR_START_DELIMITER '[' -#define ISCSI_ROOT_PATH_ADDR_END_DELIMITER ']' - +#define ISCSI_ROOT_PATH_ID "iscsi:" +#define ISCSI_ROOT_PATH_FIELD_DELIMITER ':' +#define ISCSI_ROOT_PATH_ADDR_START_DELIMITER '[' +#define ISCSI_ROOT_PATH_ADDR_END_DELIMITER ']' /** Extract the Root Path option and get the required target information from @@ -35,7 +34,7 @@ EFI_STATUS IScsiDhcp6ExtractRootPath ( IN CHAR8 *RootPath, IN UINT16 Length, - IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData + IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData ); /** @@ -57,9 +56,9 @@ IScsiDhcp6ExtractRootPath ( **/ EFI_STATUS IScsiDoDhcp6 ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN OUT ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData ); #endif diff --git a/NetworkPkg/IScsiDxe/IScsiDns.c b/NetworkPkg/IScsiDxe/IScsiDns.c index f407c2bbc4..7725dcbc18 100644 --- a/NetworkPkg/IScsiDxe/IScsiDns.c +++ b/NetworkPkg/IScsiDxe/IScsiDns.c @@ -18,11 +18,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent VOID EFIAPI IScsiCommonNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - *((BOOLEAN *) Context) = TRUE; + *((BOOLEAN *)Context) = TRUE; } /** @@ -40,22 +40,22 @@ IScsiCommonNotify ( **/ EFI_STATUS IScsiDns4 ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN OUT ISCSI_SESSION_CONFIG_NVDATA *NvData + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN OUT ISCSI_SESSION_CONFIG_NVDATA *NvData ) { - EFI_STATUS Status; - EFI_DNS4_PROTOCOL *Dns4; - EFI_DNS4_CONFIG_DATA Dns4CfgData; - EFI_DNS4_COMPLETION_TOKEN Token; - BOOLEAN IsDone; - EFI_HANDLE Dns4Handle; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; - EFI_IPv4_ADDRESS *DnsServerList; - UINTN DnsServerListCount; - UINTN DataSize; - CHAR16 *HostName; + EFI_STATUS Status; + EFI_DNS4_PROTOCOL *Dns4; + EFI_DNS4_CONFIG_DATA Dns4CfgData; + EFI_DNS4_COMPLETION_TOKEN Token; + BOOLEAN IsDone; + EFI_HANDLE Dns4Handle; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + EFI_IPv4_ADDRESS *DnsServerList; + UINTN DnsServerListCount; + UINTN DataSize; + CHAR16 *HostName; DnsServerList = NULL; DnsServerListCount = 0; @@ -66,7 +66,7 @@ IScsiDns4 ( // // Get DNS server list from EFI IPv4 Configuration II protocol. // - Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **) &Ip4Config2); + Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **)&Ip4Config2); if (!EFI_ERROR (Status)) { // // Get the required size. @@ -79,7 +79,7 @@ IScsiDns4 ( return EFI_OUT_OF_RESOURCES; } - Status = Ip4Config2->GetData (Ip4Config2, Ip4Config2DataTypeDnsServer, &DataSize, DnsServerList); + Status = Ip4Config2->GetData (Ip4Config2, Ip4Config2DataTypeDnsServer, &DataSize, DnsServerList); if (EFI_ERROR (Status)) { FreePool (DnsServerList); DnsServerList = NULL; @@ -89,7 +89,6 @@ IScsiDns4 ( } } - // // Create a DNS child instance and get the protocol. // @@ -106,7 +105,7 @@ IScsiDns4 ( Status = gBS->OpenProtocol ( Dns4Handle, &gEfiDns4ProtocolGuid, - (VOID **) &Dns4, + (VOID **)&Dns4, Image, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -124,11 +123,11 @@ IScsiDns4 ( Dns4CfgData.EnableDnsCache = TRUE; IP4_COPY_ADDRESS (&Dns4CfgData.StationIp, &NvData->LocalIp); IP4_COPY_ADDRESS (&Dns4CfgData.SubnetMask, &NvData->SubnetMask); - Dns4CfgData.Protocol = EFI_IP_PROTO_UDP; - Status = Dns4->Configure ( - Dns4, - &Dns4CfgData - ); + Dns4CfgData.Protocol = EFI_IP_PROTO_UDP; + Status = Dns4->Configure ( + Dns4, + &Dns4CfgData + ); if (EFI_ERROR (Status)) { goto Exit; } @@ -154,7 +153,7 @@ IScsiDns4 ( Token.Status = EFI_NOT_READY; IsDone = FALSE; - HostName = (CHAR16 *) AllocateZeroPool (ISCSI_NAME_MAX_SIZE); + HostName = (CHAR16 *)AllocateZeroPool (ISCSI_NAME_MAX_SIZE); if (HostName == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -183,10 +182,12 @@ IScsiDns4 ( Status = EFI_DEVICE_ERROR; goto Exit; } - if (Token.RspData.H2AData->IpCount == 0 || Token.RspData.H2AData->IpList == NULL) { + + if ((Token.RspData.H2AData->IpCount == 0) || (Token.RspData.H2AData->IpList == NULL)) { Status = EFI_DEVICE_ERROR; goto Exit; } + // // We just return the first IP address from DNS protocol. // @@ -199,10 +200,12 @@ Exit: if (Token.Event != NULL) { gBS->CloseEvent (Token.Event); } + if (Token.RspData.H2AData != NULL) { if (Token.RspData.H2AData->IpList != NULL) { FreePool (Token.RspData.H2AData->IpList); } + FreePool (Token.RspData.H2AData); } @@ -244,39 +247,39 @@ Exit: **/ EFI_STATUS IScsiDns6 ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN OUT ISCSI_SESSION_CONFIG_NVDATA *NvData + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN OUT ISCSI_SESSION_CONFIG_NVDATA *NvData ) { - EFI_STATUS Status; - EFI_DNS6_PROTOCOL *Dns6; - EFI_DNS6_CONFIG_DATA Dns6ConfigData; - EFI_DNS6_COMPLETION_TOKEN Token; - EFI_HANDLE Dns6Handle; - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; - EFI_IPv6_ADDRESS *DnsServerList; - UINTN DnsServerListCount; - UINTN DataSize; - BOOLEAN IsDone; - CHAR16 *HostName; - - DnsServerList = NULL; - DnsServerListCount = 0; - Dns6 = NULL; - Dns6Handle = NULL; + EFI_STATUS Status; + EFI_DNS6_PROTOCOL *Dns6; + EFI_DNS6_CONFIG_DATA Dns6ConfigData; + EFI_DNS6_COMPLETION_TOKEN Token; + EFI_HANDLE Dns6Handle; + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + EFI_IPv6_ADDRESS *DnsServerList; + UINTN DnsServerListCount; + UINTN DataSize; + BOOLEAN IsDone; + CHAR16 *HostName; + + DnsServerList = NULL; + DnsServerListCount = 0; + Dns6 = NULL; + Dns6Handle = NULL; ZeroMem (&Token, sizeof (EFI_DNS6_COMPLETION_TOKEN)); // // Get DNS server list from EFI IPv6 Configuration protocol. // - Status = gBS->HandleProtocol (Controller, &gEfiIp6ConfigProtocolGuid, (VOID **) &Ip6Config); + Status = gBS->HandleProtocol (Controller, &gEfiIp6ConfigProtocolGuid, (VOID **)&Ip6Config); if (!EFI_ERROR (Status)) { // // Get the required size. // DataSize = 0; - Status = Ip6Config->GetData (Ip6Config, Ip6ConfigDataTypeDnsServer, &DataSize, NULL); + Status = Ip6Config->GetData (Ip6Config, Ip6ConfigDataTypeDnsServer, &DataSize, NULL); if (Status == EFI_BUFFER_TOO_SMALL) { DnsServerList = AllocatePool (DataSize); if (DnsServerList == NULL) { @@ -309,7 +312,7 @@ IScsiDns6 ( Status = gBS->OpenProtocol ( Dns6Handle, &gEfiDns6ProtocolGuid, - (VOID **) &Dns6, + (VOID **)&Dns6, Image, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -326,10 +329,10 @@ IScsiDns6 ( Dns6ConfigData.DnsServerList = DnsServerList; Dns6ConfigData.EnableDnsCache = TRUE; Dns6ConfigData.Protocol = EFI_IP_PROTO_UDP; - Status = Dns6->Configure ( - Dns6, - &Dns6ConfigData - ); + Status = Dns6->Configure ( + Dns6, + &Dns6ConfigData + ); if (EFI_ERROR (Status)) { goto Exit; } @@ -353,7 +356,7 @@ IScsiDns6 ( // // Start asynchronous name resolution. // - HostName = (CHAR16 *) AllocateZeroPool (ISCSI_NAME_MAX_SIZE); + HostName = (CHAR16 *)AllocateZeroPool (ISCSI_NAME_MAX_SIZE); if (HostName == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -381,10 +384,12 @@ IScsiDns6 ( Status = EFI_DEVICE_ERROR; goto Exit; } - if (Token.RspData.H2AData->IpCount == 0 || Token.RspData.H2AData->IpList == NULL) { + + if ((Token.RspData.H2AData->IpCount == 0) || (Token.RspData.H2AData->IpList == NULL)) { Status = EFI_DEVICE_ERROR; goto Exit; } + // // We just return the first IPv6 address from DNS protocol. // @@ -397,10 +402,12 @@ Exit: if (Token.Event != NULL) { gBS->CloseEvent (Token.Event); } + if (Token.RspData.H2AData != NULL) { if (Token.RspData.H2AData->IpList != NULL) { FreePool (Token.RspData.H2AData->IpList); } + FreePool (Token.RspData.H2AData); } @@ -426,4 +433,3 @@ Exit: return Status; } - diff --git a/NetworkPkg/IScsiDxe/IScsiDns.h b/NetworkPkg/IScsiDxe/IScsiDns.h index 2e02309745..07efc6c6f9 100644 --- a/NetworkPkg/IScsiDxe/IScsiDns.h +++ b/NetworkPkg/IScsiDxe/IScsiDns.h @@ -25,9 +25,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS IScsiDns4 ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN OUT ISCSI_SESSION_CONFIG_NVDATA *NvData + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN OUT ISCSI_SESSION_CONFIG_NVDATA *NvData ); /** @@ -45,9 +45,9 @@ IScsiDns4 ( **/ EFI_STATUS IScsiDns6 ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN OUT ISCSI_SESSION_CONFIG_NVDATA *NvData + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN OUT ISCSI_SESSION_CONFIG_NVDATA *NvData ); #endif diff --git a/NetworkPkg/IScsiDxe/IScsiDriver.c b/NetworkPkg/IScsiDxe/IScsiDriver.c index 485c929721..ba4abd4ef5 100644 --- a/NetworkPkg/IScsiDxe/IScsiDriver.c +++ b/NetworkPkg/IScsiDxe/IScsiDriver.c @@ -11,7 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "IScsiImpl.h" -EFI_DRIVER_BINDING_PROTOCOL gIScsiIp4DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gIScsiIp4DriverBinding = { IScsiIp4DriverBindingSupported, IScsiIp4DriverBindingStart, IScsiIp4DriverBindingStop, @@ -20,7 +20,7 @@ EFI_DRIVER_BINDING_PROTOCOL gIScsiIp4DriverBinding = { NULL }; -EFI_DRIVER_BINDING_PROTOCOL gIScsiIp6DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gIScsiIp6DriverBinding = { IScsiIp6DriverBindingSupported, IScsiIp6DriverBindingStart, IScsiIp6DriverBindingStop, @@ -29,9 +29,9 @@ EFI_DRIVER_BINDING_PROTOCOL gIScsiIp6DriverBinding = { NULL }; -EFI_GUID gIScsiV4PrivateGuid = ISCSI_V4_PRIVATE_GUID; -EFI_GUID gIScsiV6PrivateGuid = ISCSI_V6_PRIVATE_GUID; -ISCSI_PRIVATE_DATA *mPrivate = NULL; +EFI_GUID gIScsiV4PrivateGuid = ISCSI_V4_PRIVATE_GUID; +EFI_GUID gIScsiV6PrivateGuid = ISCSI_V6_PRIVATE_GUID; +ISCSI_PRIVATE_DATA *mPrivate = NULL; /** Tests to see if this driver supports the RemainingDevicePath. @@ -50,7 +50,7 @@ ISCSI_PRIVATE_DATA *mPrivate = NULL; **/ EFI_STATUS IScsiIsDevicePathSupported ( - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { EFI_DEVICE_PATH_PROTOCOL *CurrentDevicePath; @@ -85,34 +85,34 @@ IScsiCheckAip ( VOID ) { - UINTN AipHandleCount; - EFI_HANDLE *AipHandleBuffer; - UINTN AipIndex; - EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; - EFI_EXT_SCSI_PASS_THRU_PROTOCOL *ExtScsiPassThru; - EFI_GUID *InfoTypesBuffer; - UINTN InfoTypeBufferCount; - UINTN TypeIndex; - VOID *InfoBlock; - UINTN InfoBlockSize; - BOOLEAN Supported; - EFI_ADAPTER_INFO_NETWORK_BOOT *NetworkBoot; - EFI_STATUS Status; - UINT8 NetworkBootPolicy; + UINTN AipHandleCount; + EFI_HANDLE *AipHandleBuffer; + UINTN AipIndex; + EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; + EFI_EXT_SCSI_PASS_THRU_PROTOCOL *ExtScsiPassThru; + EFI_GUID *InfoTypesBuffer; + UINTN InfoTypeBufferCount; + UINTN TypeIndex; + VOID *InfoBlock; + UINTN InfoBlockSize; + BOOLEAN Supported; + EFI_ADAPTER_INFO_NETWORK_BOOT *NetworkBoot; + EFI_STATUS Status; + UINT8 NetworkBootPolicy; // // Check any AIP instances exist in system. // AipHandleCount = 0; AipHandleBuffer = NULL; - Status = gBS->LocateHandleBuffer ( - ByProtocol, - &gEfiAdapterInformationProtocolGuid, - NULL, - &AipHandleCount, - &AipHandleBuffer - ); - if (EFI_ERROR (Status) || AipHandleCount == 0) { + Status = gBS->LocateHandleBuffer ( + ByProtocol, + &gEfiAdapterInformationProtocolGuid, + NULL, + &AipHandleCount, + &AipHandleBuffer + ); + if (EFI_ERROR (Status) || (AipHandleCount == 0)) { return EFI_NOT_FOUND; } @@ -124,7 +124,7 @@ IScsiCheckAip ( Status = gBS->HandleProtocol ( AipHandleBuffer[AipIndex], &gEfiAdapterInformationProtocolGuid, - (VOID *) &Aip + (VOID *)&Aip ); ASSERT_EFI_ERROR (Status); ASSERT (Aip != NULL); @@ -132,18 +132,19 @@ IScsiCheckAip ( Status = gBS->HandleProtocol ( AipHandleBuffer[AipIndex], &gEfiExtScsiPassThruProtocolGuid, - (VOID *) &ExtScsiPassThru + (VOID *)&ExtScsiPassThru ); - if (EFI_ERROR (Status) || ExtScsiPassThru == NULL) { + if (EFI_ERROR (Status) || (ExtScsiPassThru == NULL)) { continue; } InfoTypesBuffer = NULL; InfoTypeBufferCount = 0; - Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); - if (EFI_ERROR (Status) || InfoTypesBuffer == NULL) { + Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); + if (EFI_ERROR (Status) || (InfoTypesBuffer == NULL)) { continue; } + // // Check whether the AIP instance has Network boot information block. // @@ -165,33 +166,35 @@ IScsiCheckAip ( // InfoBlock = NULL; InfoBlockSize = 0; - Status = Aip->GetInformation (Aip, &gEfiAdapterInfoNetworkBootGuid, &InfoBlock, &InfoBlockSize); - if (EFI_ERROR (Status) || InfoBlock == NULL) { + Status = Aip->GetInformation (Aip, &gEfiAdapterInfoNetworkBootGuid, &InfoBlock, &InfoBlockSize); + if (EFI_ERROR (Status) || (InfoBlock == NULL)) { continue; } // // Check whether the network boot policy matches. // - NetworkBoot = (EFI_ADAPTER_INFO_NETWORK_BOOT *) InfoBlock; + NetworkBoot = (EFI_ADAPTER_INFO_NETWORK_BOOT *)InfoBlock; NetworkBootPolicy = PcdGet8 (PcdIScsiAIPNetworkBootPolicy); if (NetworkBootPolicy == STOP_UEFI_ISCSI_IF_HBA_INSTALL_AIP) { Status = EFI_SUCCESS; goto Exit; } - if (((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_SUPPORT_IP4) != 0 && + + if ((((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_SUPPORT_IP4) != 0) && !NetworkBoot->iScsiIpv4BootCapablity) || - ((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_SUPPORT_IP6) != 0 && + (((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_SUPPORT_IP6) != 0) && !NetworkBoot->iScsiIpv6BootCapablity) || - ((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_SUPPORT_OFFLOAD) != 0 && + (((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_SUPPORT_OFFLOAD) != 0) && !NetworkBoot->OffloadCapability) || - ((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_SUPPORT_MPIO) != 0 && + (((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_SUPPORT_MPIO) != 0) && !NetworkBoot->iScsiMpioCapability) || - ((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_CONFIGURED_IP4) != 0 && + (((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_CONFIGURED_IP4) != 0) && !NetworkBoot->iScsiIpv4Boot) || - ((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_CONFIGURED_IP6) != 0 && - !NetworkBoot->iScsiIpv6Boot)) { + (((NetworkBootPolicy & STOP_UEFI_ISCSI_IF_AIP_CONFIGURED_IP6) != 0) && + !NetworkBoot->iScsiIpv6Boot)) + { FreePool (InfoBlock); continue; } @@ -206,9 +209,11 @@ Exit: if (InfoBlock != NULL) { FreePool (InfoBlock); } + if (AipHandleBuffer != NULL) { FreePool (AipHandleBuffer); } + return Status; } @@ -246,23 +251,22 @@ IScsiSupported ( IN UINT8 IpVersion ) { - EFI_STATUS Status; - EFI_GUID *IScsiServiceBindingGuid; - EFI_GUID *TcpServiceBindingGuid; - EFI_GUID *DhcpServiceBindingGuid; - EFI_GUID *DnsServiceBindingGuid; + EFI_STATUS Status; + EFI_GUID *IScsiServiceBindingGuid; + EFI_GUID *TcpServiceBindingGuid; + EFI_GUID *DhcpServiceBindingGuid; + EFI_GUID *DnsServiceBindingGuid; if (IpVersion == IP_VERSION_4) { - IScsiServiceBindingGuid = &gIScsiV4PrivateGuid; - TcpServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid; - DhcpServiceBindingGuid = &gEfiDhcp4ServiceBindingProtocolGuid; - DnsServiceBindingGuid = &gEfiDns4ServiceBindingProtocolGuid; - + IScsiServiceBindingGuid = &gIScsiV4PrivateGuid; + TcpServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid; + DhcpServiceBindingGuid = &gEfiDhcp4ServiceBindingProtocolGuid; + DnsServiceBindingGuid = &gEfiDns4ServiceBindingProtocolGuid; } else { - IScsiServiceBindingGuid = &gIScsiV6PrivateGuid; - TcpServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid; - DhcpServiceBindingGuid = &gEfiDhcp6ServiceBindingProtocolGuid; - DnsServiceBindingGuid = &gEfiDns6ServiceBindingProtocolGuid; + IScsiServiceBindingGuid = &gIScsiV6PrivateGuid; + TcpServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid; + DhcpServiceBindingGuid = &gEfiDhcp6ServiceBindingProtocolGuid; + DnsServiceBindingGuid = &gEfiDns6ServiceBindingProtocolGuid; } Status = gBS->OpenProtocol ( @@ -325,7 +329,6 @@ IScsiSupported ( return EFI_SUCCESS; } - /** Start to manage the controller. This is the worker function for IScsiIp4(6)DriverBindingStart. @@ -347,33 +350,33 @@ IScsiSupported ( **/ EFI_STATUS IScsiStart ( - IN EFI_HANDLE Image, - IN EFI_HANDLE ControllerHandle, - IN UINT8 IpVersion + IN EFI_HANDLE Image, + IN EFI_HANDLE ControllerHandle, + IN UINT8 IpVersion ) { - EFI_STATUS Status; - ISCSI_DRIVER_DATA *Private; - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - ISCSI_SESSION *Session; - UINT8 Index; - EFI_EXT_SCSI_PASS_THRU_PROTOCOL *ExistIScsiExtScsiPassThru; - ISCSI_DRIVER_DATA *ExistPrivate; - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - UINT8 BootSelected; - EFI_HANDLE *HandleBuffer; - UINTN NumberOfHandles; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - EFI_GUID *IScsiPrivateGuid; - EFI_GUID *TcpServiceBindingGuid; - BOOLEAN NeedUpdate; - VOID *Interface; - EFI_GUID *ProtocolGuid; - UINT8 NetworkBootPolicy; - ISCSI_SESSION_CONFIG_NVDATA *NvData; + EFI_STATUS Status; + ISCSI_DRIVER_DATA *Private; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + ISCSI_SESSION *Session; + UINT8 Index; + EFI_EXT_SCSI_PASS_THRU_PROTOCOL *ExistIScsiExtScsiPassThru; + ISCSI_DRIVER_DATA *ExistPrivate; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + UINT8 BootSelected; + EFI_HANDLE *HandleBuffer; + UINTN NumberOfHandles; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + EFI_GUID *IScsiPrivateGuid; + EFI_GUID *TcpServiceBindingGuid; + BOOLEAN NeedUpdate; + VOID *Interface; + EFI_GUID *ProtocolGuid; + UINT8 NetworkBootPolicy; + ISCSI_SESSION_CONFIG_NVDATA *NvData; // // Test to see if iSCSI driver supports the given controller. @@ -518,7 +521,7 @@ IScsiStart ( if (mPrivate->OneSessionEstablished && mPrivate->EnableMpio) { AttemptConfigData = NULL; NET_LIST_FOR_EACH (Entry, &mPrivate->AttemptConfigs) { - AttemptConfigData = NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA, Link); + AttemptConfigData = NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA, Link); if (AttemptConfigData->SessionConfigData.Enabled == ISCSI_ENABLED_FOR_MPIO) { break; } @@ -558,7 +561,7 @@ IScsiStart ( Status = gBS->HandleProtocol ( HandleBuffer[Index], &gEfiDevicePathProtocolGuid, - (VOID **) &DevicePath + (VOID **)&DevicePath ); if (EFI_ERROR (Status)) { continue; @@ -572,7 +575,7 @@ IScsiStart ( Status = gBS->HandleProtocol ( HandleBuffer[Index], &gEfiExtScsiPassThruProtocolGuid, - (VOID **) &ExistIScsiExtScsiPassThru + (VOID **)&ExistIScsiExtScsiPassThru ); ASSERT_EFI_ERROR (Status); break; @@ -622,9 +625,10 @@ IScsiStart ( // Don't process the attempt that does not associate with the current NIC or // this attempt is disabled or established. // - if (AttemptConfigData->NicIndex != mPrivate->CurrentNic || - AttemptConfigData->SessionConfigData.Enabled == ISCSI_DISABLED || - AttemptConfigData->ValidPath) { + if ((AttemptConfigData->NicIndex != mPrivate->CurrentNic) || + (AttemptConfigData->SessionConfigData.Enabled == ISCSI_DISABLED) || + AttemptConfigData->ValidPath) + { continue; } @@ -633,9 +637,10 @@ IScsiStart ( // In default single path mode, don't process attempts configured for multipath. // if ((mPrivate->EnableMpio && - AttemptConfigData->SessionConfigData.Enabled != ISCSI_ENABLED_FOR_MPIO) || + (AttemptConfigData->SessionConfigData.Enabled != ISCSI_ENABLED_FOR_MPIO)) || (!mPrivate->EnableMpio && - AttemptConfigData->SessionConfigData.Enabled != ISCSI_ENABLED)) { + (AttemptConfigData->SessionConfigData.Enabled != ISCSI_ENABLED))) + { continue; } @@ -643,18 +648,21 @@ IScsiStart ( // Don't process the attempt that fails to get the init/target information from DHCP. // if (AttemptConfigData->SessionConfigData.InitiatorInfoFromDhcp && - !AttemptConfigData->DhcpSuccess) { - if (!mPrivate->EnableMpio && mPrivate->ValidSinglePathCount > 0) { + !AttemptConfigData->DhcpSuccess) + { + if (!mPrivate->EnableMpio && (mPrivate->ValidSinglePathCount > 0)) { mPrivate->ValidSinglePathCount--; } + continue; } // // Don't process the autoconfigure path if it is already established. // - if (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG && - AttemptConfigData->AutoConfigureSuccess) { + if ((AttemptConfigData->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG) && + AttemptConfigData->AutoConfigureSuccess) + { continue; } @@ -665,16 +673,20 @@ IScsiStart ( if (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_IP6) { continue; } - if (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG && - AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6) { + + if ((AttemptConfigData->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG) && + (AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6)) + { continue; } } else { if (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_IP4) { continue; } - if (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG && - AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP4) { + + if ((AttemptConfigData->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG) && + (AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP4)) + { continue; } } @@ -682,7 +694,7 @@ IScsiStart ( // // Fill in the Session and init it. // - Session = (ISCSI_SESSION *) AllocateZeroPool (sizeof (ISCSI_SESSION)); + Session = (ISCSI_SESSION *)AllocateZeroPool (sizeof (ISCSI_SESSION)); if (Session == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_ERROR; @@ -694,9 +706,9 @@ IScsiStart ( UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", - (UINTN) AttemptConfigData->AttemptConfigIndex + (UINTN)AttemptConfigData->AttemptConfigIndex ); if (Session->AuthType == ISCSI_AUTH_TYPE_CHAP) { @@ -742,12 +754,11 @@ IScsiStart ( // In Single path mode, only the successful attempt will be recorded in iBFT; // in multi-path mode, all the attempt entries in MPIO will be recorded in iBFT. // - if (!mPrivate->EnableMpio && mPrivate->ValidSinglePathCount > 0) { + if (!mPrivate->EnableMpio && (mPrivate->ValidSinglePathCount > 0)) { mPrivate->ValidSinglePathCount--; } FreePool (Session); - } else { AttemptConfigData->ValidPath = TRUE; @@ -756,7 +767,7 @@ IScsiStart ( // TODO: record KRB5 attempt information in the iSCSI device path. // if (Session->AuthType == ISCSI_AUTH_TYPE_KRB) { - if (!mPrivate->EnableMpio && mPrivate->ValidSinglePathCount > 0) { + if (!mPrivate->EnableMpio && (mPrivate->ValidSinglePathCount > 0)) { mPrivate->ValidSinglePathCount--; } @@ -814,7 +825,7 @@ IScsiStart ( // // Reinstall the original ExtScsiPassThru back. // - if (mPrivate->OneSessionEstablished && ExistPrivate != NULL) { + if (mPrivate->OneSessionEstablished && (ExistPrivate != NULL)) { Status = gBS->InstallProtocolInterface ( &ExistPrivate->ExtScsiPassThruHandle, &gEfiExtScsiPassThruProtocolGuid, @@ -837,8 +848,7 @@ IScsiStart ( // // More than one attempt successes. // - if (Private->Session != NULL && mPrivate->OneSessionEstablished) { - + if ((Private->Session != NULL) && mPrivate->OneSessionEstablished) { AttemptConfigOrder = IScsiGetVariableAndSize ( L"AttemptOrder", &gIScsiConfigGuid, @@ -847,9 +857,11 @@ IScsiStart ( if (AttemptConfigOrder == NULL) { goto ON_ERROR; } + for (Index = 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { - if (AttemptConfigOrder[Index] == mPrivate->BootSelectedIndex || - AttemptConfigOrder[Index] == BootSelected) { + if ((AttemptConfigOrder[Index] == mPrivate->BootSelectedIndex) || + (AttemptConfigOrder[Index] == BootSelected)) + { break; } } @@ -887,6 +899,7 @@ IScsiStart ( if (AttemptConfigOrder[Index] != BootSelected) { goto ON_ERROR; } + mPrivate->BootSelectedIndex = BootSelected; // // Clear the resource in ExistPrivate. @@ -917,7 +930,6 @@ IScsiStart ( gBS->CloseEvent (ExistPrivate->ExitBootServiceEvent); FreePool (ExistPrivate); - } } else { // @@ -927,7 +939,6 @@ IScsiStart ( NeedUpdate = FALSE; } } - } if (NeedUpdate) { @@ -945,6 +956,7 @@ IScsiStart ( Status = EFI_DEVICE_ERROR; goto ON_ERROR; } + // // Install the updated device path onto the ExtScsiPassThruHandle. // @@ -1032,16 +1044,15 @@ IScsiStop ( IN UINT8 IpVersion ) { - EFI_HANDLE IScsiController; - EFI_STATUS Status; - ISCSI_PRIVATE_PROTOCOL *IScsiIdentifier; - ISCSI_DRIVER_DATA *Private; - EFI_EXT_SCSI_PASS_THRU_PROTOCOL *PassThru; - ISCSI_CONNECTION *Conn; - EFI_GUID *ProtocolGuid; - EFI_GUID *TcpServiceBindingGuid; - EFI_GUID *TcpProtocolGuid; - + EFI_HANDLE IScsiController; + EFI_STATUS Status; + ISCSI_PRIVATE_PROTOCOL *IScsiIdentifier; + ISCSI_DRIVER_DATA *Private; + EFI_EXT_SCSI_PASS_THRU_PROTOCOL *PassThru; + ISCSI_CONNECTION *Conn; + EFI_GUID *ProtocolGuid; + EFI_GUID *TcpServiceBindingGuid; + EFI_GUID *TcpProtocolGuid; if (NumberOfChildren != 0) { // @@ -1050,7 +1061,7 @@ IScsiStop ( Status = gBS->OpenProtocol ( ChildHandleBuffer[0], &gEfiExtScsiPassThruProtocolGuid, - (VOID **) &PassThru, + (VOID **)&PassThru, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1094,14 +1105,15 @@ IScsiStop ( // Get the handle of the controller we are controlling. // if (IpVersion == IP_VERSION_4) { - ProtocolGuid = &gIScsiV4PrivateGuid; - TcpProtocolGuid = &gEfiTcp4ProtocolGuid; - TcpServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid; + ProtocolGuid = &gIScsiV4PrivateGuid; + TcpProtocolGuid = &gEfiTcp4ProtocolGuid; + TcpServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid; } else { - ProtocolGuid = &gIScsiV6PrivateGuid; - TcpProtocolGuid = &gEfiTcp6ProtocolGuid; - TcpServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid; + ProtocolGuid = &gIScsiV6PrivateGuid; + TcpProtocolGuid = &gEfiTcp6ProtocolGuid; + TcpServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid; } + IScsiController = NetLibGetNicHandle (ControllerHandle, TcpProtocolGuid); if (IScsiController == NULL) { return EFI_SUCCESS; @@ -1110,7 +1122,7 @@ IScsiStop ( Status = gBS->OpenProtocol ( IScsiController, ProtocolGuid, - (VOID **) &IScsiIdentifier, + (VOID **)&IScsiIdentifier, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1272,7 +1284,7 @@ IScsiIp4DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = IScsiStart (This->DriverBindingHandle, ControllerHandle, IP_VERSION_4); if (Status == EFI_ALREADY_STARTED) { @@ -1427,7 +1439,7 @@ IScsiIp6DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = IScsiStart (This->DriverBindingHandle, ControllerHandle, IP_VERSION_6); if (Status == EFI_ALREADY_STARTED) { @@ -1496,12 +1508,12 @@ IScsiUnload ( IN EFI_HANDLE ImageHandle ) { - EFI_STATUS Status; - UINTN DeviceHandleCount; - EFI_HANDLE *DeviceHandleBuffer; - UINTN Index; - EFI_COMPONENT_NAME_PROTOCOL *ComponentName; - EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2; + EFI_STATUS Status; + UINTN DeviceHandleCount; + EFI_HANDLE *DeviceHandleBuffer; + UINTN Index; + EFI_COMPONENT_NAME_PROTOCOL *ComponentName; + EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2; // // Try to disconnect the driver from the devices it's controlling. @@ -1524,11 +1536,13 @@ IScsiUnload ( Status = IScsiTestManagedDevice ( DeviceHandleBuffer[Index], gIScsiIp4DriverBinding.DriverBindingHandle, - &gEfiTcp4ProtocolGuid) - ; + &gEfiTcp4ProtocolGuid + ) + ; if (EFI_ERROR (Status)) { continue; } + Status = gBS->DisconnectController ( DeviceHandleBuffer[Index], gIScsiIp4DriverBinding.DriverBindingHandle, @@ -1551,6 +1565,7 @@ IScsiUnload ( if (EFI_ERROR (Status)) { continue; } + Status = gBS->DisconnectController ( DeviceHandleBuffer[Index], gIScsiIp6DriverBinding.DriverBindingHandle, @@ -1582,11 +1597,12 @@ IScsiUnload ( goto ON_EXIT; } - if (gIScsiControllerNameTable!= NULL) { + if (gIScsiControllerNameTable != NULL) { Status = FreeUnicodeStringTable (gIScsiControllerNameTable); if (EFI_ERROR (Status)) { goto ON_EXIT; } + gIScsiControllerNameTable = NULL; } @@ -1597,15 +1613,15 @@ IScsiUnload ( Status = gBS->HandleProtocol ( gIScsiIp4DriverBinding.DriverBindingHandle, &gEfiComponentNameProtocolGuid, - (VOID **) &ComponentName + (VOID **)&ComponentName ); if (!EFI_ERROR (Status)) { Status = gBS->UninstallMultipleProtocolInterfaces ( - gIScsiIp4DriverBinding.DriverBindingHandle, - &gEfiComponentNameProtocolGuid, - ComponentName, - NULL - ); + gIScsiIp4DriverBinding.DriverBindingHandle, + &gEfiComponentNameProtocolGuid, + ComponentName, + NULL + ); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -1614,7 +1630,7 @@ IScsiUnload ( Status = gBS->HandleProtocol ( gIScsiIp4DriverBinding.DriverBindingHandle, &gEfiComponentName2ProtocolGuid, - (VOID **) &ComponentName2 + (VOID **)&ComponentName2 ); if (!EFI_ERROR (Status)) { gBS->UninstallMultipleProtocolInterfaces ( @@ -1635,15 +1651,15 @@ IScsiUnload ( Status = gBS->HandleProtocol ( gIScsiIp6DriverBinding.DriverBindingHandle, &gEfiComponentNameProtocolGuid, - (VOID **) &ComponentName + (VOID **)&ComponentName ); if (!EFI_ERROR (Status)) { Status = gBS->UninstallMultipleProtocolInterfaces ( - gIScsiIp6DriverBinding.DriverBindingHandle, - &gEfiComponentNameProtocolGuid, - ComponentName, - NULL - ); + gIScsiIp6DriverBinding.DriverBindingHandle, + &gEfiComponentNameProtocolGuid, + ComponentName, + NULL + ); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -1652,7 +1668,7 @@ IScsiUnload ( Status = gBS->HandleProtocol ( gIScsiIp6DriverBinding.DriverBindingHandle, &gEfiComponentName2ProtocolGuid, - (VOID **) &ComponentName2 + (VOID **)&ComponentName2 ); if (!EFI_ERROR (Status)) { gBS->UninstallMultipleProtocolInterfaces ( @@ -1716,8 +1732,8 @@ ON_EXIT: EFI_STATUS EFIAPI IScsiDriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { EFI_STATUS Status; @@ -1730,7 +1746,7 @@ IScsiDriverEntryPoint ( Status = gBS->LocateProtocol ( &gEfiIScsiInitiatorNameProtocolGuid, NULL, - (VOID **) &IScsiInitiatorName + (VOID **)&IScsiInitiatorName ); if (!EFI_ERROR (Status)) { return EFI_ACCESS_DENIED; @@ -1821,7 +1837,7 @@ IScsiDriverEntryPoint ( Status = gBS->LocateProtocol ( &gEfiAuthenticationInfoProtocolGuid, NULL, - (VOID **) &AuthenticationInfo + (VOID **)&AuthenticationInfo ); if (Status == EFI_NOT_FOUND) { Status = gBS->InstallProtocolInterface ( @@ -1873,4 +1889,3 @@ Error1: return Status; } - diff --git a/NetworkPkg/IScsiDxe/IScsiDriver.h b/NetworkPkg/IScsiDxe/IScsiDriver.h index 070dbbad75..bc8b147f0e 100644 --- a/NetworkPkg/IScsiDxe/IScsiDriver.h +++ b/NetworkPkg/IScsiDxe/IScsiDriver.h @@ -21,10 +21,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0x28be27e5, 0x66cc, 0x4a31, { 0xa3, 0x15, 0xdb, 0x14, 0xc3, 0x74, 0x4d, 0x85 } \ } -#define ISCSI_INITIATOR_NAME_VAR_NAME L"I_NAME" +#define ISCSI_INITIATOR_NAME_VAR_NAME L"I_NAME" -#define IP_MODE_AUTOCONFIG_IP4 3 -#define IP_MODE_AUTOCONFIG_IP6 4 +#define IP_MODE_AUTOCONFIG_IP4 3 +#define IP_MODE_AUTOCONFIG_IP6 4 #define ALWAYS_USE_UEFI_ISCSI_AND_IGNORE_ISCSI_HBA 0x00 #define STOP_UEFI_ISCSI_IF_HBA_INSTALL_AIP 0x01 #define STOP_UEFI_ISCSI_IF_AIP_SUPPORT_IP4 0x02 @@ -45,41 +45,41 @@ extern EFI_GUID gIScsiV4PrivateGuid; extern EFI_GUID gIScsiV6PrivateGuid; typedef struct { - CHAR16 PortString[ISCSI_NAME_IFR_MAX_SIZE]; - LIST_ENTRY NicInfoList; - UINT8 NicCount; - UINT8 CurrentNic; - UINT8 MaxNic; - BOOLEAN Ipv6Flag; - BOOLEAN OneSessionEstablished; - BOOLEAN EnableMpio; - UINT8 MpioCount; // The number of attempts in MPIO. - UINT8 Krb5MpioCount; // The number of attempts login with KRB5 in MPIO. - UINT8 SinglePathCount; // The number of single path attempts. - UINT8 ValidSinglePathCount; // The number of valid single path attempts. - UINT8 BootSelectedIndex; - UINT8 AttemptCount; - LIST_ENTRY AttemptConfigs; // User configured Attempt list. - CHAR8 InitiatorName[ISCSI_NAME_MAX_SIZE]; - UINTN InitiatorNameLength; + CHAR16 PortString[ISCSI_NAME_IFR_MAX_SIZE]; + LIST_ENTRY NicInfoList; + UINT8 NicCount; + UINT8 CurrentNic; + UINT8 MaxNic; + BOOLEAN Ipv6Flag; + BOOLEAN OneSessionEstablished; + BOOLEAN EnableMpio; + UINT8 MpioCount; // The number of attempts in MPIO. + UINT8 Krb5MpioCount; // The number of attempts login with KRB5 in MPIO. + UINT8 SinglePathCount; // The number of single path attempts. + UINT8 ValidSinglePathCount; // The number of valid single path attempts. + UINT8 BootSelectedIndex; + UINT8 AttemptCount; + LIST_ENTRY AttemptConfigs; // User configured Attempt list. + CHAR8 InitiatorName[ISCSI_NAME_MAX_SIZE]; + UINTN InitiatorNameLength; } ISCSI_PRIVATE_DATA; -extern ISCSI_PRIVATE_DATA *mPrivate; +extern ISCSI_PRIVATE_DATA *mPrivate; typedef struct { - LIST_ENTRY Link; - UINT32 HwAddressSize; - EFI_MAC_ADDRESS PermanentAddress; - UINT8 NicIndex; - UINT16 VlanId; - UINTN BusNumber; - UINTN DeviceNumber; - UINTN FunctionNumber; - BOOLEAN Ipv6Available; + LIST_ENTRY Link; + UINT32 HwAddressSize; + EFI_MAC_ADDRESS PermanentAddress; + UINT8 NicIndex; + UINT16 VlanId; + UINTN BusNumber; + UINTN DeviceNumber; + UINTN FunctionNumber; + BOOLEAN Ipv6Available; } ISCSI_NIC_INFO; typedef struct _ISCSI_PRIVATE_PROTOCOL { - UINT32 Reserved; + UINT32 Reserved; } ISCSI_PRIVATE_PROTOCOL; // @@ -388,9 +388,9 @@ IScsiIp6DriverBindingStop ( EFI_STATUS EFIAPI IScsiComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName ); /** @@ -465,11 +465,11 @@ IScsiComponentNameGetDriverName ( EFI_STATUS EFIAPI IScsiComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); // @@ -560,9 +560,9 @@ IScsiSetInitiatorName ( EFI_STATUS EFIAPI IScsiGetAuthenticationInfo ( - IN EFI_AUTHENTICATION_INFO_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - OUT VOID **Buffer + IN EFI_AUTHENTICATION_INFO_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + OUT VOID **Buffer ); /** @@ -641,11 +641,11 @@ IScsiSetAuthenticationInfo ( EFI_STATUS EFIAPI IScsiExtScsiPassThruFunction ( - IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, - IN UINT8 *Target, - IN UINT64 Lun, - IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet, - IN EFI_EVENT Event OPTIONAL + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN UINT8 *Target, + IN UINT64 Lun, + IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet, + IN EFI_EVENT Event OPTIONAL ); /** diff --git a/NetworkPkg/IScsiDxe/IScsiExtScsiPassThru.c b/NetworkPkg/IScsiDxe/IScsiExtScsiPassThru.c index 06fcf92bbe..fde47221f6 100644 --- a/NetworkPkg/IScsiDxe/IScsiExtScsiPassThru.c +++ b/NetworkPkg/IScsiDxe/IScsiExtScsiPassThru.c @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "IScsiImpl.h" -EFI_EXT_SCSI_PASS_THRU_PROTOCOL gIScsiExtScsiPassThruProtocolTemplate = { +EFI_EXT_SCSI_PASS_THRU_PROTOCOL gIScsiExtScsiPassThruProtocolTemplate = { NULL, IScsiExtScsiPassThruFunction, IScsiExtScsiPassThruGetNextTargetLun, @@ -19,7 +19,6 @@ EFI_EXT_SCSI_PASS_THRU_PROTOCOL gIScsiExtScsiPassThruProtocolTemplate = { IScsiExtScsiPassThruGetNextTarget }; - /** Sends a SCSI Request Packet to a SCSI device that is attached to the SCSI channel. This function supports both blocking I/O and nonblocking I/O. The blocking I/O @@ -73,11 +72,11 @@ EFI_EXT_SCSI_PASS_THRU_PROTOCOL gIScsiExtScsiPassThruProtocolTemplate = { EFI_STATUS EFIAPI IScsiExtScsiPassThruFunction ( - IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, - IN UINT8 *Target, - IN UINT64 Lun, - IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet, - IN EFI_EVENT Event OPTIONAL + IN EFI_EXT_SCSI_PASS_THRU_PROTOCOL *This, + IN UINT8 *Target, + IN UINT64 Lun, + IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet, + IN EFI_EVENT Event OPTIONAL ) { EFI_STATUS Status; @@ -107,7 +106,6 @@ IScsiExtScsiPassThruFunction ( return Status; } - /** Used to retrieve the list of legal Target IDs and LUNs for SCSI devices on a SCSI channel. These can either be the list SCSI devices that are actually @@ -145,14 +143,14 @@ IScsiExtScsiPassThruGetNextTargetLun ( IN OUT UINT64 *Lun ) { - ISCSI_DRIVER_DATA *Private; - ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData; - UINT8 TargetId[TARGET_MAX_BYTES]; + ISCSI_DRIVER_DATA *Private; + ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData; + UINT8 TargetId[TARGET_MAX_BYTES]; - Private = ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU (This); - ConfigNvData = &Private->Session->ConfigData->SessionConfigData; + Private = ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU (This); + ConfigNvData = &Private->Session->ConfigData->SessionConfigData; - if ((*Target)[0] == 0 && (CompareMem (Lun, ConfigNvData->BootLun, sizeof (UINT64)) == 0)) { + if (((*Target)[0] == 0) && (CompareMem (Lun, ConfigNvData->BootLun, sizeof (UINT64)) == 0)) { // // Only one pair per iSCSI Driver instance. // @@ -170,7 +168,6 @@ IScsiExtScsiPassThruGetNextTargetLun ( return EFI_INVALID_PARAMETER; } - /** Allocate and build a device path node for a SCSI device on a SCSI channel. @@ -206,12 +203,12 @@ IScsiExtScsiPassThruBuildDevicePath ( IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath ) { - ISCSI_DRIVER_DATA *Private; - ISCSI_SESSION *Session; - ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData; - ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfig; - EFI_DEV_PATH *Node; - UINTN DevPathNodeLen; + ISCSI_DRIVER_DATA *Private; + ISCSI_SESSION *Session; + ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData; + ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfig; + EFI_DEV_PATH *Node; + UINTN DevPathNodeLen; if (DevicePath == NULL) { return EFI_INVALID_PARAMETER; @@ -221,17 +218,17 @@ IScsiExtScsiPassThruBuildDevicePath ( return EFI_NOT_FOUND; } - Private = ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU (This); - Session = Private->Session; - ConfigNvData = &Session->ConfigData->SessionConfigData; - AuthConfig = Session->AuthData.CHAP.AuthConfig; + Private = ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU (This); + Session = Private->Session; + ConfigNvData = &Session->ConfigData->SessionConfigData; + AuthConfig = Session->AuthData.CHAP.AuthConfig; if (CompareMem (&Lun, ConfigNvData->BootLun, sizeof (UINT64)) != 0) { return EFI_NOT_FOUND; } - DevPathNodeLen = sizeof (ISCSI_DEVICE_PATH) + AsciiStrLen (ConfigNvData->TargetName) + 1; - Node = AllocateZeroPool (DevPathNodeLen); + DevPathNodeLen = sizeof (ISCSI_DEVICE_PATH) + AsciiStrLen (ConfigNvData->TargetName) + 1; + Node = AllocateZeroPool (DevPathNodeLen); if (Node == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -245,36 +242,36 @@ IScsiExtScsiPassThruBuildDevicePath ( // Node->Iscsi.NetworkProtocol = 0; - Node->Iscsi.LoginOption = 0; + Node->Iscsi.LoginOption = 0; switch (Session->AuthType) { - case ISCSI_AUTH_TYPE_NONE: - Node->Iscsi.LoginOption |= 0x0800; - break; - - case ISCSI_AUTH_TYPE_CHAP: - // - // Bit12: 0=CHAP_BI, 1=CHAP_UNI - // - if (AuthConfig->CHAPType == ISCSI_CHAP_UNI) { - Node->Iscsi.LoginOption |= 0x1000; - } - break; - - default: - break; + case ISCSI_AUTH_TYPE_NONE: + Node->Iscsi.LoginOption |= 0x0800; + break; + + case ISCSI_AUTH_TYPE_CHAP: + // + // Bit12: 0=CHAP_BI, 1=CHAP_UNI + // + if (AuthConfig->CHAPType == ISCSI_CHAP_UNI) { + Node->Iscsi.LoginOption |= 0x1000; + } + + break; + + default: + break; } CopyMem (&Node->Iscsi.Lun, ConfigNvData->BootLun, sizeof (UINT64)); Node->Iscsi.TargetPortalGroupTag = Session->TargetPortalGroupTag; - AsciiStrCpyS ((CHAR8 *) Node + sizeof (ISCSI_DEVICE_PATH), AsciiStrLen (ConfigNvData->TargetName) + 1, ConfigNvData->TargetName); + AsciiStrCpyS ((CHAR8 *)Node + sizeof (ISCSI_DEVICE_PATH), AsciiStrLen (ConfigNvData->TargetName) + 1, ConfigNvData->TargetName); - *DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) Node; + *DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)Node; return EFI_SUCCESS; } - /** Translate a device path node to a Target ID and LUN. @@ -305,8 +302,8 @@ IScsiExtScsiPassThruGetTargetLun ( OUT UINT64 *Lun ) { - ISCSI_DRIVER_DATA *Private; - ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData; + ISCSI_DRIVER_DATA *Private; + ISCSI_SESSION_CONFIG_NVDATA *ConfigNvData; if ((DevicePath == NULL) || (Target == NULL) || (Lun == NULL)) { return EFI_INVALID_PARAMETER; @@ -315,17 +312,18 @@ IScsiExtScsiPassThruGetTargetLun ( if ((DevicePath->Type != MESSAGING_DEVICE_PATH) || (DevicePath->SubType != MSG_ISCSI_DP) || (DevicePathNodeLength (DevicePath) <= sizeof (ISCSI_DEVICE_PATH)) - ) { + ) + { return EFI_UNSUPPORTED; } - Private = ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU (This); - ConfigNvData = &Private->Session->ConfigData->SessionConfigData; + Private = ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU (This); + ConfigNvData = &Private->Session->ConfigData->SessionConfigData; SetMem (*Target, TARGET_MAX_BYTES, 0xFF); (*Target)[0] = 0; - if (AsciiStrCmp (ConfigNvData->TargetName, (CHAR8 *) DevicePath + sizeof (ISCSI_DEVICE_PATH)) != 0) { + if (AsciiStrCmp (ConfigNvData->TargetName, (CHAR8 *)DevicePath + sizeof (ISCSI_DEVICE_PATH)) != 0) { return EFI_UNSUPPORTED; } @@ -334,7 +332,6 @@ IScsiExtScsiPassThruGetTargetLun ( return EFI_SUCCESS; } - /** Resets a SCSI channel. This operation resets all the SCSI devices connected to the SCSI channel. @@ -353,7 +350,6 @@ IScsiExtScsiPassThruResetChannel ( return EFI_UNSUPPORTED; } - /** Resets a SCSI device that is connected to a SCSI channel. @@ -403,7 +399,7 @@ IScsiExtScsiPassThruGetNextTarget ( IN OUT UINT8 **Target ) { - UINT8 TargetId[TARGET_MAX_BYTES]; + UINT8 TargetId[TARGET_MAX_BYTES]; SetMem (TargetId, TARGET_MAX_BYTES, 0xFF); @@ -416,4 +412,3 @@ IScsiExtScsiPassThruGetNextTarget ( return EFI_INVALID_PARAMETER; } } - diff --git a/NetworkPkg/IScsiDxe/IScsiIbft.c b/NetworkPkg/IScsiDxe/IScsiIbft.c index b2f82cb9b1..155ecad554 100644 --- a/NetworkPkg/IScsiDxe/IScsiIbft.c +++ b/NetworkPkg/IScsiDxe/IScsiIbft.c @@ -8,8 +8,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "IScsiImpl.h" -BOOLEAN mIbftInstalled = FALSE; -UINTN mTableKey; +BOOLEAN mIbftInstalled = FALSE; +UINTN mTableKey; /** Initialize the header of the iSCSI Boot Firmware Table. @@ -21,9 +21,9 @@ UINTN mTableKey; **/ VOID IScsiInitIbfTableHeader ( - OUT EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER *Header, - IN UINT8 *OemId, - IN UINT64 *OemTableId + OUT EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_HEADER *Header, + IN UINT8 *OemId, + IN UINT64 *OemTableId ) { Header->Signature = EFI_ACPI_3_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE; @@ -35,7 +35,6 @@ IScsiInitIbfTableHeader ( CopyMem (&Header->OemTableId, OemTableId, sizeof (UINT64)); } - /** Initialize the control section of the iSCSI Boot Firmware Table. @@ -50,11 +49,11 @@ IScsiInitControlSection ( EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *Control; UINTN NumOffset; - Control = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *) (Table + 1); + Control = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *)(Table + 1); Control->Header.StructureId = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_ID; Control->Header.Version = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE_VERSION; - Control->Header.Length = (UINT16) sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE); + Control->Header.Length = (UINT16)sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE); // // If in multipathing mode, enable the Boot Failover Flag. @@ -65,7 +64,7 @@ IScsiInitControlSection ( // if (mPrivate->EnableMpio) { Control->Header.Flags = 0; - NumOffset = 2 * (mPrivate->MpioCount - mPrivate->Krb5MpioCount); + NumOffset = 2 * (mPrivate->MpioCount - mPrivate->Krb5MpioCount); } else { NumOffset = 2 * mPrivate->ValidSinglePathCount; } @@ -79,11 +78,10 @@ IScsiInitControlSection ( // Need expand the control section if more than 2 NIC/Target attempts // exist. // - Control->Header.Length = (UINT16) (Control->Header.Length + (NumOffset - 4) * sizeof (UINT16)); + Control->Header.Length = (UINT16)(Control->Header.Length + (NumOffset - 4) * sizeof (UINT16)); } } - /** Add one item into the heap. @@ -109,7 +107,6 @@ IScsiAddHeapItem ( *(*Heap + Len) = 0; } - /** Fill the Initiator section of the iSCSI Boot Firmware Table. @@ -126,19 +123,19 @@ IScsiFillInitiatorSection ( EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *Control; EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE *Initiator; - Control = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *) (Table + 1); + Control = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *)(Table + 1); // // Initiator section immediately follows the control section. // Initiator = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE *) - ((UINT8 *) Control + IBFT_ROUNDUP (Control->Header.Length)); + ((UINT8 *)Control + IBFT_ROUNDUP (Control->Header.Length)); - Control->InitiatorOffset = (UINT16) ((UINTN) Initiator - (UINTN) Table); + Control->InitiatorOffset = (UINT16)((UINTN)Initiator - (UINTN)Table); Initiator->Header.StructureId = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_ID; Initiator->Header.Version = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_VERSION; - Initiator->Header.Length = (UINT16) sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE); + Initiator->Header.Length = (UINT16)sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE); Initiator->Header.Flags = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BLOCK_VALID | EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE_FLAG_BOOT_SELECTED; @@ -147,11 +144,10 @@ IScsiFillInitiatorSection ( // IScsiAddHeapItem (Heap, mPrivate->InitiatorName, mPrivate->InitiatorNameLength - 1); - Initiator->IScsiNameLength = (UINT16) (mPrivate->InitiatorNameLength - 1); - Initiator->IScsiNameOffset = (UINT16) ((UINTN) *Heap - (UINTN) Table); + Initiator->IScsiNameLength = (UINT16)(mPrivate->InitiatorNameLength - 1); + Initiator->IScsiNameOffset = (UINT16)((UINTN)*Heap - (UINTN)Table); } - /** Map the v4 IP address into v6 IP address. @@ -161,23 +157,22 @@ IScsiFillInitiatorSection ( **/ VOID IScsiMapV4ToV6Addr ( - IN EFI_IPv4_ADDRESS *V4, - OUT EFI_IPv6_ADDRESS *V6 + IN EFI_IPv4_ADDRESS *V4, + OUT EFI_IPv6_ADDRESS *V6 ) { - UINTN Index; + UINTN Index; ZeroMem (V6, sizeof (EFI_IPv6_ADDRESS)); - V6->Addr[10] = 0xff; - V6->Addr[11] = 0xff; + V6->Addr[10] = 0xff; + V6->Addr[11] = 0xff; for (Index = 0; Index < 4; Index++) { V6->Addr[12 + Index] = V4->Addr[Index]; } } - /** Fill the NIC and target sections in iSCSI Boot Firmware Table. @@ -208,11 +203,11 @@ IScsiFillNICAndTargetSections ( // // Get the offset of the first Nic and Target section. // - Control = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *) (Table + 1); - Nic = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE *) ((UINTN) Table + - Control->InitiatorOffset + IBFT_ROUNDUP (sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE))); - Target = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE *) ((UINTN) Nic + - IBFT_ROUNDUP (sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE))); + Control = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_CONTROL_STRUCTURE *)(Table + 1); + Nic = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE *)((UINTN)Table + + Control->InitiatorOffset + IBFT_ROUNDUP (sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_INITIATOR_STRUCTURE))); + Target = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE *)((UINTN)Nic + + IBFT_ROUNDUP (sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE))); SectionOffset = &Control->NIC0Offset; @@ -233,11 +228,10 @@ IScsiFillNICAndTargetSections ( } ASSERT (Attempt->SessionConfigData.Enabled != ISCSI_DISABLED); - } else { - if (Index == 1 && Flag) { + if ((Index == 1) && Flag) { Entry = mPrivate->AttemptConfigs.ForwardLink; - Flag = FALSE; + Flag = FALSE; } Attempt = NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA, Link); @@ -260,7 +254,7 @@ IScsiFillNICAndTargetSections ( // // If multipath mode is enabled, only the attempts in MPIO will be recorded in iBFT. // - if (mPrivate->EnableMpio && Attempt->SessionConfigData.Enabled != ISCSI_ENABLED_FOR_MPIO) { + if (mPrivate->EnableMpio && (Attempt->SessionConfigData.Enabled != ISCSI_ENABLED_FOR_MPIO)) { continue; } @@ -280,13 +274,13 @@ IScsiFillNICAndTargetSections ( Nic->Header.StructureId = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_ID; Nic->Header.Version = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_VERSION; - Nic->Header.Length = (UINT16) sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE); - Nic->Header.Index = (UINT8) Index; + Nic->Header.Length = (UINT16)sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE); + Nic->Header.Index = (UINT8)Index; Nic->Header.Flags = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BLOCK_VALID | - EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_GLOBAL; + EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_GLOBAL; if (Index == 0) { - Nic->Header.Flags |= EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BOOT_SELECTED; + Nic->Header.Flags |= EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE_FLAG_BOOT_SELECTED; } if (NvData->InitiatorInfoFromDhcp) { @@ -295,7 +289,7 @@ IScsiFillNICAndTargetSections ( Nic->Origin = IpPrefixOriginManual; } - if (NvData->IpMode == IP_MODE_IP4 || NvData->IpMode == IP_MODE_AUTOCONFIG) { + if ((NvData->IpMode == IP_MODE_IP4) || (NvData->IpMode == IP_MODE_AUTOCONFIG)) { // // Get the subnet mask prefix length. // @@ -309,16 +303,13 @@ IScsiFillNICAndTargetSections ( IScsiMapV4ToV6Addr (&Attempt->PrimaryDns.v4, &Nic->PrimaryDns); IScsiMapV4ToV6Addr (&Attempt->SecondaryDns.v4, &Nic->SecondaryDns); IScsiMapV4ToV6Addr (&Attempt->DhcpServer.v4, &Nic->DhcpServer); - - } else if (NvData->IpMode == IP_MODE_IP6 || NvData->IpMode == IP_MODE_AUTOCONFIG) { - + } else if ((NvData->IpMode == IP_MODE_IP6) || (NvData->IpMode == IP_MODE_AUTOCONFIG)) { Nic->SubnetMaskPrefixLength = NvData->PrefixLength; CopyMem (&Nic->Ip, &NvData->LocalIp, sizeof (EFI_IPv6_ADDRESS)); CopyMem (&Nic->Gateway, &NvData->Gateway, sizeof (EFI_IPv6_ADDRESS)); CopyMem (&Nic->PrimaryDns, &Attempt->PrimaryDns, sizeof (EFI_IPv6_ADDRESS)); CopyMem (&Nic->SecondaryDns, &Attempt->SecondaryDns, sizeof (EFI_IPv6_ADDRESS)); CopyMem (&Nic->DhcpServer, &Attempt->DhcpServer, sizeof (EFI_IPv6_ADDRESS)); - } else { ASSERT (FALSE); } @@ -331,26 +322,26 @@ IScsiFillNICAndTargetSections ( Nic->VLanTag = NicInfo->VlanId; CopyMem (Nic->Mac, &NicInfo->PermanentAddress, sizeof (Nic->Mac)); - Nic->PciLocation = (UINT16) ((NicInfo->BusNumber << 8) | - (NicInfo->DeviceNumber << 3) | NicInfo->FunctionNumber); - *SectionOffset = (UINT16) ((UINTN) Nic - (UINTN) Table); + Nic->PciLocation = (UINT16)((NicInfo->BusNumber << 8) | + (NicInfo->DeviceNumber << 3) | NicInfo->FunctionNumber); + *SectionOffset = (UINT16)((UINTN)Nic - (UINTN)Table); SectionOffset++; // // Fill the Target section. // - Target->Header.StructureId = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_ID; - Target->Header.Version = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_VERSION; - Target->Header.Length = (UINT16) sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE); - Target->Header.Index = (UINT8) Index; - Target->Header.Flags = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BLOCK_VALID; + Target->Header.StructureId = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_ID; + Target->Header.Version = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_VERSION; + Target->Header.Length = (UINT16)sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE); + Target->Header.Index = (UINT8)Index; + Target->Header.Flags = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BLOCK_VALID; if (Index == 0) { - Target->Header.Flags |= EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BOOT_SELECTED; + Target->Header.Flags |= EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_FLAG_BOOT_SELECTED; } - Target->Port = NvData->TargetPort; + Target->Port = NvData->TargetPort; if (Attempt->AuthenticationType == ISCSI_AUTH_TYPE_CHAP) { if (AuthConfig->CHAPType == ISCSI_CHAP_UNI) { @@ -362,11 +353,11 @@ IScsiFillNICAndTargetSections ( Target->CHAPType = EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_CHAP_TYPE_NO_CHAP; } - Target->NicIndex = (UINT8) Index; + Target->NicIndex = (UINT8)Index; - if (NvData->IpMode == IP_MODE_IP4 || NvData->IpMode == IP_MODE_AUTOCONFIG) { + if ((NvData->IpMode == IP_MODE_IP4) || (NvData->IpMode == IP_MODE_AUTOCONFIG)) { IScsiMapV4ToV6Addr (&NvData->TargetIp.v4, &Target->Ip); - } else if (NvData->IpMode == IP_MODE_IP6 || NvData->IpMode == IP_MODE_AUTOCONFIG) { + } else if ((NvData->IpMode == IP_MODE_IP6) || (NvData->IpMode == IP_MODE_AUTOCONFIG)) { CopyMem (&Target->Ip, &NvData->TargetIp, sizeof (EFI_IPv6_ADDRESS)); } else { ASSERT (FALSE); @@ -377,64 +368,63 @@ IScsiFillNICAndTargetSections ( // // Target iSCSI Name, CHAP name/secret, reverse CHAP name/secret. // - Length = (UINT16) AsciiStrLen (NvData->TargetName); + Length = (UINT16)AsciiStrLen (NvData->TargetName); IScsiAddHeapItem (Heap, NvData->TargetName, Length); Target->IScsiNameLength = Length; - Target->IScsiNameOffset = (UINT16) ((UINTN) *Heap - (UINTN) Table); + Target->IScsiNameOffset = (UINT16)((UINTN)*Heap - (UINTN)Table); if (Attempt->AuthenticationType == ISCSI_AUTH_TYPE_CHAP) { // // CHAP Name // - Length = (UINT16) AsciiStrLen (AuthConfig->CHAPName); + Length = (UINT16)AsciiStrLen (AuthConfig->CHAPName); IScsiAddHeapItem (Heap, AuthConfig->CHAPName, Length); - Target->CHAPNameLength = Length; - Target->CHAPNameOffset = (UINT16) ((UINTN) *Heap - (UINTN) Table); + Target->CHAPNameLength = Length; + Target->CHAPNameOffset = (UINT16)((UINTN)*Heap - (UINTN)Table); // // CHAP Secret // - Length = (UINT16) AsciiStrLen (AuthConfig->CHAPSecret); + Length = (UINT16)AsciiStrLen (AuthConfig->CHAPSecret); IScsiAddHeapItem (Heap, AuthConfig->CHAPSecret, Length); - Target->CHAPSecretLength = Length; - Target->CHAPSecretOffset = (UINT16) ((UINTN) *Heap - (UINTN) Table); + Target->CHAPSecretLength = Length; + Target->CHAPSecretOffset = (UINT16)((UINTN)*Heap - (UINTN)Table); if (Target->CHAPType == EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE_CHAP_TYPE_MUTUAL_CHAP) { // // Reverse CHAP Name. // - Length = (UINT16) AsciiStrLen (AuthConfig->ReverseCHAPName); + Length = (UINT16)AsciiStrLen (AuthConfig->ReverseCHAPName); IScsiAddHeapItem (Heap, AuthConfig->ReverseCHAPName, Length); Target->ReverseCHAPNameLength = Length; - Target->ReverseCHAPNameOffset = (UINT16) ((UINTN) *Heap - (UINTN) Table); + Target->ReverseCHAPNameOffset = (UINT16)((UINTN)*Heap - (UINTN)Table); // // Reverse CHAP Secret. // - Length = (UINT16) AsciiStrLen (AuthConfig->ReverseCHAPSecret); + Length = (UINT16)AsciiStrLen (AuthConfig->ReverseCHAPSecret); IScsiAddHeapItem (Heap, AuthConfig->ReverseCHAPSecret, Length); Target->ReverseCHAPSecretLength = Length; - Target->ReverseCHAPSecretOffset = (UINT16) ((UINTN) *Heap - (UINTN) Table); + Target->ReverseCHAPSecretOffset = (UINT16)((UINTN)*Heap - (UINTN)Table); } } - *SectionOffset = (UINT16) ((UINTN) Target - (UINTN) Table); + *SectionOffset = (UINT16)((UINTN)Target - (UINTN)Table); SectionOffset++; // // Advance to the next NIC/Target pair. // - Nic = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE *) ((UINTN) Target + - IBFT_ROUNDUP (sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE))); - Target = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE *) ((UINTN) Nic + - IBFT_ROUNDUP (sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE))); + Nic = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE *)((UINTN)Target + + IBFT_ROUNDUP (sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE))); + Target = (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_TARGET_STRUCTURE *)((UINTN)Nic + + IBFT_ROUNDUP (sizeof (EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_NIC_STRUCTURE))); Index++; } } - /** Publish and remove the iSCSI Boot Firmware Table according to the iSCSI session status. @@ -457,29 +447,29 @@ IScsiPublishIbft ( Rsdt = NULL; Xsdt = NULL; - Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **) &AcpiTableProtocol); + Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **)&AcpiTableProtocol); if (EFI_ERROR (Status)) { - return ; + return; } // // Find ACPI table RSD_PTR from the system table. // - Status = EfiGetSystemConfigurationTable (&gEfiAcpiTableGuid, (VOID **) &Rsdp); + Status = EfiGetSystemConfigurationTable (&gEfiAcpiTableGuid, (VOID **)&Rsdp); if (EFI_ERROR (Status)) { - Status = EfiGetSystemConfigurationTable (&gEfiAcpi10TableGuid, (VOID **) &Rsdp); + Status = EfiGetSystemConfigurationTable (&gEfiAcpi10TableGuid, (VOID **)&Rsdp); } if (EFI_ERROR (Status) || (Rsdp == NULL)) { - return ; - } else if (Rsdp->Revision >= EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION && Rsdp->XsdtAddress != 0) { - Xsdt = (EFI_ACPI_DESCRIPTION_HEADER *) (UINTN) Rsdp->XsdtAddress; + return; + } else if ((Rsdp->Revision >= EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION) && (Rsdp->XsdtAddress != 0)) { + Xsdt = (EFI_ACPI_DESCRIPTION_HEADER *)(UINTN)Rsdp->XsdtAddress; } else if (Rsdp->RsdtAddress != 0) { - Rsdt = (EFI_ACPI_DESCRIPTION_HEADER *) (UINTN) Rsdp->RsdtAddress; + Rsdt = (EFI_ACPI_DESCRIPTION_HEADER *)(UINTN)Rsdp->RsdtAddress; } if ((Xsdt == NULL) && (Rsdt == NULL)) { - return ; + return; } if (mIbftInstalled) { @@ -488,17 +478,19 @@ IScsiPublishIbft ( mTableKey ); if (EFI_ERROR (Status)) { - return ; + return; } + mIbftInstalled = FALSE; } // // If there is no valid attempt configuration, just return. // - if ((!mPrivate->EnableMpio && mPrivate->ValidSinglePathCount == 0) || - (mPrivate->EnableMpio && mPrivate->MpioCount <= mPrivate->Krb5MpioCount)) { - return ; + if ((!mPrivate->EnableMpio && (mPrivate->ValidSinglePathCount == 0)) || + (mPrivate->EnableMpio && (mPrivate->MpioCount <= mPrivate->Krb5MpioCount))) + { + return; } // @@ -506,10 +498,10 @@ IScsiPublishIbft ( // Table = AllocateZeroPool (IBFT_MAX_SIZE); if (Table == NULL) { - return ; + return; } - Heap = (UINT8 *) Table + IBFT_HEAP_OFFSET; + Heap = (UINT8 *)Table + IBFT_HEAP_OFFSET; // // Fill in the various section of the iSCSI Boot Firmware Table. @@ -524,7 +516,7 @@ IScsiPublishIbft ( IScsiFillInitiatorSection (Table, &Heap); IScsiFillNICAndTargetSections (Table, &Heap); - Checksum = CalculateCheckSum8((UINT8 *)Table, Table->Length); + Checksum = CalculateCheckSum8 ((UINT8 *)Table, Table->Length); Table->Checksum = Checksum; // @@ -536,7 +528,7 @@ IScsiPublishIbft ( Table->Length, &mTableKey ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return; } diff --git a/NetworkPkg/IScsiDxe/IScsiIbft.h b/NetworkPkg/IScsiDxe/IScsiIbft.h index 98eb56e5c5..168734d3f1 100644 --- a/NetworkPkg/IScsiDxe/IScsiIbft.h +++ b/NetworkPkg/IScsiDxe/IScsiIbft.h @@ -14,9 +14,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include -#define IBFT_TABLE_VAR_NAME L"iBFT" -#define IBFT_MAX_SIZE 4096 -#define IBFT_HEAP_OFFSET 2048 +#define IBFT_TABLE_VAR_NAME L"iBFT" +#define IBFT_MAX_SIZE 4096 +#define IBFT_HEAP_OFFSET 2048 #define IBFT_ROUNDUP(size) NET_ROUNDUP ((size), EFI_ACPI_ISCSI_BOOT_FIRMWARE_TABLE_STRUCTURE_ALIGNMENT) diff --git a/NetworkPkg/IScsiDxe/IScsiImpl.h b/NetworkPkg/IScsiDxe/IScsiImpl.h index ac3a25730e..1d1a170c0e 100644 --- a/NetworkPkg/IScsiDxe/IScsiImpl.h +++ b/NetworkPkg/IScsiDxe/IScsiImpl.h @@ -67,105 +67,105 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "IScsiDns.h" #include "IScsiConfig.h" -#define ISCSI_AUTH_INITIAL 0 +#define ISCSI_AUTH_INITIAL 0 -#define ISCSI_SESSION_SIGNATURE SIGNATURE_32 ('I', 'S', 'S', 'N') +#define ISCSI_SESSION_SIGNATURE SIGNATURE_32 ('I', 'S', 'S', 'N') /// /// 10 seconds /// -#define ISCSI_GET_MAPPING_TIMEOUT 100000000U +#define ISCSI_GET_MAPPING_TIMEOUT 100000000U /// /// 3 seconds /// #define ISCSI_WAIT_IPSEC_TIMEOUT 30000000U struct _ISCSI_SESSION { - UINT32 Signature; + UINT32 Signature; - ISCSI_DRIVER_DATA *Private; - ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData; + ISCSI_DRIVER_DATA *Private; + ISCSI_ATTEMPT_CONFIG_NVDATA *ConfigData; - UINT8 AuthType; + UINT8 AuthType; union { - ISCSI_CHAP_AUTH_DATA CHAP; + ISCSI_CHAP_AUTH_DATA CHAP; } AuthData; - UINT8 State; + UINT8 State; - UINT8 Isid[6]; - UINT16 Tsih; + UINT8 Isid[6]; + UINT16 Tsih; - UINT32 CmdSN; - UINT32 ExpCmdSN; - UINT32 MaxCmdSN; + UINT32 CmdSN; + UINT32 ExpCmdSN; + UINT32 MaxCmdSN; - UINT32 InitiatorTaskTag; - UINT16 NextCid; + UINT32 InitiatorTaskTag; + UINT16 NextCid; - LIST_ENTRY Conns; - UINT32 NumConns; + LIST_ENTRY Conns; + UINT32 NumConns; - LIST_ENTRY TcbList; + LIST_ENTRY TcbList; // // Session-wide parameters // - UINT16 TargetPortalGroupTag; - UINT32 MaxConnections; - BOOLEAN InitialR2T; - BOOLEAN ImmediateData; - UINT32 MaxBurstLength; - UINT32 FirstBurstLength; - UINT32 DefaultTime2Wait; - UINT32 DefaultTime2Retain; - UINT16 MaxOutstandingR2T; - BOOLEAN DataPDUInOrder; - BOOLEAN DataSequenceInOrder; - UINT8 ErrorRecoveryLevel; + UINT16 TargetPortalGroupTag; + UINT32 MaxConnections; + BOOLEAN InitialR2T; + BOOLEAN ImmediateData; + UINT32 MaxBurstLength; + UINT32 FirstBurstLength; + UINT32 DefaultTime2Wait; + UINT32 DefaultTime2Retain; + UINT16 MaxOutstandingR2T; + BOOLEAN DataPDUInOrder; + BOOLEAN DataSequenceInOrder; + UINT8 ErrorRecoveryLevel; }; #define ISCSI_CONNECTION_SIGNATURE SIGNATURE_32 ('I', 'S', 'C', 'N') struct _ISCSI_CONNECTION { - UINT32 Signature; - LIST_ENTRY Link; + UINT32 Signature; + LIST_ENTRY Link; - EFI_EVENT TimeoutEvent; + EFI_EVENT TimeoutEvent; - ISCSI_SESSION *Session; + ISCSI_SESSION *Session; - UINT8 State; - UINT8 CurrentStage; - UINT8 NextStage; + UINT8 State; + UINT8 CurrentStage; + UINT8 NextStage; - UINT8 AuthStep; + UINT8 AuthStep; - BOOLEAN PartialReqSent; - BOOLEAN PartialRspRcvd; + BOOLEAN PartialReqSent; + BOOLEAN PartialRspRcvd; - BOOLEAN TransitInitiated; - BOOLEAN ParamNegotiated; + BOOLEAN TransitInitiated; + BOOLEAN ParamNegotiated; - UINT16 Cid; - UINT32 ExpStatSN; + UINT16 Cid; + UINT32 ExpStatSN; // // Queues... // - NET_BUF_QUEUE RspQue; + NET_BUF_QUEUE RspQue; - BOOLEAN Ipv6Flag; - TCP_IO TcpIo; + BOOLEAN Ipv6Flag; + TCP_IO TcpIo; // // Connection-only parameters. // - UINT32 MaxRecvDataSegmentLength; - ISCSI_DIGEST_TYPE HeaderDigest; - ISCSI_DIGEST_TYPE DataDigest; + UINT32 MaxRecvDataSegmentLength; + ISCSI_DIGEST_TYPE HeaderDigest; + ISCSI_DIGEST_TYPE DataDigest; }; -#define ISCSI_DRIVER_DATA_SIGNATURE SIGNATURE_32 ('I', 'S', 'D', 'A') +#define ISCSI_DRIVER_DATA_SIGNATURE SIGNATURE_32 ('I', 'S', 'D', 'A') #define ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU(PassThru) \ CR ( \ @@ -184,19 +184,19 @@ struct _ISCSI_CONNECTION { ) struct _ISCSI_DRIVER_DATA { - UINT32 Signature; - EFI_HANDLE Image; - EFI_HANDLE Controller; - ISCSI_PRIVATE_PROTOCOL IScsiIdentifier; - - EFI_EVENT ExitBootServiceEvent; - - EFI_EXT_SCSI_PASS_THRU_PROTOCOL IScsiExtScsiPassThru; - EFI_EXT_SCSI_PASS_THRU_MODE ExtScsiPassThruMode; - EFI_HANDLE ExtScsiPassThruHandle; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - EFI_HANDLE ChildHandle; - ISCSI_SESSION *Session; + UINT32 Signature; + EFI_HANDLE Image; + EFI_HANDLE Controller; + ISCSI_PRIVATE_PROTOCOL IScsiIdentifier; + + EFI_EVENT ExitBootServiceEvent; + + EFI_EXT_SCSI_PASS_THRU_PROTOCOL IScsiExtScsiPassThru; + EFI_EXT_SCSI_PASS_THRU_MODE ExtScsiPassThruMode; + EFI_HANDLE ExtScsiPassThruHandle; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + EFI_HANDLE ChildHandle; + ISCSI_SESSION *Session; }; #endif diff --git a/NetworkPkg/IScsiDxe/IScsiInitiatorName.c b/NetworkPkg/IScsiDxe/IScsiInitiatorName.c index 0d332e5c6c..3eee10ba29 100644 --- a/NetworkPkg/IScsiDxe/IScsiInitiatorName.c +++ b/NetworkPkg/IScsiDxe/IScsiInitiatorName.c @@ -8,12 +8,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "IScsiImpl.h" -EFI_ISCSI_INITIATOR_NAME_PROTOCOL gIScsiInitiatorName = { +EFI_ISCSI_INITIATOR_NAME_PROTOCOL gIScsiInitiatorName = { IScsiGetInitiatorName, IScsiSetInitiatorName }; - /** Retrieves the current set value of iSCSI Initiator Name. @@ -64,7 +63,6 @@ IScsiGetInitiatorName ( return Status; } - /** Sets the iSSI Initiator Name. @@ -110,10 +108,11 @@ IScsiSetInitiatorName ( *BufferSize = ISCSI_NAME_MAX_SIZE; return EFI_INVALID_PARAMETER; } + // // Only support iqn iSCSI names. // - Status = IScsiNormalizeName ((CHAR8 *) Buffer, *BufferSize - 1); + Status = IScsiNormalizeName ((CHAR8 *)Buffer, *BufferSize - 1); if (EFI_ERROR (Status)) { return Status; } diff --git a/NetworkPkg/IScsiDxe/IScsiMisc.c b/NetworkPkg/IScsiDxe/IScsiMisc.c index 4069547867..b3ea90158f 100644 --- a/NetworkPkg/IScsiDxe/IScsiMisc.c +++ b/NetworkPkg/IScsiDxe/IScsiMisc.c @@ -21,22 +21,21 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 IScsiHexString[] = "0123456789ABCDEFa **/ VOID IScsiStrTrim ( - IN OUT CHAR16 *Str, - IN CHAR16 CharC + IN OUT CHAR16 *Str, + IN CHAR16 CharC ) { CHAR16 *Pointer1; CHAR16 *Pointer2; if (*Str == 0) { - return ; + return; } // // Trim off the leading and trailing characters c // for (Pointer1 = Str; (*Pointer1 != 0) && (*Pointer1 == CharC); Pointer1++) { - ; } Pointer2 = Str; @@ -47,18 +46,18 @@ IScsiStrTrim ( } } else { while (*Pointer1 != 0) { - *Pointer2 = *Pointer1; - Pointer1++; - Pointer2++; + *Pointer2 = *Pointer1; + Pointer1++; + Pointer2++; } + *Pointer2 = 0; } - - for (Pointer1 = Str + StrLen(Str) - 1; Pointer1 >= Str && *Pointer1 == CharC; Pointer1--) { - ; + for (Pointer1 = Str + StrLen (Str) - 1; Pointer1 >= Str && *Pointer1 == CharC; Pointer1--) { } - if (Pointer1 != Str + StrLen(Str) - 1) { + + if (Pointer1 != Str + StrLen (Str) - 1) { *(Pointer1 + 1) = 0; } } @@ -101,10 +100,9 @@ IScsiGetSubnetMaskPrefixLength ( Len++; } - return (UINT8) (32 - Len); + return (UINT8)(32 - Len); } - /** Convert the hexadecimal encoded LUN string into the 64-bit LUN. @@ -128,15 +126,15 @@ IScsiAsciiStrToLun ( ZeroMem (Lun, 8); ZeroMem (TemStr, 2); - ZeroMem ((UINT8 *) Value, sizeof (Value)); + ZeroMem ((UINT8 *)Value, sizeof (Value)); SizeStr = AsciiStrLen (Str); IndexValue = 0; IndexNum = 0; - for (Index = 0; Index < SizeStr; Index ++) { + for (Index = 0; Index < SizeStr; Index++) { TemStr[0] = Str[Index]; - TemValue = (UINT8) AsciiStrHexToUint64 (TemStr); - if (TemValue == 0 && TemStr[0] != '0') { + TemValue = (UINT8)AsciiStrHexToUint64 (TemStr); + if ((TemValue == 0) && (TemStr[0] != '0')) { if ((TemStr[0] != '-') || (IndexNum == 0)) { // // Invalid Lun Char. @@ -155,6 +153,7 @@ IScsiAsciiStrToLun ( // return EFI_INVALID_PARAMETER; } + // // Restart str index for the next lun value. // @@ -172,11 +171,11 @@ IScsiAsciiStrToLun ( // // Combine UINT16 value. // - Value[IndexValue] = (UINT16) ((Value[IndexValue] << 4) + TemValue); + Value[IndexValue] = (UINT16)((Value[IndexValue] << 4) + TemValue); } - for (Index = 0; Index <= IndexValue; Index ++) { - *((UINT16 *) &Lun[Index * 2]) = HTONS (Value[Index]); + for (Index = 0; Index <= IndexValue; Index++) { + *((UINT16 *)&Lun[Index * 2]) = HTONS (Value[Index]); } return EFI_SUCCESS; @@ -201,26 +200,26 @@ IScsiLunToUnicodeStr ( TempStr = Str; for (Index = 0; Index < 4; Index++) { - if ((Lun[2 * Index] | Lun[2 * Index + 1]) == 0) { CopyMem (TempStr, L"0-", sizeof (L"0-")); } else { - TempStr[0] = (CHAR16) IScsiHexString[Lun[2 * Index] >> 4]; - TempStr[1] = (CHAR16) IScsiHexString[Lun[2 * Index] & 0x0F]; - TempStr[2] = (CHAR16) IScsiHexString[Lun[2 * Index + 1] >> 4]; - TempStr[3] = (CHAR16) IScsiHexString[Lun[2 * Index + 1] & 0x0F]; - TempStr[4] = L'-'; - TempStr[5] = 0; + TempStr[0] = (CHAR16)IScsiHexString[Lun[2 * Index] >> 4]; + TempStr[1] = (CHAR16)IScsiHexString[Lun[2 * Index] & 0x0F]; + TempStr[2] = (CHAR16)IScsiHexString[Lun[2 * Index + 1] >> 4]; + TempStr[3] = (CHAR16)IScsiHexString[Lun[2 * Index + 1] & 0x0F]; + TempStr[4] = L'-'; + TempStr[5] = 0; IScsiStrTrim (TempStr, L'0'); } TempStr += StrLen (TempStr); } + // // Remove the last '-' // - ASSERT (StrLen(Str) >= 1); + ASSERT (StrLen (Str) >= 1); Str[StrLen (Str) - 1] = 0; for (Index = StrLen (Str) - 1; Index > 1; Index = Index - 2) { @@ -246,26 +245,24 @@ IScsiLunToUnicodeStr ( **/ EFI_STATUS IScsiAsciiStrToIp ( - IN CHAR8 *Str, - IN UINT8 IpMode, - OUT EFI_IP_ADDRESS *Ip + IN CHAR8 *Str, + IN UINT8 IpMode, + OUT EFI_IP_ADDRESS *Ip ) { - EFI_STATUS Status; + EFI_STATUS Status; - if (IpMode == IP_MODE_IP4 || IpMode == IP_MODE_AUTOCONFIG_IP4) { + if ((IpMode == IP_MODE_IP4) || (IpMode == IP_MODE_AUTOCONFIG_IP4)) { return NetLibAsciiStrToIp4 (Str, &Ip->v4); - - } else if (IpMode == IP_MODE_IP6 || IpMode == IP_MODE_AUTOCONFIG_IP6) { + } else if ((IpMode == IP_MODE_IP6) || (IpMode == IP_MODE_AUTOCONFIG_IP6)) { return NetLibAsciiStrToIp6 (Str, &Ip->v6); - } else if (IpMode == IP_MODE_AUTOCONFIG) { Status = NetLibAsciiStrToIp4 (Str, &Ip->v4); if (!EFI_ERROR (Status)) { return Status; } - return NetLibAsciiStrToIp6 (Str, &Ip->v6); + return NetLibAsciiStrToIp6 (Str, &Ip->v6); } return EFI_INVALID_PARAMETER; @@ -292,14 +289,14 @@ IScsiMacAddrToStr ( CHAR16 *String; for (Index = 0; Index < Len; Index++) { - Str[3 * Index] = (CHAR16) IScsiHexString[(Mac->Addr[Index] >> 4) & 0x0F]; - Str[3 * Index + 1] = (CHAR16) IScsiHexString[Mac->Addr[Index] & 0x0F]; - Str[3 * Index + 2] = L':'; + Str[3 * Index] = (CHAR16)IScsiHexString[(Mac->Addr[Index] >> 4) & 0x0F]; + Str[3 * Index + 1] = (CHAR16)IScsiHexString[Mac->Addr[Index] & 0x0F]; + Str[3 * Index + 2] = L':'; } - String = &Str[3 * Index - 1] ; + String = &Str[3 * Index - 1]; if (VlanId != 0) { - String += UnicodeSPrint (String, 6 * sizeof (CHAR16), L"\\%04x", (UINTN) VlanId); + String += UnicodeSPrint (String, 6 * sizeof (CHAR16), L"\\%04x", (UINTN)VlanId); } *String = L'\0'; @@ -322,15 +319,15 @@ IScsiMacAddrToStr ( **/ EFI_STATUS IScsiBinToHex ( - IN UINT8 *BinBuffer, - IN UINT32 BinLength, - IN OUT CHAR8 *HexStr, - IN OUT UINT32 *HexLength + IN UINT8 *BinBuffer, + IN UINT32 BinLength, + IN OUT CHAR8 *HexStr, + IN OUT UINT32 *HexLength ) { - UINT32 HexLengthMin; - UINT32 HexLengthProvided; - UINT32 Index; + UINT32 HexLengthMin; + UINT32 HexLengthProvided; + UINT32 Index; if ((HexStr == NULL) || (BinBuffer == NULL) || (BinLength == 0)) { return EFI_INVALID_PARAMETER; @@ -340,12 +337,13 @@ IScsiBinToHex ( // Safely calculate: HexLengthMin := BinLength * 2 + 3. // if (RETURN_ERROR (SafeUint32Mult (BinLength, 2, &HexLengthMin)) || - RETURN_ERROR (SafeUint32Add (HexLengthMin, 3, &HexLengthMin))) { + RETURN_ERROR (SafeUint32Add (HexLengthMin, 3, &HexLengthMin))) + { return EFI_BAD_BUFFER_SIZE; } HexLengthProvided = *HexLength; - *HexLength = HexLengthMin; + *HexLength = HexLengthMin; if (HexLengthProvided < HexLengthMin) { return EFI_BUFFER_TOO_SMALL; } @@ -366,7 +364,6 @@ IScsiBinToHex ( return EFI_SUCCESS; } - /** Convert the hexadecimal string into a binary encoded buffer. @@ -385,9 +382,9 @@ IScsiBinToHex ( **/ EFI_STATUS IScsiHexToBin ( - IN OUT UINT8 *BinBuffer, - IN OUT UINT32 *BinLength, - IN CHAR8 *HexStr + IN OUT UINT8 *BinBuffer, + IN OUT UINT32 *BinLength, + IN CHAR8 *HexStr ) { UINTN BinLengthMin; @@ -411,9 +408,10 @@ IScsiHexToBin ( // // Reject an empty hex string; reject a stray nibble. // - if (Length == 0 || Length % 2 != 0) { + if ((Length == 0) || (Length % 2 != 0)) { return EFI_INVALID_PARAMETER; } + // // Check if the caller provides enough room for the decoded blob. // @@ -421,31 +419,33 @@ IScsiHexToBin ( if (BinLengthMin > MAX_UINT32) { return EFI_BAD_BUFFER_SIZE; } + BinLengthProvided = *BinLength; - *BinLength = (UINT32)BinLengthMin; + *BinLength = (UINT32)BinLengthMin; if (BinLengthProvided < BinLengthMin) { return EFI_BUFFER_TOO_SMALL; } - for (Index = 0; Index < Length; Index ++) { + for (Index = 0; Index < Length; Index++) { TemStr[0] = HexStr[Index]; - Digit = (UINT8) AsciiStrHexToUint64 (TemStr); - if (Digit == 0 && TemStr[0] != '0') { + Digit = (UINT8)AsciiStrHexToUint64 (TemStr); + if ((Digit == 0) && (TemStr[0] != '0')) { // // Invalid Hex Char. // return EFI_INVALID_PARAMETER; } + if ((Index & 1) == 0) { - BinBuffer [Index/2] = Digit; + BinBuffer[Index/2] = Digit; } else { - BinBuffer [Index/2] = (UINT8) ((BinBuffer [Index/2] << 4) + Digit); + BinBuffer[Index/2] = (UINT8)((BinBuffer[Index/2] << 4) + Digit); } } + return EFI_SUCCESS; } - /** Convert the decimal-constant string or hex-constant string into a numerical value. @@ -468,7 +468,6 @@ IScsiNetNtoi ( return AsciiStrDecimalToUintn (Str); } - /** Generate random numbers. @@ -486,12 +485,11 @@ IScsiGenRandom ( while (RandLength > 0) { Random = NET_RANDOM (NetRandomInitSeed ()); - *Rand++ = (UINT8) (Random); + *Rand++ = (UINT8)(Random); RandLength--; } } - /** Check whether UNDI protocol supports IPv6. @@ -505,22 +503,22 @@ IScsiGenRandom ( **/ EFI_STATUS IScsiCheckIpv6Support ( - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE Image, - OUT BOOLEAN *Ipv6Support + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE Image, + OUT BOOLEAN *Ipv6Support ) { - EFI_HANDLE Handle; - EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; - EFI_STATUS Status; - EFI_GUID *InfoTypesBuffer; - UINTN InfoTypeBufferCount; - UINTN TypeIndex; - BOOLEAN Supported; - VOID *InfoBlock; - UINTN InfoBlockSize; - - EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii; + EFI_HANDLE Handle; + EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; + EFI_STATUS Status; + EFI_GUID *InfoTypesBuffer; + UINTN InfoTypeBufferCount; + UINTN TypeIndex; + BOOLEAN Supported; + VOID *InfoBlock; + UINTN InfoBlockSize; + + EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii; ASSERT (Ipv6Support != NULL); @@ -530,7 +528,7 @@ IScsiCheckIpv6Support ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiNetworkInterfaceIdentifierProtocolGuid_31, - (VOID **) &Nii, + (VOID **)&Nii, Image, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -552,16 +550,16 @@ IScsiCheckIpv6Support ( Status = gBS->HandleProtocol ( Handle, &gEfiAdapterInformationProtocolGuid, - (VOID *) &Aip + (VOID *)&Aip ); - if (EFI_ERROR (Status) || Aip == NULL) { + if (EFI_ERROR (Status) || (Aip == NULL)) { return EFI_NOT_FOUND; } InfoTypesBuffer = NULL; InfoTypeBufferCount = 0; - Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); - if (EFI_ERROR (Status) || InfoTypesBuffer == NULL) { + Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); + if (EFI_ERROR (Status) || (InfoTypesBuffer == NULL)) { FreePool (InfoTypesBuffer); return EFI_NOT_FOUND; } @@ -584,13 +582,13 @@ IScsiCheckIpv6Support ( // InfoBlock = NULL; InfoBlockSize = 0; - Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); - if (EFI_ERROR (Status) || InfoBlock == NULL) { + Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); + if (EFI_ERROR (Status) || (InfoBlock == NULL)) { FreePool (InfoBlock); return EFI_NOT_FOUND; } - *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *) InfoBlock)->Ipv6Support; + *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *)InfoBlock)->Ipv6Support; FreePool (InfoBlock); return EFI_SUCCESS; @@ -613,12 +611,12 @@ IScsiAddNic ( IN EFI_HANDLE Image ) { - EFI_STATUS Status; - ISCSI_NIC_INFO *NicInfo; - LIST_ENTRY *Entry; - EFI_MAC_ADDRESS MacAddr; - UINTN HwAddressSize; - UINT16 VlanId; + EFI_STATUS Status; + ISCSI_NIC_INFO *NicInfo; + LIST_ENTRY *Entry; + EFI_MAC_ADDRESS MacAddr; + UINTN HwAddressSize; + UINT16 VlanId; // // Get MAC address of this network device. @@ -638,9 +636,10 @@ IScsiAddNic ( // NET_LIST_FOR_EACH (Entry, &mPrivate->NicInfoList) { NicInfo = NET_LIST_USER_STRUCT (Entry, ISCSI_NIC_INFO, Link); - if (NicInfo->HwAddressSize == HwAddressSize && - CompareMem (&NicInfo->PermanentAddress, MacAddr.Addr, HwAddressSize) == 0 && - NicInfo->VlanId == VlanId) { + if ((NicInfo->HwAddressSize == HwAddressSize) && + (CompareMem (&NicInfo->PermanentAddress, MacAddr.Addr, HwAddressSize) == 0) && + (NicInfo->VlanId == VlanId)) + { mPrivate->CurrentNic = NicInfo->NicIndex; // @@ -672,10 +671,10 @@ IScsiAddNic ( } CopyMem (&NicInfo->PermanentAddress, MacAddr.Addr, HwAddressSize); - NicInfo->HwAddressSize = (UINT32) HwAddressSize; - NicInfo->VlanId = VlanId; - NicInfo->NicIndex = (UINT8) (mPrivate->MaxNic + 1); - mPrivate->MaxNic = NicInfo->NicIndex; + NicInfo->HwAddressSize = (UINT32)HwAddressSize; + NicInfo->VlanId = VlanId; + NicInfo->NicIndex = (UINT8)(mPrivate->MaxNic + 1); + mPrivate->MaxNic = NicInfo->NicIndex; // // Set IPv6 available flag. @@ -706,7 +705,6 @@ IScsiAddNic ( return EFI_SUCCESS; } - /** Delete the recorded NIC info from global structure. Also delete corresponding attempts. @@ -722,15 +720,15 @@ IScsiRemoveNic ( IN EFI_HANDLE Controller ) { - EFI_STATUS Status; - ISCSI_NIC_INFO *NicInfo; - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - ISCSI_NIC_INFO *ThisNic; - EFI_MAC_ADDRESS MacAddr; - UINTN HwAddressSize; - UINT16 VlanId; + EFI_STATUS Status; + ISCSI_NIC_INFO *NicInfo; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + ISCSI_NIC_INFO *ThisNic; + EFI_MAC_ADDRESS MacAddr; + UINTN HwAddressSize; + UINT16 VlanId; // // Get MAC address of this network device. @@ -752,10 +750,10 @@ IScsiRemoveNic ( NET_LIST_FOR_EACH (Entry, &mPrivate->NicInfoList) { NicInfo = NET_LIST_USER_STRUCT (Entry, ISCSI_NIC_INFO, Link); - if (NicInfo->HwAddressSize == HwAddressSize && - CompareMem (&NicInfo->PermanentAddress, MacAddr.Addr, HwAddressSize) == 0 && - NicInfo->VlanId == VlanId) { - + if ((NicInfo->HwAddressSize == HwAddressSize) && + (CompareMem (&NicInfo->PermanentAddress, MacAddr.Addr, HwAddressSize) == 0) && + (NicInfo->VlanId == VlanId)) + { ThisNic = NicInfo; break; } @@ -780,16 +778,15 @@ IScsiRemoveNic ( RemoveEntryList (&AttemptConfigData->Link); mPrivate->AttemptCount--; - if (AttemptConfigData->SessionConfigData.Enabled == ISCSI_ENABLED_FOR_MPIO && mPrivate->MpioCount > 0) { + if ((AttemptConfigData->SessionConfigData.Enabled == ISCSI_ENABLED_FOR_MPIO) && (mPrivate->MpioCount > 0)) { if (--mPrivate->MpioCount == 0) { mPrivate->EnableMpio = FALSE; } - if (AttemptConfigData->AuthenticationType == ISCSI_AUTH_TYPE_KRB && mPrivate->Krb5MpioCount > 0) { + if ((AttemptConfigData->AuthenticationType == ISCSI_AUTH_TYPE_KRB) && (mPrivate->Krb5MpioCount > 0)) { mPrivate->Krb5MpioCount--; } - - } else if (AttemptConfigData->SessionConfigData.Enabled == ISCSI_ENABLED && mPrivate->SinglePathCount > 0) { + } else if ((AttemptConfigData->SessionConfigData.Enabled == ISCSI_ENABLED) && (mPrivate->SinglePathCount > 0)) { mPrivate->SinglePathCount--; if (mPrivate->ValidSinglePathCount > 0) { @@ -815,19 +812,19 @@ IScsiRemoveNic ( **/ EFI_STATUS IScsiCreateAttempts ( - IN UINTN AttemptNum -) + IN UINTN AttemptNum + ) { - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - ISCSI_SESSION_CONFIG_NVDATA *ConfigData; - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - UINT8 *AttemptOrderTmp; - UINTN TotalNumber; - UINT8 Index; - EFI_STATUS Status; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + ISCSI_SESSION_CONFIG_NVDATA *ConfigData; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + UINT8 *AttemptOrderTmp; + UINTN TotalNumber; + UINT8 Index; + EFI_STATUS Status; - for (Index = 1; Index <= AttemptNum; Index ++) { + for (Index = 1; Index <= AttemptNum; Index++) { // // Get the initialized attempt order. This is used to essure creating attempts by order. // @@ -841,6 +838,7 @@ IScsiCreateAttempts ( Status = EFI_SUCCESS; break; } + TotalNumber++; // @@ -851,6 +849,7 @@ IScsiCreateAttempts ( if (AttemptConfigOrder != NULL) { FreePool (AttemptConfigOrder); } + return EFI_OUT_OF_RESOURCES; } @@ -872,10 +871,14 @@ IScsiCreateAttempts ( ); FreePool (AttemptConfigOrder); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, + DEBUG (( + DEBUG_ERROR, "%a: Failed to set 'InitialAttemptOrder' with Guid (%g): " "%r\n", - __FUNCTION__, &gIScsiConfigGuid, Status)); + __FUNCTION__, + &gIScsiConfigGuid, + Status + )); return Status; } @@ -886,6 +889,7 @@ IScsiCreateAttempts ( if (AttemptConfigData == NULL) { return EFI_OUT_OF_RESOURCES; } + ConfigData = &AttemptConfigData->SessionConfigData; ConfigData->TargetPort = ISCSI_WELL_KNOWN_PORT; ConfigData->ConnectTimeout = CONNECT_DEFAULT_TIMEOUT; @@ -903,9 +907,9 @@ IScsiCreateAttempts ( // UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", - (UINTN) AttemptConfigData->AttemptConfigIndex + (UINTN)AttemptConfigData->AttemptConfigIndex ); UnicodeStrToAsciiStrS (mPrivate->PortString, AttemptConfigData->AttemptName, ATTEMPT_NAME_SIZE); @@ -918,10 +922,14 @@ IScsiCreateAttempts ( ); FreePool (AttemptConfigData); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, - "%a: Failed to set variable (mPrivate->PortString) with Guid (%g): " - "%r\n", - __FUNCTION__, &gEfiIScsiInitiatorNameProtocolGuid, Status)); + DEBUG (( + DEBUG_ERROR, + "%a: Failed to set variable (mPrivate->PortString) with Guid (%g): " + "%r\n", + __FUNCTION__, + &gEfiIScsiInitiatorNameProtocolGuid, + Status + )); return Status; } } @@ -941,18 +949,18 @@ IScsiCreateAttempts ( **/ EFI_STATUS IScsiCreateKeywords ( - IN UINTN KeywordNum -) + IN UINTN KeywordNum + ) { - VOID *StartOpCodeHandle; - EFI_IFR_GUID_LABEL *StartLabel; - VOID *EndOpCodeHandle; - EFI_IFR_GUID_LABEL *EndLabel; - UINTN Index; - EFI_STRING_ID StringToken; - CHAR16 StringId[64]; - CHAR16 KeywordId[32]; - EFI_STATUS Status; + VOID *StartOpCodeHandle; + EFI_IFR_GUID_LABEL *StartLabel; + VOID *EndOpCodeHandle; + EFI_IFR_GUID_LABEL *EndLabel; + UINTN Index; + EFI_STRING_ID StringToken; + CHAR16 StringId[64]; + CHAR16 KeywordId[32]; + EFI_STATUS Status; Status = IScsiCreateOpCode ( KEYWORD_ENTRY_LABEL, @@ -965,7 +973,7 @@ IScsiCreateKeywords ( return EFI_OUT_OF_RESOURCES; } - for (Index = 1; Index <= KeywordNum; Index ++) { + for (Index = 1; Index <= KeywordNum; Index++) { // // Create iSCSIAttemptName Keyword. // @@ -980,9 +988,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_ATTEMPT_NAME_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_ATTEMPT_NAME_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_ATTEMPT_NAME_VAR_OFFSET + ATTEMPT_NAME_SIZE * (Index - 1) * sizeof (CHAR16)), + (UINT16)(ATTEMPT_ATTEMPT_NAME_VAR_OFFSET + ATTEMPT_NAME_SIZE * (Index - 1) * sizeof (CHAR16)), StringToken, StringToken, EFI_IFR_FLAG_READ_ONLY, @@ -1006,9 +1014,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateNumericOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_BOOTENABLE_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_BOOTENABLE_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_BOOTENABLE_VAR_OFFSET + (Index - 1)), + (UINT16)(ATTEMPT_BOOTENABLE_VAR_OFFSET + (Index - 1)), StringToken, StringToken, 0, @@ -1033,9 +1041,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateNumericOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_ADDRESS_TYPE_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_ADDRESS_TYPE_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_ADDRESS_TYPE_VAR_OFFSET + (Index - 1)), + (UINT16)(ATTEMPT_ADDRESS_TYPE_VAR_OFFSET + (Index - 1)), StringToken, StringToken, 0, @@ -1060,9 +1068,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateNumericOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_CONNECT_RETRY_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_CONNECT_RETRY_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_CONNECT_RETRY_VAR_OFFSET + (Index - 1)), + (UINT16)(ATTEMPT_CONNECT_RETRY_VAR_OFFSET + (Index - 1)), StringToken, StringToken, 0, @@ -1087,9 +1095,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateNumericOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_CONNECT_TIMEOUT_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_CONNECT_TIMEOUT_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET + 2 * (Index - 1)), + (UINT16)(ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET + 2 * (Index - 1)), StringToken, StringToken, 0, @@ -1114,9 +1122,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_ISID_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_ISID_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_ISID_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_ISID_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, STRING_TOKEN (STR_ISCSI_ISID_HELP), 0, @@ -1139,19 +1147,19 @@ IScsiCreateKeywords ( UnicodeSPrint (KeywordId, sizeof (KeywordId), L"iSCSIInitiatorInfoViaDHCP:%d", Index); HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateNumericOpCode ( - StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_INITIATOR_VIA_DHCP_QUESTION_ID + (Index - 1)), - CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET + (Index - 1)), - StringToken, - StringToken, - 0, - 0, - 0, - 1, - 0, - NULL - ); + StartOpCodeHandle, + (EFI_QUESTION_ID)(ATTEMPT_INITIATOR_VIA_DHCP_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, + (UINT16)(ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET + (Index - 1)), + StringToken, + StringToken, + 0, + 0, + 0, + 1, + 0, + NULL + ); // // Create iSCSIInitiatorIpAddress Keyword. @@ -1167,9 +1175,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_INITIATOR_IP_ADDRESS_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_INITIATOR_IP_ADDRESS_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, StringToken, 0, @@ -1193,9 +1201,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_INITIATOR_NET_MASK_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_INITIATOR_NET_MASK_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, StringToken, 0, @@ -1219,9 +1227,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_INITIATOR_GATE_WAY_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_INITIATOR_GATE_WAY_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, StringToken, 0, @@ -1244,19 +1252,19 @@ IScsiCreateKeywords ( UnicodeSPrint (KeywordId, sizeof (KeywordId), L"iSCSITargetInfoViaDHCP:%d", Index); HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateNumericOpCode ( - StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_TARGET_VIA_DHCP_QUESTION_ID + (Index - 1)), - CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET + (Index - 1)), - StringToken, - StringToken, - 0, - 0, - 0, - 1, - 0, - NULL - ); + StartOpCodeHandle, + (EFI_QUESTION_ID)(ATTEMPT_TARGET_VIA_DHCP_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, + (UINT16)(ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET + (Index - 1)), + StringToken, + StringToken, + 0, + 0, + 0, + 1, + 0, + NULL + ); // // Create iSCSITargetTcpPort Keyword. @@ -1272,9 +1280,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateNumericOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_TARGET_TCP_PORT_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_TARGET_TCP_PORT_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET + 2 * (Index - 1)), + (UINT16)(ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET + 2 * (Index - 1)), StringToken, StringToken, 0, @@ -1299,9 +1307,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_TARGET_NAME_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_TARGET_NAME_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_TARGET_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_TARGET_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, StringToken, 0, @@ -1325,9 +1333,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_TARGET_IP_ADDRESS_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_TARGET_IP_ADDRESS_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, StringToken, 0, @@ -1351,9 +1359,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_LUN_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_LUN_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_LUN_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_LUN_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, StringToken, 0, @@ -1376,19 +1384,19 @@ IScsiCreateKeywords ( UnicodeSPrint (KeywordId, sizeof (KeywordId), L"iSCSIAuthenticationMethod:%d", Index); HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateNumericOpCode ( - StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_AUTHENTICATION_METHOD_QUESTION_ID + (Index - 1)), - CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET + (Index - 1)), - StringToken, - StringToken, - 0, - 0, - 0, - 1, - 0, - NULL - ); + StartOpCodeHandle, + (EFI_QUESTION_ID)(ATTEMPT_AUTHENTICATION_METHOD_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, + (UINT16)(ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET + (Index - 1)), + StringToken, + StringToken, + 0, + 0, + 0, + 1, + 0, + NULL + ); // // Create iSCSIChapType Keyword. @@ -1403,19 +1411,19 @@ IScsiCreateKeywords ( UnicodeSPrint (KeywordId, sizeof (KeywordId), L"iSCSIChapType:%d", Index); HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateNumericOpCode ( - StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_CHARTYPE_QUESTION_ID + (Index - 1)), - CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_CHARTYPE_VAR_OFFSET + (Index - 1)), - StringToken, - StringToken, - 0, - 0, - 0, - 1, - 0, - NULL - ); + StartOpCodeHandle, + (EFI_QUESTION_ID)(ATTEMPT_CHARTYPE_QUESTION_ID + (Index - 1)), + CONFIGURATION_VARSTORE_ID, + (UINT16)(ATTEMPT_CHARTYPE_VAR_OFFSET + (Index - 1)), + StringToken, + StringToken, + 0, + 0, + 0, + 1, + 0, + NULL + ); // // Create iSCSIChapUsername Keyword. @@ -1431,9 +1439,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_CHAR_USER_NAME_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_CHAR_USER_NAME_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_CHAR_USER_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_CHAR_USER_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, StringToken, 0, @@ -1457,9 +1465,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_CHAR_SECRET_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_CHAR_SECRET_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_CHAR_SECRET_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_CHAR_SECRET_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, StringToken, 0, @@ -1483,9 +1491,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_CHAR_REVERSE_USER_NAME_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_CHAR_REVERSE_USER_NAME_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, StringToken, 0, @@ -1509,9 +1517,9 @@ IScsiCreateKeywords ( HiiSetString (mCallbackInfo->RegisteredHandle, StringToken, KeywordId, "x-UEFI-ns"); HiiCreateStringOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (ATTEMPT_CHAR_REVERSE_SECRET_QUESTION_ID + (Index - 1)), + (EFI_QUESTION_ID)(ATTEMPT_CHAR_REVERSE_SECRET_QUESTION_ID + (Index - 1)), CONFIGURATION_VARSTORE_ID, - (UINT16) (ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), + (UINT16)(ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET + sizeof (KEYWORD_STR) * (Index - 1)), StringToken, StringToken, 0, @@ -1544,12 +1552,12 @@ IScsiCreateKeywords ( VOID IScsiCleanAttemptVariable ( IN VOID -) + ) { - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - UINTN Index; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + UINTN Index; // // Get the initialized attempt order. @@ -1559,14 +1567,14 @@ IScsiCleanAttemptVariable ( &gIScsiConfigGuid, &AttemptConfigOrderSize ); - if (AttemptConfigOrder == NULL || AttemptConfigOrderSize == 0) { + if ((AttemptConfigOrder == NULL) || (AttemptConfigOrderSize == 0)) { return; } for (Index = 1; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", Index ); @@ -1574,7 +1582,7 @@ IScsiCleanAttemptVariable ( GetVariable2 ( mPrivate->PortString, &gEfiIScsiInitiatorNameProtocolGuid, - (VOID**)&AttemptConfigData, + (VOID **)&AttemptConfigData, NULL ); @@ -1588,6 +1596,7 @@ IScsiCleanAttemptVariable ( ); } } + return; } @@ -1601,11 +1610,11 @@ IScsiCleanAttemptVariable ( **/ ISCSI_NIC_INFO * IScsiGetNicInfoByIndex ( - IN UINT8 NicIndex + IN UINT8 NicIndex ) { - LIST_ENTRY *Entry; - ISCSI_NIC_INFO *NicInfo; + LIST_ENTRY *Entry; + ISCSI_NIC_INFO *NicInfo; NET_LIST_FOR_EACH (Entry, &mPrivate->NicInfoList) { NicInfo = NET_LIST_USER_STRUCT (Entry, ISCSI_NIC_INFO, Link); @@ -1617,7 +1626,6 @@ IScsiGetNicInfoByIndex ( return NULL; } - /** Get the NIC's PCI location and return it according to the composited format defined in iSCSI Boot Firmware Table. @@ -1647,7 +1655,7 @@ IScsiGetNICPciLocation ( Status = gBS->HandleProtocol ( Controller, &gEfiDevicePathProtocolGuid, - (VOID **) &DevicePath + (VOID **)&DevicePath ); if (EFI_ERROR (Status)) { return 0; @@ -1662,7 +1670,7 @@ IScsiGetNICPciLocation ( return 0; } - Status = gBS->HandleProtocol (PciIoHandle, &gEfiPciIoProtocolGuid, (VOID **) &PciIo); + Status = gBS->HandleProtocol (PciIoHandle, &gEfiPciIoProtocolGuid, (VOID **)&PciIo); if (EFI_ERROR (Status)) { return 0; } @@ -1672,10 +1680,9 @@ IScsiGetNICPciLocation ( return 0; } - return (UINT16) ((*Bus << 8) | (*Device << 3) | *Function); + return (UINT16)((*Bus << 8) | (*Device << 3) | *Function); } - /** Read the EFI variable (VendorGuid/Name) and return a dynamically allocated buffer, and the size of the buffer. If failure, return NULL. @@ -1691,9 +1698,9 @@ IScsiGetNICPciLocation ( **/ VOID * IScsiGetVariableAndSize ( - IN CHAR16 *Name, - IN EFI_GUID *VendorGuid, - OUT UINTN *VariableSize + IN CHAR16 *Name, + IN EFI_GUID *VendorGuid, + OUT UINTN *VariableSize ) { EFI_STATUS Status; @@ -1705,8 +1712,8 @@ IScsiGetVariableAndSize ( // // Pass in a zero size buffer to find the required buffer size. // - BufferSize = 0; - Status = gRT->GetVariable (Name, VendorGuid, NULL, &BufferSize, Buffer); + BufferSize = 0; + Status = gRT->GetVariable (Name, VendorGuid, NULL, &BufferSize, Buffer); if (Status == EFI_BUFFER_TOO_SMALL) { // // Allocate the buffer to return @@ -1715,6 +1722,7 @@ IScsiGetVariableAndSize ( if (Buffer == NULL) { return NULL; } + // // Read variable into the allocated buffer. // @@ -1728,7 +1736,6 @@ IScsiGetVariableAndSize ( return Buffer; } - /** Create the iSCSI driver data. @@ -1745,8 +1752,8 @@ IScsiCreateDriverData ( IN EFI_HANDLE Controller ) { - ISCSI_DRIVER_DATA *Private; - EFI_STATUS Status; + ISCSI_DRIVER_DATA *Private; + EFI_STATUS Status; Private = AllocateZeroPool (sizeof (ISCSI_DRIVER_DATA)); if (Private == NULL) { @@ -1776,7 +1783,7 @@ IScsiCreateDriverData ( } Private->ExtScsiPassThruHandle = NULL; - CopyMem(&Private->IScsiExtScsiPassThru, &gIScsiExtScsiPassThruProtocolTemplate, sizeof(EFI_EXT_SCSI_PASS_THRU_PROTOCOL)); + CopyMem (&Private->IScsiExtScsiPassThru, &gIScsiExtScsiPassThruProtocolTemplate, sizeof (EFI_EXT_SCSI_PASS_THRU_PROTOCOL)); // // 0 is designated to the TargetId, so use another value for the AdapterId. @@ -1789,7 +1796,6 @@ IScsiCreateDriverData ( return Private; } - /** Clean the iSCSI driver data. @@ -1804,7 +1810,7 @@ IScsiCleanDriverData ( IN ISCSI_DRIVER_DATA *Private ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = EFI_SUCCESS; @@ -1859,24 +1865,24 @@ IScsiDhcpIsConfigured ( IN UINT8 IpVersion ) { - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - UINTN Index; - EFI_STATUS Status; - EFI_MAC_ADDRESS MacAddr; - UINTN HwAddressSize; - UINT16 VlanId; - CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; - CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; - CHAR16 AttemptName[ISCSI_NAME_IFR_MAX_SIZE]; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + UINTN Index; + EFI_STATUS Status; + EFI_MAC_ADDRESS MacAddr; + UINTN HwAddressSize; + UINT16 VlanId; + CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; + CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; + CHAR16 AttemptName[ISCSI_NAME_IFR_MAX_SIZE]; AttemptConfigOrder = IScsiGetVariableAndSize ( L"AttemptOrder", &gIScsiConfigGuid, &AttemptConfigOrderSize ); - if (AttemptConfigOrder == NULL || AttemptConfigOrderSize == 0) { + if ((AttemptConfigOrder == NULL) || (AttemptConfigOrderSize == 0)) { return FALSE; } @@ -1884,29 +1890,30 @@ IScsiDhcpIsConfigured ( // Get MAC address of this network device. // Status = NetLibGetMacAddress (Controller, &MacAddr, &HwAddressSize); - if(EFI_ERROR (Status)) { + if (EFI_ERROR (Status)) { return FALSE; } + // // Get VLAN ID of this network device. // VlanId = NetLibGetVlanId (Controller); - IScsiMacAddrToStr (&MacAddr, (UINT32) HwAddressSize, VlanId, MacString); + IScsiMacAddrToStr (&MacAddr, (UINT32)HwAddressSize, VlanId, MacString); for (Index = 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { UnicodeSPrint ( AttemptName, - (UINTN) 128, + (UINTN)128, L"Attempt %d", - (UINTN) AttemptConfigOrder[Index] + (UINTN)AttemptConfigOrder[Index] ); Status = GetVariable2 ( AttemptName, &gEfiIScsiInitiatorNameProtocolGuid, - (VOID**)&AttemptTmp, + (VOID **)&AttemptTmp, NULL ); - if(AttemptTmp == NULL || EFI_ERROR (Status)) { + if ((AttemptTmp == NULL) || EFI_ERROR (Status)) { continue; } @@ -1917,21 +1924,23 @@ IScsiDhcpIsConfigured ( continue; } - if (AttemptTmp->SessionConfigData.IpMode != IP_MODE_AUTOCONFIG && - AttemptTmp->SessionConfigData.IpMode != ((IpVersion == IP_VERSION_4) ? IP_MODE_IP4 : IP_MODE_IP6)) { + if ((AttemptTmp->SessionConfigData.IpMode != IP_MODE_AUTOCONFIG) && + (AttemptTmp->SessionConfigData.IpMode != ((IpVersion == IP_VERSION_4) ? IP_MODE_IP4 : IP_MODE_IP6))) + { FreePool (AttemptTmp); continue; } AsciiStrToUnicodeStrS (AttemptTmp->MacString, AttemptMacString, sizeof (AttemptMacString) / sizeof (AttemptMacString[0])); - if (AttemptTmp->Actived == ISCSI_ACTIVE_DISABLED || StrCmp (MacString, AttemptMacString)) { + if ((AttemptTmp->Actived == ISCSI_ACTIVE_DISABLED) || StrCmp (MacString, AttemptMacString)) { continue; } - if(AttemptTmp->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG || - AttemptTmp->SessionConfigData.InitiatorInfoFromDhcp == TRUE || - AttemptTmp->SessionConfigData.TargetInfoFromDhcp == TRUE) { + if ((AttemptTmp->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG) || + (AttemptTmp->SessionConfigData.InitiatorInfoFromDhcp == TRUE) || + (AttemptTmp->SessionConfigData.TargetInfoFromDhcp == TRUE)) + { FreePool (AttemptTmp); FreePool (AttemptConfigOrder); return TRUE; @@ -1958,24 +1967,24 @@ IScsiDnsIsConfigured ( IN EFI_HANDLE Controller ) { - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - UINTN Index; - EFI_STATUS Status; - EFI_MAC_ADDRESS MacAddr; - UINTN HwAddressSize; - UINT16 VlanId; - CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; - CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; - CHAR16 AttemptName[ISCSI_NAME_IFR_MAX_SIZE]; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + UINTN Index; + EFI_STATUS Status; + EFI_MAC_ADDRESS MacAddr; + UINTN HwAddressSize; + UINT16 VlanId; + CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; + CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; + CHAR16 AttemptName[ISCSI_NAME_IFR_MAX_SIZE]; AttemptConfigOrder = IScsiGetVariableAndSize ( L"AttemptOrder", &gIScsiConfigGuid, &AttemptConfigOrderSize ); - if (AttemptConfigOrder == NULL || AttemptConfigOrderSize == 0) { + if ((AttemptConfigOrder == NULL) || (AttemptConfigOrderSize == 0)) { return FALSE; } @@ -1983,30 +1992,31 @@ IScsiDnsIsConfigured ( // Get MAC address of this network device. // Status = NetLibGetMacAddress (Controller, &MacAddr, &HwAddressSize); - if(EFI_ERROR (Status)) { + if (EFI_ERROR (Status)) { return FALSE; } + // // Get VLAN ID of this network device. // VlanId = NetLibGetVlanId (Controller); - IScsiMacAddrToStr (&MacAddr, (UINT32) HwAddressSize, VlanId, MacString); + IScsiMacAddrToStr (&MacAddr, (UINT32)HwAddressSize, VlanId, MacString); for (Index = 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { UnicodeSPrint ( AttemptName, - (UINTN) 128, + (UINTN)128, L"Attempt %d", - (UINTN) AttemptConfigOrder[Index] + (UINTN)AttemptConfigOrder[Index] ); Status = GetVariable2 ( AttemptName, &gEfiIScsiInitiatorNameProtocolGuid, - (VOID**)&AttemptTmp, + (VOID **)&AttemptTmp, NULL ); - if(AttemptTmp == NULL || EFI_ERROR (Status)) { + if ((AttemptTmp == NULL) || EFI_ERROR (Status)) { continue; } @@ -2014,7 +2024,7 @@ IScsiDnsIsConfigured ( AsciiStrToUnicodeStrS (AttemptTmp->MacString, AttemptMacString, sizeof (AttemptMacString) / sizeof (AttemptMacString[0])); - if (AttemptTmp->SessionConfigData.Enabled == ISCSI_DISABLED || StrCmp (MacString, AttemptMacString)) { + if ((AttemptTmp->SessionConfigData.Enabled == ISCSI_DISABLED) || StrCmp (MacString, AttemptMacString)) { FreePool (AttemptTmp); continue; } @@ -2027,12 +2037,10 @@ IScsiDnsIsConfigured ( FreePool (AttemptTmp); continue; } - } FreePool (AttemptConfigOrder); return FALSE; - } /** @@ -2050,17 +2058,17 @@ IScsiGetConfigData ( IN ISCSI_DRIVER_DATA *Private ) { - EFI_STATUS Status; - CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; - CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; - UINTN Index; - ISCSI_NIC_INFO *NicInfo; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; - ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; - UINT8 *AttemptConfigOrder; - UINTN AttemptConfigOrderSize; - CHAR16 IScsiMode[64]; - CHAR16 IpMode[64]; + EFI_STATUS Status; + CHAR16 MacString[ISCSI_MAX_MAC_STRING_LEN]; + CHAR16 AttemptMacString[ISCSI_MAX_MAC_STRING_LEN]; + UINTN Index; + ISCSI_NIC_INFO *NicInfo; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptConfigData; + ISCSI_ATTEMPT_CONFIG_NVDATA *AttemptTmp; + UINT8 *AttemptConfigOrder; + UINTN AttemptConfigOrderSize; + CHAR16 IScsiMode[64]; + CHAR16 IpMode[64]; // // There should be at least one attempt configured. @@ -2070,19 +2078,19 @@ IScsiGetConfigData ( &gIScsiConfigGuid, &AttemptConfigOrderSize ); - if (AttemptConfigOrder == NULL || AttemptConfigOrderSize == 0) { + if ((AttemptConfigOrder == NULL) || (AttemptConfigOrderSize == 0)) { return EFI_NOT_FOUND; } // // Get the iSCSI Initiator Name. // - mPrivate->InitiatorNameLength = ISCSI_NAME_MAX_SIZE; - Status = gIScsiInitiatorName.Get ( - &gIScsiInitiatorName, - &mPrivate->InitiatorNameLength, - mPrivate->InitiatorName - ); + mPrivate->InitiatorNameLength = ISCSI_NAME_MAX_SIZE; + Status = gIScsiInitiatorName.Get ( + &gIScsiInitiatorName, + &mPrivate->InitiatorNameLength, + mPrivate->InitiatorName + ); if (EFI_ERROR (Status)) { return Status; } @@ -2091,27 +2099,29 @@ IScsiGetConfigData ( // Get the normal configuration. // for (Index = 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) { - // // Check whether the attempt exists in AttemptConfig. // AttemptTmp = IScsiConfigGetAttemptByConfigIndex (AttemptConfigOrder[Index]); - if (AttemptTmp != NULL && AttemptTmp->SessionConfigData.Enabled == ISCSI_DISABLED) { + if ((AttemptTmp != NULL) && (AttemptTmp->SessionConfigData.Enabled == ISCSI_DISABLED)) { continue; - } else if (AttemptTmp != NULL && AttemptTmp->SessionConfigData.Enabled != ISCSI_DISABLED) { + } else if ((AttemptTmp != NULL) && (AttemptTmp->SessionConfigData.Enabled != ISCSI_DISABLED)) { // // Check the autoconfig path to see whether it should be retried. // - if (AttemptTmp->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG && - !AttemptTmp->AutoConfigureSuccess) { + if ((AttemptTmp->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG) && + !AttemptTmp->AutoConfigureSuccess) + { if (mPrivate->Ipv6Flag && - AttemptTmp->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6) { + (AttemptTmp->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6)) + { // // Autoconfigure for IP6 already attempted but failed. Do not try again. // continue; } else if (!mPrivate->Ipv6Flag && - AttemptTmp->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP4) { + (AttemptTmp->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP4)) + { // // Autoconfigure for IP4 already attempted but failed. Do not try again. // @@ -2121,7 +2131,7 @@ IScsiGetConfigData ( // Try another approach for this autoconfigure path. // AttemptTmp->AutoConfigureMode = - (UINT8) (mPrivate->Ipv6Flag ? IP_MODE_AUTOCONFIG_IP6 : IP_MODE_AUTOCONFIG_IP4); + (UINT8)(mPrivate->Ipv6Flag ? IP_MODE_AUTOCONFIG_IP6 : IP_MODE_AUTOCONFIG_IP4); AttemptTmp->SessionConfigData.InitiatorInfoFromDhcp = TRUE; AttemptTmp->SessionConfigData.TargetInfoFromDhcp = TRUE; AttemptTmp->DhcpSuccess = FALSE; @@ -2146,9 +2156,9 @@ IScsiGetConfigData ( // UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", - (UINTN) AttemptTmp->AttemptConfigIndex + (UINTN)AttemptTmp->AttemptConfigIndex ); gRT->SetVariable ( @@ -2163,7 +2173,8 @@ IScsiGetConfigData ( } } else if (AttemptTmp->SessionConfigData.InitiatorInfoFromDhcp && !AttemptTmp->ValidPath && - AttemptTmp->NicIndex == mPrivate->CurrentNic) { + (AttemptTmp->NicIndex == mPrivate->CurrentNic)) + { // // If the attempt associates with the current NIC, we can // get DHCP information for already added, but failed, attempt. @@ -2186,9 +2197,9 @@ IScsiGetConfigData ( // UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", - (UINTN) AttemptTmp->AttemptConfigIndex + (UINTN)AttemptTmp->AttemptConfigIndex ); gRT->SetVariable ( @@ -2200,7 +2211,6 @@ IScsiGetConfigData ( ); continue; - } else { continue; } @@ -2215,21 +2225,22 @@ IScsiGetConfigData ( IScsiMacAddrToStr (&NicInfo->PermanentAddress, NicInfo->HwAddressSize, NicInfo->VlanId, MacString); UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", - (UINTN) AttemptConfigOrder[Index] + (UINTN)AttemptConfigOrder[Index] ); GetVariable2 ( mPrivate->PortString, &gEfiIScsiInitiatorNameProtocolGuid, - (VOID**)&AttemptConfigData, + (VOID **)&AttemptConfigData, NULL ); AsciiStrToUnicodeStrS (AttemptConfigData->MacString, AttemptMacString, sizeof (AttemptMacString) / sizeof (AttemptMacString[0])); - if (AttemptConfigData == NULL || AttemptConfigData->Actived == ISCSI_ACTIVE_DISABLED || - StrCmp (MacString, AttemptMacString)) { + if ((AttemptConfigData == NULL) || (AttemptConfigData->Actived == ISCSI_ACTIVE_DISABLED) || + StrCmp (MacString, AttemptMacString)) + { continue; } @@ -2237,7 +2248,7 @@ IScsiGetConfigData ( AttemptConfigData->NicIndex = NicInfo->NicIndex; AttemptConfigData->DhcpSuccess = FALSE; - AttemptConfigData->ValidiBFTPath = (BOOLEAN) (mPrivate->EnableMpio ? TRUE : FALSE); + AttemptConfigData->ValidiBFTPath = (BOOLEAN)(mPrivate->EnableMpio ? TRUE : FALSE); AttemptConfigData->ValidPath = FALSE; if (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG) { @@ -2245,26 +2256,28 @@ IScsiGetConfigData ( AttemptConfigData->SessionConfigData.TargetInfoFromDhcp = TRUE; AttemptConfigData->AutoConfigureMode = - (UINT8) (mPrivate->Ipv6Flag ? IP_MODE_AUTOCONFIG_IP6 : IP_MODE_AUTOCONFIG_IP4); + (UINT8)(mPrivate->Ipv6Flag ? IP_MODE_AUTOCONFIG_IP6 : IP_MODE_AUTOCONFIG_IP4); AttemptConfigData->AutoConfigureSuccess = FALSE; } // // Get some information from dhcp server. // - if (AttemptConfigData->SessionConfigData.Enabled != ISCSI_DISABLED && - AttemptConfigData->SessionConfigData.InitiatorInfoFromDhcp) { - + if ((AttemptConfigData->SessionConfigData.Enabled != ISCSI_DISABLED) && + AttemptConfigData->SessionConfigData.InitiatorInfoFromDhcp) + { if (!mPrivate->Ipv6Flag && - (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_IP4 || - AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP4)) { + ((AttemptConfigData->SessionConfigData.IpMode == IP_MODE_IP4) || + (AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP4))) + { Status = IScsiDoDhcp (Private->Image, Private->Controller, AttemptConfigData); if (!EFI_ERROR (Status)) { AttemptConfigData->DhcpSuccess = TRUE; } } else if (mPrivate->Ipv6Flag && - (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_IP6 || - AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6)) { + ((AttemptConfigData->SessionConfigData.IpMode == IP_MODE_IP6) || + (AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6))) + { Status = IScsiDoDhcp6 (Private->Image, Private->Controller, AttemptConfigData); if (!EFI_ERROR (Status)) { AttemptConfigData->DhcpSuccess = TRUE; @@ -2276,9 +2289,9 @@ IScsiGetConfigData ( // UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", - (UINTN) AttemptConfigData->AttemptConfigIndex + (UINTN)AttemptConfigData->AttemptConfigIndex ); gRT->SetVariable ( @@ -2312,7 +2325,7 @@ IScsiGetConfigData ( UnicodeSPrint ( mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + (UINTN)ISCSI_NAME_IFR_MAX_SIZE, L"MAC: %s, PFA: Bus %d | Dev %d | Func %d, iSCSI mode: %s, IP version: %s", MacString, NicInfo->BusNumber, @@ -2377,13 +2390,13 @@ IScsiGetConfigData ( if (mPrivate->SinglePathCount == 0) { return EFI_NOT_FOUND; } + mPrivate->ValidSinglePathCount = mPrivate->SinglePathCount; } return EFI_SUCCESS; } - /** Get the device path of the iSCSI tcp connection and update it. @@ -2395,7 +2408,7 @@ IScsiGetConfigData ( **/ EFI_DEVICE_PATH_PROTOCOL * IScsiGetTcpConnDevicePath ( - IN ISCSI_SESSION *Session + IN ISCSI_SESSION *Session ) { ISCSI_CONNECTION *Conn; @@ -2418,28 +2431,29 @@ IScsiGetTcpConnDevicePath ( Status = gBS->HandleProtocol ( Conn->TcpIo.Handle, &gEfiDevicePathProtocolGuid, - (VOID **) &DevicePath + (VOID **)&DevicePath ); if (EFI_ERROR (Status)) { return NULL; } + // // Duplicate it. // - DevicePath = DuplicateDevicePath (DevicePath); + DevicePath = DuplicateDevicePath (DevicePath); if (DevicePath == NULL) { return NULL; } - DPathNode = (EFI_DEV_PATH *) DevicePath; + DPathNode = (EFI_DEV_PATH *)DevicePath; while (!IsDevicePathEnd (&DPathNode->DevPath)) { if (DevicePathType (&DPathNode->DevPath) == MESSAGING_DEVICE_PATH) { - if (!Conn->Ipv6Flag && DevicePathSubType (&DPathNode->DevPath) == MSG_IPv4_DP) { - DPathNode->Ipv4.LocalPort = 0; + if (!Conn->Ipv6Flag && (DevicePathSubType (&DPathNode->DevPath) == MSG_IPv4_DP)) { + DPathNode->Ipv4.LocalPort = 0; DPathNode->Ipv4.StaticIpAddress = - (BOOLEAN) (!Session->ConfigData->SessionConfigData.InitiatorInfoFromDhcp); + (BOOLEAN)(!Session->ConfigData->SessionConfigData.InitiatorInfoFromDhcp); // // Add a judgement here to support previous versions of IPv4_DEVICE_PATH. @@ -2451,7 +2465,6 @@ IScsiGetTcpConnDevicePath ( PathLen = DevicePathNodeLength (&DPathNode->Ipv4); if (PathLen == IP4_NODE_LEN_NEW_VERSIONS) { - IP4_COPY_ADDRESS ( &DPathNode->Ipv4.GatewayIpAddress, &Session->ConfigData->SessionConfigData.Gateway @@ -2464,8 +2477,8 @@ IScsiGetTcpConnDevicePath ( } break; - } else if (Conn->Ipv6Flag && DevicePathSubType (&DPathNode->DevPath) == MSG_IPv6_DP) { - DPathNode->Ipv6.LocalPort = 0; + } else if (Conn->Ipv6Flag && (DevicePathSubType (&DPathNode->DevPath) == MSG_IPv6_DP)) { + DPathNode->Ipv6.LocalPort = 0; // // Add a judgement here to support previous versions of IPv6_DEVICE_PATH. @@ -2478,32 +2491,28 @@ IScsiGetTcpConnDevicePath ( PathLen = DevicePathNodeLength (&DPathNode->Ipv6); if (PathLen == IP6_NODE_LEN_NEW_VERSIONS ) { - DPathNode->Ipv6.IpAddressOrigin = 0; DPathNode->Ipv6.PrefixLength = IP6_PREFIX_LENGTH; ZeroMem (&DPathNode->Ipv6.GatewayIpAddress, sizeof (EFI_IPv6_ADDRESS)); - } - else if (PathLen == IP6_NODE_LEN_OLD_VERSIONS) { - + } else if (PathLen == IP6_NODE_LEN_OLD_VERSIONS) { // // StaticIPAddress is a field in old versions of IPv6_DEVICE_PATH, while ignored in new // version. Set StaticIPAddress through its' offset in old IPv6_DEVICE_PATH. // *((UINT8 *)(&DPathNode->Ipv6) + IP6_OLD_IPADDRESS_OFFSET) = - (BOOLEAN) (!Session->ConfigData->SessionConfigData.InitiatorInfoFromDhcp); + (BOOLEAN)(!Session->ConfigData->SessionConfigData.InitiatorInfoFromDhcp); } break; } } - DPathNode = (EFI_DEV_PATH *) NextDevicePathNode (&DPathNode->DevPath); + DPathNode = (EFI_DEV_PATH *)NextDevicePathNode (&DPathNode->DevPath); } return DevicePath; } - /** Abort the session when the transition from BS to RT is initiated. @@ -2518,9 +2527,9 @@ IScsiOnExitBootService ( IN VOID *Context ) { - ISCSI_DRIVER_DATA *Private; + ISCSI_DRIVER_DATA *Private; - Private = (ISCSI_DRIVER_DATA *) Context; + Private = (ISCSI_DRIVER_DATA *)Context; gBS->CloseEvent (Private->ExitBootServiceEvent); Private->ExitBootServiceEvent = NULL; @@ -2556,14 +2565,14 @@ IScsiOnExitBootService ( EFI_STATUS EFIAPI IScsiTestManagedDevice ( - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE DriverBindingHandle, - IN EFI_GUID *ProtocolGuid + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE DriverBindingHandle, + IN EFI_GUID *ProtocolGuid ) { - EFI_STATUS Status; - VOID *ManagedInterface; - EFI_HANDLE NicControllerHandle; + EFI_STATUS Status; + VOID *ManagedInterface; + EFI_HANDLE NicControllerHandle; ASSERT (ProtocolGuid != NULL); @@ -2574,7 +2583,7 @@ IScsiTestManagedDevice ( Status = gBS->OpenProtocol ( ControllerHandle, - (EFI_GUID *) ProtocolGuid, + (EFI_GUID *)ProtocolGuid, &ManagedInterface, DriverBindingHandle, NicControllerHandle, @@ -2583,7 +2592,7 @@ IScsiTestManagedDevice ( if (!EFI_ERROR (Status)) { gBS->CloseProtocol ( ControllerHandle, - (EFI_GUID *) ProtocolGuid, + (EFI_GUID *)ProtocolGuid, DriverBindingHandle, NicControllerHandle ); diff --git a/NetworkPkg/IScsiDxe/IScsiMisc.h b/NetworkPkg/IScsiDxe/IScsiMisc.h index fddef4f466..a951eee70e 100644 --- a/NetworkPkg/IScsiDxe/IScsiMisc.h +++ b/NetworkPkg/IScsiDxe/IScsiMisc.h @@ -14,49 +14,47 @@ typedef struct _ISCSI_DRIVER_DATA ISCSI_DRIVER_DATA; /// /// IPv4 Device Path Node Length /// -#define IP4_NODE_LEN_NEW_VERSIONS 27 +#define IP4_NODE_LEN_NEW_VERSIONS 27 /// /// IPv6 Device Path Node Length /// -#define IP6_NODE_LEN_OLD_VERSIONS 43 -#define IP6_NODE_LEN_NEW_VERSIONS 60 +#define IP6_NODE_LEN_OLD_VERSIONS 43 +#define IP6_NODE_LEN_NEW_VERSIONS 60 /// /// The ignored field StaticIpAddress's offset in old IPv6 Device Path /// -#define IP6_OLD_IPADDRESS_OFFSET 42 - +#define IP6_OLD_IPADDRESS_OFFSET 42 #pragma pack(1) typedef struct _ISCSI_SESSION_CONFIG_NVDATA { - UINT16 TargetPort; - UINT8 Enabled; - UINT8 IpMode; - - EFI_IP_ADDRESS LocalIp; - EFI_IPv4_ADDRESS SubnetMask; - EFI_IP_ADDRESS Gateway; + UINT16 TargetPort; + UINT8 Enabled; + UINT8 IpMode; - BOOLEAN InitiatorInfoFromDhcp; - BOOLEAN TargetInfoFromDhcp; + EFI_IP_ADDRESS LocalIp; + EFI_IPv4_ADDRESS SubnetMask; + EFI_IP_ADDRESS Gateway; - CHAR8 TargetName[ISCSI_NAME_MAX_SIZE]; - EFI_IP_ADDRESS TargetIp; - UINT8 PrefixLength; - UINT8 BootLun[8]; + BOOLEAN InitiatorInfoFromDhcp; + BOOLEAN TargetInfoFromDhcp; - UINT16 ConnectTimeout; ///< timeout value in milliseconds. - UINT8 ConnectRetryCount; - UINT8 IsId[6]; + CHAR8 TargetName[ISCSI_NAME_MAX_SIZE]; + EFI_IP_ADDRESS TargetIp; + UINT8 PrefixLength; + UINT8 BootLun[8]; - BOOLEAN RedirectFlag; - UINT16 OriginalTargetPort; // The port of proxy/virtual target. - EFI_IP_ADDRESS OriginalTargetIp; // The address of proxy/virtual target. + UINT16 ConnectTimeout; ///< timeout value in milliseconds. + UINT8 ConnectRetryCount; + UINT8 IsId[6]; - BOOLEAN DnsMode; // Flag indicate whether the Target address is expressed as URL format. - CHAR8 TargetUrl[ISCSI_TARGET_URI_MAX_SIZE]; + BOOLEAN RedirectFlag; + UINT16 OriginalTargetPort; // The port of proxy/virtual target. + EFI_IP_ADDRESS OriginalTargetIp; // The address of proxy/virtual target. + BOOLEAN DnsMode; // Flag indicate whether the Target address is expressed as URL format. + CHAR8 TargetUrl[ISCSI_TARGET_URI_MAX_SIZE]; } ISCSI_SESSION_CONFIG_NVDATA; #pragma pack() @@ -134,9 +132,9 @@ IScsiMacAddrToStr ( **/ EFI_STATUS IScsiAsciiStrToIp ( - IN CHAR8 *Str, - IN UINT8 IpMode, - OUT EFI_IP_ADDRESS *Ip + IN CHAR8 *Str, + IN UINT8 IpMode, + OUT EFI_IP_ADDRESS *Ip ); /** @@ -156,10 +154,10 @@ IScsiAsciiStrToIp ( **/ EFI_STATUS IScsiBinToHex ( - IN UINT8 *BinBuffer, - IN UINT32 BinLength, - IN OUT CHAR8 *HexStr, - IN OUT UINT32 *HexLength + IN UINT8 *BinBuffer, + IN UINT32 BinLength, + IN OUT CHAR8 *HexStr, + IN OUT UINT32 *HexLength ); /** @@ -180,12 +178,11 @@ IScsiBinToHex ( **/ EFI_STATUS IScsiHexToBin ( - IN OUT UINT8 *BinBuffer, - IN OUT UINT32 *BinLength, - IN CHAR8 *HexStr + IN OUT UINT8 *BinBuffer, + IN OUT UINT32 *BinLength, + IN CHAR8 *HexStr ); - /** Convert the decimal-constant string or hex-constant string into a numerical value. @@ -255,7 +252,7 @@ IScsiRemoveNic ( **/ EFI_STATUS IScsiCreateAttempts ( - IN UINTN AttemptNum + IN UINTN AttemptNum ); /** @@ -269,7 +266,7 @@ IScsiCreateAttempts ( **/ EFI_STATUS IScsiCreateKeywords ( - IN UINTN KeywordNum + IN UINTN KeywordNum ); /** @@ -292,10 +289,9 @@ IScsiCleanAttemptVariable ( **/ ISCSI_NIC_INFO * IScsiGetNicInfoByIndex ( - IN UINT8 NicIndex + IN UINT8 NicIndex ); - /** Get the NIC's PCI location and return it according to the composited format defined in iSCSI Boot Firmware Table. @@ -331,9 +327,9 @@ IScsiGetNICPciLocation ( **/ VOID * IScsiGetVariableAndSize ( - IN CHAR16 *Name, - IN EFI_GUID *VendorGuid, - OUT UINTN *VariableSize + IN CHAR16 *Name, + IN EFI_GUID *VendorGuid, + OUT UINTN *VariableSize ); /** @@ -422,7 +418,7 @@ IScsiGetConfigData ( **/ EFI_DEVICE_PATH_PROTOCOL * IScsiGetTcpConnDevicePath ( - IN ISCSI_SESSION *Session + IN ISCSI_SESSION *Session ); /** @@ -465,8 +461,9 @@ IScsiOnExitBootService ( EFI_STATUS EFIAPI IScsiTestManagedDevice ( - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE DriverBindingHandle, - IN EFI_GUID *ProtocolGuid + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE DriverBindingHandle, + IN EFI_GUID *ProtocolGuid ); + #endif diff --git a/NetworkPkg/IScsiDxe/IScsiProto.c b/NetworkPkg/IScsiDxe/IScsiProto.c index 215f275a2d..ef587649a0 100644 --- a/NetworkPkg/IScsiDxe/IScsiProto.c +++ b/NetworkPkg/IScsiDxe/IScsiProto.c @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "IScsiImpl.h" -UINT32 mDataSegPad = 0; +UINT32 mDataSegPad = 0; /** Attach the iSCSI connection to the iSCSI session. @@ -44,7 +44,6 @@ IScsiDetatchConnection ( Conn->Session = NULL; } - /** Check the sequence number according to RFC3720. @@ -80,7 +79,6 @@ IScsiCheckSN ( } } - /** Update the sequence numbers for the iSCSI command. @@ -97,7 +95,7 @@ IScsiUpdateCmdSN ( ) { if (ISCSI_SEQ_LT (MaxCmdSN, ExpCmdSN - 1)) { - return ; + return; } if (ISCSI_SEQ_GT (MaxCmdSN, Session->MaxCmdSN)) { @@ -109,7 +107,6 @@ IScsiUpdateCmdSN ( } } - /** This function does the iSCSI connection login. @@ -123,8 +120,8 @@ IScsiUpdateCmdSN ( **/ EFI_STATUS IScsiConnLogin ( - IN OUT ISCSI_CONNECTION *Conn, - IN UINT16 Timeout + IN OUT ISCSI_CONNECTION *Conn, + IN UINT16 Timeout ) { EFI_STATUS Status; @@ -171,7 +168,6 @@ IScsiConnLogin ( return Status; } - /** Reset the iSCSI connection. @@ -186,7 +182,6 @@ IScsiConnReset ( TcpIoReset (&Conn->TcpIo); } - /** Create a TCP connection for the iSCSI session. @@ -197,7 +192,7 @@ IScsiConnReset ( **/ ISCSI_CONNECTION * IScsiCreateConnection ( - IN ISCSI_SESSION *Session + IN ISCSI_SESSION *Session ) { ISCSI_DRIVER_DATA *Private; @@ -245,9 +240,9 @@ IScsiCreateConnection ( // // Set the default connection-only parameters. // - Conn->MaxRecvDataSegmentLength = DEFAULT_MAX_RECV_DATA_SEG_LEN; - Conn->HeaderDigest = IScsiDigestNone; - Conn->DataDigest = IScsiDigestNone; + Conn->MaxRecvDataSegmentLength = DEFAULT_MAX_RECV_DATA_SEG_LEN; + Conn->HeaderDigest = IScsiDigestNone; + Conn->DataDigest = IScsiDigestNone; if (NvData->DnsMode) { // @@ -259,7 +254,7 @@ IScsiCreateConnection ( Status = IScsiDns6 (Private->Image, Private->Controller, NvData); } - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "The configuration of Target address or DNS server address is invalid!\n")); FreePool (Conn); return NULL; @@ -292,7 +287,7 @@ IScsiCreateConnection ( Status = TcpIoCreateSocket ( Private->Image, Private->Controller, - (UINT8) (!Conn->Ipv6Flag ? TCP_VERSION_4: TCP_VERSION_6), + (UINT8)(!Conn->Ipv6Flag ? TCP_VERSION_4 : TCP_VERSION_6), &TcpIoConfig, &Conn->TcpIo ); @@ -305,7 +300,6 @@ IScsiCreateConnection ( return Conn; } - /** Destroy an iSCSI connection. @@ -381,15 +375,16 @@ IScsiGetIp6NicInfo ( } SubnetPrefixLength = 0; - RouteEntry = Ip6ModeData.RouteCount; + RouteEntry = Ip6ModeData.RouteCount; for (Index = 0; Index < Ip6ModeData.RouteCount; Index++) { if (NetIp6IsNetEqual (TargetIp, &Ip6ModeData.RouteTable[Index].Destination, Ip6ModeData.RouteTable[Index].PrefixLength)) { if (SubnetPrefixLength < Ip6ModeData.RouteTable[Index].PrefixLength) { SubnetPrefixLength = Ip6ModeData.RouteTable[Index].PrefixLength; - RouteEntry = Index; + RouteEntry = Index; } } } + if (RouteEntry != Ip6ModeData.RouteCount) { IP6_COPY_ADDRESS (&NvData->Gateway, &Ip6ModeData.RouteTable[RouteEntry].Gateway); } @@ -398,19 +393,24 @@ ON_EXIT: if (Ip6ModeData.AddressList != NULL) { FreePool (Ip6ModeData.AddressList); } - if (Ip6ModeData.GroupTable!= NULL) { + + if (Ip6ModeData.GroupTable != NULL) { FreePool (Ip6ModeData.GroupTable); } - if (Ip6ModeData.RouteTable!= NULL) { + + if (Ip6ModeData.RouteTable != NULL) { FreePool (Ip6ModeData.RouteTable); } - if (Ip6ModeData.NeighborCache!= NULL) { + + if (Ip6ModeData.NeighborCache != NULL) { FreePool (Ip6ModeData.NeighborCache); } - if (Ip6ModeData.PrefixTable!= NULL) { + + if (Ip6ModeData.PrefixTable != NULL) { FreePool (Ip6ModeData.PrefixTable); } - if (Ip6ModeData.IcmpTypeList!= NULL) { + + if (Ip6ModeData.IcmpTypeList != NULL) { FreePool (Ip6ModeData.IcmpTypeList); } @@ -429,7 +429,7 @@ ON_EXIT: STATIC VOID IScsiSessionResetAuthData ( - IN OUT ISCSI_SESSION *Session + IN OUT ISCSI_SESSION *Session ) { if (Session->AuthType == ISCSI_AUTH_TYPE_CHAP) { @@ -517,7 +517,7 @@ IScsiSessionLogin ( Status = gBS->OpenProtocol ( Conn->TcpIo.Handle, ProtocolGuid, - (VOID **) &Tcp, + (VOID **)&Tcp, Session->Private->Image, Session->Private->ExtScsiPassThruHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -533,7 +533,6 @@ IScsiSessionLogin ( return Status; } - /** Wait for IPsec negotiation, then try to login the iSCSI session again. @@ -549,10 +548,9 @@ IScsiSessionReLogin ( IN ISCSI_SESSION *Session ) { - - EFI_STATUS Status; - EFI_STATUS TimerStatus; - EFI_EVENT Timer; + EFI_STATUS Status; + EFI_STATUS TimerStatus; + EFI_EVENT Timer; Status = gBS->CreateEvent (EVT_TIMER, TPL_CALLBACK, NULL, NULL, &Timer); if (EFI_ERROR (Status)) { @@ -571,20 +569,17 @@ IScsiSessionReLogin ( } do { - TimerStatus = gBS->CheckEvent (Timer); if (!EFI_ERROR (TimerStatus)) { Status = IScsiSessionLogin (Session); } - } while (TimerStatus == EFI_NOT_READY); gBS->CloseEvent (Timer); return Status; } - /** Build and send the iSCSI login request to the iSCSI target according to the current login stage. @@ -612,6 +607,7 @@ IScsiSendLoginReq ( if (Pdu == NULL) { return EFI_DEVICE_ERROR; } + // // Send it to the iSCSI target. // @@ -622,7 +618,6 @@ IScsiSendLoginReq ( return Status; } - /** Receive and process the iSCSI login response. @@ -649,6 +644,7 @@ IScsiReceiveLoginRsp ( if (EFI_ERROR (Status)) { return Status; } + ASSERT (Pdu != NULL); // @@ -661,7 +657,6 @@ IScsiReceiveLoginRsp ( return Status; } - /** Add an iSCSI key-value pair as a string into the data segment of the Login Request PDU. The DataSegmentLength and the actual size of the net buffer containing this PDU will be @@ -680,26 +675,27 @@ IScsiReceiveLoginRsp ( **/ EFI_STATUS IScsiAddKeyValuePair ( - IN OUT NET_BUF *Pdu, - IN CHAR8 *Key, - IN CHAR8 *Value + IN OUT NET_BUF *Pdu, + IN CHAR8 *Key, + IN CHAR8 *Value ) { - UINT32 DataSegLen; - UINT32 KeyLen; - UINT32 ValueLen; - UINT32 TotalLen; - ISCSI_LOGIN_REQUEST *LoginReq; - CHAR8 *Data; - - LoginReq = (ISCSI_LOGIN_REQUEST *) NetbufGetByte (Pdu, 0, NULL); + UINT32 DataSegLen; + UINT32 KeyLen; + UINT32 ValueLen; + UINT32 TotalLen; + ISCSI_LOGIN_REQUEST *LoginReq; + CHAR8 *Data; + + LoginReq = (ISCSI_LOGIN_REQUEST *)NetbufGetByte (Pdu, 0, NULL); if (LoginReq == NULL) { return EFI_PROTOCOL_ERROR; } - DataSegLen = NTOH24 (LoginReq->DataSegmentLength); - KeyLen = (UINT32) AsciiStrLen (Key); - ValueLen = (UINT32) AsciiStrLen (Value); + DataSegLen = NTOH24 (LoginReq->DataSegmentLength); + + KeyLen = (UINT32)AsciiStrLen (Key); + ValueLen = (UINT32)AsciiStrLen (Value); // // 1 byte for the key value separator '=' and 1 byte for the null @@ -710,10 +706,11 @@ IScsiAddKeyValuePair ( // // Allocate the space for the key-value pair. // - Data = (CHAR8 *) NetbufAllocSpace (Pdu, TotalLen, NET_BUF_TAIL); + Data = (CHAR8 *)NetbufAllocSpace (Pdu, TotalLen, NET_BUF_TAIL); if (Data == NULL) { return EFI_OUT_OF_RESOURCES; } + // // Add the key. // @@ -739,7 +736,6 @@ IScsiAddKeyValuePair ( return EFI_SUCCESS; } - /** Prepare the iSCSI login request to be sent according to the current login status. @@ -754,23 +750,24 @@ IScsiPrepareLoginReq ( IN OUT ISCSI_CONNECTION *Conn ) { - ISCSI_SESSION *Session; - NET_BUF *Nbuf; - ISCSI_LOGIN_REQUEST *LoginReq; - EFI_STATUS Status; + ISCSI_SESSION *Session; + NET_BUF *Nbuf; + ISCSI_LOGIN_REQUEST *LoginReq; + EFI_STATUS Status; Session = Conn->Session; - Nbuf = NetbufAlloc (sizeof (ISCSI_LOGIN_REQUEST) + DEFAULT_MAX_RECV_DATA_SEG_LEN); + Nbuf = NetbufAlloc (sizeof (ISCSI_LOGIN_REQUEST) + DEFAULT_MAX_RECV_DATA_SEG_LEN); if (Nbuf == NULL) { return NULL; } - LoginReq = (ISCSI_LOGIN_REQUEST *) NetbufAllocSpace (Nbuf, sizeof (ISCSI_LOGIN_REQUEST), NET_BUF_TAIL); + LoginReq = (ISCSI_LOGIN_REQUEST *)NetbufAllocSpace (Nbuf, sizeof (ISCSI_LOGIN_REQUEST), NET_BUF_TAIL); if (LoginReq == NULL) { NetbufFree (Nbuf); return NULL; } + ZeroMem (LoginReq, sizeof (ISCSI_LOGIN_REQUEST)); // @@ -778,12 +775,12 @@ IScsiPrepareLoginReq ( // ISCSI_SET_OPCODE (LoginReq, ISCSI_OPCODE_LOGIN_REQ, ISCSI_REQ_IMMEDIATE); ISCSI_SET_STAGES (LoginReq, Conn->CurrentStage, Conn->NextStage); - LoginReq->VersionMax = ISCSI_VERSION_MAX; - LoginReq->VersionMin = ISCSI_VERSION_MIN; - LoginReq->Tsih = HTONS (Session->Tsih); - LoginReq->InitiatorTaskTag = HTONL (Session->InitiatorTaskTag); - LoginReq->Cid = HTONS (Conn->Cid); - LoginReq->CmdSN = HTONL (Session->CmdSN); + LoginReq->VersionMax = ISCSI_VERSION_MAX; + LoginReq->VersionMin = ISCSI_VERSION_MIN; + LoginReq->Tsih = HTONS (Session->Tsih); + LoginReq->InitiatorTaskTag = HTONL (Session->InitiatorTaskTag); + LoginReq->Cid = HTONS (Conn->Cid); + LoginReq->CmdSN = HTONL (Session->CmdSN); // // For the first Login Request on a connection this is ExpStatSN for the @@ -805,34 +802,34 @@ IScsiPrepareLoginReq ( Status = EFI_SUCCESS; switch (Conn->CurrentStage) { - case ISCSI_SECURITY_NEGOTIATION: - // - // Both none authentication and CHAP authentication share the CHAP path. - // - // - if (Session->AuthType != ISCSI_AUTH_TYPE_KRB) { - Status = IScsiCHAPToSendReq (Conn, Nbuf); - } + case ISCSI_SECURITY_NEGOTIATION: + // + // Both none authentication and CHAP authentication share the CHAP path. + // + // + if (Session->AuthType != ISCSI_AUTH_TYPE_KRB) { + Status = IScsiCHAPToSendReq (Conn, Nbuf); + } - break; + break; - case ISCSI_LOGIN_OPERATIONAL_NEGOTIATION: - // - // Only negotiate the parameter once. - // - if (!Conn->ParamNegotiated) { - IScsiFillOpParams (Conn, Nbuf); - } + case ISCSI_LOGIN_OPERATIONAL_NEGOTIATION: + // + // Only negotiate the parameter once. + // + if (!Conn->ParamNegotiated) { + IScsiFillOpParams (Conn, Nbuf); + } - ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT); - break; + ISCSI_SET_FLAG (LoginReq, ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT); + break; - default: - // - // An error occurs... - // - Status = EFI_DEVICE_ERROR; - break; + default: + // + // An error occurs... + // + Status = EFI_DEVICE_ERROR; + break; } if (EFI_ERROR (Status)) { @@ -852,7 +849,6 @@ IScsiPrepareLoginReq ( return Nbuf; } - /** Process the iSCSI Login Response. @@ -881,19 +877,21 @@ IScsiProcessLoginRsp ( UINT8 *DataSeg; UINT32 DataSegLen; - Status = EFI_SUCCESS; - Session = Conn->Session; + Status = EFI_SUCCESS; + Session = Conn->Session; - LoginRsp = (ISCSI_LOGIN_RESPONSE *) NetbufGetByte (Pdu, 0, NULL); + LoginRsp = (ISCSI_LOGIN_RESPONSE *)NetbufGetByte (Pdu, 0, NULL); if (LoginRsp == NULL) { return EFI_PROTOCOL_ERROR; } + if (!ISCSI_CHECK_OPCODE (LoginRsp, ISCSI_OPCODE_LOGIN_RSP)) { // // It is not a Login Response. // return EFI_PROTOCOL_ERROR; } + // // Get the data segment, if any. // @@ -903,53 +901,57 @@ IScsiProcessLoginRsp ( } else { DataSeg = NULL; } + // // Check the status class in the login response PDU. // switch (LoginRsp->StatusClass) { - case ISCSI_LOGIN_STATUS_SUCCESS: - // - // Just break here; the response and the data segment will be processed later. - // - break; + case ISCSI_LOGIN_STATUS_SUCCESS: + // + // Just break here; the response and the data segment will be processed later. + // + break; - case ISCSI_LOGIN_STATUS_REDIRECTION: - // - // The target may be moved to a different address. - // - if (DataSeg == NULL) { - return EFI_PROTOCOL_ERROR; - } - // - // Process the TargetAddress key-value strings in the data segment to update the - // target address info. - // - Status = IScsiUpdateTargetAddress (Session, (CHAR8 *) DataSeg, DataSegLen); - if (EFI_ERROR (Status)) { - return Status; - } - // - // Session will be restarted on this error status because the Target is - // redirected by this Login Response. - // - return EFI_MEDIA_CHANGED; + case ISCSI_LOGIN_STATUS_REDIRECTION: + // + // The target may be moved to a different address. + // + if (DataSeg == NULL) { + return EFI_PROTOCOL_ERROR; + } - default: - // - // Initiator Error, Target Error, or any other undefined error code. - // - return EFI_PROTOCOL_ERROR; + // + // Process the TargetAddress key-value strings in the data segment to update the + // target address info. + // + Status = IScsiUpdateTargetAddress (Session, (CHAR8 *)DataSeg, DataSegLen); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Session will be restarted on this error status because the Target is + // redirected by this Login Response. + // + return EFI_MEDIA_CHANGED; + + default: + // + // Initiator Error, Target Error, or any other undefined error code. + // + return EFI_PROTOCOL_ERROR; } + // // The status is success; extract the wanted fields from the header segment. // - Transit = ISCSI_FLAG_ON (LoginRsp, ISCSI_LOGIN_RSP_PDU_FLAG_TRANSIT); - Continue = ISCSI_FLAG_ON (LoginRsp, ISCSI_LOGIN_RSP_PDU_FLAG_CONTINUE); + Transit = ISCSI_FLAG_ON (LoginRsp, ISCSI_LOGIN_RSP_PDU_FLAG_TRANSIT); + Continue = ISCSI_FLAG_ON (LoginRsp, ISCSI_LOGIN_RSP_PDU_FLAG_CONTINUE); - CurrentStage = ISCSI_GET_CURRENT_STAGE (LoginRsp); - NextStage = ISCSI_GET_NEXT_STAGE (LoginRsp); + CurrentStage = ISCSI_GET_CURRENT_STAGE (LoginRsp); + NextStage = ISCSI_GET_NEXT_STAGE (LoginRsp); - LoginRsp->InitiatorTaskTag = NTOHL (LoginRsp->InitiatorTaskTag); + LoginRsp->InitiatorTaskTag = NTOHL (LoginRsp->InitiatorTaskTag); if ((Transit && Continue) || (CurrentStage != Conn->CurrentStage) || @@ -957,7 +959,8 @@ IScsiProcessLoginRsp ( (Transit && (NextStage != Conn->NextStage)) || (CompareMem (Session->Isid, LoginRsp->Isid, sizeof (LoginRsp->Isid)) != 0) || (LoginRsp->InitiatorTaskTag != Session->InitiatorTaskTag) - ) { + ) + { // // A Login Response with the C bit set to 1 MUST have the T bit set to 0. // The CSG in the Login Response MUST be the same with the I-end of this connection. @@ -969,9 +972,9 @@ IScsiProcessLoginRsp ( return EFI_PROTOCOL_ERROR; } - LoginRsp->StatSN = NTOHL (LoginRsp->StatSN); - LoginRsp->ExpCmdSN = NTOHL (LoginRsp->ExpCmdSN); - LoginRsp->MaxCmdSN = NTOHL (LoginRsp->MaxCmdSN); + LoginRsp->StatSN = NTOHL (LoginRsp->StatSN); + LoginRsp->ExpCmdSN = NTOHL (LoginRsp->ExpCmdSN); + LoginRsp->MaxCmdSN = NTOHL (LoginRsp->MaxCmdSN); if ((Conn->CurrentStage == ISCSI_SECURITY_NEGOTIATION) && (Conn->AuthStep == ISCSI_AUTH_INITIAL)) { // @@ -1003,6 +1006,7 @@ IScsiProcessLoginRsp ( return Status; } } + // // Trim off the header segment. // @@ -1026,32 +1030,33 @@ IScsiProcessLoginRsp ( } switch (CurrentStage) { - case ISCSI_SECURITY_NEGOTIATION: - // - // In security negotiation stage, let CHAP module handle it. - // - if (Session->AuthType != ISCSI_AUTH_TYPE_KRB) { - Status = IScsiCHAPOnRspReceived (Conn); - } - break; + case ISCSI_SECURITY_NEGOTIATION: + // + // In security negotiation stage, let CHAP module handle it. + // + if (Session->AuthType != ISCSI_AUTH_TYPE_KRB) { + Status = IScsiCHAPOnRspReceived (Conn); + } - case ISCSI_LOGIN_OPERATIONAL_NEGOTIATION: - // - // Response received with negotiation response on iSCSI parameters: check them. - // - Status = IScsiCheckOpParams (Conn); - if (!EFI_ERROR (Status)) { - Conn->ParamNegotiated = TRUE; - } + break; - break; + case ISCSI_LOGIN_OPERATIONAL_NEGOTIATION: + // + // Response received with negotiation response on iSCSI parameters: check them. + // + Status = IScsiCheckOpParams (Conn); + if (!EFI_ERROR (Status)) { + Conn->ParamNegotiated = TRUE; + } - default: - // - // Should never get here. - // - Status = EFI_PROTOCOL_ERROR; - break; + break; + + default: + // + // Should never get here. + // + Status = EFI_PROTOCOL_ERROR; + break; } if (Transit && (Status == EFI_SUCCESS)) { @@ -1070,6 +1075,7 @@ IScsiProcessLoginRsp ( Session->Tsih = NTOHS (LoginRsp->Tsih); } } + // // Flush the response(s) received. // @@ -1078,7 +1084,6 @@ IScsiProcessLoginRsp ( return Status; } - /** Updated the target information according the data received in the iSCSI login response with an target redirection status. @@ -1096,9 +1101,9 @@ IScsiProcessLoginRsp ( **/ EFI_STATUS IScsiUpdateTargetAddress ( - IN OUT ISCSI_SESSION *Session, - IN CHAR8 *Data, - IN UINT32 Len + IN OUT ISCSI_SESSION *Session, + IN CHAR8 *Data, + IN UINT32 Len ) { LIST_ENTRY *KeyValueList; @@ -1140,11 +1145,11 @@ IScsiUpdateTargetAddress ( // TargetAddress++; } - } else if (*TargetAddress == ISCSI_REDIRECT_ADDR_START_DELIMITER){ + } else if (*TargetAddress == ISCSI_REDIRECT_ADDR_START_DELIMITER) { // // The domainname of the target is presented in a bracketed IPv6 address format. // - TargetAddress ++; + TargetAddress++; IpStr = TargetAddress; while ((*TargetAddress != '\0') && (*TargetAddress != ISCSI_REDIRECT_ADDR_END_DELIMITER)) { // @@ -1158,8 +1163,7 @@ IScsiUpdateTargetAddress ( } *TargetAddress = '\0'; - TargetAddress ++; - + TargetAddress++; } else { // // The domainname of the target is presented in the format of a DNS host name. @@ -1169,6 +1173,7 @@ IScsiUpdateTargetAddress ( while ((*TargetAddress != '\0') && (*TargetAddress != ':') && (*TargetAddress != ',')) { TargetAddress++; } + NvData->DnsMode = TRUE; } @@ -1192,7 +1197,7 @@ IScsiUpdateTargetAddress ( if (Number > 0xFFFF) { continue; } else { - NvData->TargetPort = (UINT16) Number; + NvData->TargetPort = (UINT16)Number; } } else { // @@ -1220,9 +1225,10 @@ IScsiUpdateTargetAddress ( // Target address is expressed as URL format, just save it and // do DNS resolution when creating a TCP connection. // - if (AsciiStrSize (IpStr) > sizeof (Session->ConfigData->SessionConfigData.TargetUrl)){ + if (AsciiStrSize (IpStr) > sizeof (Session->ConfigData->SessionConfigData.TargetUrl)) { return EFI_INVALID_PARAMETER; } + CopyMem (&Session->ConfigData->SessionConfigData.TargetUrl, IpStr, AsciiStrSize (IpStr)); } else { Status = IScsiAsciiStrToIp ( @@ -1245,7 +1251,6 @@ IScsiUpdateTargetAddress ( return Status; } - /** The callback function to free the net buffer list. @@ -1255,16 +1260,15 @@ IScsiUpdateTargetAddress ( VOID EFIAPI IScsiFreeNbufList ( - VOID *Arg + VOID *Arg ) { ASSERT (Arg != NULL); - NetbufFreeList ((LIST_ENTRY *) Arg); + NetbufFreeList ((LIST_ENTRY *)Arg); FreePool (Arg); } - /** The callback function called in NetBufFree; it does nothing. @@ -1274,12 +1278,11 @@ IScsiFreeNbufList ( VOID EFIAPI IScsiNbufExtFree ( - VOID *Arg + VOID *Arg ) { } - /** Receive an iSCSI response PDU. An iSCSI response PDU contains an iSCSI PDU header and an optional data segment. The two parts will be put into two blocks of buffers in the @@ -1302,25 +1305,25 @@ IScsiNbufExtFree ( **/ EFI_STATUS IScsiReceivePdu ( - IN ISCSI_CONNECTION *Conn, - OUT NET_BUF **Pdu, - IN ISCSI_IN_BUFFER_CONTEXT *Context OPTIONAL, - IN BOOLEAN HeaderDigest, - IN BOOLEAN DataDigest, - IN EFI_EVENT TimeoutEvent OPTIONAL + IN ISCSI_CONNECTION *Conn, + OUT NET_BUF **Pdu, + IN ISCSI_IN_BUFFER_CONTEXT *Context OPTIONAL, + IN BOOLEAN HeaderDigest, + IN BOOLEAN DataDigest, + IN EFI_EVENT TimeoutEvent OPTIONAL ) { - LIST_ENTRY *NbufList; - UINT32 Len; - NET_BUF *PduHdr; - UINT8 *Header; - EFI_STATUS Status; - UINT32 PadLen; - UINT32 InDataOffset; - NET_FRAGMENT Fragment[2]; - UINT32 FragmentCount; - NET_BUF *DataSeg; - UINT32 PadAndCRC32[2]; + LIST_ENTRY *NbufList; + UINT32 Len; + NET_BUF *PduHdr; + UINT8 *Header; + EFI_STATUS Status; + UINT32 PadLen; + UINT32 InDataOffset; + NET_FRAGMENT Fragment[2]; + UINT32 FragmentCount; + NET_BUF *DataSeg; + UINT32 PadAndCRC32[2]; NbufList = AllocatePool (sizeof (LIST_ENTRY)); if (NbufList == NULL) { @@ -1332,8 +1335,8 @@ IScsiReceivePdu ( // // The header digest will be received together with the PDU header, if exists. // - Len = sizeof (ISCSI_BASIC_HEADER) + (HeaderDigest ? sizeof (UINT32) : 0); - PduHdr = NetbufAlloc (Len); + Len = sizeof (ISCSI_BASIC_HEADER) + (HeaderDigest ? sizeof (UINT32) : 0); + PduHdr = NetbufAlloc (Len); if (PduHdr == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; @@ -1344,6 +1347,7 @@ IScsiReceivePdu ( Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + InsertTailList (NbufList, &PduHdr->List); // @@ -1372,72 +1376,73 @@ IScsiReceivePdu ( // goto FORM_PDU; } + // // Get the length of the padding bytes of the data segment. // PadLen = ISCSI_GET_PAD_LEN (Len); switch (ISCSI_GET_OPCODE (Header)) { - case ISCSI_OPCODE_SCSI_DATA_IN: - // - // To reduce memory copy overhead, try to use the buffer described by Context - // if the PDU is an iSCSI SCSI data. - // - InDataOffset = ISCSI_GET_BUFFER_OFFSET (Header); - if ((Context == NULL) || ((InDataOffset + Len) > Context->InDataLen)) { - Status = EFI_PROTOCOL_ERROR; - goto ON_EXIT; - } - - Fragment[0].Len = Len; - Fragment[0].Bulk = Context->InData + InDataOffset; - - if (DataDigest || (PadLen != 0)) { + case ISCSI_OPCODE_SCSI_DATA_IN: // - // The data segment is padded. Use two fragments to receive it: - // the first to receive the useful data; the second to receive the padding. + // To reduce memory copy overhead, try to use the buffer described by Context + // if the PDU is an iSCSI SCSI data. // - Fragment[1].Len = PadLen + (DataDigest ? sizeof (UINT32) : 0); - Fragment[1].Bulk = (UINT8 *)PadAndCRC32 + (4 - PadLen); + InDataOffset = ISCSI_GET_BUFFER_OFFSET (Header); + if ((Context == NULL) || ((InDataOffset + Len) > Context->InDataLen)) { + Status = EFI_PROTOCOL_ERROR; + goto ON_EXIT; + } - FragmentCount = 2; - } else { - FragmentCount = 1; - } + Fragment[0].Len = Len; + Fragment[0].Bulk = Context->InData + InDataOffset; - DataSeg = NetbufFromExt (&Fragment[0], FragmentCount, 0, 0, IScsiNbufExtFree, NULL); - if (DataSeg == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } + if (DataDigest || (PadLen != 0)) { + // + // The data segment is padded. Use two fragments to receive it: + // the first to receive the useful data; the second to receive the padding. + // + Fragment[1].Len = PadLen + (DataDigest ? sizeof (UINT32) : 0); + Fragment[1].Bulk = (UINT8 *)PadAndCRC32 + (4 - PadLen); + + FragmentCount = 2; + } else { + FragmentCount = 1; + } - break; + DataSeg = NetbufFromExt (&Fragment[0], FragmentCount, 0, 0, IScsiNbufExtFree, NULL); + if (DataSeg == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } - case ISCSI_OPCODE_SCSI_RSP: - case ISCSI_OPCODE_NOP_IN: - case ISCSI_OPCODE_LOGIN_RSP: - case ISCSI_OPCODE_TEXT_RSP: - case ISCSI_OPCODE_ASYNC_MSG: - case ISCSI_OPCODE_REJECT: - case ISCSI_OPCODE_VENDOR_T0: - case ISCSI_OPCODE_VENDOR_T1: - case ISCSI_OPCODE_VENDOR_T2: - // - // Allocate buffer to receive the data segment. - // - Len += PadLen + (DataDigest ? sizeof (UINT32) : 0); - DataSeg = NetbufAlloc (Len); - if (DataSeg == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } + break; - NetbufAllocSpace (DataSeg, Len, NET_BUF_TAIL); - break; + case ISCSI_OPCODE_SCSI_RSP: + case ISCSI_OPCODE_NOP_IN: + case ISCSI_OPCODE_LOGIN_RSP: + case ISCSI_OPCODE_TEXT_RSP: + case ISCSI_OPCODE_ASYNC_MSG: + case ISCSI_OPCODE_REJECT: + case ISCSI_OPCODE_VENDOR_T0: + case ISCSI_OPCODE_VENDOR_T1: + case ISCSI_OPCODE_VENDOR_T2: + // + // Allocate buffer to receive the data segment. + // + Len += PadLen + (DataDigest ? sizeof (UINT32) : 0); + DataSeg = NetbufAlloc (Len); + if (DataSeg == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } - default: - Status = EFI_PROTOCOL_ERROR; - goto ON_EXIT; + NetbufAllocSpace (DataSeg, Len, NET_BUF_TAIL); + break; + + default: + Status = EFI_PROTOCOL_ERROR; + goto ON_EXIT; } InsertTailList (NbufList, &DataSeg->List); @@ -1486,7 +1491,6 @@ ON_EXIT: return Status; } - /** Check and get the result of the parameter negotiation. @@ -1502,25 +1506,25 @@ IScsiCheckOpParams ( IN OUT ISCSI_CONNECTION *Conn ) { - EFI_STATUS Status; - LIST_ENTRY *KeyValueList; - CHAR8 *Data; - UINT32 Len; - ISCSI_SESSION *Session; - CHAR8 *Value; - UINTN NumericValue; + EFI_STATUS Status; + LIST_ENTRY *KeyValueList; + CHAR8 *Data; + UINT32 Len; + ISCSI_SESSION *Session; + CHAR8 *Value; + UINTN NumericValue; ASSERT (Conn->RspQue.BufNum != 0); Session = Conn->Session; - Len = Conn->RspQue.BufSize; - Data = AllocatePool (Len); + Len = Conn->RspQue.BufSize; + Data = AllocatePool (Len); if (Data == NULL) { return EFI_OUT_OF_RESOURCES; } - NetbufQueCopy (&Conn->RspQue, 0, Len, (UINT8 *) Data); + NetbufQueCopy (&Conn->RspQue, 0, Len, (UINT8 *)Data); Status = EFI_PROTOCOL_ERROR; @@ -1532,6 +1536,7 @@ IScsiCheckOpParams ( FreePool (Data); return Status; } + // // HeaderDigest // @@ -1549,6 +1554,7 @@ IScsiCheckOpParams ( } else { goto ON_ERROR; } + // // DataDigest // @@ -1566,6 +1572,7 @@ IScsiCheckOpParams ( } else { goto ON_ERROR; } + // // ErrorRecoveryLevel: result function is Minimum. // @@ -1579,7 +1586,7 @@ IScsiCheckOpParams ( goto ON_ERROR; } - Session->ErrorRecoveryLevel = (UINT8) MIN (Session->ErrorRecoveryLevel, NumericValue); + Session->ErrorRecoveryLevel = (UINT8)MIN (Session->ErrorRecoveryLevel, NumericValue); // // InitialR2T: result function is OR. @@ -1590,7 +1597,7 @@ IScsiCheckOpParams ( goto ON_ERROR; } - Session->InitialR2T = (BOOLEAN) (AsciiStrCmp (Value, "Yes") == 0); + Session->InitialR2T = (BOOLEAN)(AsciiStrCmp (Value, "Yes") == 0); } // @@ -1601,15 +1608,16 @@ IScsiCheckOpParams ( goto ON_ERROR; } - Session->ImmediateData = (BOOLEAN) (Session->ImmediateData && (BOOLEAN) (AsciiStrCmp (Value, "Yes") == 0)); + Session->ImmediateData = (BOOLEAN)(Session->ImmediateData && (BOOLEAN)(AsciiStrCmp (Value, "Yes") == 0)); // // MaxRecvDataSegmentLength is declarative. // Value = IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_MAX_RECV_DATA_SEGMENT_LENGTH); if (Value != NULL) { - Conn->MaxRecvDataSegmentLength = (UINT32) IScsiNetNtoi (Value); + Conn->MaxRecvDataSegmentLength = (UINT32)IScsiNetNtoi (Value); } + // // MaxBurstLength: result function is Minimum. // @@ -1619,7 +1627,7 @@ IScsiCheckOpParams ( } NumericValue = IScsiNetNtoi (Value); - Session->MaxBurstLength = (UINT32) MIN (Session->MaxBurstLength, NumericValue); + Session->MaxBurstLength = (UINT32)MIN (Session->MaxBurstLength, NumericValue); // // FirstBurstLength: result function is Minimum. Irrelevant when InitialR2T=Yes and @@ -1632,7 +1640,7 @@ IScsiCheckOpParams ( } NumericValue = IScsiNetNtoi (Value); - Session->FirstBurstLength = (UINT32) MIN (Session->FirstBurstLength, NumericValue); + Session->FirstBurstLength = (UINT32)MIN (Session->FirstBurstLength, NumericValue); } // @@ -1648,7 +1656,7 @@ IScsiCheckOpParams ( goto ON_ERROR; } - Session->MaxConnections = (UINT32) MIN (Session->MaxConnections, NumericValue); + Session->MaxConnections = (UINT32)MIN (Session->MaxConnections, NumericValue); // // DataPDUInOrder: result function is OR. @@ -1659,7 +1667,7 @@ IScsiCheckOpParams ( goto ON_ERROR; } - Session->DataPDUInOrder = (BOOLEAN) (AsciiStrCmp (Value, "Yes") == 0); + Session->DataPDUInOrder = (BOOLEAN)(AsciiStrCmp (Value, "Yes") == 0); } // @@ -1671,7 +1679,7 @@ IScsiCheckOpParams ( goto ON_ERROR; } - Session->DataSequenceInOrder = (BOOLEAN) (AsciiStrCmp (Value, "Yes") == 0); + Session->DataSequenceInOrder = (BOOLEAN)(AsciiStrCmp (Value, "Yes") == 0); } // @@ -1688,8 +1696,9 @@ IScsiCheckOpParams ( } else if (NumericValue > 3600) { goto ON_ERROR; } else { - Session->DefaultTime2Wait = (UINT32) MAX (Session->DefaultTime2Wait, NumericValue); + Session->DefaultTime2Wait = (UINT32)MAX (Session->DefaultTime2Wait, NumericValue); } + // // DefaultTime2Retain: result function is Minimum. // @@ -1704,8 +1713,9 @@ IScsiCheckOpParams ( } else if (NumericValue > 3600) { goto ON_ERROR; } else { - Session->DefaultTime2Retain = (UINT32) MIN (Session->DefaultTime2Retain, NumericValue); + Session->DefaultTime2Retain = (UINT32)MIN (Session->DefaultTime2Retain, NumericValue); } + // // MaxOutstandingR2T: result function is Minimum. // @@ -1719,7 +1729,7 @@ IScsiCheckOpParams ( goto ON_ERROR; } - Session->MaxOutstandingR2T = (UINT16) MIN (Session->MaxOutstandingR2T, NumericValue); + Session->MaxOutstandingR2T = (UINT16)MIN (Session->MaxOutstandingR2T, NumericValue); // // Remove declarative key-value pairs, if any. @@ -1728,7 +1738,6 @@ IScsiCheckOpParams ( IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_TARGET_ALIAS); IScsiGetValueByKeyFromList (KeyValueList, ISCSI_KEY_TARGET_PORTAL_GROUP_TAG); - // // Remove the key-value that may not needed for result function is OR. // @@ -1759,7 +1768,6 @@ ON_ERROR: return Status; } - /** Fill the operational parameters. @@ -1773,8 +1781,8 @@ IScsiFillOpParams ( IN OUT NET_BUF *Pdu ) { - ISCSI_SESSION *Session; - CHAR8 Value[256]; + ISCSI_SESSION *Session; + CHAR8 Value[256]; Session = Conn->Session; @@ -1821,7 +1829,6 @@ IScsiFillOpParams ( IScsiAddKeyValuePair (Pdu, ISCSI_KEY_MAX_OUTSTANDING_R2T, Value); } - /** Pad the iSCSI AHS or data segment to an integer number of 4 byte words. @@ -1834,8 +1841,8 @@ IScsiFillOpParams ( **/ EFI_STATUS IScsiPadSegment ( - IN OUT NET_BUF *Pdu, - IN UINT32 Len + IN OUT NET_BUF *Pdu, + IN UINT32 Len ) { UINT32 PadLen; @@ -1855,7 +1862,6 @@ IScsiPadSegment ( return EFI_SUCCESS; } - /** Build a key-value list from the data segment. @@ -1868,8 +1874,8 @@ IScsiPadSegment ( **/ LIST_ENTRY * IScsiBuildKeyValueList ( - IN CHAR8 *Data, - IN UINT32 Len + IN CHAR8 *Data, + IN UINT32 Len ) { LIST_ENTRY *ListHead; @@ -1909,10 +1915,10 @@ IScsiBuildKeyValueList ( KeyValuePair->Value = Data; - InsertTailList (ListHead, &KeyValuePair->List);; + InsertTailList (ListHead, &KeyValuePair->List); Data += AsciiStrLen (KeyValuePair->Value) + 1; - Len -= (UINT32) AsciiStrLen (KeyValuePair->Value) + 1; + Len -= (UINT32)AsciiStrLen (KeyValuePair->Value) + 1; } return ListHead; @@ -1924,7 +1930,6 @@ ON_ERROR: return NULL; } - /** Get the value string by the key name from the key-value list. If found, the key-value entry will be removed from the list. @@ -1938,8 +1943,8 @@ ON_ERROR: **/ CHAR8 * IScsiGetValueByKeyFromList ( - IN OUT LIST_ENTRY *KeyValueList, - IN CHAR8 *Key + IN OUT LIST_ENTRY *KeyValueList, + IN CHAR8 *Key ) { LIST_ENTRY *Entry; @@ -1963,7 +1968,6 @@ IScsiGetValueByKeyFromList ( return Value; } - /** Free the key-value list. @@ -1972,15 +1976,15 @@ IScsiGetValueByKeyFromList ( **/ VOID IScsiFreeKeyValueList ( - IN LIST_ENTRY *KeyValueList + IN LIST_ENTRY *KeyValueList ) { LIST_ENTRY *Entry; ISCSI_KEY_VALUE_PAIR *KeyValuePair; while (!IsListEmpty (KeyValueList)) { - Entry = NetListRemoveHead (KeyValueList); - KeyValuePair = NET_LIST_USER_STRUCT (Entry, ISCSI_KEY_VALUE_PAIR, List); + Entry = NetListRemoveHead (KeyValueList); + KeyValuePair = NET_LIST_USER_STRUCT (Entry, ISCSI_KEY_VALUE_PAIR, List); FreePool (KeyValuePair); } @@ -1988,7 +1992,6 @@ IScsiFreeKeyValueList ( FreePool (KeyValueList); } - /** Normalize the iSCSI name according to RFC. @@ -2001,18 +2004,18 @@ IScsiFreeKeyValueList ( **/ EFI_STATUS IScsiNormalizeName ( - IN OUT CHAR8 *Name, - IN UINTN Len + IN OUT CHAR8 *Name, + IN UINTN Len ) { - UINTN Index; + UINTN Index; for (Index = 0; Index < Len; Index++) { if (NET_IS_UPPER_CASE_CHAR (Name[Index])) { // // Convert the upper-case characters to lower-case ones. // - Name[Index] = (CHAR8) (Name[Index] - 'A' + 'a'); + Name[Index] = (CHAR8)(Name[Index] - 'A' + 'a'); } if (!NET_IS_LOWER_CASE_CHAR (Name[Index]) && @@ -2020,7 +2023,8 @@ IScsiNormalizeName ( (Name[Index] != '-') && (Name[Index] != '.') && (Name[Index] != ':') - ) { + ) + { // // ASCII dash, dot, colon lower-case characters and digit characters // are allowed. @@ -2039,7 +2043,6 @@ IScsiNormalizeName ( return EFI_SUCCESS; } - /** Create an iSCSI task control block. @@ -2057,8 +2060,8 @@ IScsiNewTcb ( OUT ISCSI_TCB **Tcb ) { - ISCSI_SESSION *Session; - ISCSI_TCB *NewTcb; + ISCSI_SESSION *Session; + ISCSI_TCB *NewTcb; ASSERT (Tcb != NULL); @@ -2075,10 +2078,10 @@ IScsiNewTcb ( InitializeListHead (&NewTcb->Link); - NewTcb->SoFarInOrder = TRUE; - NewTcb->InitiatorTaskTag = Session->InitiatorTaskTag; - NewTcb->CmdSN = Session->CmdSN; - NewTcb->Conn = Conn; + NewTcb->SoFarInOrder = TRUE; + NewTcb->InitiatorTaskTag = Session->InitiatorTaskTag; + NewTcb->CmdSN = Session->CmdSN; + NewTcb->Conn = Conn; InsertTailList (&Session->TcbList, &NewTcb->Link); @@ -2093,7 +2096,6 @@ IScsiNewTcb ( return EFI_SUCCESS; } - /** Delete the tcb from the connection and destroy it. @@ -2110,7 +2112,6 @@ IScsiDelTcb ( FreePool (Tcb); } - /** Create a data segment, pad it, and calculate the CRC if needed. @@ -2133,15 +2134,15 @@ IScsiNewDataSegment ( UINT32 PadLen; NET_BUF *DataSeg; - Fragment[0].Len = Len; - Fragment[0].Bulk = Data; + Fragment[0].Len = Len; + Fragment[0].Bulk = Data; - PadLen = ISCSI_GET_PAD_LEN (Len); + PadLen = ISCSI_GET_PAD_LEN (Len); if (PadLen != 0) { - Fragment[1].Len = PadLen; - Fragment[1].Bulk = (UINT8 *) &mDataSegPad; + Fragment[1].Len = PadLen; + Fragment[1].Bulk = (UINT8 *)&mDataSegPad; - FragmentCount = 2; + FragmentCount = 2; } else { FragmentCount = 1; } @@ -2151,7 +2152,6 @@ IScsiNewDataSegment ( return DataSeg; } - /** Create a iSCSI SCSI command PDU to encapsulate the command issued by SCSI through the EXT SCSI PASS THRU Protocol. @@ -2166,9 +2166,9 @@ IScsiNewDataSegment ( **/ NET_BUF * IScsiNewScsiCmdPdu ( - IN EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet, - IN UINT64 Lun, - IN ISCSI_TCB *Tcb + IN EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet, + IN UINT64 Lun, + IN ISCSI_TCB *Tcb ) { LIST_ENTRY *NbufList; @@ -2197,7 +2197,7 @@ IScsiNewScsiCmdPdu ( // // The CDB exceeds 16 bytes. An extended CDB AHS is required. // - AHSLength = (UINT8) (AHSLength + ISCSI_ROUNDUP (Packet->CdbLength - 16) + sizeof (ISCSI_ADDITIONAL_HEADER)); + AHSLength = (UINT8)(AHSLength + ISCSI_ROUNDUP (Packet->CdbLength - 16) + sizeof (ISCSI_ADDITIONAL_HEADER)); } Length = sizeof (SCSI_COMMAND) + AHSLength; @@ -2206,12 +2206,13 @@ IScsiNewScsiCmdPdu ( return NULL; } - ScsiCmd = (SCSI_COMMAND *) NetbufAllocSpace (PduHeader, Length, NET_BUF_TAIL); + ScsiCmd = (SCSI_COMMAND *)NetbufAllocSpace (PduHeader, Length, NET_BUF_TAIL); if (ScsiCmd == NULL) { NetbufFree (PduHeader); return NULL; } - Header = (ISCSI_ADDITIONAL_HEADER *) (ScsiCmd + 1); + + Header = (ISCSI_ADDITIONAL_HEADER *)(ScsiCmd + 1); ZeroMem (ScsiCmd, Length); @@ -2222,31 +2223,31 @@ IScsiNewScsiCmdPdu ( // Set the READ/WRITE flags according to the IO type of this request. // switch (Packet->DataDirection) { - case DataIn: - ISCSI_SET_FLAG (ScsiCmd, SCSI_CMD_PDU_FLAG_READ); - ScsiCmd->ExpDataXferLength = NTOHL (Packet->InTransferLength); - break; + case DataIn: + ISCSI_SET_FLAG (ScsiCmd, SCSI_CMD_PDU_FLAG_READ); + ScsiCmd->ExpDataXferLength = NTOHL (Packet->InTransferLength); + break; - case DataOut: - ISCSI_SET_FLAG (ScsiCmd, SCSI_CMD_PDU_FLAG_WRITE); - ScsiCmd->ExpDataXferLength = NTOHL (Packet->OutTransferLength); - break; + case DataOut: + ISCSI_SET_FLAG (ScsiCmd, SCSI_CMD_PDU_FLAG_WRITE); + ScsiCmd->ExpDataXferLength = NTOHL (Packet->OutTransferLength); + break; - case DataBi: - ISCSI_SET_FLAG (ScsiCmd, SCSI_CMD_PDU_FLAG_READ | SCSI_CMD_PDU_FLAG_WRITE); - ScsiCmd->ExpDataXferLength = NTOHL (Packet->OutTransferLength); + case DataBi: + ISCSI_SET_FLAG (ScsiCmd, SCSI_CMD_PDU_FLAG_READ | SCSI_CMD_PDU_FLAG_WRITE); + ScsiCmd->ExpDataXferLength = NTOHL (Packet->OutTransferLength); - // - // Fill the bidirectional expected read data length AHS. - // - BiExpReadDataLenAHS = (ISCSI_BI_EXP_READ_DATA_LEN_AHS *) Header; - Header = (ISCSI_ADDITIONAL_HEADER *) (BiExpReadDataLenAHS + 1); + // + // Fill the bidirectional expected read data length AHS. + // + BiExpReadDataLenAHS = (ISCSI_BI_EXP_READ_DATA_LEN_AHS *)Header; + Header = (ISCSI_ADDITIONAL_HEADER *)(BiExpReadDataLenAHS + 1); - BiExpReadDataLenAHS->Length = NTOHS (5); - BiExpReadDataLenAHS->Type = ISCSI_AHS_TYPE_BI_EXP_READ_DATA_LEN; - BiExpReadDataLenAHS->ExpReadDataLength = NTOHL (Packet->InTransferLength); + BiExpReadDataLenAHS->Length = NTOHS (5); + BiExpReadDataLenAHS->Type = ISCSI_AHS_TYPE_BI_EXP_READ_DATA_LEN; + BiExpReadDataLenAHS->ExpReadDataLength = NTOHL (Packet->InTransferLength); - break; + break; } ScsiCmd->TotalAHSLength = AHSLength; @@ -2258,15 +2259,15 @@ IScsiNewScsiCmdPdu ( CopyMem (ScsiCmd->Cdb, Packet->Cdb, sizeof (ScsiCmd->Cdb)); if (Packet->CdbLength > 16) { - Header->Length = NTOHS ((UINT16) (Packet->CdbLength - 15)); - Header->Type = ISCSI_AHS_TYPE_EXT_CDB; + Header->Length = NTOHS ((UINT16)(Packet->CdbLength - 15)); + Header->Type = ISCSI_AHS_TYPE_EXT_CDB; - CopyMem (Header + 1, (UINT8 *) Packet->Cdb + 16, Packet->CdbLength - 16); + CopyMem (Header + 1, (UINT8 *)Packet->Cdb + 16, Packet->CdbLength - 16); } - Pdu = PduHeader; - Session = Tcb->Conn->Session; - ImmediateDataLen = 0; + Pdu = PduHeader; + Session = Tcb->Conn->Session; + ImmediateDataLen = 0; if (Session->ImmediateData && (Packet->OutTransferLength != 0)) { // @@ -2274,8 +2275,8 @@ IScsiNewScsiCmdPdu ( // data is the minimum of FirstBurstLength, the data length to be xfered, and // the MaxRecvdataSegmentLength on this connection. // - ImmediateDataLen = MIN (Session->FirstBurstLength, Packet->OutTransferLength); - ImmediateDataLen = MIN (ImmediateDataLen, Tcb->Conn->MaxRecvDataSegmentLength); + ImmediateDataLen = MIN (Session->FirstBurstLength, Packet->OutTransferLength); + ImmediateDataLen = MIN (ImmediateDataLen, Tcb->Conn->MaxRecvDataSegmentLength); // // Update the data segment length in the PDU header. @@ -2285,7 +2286,7 @@ IScsiNewScsiCmdPdu ( // // Create the data segment. // - DataSeg = IScsiNewDataSegment ((UINT8 *) Packet->OutDataBuffer, ImmediateDataLen, FALSE); + DataSeg = IScsiNewDataSegment ((UINT8 *)Packet->OutDataBuffer, ImmediateDataLen, FALSE); if (DataSeg == NULL) { NetbufFree (PduHeader); Pdu = NULL; @@ -2314,7 +2315,8 @@ IScsiNewScsiCmdPdu ( if (Session->InitialR2T || (ImmediateDataLen == Session->FirstBurstLength) || (ImmediateDataLen == Packet->OutTransferLength) - ) { + ) + { // // Unsolicited data out sequence is not allowed, // or FirstBustLength data is already sent out by immediate data, @@ -2330,7 +2332,6 @@ ON_EXIT: return Pdu; } - /** Create a new iSCSI SCSI Data Out PDU. @@ -2353,12 +2354,12 @@ IScsiNewDataOutPdu ( IN UINT64 Lun ) { - LIST_ENTRY *NbufList; - NET_BUF *PduHdr; - NET_BUF *DataSeg; - NET_BUF *Pdu; - ISCSI_SCSI_DATA_OUT *DataOutHdr; - ISCSI_XFER_CONTEXT *XferContext; + LIST_ENTRY *NbufList; + NET_BUF *PduHdr; + NET_BUF *DataSeg; + NET_BUF *Pdu; + ISCSI_SCSI_DATA_OUT *DataOutHdr; + ISCSI_XFER_CONTEXT *XferContext; NbufList = AllocatePool (sizeof (LIST_ENTRY)); if (NbufList == NULL) { @@ -2375,16 +2376,18 @@ IScsiNewDataOutPdu ( FreePool (NbufList); return NULL; } + // // Insert the BHS into the buffer list. // InsertTailList (NbufList, &PduHdr->List); - DataOutHdr = (ISCSI_SCSI_DATA_OUT *) NetbufAllocSpace (PduHdr, sizeof (ISCSI_SCSI_DATA_OUT), NET_BUF_TAIL); + DataOutHdr = (ISCSI_SCSI_DATA_OUT *)NetbufAllocSpace (PduHdr, sizeof (ISCSI_SCSI_DATA_OUT), NET_BUF_TAIL); if (DataOutHdr == NULL) { IScsiFreeNbufList (NbufList); return NULL; } + XferContext = &Tcb->XferContext; ZeroMem (DataOutHdr, sizeof (ISCSI_SCSI_DATA_OUT)); @@ -2404,6 +2407,7 @@ IScsiNewDataOutPdu ( if (XferContext->TargetTransferTag != ISCSI_RESERVED_TAG) { CopyMem (&DataOutHdr->Lun, &Lun, sizeof (DataOutHdr->Lun)); } + // // Build the data segment for this Data Out PDU. // @@ -2412,6 +2416,7 @@ IScsiNewDataOutPdu ( IScsiFreeNbufList (NbufList); return NULL; } + // // Put the data segment into the buffer list and combine it with the BHS // into a full Data Out PDU. @@ -2425,7 +2430,6 @@ IScsiNewDataOutPdu ( return Pdu; } - /** Generate a consecutive sequence of iSCSI SCSI Data Out PDUs. @@ -2486,11 +2490,12 @@ IScsiGenerateDataOutPduSequence ( // // Update the context and DataSN. // - Data += DataLen; - XferContext->Offset += DataLen; + Data += DataLen; + XferContext->Offset += DataLen; XferContext->DesiredLength -= DataLen; DataSN++; } + // // Set the F bit for the last data out PDU in this sequence. // @@ -2527,10 +2532,10 @@ IScsiSendDataOutPduSequence ( IN ISCSI_TCB *Tcb ) { - LIST_ENTRY *DataOutPduList; - LIST_ENTRY *Entry; - NET_BUF *Pdu; - EFI_STATUS Status; + LIST_ENTRY *DataOutPduList; + LIST_ENTRY *Entry; + NET_BUF *Pdu; + EFI_STATUS Status; // // Generate the Data Out PDU sequence. @@ -2546,7 +2551,7 @@ IScsiSendDataOutPduSequence ( // Send the Data Out PDU's one by one. // NET_LIST_FOR_EACH (Entry, DataOutPduList) { - Pdu = NET_LIST_USER_STRUCT (Entry, NET_BUF, List); + Pdu = NET_LIST_USER_STRUCT (Entry, NET_BUF, List); Status = TcpIoTransmit (&Tcb->Conn->TcpIo, Pdu); @@ -2560,7 +2565,6 @@ IScsiSendDataOutPduSequence ( return Status; } - /** Process the received iSCSI SCSI Data In PDU. @@ -2585,7 +2589,7 @@ IScsiOnDataInRcvd ( ISCSI_SCSI_DATA_IN *DataInHdr; EFI_STATUS Status; - DataInHdr = (ISCSI_SCSI_DATA_IN *) NetbufGetByte (Pdu, 0, NULL); + DataInHdr = (ISCSI_SCSI_DATA_IN *)NetbufGetByte (Pdu, 0, NULL); if (DataInHdr == NULL) { return EFI_PROTOCOL_ERROR; } @@ -2606,6 +2610,7 @@ IScsiOnDataInRcvd ( if (DataInHdr->InitiatorTaskTag != Tcb->InitiatorTaskTag) { return EFI_PROTOCOL_ERROR; } + // // Update the command related sequence numbers. // @@ -2627,6 +2632,7 @@ IScsiOnDataInRcvd ( // return EFI_PROTOCOL_ERROR; } + // // S bit is on, the StatSN is valid. // @@ -2640,7 +2646,7 @@ IScsiOnDataInRcvd ( if (ISCSI_FLAG_ON (DataInHdr, SCSI_RSP_PDU_FLAG_OVERFLOW)) { Packet->InTransferLength += NTOHL (DataInHdr->ResidualCount); - Status = EFI_BAD_BUFFER_SIZE; + Status = EFI_BAD_BUFFER_SIZE; } if (ISCSI_FLAG_ON (DataInHdr, SCSI_RSP_PDU_FLAG_UNDERFLOW)) { @@ -2651,7 +2657,6 @@ IScsiOnDataInRcvd ( return Status; } - /** Process the received iSCSI R2T PDU. @@ -2673,26 +2678,27 @@ IScsiOnR2TRcvd ( IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet ) { - ISCSI_READY_TO_TRANSFER *R2THdr; - EFI_STATUS Status; - ISCSI_XFER_CONTEXT *XferContext; - UINT8 *Data; + ISCSI_READY_TO_TRANSFER *R2THdr; + EFI_STATUS Status; + ISCSI_XFER_CONTEXT *XferContext; + UINT8 *Data; - R2THdr = (ISCSI_READY_TO_TRANSFER *) NetbufGetByte (Pdu, 0, NULL); + R2THdr = (ISCSI_READY_TO_TRANSFER *)NetbufGetByte (Pdu, 0, NULL); if (R2THdr == NULL) { return EFI_PROTOCOL_ERROR; } - R2THdr->InitiatorTaskTag = NTOHL (R2THdr->InitiatorTaskTag); - R2THdr->TargetTransferTag = NTOHL (R2THdr->TargetTransferTag); - R2THdr->StatSN = NTOHL (R2THdr->StatSN); - R2THdr->R2TSeqNum = NTOHL (R2THdr->R2TSeqNum); - R2THdr->BufferOffset = NTOHL (R2THdr->BufferOffset); + R2THdr->InitiatorTaskTag = NTOHL (R2THdr->InitiatorTaskTag); + R2THdr->TargetTransferTag = NTOHL (R2THdr->TargetTransferTag); + R2THdr->StatSN = NTOHL (R2THdr->StatSN); + R2THdr->R2TSeqNum = NTOHL (R2THdr->R2TSeqNum); + R2THdr->BufferOffset = NTOHL (R2THdr->BufferOffset); R2THdr->DesiredDataTransferLength = NTOHL (R2THdr->DesiredDataTransferLength); if ((R2THdr->InitiatorTaskTag != Tcb->InitiatorTaskTag) || !ISCSI_SEQ_EQ (R2THdr->StatSN, Tcb->Conn->ExpStatSN)) { - return EFI_PROTOCOL_ERROR;; + return EFI_PROTOCOL_ERROR; } + // // Check the sequence number. // @@ -2701,26 +2707,27 @@ IScsiOnR2TRcvd ( return Status; } - XferContext = &Tcb->XferContext; - XferContext->TargetTransferTag = R2THdr->TargetTransferTag; - XferContext->Offset = R2THdr->BufferOffset; - XferContext->DesiredLength = R2THdr->DesiredDataTransferLength; + XferContext = &Tcb->XferContext; + XferContext->TargetTransferTag = R2THdr->TargetTransferTag; + XferContext->Offset = R2THdr->BufferOffset; + XferContext->DesiredLength = R2THdr->DesiredDataTransferLength; if (((XferContext->Offset + XferContext->DesiredLength) > Packet->OutTransferLength) || (XferContext->DesiredLength > Tcb->Conn->Session->MaxBurstLength) - ) { + ) + { return EFI_PROTOCOL_ERROR; } + // // Send the data solicited by this R2T. // - Data = (UINT8 *) Packet->OutDataBuffer + XferContext->Offset; - Status = IScsiSendDataOutPduSequence (Data, Lun, Tcb); + Data = (UINT8 *)Packet->OutDataBuffer + XferContext->Offset; + Status = IScsiSendDataOutPduSequence (Data, Lun, Tcb); return Status; } - /** Process the received iSCSI SCSI Response PDU. @@ -2746,28 +2753,28 @@ IScsiOnScsiRspRcvd ( EFI_STATUS Status; UINT32 DataSegLen; - ScsiRspHdr = (SCSI_RESPONSE *) NetbufGetByte (Pdu, 0, NULL); + ScsiRspHdr = (SCSI_RESPONSE *)NetbufGetByte (Pdu, 0, NULL); if (ScsiRspHdr == NULL) { return EFI_PROTOCOL_ERROR; } - ScsiRspHdr->InitiatorTaskTag = NTOHL (ScsiRspHdr->InitiatorTaskTag); + ScsiRspHdr->InitiatorTaskTag = NTOHL (ScsiRspHdr->InitiatorTaskTag); if (ScsiRspHdr->InitiatorTaskTag != Tcb->InitiatorTaskTag) { return EFI_PROTOCOL_ERROR; } - ScsiRspHdr->StatSN = NTOHL (ScsiRspHdr->StatSN); + ScsiRspHdr->StatSN = NTOHL (ScsiRspHdr->StatSN); - Status = IScsiCheckSN (&Tcb->Conn->ExpStatSN, ScsiRspHdr->StatSN); + Status = IScsiCheckSN (&Tcb->Conn->ExpStatSN, ScsiRspHdr->StatSN); if (EFI_ERROR (Status)) { return Status; } - ScsiRspHdr->MaxCmdSN = NTOHL (ScsiRspHdr->MaxCmdSN); - ScsiRspHdr->ExpCmdSN = NTOHL (ScsiRspHdr->ExpCmdSN); + ScsiRspHdr->MaxCmdSN = NTOHL (ScsiRspHdr->MaxCmdSN); + ScsiRspHdr->ExpCmdSN = NTOHL (ScsiRspHdr->ExpCmdSN); IScsiUpdateCmdSN (Tcb->Conn->Session, ScsiRspHdr->MaxCmdSN, ScsiRspHdr->ExpCmdSN); - Tcb->StatusXferd = TRUE; + Tcb->StatusXferd = TRUE; Packet->HostAdapterStatus = ScsiRspHdr->Response; if (Packet->HostAdapterStatus != ISCSI_SERVICE_RSP_COMMAND_COMPLETE_AT_TARGET) { @@ -2778,13 +2785,14 @@ IScsiOnScsiRspRcvd ( if (ISCSI_FLAG_ON (ScsiRspHdr, SCSI_RSP_PDU_FLAG_BI_READ_OVERFLOW | SCSI_RSP_PDU_FLAG_BI_READ_UNDERFLOW) || ISCSI_FLAG_ON (ScsiRspHdr, SCSI_RSP_PDU_FLAG_OVERFLOW | SCSI_RSP_PDU_FLAG_UNDERFLOW) - ) { + ) + { return EFI_PROTOCOL_ERROR; } if (ISCSI_FLAG_ON (ScsiRspHdr, SCSI_RSP_PDU_FLAG_BI_READ_OVERFLOW)) { Packet->InTransferLength += NTOHL (ScsiRspHdr->BiReadResidualCount); - Status = EFI_BAD_BUFFER_SIZE; + Status = EFI_BAD_BUFFER_SIZE; } if (ISCSI_FLAG_ON (ScsiRspHdr, SCSI_RSP_PDU_FLAG_BI_READ_UNDERFLOW)) { @@ -2811,14 +2819,14 @@ IScsiOnScsiRspRcvd ( DataSegLen = ISCSI_GET_DATASEG_LEN (ScsiRspHdr); if (DataSegLen != 0) { - SenseData = (ISCSI_SENSE_DATA *) NetbufGetByte (Pdu, sizeof (SCSI_RESPONSE), NULL); + SenseData = (ISCSI_SENSE_DATA *)NetbufGetByte (Pdu, sizeof (SCSI_RESPONSE), NULL); if (SenseData == NULL) { return EFI_PROTOCOL_ERROR; } - SenseData->Length = NTOHS (SenseData->Length); + SenseData->Length = NTOHS (SenseData->Length); - Packet->SenseDataLength = (UINT8) MIN (SenseData->Length, Packet->SenseDataLength); + Packet->SenseDataLength = (UINT8)MIN (SenseData->Length, Packet->SenseDataLength); if (Packet->SenseDataLength != 0) { CopyMem (Packet->SenseData, &SenseData->Data[0], Packet->SenseDataLength); } @@ -2829,7 +2837,6 @@ IScsiOnScsiRspRcvd ( return Status; } - /** Process the received NOP In PDU. @@ -2850,14 +2857,14 @@ IScsiOnNopInRcvd ( ISCSI_NOP_IN *NopInHdr; EFI_STATUS Status; - NopInHdr = (ISCSI_NOP_IN *) NetbufGetByte (Pdu, 0, NULL); + NopInHdr = (ISCSI_NOP_IN *)NetbufGetByte (Pdu, 0, NULL); if (NopInHdr == NULL) { return EFI_PROTOCOL_ERROR; } - NopInHdr->StatSN = NTOHL (NopInHdr->StatSN); - NopInHdr->ExpCmdSN = NTOHL (NopInHdr->ExpCmdSN); - NopInHdr->MaxCmdSN = NTOHL (NopInHdr->MaxCmdSN); + NopInHdr->StatSN = NTOHL (NopInHdr->StatSN); + NopInHdr->ExpCmdSN = NTOHL (NopInHdr->ExpCmdSN); + NopInHdr->MaxCmdSN = NTOHL (NopInHdr->MaxCmdSN); if (NopInHdr->InitiatorTaskTag == ISCSI_RESERVED_TAG) { if (NopInHdr->StatSN != Tcb->Conn->ExpStatSN) { @@ -2875,7 +2882,6 @@ IScsiOnNopInRcvd ( return EFI_SUCCESS; } - /** Execute the SCSI command issued through the EXT SCSI PASS THRU protocol. @@ -2902,25 +2908,25 @@ IScsiExecuteScsiCommand ( IN OUT EFI_EXT_SCSI_PASS_THRU_SCSI_REQUEST_PACKET *Packet ) { - EFI_STATUS Status; - ISCSI_DRIVER_DATA *Private; - ISCSI_SESSION *Session; - EFI_EVENT TimeoutEvent; - ISCSI_CONNECTION *Conn; - ISCSI_TCB *Tcb; - NET_BUF *Pdu; - ISCSI_XFER_CONTEXT *XferContext; - UINT8 *Data; - ISCSI_IN_BUFFER_CONTEXT InBufferContext; - UINT64 Timeout; - UINT8 *PduHdr; - - Private = ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU (PassThru); - Session = Private->Session; - Status = EFI_SUCCESS; - Tcb = NULL; - TimeoutEvent = NULL; - Timeout = 0; + EFI_STATUS Status; + ISCSI_DRIVER_DATA *Private; + ISCSI_SESSION *Session; + EFI_EVENT TimeoutEvent; + ISCSI_CONNECTION *Conn; + ISCSI_TCB *Tcb; + NET_BUF *Pdu; + ISCSI_XFER_CONTEXT *XferContext; + UINT8 *Data; + ISCSI_IN_BUFFER_CONTEXT InBufferContext; + UINT64 Timeout; + UINT8 *PduHdr; + + Private = ISCSI_DRIVER_DATA_FROM_EXT_SCSI_PASS_THRU (PassThru); + Session = Private->Session; + Status = EFI_SUCCESS; + Tcb = NULL; + TimeoutEvent = NULL; + Timeout = 0; if (Session->State != SESSION_STATE_LOGGED_IN) { Status = EFI_DEVICE_ERROR; @@ -2942,6 +2948,7 @@ IScsiExecuteScsiCommand ( if (EFI_ERROR (Status)) { goto ON_EXIT; } + // // Encapsulate the SCSI request packet into an iSCSI SCSI Command PDU. // @@ -2951,13 +2958,14 @@ IScsiExecuteScsiCommand ( goto ON_EXIT; } - XferContext = &Tcb->XferContext; - PduHdr = NetbufGetByte (Pdu, 0, NULL); + XferContext = &Tcb->XferContext; + PduHdr = NetbufGetByte (Pdu, 0, NULL); if (PduHdr == NULL) { Status = EFI_PROTOCOL_ERROR; NetbufFree (Pdu); goto ON_EXIT; } + XferContext->Offset = ISCSI_GET_DATASEG_LEN (PduHdr); // @@ -2974,25 +2982,26 @@ IScsiExecuteScsiCommand ( if (!Session->InitialR2T && (XferContext->Offset < Session->FirstBurstLength) && (XferContext->Offset < Packet->OutTransferLength) - ) { + ) + { // // Unsolicited Data-Out sequence is allowed. There is remaining SCSI // OUT data, and the limit of FirstBurstLength is not reached. // XferContext->TargetTransferTag = ISCSI_RESERVED_TAG; - XferContext->DesiredLength = MIN ( - Session->FirstBurstLength, - Packet->OutTransferLength - XferContext->Offset - ); + XferContext->DesiredLength = MIN ( + Session->FirstBurstLength, + Packet->OutTransferLength - XferContext->Offset + ); - Data = (UINT8 *) Packet->OutDataBuffer + XferContext->Offset; - Status = IScsiSendDataOutPduSequence (Data, Lun, Tcb); + Data = (UINT8 *)Packet->OutDataBuffer + XferContext->Offset; + Status = IScsiSendDataOutPduSequence (Data, Lun, Tcb); if (EFI_ERROR (Status)) { goto ON_EXIT; } } - InBufferContext.InData = (UINT8 *) Packet->InDataBuffer; + InBufferContext.InData = (UINT8 *)Packet->InDataBuffer; InBufferContext.InDataLen = Packet->InTransferLength; while (!Tcb->StatusXferd) { @@ -3022,34 +3031,35 @@ IScsiExecuteScsiCommand ( NetbufFree (Pdu); goto ON_EXIT; } + switch (ISCSI_GET_OPCODE (PduHdr)) { - case ISCSI_OPCODE_SCSI_DATA_IN: - Status = IScsiOnDataInRcvd (Pdu, Tcb, Packet); - break; + case ISCSI_OPCODE_SCSI_DATA_IN: + Status = IScsiOnDataInRcvd (Pdu, Tcb, Packet); + break; - case ISCSI_OPCODE_R2T: - Status = IScsiOnR2TRcvd (Pdu, Tcb, Lun, Packet); - break; + case ISCSI_OPCODE_R2T: + Status = IScsiOnR2TRcvd (Pdu, Tcb, Lun, Packet); + break; - case ISCSI_OPCODE_SCSI_RSP: - Status = IScsiOnScsiRspRcvd (Pdu, Tcb, Packet); - break; + case ISCSI_OPCODE_SCSI_RSP: + Status = IScsiOnScsiRspRcvd (Pdu, Tcb, Packet); + break; - case ISCSI_OPCODE_NOP_IN: - Status = IScsiOnNopInRcvd (Pdu, Tcb); - break; + case ISCSI_OPCODE_NOP_IN: + Status = IScsiOnNopInRcvd (Pdu, Tcb); + break; - case ISCSI_OPCODE_VENDOR_T0: - case ISCSI_OPCODE_VENDOR_T1: - case ISCSI_OPCODE_VENDOR_T2: - // - // These messages are vendor specific. Skip them. - // - break; + case ISCSI_OPCODE_VENDOR_T0: + case ISCSI_OPCODE_VENDOR_T1: + case ISCSI_OPCODE_VENDOR_T2: + // + // These messages are vendor specific. Skip them. + // + break; - default: - Status = EFI_PROTOCOL_ERROR; - break; + default: + Status = EFI_PROTOCOL_ERROR; + break; } NetbufFree (Pdu); @@ -3072,7 +3082,6 @@ ON_EXIT: return Status; } - /** Reinstate the session on some error. @@ -3087,7 +3096,7 @@ IScsiSessionReinstatement ( IN ISCSI_SESSION *Session ) { - EFI_STATUS Status; + EFI_STATUS Status; ASSERT (Session->State != SESSION_STATE_FREE); @@ -3105,7 +3114,6 @@ IScsiSessionReinstatement ( return Status; } - /** Initialize some session parameters before login. @@ -3120,18 +3128,18 @@ IScsiSessionInit ( ) { if (!Recovery) { - Session->Signature = ISCSI_SESSION_SIGNATURE; - Session->State = SESSION_STATE_FREE; + Session->Signature = ISCSI_SESSION_SIGNATURE; + Session->State = SESSION_STATE_FREE; InitializeListHead (&Session->Conns); InitializeListHead (&Session->TcbList); } - Session->Tsih = 0; + Session->Tsih = 0; - Session->CmdSN = 1; - Session->InitiatorTaskTag = 1; - Session->NextCid = 1; + Session->CmdSN = 1; + Session->InitiatorTaskTag = 1; + Session->NextCid = 1; Session->TargetPortalGroupTag = 0; Session->MaxConnections = ISCSI_MAX_CONNS_PER_SESSION; @@ -3147,7 +3155,6 @@ IScsiSessionInit ( Session->ErrorRecoveryLevel = 0; } - /** Abort the iSCSI session. That is, reset all the connection(s), and free the resources. @@ -3164,7 +3171,7 @@ IScsiSessionAbort ( EFI_GUID *ProtocolGuid; if (Session->State != SESSION_STATE_LOGGED_IN) { - return ; + return; } ASSERT (!IsListEmpty (&Session->Conns)); @@ -3197,5 +3204,5 @@ IScsiSessionAbort ( Session->State = SESSION_STATE_FAILED; - return ; + return; } diff --git a/NetworkPkg/IScsiDxe/IScsiProto.h b/NetworkPkg/IScsiDxe/IScsiProto.h index a5792a8bae..4848f88b04 100644 --- a/NetworkPkg/IScsiDxe/IScsiProto.h +++ b/NetworkPkg/IScsiDxe/IScsiProto.h @@ -24,21 +24,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent (((INT32) (s1) > (INT32) (s2)) && (s1 - s2) < ((UINT32) 1 << 31)) \ ) -#define ISCSI_WELL_KNOWN_PORT 3260 -#define ISCSI_MAX_CONNS_PER_SESSION 1 +#define ISCSI_WELL_KNOWN_PORT 3260 +#define ISCSI_MAX_CONNS_PER_SESSION 1 -#define DEFAULT_MAX_RECV_DATA_SEG_LEN 8192 -#define MAX_RECV_DATA_SEG_LEN_IN_FFP 65536 -#define DEFAULT_MAX_OUTSTANDING_R2T 1 +#define DEFAULT_MAX_RECV_DATA_SEG_LEN 8192 +#define MAX_RECV_DATA_SEG_LEN_IN_FFP 65536 +#define DEFAULT_MAX_OUTSTANDING_R2T 1 -#define ISCSI_VERSION_MAX 0x00 -#define ISCSI_VERSION_MIN 0x00 +#define ISCSI_VERSION_MAX 0x00 +#define ISCSI_VERSION_MIN 0x00 -#define ISCSI_CHECK_MEDIA_LOGIN_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) -#define ISCSI_CHECK_MEDIA_GET_DHCP_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) +#define ISCSI_CHECK_MEDIA_LOGIN_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) +#define ISCSI_CHECK_MEDIA_GET_DHCP_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) -#define ISCSI_REDIRECT_ADDR_START_DELIMITER '[' -#define ISCSI_REDIRECT_ADDR_END_DELIMITER ']' +#define ISCSI_REDIRECT_ADDR_START_DELIMITER '[' +#define ISCSI_REDIRECT_ADDR_END_DELIMITER ']' #define ISCSI_KEY_AUTH_METHOD "AuthMethod" #define ISCSI_KEY_HEADER_DIGEST "HeaderDigest" @@ -63,32 +63,32 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define ISCSI_KEY_SESSION_TYPE "SessionType" #define ISCSI_KEY_MAX_RECV_DATA_SEGMENT_LENGTH "MaxRecvDataSegmentLength" -#define ISCSI_KEY_VALUE_NONE "None" +#define ISCSI_KEY_VALUE_NONE "None" /// /// connection state for initiator /// -#define CONN_STATE_FREE 0 -#define CONN_STATE_XPT_WAIT 1 -#define CONN_STATE_IN_LOGIN 2 -#define CONN_STATE_LOGGED_IN 3 -#define CONN_STATE_IN_LOGOUT 4 -#define CONN_STATE_LOGOUT_REQUESTED 5 -#define CONN_STATE_CLEANUP_WAIT 6 -#define CONN_STATE_IN_CLEANUP 7 +#define CONN_STATE_FREE 0 +#define CONN_STATE_XPT_WAIT 1 +#define CONN_STATE_IN_LOGIN 2 +#define CONN_STATE_LOGGED_IN 3 +#define CONN_STATE_IN_LOGOUT 4 +#define CONN_STATE_LOGOUT_REQUESTED 5 +#define CONN_STATE_CLEANUP_WAIT 6 +#define CONN_STATE_IN_CLEANUP 7 /// /// session state for initiator /// -#define SESSION_STATE_FREE 0 -#define SESSION_STATE_LOGGED_IN 1 -#define SESSION_STATE_FAILED 2 +#define SESSION_STATE_FREE 0 +#define SESSION_STATE_LOGGED_IN 1 +#define SESSION_STATE_FAILED 2 -#define ISCSI_RESERVED_TAG 0xffffffff +#define ISCSI_RESERVED_TAG 0xffffffff -#define ISCSI_REQ_IMMEDIATE 0x40 -#define ISCSI_OPCODE_MASK 0x3F +#define ISCSI_REQ_IMMEDIATE 0x40 +#define ISCSI_OPCODE_MASK 0x3F #define ISCSI_SET_OPCODE(PduHdr, Op, Flgs) ((((ISCSI_BASIC_HEADER *) (PduHdr))->OpCode) = ((Op) | (Flgs))) #define ISCSI_GET_OPCODE(PduHdr) ((((ISCSI_BASIC_HEADER *) (PduHdr))->OpCode) & ISCSI_OPCODE_MASK) @@ -101,8 +101,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define ISCSI_GET_CURRENT_STAGE(PduHdr) ((UINT8) (((PduHdr)->Flags >> 2) & 0x3)) #define ISCSI_GET_NEXT_STAGE(PduHdr) ((UINT8) (((PduHdr)->Flags) & 0x3)) -#define ISCSI_GET_PAD_LEN(DataLen) ((~(DataLen) + 1) & 0x3) -#define ISCSI_ROUNDUP(DataLen) (((DataLen) + 3) &~(0x3)) +#define ISCSI_GET_PAD_LEN(DataLen) ((~(DataLen) + 1) & 0x3) +#define ISCSI_ROUNDUP(DataLen) (((DataLen) + 3) &~(0x3)) #define HTON24(Dst, Src) \ do { \ @@ -111,7 +111,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent (Dst)[2] = (UINT8) ((UINT8) (Src) & 0xFF); \ } while (0); -#define NTOH24(src) (((src)[0] << 16) | ((src)[1] << 8) | ((src)[2])) +#define NTOH24(src) (((src)[0] << 16) | ((src)[1] << 8) | ((src)[2])) #define ISCSI_GET_DATASEG_LEN(PduHdr) NTOH24 (((ISCSI_BASIC_HEADER *) (PduHdr))->DataSegmentLength) #define ISCSI_SET_DATASEG_LEN(PduHdr, Len) HTON24 (((ISCSI_BASIC_HEADER *) (PduHdr))->DataSegmentLength, (Len)) @@ -135,30 +135,30 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // Target opcodes. // -#define ISCSI_OPCODE_NOP_IN 0x20 -#define ISCSI_OPCODE_SCSI_RSP 0x21 -#define ISCSI_OPCODE_SCSI_TMF_RSP 0x22 -#define ISCSI_OPCODE_LOGIN_RSP 0x23 -#define ISCSI_OPCODE_TEXT_RSP 0x24 -#define ISCSI_OPCODE_SCSI_DATA_IN 0x25 -#define ISCSI_OPCODE_LOGOUT_RSP 0x26 -#define ISCSI_OPCODE_R2T 0x31 -#define ISCSI_OPCODE_ASYNC_MSG 0x32 -#define ISCSI_OPCODE_VENDOR_T0 0x3c -#define ISCSI_OPCODE_VENDOR_T1 0x3d -#define ISCSI_OPCODE_VENDOR_T2 0x3e -#define ISCSI_OPCODE_REJECT 0x3f - -#define ISCSI_BHS_FLAG_FINAL 0x80 +#define ISCSI_OPCODE_NOP_IN 0x20 +#define ISCSI_OPCODE_SCSI_RSP 0x21 +#define ISCSI_OPCODE_SCSI_TMF_RSP 0x22 +#define ISCSI_OPCODE_LOGIN_RSP 0x23 +#define ISCSI_OPCODE_TEXT_RSP 0x24 +#define ISCSI_OPCODE_SCSI_DATA_IN 0x25 +#define ISCSI_OPCODE_LOGOUT_RSP 0x26 +#define ISCSI_OPCODE_R2T 0x31 +#define ISCSI_OPCODE_ASYNC_MSG 0x32 +#define ISCSI_OPCODE_VENDOR_T0 0x3c +#define ISCSI_OPCODE_VENDOR_T1 0x3d +#define ISCSI_OPCODE_VENDOR_T2 0x3e +#define ISCSI_OPCODE_REJECT 0x3f + +#define ISCSI_BHS_FLAG_FINAL 0x80 // // Defined AHS types, others are reserved. // -#define ISCSI_AHS_TYPE_EXT_CDB 0x1 -#define ISCSI_AHS_TYPE_BI_EXP_READ_DATA_LEN 0x2 +#define ISCSI_AHS_TYPE_EXT_CDB 0x1 +#define ISCSI_AHS_TYPE_BI_EXP_READ_DATA_LEN 0x2 -#define SCSI_CMD_PDU_FLAG_READ 0x40 -#define SCSI_CMD_PDU_FLAG_WRITE 0x20 +#define SCSI_CMD_PDU_FLAG_READ 0x40 +#define SCSI_CMD_PDU_FLAG_WRITE 0x20 #define ISCSI_CMD_PDU_TASK_ATTR_MASK 0x07 @@ -174,10 +174,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // Flag bit definitions in SCSI response. // -#define SCSI_RSP_PDU_FLAG_BI_READ_OVERFLOW 0x10 -#define SCSI_RSP_PDU_FLAG_BI_READ_UNDERFLOW 0x08 -#define SCSI_RSP_PDU_FLAG_OVERFLOW 0x04 -#define SCSI_RSP_PDU_FLAG_UNDERFLOW 0x02 +#define SCSI_RSP_PDU_FLAG_BI_READ_OVERFLOW 0x10 +#define SCSI_RSP_PDU_FLAG_BI_READ_UNDERFLOW 0x08 +#define SCSI_RSP_PDU_FLAG_OVERFLOW 0x04 +#define SCSI_RSP_PDU_FLAG_UNDERFLOW 0x02 // // iSCSI service response codes. @@ -185,25 +185,25 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define ISCSI_SERVICE_RSP_COMMAND_COMPLETE_AT_TARGET 0x00 #define ISCSI_SERVICE_RSP_TARGET_FAILURE 0x01 -#define ISCSI_TMF_RSP_PDU_RSP_FUNCTION_COMPLETE 0 -#define ISCSI_TMF_RSP_PDU_RSP_TASK_NOT_EXIST 1 -#define ISCSI_TMF_RSP_PDU_RSP_LUN_NOT_EXIST 2 -#define ISCSI_TMF_RSP_PDU_RSP_TASK_STILL_ALLEGIANT 3 -#define ISCSI_TMF_RSP_PDU_RSP_TASK_REASSGIN_NOT_SUPPORTED 4 -#define ISCSI_TMF_RSP_PDU_RSP_NOT_SUPPORTED 5 -#define ISCSI_TMF_RSP_PDU_RSP_FUNCTION_AHTH_FAILED 6 -#define ISCSI_TMF_RSP_PDU_RSP_FUNCTION_REJECTED 255 +#define ISCSI_TMF_RSP_PDU_RSP_FUNCTION_COMPLETE 0 +#define ISCSI_TMF_RSP_PDU_RSP_TASK_NOT_EXIST 1 +#define ISCSI_TMF_RSP_PDU_RSP_LUN_NOT_EXIST 2 +#define ISCSI_TMF_RSP_PDU_RSP_TASK_STILL_ALLEGIANT 3 +#define ISCSI_TMF_RSP_PDU_RSP_TASK_REASSGIN_NOT_SUPPORTED 4 +#define ISCSI_TMF_RSP_PDU_RSP_NOT_SUPPORTED 5 +#define ISCSI_TMF_RSP_PDU_RSP_FUNCTION_AHTH_FAILED 6 +#define ISCSI_TMF_RSP_PDU_RSP_FUNCTION_REJECTED 255 #define SCSI_DATA_IN_PDU_FLAG_ACKKNOWLEDGE 0x40 #define SCSI_DATA_IN_PDU_FLAG_OVERFLOW SCSI_RSP_PDU_FLAG_OVERFLOW #define SCSI_DATA_IN_PDU_FLAG_UNDERFLOW SCSI_RSP_PDU_FLAG_UNDERFLOW #define SCSI_DATA_IN_PDU_FLAG_STATUS_VALID 0x01 -#define ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT 0x80 -#define ISCSI_LOGIN_REQ_PDU_FLAG_CONTINUE 0x40 +#define ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT 0x80 +#define ISCSI_LOGIN_REQ_PDU_FLAG_CONTINUE 0x40 -#define ISCSI_LOGIN_RSP_PDU_FLAG_TRANSIT ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT -#define ISCSI_LOGIN_RSP_PDU_FLAG_CONTINUE ISCSI_LOGIN_REQ_PDU_FLAG_CONTINUE +#define ISCSI_LOGIN_RSP_PDU_FLAG_TRANSIT ISCSI_LOGIN_REQ_PDU_FLAG_TRANSIT +#define ISCSI_LOGIN_RSP_PDU_FLAG_CONTINUE ISCSI_LOGIN_REQ_PDU_FLAG_CONTINUE #define ISCSI_LOGIN_STATUS_SUCCESS 0 #define ISCSI_LOGIN_STATUS_REDIRECTION 1 @@ -224,12 +224,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define ISCSI_SNACK_REQUEST_TYPE_DATA_ACK 2 #define ISCSI_SNACK_REQUEST_TYPE_RDATA 3 -#define ISCSI_SECURITY_NEGOTIATION 0 -#define ISCSI_LOGIN_OPERATIONAL_NEGOTIATION 1 -#define ISCSI_FULL_FEATURE_PHASE 3 +#define ISCSI_SECURITY_NEGOTIATION 0 +#define ISCSI_LOGIN_OPERATIONAL_NEGOTIATION 1 +#define ISCSI_FULL_FEATURE_PHASE 3 -typedef struct _ISCSI_SESSION ISCSI_SESSION; -typedef struct _ISCSI_CONNECTION ISCSI_CONNECTION; +typedef struct _ISCSI_SESSION ISCSI_SESSION; +typedef struct _ISCSI_CONNECTION ISCSI_CONNECTION; typedef enum { DataIn = 0, @@ -241,340 +241,340 @@ typedef enum { /// iSCSI Basic Header Segment /// typedef struct _ISCSI_BASIC_HEADER { - UINT8 OpCode; - UINT8 Flags; - UINT16 OpCodeSpecific1; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Lun[8]; - UINT32 InitiatorTaskTag; - UINT32 OpCodeSpecific2[7]; + UINT8 OpCode; + UINT8 Flags; + UINT16 OpCodeSpecific1; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Lun[8]; + UINT32 InitiatorTaskTag; + UINT32 OpCodeSpecific2[7]; } ISCSI_BASIC_HEADER; typedef struct _ISCSI_ADDTIONAL_HEADER { - UINT16 Length; - UINT8 Type; - UINT8 TypeSpecific[1]; + UINT16 Length; + UINT8 Type; + UINT8 TypeSpecific[1]; } ISCSI_ADDITIONAL_HEADER; typedef struct _ISCSI_BI_EXP_READ_DATA_LEN_AHS { - UINT16 Length; - UINT8 Type; - UINT8 Reserved; - UINT32 ExpReadDataLength; + UINT16 Length; + UINT8 Type; + UINT8 Reserved; + UINT32 ExpReadDataLength; } ISCSI_BI_EXP_READ_DATA_LEN_AHS; /// /// SCSI Command /// typedef struct _SCSI_COMMAND { - UINT8 OpCode; - UINT8 Flags; - UINT16 Reserved; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Lun[8]; - UINT32 InitiatorTaskTag; - UINT32 ExpDataXferLength; - UINT32 CmdSN; - UINT32 ExpStatSN; - UINT8 Cdb[16]; + UINT8 OpCode; + UINT8 Flags; + UINT16 Reserved; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Lun[8]; + UINT32 InitiatorTaskTag; + UINT32 ExpDataXferLength; + UINT32 CmdSN; + UINT32 ExpStatSN; + UINT8 Cdb[16]; } SCSI_COMMAND; /// /// SCSI Response /// typedef struct _SCSI_RESPONSE { - UINT8 OpCode; - UINT8 Flags; - UINT8 Response; - UINT8 Status; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Reserved[8]; - UINT32 InitiatorTaskTag; - UINT32 SNACKTag; - UINT32 StatSN; - UINT32 ExpCmdSN; - UINT32 MaxCmdSN; - UINT32 ExpDataSN; - UINT32 BiReadResidualCount; - UINT32 ResidualCount; + UINT8 OpCode; + UINT8 Flags; + UINT8 Response; + UINT8 Status; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Reserved[8]; + UINT32 InitiatorTaskTag; + UINT32 SNACKTag; + UINT32 StatSN; + UINT32 ExpCmdSN; + UINT32 MaxCmdSN; + UINT32 ExpDataSN; + UINT32 BiReadResidualCount; + UINT32 ResidualCount; } SCSI_RESPONSE; typedef struct _ISCSI_SENSE_DATA { - UINT16 Length; - UINT8 Data[2]; + UINT16 Length; + UINT8 Data[2]; } ISCSI_SENSE_DATA; /// /// iSCSI Task Management Function Request. /// typedef struct _ISCSI_TMF_REQUEST { - UINT8 OpCode; - UINT8 Fuction; - UINT16 Reserved1; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Lun[8]; - UINT32 InitiatorTaskTag; - UINT32 ReferencedTaskTag; - UINT32 CmdSN; - UINT32 ExpStatSN; - UINT32 RefCmdSN; - UINT32 ExpDataSN; - UINT32 Reserved2[2]; + UINT8 OpCode; + UINT8 Fuction; + UINT16 Reserved1; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Lun[8]; + UINT32 InitiatorTaskTag; + UINT32 ReferencedTaskTag; + UINT32 CmdSN; + UINT32 ExpStatSN; + UINT32 RefCmdSN; + UINT32 ExpDataSN; + UINT32 Reserved2[2]; } ISCSI_TMF_REQUEST; /// /// iSCSI Task Management Function Response. /// typedef struct _ISCSI_TMF_RESPONSE { - UINT8 OpCode; - UINT8 Reserved1; - UINT8 Response; - UINT8 Reserved2; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT32 Reserver3[2]; - UINT32 InitiatorTaskTag; - UINT32 Reserved4; - UINT32 StatSN; - UINT32 ExpCmdSN; - UINT32 MaxCmdSN; - UINT32 Reserved[3]; + UINT8 OpCode; + UINT8 Reserved1; + UINT8 Response; + UINT8 Reserved2; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT32 Reserver3[2]; + UINT32 InitiatorTaskTag; + UINT32 Reserved4; + UINT32 StatSN; + UINT32 ExpCmdSN; + UINT32 MaxCmdSN; + UINT32 Reserved[3]; } ISCSI_TMF_RESPONSE; /// /// SCSI Data-Out /// typedef struct _ISCSI_SCSI_DATA_OUT { - UINT8 OpCode; - UINT8 Reserved1[3]; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Lun[8]; - UINT32 InitiatorTaskTag; - UINT32 TargetTransferTag; - UINT32 Reserved2; - UINT32 ExpStatSN; - UINT32 Reserved3; - UINT32 DataSN; - UINT32 BufferOffset; - UINT32 Reserved4; + UINT8 OpCode; + UINT8 Reserved1[3]; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Lun[8]; + UINT32 InitiatorTaskTag; + UINT32 TargetTransferTag; + UINT32 Reserved2; + UINT32 ExpStatSN; + UINT32 Reserved3; + UINT32 DataSN; + UINT32 BufferOffset; + UINT32 Reserved4; } ISCSI_SCSI_DATA_OUT; /// /// SCSI Data-In /// typedef struct _ISCSI_SCSI_DATA_IN { - UINT8 OpCode; - UINT8 Flags; - UINT8 Reserved1; - UINT8 Status; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Lun[8]; - UINT32 InitiatorTaskTag; - UINT32 TargetTransferTag; - UINT32 StatSN; - UINT32 ExpCmdSN; - UINT32 MaxCmdSN; - UINT32 DataSN; - UINT32 BufferOffset; - UINT32 ResidualCount; + UINT8 OpCode; + UINT8 Flags; + UINT8 Reserved1; + UINT8 Status; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Lun[8]; + UINT32 InitiatorTaskTag; + UINT32 TargetTransferTag; + UINT32 StatSN; + UINT32 ExpCmdSN; + UINT32 MaxCmdSN; + UINT32 DataSN; + UINT32 BufferOffset; + UINT32 ResidualCount; } ISCSI_SCSI_DATA_IN; /// /// Ready To Transfer. /// typedef struct _ISCSI_READY_TO_TRANSFER { - UINT8 OpCode; - UINT8 Reserved1[3]; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Lun[8]; - UINT32 InitiatorTaskTag; - UINT32 TargetTransferTag; - UINT32 StatSN; - UINT32 ExpCmdSN; - UINT32 MaxCmdSN; - UINT32 R2TSeqNum; - UINT32 BufferOffset; - UINT32 DesiredDataTransferLength; + UINT8 OpCode; + UINT8 Reserved1[3]; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Lun[8]; + UINT32 InitiatorTaskTag; + UINT32 TargetTransferTag; + UINT32 StatSN; + UINT32 ExpCmdSN; + UINT32 MaxCmdSN; + UINT32 R2TSeqNum; + UINT32 BufferOffset; + UINT32 DesiredDataTransferLength; } ISCSI_READY_TO_TRANSFER; typedef struct _ISCSI_ASYNC_MESSAGE { - UINT8 OpCode; - UINT8 Reserved1[8]; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Lun[8]; - UINT32 InitiatorTaskTag; - UINT32 Reserved2; - UINT32 StatSN; - UINT32 ExpCmdSN; - UINT32 MaxCmdSN; - UINT8 AsyncEvent; - UINT8 AsyncVCode; - UINT16 Parameter1; - UINT16 Parameter2; - UINT16 Parameter3; - UINT32 Reserved3; + UINT8 OpCode; + UINT8 Reserved1[8]; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Lun[8]; + UINT32 InitiatorTaskTag; + UINT32 Reserved2; + UINT32 StatSN; + UINT32 ExpCmdSN; + UINT32 MaxCmdSN; + UINT8 AsyncEvent; + UINT8 AsyncVCode; + UINT16 Parameter1; + UINT16 Parameter2; + UINT16 Parameter3; + UINT32 Reserved3; } ISCSI_ASYNC_MESSAGE; /// /// Login Request. /// typedef struct _ISCSI_LOGIN_REQUEST { - UINT8 OpCode; - UINT8 Flags; - UINT8 VersionMax; - UINT8 VersionMin; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Isid[6]; - UINT16 Tsih; - UINT32 InitiatorTaskTag; - UINT16 Cid; - UINT16 Reserved1; - UINT32 CmdSN; - UINT32 ExpStatSN; - UINT32 Reserved2[4]; + UINT8 OpCode; + UINT8 Flags; + UINT8 VersionMax; + UINT8 VersionMin; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Isid[6]; + UINT16 Tsih; + UINT32 InitiatorTaskTag; + UINT16 Cid; + UINT16 Reserved1; + UINT32 CmdSN; + UINT32 ExpStatSN; + UINT32 Reserved2[4]; } ISCSI_LOGIN_REQUEST; /// /// Login Response. /// typedef struct _ISCSI_LOGIN_RESPONSE { - UINT8 OpCode; - UINT8 Flags; - UINT8 VersionMax; - UINT8 VersionActive; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Isid[6]; - UINT16 Tsih; - UINT32 InitiatorTaskTag; - UINT32 Reserved1; - UINT32 StatSN; - UINT32 ExpCmdSN; - UINT32 MaxCmdSN; - UINT8 StatusClass; - UINT8 StatusDetail; - UINT8 Reserved2[10]; + UINT8 OpCode; + UINT8 Flags; + UINT8 VersionMax; + UINT8 VersionActive; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Isid[6]; + UINT16 Tsih; + UINT32 InitiatorTaskTag; + UINT32 Reserved1; + UINT32 StatSN; + UINT32 ExpCmdSN; + UINT32 MaxCmdSN; + UINT8 StatusClass; + UINT8 StatusDetail; + UINT8 Reserved2[10]; } ISCSI_LOGIN_RESPONSE; /// /// Logout Request. /// typedef struct _ISCSI_LOGOUT_REQUEST { - UINT8 OpCode; - UINT8 ReasonCode; - UINT16 Reserved1; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT32 Reserved2[2]; - UINT32 InitiatorTaskTag; - UINT16 Cid; - UINT16 Reserved3; - UINT32 CmdSN; - UINT32 ExpStatSN; - UINT32 Reserved4[4]; + UINT8 OpCode; + UINT8 ReasonCode; + UINT16 Reserved1; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT32 Reserved2[2]; + UINT32 InitiatorTaskTag; + UINT16 Cid; + UINT16 Reserved3; + UINT32 CmdSN; + UINT32 ExpStatSN; + UINT32 Reserved4[4]; } ISCSI_LOGOUT_REQUEST; /// /// Logout Response. /// typedef struct _ISCSI_LOGOUT_RESPONSE { - UINT8 OpCode; - UINT8 Reserved1; - UINT8 Response; - UINT8 Reserved2; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT32 Reserved3[2]; - UINT32 InitiatorTaskTag; - UINT32 Reserved4; - UINT32 StatSN; - UINT32 ExpCmdSN; - UINT32 MaxCmdSN; - UINT32 Reserved5; - UINT16 Time2Wait; - UINT16 Time2Retain; - UINT32 Reserved6; + UINT8 OpCode; + UINT8 Reserved1; + UINT8 Response; + UINT8 Reserved2; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT32 Reserved3[2]; + UINT32 InitiatorTaskTag; + UINT32 Reserved4; + UINT32 StatSN; + UINT32 ExpCmdSN; + UINT32 MaxCmdSN; + UINT32 Reserved5; + UINT16 Time2Wait; + UINT16 Time2Retain; + UINT32 Reserved6; } ISCSI_LOGOUT_RESPONSE; /// /// SNACK Request. /// typedef struct _ISCSI_SNACK_REQUEST { - UINT8 OpCode; - UINT8 Type; - UINT16 Reserved1; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Lun[8]; - UINT32 InitiatorTaskTag; - UINT32 TargetTransferTag; - UINT32 Reserved2; - UINT32 ExpStatSN; - UINT32 Reserved[2]; - UINT32 BegRun; - UINT32 RunLength; + UINT8 OpCode; + UINT8 Type; + UINT16 Reserved1; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Lun[8]; + UINT32 InitiatorTaskTag; + UINT32 TargetTransferTag; + UINT32 Reserved2; + UINT32 ExpStatSN; + UINT32 Reserved[2]; + UINT32 BegRun; + UINT32 RunLength; } ISCSI_SNACK_REQUEST; /// /// Reject. /// typedef struct _ISCSI_REJECT { - UINT8 OpCode; - UINT8 Reserved1; - UINT8 Reason; - UINT8 Reserved2; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT32 Reserved3[2]; - UINT32 InitiatorTaskTag; - UINT32 Reserved4; - UINT32 StatSN; - UINT32 ExpCmdSN; - UINT32 MaxCmdSN; - UINT32 DataSN; - UINT32 Reserved5[2]; + UINT8 OpCode; + UINT8 Reserved1; + UINT8 Reason; + UINT8 Reserved2; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT32 Reserved3[2]; + UINT32 InitiatorTaskTag; + UINT32 Reserved4; + UINT32 StatSN; + UINT32 ExpCmdSN; + UINT32 MaxCmdSN; + UINT32 DataSN; + UINT32 Reserved5[2]; } ISCSI_REJECT; /// /// NOP-Out. /// typedef struct _ISCSI_NOP_OUT { - UINT8 OpCode; - UINT8 Reserved1[3]; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Lun[8]; - UINT32 InitiatorTaskTag; - UINT32 TargetTransferTag; - UINT32 CmdSN; - UINT32 ExpStatSN; - UINT32 Reserved2[4]; + UINT8 OpCode; + UINT8 Reserved1[3]; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Lun[8]; + UINT32 InitiatorTaskTag; + UINT32 TargetTransferTag; + UINT32 CmdSN; + UINT32 ExpStatSN; + UINT32 Reserved2[4]; } ISCSI_NOP_OUT; /// /// NOP-In. /// typedef struct _ISCSI_NOP_IN { - UINT8 OpCode; - UINT8 Reserved1[3]; - UINT8 TotalAHSLength; - UINT8 DataSegmentLength[3]; - UINT8 Lun[8]; - UINT32 InitiatorTaskTag; - UINT32 TargetTransferTag; - UINT32 StatSN; - UINT32 ExpCmdSN; - UINT32 MaxCmdSN; - UINT32 Reserved2[3]; + UINT8 OpCode; + UINT8 Reserved1[3]; + UINT8 TotalAHSLength; + UINT8 DataSegmentLength[3]; + UINT8 Lun[8]; + UINT32 InitiatorTaskTag; + UINT32 TargetTransferTag; + UINT32 StatSN; + UINT32 ExpCmdSN; + UINT32 MaxCmdSN; + UINT32 Reserved2[3]; } ISCSI_NOP_IN; typedef enum { @@ -583,41 +583,41 @@ typedef enum { } ISCSI_DIGEST_TYPE; typedef struct _ISCSI_XFER_CONTEXT { - UINT32 TargetTransferTag; - UINT32 Offset; - UINT32 DesiredLength; - UINT32 ExpDataSN; + UINT32 TargetTransferTag; + UINT32 Offset; + UINT32 DesiredLength; + UINT32 ExpDataSN; } ISCSI_XFER_CONTEXT; typedef struct _ISCSI_IN_BUFFER_CONTEXT { - UINT8 *InData; - UINT32 InDataLen; + UINT8 *InData; + UINT32 InDataLen; } ISCSI_IN_BUFFER_CONTEXT; typedef struct _ISCSI_TCB { - LIST_ENTRY Link; - - BOOLEAN SoFarInOrder; - UINT32 ExpDataSN; - BOOLEAN FbitReceived; - BOOLEAN StatusXferd; - UINT32 ActiveR2Ts; - UINT32 Response; - CHAR8 *Reason; - UINT32 InitiatorTaskTag; - UINT32 CmdSN; - UINT32 SNACKTag; - - ISCSI_XFER_CONTEXT XferContext; - - ISCSI_CONNECTION *Conn; + LIST_ENTRY Link; + + BOOLEAN SoFarInOrder; + UINT32 ExpDataSN; + BOOLEAN FbitReceived; + BOOLEAN StatusXferd; + UINT32 ActiveR2Ts; + UINT32 Response; + CHAR8 *Reason; + UINT32 InitiatorTaskTag; + UINT32 CmdSN; + UINT32 SNACKTag; + + ISCSI_XFER_CONTEXT XferContext; + + ISCSI_CONNECTION *Conn; } ISCSI_TCB; typedef struct _ISCSI_KEY_VALUE_PAIR { - LIST_ENTRY List; + LIST_ENTRY List; - CHAR8 *Key; - CHAR8 *Value; + CHAR8 *Key; + CHAR8 *Value; } ISCSI_KEY_VALUE_PAIR; /** @@ -657,8 +657,8 @@ IScsiDetatchConnection ( **/ EFI_STATUS IScsiConnLogin ( - IN OUT ISCSI_CONNECTION *Conn, - IN UINT16 Timeout + IN OUT ISCSI_CONNECTION *Conn, + IN UINT16 Timeout ); /** @@ -671,7 +671,7 @@ IScsiConnLogin ( **/ ISCSI_CONNECTION * IScsiCreateConnection ( - IN ISCSI_SESSION *Session + IN ISCSI_SESSION *Session ); /** @@ -764,9 +764,9 @@ IScsiReceiveLoginRsp ( **/ EFI_STATUS IScsiAddKeyValuePair ( - IN OUT NET_BUF *Pdu, - IN CHAR8 *Key, - IN CHAR8 *Value + IN OUT NET_BUF *Pdu, + IN CHAR8 *Key, + IN CHAR8 *Value ); /** @@ -818,9 +818,9 @@ IScsiProcessLoginRsp ( **/ EFI_STATUS IScsiUpdateTargetAddress ( - IN OUT ISCSI_SESSION *Session, - IN CHAR8 *Data, - IN UINT32 Len + IN OUT ISCSI_SESSION *Session, + IN CHAR8 *Data, + IN UINT32 Len ); /** @@ -832,7 +832,7 @@ IScsiUpdateTargetAddress ( VOID EFIAPI IScsiFreeNbufList ( - VOID *Arg + VOID *Arg ); /** @@ -857,12 +857,12 @@ IScsiFreeNbufList ( **/ EFI_STATUS IScsiReceivePdu ( - IN ISCSI_CONNECTION *Conn, - OUT NET_BUF **Pdu, - IN ISCSI_IN_BUFFER_CONTEXT *Context OPTIONAL, - IN BOOLEAN HeaderDigest, - IN BOOLEAN DataDigest, - IN EFI_EVENT TimeoutEvent OPTIONAL + IN ISCSI_CONNECTION *Conn, + OUT NET_BUF **Pdu, + IN ISCSI_IN_BUFFER_CONTEXT *Context OPTIONAL, + IN BOOLEAN HeaderDigest, + IN BOOLEAN DataDigest, + IN EFI_EVENT TimeoutEvent OPTIONAL ); /** @@ -905,8 +905,8 @@ IScsiFillOpParams ( **/ EFI_STATUS IScsiPadSegment ( - IN OUT NET_BUF *Pdu, - IN UINT32 Len + IN OUT NET_BUF *Pdu, + IN UINT32 Len ); /** @@ -921,8 +921,8 @@ IScsiPadSegment ( **/ LIST_ENTRY * IScsiBuildKeyValueList ( - IN CHAR8 *Data, - IN UINT32 Len + IN CHAR8 *Data, + IN UINT32 Len ); /** @@ -938,8 +938,8 @@ IScsiBuildKeyValueList ( **/ CHAR8 * IScsiGetValueByKeyFromList ( - IN OUT LIST_ENTRY *KeyValueList, - IN CHAR8 *Key + IN OUT LIST_ENTRY *KeyValueList, + IN CHAR8 *Key ); /** @@ -950,7 +950,7 @@ IScsiGetValueByKeyFromList ( **/ VOID IScsiFreeKeyValueList ( - IN LIST_ENTRY *KeyValueList + IN LIST_ENTRY *KeyValueList ); /** @@ -965,8 +965,8 @@ IScsiFreeKeyValueList ( **/ EFI_STATUS IScsiNormalizeName ( - IN OUT CHAR8 *Name, - IN UINTN Len + IN OUT CHAR8 *Name, + IN UINTN Len ); /** diff --git a/NetworkPkg/Include/Guid/HttpBootConfigHii.h b/NetworkPkg/Include/Guid/HttpBootConfigHii.h index 88fd422567..1db0d5abaf 100644 --- a/NetworkPkg/Include/Guid/HttpBootConfigHii.h +++ b/NetworkPkg/Include/Guid/HttpBootConfigHii.h @@ -14,6 +14,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0x4d20583a, 0x7765, 0x4e7a, { 0x8a, 0x67, 0xdc, 0xde, 0x74, 0xee, 0x3e, 0xc5 } \ } -extern EFI_GUID gHttpBootConfigGuid; +extern EFI_GUID gHttpBootConfigGuid; #endif diff --git a/NetworkPkg/Include/Guid/HttpTlsCipherList.h b/NetworkPkg/Include/Guid/HttpTlsCipherList.h index 1dffe9497a..0ead068831 100644 --- a/NetworkPkg/Include/Guid/HttpTlsCipherList.h +++ b/NetworkPkg/Include/Guid/HttpTlsCipherList.h @@ -24,9 +24,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0x46ddb415, 0x5244, 0x49c7, { 0x93, 0x74, 0xf0, 0xe2, 0x98, 0xe7, 0xd3, 0x86 } \ } -#define EDKII_HTTP_TLS_CIPHER_LIST_VARIABLE L"HttpTlsCipherList" +#define EDKII_HTTP_TLS_CIPHER_LIST_VARIABLE L"HttpTlsCipherList" -extern EFI_GUID gEdkiiHttpTlsCipherListGuid; +extern EFI_GUID gEdkiiHttpTlsCipherListGuid; #endif - diff --git a/NetworkPkg/Include/Guid/IScsiConfigHii.h b/NetworkPkg/Include/Guid/IScsiConfigHii.h index d63ef208b1..f21e25956e 100644 --- a/NetworkPkg/Include/Guid/IScsiConfigHii.h +++ b/NetworkPkg/Include/Guid/IScsiConfigHii.h @@ -15,6 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0x4b47d616, 0xa8d6, 0x4552, { 0x9d, 0x44, 0xcc, 0xad, 0x2e, 0xf, 0x4c, 0xf9 } \ } -extern EFI_GUID gIScsiConfigGuid; +extern EFI_GUID gIScsiConfigGuid; #endif diff --git a/NetworkPkg/Include/Guid/Ip4Config2Hii.h b/NetworkPkg/Include/Guid/Ip4Config2Hii.h index fe431f8c00..06b9d76f7d 100644 --- a/NetworkPkg/Include/Guid/Ip4Config2Hii.h +++ b/NetworkPkg/Include/Guid/Ip4Config2Hii.h @@ -14,6 +14,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0x9b942747, 0x154e, 0x4d29, { 0xa4, 0x36, 0xbf, 0x71, 0x0, 0xc8, 0xb5, 0x3b } \ } -extern EFI_GUID gIp4Config2NvDataGuid; +extern EFI_GUID gIp4Config2NvDataGuid; #endif diff --git a/NetworkPkg/Include/Guid/Ip4IScsiConfigHii.h b/NetworkPkg/Include/Guid/Ip4IScsiConfigHii.h index 18d67ae601..c74110de69 100644 --- a/NetworkPkg/Include/Guid/Ip4IScsiConfigHii.h +++ b/NetworkPkg/Include/Guid/Ip4IScsiConfigHii.h @@ -19,7 +19,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0x786ec0ac, 0x65ae, 0x4d1b, {0xb1, 0x37, 0xd, 0x11, 0xa, 0x48, 0x37, 0x97} \ } -extern EFI_GUID gIp4IScsiConfigGuid; -extern EFI_GUID gIScsiCHAPAuthInfoGuid; +extern EFI_GUID gIp4IScsiConfigGuid; +extern EFI_GUID gIScsiCHAPAuthInfoGuid; #endif diff --git a/NetworkPkg/Include/Guid/Ip6ConfigHii.h b/NetworkPkg/Include/Guid/Ip6ConfigHii.h index da26d03069..e60c7f944a 100644 --- a/NetworkPkg/Include/Guid/Ip6ConfigHii.h +++ b/NetworkPkg/Include/Guid/Ip6ConfigHii.h @@ -14,6 +14,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0x2eea107, 0x98db, 0x400e, { 0x98, 0x30, 0x46, 0xa, 0x15, 0x42, 0xd7, 0x99 } \ } -extern EFI_GUID gIp6ConfigNvDataGuid; +extern EFI_GUID gIp6ConfigNvDataGuid; #endif diff --git a/NetworkPkg/Include/Guid/TlsAuthConfigHii.h b/NetworkPkg/Include/Guid/TlsAuthConfigHii.h index fd2de001af..9ae3ccd8c0 100644 --- a/NetworkPkg/Include/Guid/TlsAuthConfigHii.h +++ b/NetworkPkg/Include/Guid/TlsAuthConfigHii.h @@ -14,7 +14,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0xb0eae4f8, 0x9a04, 0x4c6d, { 0xa7, 0x48, 0x79, 0x3d, 0xaa, 0xf, 0x65, 0xdf } \ } -extern EFI_GUID gTlsAuthConfigGuid; +extern EFI_GUID gTlsAuthConfigGuid; #endif - diff --git a/NetworkPkg/Include/Guid/TlsAuthentication.h b/NetworkPkg/Include/Guid/TlsAuthentication.h index e6646a65ef..4584a36086 100644 --- a/NetworkPkg/Include/Guid/TlsAuthentication.h +++ b/NetworkPkg/Include/Guid/TlsAuthentication.h @@ -16,9 +16,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0xfd2340D0, 0x3dab, 0x4349, { 0xa6, 0xc7, 0x3b, 0x4f, 0x12, 0xb4, 0x8e, 0xae } \ } -#define EFI_TLS_CA_CERTIFICATE_VARIABLE L"TlsCaCertificate" +#define EFI_TLS_CA_CERTIFICATE_VARIABLE L"TlsCaCertificate" -extern EFI_GUID gEfiTlsCaCertificateGuid; +extern EFI_GUID gEfiTlsCaCertificateGuid; #endif - diff --git a/NetworkPkg/Include/Guid/VlanConfigHii.h b/NetworkPkg/Include/Guid/VlanConfigHii.h index 9f74e4d592..3474e15fca 100644 --- a/NetworkPkg/Include/Guid/VlanConfigHii.h +++ b/NetworkPkg/Include/Guid/VlanConfigHii.h @@ -14,6 +14,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0xd79df6b0, 0xef44, 0x43bd, {0x97, 0x97, 0x43, 0xe9, 0x3b, 0xcf, 0x5f, 0xa8 } \ } -extern EFI_GUID gVlanConfigFormSetGuid; +extern EFI_GUID gVlanConfigFormSetGuid; #endif diff --git a/NetworkPkg/Include/Guid/WifiConnectionManagerConfigHii.h b/NetworkPkg/Include/Guid/WifiConnectionManagerConfigHii.h index 6d2b1344b0..962a761a09 100644 --- a/NetworkPkg/Include/Guid/WifiConnectionManagerConfigHii.h +++ b/NetworkPkg/Include/Guid/WifiConnectionManagerConfigHii.h @@ -14,6 +14,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0x9f94d327, 0x0b18, 0x4245, { 0x8f, 0xf2, 0x83, 0x2e, 0x30, 0xd, 0x2c, 0xef } \ } -extern EFI_GUID gWifiConfigGuid; +extern EFI_GUID gWifiConfigGuid; #endif diff --git a/NetworkPkg/Include/Library/HttpIoLib.h b/NetworkPkg/Include/Library/HttpIoLib.h index ccddc547a5..72f9b0313b 100644 --- a/NetworkPkg/Include/Library/HttpIoLib.h +++ b/NetworkPkg/Include/Library/HttpIoLib.h @@ -15,9 +15,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include -#define HTTP_IO_MAX_SEND_PAYLOAD 1024 -#define HTTP_IO_CHUNK_SIZE_STRING_LEN 50 -#define HTTP_IO_CHUNKED_TRANSFER_CODING_DATA_LENGTH 256 +#define HTTP_IO_MAX_SEND_PAYLOAD 1024 +#define HTTP_IO_CHUNK_SIZE_STRING_LEN 50 +#define HTTP_IO_CHUNKED_TRANSFER_CODING_DATA_LENGTH 256 /// /// HTTP_IO_CALLBACK_EVENT @@ -39,7 +39,7 @@ typedef enum { **/ typedef EFI_STATUS -(EFIAPI * HTTP_IO_CALLBACK) ( +(EFIAPI *HTTP_IO_CALLBACK)( IN HTTP_IO_CALLBACK_EVENT EventType, IN EFI_HTTP_MESSAGE *Message, IN VOID *Context @@ -49,70 +49,70 @@ EFI_STATUS /// A wrapper structure to hold the received HTTP response data. /// typedef struct { - EFI_HTTP_RESPONSE_DATA Response; - UINTN HeaderCount; - EFI_HTTP_HEADER *Headers; - UINTN BodyLength; - CHAR8 *Body; - EFI_STATUS Status; + EFI_HTTP_RESPONSE_DATA Response; + UINTN HeaderCount; + EFI_HTTP_HEADER *Headers; + UINTN BodyLength; + CHAR8 *Body; + EFI_STATUS Status; } HTTP_IO_RESPONSE_DATA; /// /// HTTP_IO configuration data for IPv4 /// typedef struct { - EFI_HTTP_VERSION HttpVersion; - UINT32 RequestTimeOut; ///< In milliseconds. - UINT32 ResponseTimeOut; ///< In milliseconds. - BOOLEAN UseDefaultAddress; - EFI_IPv4_ADDRESS LocalIp; - EFI_IPv4_ADDRESS SubnetMask; - UINT16 LocalPort; + EFI_HTTP_VERSION HttpVersion; + UINT32 RequestTimeOut; ///< In milliseconds. + UINT32 ResponseTimeOut; ///< In milliseconds. + BOOLEAN UseDefaultAddress; + EFI_IPv4_ADDRESS LocalIp; + EFI_IPv4_ADDRESS SubnetMask; + UINT16 LocalPort; } HTTP4_IO_CONFIG_DATA; /// /// HTTP_IO configuration data for IPv6 /// typedef struct { - EFI_HTTP_VERSION HttpVersion; - UINT32 RequestTimeOut; ///< In milliseconds. - BOOLEAN UseDefaultAddress; - EFI_IPv6_ADDRESS LocalIp; - UINT16 LocalPort; + EFI_HTTP_VERSION HttpVersion; + UINT32 RequestTimeOut; ///< In milliseconds. + BOOLEAN UseDefaultAddress; + EFI_IPv6_ADDRESS LocalIp; + UINT16 LocalPort; } HTTP6_IO_CONFIG_DATA; /// /// HTTP_IO configuration /// typedef union { - HTTP4_IO_CONFIG_DATA Config4; - HTTP6_IO_CONFIG_DATA Config6; + HTTP4_IO_CONFIG_DATA Config4; + HTTP6_IO_CONFIG_DATA Config6; } HTTP_IO_CONFIG_DATA; /// /// HTTP_IO wrapper of the EFI HTTP service. /// typedef struct { - UINT8 IpVersion; - EFI_HANDLE Image; - EFI_HANDLE Controller; - EFI_HANDLE Handle; + UINT8 IpVersion; + EFI_HANDLE Image; + EFI_HANDLE Controller; + EFI_HANDLE Handle; - EFI_HTTP_PROTOCOL *Http; + EFI_HTTP_PROTOCOL *Http; - HTTP_IO_CALLBACK Callback; - VOID *Context; + HTTP_IO_CALLBACK Callback; + VOID *Context; - EFI_HTTP_TOKEN ReqToken; - EFI_HTTP_MESSAGE ReqMessage; - EFI_HTTP_TOKEN RspToken; - EFI_HTTP_MESSAGE RspMessage; + EFI_HTTP_TOKEN ReqToken; + EFI_HTTP_MESSAGE ReqMessage; + EFI_HTTP_TOKEN RspToken; + EFI_HTTP_MESSAGE RspMessage; - BOOLEAN IsTxDone; - BOOLEAN IsRxDone; + BOOLEAN IsTxDone; + BOOLEAN IsRxDone; - EFI_EVENT TimeoutEvent; - UINT32 Timeout; + EFI_EVENT TimeoutEvent; + UINT32 Timeout; } HTTP_IO; /// @@ -140,9 +140,9 @@ typedef enum { /// Chunk links for HTTP chunked transfer coding. /// typedef struct { - LIST_ENTRY NextChunk; - UINTN Length; - CHAR8 *Data; + LIST_ENTRY NextChunk; + UINTN Length; + CHAR8 *Data; } HTTP_IO_CHUNKS; /** @@ -154,7 +154,7 @@ typedef struct { VOID EFIAPI HttpIoNotifyDpc ( - IN VOID *Context + IN VOID *Context ); /** @@ -167,8 +167,8 @@ HttpIoNotifyDpc ( VOID EFIAPI HttpIoNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -179,7 +179,7 @@ HttpIoNotify ( **/ VOID HttpIoDestroyIo ( - IN HTTP_IO *HttpIo + IN HTTP_IO *HttpIo ); /** @@ -205,13 +205,13 @@ HttpIoDestroyIo ( **/ EFI_STATUS HttpIoCreateIo ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN UINT8 IpVersion, - IN HTTP_IO_CONFIG_DATA *ConfigData, - IN HTTP_IO_CALLBACK Callback, - IN VOID *Context, - OUT HTTP_IO *HttpIo + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN UINT8 IpVersion, + IN HTTP_IO_CONFIG_DATA *ConfigData, + IN HTTP_IO_CALLBACK Callback, + IN VOID *Context, + OUT HTTP_IO *HttpIo ); /** @@ -258,9 +258,9 @@ HttpIoSendRequest ( **/ EFI_STATUS HttpIoRecvResponse ( - IN HTTP_IO *HttpIo, - IN BOOLEAN RecvMsgHeader, - OUT HTTP_IO_RESPONSE_DATA *ResponseData + IN HTTP_IO *HttpIo, + IN BOOLEAN RecvMsgHeader, + OUT HTTP_IO_RESPONSE_DATA *ResponseData ); /** @@ -276,9 +276,9 @@ HttpIoRecvResponse ( **/ EFI_STATUS HttpIoGetContentLength ( - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - OUT UINTN *ContentLength + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + OUT UINTN *ContentLength ); /** @@ -301,11 +301,11 @@ HttpIoGetContentLength ( **/ EFI_STATUS HttpIoGetChunkedTransferContent ( - IN HTTP_IO *HttpIo, - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - OUT LIST_ENTRY **ChunkListHead, - OUT UINTN *ContentLength + IN HTTP_IO *HttpIo, + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + OUT LIST_ENTRY **ChunkListHead, + OUT UINTN *ContentLength ); /** @@ -321,8 +321,9 @@ HttpIoGetChunkedTransferContent ( **/ EFI_STATUS HttpIoSendChunkedTransfer ( - IN HTTP_IO *HttpIo, - IN HTTP_IO_SEND_CHUNK_PROCESS *SendChunkProcess, - IN EFI_HTTP_MESSAGE *RequestMessage -); + IN HTTP_IO *HttpIo, + IN HTTP_IO_SEND_CHUNK_PROCESS *SendChunkProcess, + IN EFI_HTTP_MESSAGE *RequestMessage + ); + #endif diff --git a/NetworkPkg/Include/Library/HttpLib.h b/NetworkPkg/Include/Library/HttpLib.h index 2c3367fb01..f8505ab4d7 100644 --- a/NetworkPkg/Include/Library/HttpLib.h +++ b/NetworkPkg/Include/Library/HttpLib.h @@ -13,7 +13,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include - /** Decode a percent-encoded URI component to the ASCII character. @@ -33,10 +32,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI UriPercentDecode ( - IN CHAR8 *Buffer, - IN UINT32 BufferLength, - OUT CHAR8 *ResultBuffer, - OUT UINT32 *ResultLength + IN CHAR8 *Buffer, + IN UINT32 BufferLength, + OUT CHAR8 *ResultBuffer, + OUT UINT32 *ResultLength ); /** @@ -60,10 +59,10 @@ UriPercentDecode ( EFI_STATUS EFIAPI HttpParseUrl ( - IN CHAR8 *Url, - IN UINT32 Length, - IN BOOLEAN IsConnectMethod, - OUT VOID **UrlParser + IN CHAR8 *Url, + IN UINT32 Length, + IN BOOLEAN IsConnectMethod, + OUT VOID **UrlParser ); /** @@ -85,9 +84,9 @@ HttpParseUrl ( EFI_STATUS EFIAPI HttpUrlGetHostName ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT CHAR8 **HostName + IN CHAR8 *Url, + IN VOID *UrlParser, + OUT CHAR8 **HostName ); /** @@ -108,9 +107,9 @@ HttpUrlGetHostName ( EFI_STATUS EFIAPI HttpUrlGetIp4 ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT EFI_IPv4_ADDRESS *Ip4Address + IN CHAR8 *Url, + IN VOID *UrlParser, + OUT EFI_IPv4_ADDRESS *Ip4Address ); /** @@ -131,9 +130,9 @@ HttpUrlGetIp4 ( EFI_STATUS EFIAPI HttpUrlGetIp6 ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT EFI_IPv6_ADDRESS *Ip6Address + IN CHAR8 *Url, + IN VOID *UrlParser, + OUT EFI_IPv6_ADDRESS *Ip6Address ); /** @@ -154,9 +153,9 @@ HttpUrlGetIp6 ( EFI_STATUS EFIAPI HttpUrlGetPort ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT UINT16 *Port + IN CHAR8 *Url, + IN VOID *UrlParser, + OUT UINT16 *Port ); /** @@ -178,9 +177,9 @@ HttpUrlGetPort ( EFI_STATUS EFIAPI HttpUrlGetPath ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT CHAR8 **Path + IN CHAR8 *Url, + IN VOID *UrlParser, + OUT CHAR8 **Path ); /** @@ -192,7 +191,7 @@ HttpUrlGetPath ( VOID EFIAPI HttpUrlFreeParser ( - IN VOID *UrlParser + IN VOID *UrlParser ); // @@ -229,12 +228,12 @@ typedef enum { **/ typedef EFI_STATUS -(EFIAPI *HTTP_BODY_PARSER_CALLBACK) ( +(EFIAPI *HTTP_BODY_PARSER_CALLBACK)( IN HTTP_BODY_PARSE_EVENT EventType, IN CHAR8 *Data, IN UINTN Length, IN VOID *Context -); + ); /** Initialize a HTTP message-body parser. @@ -260,13 +259,13 @@ EFI_STATUS EFI_STATUS EFIAPI HttpInitMsgParser ( - IN EFI_HTTP_METHOD Method, - IN EFI_HTTP_STATUS_CODE StatusCode, - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - IN HTTP_BODY_PARSER_CALLBACK Callback, - IN VOID *Context, - OUT VOID **MsgParser + IN EFI_HTTP_METHOD Method, + IN EFI_HTTP_STATUS_CODE StatusCode, + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + IN HTTP_BODY_PARSER_CALLBACK Callback, + IN VOID *Context, + OUT VOID **MsgParser ); /** @@ -287,9 +286,9 @@ HttpInitMsgParser ( EFI_STATUS EFIAPI HttpParseMessageBody ( - IN OUT VOID *MsgParser, - IN UINTN BodyLength, - IN CHAR8 *Body + IN OUT VOID *MsgParser, + IN UINTN BodyLength, + IN CHAR8 *Body ); /** @@ -304,7 +303,7 @@ HttpParseMessageBody ( BOOLEAN EFIAPI HttpIsMessageComplete ( - IN VOID *MsgParser + IN VOID *MsgParser ); /** @@ -323,8 +322,8 @@ HttpIsMessageComplete ( EFI_STATUS EFIAPI HttpGetEntityLength ( - IN VOID *MsgParser, - OUT UINTN *ContentLength + IN VOID *MsgParser, + OUT UINTN *ContentLength ); /** @@ -336,10 +335,9 @@ HttpGetEntityLength ( VOID EFIAPI HttpFreeMsgParser ( - IN VOID *MsgParser + IN VOID *MsgParser ); - /** Find a specified header field according to the field name. @@ -353,9 +351,9 @@ HttpFreeMsgParser ( EFI_HTTP_HEADER * EFIAPI HttpFindHeader ( - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - IN CHAR8 *FieldName + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + IN CHAR8 *FieldName ); /** @@ -374,9 +372,9 @@ HttpFindHeader ( EFI_STATUS EFIAPI HttpSetFieldNameAndValue ( - IN OUT EFI_HTTP_HEADER *HttpHeader, - IN CONST CHAR8 *FieldName, - IN CONST CHAR8 *FieldValue + IN OUT EFI_HTTP_HEADER *HttpHeader, + IN CONST CHAR8 *FieldName, + IN CONST CHAR8 *FieldValue ); /** @@ -393,9 +391,9 @@ HttpSetFieldNameAndValue ( CHAR8 * EFIAPI HttpGetFieldNameAndValue ( - IN CHAR8 *String, - OUT CHAR8 **FieldName, - OUT CHAR8 **FieldValue + IN CHAR8 *String, + OUT CHAR8 **FieldName, + OUT CHAR8 **FieldValue ); /** @@ -436,10 +434,10 @@ HttpFreeHeaderFields ( EFI_STATUS EFIAPI HttpGenRequestMessage ( - IN CONST EFI_HTTP_MESSAGE *Message, - IN CONST CHAR8 *Url, - OUT CHAR8 **RequestMsg, - OUT UINTN *RequestMsgSize + IN CONST EFI_HTTP_MESSAGE *Message, + IN CONST CHAR8 *Url, + OUT CHAR8 **RequestMsg, + OUT UINTN *RequestMsgSize ); /** @@ -454,7 +452,7 @@ HttpGenRequestMessage ( EFI_HTTP_STATUS_CODE EFIAPI HttpMappingToStatusCode ( - IN UINTN StatusCode + IN UINTN StatusCode ); /** @@ -471,21 +469,20 @@ HttpMappingToStatusCode ( BOOLEAN EFIAPI HttpIsValidHttpHeader ( - IN CHAR8 *DeleteList[], - IN UINTN DeleteCount, - IN CHAR8 *FieldName + IN CHAR8 *DeleteList[], + IN UINTN DeleteCount, + IN CHAR8 *FieldName ); // // A wrapper structure to hold the HTTP headers. // typedef struct { - UINTN MaxHeaderCount; - UINTN HeaderCount; - EFI_HTTP_HEADER *Headers; + UINTN MaxHeaderCount; + UINTN HeaderCount; + EFI_HTTP_HEADER *Headers; } HTTP_IO_HEADER; - /** Create a HTTP_IO_HEADER to hold the HTTP header items. @@ -496,7 +493,7 @@ typedef struct { **/ HTTP_IO_HEADER * HttpIoCreateHeader ( - UINTN MaxHeaderCount + UINTN MaxHeaderCount ); /** @@ -507,7 +504,7 @@ HttpIoCreateHeader ( **/ VOID HttpIoFreeHeader ( - IN HTTP_IO_HEADER *HttpIoHeader + IN HTTP_IO_HEADER *HttpIoHeader ); /** @@ -525,10 +522,9 @@ HttpIoFreeHeader ( **/ EFI_STATUS HttpIoSetHeader ( - IN HTTP_IO_HEADER *HttpIoHeader, - IN CHAR8 *FieldName, - IN CHAR8 *FieldValue + IN HTTP_IO_HEADER *HttpIoHeader, + IN CHAR8 *FieldName, + IN CHAR8 *FieldValue ); #endif - diff --git a/NetworkPkg/Include/Library/IpIoLib.h b/NetworkPkg/Include/Library/IpIoLib.h index d95413e87e..c8fd626ea2 100644 --- a/NetworkPkg/Include/Library/IpIoLib.h +++ b/NetworkPkg/Include/Library/IpIoLib.h @@ -19,24 +19,24 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // type and code define for ICMP protocol error // from IP // -#define ICMP_TYPE_UNREACH 3 -#define ICMP_TYPE_TIMXCEED 11 -#define ICMP_TYPE_PARAMPROB 12 -#define ICMP_TYPE_SOURCEQUENCH 4 - -#define ICMP_CODE_UNREACH_NET 0 -#define ICMP_CODE_UNREACH_HOST 1 -#define ICMP_CODE_UNREACH_PROTOCOL 2 -#define ICMP_CODE_UNREACH_PORT 3 -#define ICMP_CODE_UNREACH_NEEDFRAG 4 -#define ICMP_CODE_UNREACH_SRCFAIL 5 -#define ICMP_CODE_UNREACH_NET_UNKNOWN 6 -#define ICMP_CODE_UNREACH_HOST_UNKNOWN 7 -#define ICMP_CODE_UNREACH_ISOLATED 8 -#define ICMP_CODE_UNREACH_NET_PROHIB 9 -#define ICMP_CODE_UNREACH_HOST_PROHIB 10 -#define ICMP_CODE_UNREACH_TOSNET 11 -#define ICMP_CODE_UNREACH_TOSHOST 12 +#define ICMP_TYPE_UNREACH 3 +#define ICMP_TYPE_TIMXCEED 11 +#define ICMP_TYPE_PARAMPROB 12 +#define ICMP_TYPE_SOURCEQUENCH 4 + +#define ICMP_CODE_UNREACH_NET 0 +#define ICMP_CODE_UNREACH_HOST 1 +#define ICMP_CODE_UNREACH_PROTOCOL 2 +#define ICMP_CODE_UNREACH_PORT 3 +#define ICMP_CODE_UNREACH_NEEDFRAG 4 +#define ICMP_CODE_UNREACH_SRCFAIL 5 +#define ICMP_CODE_UNREACH_NET_UNKNOWN 6 +#define ICMP_CODE_UNREACH_HOST_UNKNOWN 7 +#define ICMP_CODE_UNREACH_ISOLATED 8 +#define ICMP_CODE_UNREACH_NET_PROHIB 9 +#define ICMP_CODE_UNREACH_HOST_PROHIB 10 +#define ICMP_CODE_UNREACH_TOSNET 11 +#define ICMP_CODE_UNREACH_TOSHOST 12 /** Get the IP header length from the struct EFI_IP4_HEADER. HeaderLength is @@ -47,7 +47,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent @return The IP header length. **/ -#define EFI_IP4_HEADER_LEN(HdrPtr) ((HdrPtr)->HeaderLength << 2) +#define EFI_IP4_HEADER_LEN(HdrPtr) ((HdrPtr)->HeaderLength << 2) /** To types of ICMP error which consist of ICMP header, IP header and original @@ -71,100 +71,98 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ #define NET_PROTO_HDR(Buf, Type) ((Type *) ((Buf)->BlockOp[0].Head)) - extern EFI_IP4_CONFIG_DATA mIp4IoDefaultIpConfigData; extern EFI_IP6_CONFIG_DATA mIp6IoDefaultIpConfigData; - /// /// This error will be delivered to the /// listening transportation layer protocol /// that consumes IpIO. /// -#define ICMP_ERR_UNREACH_NET 0 -#define ICMP_ERR_UNREACH_HOST 1 -#define ICMP_ERR_UNREACH_PROTOCOL 2 -#define ICMP_ERR_UNREACH_PORT 3 -#define ICMP_ERR_MSGSIZE 4 -#define ICMP_ERR_UNREACH_SRCFAIL 5 -#define ICMP_ERR_TIMXCEED_INTRANS 6 -#define ICMP_ERR_TIMXCEED_REASS 7 -#define ICMP_ERR_QUENCH 8 -#define ICMP_ERR_PARAMPROB 9 - -#define ICMP6_ERR_UNREACH_NET 0 -#define ICMP6_ERR_UNREACH_HOST 1 -#define ICMP6_ERR_UNREACH_PROTOCOL 2 -#define ICMP6_ERR_UNREACH_PORT 3 -#define ICMP6_ERR_PACKAGE_TOOBIG 4 -#define ICMP6_ERR_TIMXCEED_HOPLIMIT 5 -#define ICMP6_ERR_TIMXCEED_REASS 6 -#define ICMP6_ERR_PARAMPROB_HEADER 7 -#define ICMP6_ERR_PARAMPROB_NEXHEADER 8 -#define ICMP6_ERR_PARAMPROB_IPV6OPTION 9 +#define ICMP_ERR_UNREACH_NET 0 +#define ICMP_ERR_UNREACH_HOST 1 +#define ICMP_ERR_UNREACH_PROTOCOL 2 +#define ICMP_ERR_UNREACH_PORT 3 +#define ICMP_ERR_MSGSIZE 4 +#define ICMP_ERR_UNREACH_SRCFAIL 5 +#define ICMP_ERR_TIMXCEED_INTRANS 6 +#define ICMP_ERR_TIMXCEED_REASS 7 +#define ICMP_ERR_QUENCH 8 +#define ICMP_ERR_PARAMPROB 9 + +#define ICMP6_ERR_UNREACH_NET 0 +#define ICMP6_ERR_UNREACH_HOST 1 +#define ICMP6_ERR_UNREACH_PROTOCOL 2 +#define ICMP6_ERR_UNREACH_PORT 3 +#define ICMP6_ERR_PACKAGE_TOOBIG 4 +#define ICMP6_ERR_TIMXCEED_HOPLIMIT 5 +#define ICMP6_ERR_TIMXCEED_REASS 6 +#define ICMP6_ERR_PARAMPROB_HEADER 7 +#define ICMP6_ERR_PARAMPROB_NEXHEADER 8 +#define ICMP6_ERR_PARAMPROB_IPV6OPTION 9 /// /// The helper struct for IpIoGetIcmpErrStatus(). It is for internal use only. /// typedef struct { - BOOLEAN IsHard; - BOOLEAN Notify; + BOOLEAN IsHard; + BOOLEAN Notify; } ICMP_ERROR_INFO; typedef union { - EFI_IP4_COMPLETION_TOKEN Ip4Token; - EFI_IP6_COMPLETION_TOKEN Ip6Token; + EFI_IP4_COMPLETION_TOKEN Ip4Token; + EFI_IP6_COMPLETION_TOKEN Ip6Token; } IP_IO_IP_COMPLETION_TOKEN; typedef union { - EFI_IP4_TRANSMIT_DATA Ip4TxData; - EFI_IP6_TRANSMIT_DATA Ip6TxData; + EFI_IP4_TRANSMIT_DATA Ip4TxData; + EFI_IP6_TRANSMIT_DATA Ip6TxData; } IP_IO_IP_TX_DATA; typedef union { - EFI_IP4_RECEIVE_DATA Ip4RxData; - EFI_IP6_RECEIVE_DATA Ip6RxData; + EFI_IP4_RECEIVE_DATA Ip4RxData; + EFI_IP6_RECEIVE_DATA Ip6RxData; } IP_IO_IP_RX_DATA; typedef union { - EFI_IP4_OVERRIDE_DATA Ip4OverrideData; - EFI_IP6_OVERRIDE_DATA Ip6OverrideData; + EFI_IP4_OVERRIDE_DATA Ip4OverrideData; + EFI_IP6_OVERRIDE_DATA Ip6OverrideData; } IP_IO_OVERRIDE; typedef union { - EFI_IP4_CONFIG_DATA Ip4CfgData; - EFI_IP6_CONFIG_DATA Ip6CfgData; + EFI_IP4_CONFIG_DATA Ip4CfgData; + EFI_IP6_CONFIG_DATA Ip6CfgData; } IP_IO_IP_CONFIG_DATA; typedef union { - EFI_IP4_HEADER *Ip4Hdr; - EFI_IP6_HEADER *Ip6Hdr; + EFI_IP4_HEADER *Ip4Hdr; + EFI_IP6_HEADER *Ip6Hdr; } IP_IO_IP_HEADER; typedef union { - IP4_ADDR SubnetMask; - UINT8 PrefixLength; + IP4_ADDR SubnetMask; + UINT8 PrefixLength; } IP_IO_IP_MASK; typedef union { - EFI_IP4_PROTOCOL *Ip4; - EFI_IP6_PROTOCOL *Ip6; + EFI_IP4_PROTOCOL *Ip4; + EFI_IP6_PROTOCOL *Ip6; } IP_IO_IP_PROTOCOL; /// /// The IP session for an IP receive packet. /// typedef struct _EFI_NET_SESSION_DATA { - EFI_IP_ADDRESS Source; ///< Source IP of the received packet. - EFI_IP_ADDRESS Dest; ///< Destination IP of the received packet. - IP_IO_IP_HEADER IpHdr; ///< IP header of the received packet. - UINT32 IpHdrLen; ///< IP header length of the received packet. + EFI_IP_ADDRESS Source; ///< Source IP of the received packet. + EFI_IP_ADDRESS Dest; ///< Destination IP of the received packet. + IP_IO_IP_HEADER IpHdr; ///< IP header of the received packet. + UINT32 IpHdrLen; ///< IP header length of the received packet. ///< For IPv6, it includes the IP6 header ///< length and extension header length. For ///< IPv4, it includes the IP4 header length ///< and options length. - UINT8 IpVersion; ///< The IP version of the received packet. + UINT8 IpVersion; ///< The IP version of the received packet. } EFI_NET_SESSION_DATA; /** @@ -180,7 +178,7 @@ typedef struct _EFI_NET_SESSION_DATA { **/ typedef VOID -(EFIAPI *PKT_RCVD_NOTIFY) ( +(EFIAPI *PKT_RCVD_NOTIFY)( IN EFI_STATUS Status, IN UINT8 IcmpErr, IN EFI_NET_SESSION_DATA *NetSession, @@ -201,7 +199,7 @@ VOID **/ typedef VOID -(EFIAPI *PKT_SENT_NOTIFY) ( +(EFIAPI *PKT_SENT_NOTIFY)( IN EFI_STATUS Status, IN VOID *Context, IN IP_IO_IP_PROTOCOL Sender, @@ -216,47 +214,47 @@ typedef struct _IP_IO { /// /// The node used to link this IpIo to the active IpIo list. /// - LIST_ENTRY Entry; + LIST_ENTRY Entry; /// /// The list used to maintain the IP instance for different sending purpose. /// - LIST_ENTRY IpList; + LIST_ENTRY IpList; - EFI_HANDLE Controller; - EFI_HANDLE Image; - EFI_HANDLE ChildHandle; + EFI_HANDLE Controller; + EFI_HANDLE Image; + EFI_HANDLE ChildHandle; // // The IP instance consumed by this IP_IO // - IP_IO_IP_PROTOCOL Ip; - BOOLEAN IsConfigured; + IP_IO_IP_PROTOCOL Ip; + BOOLEAN IsConfigured; /// /// Some ip configuration data can be changed. /// - UINT8 Protocol; + UINT8 Protocol; /// /// Token and event used to get data from IP. /// - IP_IO_IP_COMPLETION_TOKEN RcvToken; + IP_IO_IP_COMPLETION_TOKEN RcvToken; /// /// List entry used to link the token passed to IP_IO. /// - LIST_ENTRY PendingSndList; + LIST_ENTRY PendingSndList; // // User interface used to get notify from IP_IO // - VOID *RcvdContext; ///< See IP_IO_OPEN_DATA::RcvdContext. - VOID *SndContext; ///< See IP_IO_OPEN_DATA::SndContext. - PKT_RCVD_NOTIFY PktRcvdNotify; ///< See IP_IO_OPEN_DATA::PktRcvdNotify. - PKT_SENT_NOTIFY PktSentNotify; ///< See IP_IO_OPEN_DATA::PktSentNotify. - UINT8 IpVersion; - IP4_ADDR StationIp; - IP4_ADDR SubnetMask; + VOID *RcvdContext; ///< See IP_IO_OPEN_DATA::RcvdContext. + VOID *SndContext; ///< See IP_IO_OPEN_DATA::SndContext. + PKT_RCVD_NOTIFY PktRcvdNotify; ///< See IP_IO_OPEN_DATA::PktRcvdNotify. + PKT_SENT_NOTIFY PktSentNotify; ///< See IP_IO_OPEN_DATA::PktSentNotify. + UINT8 IpVersion; + IP4_ADDR StationIp; + IP4_ADDR SubnetMask; } IP_IO; /// @@ -264,11 +262,11 @@ typedef struct _IP_IO { /// It is used by IpIoOpen(). /// typedef struct _IP_IO_OPEN_DATA { - IP_IO_IP_CONFIG_DATA IpConfigData; ///< Configuration of the IP instance. - VOID *RcvdContext; ///< Context data used by receive callback. - VOID *SndContext; ///< Context data used by send callback. - PKT_RCVD_NOTIFY PktRcvdNotify; ///< Receive callback. - PKT_SENT_NOTIFY PktSentNotify; ///< Send callback. + IP_IO_IP_CONFIG_DATA IpConfigData; ///< Configuration of the IP instance. + VOID *RcvdContext; ///< Context data used by receive callback. + VOID *SndContext; ///< Context data used by send callback. + PKT_RCVD_NOTIFY PktRcvdNotify; ///< Receive callback. + PKT_SENT_NOTIFY PktSentNotify; ///< Send callback. } IP_IO_OPEN_DATA; /// @@ -278,13 +276,13 @@ typedef struct _IP_IO_OPEN_DATA { /// IP_IO via IpIoSend(). /// typedef struct _IP_IO_SEND_ENTRY { - LIST_ENTRY Entry; - IP_IO *IpIo; - VOID *Context; - VOID *NotifyData; - IP_IO_IP_PROTOCOL Ip; - NET_BUF *Pkt; - IP_IO_IP_COMPLETION_TOKEN SndToken; + LIST_ENTRY Entry; + IP_IO *IpIo; + VOID *Context; + VOID *NotifyData; + IP_IO_IP_PROTOCOL Ip; + NET_BUF *Pkt; + IP_IO_IP_COMPLETION_TOKEN SndToken; } IP_IO_SEND_ENTRY; /// @@ -292,14 +290,14 @@ typedef struct _IP_IO_SEND_ENTRY { /// in IP_IO. /// typedef struct _IP_IO_IP_INFO { - EFI_IP_ADDRESS Addr; - IP_IO_IP_MASK PreMask; - LIST_ENTRY Entry; - EFI_HANDLE ChildHandle; - IP_IO_IP_PROTOCOL Ip; - IP_IO_IP_COMPLETION_TOKEN DummyRcvToken; - INTN RefCnt; - UINT8 IpVersion; + EFI_IP_ADDRESS Addr; + IP_IO_IP_MASK PreMask; + LIST_ENTRY Entry; + EFI_HANDLE ChildHandle; + IP_IO_IP_PROTOCOL Ip; + IP_IO_IP_COMPLETION_TOKEN DummyRcvToken; + INTN RefCnt; + UINT8 IpVersion; } IP_IO_IP_INFO; /** @@ -323,9 +321,9 @@ typedef struct _IP_IO_IP_INFO { IP_IO * EFIAPI IpIoCreate ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN UINT8 IpVersion + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN UINT8 IpVersion ); /** @@ -344,7 +342,7 @@ IpIoCreate ( EFI_STATUS EFIAPI IpIoDestroy ( - IN OUT IP_IO *IpIo + IN OUT IP_IO *IpIo ); /** @@ -365,7 +363,7 @@ IpIoDestroy ( EFI_STATUS EFIAPI IpIoStop ( - IN OUT IP_IO *IpIo + IN OUT IP_IO *IpIo ); /** @@ -394,8 +392,8 @@ IpIoStop ( EFI_STATUS EFIAPI IpIoOpen ( - IN OUT IP_IO *IpIo, - IN IP_IO_OPEN_DATA *OpenData + IN OUT IP_IO *IpIo, + IN IP_IO_OPEN_DATA *OpenData ); /** @@ -427,13 +425,13 @@ IpIoOpen ( EFI_STATUS EFIAPI IpIoSend ( - IN OUT IP_IO *IpIo, - IN OUT NET_BUF *Pkt, - IN IP_IO_IP_INFO *Sender OPTIONAL, - IN VOID *Context OPTIONAL, - IN VOID *NotifyData OPTIONAL, - IN EFI_IP_ADDRESS *Dest OPTIONAL, - IN IP_IO_OVERRIDE *OverrideData OPTIONAL + IN OUT IP_IO *IpIo, + IN OUT NET_BUF *Pkt, + IN IP_IO_IP_INFO *Sender OPTIONAL, + IN VOID *Context OPTIONAL, + IN VOID *NotifyData OPTIONAL, + IN EFI_IP_ADDRESS *Dest OPTIONAL, + IN IP_IO_OVERRIDE *OverrideData OPTIONAL ); /** @@ -496,8 +494,8 @@ IpIoAddIp ( EFI_STATUS EFIAPI IpIoConfigIp ( - IN OUT IP_IO_IP_INFO *IpInfo, - IN OUT VOID *IpConfigData OPTIONAL + IN OUT IP_IO_IP_INFO *IpInfo, + IN OUT VOID *IpConfigData OPTIONAL ); /** @@ -517,8 +515,8 @@ IpIoConfigIp ( VOID EFIAPI IpIoRemoveIp ( - IN IP_IO *IpIo, - IN IP_IO_IP_INFO *IpInfo + IN IP_IO *IpIo, + IN IP_IO_IP_INFO *IpInfo ); /** @@ -564,10 +562,10 @@ IpIoFindSender ( EFI_STATUS EFIAPI IpIoGetIcmpErrStatus ( - IN UINT8 IcmpError, - IN UINT8 IpVersion, - OUT BOOLEAN *IsHard OPTIONAL, - OUT BOOLEAN *Notify OPTIONAL + IN UINT8 IcmpError, + IN UINT8 IpVersion, + OUT BOOLEAN *IsHard OPTIONAL, + OUT BOOLEAN *Notify OPTIONAL ); /** @@ -604,4 +602,3 @@ IpIoRefreshNeighbor ( ); #endif - diff --git a/NetworkPkg/Include/Library/NetLib.h b/NetworkPkg/Include/Library/NetLib.h index a6d7a3b538..8c0e62b388 100644 --- a/NetworkPkg/Include/Library/NetLib.h +++ b/NetworkPkg/Include/Library/NetLib.h @@ -15,16 +15,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include -typedef UINT32 IP4_ADDR; -typedef UINT32 TCP_SEQNO; -typedef UINT16 TCP_PORTNO; +typedef UINT32 IP4_ADDR; +typedef UINT32 TCP_SEQNO; +typedef UINT16 TCP_PORTNO; +#define NET_ETHER_ADDR_LEN 6 +#define NET_IFTYPE_ETHERNET 0x01 -#define NET_ETHER_ADDR_LEN 6 -#define NET_IFTYPE_ETHERNET 0x01 - -#define NET_VLAN_TAG_LEN 4 -#define ETHER_TYPE_VLAN 0x8100 +#define NET_VLAN_TAG_LEN 4 +#define ETHER_TYPE_VLAN 0x8100 #define EFI_IP_PROTO_UDP 0x11 #define EFI_IP_PROTO_TCP 0x06 @@ -37,73 +36,72 @@ typedef UINT16 TCP_PORTNO; // // The address classification // -#define IP4_ADDR_CLASSA 1 // Deprecated -#define IP4_ADDR_CLASSB 2 // Deprecated -#define IP4_ADDR_CLASSC 3 // Deprecated -#define IP4_ADDR_CLASSD 4 -#define IP4_ADDR_CLASSE 5 +#define IP4_ADDR_CLASSA 1 // Deprecated +#define IP4_ADDR_CLASSB 2 // Deprecated +#define IP4_ADDR_CLASSC 3 // Deprecated +#define IP4_ADDR_CLASSD 4 +#define IP4_ADDR_CLASSE 5 -#define IP4_MASK_NUM 33 -#define IP6_PREFIX_NUM 129 +#define IP4_MASK_NUM 33 +#define IP6_PREFIX_NUM 129 -#define IP4_MASK_MAX 32 -#define IP6_PREFIX_MAX 128 +#define IP4_MASK_MAX 32 +#define IP6_PREFIX_MAX 128 -#define IP6_HOP_BY_HOP 0 -#define IP6_DESTINATION 60 -#define IP6_ROUTING 43 -#define IP6_FRAGMENT 44 -#define IP6_AH 51 -#define IP6_ESP 50 -#define IP6_NO_NEXT_HEADER 59 +#define IP6_HOP_BY_HOP 0 +#define IP6_DESTINATION 60 +#define IP6_ROUTING 43 +#define IP6_FRAGMENT 44 +#define IP6_AH 51 +#define IP6_ESP 50 +#define IP6_NO_NEXT_HEADER 59 -#define IP_VERSION_4 4 -#define IP_VERSION_6 6 +#define IP_VERSION_4 4 +#define IP_VERSION_6 6 -#define IP6_PREFIX_LENGTH 64 +#define IP6_PREFIX_LENGTH 64 // // DNS QTYPE values // -#define DNS_TYPE_A 1 -#define DNS_TYPE_NS 2 -#define DNS_TYPE_CNAME 5 -#define DNS_TYPE_SOA 6 -#define DNS_TYPE_WKS 11 -#define DNS_TYPE_PTR 12 -#define DNS_TYPE_HINFO 13 -#define DNS_TYPE_MINFO 14 -#define DNS_TYPE_MX 15 -#define DNS_TYPE_TXT 16 -#define DNS_TYPE_AAAA 28 -#define DNS_TYPE_SRV_RR 33 -#define DNS_TYPE_AXFR 252 -#define DNS_TYPE_MAILB 253 -#define DNS_TYPE_ANY 255 +#define DNS_TYPE_A 1 +#define DNS_TYPE_NS 2 +#define DNS_TYPE_CNAME 5 +#define DNS_TYPE_SOA 6 +#define DNS_TYPE_WKS 11 +#define DNS_TYPE_PTR 12 +#define DNS_TYPE_HINFO 13 +#define DNS_TYPE_MINFO 14 +#define DNS_TYPE_MX 15 +#define DNS_TYPE_TXT 16 +#define DNS_TYPE_AAAA 28 +#define DNS_TYPE_SRV_RR 33 +#define DNS_TYPE_AXFR 252 +#define DNS_TYPE_MAILB 253 +#define DNS_TYPE_ANY 255 // // DNS QCLASS values // -#define DNS_CLASS_INET 1 -#define DNS_CLASS_CH 3 -#define DNS_CLASS_HS 4 -#define DNS_CLASS_ANY 255 +#define DNS_CLASS_INET 1 +#define DNS_CLASS_CH 3 +#define DNS_CLASS_HS 4 +#define DNS_CLASS_ANY 255 // // Number of 100ns units time Interval for network media state detect // #define MEDIA_STATE_DETECT_TIME_INTERVAL 1000000U - #pragma pack(1) // // Ethernet head definition // typedef struct { - UINT8 DstMac [NET_ETHER_ADDR_LEN]; - UINT8 SrcMac [NET_ETHER_ADDR_LEN]; - UINT16 EtherType; + UINT8 DstMac[NET_ETHER_ADDR_LEN]; + UINT8 SrcMac[NET_ETHER_ADDR_LEN]; + UINT16 EtherType; } ETHER_HEAD; // @@ -111,11 +109,11 @@ typedef struct { // typedef union { struct { - UINT16 Vid : 12; // Unique VLAN identifier (0 to 4094) - UINT16 Cfi : 1; // Canonical Format Indicator - UINT16 Priority : 3; // 802.1Q priority level (0 to 7) + UINT16 Vid : 12; // Unique VLAN identifier (0 to 4094) + UINT16 Cfi : 1; // Canonical Format Indicator + UINT16 Priority : 3; // 802.1Q priority level (0 to 7) } Bits; - UINT16 Uint16; + UINT16 Uint16; } VLAN_TCI; #define VLAN_TCI_CFI_CANONICAL_MAC 0 @@ -128,83 +126,82 @@ typedef union { // directly. This is why there is an internal representation. // typedef struct { - UINT8 HeadLen : 4; - UINT8 Ver : 4; - UINT8 Tos; - UINT16 TotalLen; - UINT16 Id; - UINT16 Fragment; - UINT8 Ttl; - UINT8 Protocol; - UINT16 Checksum; - IP4_ADDR Src; - IP4_ADDR Dst; + UINT8 HeadLen : 4; + UINT8 Ver : 4; + UINT8 Tos; + UINT16 TotalLen; + UINT16 Id; + UINT16 Fragment; + UINT8 Ttl; + UINT8 Protocol; + UINT16 Checksum; + IP4_ADDR Src; + IP4_ADDR Dst; } IP4_HEAD; - // // ICMP head definition. Each ICMP message is categorized as either an error // message or query message. Two message types have their own head format. // typedef struct { - UINT8 Type; - UINT8 Code; - UINT16 Checksum; + UINT8 Type; + UINT8 Code; + UINT16 Checksum; } IP4_ICMP_HEAD; typedef struct { - IP4_ICMP_HEAD Head; - UINT32 Fourth; // 4th filed of the head, it depends on Type. - IP4_HEAD IpHead; + IP4_ICMP_HEAD Head; + UINT32 Fourth; // 4th filed of the head, it depends on Type. + IP4_HEAD IpHead; } IP4_ICMP_ERROR_HEAD; typedef struct { - IP4_ICMP_HEAD Head; - UINT16 Id; - UINT16 Seq; + IP4_ICMP_HEAD Head; + UINT16 Id; + UINT16 Seq; } IP4_ICMP_QUERY_HEAD; typedef struct { - UINT8 Type; - UINT8 Code; - UINT16 Checksum; + UINT8 Type; + UINT8 Code; + UINT16 Checksum; } IP6_ICMP_HEAD; typedef struct { - IP6_ICMP_HEAD Head; - UINT32 Fourth; - EFI_IP6_HEADER IpHead; + IP6_ICMP_HEAD Head; + UINT32 Fourth; + EFI_IP6_HEADER IpHead; } IP6_ICMP_ERROR_HEAD; typedef struct { - IP6_ICMP_HEAD Head; - UINT32 Fourth; + IP6_ICMP_HEAD Head; + UINT32 Fourth; } IP6_ICMP_INFORMATION_HEAD; // // UDP header definition // typedef struct { - UINT16 SrcPort; - UINT16 DstPort; - UINT16 Length; - UINT16 Checksum; + UINT16 SrcPort; + UINT16 DstPort; + UINT16 Length; + UINT16 Checksum; } EFI_UDP_HEADER; // // TCP header definition // typedef struct { - TCP_PORTNO SrcPort; - TCP_PORTNO DstPort; - TCP_SEQNO Seq; - TCP_SEQNO Ack; - UINT8 Res : 4; - UINT8 HeadLen : 4; - UINT8 Flag; - UINT16 Wnd; - UINT16 Checksum; - UINT16 Urg; + TCP_PORTNO SrcPort; + TCP_PORTNO DstPort; + TCP_SEQNO Seq; + TCP_SEQNO Ack; + UINT8 Res : 4; + UINT8 HeadLen : 4; + UINT8 Flag; + UINT16 Wnd; + UINT16 Checksum; + UINT16 Urg; } TCP_HEAD; #pragma pack() @@ -221,11 +218,11 @@ typedef struct { #define NTOHS(x) SwapBytes16 (x) -#define HTONS(x) NTOHS(x) -#define NTOHLL(x) SwapBytes64 (x) -#define HTONLL(x) NTOHLL(x) -#define NTOHLLL(x) Ip6Swap128 (x) -#define HTONLLL(x) NTOHLLL(x) +#define HTONS(x) NTOHS(x) +#define NTOHLL(x) SwapBytes64 (x) +#define HTONLL(x) NTOHLL(x) +#define NTOHLLL(x) Ip6Swap128 (x) +#define HTONLLL(x) NTOHLLL(x) // // Test the IP's attribute, All the IPs are in host byte order. @@ -236,7 +233,7 @@ typedef struct { #define IP4_NET_EQUAL(Ip1, Ip2, NetMask) (((Ip1) & (NetMask)) == ((Ip2) & (NetMask))) #define IP4_IS_VALID_NETMASK(Ip) (NetGetMaskLength (Ip) != (IP4_MASK_MAX + 1)) -#define IP6_IS_MULTICAST(Ip6) (((Ip6)->Addr[0]) == 0xFF) +#define IP6_IS_MULTICAST(Ip6) (((Ip6)->Addr[0]) == 0xFF) // // Convert the EFI_IP4_ADDRESS to plain UINT32 IP4 address. @@ -247,17 +244,17 @@ typedef struct { #define EFI_IP6_EQUAL(Ip1, Ip2) (CompareMem ((Ip1), (Ip2), sizeof (EFI_IPv6_ADDRESS)) == 0) -#define IP4_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv4_ADDRESS))) -#define IP6_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv6_ADDRESS))) -#define IP6_COPY_LINK_ADDRESS(Mac1, Mac2) (CopyMem ((Mac1), (Mac2), sizeof (EFI_MAC_ADDRESS))) +#define IP4_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv4_ADDRESS))) +#define IP6_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv6_ADDRESS))) +#define IP6_COPY_LINK_ADDRESS(Mac1, Mac2) (CopyMem ((Mac1), (Mac2), sizeof (EFI_MAC_ADDRESS))) // // The debug level definition. This value is also used as the // syslog's severity level. Don't change it. // -#define NETDEBUG_LEVEL_TRACE 5 -#define NETDEBUG_LEVEL_WARNING 4 -#define NETDEBUG_LEVEL_ERROR 3 +#define NETDEBUG_LEVEL_TRACE 5 +#define NETDEBUG_LEVEL_WARNING 4 +#define NETDEBUG_LEVEL_ERROR 3 // // Network debug message is sent out as syslog packet. @@ -326,7 +323,7 @@ typedef struct { CHAR8 * EFIAPI NetDebugASPrint ( - IN CHAR8 *Format, + IN CHAR8 *Format, ... ); @@ -350,14 +347,13 @@ NetDebugASPrint ( EFI_STATUS EFIAPI NetDebugOutput ( - IN UINT32 Level, - IN UINT8 *Module, - IN UINT8 *File, - IN UINT32 Line, - IN UINT8 *Message + IN UINT32 Level, + IN UINT8 *Module, + IN UINT8 *File, + IN UINT32 Line, + IN UINT8 *Message ); - /** Return the length of the mask. @@ -373,7 +369,7 @@ NetDebugOutput ( INTN EFIAPI NetGetMaskLength ( - IN IP4_ADDR NetMask + IN IP4_ADDR NetMask ); /** @@ -405,7 +401,7 @@ NetGetMaskLength ( INTN EFIAPI NetGetIpClass ( - IN IP4_ADDR Addr + IN IP4_ADDR Addr ); /** @@ -428,8 +424,8 @@ NetGetIpClass ( BOOLEAN EFIAPI NetIp4IsUnicast ( - IN IP4_ADDR Ip, - IN IP4_ADDR NetMask + IN IP4_ADDR Ip, + IN IP4_ADDR NetMask ); /** @@ -451,10 +447,9 @@ NetIp4IsUnicast ( BOOLEAN EFIAPI NetIp6IsValidUnicast ( - IN EFI_IPv6_ADDRESS *Ip6 + IN EFI_IPv6_ADDRESS *Ip6 ); - /** Check whether the incoming Ipv6 address is the unspecified address or not. @@ -469,7 +464,7 @@ NetIp6IsValidUnicast ( BOOLEAN EFIAPI NetIp6IsUnspecifiedAddr ( - IN EFI_IPv6_ADDRESS *Ip6 + IN EFI_IPv6_ADDRESS *Ip6 ); /** @@ -486,7 +481,7 @@ NetIp6IsUnspecifiedAddr ( BOOLEAN EFIAPI NetIp6IsLinkLocalAddr ( - IN EFI_IPv6_ADDRESS *Ip6 + IN EFI_IPv6_ADDRESS *Ip6 ); /** @@ -506,9 +501,9 @@ NetIp6IsLinkLocalAddr ( BOOLEAN EFIAPI NetIp6IsNetEqual ( - EFI_IPv6_ADDRESS *Ip1, - EFI_IPv6_ADDRESS *Ip2, - UINT8 PrefixLength + EFI_IPv6_ADDRESS *Ip1, + EFI_IPv6_ADDRESS *Ip2, + UINT8 PrefixLength ); /** @@ -528,11 +523,10 @@ NetIp6IsNetEqual ( EFI_IPv6_ADDRESS * EFIAPI Ip6Swap128 ( - EFI_IPv6_ADDRESS *Ip6 + EFI_IPv6_ADDRESS *Ip6 ); -extern IP4_ADDR gIp4AllMasks[IP4_MASK_NUM]; - +extern IP4_ADDR gIp4AllMasks[IP4_MASK_NUM]; extern EFI_IPv4_ADDRESS mZeroIp4Addr; @@ -542,10 +536,10 @@ extern EFI_IPv4_ADDRESS mZeroIp4Addr; #define NET_IS_LOWER_CASE_CHAR(Ch) (('a' <= (Ch)) && ((Ch) <= 'z')) #define NET_IS_UPPER_CASE_CHAR(Ch) (('A' <= (Ch)) && ((Ch) <= 'Z')) -#define TICKS_PER_MS 10000U -#define TICKS_PER_SECOND 10000000U +#define TICKS_PER_MS 10000U +#define TICKS_PER_SECOND 10000000U -#define NET_RANDOM(Seed) ((UINT32) ((UINT32) (Seed) * 1103515245UL + 12345) % 4294967295UL) +#define NET_RANDOM(Seed) ((UINT32) ((UINT32) (Seed) * 1103515245UL + 12345) % 4294967295UL) /** Extract a UINT32 from a byte stream. @@ -563,7 +557,7 @@ extern EFI_IPv4_ADDRESS mZeroIp4Addr; UINT32 EFIAPI NetGetUint32 ( - IN UINT8 *Buf + IN UINT8 *Buf ); /** @@ -581,8 +575,8 @@ NetGetUint32 ( VOID EFIAPI NetPutUint32 ( - IN OUT UINT8 *Buf, - IN UINT32 Data + IN OUT UINT8 *Buf, + IN UINT32 Data ); /** @@ -601,7 +595,6 @@ NetRandomInitSeed ( VOID ); - #define NET_LIST_USER_STRUCT(Entry, Type, Field) \ BASE_CR(Entry, Type, Field) @@ -635,7 +628,6 @@ NetRandomInitSeed ( #define NET_LIST_TAIL(ListHead, Type, Field) \ NET_LIST_USER_STRUCT((ListHead)->BackLink, Type, Field) - /** Remove the first node entry on the list, and return the removed node entry. @@ -657,7 +649,7 @@ NetRandomInitSeed ( LIST_ENTRY * EFIAPI NetListRemoveHead ( - IN OUT LIST_ENTRY *Head + IN OUT LIST_ENTRY *Head ); /** @@ -681,7 +673,7 @@ NetListRemoveHead ( LIST_ENTRY * EFIAPI NetListRemoveTail ( - IN OUT LIST_ENTRY *Head + IN OUT LIST_ENTRY *Head ); /** @@ -699,8 +691,8 @@ NetListRemoveTail ( VOID EFIAPI NetListInsertAfter ( - IN OUT LIST_ENTRY *PrevEntry, - IN OUT LIST_ENTRY *NewEntry + IN OUT LIST_ENTRY *PrevEntry, + IN OUT LIST_ENTRY *NewEntry ); /** @@ -718,8 +710,8 @@ NetListInsertAfter ( VOID EFIAPI NetListInsertBefore ( - IN OUT LIST_ENTRY *PostEntry, - IN OUT LIST_ENTRY *NewEntry + IN OUT LIST_ENTRY *PostEntry, + IN OUT LIST_ENTRY *NewEntry ); /** @@ -734,7 +726,7 @@ NetListInsertBefore ( **/ typedef EFI_STATUS -(EFIAPI *NET_DESTROY_LINK_LIST_CALLBACK) ( +(EFIAPI *NET_DESTROY_LINK_LIST_CALLBACK)( IN LIST_ENTRY *Entry, IN VOID *Context OPTIONAL ); @@ -764,10 +756,10 @@ EFI_STATUS EFI_STATUS EFIAPI NetDestroyLinkList ( - IN LIST_ENTRY *List, - IN NET_DESTROY_LINK_LIST_CALLBACK CallBack, - IN VOID *Context OPTIONAL, - OUT UINTN *ListLength OPTIONAL + IN LIST_ENTRY *List, + IN NET_DESTROY_LINK_LIST_CALLBACK CallBack, + IN VOID *Context OPTIONAL, + OUT UINTN *ListLength OPTIONAL ); /** @@ -785,9 +777,9 @@ NetDestroyLinkList ( BOOLEAN EFIAPI NetIsInHandleBuffer ( - IN EFI_HANDLE Handle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer OPTIONAL + IN EFI_HANDLE Handle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ); // @@ -795,15 +787,15 @@ NetIsInHandleBuffer ( // tokens. The drivers can share code to manage those objects. // typedef struct { - LIST_ENTRY Link; - VOID *Key; - VOID *Value; + LIST_ENTRY Link; + VOID *Key; + VOID *Value; } NET_MAP_ITEM; typedef struct { - LIST_ENTRY Used; - LIST_ENTRY Recycled; - UINTN Count; + LIST_ENTRY Used; + LIST_ENTRY Recycled; + UINTN Count; } NET_MAP; #define NET_MAP_INCREAMENT 64 @@ -825,7 +817,7 @@ typedef struct { VOID EFIAPI NetMapInit ( - IN OUT NET_MAP *Map + IN OUT NET_MAP *Map ); /** @@ -843,7 +835,7 @@ NetMapInit ( VOID EFIAPI NetMapClean ( - IN OUT NET_MAP *Map + IN OUT NET_MAP *Map ); /** @@ -861,7 +853,7 @@ NetMapClean ( BOOLEAN EFIAPI NetMapIsEmpty ( - IN NET_MAP *Map + IN NET_MAP *Map ); /** @@ -877,7 +869,7 @@ NetMapIsEmpty ( UINTN EFIAPI NetMapGetCount ( - IN NET_MAP *Map + IN NET_MAP *Map ); /** @@ -901,9 +893,9 @@ NetMapGetCount ( EFI_STATUS EFIAPI NetMapInsertHead ( - IN OUT NET_MAP *Map, - IN VOID *Key, - IN VOID *Value OPTIONAL + IN OUT NET_MAP *Map, + IN VOID *Key, + IN VOID *Value OPTIONAL ); /** @@ -927,9 +919,9 @@ NetMapInsertHead ( EFI_STATUS EFIAPI NetMapInsertTail ( - IN OUT NET_MAP *Map, - IN VOID *Key, - IN VOID *Value OPTIONAL + IN OUT NET_MAP *Map, + IN VOID *Key, + IN VOID *Value OPTIONAL ); /** @@ -950,8 +942,8 @@ NetMapInsertTail ( NET_MAP_ITEM * EFIAPI NetMapFindKey ( - IN NET_MAP *Map, - IN VOID *Key + IN NET_MAP *Map, + IN VOID *Key ); /** @@ -976,9 +968,9 @@ NetMapFindKey ( VOID * EFIAPI NetMapRemoveItem ( - IN OUT NET_MAP *Map, - IN OUT NET_MAP_ITEM *Item, - OUT VOID **Value OPTIONAL + IN OUT NET_MAP *Map, + IN OUT NET_MAP_ITEM *Item, + OUT VOID **Value OPTIONAL ); /** @@ -1001,8 +993,8 @@ NetMapRemoveItem ( VOID * EFIAPI NetMapRemoveHead ( - IN OUT NET_MAP *Map, - OUT VOID **Value OPTIONAL + IN OUT NET_MAP *Map, + OUT VOID **Value OPTIONAL ); /** @@ -1025,13 +1017,13 @@ NetMapRemoveHead ( VOID * EFIAPI NetMapRemoveTail ( - IN OUT NET_MAP *Map, - OUT VOID **Value OPTIONAL + IN OUT NET_MAP *Map, + OUT VOID **Value OPTIONAL ); typedef EFI_STATUS -(EFIAPI *NET_MAP_CALLBACK) ( +(EFIAPI *NET_MAP_CALLBACK)( IN NET_MAP *Map, IN NET_MAP_ITEM *Item, IN VOID *Arg @@ -1059,15 +1051,15 @@ EFI_STATUS EFI_STATUS EFIAPI NetMapIterate ( - IN NET_MAP *Map, - IN NET_MAP_CALLBACK CallBack, - IN VOID *Arg OPTIONAL + IN NET_MAP *Map, + IN NET_MAP_CALLBACK CallBack, + IN VOID *Arg OPTIONAL ); - // // Helper functions to implement driver binding and service binding protocols. // + /** Create a child of the service that is identified by ServiceBindingGuid. @@ -1088,10 +1080,10 @@ NetMapIterate ( EFI_STATUS EFIAPI NetLibCreateServiceChild ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE Image, - IN EFI_GUID *ServiceBindingGuid, - IN OUT EFI_HANDLE *ChildHandle + IN EFI_HANDLE Controller, + IN EFI_HANDLE Image, + IN EFI_GUID *ServiceBindingGuid, + IN OUT EFI_HANDLE *ChildHandle ); /** @@ -1113,10 +1105,10 @@ NetLibCreateServiceChild ( EFI_STATUS EFIAPI NetLibDestroyServiceChild ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE Image, - IN EFI_GUID *ServiceBindingGuid, - IN EFI_HANDLE ChildHandle + IN EFI_HANDLE Controller, + IN EFI_HANDLE Image, + IN EFI_GUID *ServiceBindingGuid, + IN EFI_HANDLE ChildHandle ); /** @@ -1138,8 +1130,8 @@ NetLibDestroyServiceChild ( EFI_HANDLE EFIAPI NetLibGetSnpHandle ( - IN EFI_HANDLE ServiceHandle, - OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL + IN EFI_HANDLE ServiceHandle, + OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL ); /** @@ -1158,7 +1150,7 @@ NetLibGetSnpHandle ( UINT16 EFIAPI NetLibGetVlanId ( - IN EFI_HANDLE ServiceHandle + IN EFI_HANDLE ServiceHandle ); /** @@ -1178,8 +1170,8 @@ NetLibGetVlanId ( EFI_HANDLE EFIAPI NetLibGetVlanHandle ( - IN EFI_HANDLE ControllerHandle, - IN UINT16 VlanId + IN EFI_HANDLE ControllerHandle, + IN UINT16 VlanId ); /** @@ -1204,9 +1196,9 @@ NetLibGetVlanHandle ( EFI_STATUS EFIAPI NetLibGetMacAddress ( - IN EFI_HANDLE ServiceHandle, - OUT EFI_MAC_ADDRESS *MacAddress, - OUT UINTN *AddressSize + IN EFI_HANDLE ServiceHandle, + OUT EFI_MAC_ADDRESS *MacAddress, + OUT UINTN *AddressSize ); /** @@ -1236,9 +1228,9 @@ NetLibGetMacAddress ( EFI_STATUS EFIAPI NetLibGetMacString ( - IN EFI_HANDLE ServiceHandle, - IN EFI_HANDLE ImageHandle OPTIONAL, - OUT CHAR16 **MacString + IN EFI_HANDLE ServiceHandle, + IN EFI_HANDLE ImageHandle OPTIONAL, + OUT CHAR16 **MacString ); /** @@ -1274,8 +1266,8 @@ NetLibGetMacString ( EFI_STATUS EFIAPI NetLibDetectMedia ( - IN EFI_HANDLE ServiceHandle, - OUT BOOLEAN *MediaPresent + IN EFI_HANDLE ServiceHandle, + OUT BOOLEAN *MediaPresent ); /** @@ -1305,12 +1297,11 @@ NetLibDetectMedia ( EFI_STATUS EFIAPI NetLibDetectMediaWaitTimeout ( - IN EFI_HANDLE ServiceHandle, - IN UINT64 Timeout, - OUT EFI_STATUS *MediaState + IN EFI_HANDLE ServiceHandle, + IN UINT64 Timeout, + OUT EFI_STATUS *MediaState ); - /** Create an IPv4 device path node. @@ -1377,7 +1368,6 @@ NetLibCreateIPv6DPathNode ( IN UINT16 Protocol ); - /** Find the UNDI/SNP handle from controller and protocol GUID. @@ -1400,8 +1390,8 @@ NetLibCreateIPv6DPathNode ( EFI_HANDLE EFIAPI NetLibGetNicHandle ( - IN EFI_HANDLE Controller, - IN EFI_GUID *ProtocolGuid + IN EFI_HANDLE Controller, + IN EFI_GUID *ProtocolGuid ); /** @@ -1419,7 +1409,7 @@ NetLibGetNicHandle ( EFI_STATUS EFIAPI NetLibDefaultUnload ( - IN EFI_HANDLE ImageHandle + IN EFI_HANDLE ImageHandle ); /** @@ -1435,8 +1425,8 @@ NetLibDefaultUnload ( EFI_STATUS EFIAPI NetLibAsciiStrToIp4 ( - IN CONST CHAR8 *String, - OUT EFI_IPv4_ADDRESS *Ip4Address + IN CONST CHAR8 *String, + OUT EFI_IPv4_ADDRESS *Ip4Address ); /** @@ -1453,8 +1443,8 @@ NetLibAsciiStrToIp4 ( EFI_STATUS EFIAPI NetLibAsciiStrToIp6 ( - IN CONST CHAR8 *String, - OUT EFI_IPv6_ADDRESS *Ip6Address + IN CONST CHAR8 *String, + OUT EFI_IPv6_ADDRESS *Ip6Address ); /** @@ -1470,8 +1460,8 @@ NetLibAsciiStrToIp6 ( EFI_STATUS EFIAPI NetLibStrToIp4 ( - IN CONST CHAR16 *String, - OUT EFI_IPv4_ADDRESS *Ip4Address + IN CONST CHAR16 *String, + OUT EFI_IPv4_ADDRESS *Ip4Address ); /** @@ -1488,8 +1478,8 @@ NetLibStrToIp4 ( EFI_STATUS EFIAPI NetLibStrToIp6 ( - IN CONST CHAR16 *String, - OUT EFI_IPv6_ADDRESS *Ip6Address + IN CONST CHAR16 *String, + OUT EFI_IPv6_ADDRESS *Ip6Address ); /** @@ -1508,9 +1498,9 @@ NetLibStrToIp6 ( EFI_STATUS EFIAPI NetLibStrToIp6andPrefix ( - IN CONST CHAR16 *String, - OUT EFI_IPv6_ADDRESS *Ip6Address, - OUT UINT8 *PrefixLength + IN CONST CHAR16 *String, + OUT EFI_IPv6_ADDRESS *Ip6Address, + OUT UINT8 *PrefixLength ); /** @@ -1530,23 +1520,22 @@ NetLibStrToIp6andPrefix ( EFI_STATUS EFIAPI NetLibIp6ToStr ( - IN EFI_IPv6_ADDRESS *Ip6Address, - OUT CHAR16 *String, - IN UINTN StringSize + IN EFI_IPv6_ADDRESS *Ip6Address, + OUT CHAR16 *String, + IN UINTN StringSize ); // // Various signatures // -#define NET_BUF_SIGNATURE SIGNATURE_32 ('n', 'b', 'u', 'f') -#define NET_VECTOR_SIGNATURE SIGNATURE_32 ('n', 'v', 'e', 'c') -#define NET_QUE_SIGNATURE SIGNATURE_32 ('n', 'b', 'q', 'u') - +#define NET_BUF_SIGNATURE SIGNATURE_32 ('n', 'b', 'u', 'f') +#define NET_VECTOR_SIGNATURE SIGNATURE_32 ('n', 'v', 'e', 'c') +#define NET_QUE_SIGNATURE SIGNATURE_32 ('n', 'b', 'q', 'u') -#define NET_PROTO_DATA 64 // Opaque buffer for protocols -#define NET_BUF_HEAD 1 // Trim or allocate space from head -#define NET_BUF_TAIL 0 // Trim or allocate space from tail -#define NET_VECTOR_OWN_FIRST 0x01 // We allocated the 1st block in the vector +#define NET_PROTO_DATA 64 // Opaque buffer for protocols +#define NET_BUF_HEAD 1 // Trim or allocate space from head +#define NET_BUF_TAIL 0 // Trim or allocate space from tail +#define NET_VECTOR_OWN_FIRST 0x01 // We allocated the 1st block in the vector #define NET_CHECK_SIGNATURE(PData, SIGNATURE) \ ASSERT (((PData) != NULL) && ((PData)->Signature == (SIGNATURE))) @@ -1555,39 +1544,39 @@ NetLibIp6ToStr ( // Single memory block in the vector. // typedef struct { - UINT32 Len; // The block's length - UINT8 *Bulk; // The block's Data + UINT32 Len; // The block's length + UINT8 *Bulk; // The block's Data } NET_BLOCK; -typedef VOID (EFIAPI *NET_VECTOR_EXT_FREE) (VOID *Arg); +typedef VOID (EFIAPI *NET_VECTOR_EXT_FREE)(VOID *Arg); // -//NET_VECTOR contains several blocks to hold all packet's -//fragments and other house-keeping stuff for sharing. It -//doesn't specify the where actual packet fragment begins. +// NET_VECTOR contains several blocks to hold all packet's +// fragments and other house-keeping stuff for sharing. It +// doesn't specify the where actual packet fragment begins. // typedef struct { - UINT32 Signature; - INTN RefCnt; // Reference count to share NET_VECTOR. - NET_VECTOR_EXT_FREE Free; // external function to free NET_VECTOR - VOID *Arg; // opaque argument to Free - UINT32 Flag; // Flags, NET_VECTOR_OWN_FIRST - UINT32 Len; // Total length of the associated BLOCKs - - UINT32 BlockNum; - NET_BLOCK Block[1]; + UINT32 Signature; + INTN RefCnt; // Reference count to share NET_VECTOR. + NET_VECTOR_EXT_FREE Free; // external function to free NET_VECTOR + VOID *Arg; // opaque argument to Free + UINT32 Flag; // Flags, NET_VECTOR_OWN_FIRST + UINT32 Len; // Total length of the associated BLOCKs + + UINT32 BlockNum; + NET_BLOCK Block[1]; } NET_VECTOR; // -//NET_BLOCK_OP operates on the NET_BLOCK. It specifies -//where the actual fragment begins and ends +// NET_BLOCK_OP operates on the NET_BLOCK. It specifies +// where the actual fragment begins and ends // typedef struct { - UINT8 *BlockHead; // Block's head, or the smallest valid Head - UINT8 *BlockTail; // Block's tail. BlockTail-BlockHead=block length - UINT8 *Head; // 1st byte of the data in the block - UINT8 *Tail; // Tail of the data in the block, Tail-Head=Size - UINT32 Size; // The size of the data + UINT8 *BlockHead; // Block's head, or the smallest valid Head + UINT8 *BlockTail; // Block's tail. BlockTail-BlockHead=block length + UINT8 *Head; // 1st byte of the data in the block + UINT8 *Tail; // Tail of the data in the block, Tail-Head=Size + UINT32 Size; // The size of the data } NET_BLOCK_OP; typedef union { @@ -1596,44 +1585,44 @@ typedef union { } NET_IP_HEAD; // -//NET_BUF is the buffer manage structure used by the -//network stack. Every network packet may be fragmented. The Vector points to -//memory blocks used by each fragment, and BlockOp -//specifies where each fragment begins and ends. +// NET_BUF is the buffer manage structure used by the +// network stack. Every network packet may be fragmented. The Vector points to +// memory blocks used by each fragment, and BlockOp +// specifies where each fragment begins and ends. // -//It also contains an opaque area for the protocol to store -//per-packet information. Protocol must be careful not -//to overwrite the members after that. +// It also contains an opaque area for the protocol to store +// per-packet information. Protocol must be careful not +// to overwrite the members after that. // typedef struct { - UINT32 Signature; - INTN RefCnt; - LIST_ENTRY List; // The List this NET_BUF is on + UINT32 Signature; + INTN RefCnt; + LIST_ENTRY List; // The List this NET_BUF is on - NET_IP_HEAD Ip; // Network layer header, for fast access - TCP_HEAD *Tcp; // Transport layer header, for fast access - EFI_UDP_HEADER *Udp; // User Datagram Protocol header - UINT8 ProtoData [NET_PROTO_DATA]; //Protocol specific data + NET_IP_HEAD Ip; // Network layer header, for fast access + TCP_HEAD *Tcp; // Transport layer header, for fast access + EFI_UDP_HEADER *Udp; // User Datagram Protocol header + UINT8 ProtoData[NET_PROTO_DATA]; // Protocol specific data - NET_VECTOR *Vector; // The vector containing the packet + NET_VECTOR *Vector; // The vector containing the packet - UINT32 BlockOpNum; // Total number of BlockOp in the buffer - UINT32 TotalSize; // Total size of the actual packet - NET_BLOCK_OP BlockOp[1]; // Specify the position of actual packet + UINT32 BlockOpNum; // Total number of BlockOp in the buffer + UINT32 TotalSize; // Total size of the actual packet + NET_BLOCK_OP BlockOp[1]; // Specify the position of actual packet } NET_BUF; // -//A queue of NET_BUFs. It is a thin extension of -//NET_BUF functions. +// A queue of NET_BUFs. It is a thin extension of +// NET_BUF functions. // typedef struct { - UINT32 Signature; - INTN RefCnt; - LIST_ENTRY List; // The List this buffer queue is on + UINT32 Signature; + INTN RefCnt; + LIST_ENTRY List; // The List this buffer queue is on - LIST_ENTRY BufList; // list of queued buffers - UINT32 BufSize; // total length of DATA in the buffers - UINT32 BufNum; // total number of buffers on the chain + LIST_ENTRY BufList; // list of queued buffers + UINT32 BufSize; // total length of DATA in the buffers + UINT32 BufNum; // total number of buffers on the chain } NET_BUF_QUEUE; // @@ -1641,19 +1630,19 @@ typedef struct { // #pragma pack(1) typedef struct { - IP4_ADDR SrcIp; - IP4_ADDR DstIp; - UINT8 Reserved; - UINT8 Protocol; - UINT16 Len; + IP4_ADDR SrcIp; + IP4_ADDR DstIp; + UINT8 Reserved; + UINT8 Protocol; + UINT16 Len; } NET_PSEUDO_HDR; typedef struct { EFI_IPv6_ADDRESS SrcIp; EFI_IPv6_ADDRESS DstIp; UINT32 Len; - UINT32 Reserved:24; - UINT32 NextHeader:8; + UINT32 Reserved : 24; + UINT32 NextHeader : 8; } NET_IP6_PSEUDO_HDR; #pragma pack() @@ -1663,13 +1652,13 @@ typedef struct { // the two in case that NET_BLOCK be enhanced later. // typedef struct { - UINT32 Len; - UINT8 *Bulk; + UINT32 Len; + UINT8 *Bulk; } NET_FRAGMENT; -#define NET_GET_REF(PData) ((PData)->RefCnt++) -#define NET_PUT_REF(PData) ((PData)->RefCnt--) -#define NETBUF_FROM_PROTODATA(Info) BASE_CR((Info), NET_BUF, ProtoData) +#define NET_GET_REF(PData) ((PData)->RefCnt++) +#define NET_PUT_REF(PData) ((PData)->RefCnt--) +#define NETBUF_FROM_PROTODATA(Info) BASE_CR((Info), NET_BUF, ProtoData) #define NET_BUF_SHARED(Buf) \ (((Buf)->RefCnt > 1) || ((Buf)->Vector->RefCnt > 1)) @@ -1699,7 +1688,7 @@ typedef struct { NET_BUF * EFIAPI NetbufAlloc ( - IN UINT32 Len + IN UINT32 Len ); /** @@ -1717,7 +1706,7 @@ NetbufAlloc ( VOID EFIAPI NetbufFree ( - IN NET_BUF *Nbuf + IN NET_BUF *Nbuf ); /** @@ -1740,9 +1729,9 @@ NetbufFree ( UINT8 * EFIAPI NetbufGetByte ( - IN NET_BUF *Nbuf, - IN UINT32 Offset, - OUT UINT32 *Index OPTIONAL + IN NET_BUF *Nbuf, + IN UINT32 Offset, + OUT UINT32 *Index OPTIONAL ); /** @@ -1760,7 +1749,7 @@ NetbufGetByte ( NET_BUF * EFIAPI NetbufClone ( - IN NET_BUF *Nbuf + IN NET_BUF *Nbuf ); /** @@ -1782,9 +1771,9 @@ NetbufClone ( NET_BUF * EFIAPI NetbufDuplicate ( - IN NET_BUF *Nbuf, - IN OUT NET_BUF *Duplicate OPTIONAL, - IN UINT32 HeadSpace + IN NET_BUF *Nbuf, + IN OUT NET_BUF *Duplicate OPTIONAL, + IN UINT32 HeadSpace ); /** @@ -1807,10 +1796,10 @@ NetbufDuplicate ( NET_BUF * EFIAPI NetbufGetFragment ( - IN NET_BUF *Nbuf, - IN UINT32 Offset, - IN UINT32 Len, - IN UINT32 HeadSpace + IN NET_BUF *Nbuf, + IN UINT32 Offset, + IN UINT32 Len, + IN UINT32 HeadSpace ); /** @@ -1828,8 +1817,8 @@ NetbufGetFragment ( VOID EFIAPI NetbufReserve ( - IN OUT NET_BUF *Nbuf, - IN UINT32 Len + IN OUT NET_BUF *Nbuf, + IN UINT32 Len ); /** @@ -1844,12 +1833,12 @@ NetbufReserve ( or NULL, if there is no sufficient space. **/ -UINT8* +UINT8 * EFIAPI NetbufAllocSpace ( - IN OUT NET_BUF *Nbuf, - IN UINT32 Len, - IN BOOLEAN FromHead + IN OUT NET_BUF *Nbuf, + IN UINT32 Len, + IN BOOLEAN FromHead ); /** @@ -1867,9 +1856,9 @@ NetbufAllocSpace ( UINT32 EFIAPI NetbufTrim ( - IN OUT NET_BUF *Nbuf, - IN UINT32 Len, - IN BOOLEAN FromHead + IN OUT NET_BUF *Nbuf, + IN UINT32 Len, + IN BOOLEAN FromHead ); /** @@ -1890,10 +1879,10 @@ NetbufTrim ( UINT32 EFIAPI NetbufCopy ( - IN NET_BUF *Nbuf, - IN UINT32 Offset, - IN UINT32 Len, - IN UINT8 *Dest + IN NET_BUF *Nbuf, + IN UINT32 Offset, + IN UINT32 Len, + IN UINT8 *Dest ); /** @@ -1921,12 +1910,12 @@ NetbufCopy ( NET_BUF * EFIAPI NetbufFromExt ( - IN NET_FRAGMENT *ExtFragment, - IN UINT32 ExtNum, - IN UINT32 HeadSpace, - IN UINT32 HeadLen, - IN NET_VECTOR_EXT_FREE ExtFree, - IN VOID *Arg OPTIONAL + IN NET_FRAGMENT *ExtFragment, + IN UINT32 ExtNum, + IN UINT32 HeadSpace, + IN UINT32 HeadLen, + IN NET_VECTOR_EXT_FREE ExtFree, + IN VOID *Arg OPTIONAL ); /** @@ -1945,9 +1934,9 @@ NetbufFromExt ( EFI_STATUS EFIAPI NetbufBuildExt ( - IN NET_BUF *Nbuf, - IN OUT NET_FRAGMENT *ExtFragment, - IN OUT UINT32 *ExtNum + IN NET_BUF *Nbuf, + IN OUT NET_FRAGMENT *ExtFragment, + IN OUT UINT32 *ExtNum ); /** @@ -1970,11 +1959,11 @@ NetbufBuildExt ( NET_BUF * EFIAPI NetbufFromBufList ( - IN LIST_ENTRY *BufList, - IN UINT32 HeadSpace, - IN UINT32 HeaderLen, - IN NET_VECTOR_EXT_FREE ExtFree, - IN VOID *Arg OPTIONAL + IN LIST_ENTRY *BufList, + IN UINT32 HeadSpace, + IN UINT32 HeaderLen, + IN NET_VECTOR_EXT_FREE ExtFree, + IN VOID *Arg OPTIONAL ); /** @@ -1986,7 +1975,7 @@ NetbufFromBufList ( VOID EFIAPI NetbufFreeList ( - IN OUT LIST_ENTRY *Head + IN OUT LIST_ENTRY *Head ); /** @@ -1998,7 +1987,7 @@ NetbufFreeList ( VOID EFIAPI NetbufQueInit ( - IN OUT NET_BUF_QUEUE *NbufQue + IN OUT NET_BUF_QUEUE *NbufQue ); /** @@ -2027,7 +2016,7 @@ NetbufQueAlloc ( VOID EFIAPI NetbufQueFree ( - IN NET_BUF_QUEUE *NbufQue + IN NET_BUF_QUEUE *NbufQue ); /** @@ -2042,7 +2031,7 @@ NetbufQueFree ( NET_BUF * EFIAPI NetbufQueRemove ( - IN OUT NET_BUF_QUEUE *NbufQue + IN OUT NET_BUF_QUEUE *NbufQue ); /** @@ -2055,8 +2044,8 @@ NetbufQueRemove ( VOID EFIAPI NetbufQueAppend ( - IN OUT NET_BUF_QUEUE *NbufQue, - IN OUT NET_BUF *Nbuf + IN OUT NET_BUF_QUEUE *NbufQue, + IN OUT NET_BUF *Nbuf ); /** @@ -2078,10 +2067,10 @@ NetbufQueAppend ( UINT32 EFIAPI NetbufQueCopy ( - IN NET_BUF_QUEUE *NbufQue, - IN UINT32 Offset, - IN UINT32 Len, - OUT UINT8 *Dest + IN NET_BUF_QUEUE *NbufQue, + IN UINT32 Offset, + IN UINT32 Len, + OUT UINT8 *Dest ); /** @@ -2100,11 +2089,10 @@ NetbufQueCopy ( UINT32 EFIAPI NetbufQueTrim ( - IN OUT NET_BUF_QUEUE *NbufQue, - IN UINT32 Len + IN OUT NET_BUF_QUEUE *NbufQue, + IN UINT32 Len ); - /** Flush the net buffer queue. @@ -2114,7 +2102,7 @@ NetbufQueTrim ( VOID EFIAPI NetbufQueFlush ( - IN OUT NET_BUF_QUEUE *NbufQue + IN OUT NET_BUF_QUEUE *NbufQue ); /** @@ -2129,8 +2117,8 @@ NetbufQueFlush ( UINT16 EFIAPI NetblockChecksum ( - IN UINT8 *Bulk, - IN UINT32 Len + IN UINT8 *Bulk, + IN UINT32 Len ); /** @@ -2145,8 +2133,8 @@ NetblockChecksum ( UINT16 EFIAPI NetAddChecksum ( - IN UINT16 Checksum1, - IN UINT16 Checksum2 + IN UINT16 Checksum1, + IN UINT16 Checksum2 ); /** @@ -2160,7 +2148,7 @@ NetAddChecksum ( UINT16 EFIAPI NetbufChecksum ( - IN NET_BUF *Nbuf + IN NET_BUF *Nbuf ); /** @@ -2179,10 +2167,10 @@ NetbufChecksum ( UINT16 EFIAPI NetPseudoHeadChecksum ( - IN IP4_ADDR Src, - IN IP4_ADDR Dst, - IN UINT8 Proto, - IN UINT16 Len + IN IP4_ADDR Src, + IN IP4_ADDR Dst, + IN UINT8 Proto, + IN UINT16 Len ); /** @@ -2201,10 +2189,10 @@ NetPseudoHeadChecksum ( UINT16 EFIAPI NetIp6PseudoHeadChecksum ( - IN EFI_IPv6_ADDRESS *Src, - IN EFI_IPv6_ADDRESS *Dst, - IN UINT8 NextHeader, - IN UINT32 Len + IN EFI_IPv6_ADDRESS *Src, + IN EFI_IPv6_ADDRESS *Dst, + IN UINT8 NextHeader, + IN UINT32 Len ); /** @@ -2220,7 +2208,7 @@ NetIp6PseudoHeadChecksum ( **/ VOID NetIpSecNetbufFree ( - NET_BUF *Nbuf + NET_BUF *Nbuf ); /** @@ -2237,7 +2225,7 @@ NetIpSecNetbufFree ( EFI_STATUS EFIAPI NetLibGetSystemGuid ( - OUT EFI_GUID *SystemGuid + OUT EFI_GUID *SystemGuid ); /** @@ -2260,7 +2248,7 @@ NetLibGetSystemGuid ( CHAR8 * EFIAPI NetLibCreateDnsQName ( - IN CHAR16 *DomainName + IN CHAR16 *DomainName ); #endif diff --git a/NetworkPkg/Include/Library/TcpIoLib.h b/NetworkPkg/Include/Library/TcpIoLib.h index 13c163ce99..a5764f7413 100644 --- a/NetworkPkg/Include/Library/TcpIoLib.h +++ b/NetworkPkg/Include/Library/TcpIoLib.h @@ -10,89 +10,86 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef _TCP_IO_H_ #define _TCP_IO_H_ - #include #include #include -#define TCP_VERSION_4 IP_VERSION_4 -#define TCP_VERSION_6 IP_VERSION_6 +#define TCP_VERSION_4 IP_VERSION_4 +#define TCP_VERSION_6 IP_VERSION_6 /// /// 10 seconds /// -#define TCP_GET_MAPPING_TIMEOUT 100000000U - +#define TCP_GET_MAPPING_TIMEOUT 100000000U typedef struct { - EFI_IPv4_ADDRESS LocalIp; - EFI_IPv4_ADDRESS SubnetMask; - EFI_IPv4_ADDRESS Gateway; - - UINT16 StationPort; - EFI_IPv4_ADDRESS RemoteIp; - UINT16 RemotePort; - BOOLEAN ActiveFlag; + EFI_IPv4_ADDRESS LocalIp; + EFI_IPv4_ADDRESS SubnetMask; + EFI_IPv4_ADDRESS Gateway; + + UINT16 StationPort; + EFI_IPv4_ADDRESS RemoteIp; + UINT16 RemotePort; + BOOLEAN ActiveFlag; } TCP4_IO_CONFIG_DATA; typedef struct { - UINT16 StationPort; - EFI_IPv6_ADDRESS RemoteIp; - UINT16 RemotePort; - BOOLEAN ActiveFlag; + UINT16 StationPort; + EFI_IPv6_ADDRESS RemoteIp; + UINT16 RemotePort; + BOOLEAN ActiveFlag; } TCP6_IO_CONFIG_DATA; typedef union { - TCP4_IO_CONFIG_DATA Tcp4IoConfigData; - TCP6_IO_CONFIG_DATA Tcp6IoConfigData; + TCP4_IO_CONFIG_DATA Tcp4IoConfigData; + TCP6_IO_CONFIG_DATA Tcp6IoConfigData; } TCP_IO_CONFIG_DATA; typedef union { - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_PROTOCOL *Tcp6; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_PROTOCOL *Tcp6; } TCP_IO_PROTOCOL; typedef union { - EFI_TCP4_CONNECTION_TOKEN Tcp4Token; - EFI_TCP6_CONNECTION_TOKEN Tcp6Token; + EFI_TCP4_CONNECTION_TOKEN Tcp4Token; + EFI_TCP6_CONNECTION_TOKEN Tcp6Token; } TCP_IO_CONNECTION_TOKEN; typedef union { - EFI_TCP4_IO_TOKEN Tcp4Token; - EFI_TCP6_IO_TOKEN Tcp6Token; + EFI_TCP4_IO_TOKEN Tcp4Token; + EFI_TCP6_IO_TOKEN Tcp6Token; } TCP_IO_IO_TOKEN; typedef union { - EFI_TCP4_CLOSE_TOKEN Tcp4Token; - EFI_TCP6_CLOSE_TOKEN Tcp6Token; + EFI_TCP4_CLOSE_TOKEN Tcp4Token; + EFI_TCP6_CLOSE_TOKEN Tcp6Token; } TCP_IO_CLOSE_TOKEN; typedef union { - EFI_TCP4_LISTEN_TOKEN Tcp4Token; - EFI_TCP6_LISTEN_TOKEN Tcp6Token; + EFI_TCP4_LISTEN_TOKEN Tcp4Token; + EFI_TCP6_LISTEN_TOKEN Tcp6Token; } TCP_IO_LISTEN_TOKEN; - typedef struct { - UINT8 TcpVersion; - EFI_HANDLE Image; - EFI_HANDLE Controller; - EFI_HANDLE Handle; - - TCP_IO_PROTOCOL Tcp; - TCP_IO_PROTOCOL NewTcp; - TCP_IO_CONNECTION_TOKEN ConnToken; - TCP_IO_IO_TOKEN TxToken; - TCP_IO_IO_TOKEN RxToken; - TCP_IO_CLOSE_TOKEN CloseToken; - TCP_IO_LISTEN_TOKEN ListenToken; - - BOOLEAN IsConnDone; - BOOLEAN IsTxDone; - BOOLEAN IsRxDone; - BOOLEAN IsCloseDone; - BOOLEAN IsListenDone; + UINT8 TcpVersion; + EFI_HANDLE Image; + EFI_HANDLE Controller; + EFI_HANDLE Handle; + + TCP_IO_PROTOCOL Tcp; + TCP_IO_PROTOCOL NewTcp; + TCP_IO_CONNECTION_TOKEN ConnToken; + TCP_IO_IO_TOKEN TxToken; + TCP_IO_IO_TOKEN RxToken; + TCP_IO_CLOSE_TOKEN CloseToken; + TCP_IO_LISTEN_TOKEN ListenToken; + + BOOLEAN IsConnDone; + BOOLEAN IsTxDone; + BOOLEAN IsRxDone; + BOOLEAN IsCloseDone; + BOOLEAN IsListenDone; } TCP_IO; /** @@ -115,11 +112,11 @@ typedef struct { EFI_STATUS EFIAPI TcpIoCreateSocket ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN UINT8 TcpVersion, - IN TCP_IO_CONFIG_DATA *ConfigData, - OUT TCP_IO *TcpIo + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN UINT8 TcpVersion, + IN TCP_IO_CONFIG_DATA *ConfigData, + OUT TCP_IO *TcpIo ); /** @@ -131,7 +128,7 @@ TcpIoCreateSocket ( VOID EFIAPI TcpIoDestroySocket ( - IN TCP_IO *TcpIo + IN TCP_IO *TcpIo ); /** @@ -153,8 +150,8 @@ TcpIoDestroySocket ( EFI_STATUS EFIAPI TcpIoConnect ( - IN OUT TCP_IO *TcpIo, - IN EFI_EVENT Timeout OPTIONAL + IN OUT TCP_IO *TcpIo, + IN EFI_EVENT Timeout OPTIONAL ); /** @@ -178,8 +175,8 @@ TcpIoConnect ( EFI_STATUS EFIAPI TcpIoAccept ( - IN OUT TCP_IO *TcpIo, - IN EFI_EVENT Timeout OPTIONAL + IN OUT TCP_IO *TcpIo, + IN EFI_EVENT Timeout OPTIONAL ); /** @@ -191,7 +188,7 @@ TcpIoAccept ( VOID EFIAPI TcpIoReset ( - IN OUT TCP_IO *TcpIo + IN OUT TCP_IO *TcpIo ); /** @@ -212,8 +209,8 @@ TcpIoReset ( EFI_STATUS EFIAPI TcpIoTransmit ( - IN TCP_IO *TcpIo, - IN NET_BUF *Packet + IN TCP_IO *TcpIo, + IN NET_BUF *Packet ); /** @@ -237,11 +234,10 @@ TcpIoTransmit ( EFI_STATUS EFIAPI TcpIoReceive ( - IN OUT TCP_IO *TcpIo, - IN NET_BUF *Packet, - IN BOOLEAN AsyncMode, - IN EFI_EVENT Timeout OPTIONAL + IN OUT TCP_IO *TcpIo, + IN NET_BUF *Packet, + IN BOOLEAN AsyncMode, + IN EFI_EVENT Timeout OPTIONAL ); #endif - diff --git a/NetworkPkg/Include/Library/UdpIoLib.h b/NetworkPkg/Include/Library/UdpIoLib.h index de5174efbc..d88332380f 100644 --- a/NetworkPkg/Include/Library/UdpIoLib.h +++ b/NetworkPkg/Include/Library/UdpIoLib.h @@ -32,10 +32,10 @@ typedef struct _UDP_IO UDP_IO; /// The UDP address pair. /// typedef struct { - EFI_IP_ADDRESS LocalAddr; - UINT16 LocalPort; - EFI_IP_ADDRESS RemoteAddr; - UINT16 RemotePort; + EFI_IP_ADDRESS LocalAddr; + UINT16 LocalPort; + EFI_IP_ADDRESS RemoteAddr; + UINT16 RemotePort; } UDP_END_POINT; /** @@ -54,7 +54,7 @@ typedef struct { **/ typedef VOID -(EFIAPI *UDP_IO_CALLBACK) ( +(EFIAPI *UDP_IO_CALLBACK)( IN NET_BUF *Packet, IN UDP_END_POINT *EndPoint, IN EFI_STATUS IoStatus, @@ -70,23 +70,21 @@ VOID /// make the application's header continuous before delivering up. /// typedef union { - EFI_UDP4_COMPLETION_TOKEN Udp4; - EFI_UDP6_COMPLETION_TOKEN Udp6; + EFI_UDP4_COMPLETION_TOKEN Udp4; + EFI_UDP6_COMPLETION_TOKEN Udp6; } UDP_COMPLETION_TOKEN; typedef struct { - UINT32 Signature; - UDP_IO *UdpIo; + UINT32 Signature; + UDP_IO *UdpIo; - UDP_IO_CALLBACK CallBack; - VOID *Context; - UINT32 HeadLen; + UDP_IO_CALLBACK CallBack; + VOID *Context; + UINT32 HeadLen; - UDP_COMPLETION_TOKEN Token; + UDP_COMPLETION_TOKEN Token; } UDP_RX_TOKEN; - - /// /// This structure is used internally by UdpIo Library. /// @@ -96,26 +94,26 @@ typedef struct { /// typedef union { - EFI_UDP4_SESSION_DATA Udp4; - EFI_UDP6_SESSION_DATA Udp6; + EFI_UDP4_SESSION_DATA Udp4; + EFI_UDP6_SESSION_DATA Udp6; } UDP_SESSION_DATA; typedef union { - EFI_UDP4_TRANSMIT_DATA Udp4; - EFI_UDP6_TRANSMIT_DATA Udp6; + EFI_UDP4_TRANSMIT_DATA Udp4; + EFI_UDP6_TRANSMIT_DATA Udp6; } UDP_TRANSMIT_DATA; typedef struct { - UINT32 Signature; - LIST_ENTRY Link; - UDP_IO *UdpIo; - UDP_IO_CALLBACK CallBack; - NET_BUF *Packet; - VOID *Context; - EFI_IPv4_ADDRESS Gateway; - UDP_SESSION_DATA Session; - UDP_COMPLETION_TOKEN Token; - UDP_TRANSMIT_DATA Data; + UINT32 Signature; + LIST_ENTRY Link; + UDP_IO *UdpIo; + UDP_IO_CALLBACK CallBack; + NET_BUF *Packet; + VOID *Context; + EFI_IPv4_ADDRESS Gateway; + UDP_SESSION_DATA Session; + UDP_COMPLETION_TOKEN Token; + UDP_TRANSMIT_DATA Data; } UDP_TX_TOKEN; /// @@ -125,26 +123,26 @@ typedef struct { /// UdpIo Library uses this structure for all Udp4 or Udp6 operations. /// struct _UDP_IO { - UINT32 Signature; - LIST_ENTRY Link; - INTN RefCnt; - UINT8 UdpVersion; + UINT32 Signature; + LIST_ENTRY Link; + INTN RefCnt; + UINT8 UdpVersion; // // Handle used to create/destroy UDP child // - EFI_HANDLE Controller; - EFI_HANDLE Image; - EFI_HANDLE UdpHandle; + EFI_HANDLE Controller; + EFI_HANDLE Image; + EFI_HANDLE UdpHandle; - EFI_SIMPLE_NETWORK_MODE SnpMode; + EFI_SIMPLE_NETWORK_MODE SnpMode; - LIST_ENTRY SentDatagram; ///< A list of UDP_TX_TOKEN. - UDP_RX_TOKEN *RecvRequest; + LIST_ENTRY SentDatagram; ///< A list of UDP_TX_TOKEN. + UDP_RX_TOKEN *RecvRequest; union { - EFI_UDP4_PROTOCOL *Udp4; - EFI_UDP6_PROTOCOL *Udp6; + EFI_UDP4_PROTOCOL *Udp4; + EFI_UDP6_PROTOCOL *Udp6; } Protocol; union { @@ -167,7 +165,7 @@ struct _UDP_IO { **/ typedef EFI_STATUS -(EFIAPI *UDP_IO_CONFIG) ( +(EFIAPI *UDP_IO_CONFIG)( IN UDP_IO *UdpIo, IN VOID *Context ); @@ -184,7 +182,7 @@ EFI_STATUS **/ typedef BOOLEAN -(EFIAPI *UDP_IO_TO_CANCEL) ( +(EFIAPI *UDP_IO_TO_CANCEL)( IN UDP_TX_TOKEN *Token, IN VOID *Context ); @@ -205,10 +203,10 @@ BOOLEAN VOID EFIAPI UdpIoCancelDgrams ( - IN UDP_IO *UdpIo, - IN EFI_STATUS IoStatus, - IN UDP_IO_TO_CANCEL ToCancel OPTIONAL, - IN VOID *Context OPTIONAL + IN UDP_IO *UdpIo, + IN EFI_STATUS IoStatus, + IN UDP_IO_TO_CANCEL ToCancel OPTIONAL, + IN VOID *Context OPTIONAL ); /** @@ -236,11 +234,11 @@ UdpIoCancelDgrams ( UDP_IO * EFIAPI UdpIoCreateIo ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE ImageHandle, - IN UDP_IO_CONFIG Configure, - IN UINT8 UdpVersion, - IN VOID *Context + IN EFI_HANDLE Controller, + IN EFI_HANDLE ImageHandle, + IN UDP_IO_CONFIG Configure, + IN UINT8 UdpVersion, + IN VOID *Context ); /** @@ -259,7 +257,7 @@ UdpIoCreateIo ( EFI_STATUS EFIAPI UdpIoFreeIo ( - IN UDP_IO *UdpIo + IN UDP_IO *UdpIo ); /** @@ -276,7 +274,7 @@ UdpIoFreeIo ( VOID EFIAPI UdpIoCleanIo ( - IN UDP_IO *UdpIo + IN UDP_IO *UdpIo ); /** @@ -305,12 +303,12 @@ UdpIoCleanIo ( EFI_STATUS EFIAPI UdpIoSendDatagram ( - IN UDP_IO *UdpIo, - IN NET_BUF *Packet, - IN UDP_END_POINT *EndPoint OPTIONAL, - IN EFI_IP_ADDRESS *Gateway OPTIONAL, - IN UDP_IO_CALLBACK CallBack, - IN VOID *Context + IN UDP_IO *UdpIo, + IN NET_BUF *Packet, + IN UDP_END_POINT *EndPoint OPTIONAL, + IN EFI_IP_ADDRESS *Gateway OPTIONAL, + IN UDP_IO_CALLBACK CallBack, + IN VOID *Context ); /** @@ -323,8 +321,8 @@ UdpIoSendDatagram ( VOID EFIAPI UdpIoCancelSentDatagram ( - IN UDP_IO *UdpIo, - IN NET_BUF *Packet + IN UDP_IO *UdpIo, + IN NET_BUF *Packet ); /** @@ -353,10 +351,10 @@ UdpIoCancelSentDatagram ( EFI_STATUS EFIAPI UdpIoRecvDatagram ( - IN UDP_IO *UdpIo, - IN UDP_IO_CALLBACK CallBack, - IN VOID *Context, - IN UINT32 HeadLen + IN UDP_IO *UdpIo, + IN UDP_IO_CALLBACK CallBack, + IN VOID *Context, + IN UINT32 HeadLen ); #endif diff --git a/NetworkPkg/Include/Protocol/Dpc.h b/NetworkPkg/Include/Protocol/Dpc.h index 5e50f6cf30..5af4cc9e3b 100644 --- a/NetworkPkg/Include/Protocol/Dpc.h +++ b/NetworkPkg/Include/Protocol/Dpc.h @@ -7,7 +7,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #ifndef __DPC_H__ #define __DPC_H__ @@ -22,8 +21,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // Forward reference for pure ANSI compatibility // -typedef struct _EFI_DPC_PROTOCOL EFI_DPC_PROTOCOL; - +typedef struct _EFI_DPC_PROTOCOL EFI_DPC_PROTOCOL; /** Invoke a Deferred Procedure Call. @@ -86,13 +84,13 @@ EFI_STATUS /// DPC Protocol structure. /// struct _EFI_DPC_PROTOCOL { - EFI_DPC_QUEUE_DPC QueueDpc; - EFI_DPC_DISPATCH_DPC DispatchDpc; + EFI_DPC_QUEUE_DPC QueueDpc; + EFI_DPC_DISPATCH_DPC DispatchDpc; }; /// /// DPC Protocol GUID variable. /// -extern EFI_GUID gEfiDpcProtocolGuid; +extern EFI_GUID gEfiDpcProtocolGuid; #endif diff --git a/NetworkPkg/Include/Protocol/HttpCallback.h b/NetworkPkg/Include/Protocol/HttpCallback.h index 7e3f82ae75..3accd2f842 100644 --- a/NetworkPkg/Include/Protocol/HttpCallback.h +++ b/NetworkPkg/Include/Protocol/HttpCallback.h @@ -13,7 +13,7 @@ 0x611114f1, 0xa37b, 0x4468, {0xa4, 0x36, 0x5b, 0xdd, 0xa1, 0x6a, 0xa2, 0x40} \ } -typedef struct _EDKII_HTTP_CALLBACK_PROTOCOL EDKII_HTTP_CALLBACK_PROTOCOL; +typedef struct _EDKII_HTTP_CALLBACK_PROTOCOL EDKII_HTTP_CALLBACK_PROTOCOL; /// /// EDKII_HTTP_CALLBACK_EVENT @@ -67,19 +67,19 @@ typedef enum { **/ typedef VOID -(EFIAPI * EDKII_HTTP_CALLBACK) ( +(EFIAPI *EDKII_HTTP_CALLBACK)( IN EDKII_HTTP_CALLBACK_PROTOCOL *This, IN EDKII_HTTP_CALLBACK_EVENT Event, IN EFI_STATUS EventStatus - ); + ); /// /// EFI HTTP Callback Protocol is invoked when HTTP event occurs. /// struct _EDKII_HTTP_CALLBACK_PROTOCOL { - EDKII_HTTP_CALLBACK Callback; + EDKII_HTTP_CALLBACK Callback; }; -extern EFI_GUID gEdkiiHttpCallbackProtocolGuid; +extern EFI_GUID gEdkiiHttpCallbackProtocolGuid; #endif /* EDKII_HTTP_CALLBACK_H_ */ diff --git a/NetworkPkg/Ip4Dxe/ComponentName.c b/NetworkPkg/Ip4Dxe/ComponentName.c index 3461ab2a89..fe4a6a6d30 100644 --- a/NetworkPkg/Ip4Dxe/ComponentName.c +++ b/NetworkPkg/Ip4Dxe/ComponentName.c @@ -10,6 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user readable name of the driver. @@ -57,7 +58,6 @@ Ip4ComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -129,14 +129,13 @@ Ip4ComponentNameGetDriverName ( EFI_STATUS EFIAPI Ip4ComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); - // // EFI Component Name Protocol // @@ -149,14 +148,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gIp4ComponentName = { // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gIp4ComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) Ip4ComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) Ip4ComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gIp4ComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)Ip4ComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)Ip4ComponentNameGetControllerName, "en" }; - -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mIp4DriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mIp4DriverNameTable[] = { { "eng;en", L"IP4 Network Service Driver" @@ -223,7 +221,6 @@ Ip4ComponentNameGetDriverName ( DriverName, (BOOLEAN)(This == &gIp4ComponentName) ); - } /** @@ -238,12 +235,12 @@ Ip4ComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - IN EFI_IP4_PROTOCOL *Ip4 + IN EFI_IP4_PROTOCOL *Ip4 ) { - EFI_STATUS Status; - CHAR16 HandleName[80]; - EFI_IP4_MODE_DATA Ip4ModeData; + EFI_STATUS Status; + CHAR16 HandleName[80]; + EFI_IP4_MODE_DATA Ip4ModeData; if (Ip4 == NULL) { return EFI_INVALID_PARAMETER; @@ -261,7 +258,9 @@ UpdateName ( if (!Ip4ModeData.IsStarted || !Ip4ModeData.IsConfigured) { UnicodeSPrint (HandleName, sizeof (HandleName), L"IPv4 (Not started)"); } else { - UnicodeSPrint (HandleName, sizeof (HandleName), + UnicodeSPrint ( + HandleName, + sizeof (HandleName), L"IPv4 (SrcIP=%d.%d.%d.%d)", Ip4ModeData.ConfigData.StationAddress.Addr[0], Ip4ModeData.ConfigData.StationAddress.Addr[1], @@ -274,6 +273,7 @@ UpdateName ( FreeUnicodeStringTable (gIp4ControllerNameTable); gIp4ControllerNameTable = NULL; } + Status = AddUnicodeString2 ( "eng", gIp4ComponentName.SupportedLanguages, @@ -365,15 +365,15 @@ UpdateName ( EFI_STATUS EFIAPI Ip4ComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_IP4_PROTOCOL *Ip4; + EFI_STATUS Status; + EFI_IP4_PROTOCOL *Ip4; // // Only provide names for child handles. @@ -425,4 +425,3 @@ Ip4ComponentNameGetControllerName ( (BOOLEAN)(This == &gIp4ComponentName) ); } - diff --git a/NetworkPkg/Ip4Dxe/Ip4Common.c b/NetworkPkg/Ip4Dxe/Ip4Common.c index f4269b8ea4..930321866d 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Common.c +++ b/NetworkPkg/Ip4Dxe/Ip4Common.c @@ -7,7 +7,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Ip4Impl.h" - /** Return the cast type (Unicast/Broadcast) specific to an interface. All the addresses are host byte ordered. @@ -25,25 +24,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ INTN Ip4GetNetCast ( - IN IP4_ADDR IpAddr, - IN IP4_INTERFACE *IpIf + IN IP4_ADDR IpAddr, + IN IP4_INTERFACE *IpIf ) { if (IpAddr == IpIf->Ip) { return IP4_LOCAL_HOST; - } else if (IpAddr == IpIf->SubnetBrdcast) { return IP4_SUBNET_BROADCAST; - } else if (IpAddr == IpIf->NetBrdcast) { return IP4_NET_BROADCAST; - } return 0; } - /** Find the cast type of the packet related to the local host. This isn't the same as link layer cast type. For example, DHCP @@ -62,15 +57,15 @@ Ip4GetNetCast ( **/ INTN Ip4GetHostCast ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Dst, - IN IP4_ADDR Src + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Dst, + IN IP4_ADDR Src ) { - LIST_ENTRY *Entry; - IP4_INTERFACE *IpIf; - INTN Type; - INTN Class; + LIST_ENTRY *Entry; + IP4_INTERFACE *IpIf; + INTN Type; + INTN Class; Type = 0; @@ -106,18 +101,16 @@ Ip4GetHostCast ( if (Dst == IP4_ALLONE_ADDRESS) { IpIf = Ip4FindNet (IpSb, Src); - if (IpIf != NULL && !IP4_IS_BROADCAST (Ip4GetNetCast (Src, IpIf))) { + if ((IpIf != NULL) && !IP4_IS_BROADCAST (Ip4GetNetCast (Src, IpIf))) { return IP4_LOCAL_BROADCAST; } - - } else if (IP4_IS_MULTICAST (Dst) && Ip4FindGroup (&IpSb->IgmpCtrl, Dst) != NULL) { + } else if (IP4_IS_MULTICAST (Dst) && (Ip4FindGroup (&IpSb->IgmpCtrl, Dst) != NULL)) { return IP4_MULTICAST; } return Type; } - /** Find an interface whose configured IP address is Ip. @@ -129,12 +122,12 @@ Ip4GetHostCast ( **/ IP4_INTERFACE * Ip4FindInterface ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Ip + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Ip ) { - LIST_ENTRY *Entry; - IP4_INTERFACE *IpIf; + LIST_ENTRY *Entry; + IP4_INTERFACE *IpIf; NET_LIST_FOR_EACH (Entry, &IpSb->Interfaces) { IpIf = NET_LIST_USER_STRUCT (Entry, IP4_INTERFACE, Link); @@ -147,7 +140,6 @@ Ip4FindInterface ( return NULL; } - /** Find an interface that Ip is on that connected network. @@ -159,12 +151,12 @@ Ip4FindInterface ( **/ IP4_INTERFACE * Ip4FindNet ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Ip + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Ip ) { - LIST_ENTRY *Entry; - IP4_INTERFACE *IpIf; + LIST_ENTRY *Entry; + IP4_INTERFACE *IpIf; NET_LIST_FOR_EACH (Entry, &IpSb->Interfaces) { IpIf = NET_LIST_USER_STRUCT (Entry, IP4_INTERFACE, Link); @@ -177,7 +169,6 @@ Ip4FindNet ( return NULL; } - /** Find an interface of the service with the same Ip/Netmask pair. @@ -190,13 +181,13 @@ Ip4FindNet ( **/ IP4_INTERFACE * Ip4FindStationAddress ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Ip, - IN IP4_ADDR Netmask + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Ip, + IN IP4_ADDR Netmask ) { - LIST_ENTRY *Entry; - IP4_INTERFACE *IpIf; + LIST_ENTRY *Entry; + IP4_INTERFACE *IpIf; NET_LIST_FOR_EACH (Entry, &IpSb->Interfaces) { IpIf = NET_LIST_USER_STRUCT (Entry, IP4_INTERFACE, Link); @@ -209,7 +200,6 @@ Ip4FindStationAddress ( return NULL; } - /** Get the MAC address for a multicast IP address. Call Mnp's McastIpToMac to find the MAC address in stead of @@ -226,18 +216,17 @@ Ip4FindStationAddress ( **/ EFI_STATUS Ip4GetMulticastMac ( - IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp, - IN IP4_ADDR Multicast, - OUT EFI_MAC_ADDRESS *Mac + IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp, + IN IP4_ADDR Multicast, + OUT EFI_MAC_ADDRESS *Mac ) { - EFI_IP_ADDRESS EfiIp; + EFI_IP_ADDRESS EfiIp; EFI_IP4 (EfiIp.v4) = HTONL (Multicast); return Mnp->McastIpToMac (Mnp, FALSE, &EfiIp, Mac); } - /** Convert the multibyte field in IP header's byter order. In spite of its name, it can also be used to convert from @@ -250,19 +239,18 @@ Ip4GetMulticastMac ( **/ IP4_HEAD * Ip4NtohHead ( - IN IP4_HEAD *Head + IN IP4_HEAD *Head ) { - Head->TotalLen = NTOHS (Head->TotalLen); - Head->Id = NTOHS (Head->Id); - Head->Fragment = NTOHS (Head->Fragment); - Head->Src = NTOHL (Head->Src); - Head->Dst = NTOHL (Head->Dst); + Head->TotalLen = NTOHS (Head->TotalLen); + Head->Id = NTOHS (Head->Id); + Head->Fragment = NTOHS (Head->Fragment); + Head->Src = NTOHL (Head->Src); + Head->Dst = NTOHL (Head->Dst); return Head; } - /** Validate that Ip/Netmask pair is OK to be used as station address. Only continuous netmasks are supported. and check @@ -277,15 +265,15 @@ Ip4NtohHead ( **/ BOOLEAN Ip4StationAddressValid ( - IN IP4_ADDR Ip, - IN IP4_ADDR Netmask + IN IP4_ADDR Ip, + IN IP4_ADDR Netmask ) { // // Only support the station address with 0.0.0.0/0 to enable DHCP client. // if (Netmask == IP4_ALLZERO_ADDRESS) { - return (BOOLEAN) (Ip == IP4_ALLZERO_ADDRESS); + return (BOOLEAN)(Ip == IP4_ALLZERO_ADDRESS); } // diff --git a/NetworkPkg/Ip4Dxe/Ip4Common.h b/NetworkPkg/Ip4Dxe/Ip4Common.h index a84602d45a..7228c3ca46 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Common.h +++ b/NetworkPkg/Ip4Dxe/Ip4Common.h @@ -13,14 +13,14 @@ typedef struct _IP4_INTERFACE IP4_INTERFACE; typedef struct _IP4_PROTOCOL IP4_PROTOCOL; typedef struct _IP4_SERVICE IP4_SERVICE; -#define IP4_ETHER_PROTO 0x0800 +#define IP4_ETHER_PROTO 0x0800 // // The packet is received as link level broadcast/multicast/promiscuous. // -#define IP4_LINK_BROADCAST 0x00000001 -#define IP4_LINK_MULTICAST 0x00000002 -#define IP4_LINK_PROMISC 0x00000004 +#define IP4_LINK_BROADCAST 0x00000001 +#define IP4_LINK_MULTICAST 0x00000002 +#define IP4_LINK_PROMISC 0x00000004 // // IP4 address cast type classification. Keep it true that any @@ -40,10 +40,10 @@ typedef struct _IP4_SERVICE IP4_SERVICE; #define IP4_HEAD_MF_MASK 0x2000 #define IP4_HEAD_OFFSET_MASK 0x1fff -#define IP4_ALLZERO_ADDRESS 0x00000000u -#define IP4_ALLONE_ADDRESS 0xFFFFFFFFu -#define IP4_ALLSYSTEM_ADDRESS 0xE0000001u -#define IP4_ALLROUTER_ADDRESS 0xE0000002u +#define IP4_ALLZERO_ADDRESS 0x00000000u +#define IP4_ALLONE_ADDRESS 0xFFFFFFFFu +#define IP4_ALLSYSTEM_ADDRESS 0xE0000001u +#define IP4_ALLROUTER_ADDRESS 0xE0000002u /// /// Compose the fragment field to be used in the IP4 header. @@ -60,13 +60,13 @@ typedef struct _IP4_SERVICE IP4_SERVICE; #define IP4_DO_NOT_FRAGMENT(FragmentField) \ ((BOOLEAN)(((FragmentField) & IP4_HEAD_DF_MASK) == IP4_HEAD_DF_MASK)) -#define IP4_IS_BROADCAST(CastType) ((CastType) >= IP4_LOCAL_BROADCAST) +#define IP4_IS_BROADCAST(CastType) ((CastType) >= IP4_LOCAL_BROADCAST) /// /// Convert the Microsecond to second. IP transmit/receive time is /// in the unit of microsecond. IP ticks once per second. /// -#define IP4_US_TO_SEC(Us) (((Us) + 999999) / 1000000) +#define IP4_US_TO_SEC(Us) (((Us) + 999999) / 1000000) /** Return the cast type (Unicast/Broadcast) specific to an @@ -85,8 +85,8 @@ typedef struct _IP4_SERVICE IP4_SERVICE; **/ INTN Ip4GetNetCast ( - IN IP4_ADDR IpAddr, - IN IP4_INTERFACE *IpIf + IN IP4_ADDR IpAddr, + IN IP4_INTERFACE *IpIf ); /** @@ -107,9 +107,9 @@ Ip4GetNetCast ( **/ INTN Ip4GetHostCast ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Dst, - IN IP4_ADDR Src + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Dst, + IN IP4_ADDR Src ); /** @@ -123,8 +123,8 @@ Ip4GetHostCast ( **/ IP4_INTERFACE * Ip4FindInterface ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Ip + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Ip ); /** @@ -138,8 +138,8 @@ Ip4FindInterface ( **/ IP4_INTERFACE * Ip4FindNet ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Ip + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Ip ); /** @@ -154,9 +154,9 @@ Ip4FindNet ( **/ IP4_INTERFACE * Ip4FindStationAddress ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Ip, - IN IP4_ADDR Netmask + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Ip, + IN IP4_ADDR Netmask ); /** @@ -175,9 +175,9 @@ Ip4FindStationAddress ( **/ EFI_STATUS Ip4GetMulticastMac ( - IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp, - IN IP4_ADDR Multicast, - OUT EFI_MAC_ADDRESS *Mac + IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp, + IN IP4_ADDR Multicast, + OUT EFI_MAC_ADDRESS *Mac ); /** @@ -192,10 +192,9 @@ Ip4GetMulticastMac ( **/ IP4_HEAD * Ip4NtohHead ( - IN IP4_HEAD *Head + IN IP4_HEAD *Head ); - /** Validate that Ip/Netmask pair is OK to be used as station address. Only continuous netmasks are supported. and check @@ -210,8 +209,8 @@ Ip4NtohHead ( **/ BOOLEAN Ip4StationAddressValid ( - IN IP4_ADDR Ip, - IN IP4_ADDR Netmask + IN IP4_ADDR Ip, + IN IP4_ADDR Netmask ); #endif diff --git a/NetworkPkg/Ip4Dxe/Ip4Config2Impl.c b/NetworkPkg/Ip4Dxe/Ip4Config2Impl.c index 9cfad5916d..0d9f8a8fe6 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Config2Impl.c +++ b/NetworkPkg/Ip4Dxe/Ip4Config2Impl.c @@ -10,7 +10,7 @@ #include "Ip4Impl.h" -LIST_ENTRY mIp4Config2InstanceList = {&mIp4Config2InstanceList, &mIp4Config2InstanceList}; +LIST_ENTRY mIp4Config2InstanceList = { &mIp4Config2InstanceList, &mIp4Config2InstanceList }; /** The event process routine when the DHCPv4 service binding protocol is installed @@ -41,9 +41,9 @@ Ip4Config2DestroyDhcp4 ( IN OUT IP4_CONFIG2_INSTANCE *Instance ) { - IP4_SERVICE *IpSb; - EFI_STATUS Status; - EFI_DHCP4_PROTOCOL *Dhcp4; + IP4_SERVICE *IpSb; + EFI_STATUS Status; + EFI_DHCP4_PROTOCOL *Dhcp4; Dhcp4 = Instance->Dhcp4; ASSERT (Dhcp4 != NULL); @@ -90,12 +90,12 @@ Ip4Config2DestroyDhcp4 ( **/ VOID Ip4Config2OnPolicyChanged ( - IN IP4_SERVICE *IpSb, - IN EFI_IP4_CONFIG2_POLICY NewPolicy + IN IP4_SERVICE *IpSb, + IN EFI_IP4_CONFIG2_POLICY NewPolicy ) { - IP4_INTERFACE *IpIf; - IP4_ROUTE_TABLE *RouteTable; + IP4_INTERFACE *IpIf; + IP4_ROUTE_TABLE *RouteTable; // // Currently there are only two policies: static and dhcp. Regardless of @@ -122,21 +122,21 @@ Ip4Config2OnPolicyChanged ( // IpIf = Ip4CreateInterface (IpSb->Mnp, IpSb->Controller, IpSb->Image); if (IpIf == NULL) { - return ; + return; } RouteTable = Ip4CreateRouteTable (); if (RouteTable == NULL) { Ip4FreeInterface (IpIf, NULL); - return ; + return; } - IpSb->DefaultInterface = IpIf; + IpSb->DefaultInterface = IpIf; InsertHeadList (&IpSb->Interfaces, &IpIf->Link); IpSb->DefaultRouteTable = RouteTable; Ip4ReceiveFrame (IpIf, NULL, Ip4AccpetFrame, IpSb); - if (IpSb->State == IP4_SERVICE_CONFIGED || IpSb->State == IP4_SERVICE_STARTED) { + if ((IpSb->State == IP4_SERVICE_CONFIGED) || (IpSb->State == IP4_SERVICE_STARTED)) { IpSb->State = IP4_SERVICE_UNSTARTED; } @@ -146,7 +146,6 @@ Ip4Config2OnPolicyChanged ( if (NewPolicy == Ip4Config2PolicyDhcp) { Ip4StartAutoConfig (&IpSb->Ip4Config2Instance); } - } /** @@ -161,12 +160,12 @@ Ip4Config2OnPolicyChanged ( EFI_STATUS EFIAPI Ip4Config2SignalEvent ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Arg + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Arg ) { - gBS->SignalEvent ((EFI_EVENT) Item->Key); + gBS->SignalEvent ((EFI_EVENT)Item->Key); return EFI_SUCCESS; } @@ -187,17 +186,17 @@ Ip4Config2SignalEvent ( **/ EFI_STATUS Ip4Config2ReadConfigData ( - IN CHAR16 *VarName, - IN OUT IP4_CONFIG2_INSTANCE *Instance + IN CHAR16 *VarName, + IN OUT IP4_CONFIG2_INSTANCE *Instance ) { - EFI_STATUS Status; - UINTN VarSize; - IP4_CONFIG2_VARIABLE *Variable; - IP4_CONFIG2_DATA_ITEM *DataItem; - UINTN Index; - IP4_CONFIG2_DATA_RECORD DataRecord; - CHAR8 *Data; + EFI_STATUS Status; + UINTN VarSize; + IP4_CONFIG2_VARIABLE *Variable; + IP4_CONFIG2_DATA_ITEM *DataItem; + UINTN Index; + IP4_CONFIG2_DATA_RECORD DataRecord; + CHAR8 *Data; // // Try to read the configuration variable. @@ -227,7 +226,7 @@ Ip4Config2ReadConfigData ( &VarSize, Variable ); - if (EFI_ERROR (Status) || (UINT16) (~NetblockChecksum ((UINT8 *) Variable, (UINT32) VarSize)) != 0) { + if (EFI_ERROR (Status) || ((UINT16)(~NetblockChecksum ((UINT8 *)Variable, (UINT32)VarSize)) != 0)) { // // GetVariable still error or the variable is corrupted. // Fall back to the default value. @@ -249,15 +248,14 @@ Ip4Config2ReadConfigData ( return EFI_NOT_FOUND; } - for (Index = 0; Index < Variable->DataRecordCount; Index++) { - CopyMem (&DataRecord, &Variable->DataRecord[Index], sizeof (DataRecord)); DataItem = &Instance->DataItem[DataRecord.DataType]; if (DATA_ATTRIB_SET (DataItem->Attribute, DATA_ATTRIB_SIZE_FIXED) && (DataItem->DataSize != DataRecord.DataSize) - ) { + ) + { // // Perhaps a corrupted data record... // @@ -277,7 +275,7 @@ Ip4Config2ReadConfigData ( } } - Data = (CHAR8 *) Variable + DataRecord.Offset; + Data = (CHAR8 *)Variable + DataRecord.Offset; CopyMem (DataItem->Data.Ptr, Data, DataRecord.DataSize); DataItem->DataSize = DataRecord.DataSize; @@ -303,25 +301,23 @@ Ip4Config2ReadConfigData ( **/ EFI_STATUS Ip4Config2WriteConfigData ( - IN CHAR16 *VarName, - IN IP4_CONFIG2_INSTANCE *Instance + IN CHAR16 *VarName, + IN IP4_CONFIG2_INSTANCE *Instance ) { - UINTN Index; - UINTN VarSize; - IP4_CONFIG2_DATA_ITEM *DataItem; - IP4_CONFIG2_VARIABLE *Variable; - IP4_CONFIG2_DATA_RECORD *DataRecord; - CHAR8 *Heap; - EFI_STATUS Status; + UINTN Index; + UINTN VarSize; + IP4_CONFIG2_DATA_ITEM *DataItem; + IP4_CONFIG2_VARIABLE *Variable; + IP4_CONFIG2_DATA_RECORD *DataRecord; + CHAR8 *Heap; + EFI_STATUS Status; VarSize = sizeof (IP4_CONFIG2_VARIABLE) - sizeof (IP4_CONFIG2_DATA_RECORD); for (Index = 0; Index < Ip4Config2DataTypeMaximum; Index++) { - DataItem = &Instance->DataItem[Index]; if (!DATA_ATTRIB_SET (DataItem->Attribute, DATA_ATTRIB_VOLATILE) && !EFI_ERROR (DataItem->Status)) { - VarSize += sizeof (IP4_CONFIG2_DATA_RECORD) + DataItem->DataSize; } } @@ -331,28 +327,26 @@ Ip4Config2WriteConfigData ( return EFI_OUT_OF_RESOURCES; } - Heap = (CHAR8 *) Variable + VarSize; + Heap = (CHAR8 *)Variable + VarSize; Variable->DataRecordCount = 0; for (Index = 0; Index < Ip4Config2DataTypeMaximum; Index++) { - DataItem = &Instance->DataItem[Index]; if (!DATA_ATTRIB_SET (DataItem->Attribute, DATA_ATTRIB_VOLATILE) && !EFI_ERROR (DataItem->Status)) { - Heap -= DataItem->DataSize; CopyMem (Heap, DataItem->Data.Ptr, DataItem->DataSize); DataRecord = &Variable->DataRecord[Variable->DataRecordCount]; - DataRecord->DataType = (EFI_IP4_CONFIG2_DATA_TYPE) Index; - DataRecord->DataSize = (UINT32) DataItem->DataSize; - DataRecord->Offset = (UINT16) (Heap - (CHAR8 *) Variable); + DataRecord->DataType = (EFI_IP4_CONFIG2_DATA_TYPE)Index; + DataRecord->DataSize = (UINT32)DataItem->DataSize; + DataRecord->Offset = (UINT16)(Heap - (CHAR8 *)Variable); Variable->DataRecordCount++; } } Variable->Checksum = 0; - Variable->Checksum = (UINT16) ~NetblockChecksum ((UINT8 *) Variable, (UINT32) VarSize); + Variable->Checksum = (UINT16) ~NetblockChecksum ((UINT8 *)Variable, (UINT32)VarSize); Status = gRT->SetVariable ( VarName, @@ -367,7 +361,6 @@ Ip4Config2WriteConfigData ( return Status; } - /** Build a EFI_IP4_ROUTE_TABLE to be returned to the caller of GetModeData. The EFI_IP4_ROUTE_TABLE is clumsy to use in the internal operation of the @@ -382,14 +375,14 @@ Ip4Config2WriteConfigData ( **/ EFI_STATUS Ip4Config2BuildDefaultRouteTable ( - IN IP4_SERVICE *IpSb, - OUT EFI_IP4_ROUTE_TABLE *Table + IN IP4_SERVICE *IpSb, + OUT EFI_IP4_ROUTE_TABLE *Table ) { - LIST_ENTRY *Entry; - IP4_ROUTE_ENTRY *RtEntry; - UINT32 Count; - INT32 Index; + LIST_ENTRY *Entry; + IP4_ROUTE_ENTRY *RtEntry; + UINT32 Count; + INT32 Index; if (IpSb->DefaultRouteTable == NULL) { return EFI_NOT_FOUND; @@ -410,7 +403,6 @@ Ip4Config2BuildDefaultRouteTable ( Count = 0; for (Index = IP4_MASK_MAX; Index >= 0; Index--) { - NET_LIST_FOR_EACH (Entry, &(IpSb->DefaultRouteTable->RouteArea[Index])) { RtEntry = NET_LIST_USER_STRUCT (Entry, IP4_ROUTE_ENTRY, Link); @@ -420,7 +412,6 @@ Ip4Config2BuildDefaultRouteTable ( Count++; } - } return EFI_SUCCESS; @@ -443,13 +434,13 @@ Ip4Config2OnDhcp4SbInstalled ( { IP4_CONFIG2_INSTANCE *Instance; - Instance = (IP4_CONFIG2_INSTANCE *) Context; + Instance = (IP4_CONFIG2_INSTANCE *)Context; if ((Instance->Dhcp4Handle != NULL) || (Instance->Policy != Ip4Config2PolicyDhcp)) { // // The DHCP4 child is already created or the policy is no longer DHCP. // - return ; + return; } Ip4StartAutoConfig (Instance); @@ -468,18 +459,18 @@ Ip4Config2OnDhcp4SbInstalled ( **/ EFI_STATUS Ip4Config2SetDefaultAddr ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR StationAddress, - IN IP4_ADDR SubnetMask + IN IP4_SERVICE *IpSb, + IN IP4_ADDR StationAddress, + IN IP4_ADDR SubnetMask ) { - EFI_STATUS Status; - IP4_INTERFACE *IpIf; - IP4_PROTOCOL *Ip4Instance; - EFI_ARP_PROTOCOL *Arp; - LIST_ENTRY *Entry; - IP4_ADDR Subnet; - IP4_ROUTE_TABLE *RouteTable; + EFI_STATUS Status; + IP4_INTERFACE *IpIf; + IP4_PROTOCOL *Ip4Instance; + EFI_ARP_PROTOCOL *Arp; + LIST_ENTRY *Entry; + IP4_ADDR Subnet; + IP4_ROUTE_TABLE *RouteTable; IpIf = IpSb->DefaultInterface; ASSERT (IpIf != NULL); @@ -515,7 +506,7 @@ Ip4Config2SetDefaultAddr ( return EFI_OUT_OF_RESOURCES; } - IpSb->DefaultInterface = IpIf; + IpSb->DefaultInterface = IpIf; InsertHeadList (&IpSb->Interfaces, &IpIf->Link); IpSb->DefaultRouteTable = RouteTable; Ip4ReceiveFrame (IpIf, NULL, Ip4AccpetFrame, IpSb); @@ -539,14 +530,14 @@ Ip4Config2SetDefaultAddr ( Arp = NULL; NET_LIST_FOR_EACH (Entry, &IpIf->IpInstances) { Ip4Instance = NET_LIST_USER_STRUCT_S (Entry, IP4_PROTOCOL, AddrLink, IP4_PROTOCOL_SIGNATURE); - Status = gBS->OpenProtocol ( - IpIf->ArpHandle, - &gEfiArpProtocolGuid, - (VOID **) &Arp, - gIp4DriverBinding.DriverBindingHandle, - Ip4Instance->Handle, - EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER - ); + Status = gBS->OpenProtocol ( + IpIf->ArpHandle, + &gEfiArpProtocolGuid, + (VOID **)&Arp, + gIp4DriverBinding.DriverBindingHandle, + Ip4Instance->Handle, + EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER + ); if (EFI_ERROR (Status)) { return Status; } @@ -565,7 +556,7 @@ Ip4Config2SetDefaultAddr ( IP4_ALLZERO_ADDRESS ); - IpSb->State = IP4_SERVICE_CONFIGED; + IpSb->State = IP4_SERVICE_CONFIGED; IpSb->Reconfig = FALSE; return EFI_SUCCESS; @@ -585,14 +576,14 @@ Ip4Config2SetDefaultAddr ( **/ EFI_STATUS Ip4Config2SetDefaultIf ( - IN IP4_CONFIG2_INSTANCE *Instance, - IN IP4_ADDR StationAddress, - IN IP4_ADDR SubnetMask, - IN IP4_ADDR GatewayAddress + IN IP4_CONFIG2_INSTANCE *Instance, + IN IP4_ADDR StationAddress, + IN IP4_ADDR SubnetMask, + IN IP4_ADDR GatewayAddress ) { - EFI_STATUS Status; - IP4_SERVICE *IpSb; + EFI_STATUS Status; + IP4_SERVICE *IpSb; IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance); @@ -623,7 +614,6 @@ Ip4Config2SetDefaultIf ( return EFI_SUCCESS; } - /** Release all the DHCP related resources. @@ -634,10 +624,10 @@ Ip4Config2SetDefaultIf ( **/ VOID Ip4Config2CleanDhcp4 ( - IN IP4_CONFIG2_INSTANCE *Instance + IN IP4_CONFIG2_INSTANCE *Instance ) { - IP4_SERVICE *IpSb; + IP4_SERVICE *IpSb; IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance); @@ -645,11 +635,11 @@ Ip4Config2CleanDhcp4 ( Instance->Dhcp4->Stop (Instance->Dhcp4); gBS->CloseProtocol ( - Instance->Dhcp4Handle, - &gEfiDhcp4ProtocolGuid, - IpSb->Image, - IpSb->Controller - ); + Instance->Dhcp4Handle, + &gEfiDhcp4ProtocolGuid, + IpSb->Image, + IpSb->Controller + ); Instance->Dhcp4 = NULL; } @@ -692,28 +682,28 @@ Ip4Config2CleanDhcp4 ( **/ EFI_STATUS Ip4Config2SetDnsServerWorker ( - IN IP4_CONFIG2_INSTANCE *Instance, - IN UINTN DataSize, - IN VOID *Data + IN IP4_CONFIG2_INSTANCE *Instance, + IN UINTN DataSize, + IN VOID *Data ) { - UINTN OldIndex; - UINTN NewIndex; - EFI_IPv4_ADDRESS *OldDns; - EFI_IPv4_ADDRESS *NewDns; - UINTN OldDnsCount; - UINTN NewDnsCount; - IP4_CONFIG2_DATA_ITEM *Item; - BOOLEAN OneAdded; - VOID *Tmp; - IP4_ADDR DnsAddress; + UINTN OldIndex; + UINTN NewIndex; + EFI_IPv4_ADDRESS *OldDns; + EFI_IPv4_ADDRESS *NewDns; + UINTN OldDnsCount; + UINTN NewDnsCount; + IP4_CONFIG2_DATA_ITEM *Item; + BOOLEAN OneAdded; + VOID *Tmp; + IP4_ADDR DnsAddress; if ((DataSize % sizeof (EFI_IPv4_ADDRESS) != 0) || (DataSize == 0)) { return EFI_BAD_BUFFER_SIZE; } Item = &Instance->DataItem[Ip4Config2DataTypeDnsServer]; - NewDns = (EFI_IPv4_ADDRESS *) Data; + NewDns = (EFI_IPv4_ADDRESS *)Data; OldDns = Item->Data.DnsServers; NewDnsCount = DataSize / sizeof (EFI_IPv4_ADDRESS); OldDnsCount = Item->DataSize / sizeof (EFI_IPv4_ADDRESS); @@ -737,6 +727,7 @@ Ip4Config2SetDnsServerWorker ( if (Tmp != NULL) { FreePool (Tmp); } + return EFI_INVALID_PARAMETER; } @@ -773,6 +764,7 @@ Ip4Config2SetDnsServerWorker ( if (Item->Data.Ptr != NULL) { FreePool (Item->Data.Ptr); } + Item->Data.Ptr = Tmp; } @@ -783,8 +775,6 @@ Ip4Config2SetDnsServerWorker ( } } - - /** Callback function when DHCP process finished. It will save the retrieved IP configure parameter from DHCP to the NVRam. @@ -798,21 +788,21 @@ Ip4Config2SetDnsServerWorker ( VOID EFIAPI Ip4Config2OnDhcp4Complete ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - IP4_CONFIG2_INSTANCE *Instance; - EFI_DHCP4_MODE_DATA Dhcp4Mode; - EFI_STATUS Status; - IP4_ADDR StationAddress; - IP4_ADDR SubnetMask; - IP4_ADDR GatewayAddress; - UINT32 Index; - UINT32 OptionCount; - EFI_DHCP4_PACKET_OPTION **OptionList; - - Instance = (IP4_CONFIG2_INSTANCE *) Context; + IP4_CONFIG2_INSTANCE *Instance; + EFI_DHCP4_MODE_DATA Dhcp4Mode; + EFI_STATUS Status; + IP4_ADDR StationAddress; + IP4_ADDR SubnetMask; + IP4_ADDR GatewayAddress; + UINT32 Index; + UINT32 OptionCount; + EFI_DHCP4_PACKET_OPTION **OptionList; + + Instance = (IP4_CONFIG2_INSTANCE *)Context; ASSERT (Instance->Dhcp4 != NULL); // @@ -826,7 +816,7 @@ Ip4Config2OnDhcp4Complete ( if (Dhcp4Mode.State == Dhcp4Bound) { StationAddress = EFI_NTOHL (Dhcp4Mode.ClientAddress); - SubnetMask = EFI_NTOHL (Dhcp4Mode.SubnetMask); + SubnetMask = EFI_NTOHL (Dhcp4Mode.SubnetMask); GatewayAddress = EFI_NTOHL (Dhcp4Mode.RouterAddress); Status = Ip4Config2SetDefaultIf (Instance, StationAddress, SubnetMask, GatewayAddress); @@ -840,7 +830,7 @@ Ip4Config2OnDhcp4Complete ( OptionCount = 0; OptionList = NULL; - Status = Instance->Dhcp4->Parse (Instance->Dhcp4, Dhcp4Mode.ReplyPacket, &OptionCount, OptionList); + Status = Instance->Dhcp4->Parse (Instance->Dhcp4, Dhcp4Mode.ReplyPacket, &OptionCount, OptionList); if (Status != EFI_BUFFER_TOO_SMALL) { goto Exit; } @@ -880,7 +870,6 @@ Exit: DispatchDpc (); } - /** Start the DHCP configuration for this IP service instance. It will locates the EFI_IP4_CONFIG2_PROTOCOL, then start the @@ -894,15 +883,15 @@ Exit: **/ EFI_STATUS Ip4StartAutoConfig ( - IN IP4_CONFIG2_INSTANCE *Instance + IN IP4_CONFIG2_INSTANCE *Instance ) { - IP4_SERVICE *IpSb; - EFI_DHCP4_PROTOCOL *Dhcp4; - EFI_DHCP4_MODE_DATA Dhcp4Mode; - EFI_DHCP4_PACKET_OPTION *OptionList[1]; - IP4_CONFIG2_DHCP4_OPTION ParaList; - EFI_STATUS Status; + IP4_SERVICE *IpSb; + EFI_DHCP4_PROTOCOL *Dhcp4; + EFI_DHCP4_MODE_DATA Dhcp4Mode; + EFI_DHCP4_PACKET_OPTION *OptionList[1]; + IP4_CONFIG2_DHCP4_OPTION ParaList; + EFI_STATUS Status; IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance); @@ -934,7 +923,7 @@ Ip4StartAutoConfig ( &gEfiDhcp4ServiceBindingProtocolGuid, TPL_CALLBACK, Ip4Config2OnDhcp4SbInstalled, - (VOID *) Instance, + (VOID *)Instance, &Instance->Registration ); } @@ -951,7 +940,7 @@ Ip4StartAutoConfig ( Status = gBS->OpenProtocol ( Instance->Dhcp4Handle, &gEfiDhcp4ProtocolGuid, - (VOID **) &Instance->Dhcp4, + (VOID **)&Instance->Dhcp4, IpSb->Image, IpSb->Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -1048,8 +1037,6 @@ Ip4StartAutoConfig ( return EFI_SUCCESS; } - - /** The work function is to get the interface information of the communication device this IP4_CONFIG2_INSTANCE manages. @@ -1069,16 +1056,16 @@ Ip4StartAutoConfig ( **/ EFI_STATUS Ip4Config2GetIfInfo ( - IN IP4_CONFIG2_INSTANCE *Instance, - IN OUT UINTN *DataSize, - IN VOID *Data OPTIONAL + IN IP4_CONFIG2_INSTANCE *Instance, + IN OUT UINTN *DataSize, + IN VOID *Data OPTIONAL ) { - IP4_SERVICE *IpSb; - UINTN Length; - IP4_CONFIG2_DATA_ITEM *Item; - EFI_IP4_CONFIG2_INTERFACE_INFO *IfInfo; - IP4_ADDR Address; + IP4_SERVICE *IpSb; + UINTN Length; + IP4_CONFIG2_DATA_ITEM *Item; + EFI_IP4_CONFIG2_INTERFACE_INFO *IfInfo; + IP4_ADDR Address; IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance); Length = sizeof (EFI_IP4_CONFIG2_INTERFACE_INFO); @@ -1095,8 +1082,8 @@ Ip4Config2GetIfInfo ( // // Copy the fixed size part of the interface info. // - Item = &Instance->DataItem[Ip4Config2DataTypeInterfaceInfo]; - IfInfo = (EFI_IP4_CONFIG2_INTERFACE_INFO *) Data; + Item = &Instance->DataItem[Ip4Config2DataTypeInterfaceInfo]; + IfInfo = (EFI_IP4_CONFIG2_INTERFACE_INFO *)Data; CopyMem (IfInfo, Item->Data.Ptr, sizeof (EFI_IP4_CONFIG2_INTERFACE_INFO)); // @@ -1111,7 +1098,7 @@ Ip4Config2GetIfInfo ( if (IpSb->DefaultRouteTable != NULL) { IfInfo->RouteTableSize = IpSb->DefaultRouteTable->TotalNum; - IfInfo->RouteTable = (EFI_IP4_ROUTE_TABLE *) ((UINT8 *) Data + sizeof (EFI_IP4_CONFIG2_INTERFACE_INFO)); + IfInfo->RouteTable = (EFI_IP4_ROUTE_TABLE *)((UINT8 *)Data + sizeof (EFI_IP4_CONFIG2_INTERFACE_INFO)); Ip4Config2BuildDefaultRouteTable (IpSb, IfInfo->RouteTable); } @@ -1137,27 +1124,27 @@ Ip4Config2GetIfInfo ( **/ EFI_STATUS Ip4Config2SetPolicy ( - IN IP4_CONFIG2_INSTANCE *Instance, - IN UINTN DataSize, - IN VOID *Data + IN IP4_CONFIG2_INSTANCE *Instance, + IN UINTN DataSize, + IN VOID *Data ) { - EFI_IP4_CONFIG2_POLICY NewPolicy; - IP4_CONFIG2_DATA_ITEM *DataItem; - IP4_SERVICE *IpSb; + EFI_IP4_CONFIG2_POLICY NewPolicy; + IP4_CONFIG2_DATA_ITEM *DataItem; + IP4_SERVICE *IpSb; if (DataSize != sizeof (EFI_IP4_CONFIG2_POLICY)) { return EFI_BAD_BUFFER_SIZE; } - NewPolicy = *((EFI_IP4_CONFIG2_POLICY *) Data); + NewPolicy = *((EFI_IP4_CONFIG2_POLICY *)Data); if (NewPolicy >= Ip4Config2PolicyMax) { return EFI_INVALID_PARAMETER; } if (NewPolicy == Instance->Policy) { - if (NewPolicy != Ip4Config2PolicyDhcp || Instance->DhcpSuccess) { + if ((NewPolicy != Ip4Config2PolicyDhcp) || Instance->DhcpSuccess) { return EFI_ABORTED; } } else { @@ -1165,28 +1152,31 @@ Ip4Config2SetPolicy ( // The policy is changed. Clean the ManualAddress, Gateway and DnsServers, // shrink the variable data size, and fire up all the related events. // - DataItem = &Instance->DataItem[Ip4Config2DataTypeManualAddress]; + DataItem = &Instance->DataItem[Ip4Config2DataTypeManualAddress]; if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NULL; DataItem->DataSize = 0; DataItem->Status = EFI_NOT_FOUND; NetMapIterate (&DataItem->EventMap, Ip4Config2SignalEvent, NULL); - DataItem = &Instance->DataItem[Ip4Config2DataTypeGateway]; + DataItem = &Instance->DataItem[Ip4Config2DataTypeGateway]; if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NULL; DataItem->DataSize = 0; DataItem->Status = EFI_NOT_FOUND; NetMapIterate (&DataItem->EventMap, Ip4Config2SignalEvent, NULL); - DataItem = &Instance->DataItem[Ip4Config2DataTypeDnsServer]; + DataItem = &Instance->DataItem[Ip4Config2DataTypeDnsServer]; if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NULL; DataItem->DataSize = 0; DataItem->Status = EFI_NOT_FOUND; @@ -1244,20 +1234,20 @@ Ip4Config2SetPolicy ( **/ EFI_STATUS Ip4Config2SetManualAddress ( - IN IP4_CONFIG2_INSTANCE *Instance, - IN UINTN DataSize, - IN VOID *Data + IN IP4_CONFIG2_INSTANCE *Instance, + IN UINTN DataSize, + IN VOID *Data ) { - EFI_IP4_CONFIG2_MANUAL_ADDRESS NewAddress; - IP4_CONFIG2_DATA_ITEM *DataItem; - EFI_STATUS Status; - IP4_ADDR StationAddress; - IP4_ADDR SubnetMask; - VOID *Ptr; - IP4_SERVICE *IpSb; - IP4_INTERFACE *IpIf; - IP4_ROUTE_TABLE *RouteTable; + EFI_IP4_CONFIG2_MANUAL_ADDRESS NewAddress; + IP4_CONFIG2_DATA_ITEM *DataItem; + EFI_STATUS Status; + IP4_ADDR StationAddress; + IP4_ADDR SubnetMask; + VOID *Ptr; + IP4_SERVICE *IpSb; + IP4_INTERFACE *IpIf; + IP4_ROUTE_TABLE *RouteTable; DataItem = NULL; Status = EFI_SUCCESS; @@ -1279,11 +1269,11 @@ Ip4Config2SetManualAddress ( DataItem = &Instance->DataItem[Ip4Config2DataTypeManualAddress]; - if (Data != NULL && DataSize != 0) { - NewAddress = *((EFI_IP4_CONFIG2_MANUAL_ADDRESS *) Data); + if ((Data != NULL) && (DataSize != 0)) { + NewAddress = *((EFI_IP4_CONFIG2_MANUAL_ADDRESS *)Data); StationAddress = EFI_NTOHL (NewAddress.Address); - SubnetMask = EFI_NTOHL (NewAddress.SubnetMask); + SubnetMask = EFI_NTOHL (NewAddress.SubnetMask); // // Check whether the StationAddress/SubnetMask pair is valid. @@ -1310,14 +1300,15 @@ Ip4Config2SetManualAddress ( DataItem->Status = EFI_NOT_READY; IpSb->Reconfig = TRUE; - Status = Ip4Config2SetDefaultAddr (IpSb, StationAddress, SubnetMask); + Status = Ip4Config2SetDefaultAddr (IpSb, StationAddress, SubnetMask); DataItem->Status = Status; - if (EFI_ERROR (DataItem->Status) && DataItem->Status != EFI_NOT_READY) { + if (EFI_ERROR (DataItem->Status) && (DataItem->Status != EFI_NOT_READY)) { if (Ptr != NULL) { FreePool (Ptr); } + DataItem->Data.Ptr = NULL; } } else { @@ -1327,6 +1318,7 @@ Ip4Config2SetManualAddress ( if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NULL; DataItem->DataSize = 0; DataItem->Status = EFI_NOT_FOUND; @@ -1362,7 +1354,7 @@ Ip4Config2SetManualAddress ( return EFI_OUT_OF_RESOURCES; } - IpSb->DefaultInterface = IpIf; + IpSb->DefaultInterface = IpIf; InsertHeadList (&IpSb->Interfaces, &IpIf->Link); IpSb->DefaultRouteTable = RouteTable; Ip4ReceiveFrame (IpIf, NULL, Ip4AccpetFrame, IpSb); @@ -1370,7 +1362,7 @@ Ip4Config2SetManualAddress ( // // Reset the State to unstarted. // - if (IpSb->State == IP4_SERVICE_CONFIGED || IpSb->State == IP4_SERVICE_STARTED) { + if ((IpSb->State == IP4_SERVICE_CONFIGED) || (IpSb->State == IP4_SERVICE_STARTED)) { IpSb->State = IP4_SERVICE_UNSTARTED; } } @@ -1402,30 +1394,30 @@ Ip4Config2SetManualAddress ( **/ EFI_STATUS Ip4Config2SetGateway ( - IN IP4_CONFIG2_INSTANCE *Instance, - IN UINTN DataSize, - IN VOID *Data + IN IP4_CONFIG2_INSTANCE *Instance, + IN UINTN DataSize, + IN VOID *Data ) { - IP4_SERVICE *IpSb; - IP4_CONFIG2_DATA_ITEM *DataItem; - IP4_ADDR Gateway; - - UINTN Index1; - UINTN Index2; - EFI_IPv4_ADDRESS *OldGateway; - EFI_IPv4_ADDRESS *NewGateway; - UINTN OldGatewayCount; - UINTN NewGatewayCount; - BOOLEAN OneRemoved; - BOOLEAN OneAdded; - VOID *Tmp; - - OldGateway = NULL; - NewGateway = NULL; - OneRemoved = FALSE; - OneAdded = FALSE; - Tmp = NULL; + IP4_SERVICE *IpSb; + IP4_CONFIG2_DATA_ITEM *DataItem; + IP4_ADDR Gateway; + + UINTN Index1; + UINTN Index2; + EFI_IPv4_ADDRESS *OldGateway; + EFI_IPv4_ADDRESS *NewGateway; + UINTN OldGatewayCount; + UINTN NewGatewayCount; + BOOLEAN OneRemoved; + BOOLEAN OneAdded; + VOID *Tmp; + + OldGateway = NULL; + NewGateway = NULL; + OneRemoved = FALSE; + OneAdded = FALSE; + Tmp = NULL; if ((DataSize != 0) && (DataSize % sizeof (EFI_IPv4_ADDRESS) != 0)) { return EFI_BAD_BUFFER_SIZE; @@ -1455,14 +1447,15 @@ Ip4Config2SetGateway ( OneRemoved = TRUE; } - if (Data != NULL && DataSize != 0) { - NewGateway = (EFI_IPv4_ADDRESS *) Data; + if ((Data != NULL) && (DataSize != 0)) { + NewGateway = (EFI_IPv4_ADDRESS *)Data; NewGatewayCount = DataSize / sizeof (EFI_IPv4_ADDRESS); for (Index1 = 0; Index1 < NewGatewayCount; Index1++) { CopyMem (&Gateway, NewGateway + Index1, sizeof (IP4_ADDR)); if ((IpSb->DefaultInterface->SubnetMask != 0) && - !NetIp4IsUnicast (NTOHL (Gateway), IpSb->DefaultInterface->SubnetMask)) { + !NetIp4IsUnicast (NTOHL (Gateway), IpSb->DefaultInterface->SubnetMask)) + { return EFI_INVALID_PARAMETER; } @@ -1505,6 +1498,7 @@ Ip4Config2SetGateway ( if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = Tmp; } @@ -1519,6 +1513,7 @@ Ip4Config2SetGateway ( if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NULL; DataItem->DataSize = 0; DataItem->Status = EFI_NOT_FOUND; @@ -1551,13 +1546,13 @@ Ip4Config2SetGateway ( **/ EFI_STATUS Ip4Config2SetDnsServer ( - IN IP4_CONFIG2_INSTANCE *Instance, - IN UINTN DataSize, - IN VOID *Data + IN IP4_CONFIG2_INSTANCE *Instance, + IN UINTN DataSize, + IN VOID *Data ) { - EFI_STATUS Status; - IP4_CONFIG2_DATA_ITEM *Item; + EFI_STATUS Status; + IP4_CONFIG2_DATA_ITEM *Item; Status = EFI_SUCCESS; Item = NULL; @@ -1572,7 +1567,7 @@ Ip4Config2SetDnsServer ( REMOVE_DATA_ATTRIB (Item->Attribute, DATA_ATTRIB_VOLATILE); } - if (Data != NULL && DataSize != 0) { + if ((Data != NULL) && (DataSize != 0)) { Status = Ip4Config2SetDnsServerWorker (Instance, DataSize, Data); } else { // @@ -1581,6 +1576,7 @@ Ip4Config2SetDnsServer ( if (Item->Data.Ptr != NULL) { FreePool (Item->Data.Ptr); } + Item->Data.Ptr = NULL; Item->DataSize = 0; Item->Status = EFI_NOT_FOUND; @@ -1599,8 +1595,8 @@ Ip4Config2SetDnsServer ( **/ VOID Ip4Config2InitIfInfo ( - IN IP4_SERVICE *IpSb, - OUT EFI_IP4_CONFIG2_INTERFACE_INFO *IfInfo + IN IP4_SERVICE *IpSb, + OUT EFI_IP4_CONFIG2_INTERFACE_INFO *IfInfo ) { UnicodeSPrint ( @@ -1608,15 +1604,13 @@ Ip4Config2InitIfInfo ( EFI_IP4_CONFIG2_INTERFACE_INFO_NAME_SIZE, L"eth%d", IpSb->Ip4Config2Instance.IfIndex - ); + ); IfInfo->IfType = IpSb->SnpMode.IfType; IfInfo->HwAddressSize = IpSb->SnpMode.HwAddressSize; CopyMem (&IfInfo->HwAddress, &IpSb->SnpMode.CurrentAddress, IfInfo->HwAddressSize); } - - /** Set the configuration for the EFI IPv4 network stack running on the communication device this EFI_IP4_CONFIG2_PROTOCOL instance manages. @@ -1673,12 +1667,12 @@ EfiIp4Config2SetData ( IN VOID *Data ) { - EFI_TPL OldTpl; - EFI_STATUS Status; - IP4_CONFIG2_INSTANCE *Instance; - IP4_SERVICE *IpSb; + EFI_TPL OldTpl; + EFI_STATUS Status; + IP4_CONFIG2_INSTANCE *Instance; + IP4_SERVICE *IpSb; - if ((This == NULL) || (Data == NULL && DataSize != 0) || (Data != NULL && DataSize == 0)) { + if ((This == NULL) || ((Data == NULL) && (DataSize != 0)) || ((Data != NULL) && (DataSize == 0))) { return EFI_INVALID_PARAMETER; } @@ -1690,19 +1684,16 @@ EfiIp4Config2SetData ( IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance); NET_CHECK_SIGNATURE (IpSb, IP4_SERVICE_SIGNATURE); - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); Status = Instance->DataItem[DataType].Status; if (Status != EFI_NOT_READY) { - if (Instance->DataItem[DataType].SetData == NULL) { // // This type of data is readonly. // Status = EFI_WRITE_PROTECTED; } else { - Status = Instance->DataItem[DataType].SetData (Instance, DataSize, Data); if (!EFI_ERROR (Status)) { // @@ -1778,10 +1769,10 @@ EfiIp4Config2GetData ( IN VOID *Data OPTIONAL ) { - EFI_TPL OldTpl; - EFI_STATUS Status; - IP4_CONFIG2_INSTANCE *Instance; - IP4_CONFIG2_DATA_ITEM *DataItem; + EFI_TPL OldTpl; + EFI_STATUS Status; + IP4_CONFIG2_INSTANCE *Instance; + IP4_CONFIG2_DATA_ITEM *DataItem; if ((This == NULL) || (DataSize == NULL) || ((*DataSize != 0) && (Data == NULL))) { return EFI_INVALID_PARAMETER; @@ -1796,11 +1787,9 @@ EfiIp4Config2GetData ( Instance = IP4_CONFIG2_INSTANCE_FROM_PROTOCOL (This); DataItem = &Instance->DataItem[DataType]; - Status = Instance->DataItem[DataType].Status; + Status = Instance->DataItem[DataType].Status; if (!EFI_ERROR (Status)) { - if (DataItem->GetData != NULL) { - Status = DataItem->GetData (Instance, DataSize, Data); } else if (*DataSize < Instance->DataItem[DataType].DataSize) { // @@ -1809,7 +1798,6 @@ EfiIp4Config2GetData ( *DataSize = Instance->DataItem[DataType].DataSize; Status = EFI_BUFFER_TOO_SMALL; } else { - *DataSize = Instance->DataItem[DataType].DataSize; CopyMem (Data, Instance->DataItem[DataType].Data.Ptr, *DataSize); } @@ -1850,11 +1838,11 @@ EfiIp4Config2RegisterDataNotify ( IN EFI_EVENT Event ) { - EFI_TPL OldTpl; - EFI_STATUS Status; - IP4_CONFIG2_INSTANCE *Instance; - NET_MAP *EventMap; - NET_MAP_ITEM *Item; + EFI_TPL OldTpl; + EFI_STATUS Status; + IP4_CONFIG2_INSTANCE *Instance; + NET_MAP *EventMap; + NET_MAP_ITEM *Item; if ((This == NULL) || (Event == NULL)) { return EFI_INVALID_PARAMETER; @@ -1864,26 +1852,22 @@ EfiIp4Config2RegisterDataNotify ( return EFI_UNSUPPORTED; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - Instance = IP4_CONFIG2_INSTANCE_FROM_PROTOCOL (This); - EventMap = &Instance->DataItem[DataType].EventMap; + Instance = IP4_CONFIG2_INSTANCE_FROM_PROTOCOL (This); + EventMap = &Instance->DataItem[DataType].EventMap; // // Check whether this event is already registered for this DataType. // Item = NetMapFindKey (EventMap, Event); if (Item == NULL) { - Status = NetMapInsertTail (EventMap, Event, NULL); if (EFI_ERROR (Status)) { - Status = EFI_OUT_OF_RESOURCES; } - } else { - Status = EFI_ACCESS_DENIED; } @@ -1915,10 +1899,10 @@ EfiIp4Config2UnregisterDataNotify ( IN EFI_EVENT Event ) { - EFI_TPL OldTpl; - EFI_STATUS Status; - IP4_CONFIG2_INSTANCE *Instance; - NET_MAP_ITEM *Item; + EFI_TPL OldTpl; + EFI_STATUS Status; + IP4_CONFIG2_INSTANCE *Instance; + NET_MAP_ITEM *Item; if ((This == NULL) || (Event == NULL)) { return EFI_INVALID_PARAMETER; @@ -1934,11 +1918,9 @@ EfiIp4Config2UnregisterDataNotify ( Item = NetMapFindKey (&Instance->DataItem[DataType].EventMap, Event); if (Item != NULL) { - NetMapRemoveItem (&Instance->DataItem[DataType].EventMap, Item, NULL); Status = EFI_SUCCESS; } else { - Status = EFI_NOT_FOUND; } @@ -1961,20 +1943,18 @@ Ip4Config2InitInstance ( OUT IP4_CONFIG2_INSTANCE *Instance ) { - IP4_SERVICE *IpSb; - IP4_CONFIG2_INSTANCE *TmpInstance; - LIST_ENTRY *Entry; - EFI_STATUS Status; - UINTN Index; - UINT16 IfIndex; - IP4_CONFIG2_DATA_ITEM *DataItem; - + IP4_SERVICE *IpSb; + IP4_CONFIG2_INSTANCE *TmpInstance; + LIST_ENTRY *Entry; + EFI_STATUS Status; + UINTN Index; + UINT16 IfIndex; + IP4_CONFIG2_DATA_ITEM *DataItem; IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance); Instance->Signature = IP4_CONFIG2_INSTANCE_SIGNATURE; - // // Determine the index of this interface. // @@ -2002,7 +1982,6 @@ Ip4Config2InitInstance ( NetMapInit (&Instance->DataItem[Index].EventMap); } - // // Initialize each data type: associate storage and set data size for the // fixed size data types, hook the SetData function, set the data attribute. @@ -2021,19 +2000,19 @@ Ip4Config2InitInstance ( Instance->Policy = Ip4Config2PolicyStatic; SET_DATA_ATTRIB (DataItem->Attribute, DATA_ATTRIB_SIZE_FIXED); - DataItem = &Instance->DataItem[Ip4Config2DataTypeManualAddress]; - DataItem->SetData = Ip4Config2SetManualAddress; - DataItem->Status = EFI_NOT_FOUND; + DataItem = &Instance->DataItem[Ip4Config2DataTypeManualAddress]; + DataItem->SetData = Ip4Config2SetManualAddress; + DataItem->Status = EFI_NOT_FOUND; - DataItem = &Instance->DataItem[Ip4Config2DataTypeGateway]; - DataItem->SetData = Ip4Config2SetGateway; - DataItem->Status = EFI_NOT_FOUND; + DataItem = &Instance->DataItem[Ip4Config2DataTypeGateway]; + DataItem->SetData = Ip4Config2SetGateway; + DataItem->Status = EFI_NOT_FOUND; - DataItem = &Instance->DataItem[Ip4Config2DataTypeDnsServer]; - DataItem->SetData = Ip4Config2SetDnsServer; - DataItem->Status = EFI_NOT_FOUND; + DataItem = &Instance->DataItem[Ip4Config2DataTypeDnsServer]; + DataItem->SetData = Ip4Config2SetDnsServer; + DataItem->Status = EFI_NOT_FOUND; - Instance->Configured = TRUE; + Instance->Configured = TRUE; // // Try to read the config data from NV variable. @@ -2060,7 +2039,6 @@ Ip4Config2InitInstance ( return Ip4Config2FormInit (Instance); } - /** Release an IP4_CONFIG2_INSTANCE. @@ -2072,19 +2050,18 @@ Ip4Config2CleanInstance ( IN OUT IP4_CONFIG2_INSTANCE *Instance ) { - UINTN Index; - IP4_CONFIG2_DATA_ITEM *DataItem; + UINTN Index; + IP4_CONFIG2_DATA_ITEM *DataItem; if (Instance->DeclineAddress != NULL) { FreePool (Instance->DeclineAddress); } if (!Instance->Configured) { - return ; + return; } if (Instance->Dhcp4Handle != NULL) { - Ip4Config2DestroyDhcp4 (Instance); } @@ -2097,13 +2074,13 @@ Ip4Config2CleanInstance ( } for (Index = 0; Index < Ip4Config2DataTypeMaximum; Index++) { - DataItem = &Instance->DataItem[Index]; if (!DATA_ATTRIB_SET (DataItem->Attribute, DATA_ATTRIB_SIZE_FIXED)) { if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NULL; DataItem->DataSize = 0; } @@ -2126,12 +2103,12 @@ Ip4Config2CleanInstance ( VOID EFIAPI Ip4AutoReconfigCallBackDpc ( - IN VOID *Context + IN VOID *Context ) { - IP4_SERVICE *IpSb; + IP4_SERVICE *IpSb; - IpSb = (IP4_SERVICE *) Context; + IpSb = (IP4_SERVICE *)Context; NET_CHECK_SIGNATURE (IpSb, IP4_SERVICE_SIGNATURE); if (IpSb->State > IP4_SERVICE_UNSTARTED) { @@ -2142,10 +2119,9 @@ Ip4AutoReconfigCallBackDpc ( Ip4StartAutoConfig (&IpSb->Ip4Config2Instance); - return ; + return; } - /** Request Ip4AutoReconfigCallBackDpc as a DPC at TPL_CALLBACK. @@ -2156,8 +2132,8 @@ Ip4AutoReconfigCallBackDpc ( VOID EFIAPI Ip4AutoReconfigCallBack ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -2165,4 +2141,3 @@ Ip4AutoReconfigCallBack ( // QueueDpc (TPL_CALLBACK, Ip4AutoReconfigCallBackDpc, Context); } - diff --git a/NetworkPkg/Ip4Dxe/Ip4Config2Impl.h b/NetworkPkg/Ip4Dxe/Ip4Config2Impl.h index 0e4639e77c..f8de08b8c9 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Config2Impl.h +++ b/NetworkPkg/Ip4Dxe/Ip4Config2Impl.h @@ -14,14 +14,14 @@ #define IP4_CONFIG2_INSTANCE_SIGNATURE SIGNATURE_32 ('I', 'P', 'C', '2') #define IP4_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'F', 'C', 'I') -#define IP4_CONFIG2_VARIABLE_ATTRIBUTE (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS) +#define IP4_CONFIG2_VARIABLE_ATTRIBUTE (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS) -#define DATA_ATTRIB_SIZE_FIXED 0x1 -#define DATA_ATTRIB_VOLATILE 0x2 +#define DATA_ATTRIB_SIZE_FIXED 0x1 +#define DATA_ATTRIB_VOLATILE 0x2 -#define DATA_ATTRIB_SET(Attrib, Bits) (BOOLEAN)((Attrib) & (Bits)) -#define SET_DATA_ATTRIB(Attrib, Bits) ((Attrib) |= (Bits)) -#define REMOVE_DATA_ATTRIB(Attrib, Bits) ((Attrib) &= (~Bits)) +#define DATA_ATTRIB_SET(Attrib, Bits) (BOOLEAN)((Attrib) & (Bits)) +#define SET_DATA_ATTRIB(Attrib, Bits) ((Attrib) |= (Bits)) +#define REMOVE_DATA_ATTRIB(Attrib, Bits) ((Attrib) &= (~Bits)) typedef struct _IP4_CONFIG2_INSTANCE IP4_CONFIG2_INSTANCE; @@ -69,9 +69,9 @@ typedef struct _IP4_CONFIG2_INSTANCE IP4_CONFIG2_INSTANCE; typedef EFI_STATUS (*IP4_CONFIG2_SET_DATA) ( - IN IP4_CONFIG2_INSTANCE *Instance, - IN UINTN DataSize, - IN VOID *Data + IN IP4_CONFIG2_INSTANCE *Instance, + IN UINTN DataSize, + IN VOID *Data ); /** @@ -93,34 +93,34 @@ EFI_STATUS typedef EFI_STATUS (*IP4_CONFIG2_GET_DATA) ( - IN IP4_CONFIG2_INSTANCE *Instance, - IN OUT UINTN *DataSize, - IN VOID *Data OPTIONAL + IN IP4_CONFIG2_INSTANCE *Instance, + IN OUT UINTN *DataSize, + IN VOID *Data OPTIONAL ); typedef union { - VOID *Ptr; - EFI_IP4_CONFIG2_INTERFACE_INFO *IfInfo; - EFI_IP4_CONFIG2_POLICY *Policy; - EFI_IP4_CONFIG2_MANUAL_ADDRESS *ManualAddress; - EFI_IPv4_ADDRESS *Gateway; - EFI_IPv4_ADDRESS *DnsServers; + VOID *Ptr; + EFI_IP4_CONFIG2_INTERFACE_INFO *IfInfo; + EFI_IP4_CONFIG2_POLICY *Policy; + EFI_IP4_CONFIG2_MANUAL_ADDRESS *ManualAddress; + EFI_IPv4_ADDRESS *Gateway; + EFI_IPv4_ADDRESS *DnsServers; } IP4_CONFIG2_DATA; typedef struct { - IP4_CONFIG2_SET_DATA SetData; - IP4_CONFIG2_GET_DATA GetData; - EFI_STATUS Status; - UINT8 Attribute; - NET_MAP EventMap; - IP4_CONFIG2_DATA Data; - UINTN DataSize; + IP4_CONFIG2_SET_DATA SetData; + IP4_CONFIG2_GET_DATA GetData; + EFI_STATUS Status; + UINT8 Attribute; + NET_MAP EventMap; + IP4_CONFIG2_DATA Data; + UINTN DataSize; } IP4_CONFIG2_DATA_ITEM; typedef struct { - UINT16 Offset; - UINT32 DataSize; - EFI_IP4_CONFIG2_DATA_TYPE DataType; + UINT16 Offset; + UINT32 DataSize; + EFI_IP4_CONFIG2_DATA_TYPE DataType; } IP4_CONFIG2_DATA_RECORD; #pragma pack(1) @@ -137,57 +137,57 @@ typedef struct { // EFI_IPv4_ADDRESS DnsServers[]; // typedef struct { - UINT16 Checksum; - UINT16 DataRecordCount; - IP4_CONFIG2_DATA_RECORD DataRecord[1]; + UINT16 Checksum; + UINT16 DataRecordCount; + IP4_CONFIG2_DATA_RECORD DataRecord[1]; } IP4_CONFIG2_VARIABLE; #pragma pack() typedef struct { - EFI_IP4_CONFIG2_POLICY Policy; ///< manual or automatic - EFI_IP4_CONFIG2_MANUAL_ADDRESS *ManualAddress; ///< IP addresses - UINT32 ManualAddressCount; ///< IP addresses count - EFI_IPv4_ADDRESS *GatewayAddress; ///< Gateway address - UINT32 GatewayAddressCount; ///< Gateway address count - EFI_IPv4_ADDRESS *DnsAddress; ///< DNS server address - UINT32 DnsAddressCount; ///< DNS server address count + EFI_IP4_CONFIG2_POLICY Policy; ///< manual or automatic + EFI_IP4_CONFIG2_MANUAL_ADDRESS *ManualAddress; ///< IP addresses + UINT32 ManualAddressCount; ///< IP addresses count + EFI_IPv4_ADDRESS *GatewayAddress; ///< Gateway address + UINT32 GatewayAddressCount; ///< Gateway address count + EFI_IPv4_ADDRESS *DnsAddress; ///< DNS server address + UINT32 DnsAddressCount; ///< DNS server address count } IP4_CONFIG2_NVDATA; typedef struct _IP4_FORM_CALLBACK_INFO { - UINT32 Signature; - EFI_HANDLE ChildHandle; - EFI_HII_CONFIG_ACCESS_PROTOCOL HiiConfigAccessProtocol; - EFI_DEVICE_PATH_PROTOCOL *HiiVendorDevicePath; - EFI_HII_HANDLE RegisteredHandle; + UINT32 Signature; + EFI_HANDLE ChildHandle; + EFI_HII_CONFIG_ACCESS_PROTOCOL HiiConfigAccessProtocol; + EFI_DEVICE_PATH_PROTOCOL *HiiVendorDevicePath; + EFI_HII_HANDLE RegisteredHandle; } IP4_FORM_CALLBACK_INFO; struct _IP4_CONFIG2_INSTANCE { - UINT32 Signature; - BOOLEAN Configured; - LIST_ENTRY Link; - UINT16 IfIndex; - - EFI_IP4_CONFIG2_PROTOCOL Ip4Config2; - - EFI_IP4_CONFIG2_INTERFACE_INFO InterfaceInfo; - EFI_IP4_CONFIG2_POLICY Policy; - IP4_CONFIG2_DATA_ITEM DataItem[Ip4Config2DataTypeMaximum]; - - EFI_EVENT Dhcp4SbNotifyEvent; - VOID *Registration; - EFI_HANDLE Dhcp4Handle; - EFI_DHCP4_PROTOCOL *Dhcp4; - BOOLEAN DhcpSuccess; - BOOLEAN OtherInfoOnly; - EFI_EVENT Dhcp4Event; - UINT32 FailedIaAddressCount; - EFI_IPv4_ADDRESS *DeclineAddress; - UINT32 DeclineAddressCount; - - IP4_FORM_CALLBACK_INFO CallbackInfo; - - IP4_CONFIG2_NVDATA Ip4NvData; + UINT32 Signature; + BOOLEAN Configured; + LIST_ENTRY Link; + UINT16 IfIndex; + + EFI_IP4_CONFIG2_PROTOCOL Ip4Config2; + + EFI_IP4_CONFIG2_INTERFACE_INFO InterfaceInfo; + EFI_IP4_CONFIG2_POLICY Policy; + IP4_CONFIG2_DATA_ITEM DataItem[Ip4Config2DataTypeMaximum]; + + EFI_EVENT Dhcp4SbNotifyEvent; + VOID *Registration; + EFI_HANDLE Dhcp4Handle; + EFI_DHCP4_PROTOCOL *Dhcp4; + BOOLEAN DhcpSuccess; + BOOLEAN OtherInfoOnly; + EFI_EVENT Dhcp4Event; + UINT32 FailedIaAddressCount; + EFI_IPv4_ADDRESS *DeclineAddress; + UINT32 DeclineAddressCount; + + IP4_FORM_CALLBACK_INFO CallbackInfo; + + IP4_CONFIG2_NVDATA Ip4NvData; }; // @@ -196,9 +196,9 @@ struct _IP4_CONFIG2_INSTANCE { // #pragma pack(1) typedef struct { - EFI_DHCP4_PACKET_OPTION Head; - UINT8 Route; - UINT8 Dns; + EFI_DHCP4_PACKET_OPTION Head; + UINT8 Route; + UINT8 Dns; } IP4_CONFIG2_DHCP4_OPTION; #pragma pack() @@ -218,8 +218,8 @@ typedef struct { **/ EFI_STATUS Ip4Config2ReadConfigData ( - IN CHAR16 *VarName, - IN OUT IP4_CONFIG2_INSTANCE *Instance + IN CHAR16 *VarName, + IN OUT IP4_CONFIG2_INSTANCE *Instance ); /** @@ -235,7 +235,7 @@ Ip4Config2ReadConfigData ( **/ EFI_STATUS Ip4StartAutoConfig ( - IN IP4_CONFIG2_INSTANCE *Instance + IN IP4_CONFIG2_INSTANCE *Instance ); /** @@ -273,8 +273,8 @@ Ip4Config2CleanInstance ( VOID EFIAPI Ip4AutoReconfigCallBack ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** diff --git a/NetworkPkg/Ip4Dxe/Ip4Config2Nv.c b/NetworkPkg/Ip4Dxe/Ip4Config2Nv.c index 63014ca319..e0b6a4d4a9 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Config2Nv.c +++ b/NetworkPkg/Ip4Dxe/Ip4Config2Nv.c @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Ip4Impl.h" -CHAR16 mIp4Config2StorageName[] = L"IP4_CONFIG2_IFR_NVDATA"; +CHAR16 mIp4Config2StorageName[] = L"IP4_CONFIG2_IFR_NVDATA"; /** Calculate the prefix length of the IPv4 subnet mask. @@ -48,7 +48,7 @@ GetSubnetMaskPrefixLength ( Len++; } - return (UINT8) (32 - Len); + return (UINT8)(32 - Len); } /** @@ -67,13 +67,12 @@ Ip4Config2StrToIp ( OUT EFI_IPv4_ADDRESS *Ip ) { - UINTN Index; - UINTN Number; + UINTN Index; + UINTN Number; Index = 0; while (*Str != L'\0') { - if (Index > 3) { return EFI_INVALID_PARAMETER; } @@ -88,7 +87,7 @@ Ip4Config2StrToIp ( return EFI_INVALID_PARAMETER; } - Ip->Addr[Index] = (UINT8) Number; + Ip->Addr[Index] = (UINT8)Number; if ((*Str != L'\0') && (*Str != L'.')) { // @@ -134,12 +133,12 @@ Ip4Config2StrToIpList ( OUT UINTN *IpCount ) { - UINTN BeginIndex; - UINTN EndIndex; - UINTN Index; - UINTN IpIndex; - CHAR16 *StrTemp; - BOOLEAN SpaceTag; + UINTN BeginIndex; + UINTN EndIndex; + UINTN Index; + UINTN IpIndex; + CHAR16 *StrTemp; + BOOLEAN SpaceTag; BeginIndex = 0; EndIndex = BeginIndex; @@ -178,7 +177,7 @@ Ip4Config2StrToIpList ( // // Allocate buffer for IpList. // - *PtrIpList = AllocateZeroPool(*IpCount * sizeof(EFI_IPv4_ADDRESS)); + *PtrIpList = AllocateZeroPool (*IpCount * sizeof (EFI_IPv4_ADDRESS)); if (*PtrIpList == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -189,30 +188,30 @@ Ip4Config2StrToIpList ( Index = 0; while (*(Str + Index) != L'\0') { if (*(Str + Index) == L' ') { - if(!SpaceTag) { - StrTemp = AllocateZeroPool((EndIndex - BeginIndex + 1) * sizeof(CHAR16)); + if (!SpaceTag) { + StrTemp = AllocateZeroPool ((EndIndex - BeginIndex + 1) * sizeof (CHAR16)); if (StrTemp == NULL) { - FreePool(*PtrIpList); + FreePool (*PtrIpList); *PtrIpList = NULL; - *IpCount = 0; + *IpCount = 0; return EFI_OUT_OF_RESOURCES; } - CopyMem (StrTemp, Str + BeginIndex, (EndIndex - BeginIndex) * sizeof(CHAR16)); + CopyMem (StrTemp, Str + BeginIndex, (EndIndex - BeginIndex) * sizeof (CHAR16)); *(StrTemp + (EndIndex - BeginIndex)) = L'\0'; if (Ip4Config2StrToIp (StrTemp, &((*PtrIpList)[IpIndex])) != EFI_SUCCESS) { - FreePool(StrTemp); - FreePool(*PtrIpList); + FreePool (StrTemp); + FreePool (*PtrIpList); *PtrIpList = NULL; - *IpCount = 0; + *IpCount = 0; return EFI_INVALID_PARAMETER; } BeginIndex = EndIndex; IpIndex++; - FreePool(StrTemp); + FreePool (StrTemp); } BeginIndex++; @@ -227,26 +226,26 @@ Ip4Config2StrToIpList ( if (*(Str + Index) == L'\0') { if (!SpaceTag) { - StrTemp = AllocateZeroPool((EndIndex - BeginIndex + 1) * sizeof(CHAR16)); + StrTemp = AllocateZeroPool ((EndIndex - BeginIndex + 1) * sizeof (CHAR16)); if (StrTemp == NULL) { - FreePool(*PtrIpList); + FreePool (*PtrIpList); *PtrIpList = NULL; - *IpCount = 0; + *IpCount = 0; return EFI_OUT_OF_RESOURCES; } - CopyMem (StrTemp, Str + BeginIndex, (EndIndex - BeginIndex) * sizeof(CHAR16)); + CopyMem (StrTemp, Str + BeginIndex, (EndIndex - BeginIndex) * sizeof (CHAR16)); *(StrTemp + (EndIndex - BeginIndex)) = L'\0'; if (Ip4Config2StrToIp (StrTemp, &((*PtrIpList)[IpIndex])) != EFI_SUCCESS) { - FreePool(StrTemp); - FreePool(*PtrIpList); + FreePool (StrTemp); + FreePool (*PtrIpList); *PtrIpList = NULL; - *IpCount = 0; + *IpCount = 0; return EFI_INVALID_PARAMETER; } - FreePool(StrTemp); + FreePool (StrTemp); } } } @@ -278,7 +277,6 @@ Ip4Config2IpToStr ( ); } - /** Convert the IPv4 address list into string consists of several decimal dotted IPv4 addresses separated by space. @@ -299,11 +297,11 @@ Ip4Config2IpListToStr ( OUT CHAR16 *Str ) { - UINTN Index; - UINTN TemIndex; - UINTN StrIndex; - CHAR16 *TempStr; - EFI_IPv4_ADDRESS *TempIp; + UINTN Index; + UINTN TemIndex; + UINTN StrIndex; + CHAR16 *TempStr; + EFI_IPv4_ADDRESS *TempIp; Index = 0; TemIndex = 0; @@ -311,10 +309,10 @@ Ip4Config2IpListToStr ( TempStr = NULL; TempIp = NULL; - for (Index = 0; Index < IpCount; Index ++) { + for (Index = 0; Index < IpCount; Index++) { TempIp = Ip + Index; if (TempStr == NULL) { - TempStr = AllocateZeroPool(2 * IP4_STR_MAX_SIZE); + TempStr = AllocateZeroPool (2 * IP4_STR_MAX_SIZE); if (TempStr == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -330,13 +328,14 @@ Ip4Config2IpListToStr ( TempIp->Addr[3] ); - for (TemIndex = 0; TemIndex < IP4_STR_MAX_SIZE; TemIndex ++) { + for (TemIndex = 0; TemIndex < IP4_STR_MAX_SIZE; TemIndex++) { if (*(TempStr + TemIndex) == L'\0') { if (Index == IpCount - 1) { Str[StrIndex++] = L'\0'; } else { Str[StrIndex++] = L' '; } + break; } else { Str[StrIndex++] = *(TempStr + TemIndex); @@ -345,7 +344,7 @@ Ip4Config2IpListToStr ( } if (TempStr != NULL) { - FreePool(TempStr); + FreePool (TempStr); } return EFI_SUCCESS; @@ -361,11 +360,11 @@ Ip4Config2IpListToStr ( VOID EFIAPI Ip4Config2ManualAddressNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - *((BOOLEAN *) Context) = TRUE; + *((BOOLEAN *)Context) = TRUE; } /** @@ -382,21 +381,21 @@ Ip4Config2ManualAddressNotify ( **/ EFI_STATUS Ip4Config2ConvertConfigNvDataToIfrNvData ( - IN IP4_CONFIG2_INSTANCE *Instance, - IN OUT IP4_CONFIG2_IFR_NVDATA *IfrNvData + IN IP4_CONFIG2_INSTANCE *Instance, + IN OUT IP4_CONFIG2_IFR_NVDATA *IfrNvData ) { - IP4_SERVICE *IpSb; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; - EFI_IP4_CONFIG2_INTERFACE_INFO *Ip4Info; - EFI_IP4_CONFIG2_POLICY Policy; - UINTN DataSize; - UINTN GatewaySize; - EFI_IPv4_ADDRESS GatewayAddress; - EFI_STATUS Status; - UINTN DnsSize; - UINTN DnsCount; - EFI_IPv4_ADDRESS *DnsAddress; + IP4_SERVICE *IpSb; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + EFI_IP4_CONFIG2_INTERFACE_INFO *Ip4Info; + EFI_IP4_CONFIG2_POLICY Policy; + UINTN DataSize; + UINTN GatewaySize; + EFI_IPv4_ADDRESS GatewayAddress; + EFI_STATUS Status; + UINTN DnsSize; + UINTN DnsCount; + EFI_IPv4_ADDRESS *DnsAddress; Status = EFI_SUCCESS; Ip4Config2 = &Instance->Ip4Config2; @@ -443,13 +442,13 @@ Ip4Config2ConvertConfigNvDataToIfrNvData ( // // Get the interface info. // - DataSize = 0; - Status = Ip4Config2->GetData ( - Ip4Config2, - Ip4Config2DataTypeInterfaceInfo, - &DataSize, - NULL - ); + DataSize = 0; + Status = Ip4Config2->GetData ( + Ip4Config2, + Ip4Config2DataTypeInterfaceInfo, + &DataSize, + NULL + ); if (Status != EFI_BUFFER_TOO_SMALL) { return Status; } @@ -487,20 +486,20 @@ Ip4Config2ConvertConfigNvDataToIfrNvData ( // Get the Dns info. // DnsSize = 0; - Status = Ip4Config2->GetData ( - Ip4Config2, - Ip4Config2DataTypeDnsServer, - &DnsSize, - NULL - ); + Status = Ip4Config2->GetData ( + Ip4Config2, + Ip4Config2DataTypeDnsServer, + &DnsSize, + NULL + ); if ((Status != EFI_BUFFER_TOO_SMALL) && (Status != EFI_NOT_FOUND)) { goto Exit; } - DnsCount = (UINT32) (DnsSize / sizeof (EFI_IPv4_ADDRESS)); + DnsCount = (UINT32)(DnsSize / sizeof (EFI_IPv4_ADDRESS)); if (DnsSize > 0) { - DnsAddress = AllocateZeroPool(DnsSize); + DnsAddress = AllocateZeroPool (DnsSize); if (DnsAddress == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; @@ -525,11 +524,11 @@ Ip4Config2ConvertConfigNvDataToIfrNvData ( Exit: if (DnsAddress != NULL) { - FreePool(DnsAddress); + FreePool (DnsAddress); } if (Ip4Info != NULL) { - FreePool(Ip4Info); + FreePool (Ip4Info); } return Status; @@ -550,41 +549,39 @@ Exit: **/ EFI_STATUS Ip4Config2ConvertIfrNvDataToConfigNvData ( - IN IP4_CONFIG2_IFR_NVDATA *IfrFormNvData, - IN OUT IP4_CONFIG2_INSTANCE *Instance + IN IP4_CONFIG2_IFR_NVDATA *IfrFormNvData, + IN OUT IP4_CONFIG2_INSTANCE *Instance ) { - EFI_STATUS Status; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Cfg2; - IP4_CONFIG2_NVDATA *Ip4NvData; - - EFI_IP_ADDRESS StationAddress; - EFI_IP_ADDRESS SubnetMask; - EFI_IP_ADDRESS Gateway; - IP4_ADDR Ip; - EFI_IPv4_ADDRESS *DnsAddress; - UINTN DnsCount; - UINTN Index; - - EFI_EVENT TimeoutEvent; - EFI_EVENT SetAddressEvent; - BOOLEAN IsAddressOk; - UINTN DataSize; - EFI_INPUT_KEY Key; - - Status = EFI_SUCCESS; - Ip4Cfg2 = &Instance->Ip4Config2; - Ip4NvData = &Instance->Ip4NvData; - - DnsCount = 0; - DnsAddress = NULL; + EFI_STATUS Status; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Cfg2; + IP4_CONFIG2_NVDATA *Ip4NvData; + + EFI_IP_ADDRESS StationAddress; + EFI_IP_ADDRESS SubnetMask; + EFI_IP_ADDRESS Gateway; + IP4_ADDR Ip; + EFI_IPv4_ADDRESS *DnsAddress; + UINTN DnsCount; + UINTN Index; + + EFI_EVENT TimeoutEvent; + EFI_EVENT SetAddressEvent; + BOOLEAN IsAddressOk; + UINTN DataSize; + EFI_INPUT_KEY Key; + + Status = EFI_SUCCESS; + Ip4Cfg2 = &Instance->Ip4Config2; + Ip4NvData = &Instance->Ip4NvData; + + DnsCount = 0; + DnsAddress = NULL; TimeoutEvent = NULL; SetAddressEvent = NULL; - - - if (Instance == NULL || IfrFormNvData == NULL) { + if ((Instance == NULL) || (IfrFormNvData == NULL)) { return EFI_INVALID_PARAMETER; } @@ -601,7 +598,7 @@ Ip4Config2ConvertIfrNvDataToConfigNvData ( sizeof (EFI_IP4_CONFIG2_POLICY), &Ip4NvData->Policy ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } } else { @@ -618,26 +615,28 @@ Ip4Config2ConvertIfrNvDataToConfigNvData ( Status = Ip4Config2StrToIp (IfrFormNvData->StationAddress, &StationAddress.v4); if (EFI_ERROR (Status) || - (SubnetMask.Addr[0] != 0 && !NetIp4IsUnicast (NTOHL (StationAddress.Addr[0]), NTOHL (SubnetMask.Addr[0]))) || - !Ip4StationAddressValid (NTOHL (StationAddress.Addr[0]), NTOHL (SubnetMask.Addr[0]))) { + ((SubnetMask.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (StationAddress.Addr[0]), NTOHL (SubnetMask.Addr[0]))) || + !Ip4StationAddressValid (NTOHL (StationAddress.Addr[0]), NTOHL (SubnetMask.Addr[0]))) + { CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL); return EFI_INVALID_PARAMETER; } Status = Ip4Config2StrToIp (IfrFormNvData->GatewayAddress, &Gateway.v4); if (EFI_ERROR (Status) || - (Gateway.Addr[0] != 0 && SubnetMask.Addr[0] != 0 && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), NTOHL (SubnetMask.Addr[0])))) { + ((Gateway.Addr[0] != 0) && (SubnetMask.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), NTOHL (SubnetMask.Addr[0])))) + { CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL); return EFI_INVALID_PARAMETER; } Status = Ip4Config2StrToIpList (IfrFormNvData->DnsAddress, &DnsAddress, &DnsCount); - if (!EFI_ERROR (Status) && DnsCount > 0) { - for (Index = 0; Index < DnsCount; Index ++) { + if (!EFI_ERROR (Status) && (DnsCount > 0)) { + for (Index = 0; Index < DnsCount; Index++) { CopyMem (&Ip, &DnsAddress[Index], sizeof (IP4_ADDR)); if (IP4_IS_UNSPECIFIED (NTOHL (Ip)) || IP4_IS_LOCAL_BROADCAST (NTOHL (Ip))) { CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL); - FreePool(DnsAddress); + FreePool (DnsAddress); return EFI_INVALID_PARAMETER; } } @@ -648,37 +647,43 @@ Ip4Config2ConvertIfrNvDataToConfigNvData ( } if (Ip4NvData->ManualAddress != NULL) { - FreePool(Ip4NvData->ManualAddress); + FreePool (Ip4NvData->ManualAddress); } + Ip4NvData->ManualAddressCount = 1; - Ip4NvData->ManualAddress = AllocateZeroPool(sizeof(EFI_IP4_CONFIG2_MANUAL_ADDRESS)); + Ip4NvData->ManualAddress = AllocateZeroPool (sizeof (EFI_IP4_CONFIG2_MANUAL_ADDRESS)); if (Ip4NvData->ManualAddress == NULL) { if (DnsAddress != NULL) { - FreePool(DnsAddress); + FreePool (DnsAddress); } return EFI_OUT_OF_RESOURCES; } - CopyMem(&Ip4NvData->ManualAddress->Address, &StationAddress.v4, sizeof(EFI_IPv4_ADDRESS)); - CopyMem(&Ip4NvData->ManualAddress->SubnetMask, &SubnetMask.v4, sizeof(EFI_IPv4_ADDRESS)); + + CopyMem (&Ip4NvData->ManualAddress->Address, &StationAddress.v4, sizeof (EFI_IPv4_ADDRESS)); + CopyMem (&Ip4NvData->ManualAddress->SubnetMask, &SubnetMask.v4, sizeof (EFI_IPv4_ADDRESS)); if (Ip4NvData->GatewayAddress != NULL) { - FreePool(Ip4NvData->GatewayAddress); + FreePool (Ip4NvData->GatewayAddress); } + Ip4NvData->GatewayAddressCount = 1; - Ip4NvData->GatewayAddress = AllocateZeroPool(sizeof(EFI_IPv4_ADDRESS)); + Ip4NvData->GatewayAddress = AllocateZeroPool (sizeof (EFI_IPv4_ADDRESS)); if (Ip4NvData->GatewayAddress == NULL) { if (DnsAddress != NULL) { - FreePool(DnsAddress); + FreePool (DnsAddress); } + return EFI_OUT_OF_RESOURCES; } - CopyMem(Ip4NvData->GatewayAddress, &Gateway.v4, sizeof(EFI_IPv4_ADDRESS)); + + CopyMem (Ip4NvData->GatewayAddress, &Gateway.v4, sizeof (EFI_IPv4_ADDRESS)); if (Ip4NvData->DnsAddress != NULL) { - FreePool(Ip4NvData->DnsAddress); + FreePool (Ip4NvData->DnsAddress); } - Ip4NvData->DnsAddressCount = (UINT32) DnsCount; + + Ip4NvData->DnsAddressCount = (UINT32)DnsCount; Ip4NvData->DnsAddress = DnsAddress; // @@ -690,7 +695,7 @@ Ip4Config2ConvertIfrNvDataToConfigNvData ( sizeof (EFI_IP4_CONFIG2_POLICY), &Ip4NvData->Policy ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } @@ -734,12 +739,12 @@ Ip4Config2ConvertIfrNvDataToConfigNvData ( // Set ManualAddress. // DataSize = Ip4NvData->ManualAddressCount * sizeof (EFI_IP4_CONFIG2_MANUAL_ADDRESS); - Status = Ip4Cfg2->SetData ( - Ip4Cfg2, - Ip4Config2DataTypeManualAddress, - DataSize, - (VOID *) Ip4NvData->ManualAddress - ); + Status = Ip4Cfg2->SetData ( + Ip4Cfg2, + Ip4Config2DataTypeManualAddress, + DataSize, + (VOID *)Ip4NvData->ManualAddress + ); if (Status == EFI_NOT_READY) { gBS->SetTimer (TimeoutEvent, TimerRelative, 50000000); @@ -764,12 +769,12 @@ Ip4Config2ConvertIfrNvDataToConfigNvData ( // Set gateway. // DataSize = Ip4NvData->GatewayAddressCount * sizeof (EFI_IPv4_ADDRESS); - Status = Ip4Cfg2->SetData ( - Ip4Cfg2, - Ip4Config2DataTypeGateway, - DataSize, - Ip4NvData->GatewayAddress - ); + Status = Ip4Cfg2->SetData ( + Ip4Cfg2, + Ip4Config2DataTypeGateway, + DataSize, + Ip4NvData->GatewayAddress + ); if (EFI_ERROR (Status)) { goto Exit; } @@ -777,14 +782,14 @@ Ip4Config2ConvertIfrNvDataToConfigNvData ( // // Set DNS addresses. // - if (Ip4NvData->DnsAddressCount > 0 && Ip4NvData->DnsAddress != NULL) { + if ((Ip4NvData->DnsAddressCount > 0) && (Ip4NvData->DnsAddress != NULL)) { DataSize = Ip4NvData->DnsAddressCount * sizeof (EFI_IPv4_ADDRESS); - Status = Ip4Cfg2->SetData ( - Ip4Cfg2, - Ip4Config2DataTypeDnsServer, - DataSize, - Ip4NvData->DnsAddress - ); + Status = Ip4Cfg2->SetData ( + Ip4Cfg2, + Ip4Config2DataTypeDnsServer, + DataSize, + Ip4NvData->DnsAddress + ); if (EFI_ERROR (Status)) { goto Exit; @@ -863,24 +868,24 @@ Exit: EFI_STATUS EFIAPI Ip4FormExtractConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Request, - OUT EFI_STRING *Progress, - OUT EFI_STRING *Results + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results ) { - EFI_STATUS Status; - IP4_CONFIG2_INSTANCE *Ip4Config2Instance; - IP4_FORM_CALLBACK_INFO *Private; - IP4_CONFIG2_IFR_NVDATA *IfrFormNvData; - EFI_STRING ConfigRequestHdr; - EFI_STRING ConfigRequest; - BOOLEAN AllocatedRequest; - EFI_STRING FormResult; - UINTN Size; - UINTN BufferSize; - - if (Progress == NULL || Results == NULL) { + EFI_STATUS Status; + IP4_CONFIG2_INSTANCE *Ip4Config2Instance; + IP4_FORM_CALLBACK_INFO *Private; + IP4_CONFIG2_IFR_NVDATA *IfrFormNvData; + EFI_STRING ConfigRequestHdr; + EFI_STRING ConfigRequest; + BOOLEAN AllocatedRequest; + EFI_STRING FormResult; + UINTN Size; + UINTN BufferSize; + + if ((Progress == NULL) || (Results == NULL)) { return EFI_INVALID_PARAMETER; } @@ -891,8 +896,8 @@ Ip4FormExtractConfig ( Size = 0; AllocatedRequest = FALSE; ConfigRequest = Request; - Private = IP4_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS(This); - Ip4Config2Instance = IP4_CONFIG2_INSTANCE_FROM_FORM_CALLBACK(Private); + Private = IP4_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS (This); + Ip4Config2Instance = IP4_CONFIG2_INSTANCE_FROM_FORM_CALLBACK (Private); BufferSize = sizeof (IP4_CONFIG2_IFR_NVDATA); *Progress = Request; @@ -914,12 +919,13 @@ Ip4FormExtractConfig ( // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator // ConfigRequestHdr = HiiConstructConfigHdr (&gIp4Config2NvDataGuid, mIp4Config2StorageName, Private->ChildHandle); - Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); - ConfigRequest = AllocateZeroPool (Size); + Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); + ConfigRequest = AllocateZeroPool (Size); if (ConfigRequest == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Failure; } + AllocatedRequest = TRUE; UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize); @@ -932,7 +938,7 @@ Ip4FormExtractConfig ( Status = gHiiConfigRouting->BlockToConfig ( gHiiConfigRouting, ConfigRequest, - (UINT8 *) IfrFormNvData, + (UINT8 *)IfrFormNvData, BufferSize, &FormResult, Progress @@ -953,7 +959,7 @@ Ip4FormExtractConfig ( } } - if (Request == NULL || HiiIsConfigHdrMatch (Request, &gIp4Config2NvDataGuid, mIp4Config2StorageName)) { + if ((Request == NULL) || HiiIsConfigHdrMatch (Request, &gIp4Config2NvDataGuid, mIp4Config2StorageName)) { *Results = FormResult; } else { return EFI_NOT_FOUND; @@ -1008,28 +1014,28 @@ Failure: EFI_STATUS EFIAPI Ip4FormRouteConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Configuration, - OUT EFI_STRING *Progress + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress ) { - EFI_STATUS Status; - UINTN BufferSize; - IP4_CONFIG2_IFR_NVDATA *IfrFormNvData; - IP4_CONFIG2_INSTANCE *Ip4Config2Instance; - IP4_FORM_CALLBACK_INFO *Private; + EFI_STATUS Status; + UINTN BufferSize; + IP4_CONFIG2_IFR_NVDATA *IfrFormNvData; + IP4_CONFIG2_INSTANCE *Ip4Config2Instance; + IP4_FORM_CALLBACK_INFO *Private; Status = EFI_SUCCESS; IfrFormNvData = NULL; - if (Configuration == NULL || Progress == NULL) { + if ((Configuration == NULL) || (Progress == NULL)) { return EFI_INVALID_PARAMETER; } *Progress = Configuration; - Private = IP4_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS(This); - Ip4Config2Instance = IP4_CONFIG2_INSTANCE_FROM_FORM_CALLBACK(Private); + Private = IP4_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS (This); + Ip4Config2Instance = IP4_CONFIG2_INSTANCE_FROM_FORM_CALLBACK (Private); // // Check Routing data in . @@ -1048,7 +1054,7 @@ Ip4FormRouteConfig ( Status = gHiiConfigRouting->ConfigToBlock ( gHiiConfigRouting, Configuration, - (UINT8 *) IfrFormNvData, + (UINT8 *)IfrFormNvData, &BufferSize, Progress ); @@ -1059,7 +1065,7 @@ Ip4FormRouteConfig ( Status = gHiiConfigRouting->ConfigToBlock ( gHiiConfigRouting, Configuration, - (UINT8 *) IfrFormNvData, + (UINT8 *)IfrFormNvData, &BufferSize, Progress ); @@ -1073,7 +1079,6 @@ Ip4FormRouteConfig ( } return Status; - } /** @@ -1106,35 +1111,35 @@ Ip4FormRouteConfig ( EFI_STATUS EFIAPI Ip4FormCallback ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN EFI_BROWSER_ACTION Action, - IN EFI_QUESTION_ID QuestionId, - IN UINT8 Type, - IN EFI_IFR_TYPE_VALUE *Value, - OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest ) { - EFI_STATUS Status; - IP4_CONFIG2_INSTANCE *Instance; - IP4_CONFIG2_IFR_NVDATA *IfrFormNvData; - IP4_FORM_CALLBACK_INFO *Private; - - EFI_IP_ADDRESS StationAddress; - EFI_IP_ADDRESS SubnetMask; - EFI_IP_ADDRESS Gateway; - IP4_ADDR Ip; - EFI_IPv4_ADDRESS *DnsAddress; - UINTN DnsCount; - UINTN Index; - EFI_INPUT_KEY Key; + EFI_STATUS Status; + IP4_CONFIG2_INSTANCE *Instance; + IP4_CONFIG2_IFR_NVDATA *IfrFormNvData; + IP4_FORM_CALLBACK_INFO *Private; + + EFI_IP_ADDRESS StationAddress; + EFI_IP_ADDRESS SubnetMask; + EFI_IP_ADDRESS Gateway; + IP4_ADDR Ip; + EFI_IPv4_ADDRESS *DnsAddress; + UINTN DnsCount; + UINTN Index; + EFI_INPUT_KEY Key; IfrFormNvData = NULL; DnsCount = 0; DnsAddress = NULL; if (Action == EFI_BROWSER_ACTION_CHANGED) { - Private = IP4_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS(This); - Instance = IP4_CONFIG2_INSTANCE_FROM_FORM_CALLBACK(Private); + Private = IP4_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS (This); + Instance = IP4_CONFIG2_INSTANCE_FROM_FORM_CALLBACK (Private); IfrFormNvData = AllocateZeroPool (sizeof (IP4_CONFIG2_IFR_NVDATA)); if (IfrFormNvData == NULL) { @@ -1144,7 +1149,7 @@ Ip4FormCallback ( // // Retrieve uncommitted data from Browser // - if (!HiiGetBrowserData (&gIp4Config2NvDataGuid, mIp4Config2StorageName, sizeof (IP4_CONFIG2_IFR_NVDATA), (UINT8 *) IfrFormNvData)) { + if (!HiiGetBrowserData (&gIp4Config2NvDataGuid, mIp4Config2StorageName, sizeof (IP4_CONFIG2_IFR_NVDATA), (UINT8 *)IfrFormNvData)) { FreePool (IfrFormNvData); return EFI_NOT_FOUND; } @@ -1152,59 +1157,63 @@ Ip4FormCallback ( Status = EFI_SUCCESS; switch (QuestionId) { - case KEY_LOCAL_IP: - Status = Ip4Config2StrToIp (IfrFormNvData->StationAddress, &StationAddress.v4); - if (EFI_ERROR (Status) || IP4_IS_UNSPECIFIED (NTOHL (StationAddress.Addr[0])) || IP4_IS_LOCAL_BROADCAST (NTOHL (StationAddress.Addr[0]))) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL); - Status = EFI_INVALID_PARAMETER; - } - break; + case KEY_LOCAL_IP: + Status = Ip4Config2StrToIp (IfrFormNvData->StationAddress, &StationAddress.v4); + if (EFI_ERROR (Status) || IP4_IS_UNSPECIFIED (NTOHL (StationAddress.Addr[0])) || IP4_IS_LOCAL_BROADCAST (NTOHL (StationAddress.Addr[0]))) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL); + Status = EFI_INVALID_PARAMETER; + } - case KEY_SUBNET_MASK: - Status = Ip4Config2StrToIp (IfrFormNvData->SubnetMask, &SubnetMask.v4); - if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (GetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL); - Status = EFI_INVALID_PARAMETER; - } - break; + break; - case KEY_GATE_WAY: - Status = Ip4Config2StrToIp (IfrFormNvData->GatewayAddress, &Gateway.v4); - if (EFI_ERROR (Status) || IP4_IS_LOCAL_BROADCAST(NTOHL(Gateway.Addr[0]))) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL); - Status = EFI_INVALID_PARAMETER; - } - break; - - case KEY_DNS: - Status = Ip4Config2StrToIpList (IfrFormNvData->DnsAddress, &DnsAddress, &DnsCount); - if (!EFI_ERROR (Status) && DnsCount > 0) { - for (Index = 0; Index < DnsCount; Index ++) { - CopyMem (&Ip, &DnsAddress[Index], sizeof (IP4_ADDR)); - if (IP4_IS_UNSPECIFIED (NTOHL (Ip)) || IP4_IS_LOCAL_BROADCAST (NTOHL (Ip))) { + case KEY_SUBNET_MASK: + Status = Ip4Config2StrToIp (IfrFormNvData->SubnetMask, &SubnetMask.v4); + if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (GetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL); + Status = EFI_INVALID_PARAMETER; + } + + break; + + case KEY_GATE_WAY: + Status = Ip4Config2StrToIp (IfrFormNvData->GatewayAddress, &Gateway.v4); + if (EFI_ERROR (Status) || IP4_IS_LOCAL_BROADCAST (NTOHL (Gateway.Addr[0]))) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL); + Status = EFI_INVALID_PARAMETER; + } + + break; + + case KEY_DNS: + Status = Ip4Config2StrToIpList (IfrFormNvData->DnsAddress, &DnsAddress, &DnsCount); + if (!EFI_ERROR (Status) && (DnsCount > 0)) { + for (Index = 0; Index < DnsCount; Index++) { + CopyMem (&Ip, &DnsAddress[Index], sizeof (IP4_ADDR)); + if (IP4_IS_UNSPECIFIED (NTOHL (Ip)) || IP4_IS_LOCAL_BROADCAST (NTOHL (Ip))) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL); + Status = EFI_INVALID_PARAMETER; + break; + } + } + } else { + if (EFI_ERROR (Status)) { CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL); - Status = EFI_INVALID_PARAMETER; - break; } } - } else { - if (EFI_ERROR (Status)) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL); + + if (DnsAddress != NULL) { + FreePool (DnsAddress); } - } - if(DnsAddress != NULL) { - FreePool(DnsAddress); - } - break; + break; - case KEY_SAVE_CHANGES: - Status = Ip4Config2ConvertIfrNvDataToConfigNvData (IfrFormNvData, Instance); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; - break; + case KEY_SAVE_CHANGES: + Status = Ip4Config2ConvertIfrNvDataToConfigNvData (IfrFormNvData, Instance); + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; + break; - default: - break; + default: + break; } FreePool (IfrFormNvData); @@ -1230,20 +1239,20 @@ Ip4FormCallback ( **/ EFI_STATUS Ip4Config2FormInit ( - IN OUT IP4_CONFIG2_INSTANCE *Instance + IN OUT IP4_CONFIG2_INSTANCE *Instance ) { - EFI_STATUS Status; - IP4_SERVICE *IpSb; - IP4_FORM_CALLBACK_INFO *CallbackInfo; - EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess; - VENDOR_DEVICE_PATH VendorDeviceNode; - EFI_SERVICE_BINDING_PROTOCOL *MnpSb; - CHAR16 *MacString; - CHAR16 MenuString[128]; - CHAR16 PortString[128]; - CHAR16 *OldMenuString; - EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; + EFI_STATUS Status; + IP4_SERVICE *IpSb; + IP4_FORM_CALLBACK_INFO *CallbackInfo; + EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess; + VENDOR_DEVICE_PATH VendorDeviceNode; + EFI_SERVICE_BINDING_PROTOCOL *MnpSb; + CHAR16 *MacString; + CHAR16 MenuString[128]; + CHAR16 PortString[128]; + CHAR16 *OldMenuString; + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance); ASSERT (IpSb != NULL); @@ -1255,7 +1264,7 @@ Ip4Config2FormInit ( Status = gBS->HandleProtocol ( IpSb->Controller, &gEfiDevicePathProtocolGuid, - (VOID **) &ParentDevicePath + (VOID **)&ParentDevicePath ); if (EFI_ERROR (Status)) { return Status; @@ -1275,7 +1284,7 @@ Ip4Config2FormInit ( SetDevicePathNodeLength (&VendorDeviceNode.Header, sizeof (VENDOR_DEVICE_PATH)); CallbackInfo->HiiVendorDevicePath = AppendDevicePathNode ( ParentDevicePath, - (EFI_DEVICE_PATH_PROTOCOL *) &VendorDeviceNode + (EFI_DEVICE_PATH_PROTOCOL *)&VendorDeviceNode ); if (CallbackInfo->HiiVendorDevicePath == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1306,7 +1315,7 @@ Ip4Config2FormInit ( Status = gBS->OpenProtocol ( IpSb->Controller, &gEfiManagedNetworkServiceBindingProtocolGuid, - (VOID **) &MnpSb, + (VOID **)&MnpSb, IpSb->Image, CallbackInfo->ChildHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -1377,12 +1386,12 @@ Error: **/ VOID Ip4Config2FormUnload ( - IN OUT IP4_CONFIG2_INSTANCE *Instance + IN OUT IP4_CONFIG2_INSTANCE *Instance ) { - IP4_SERVICE *IpSb; - IP4_FORM_CALLBACK_INFO *CallbackInfo; - IP4_CONFIG2_NVDATA *Ip4NvData; + IP4_SERVICE *IpSb; + IP4_FORM_CALLBACK_INFO *CallbackInfo; + IP4_CONFIG2_NVDATA *Ip4NvData; IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance); ASSERT (IpSb != NULL); @@ -1426,16 +1435,16 @@ Ip4Config2FormUnload ( Ip4NvData = &Instance->Ip4NvData; - if(Ip4NvData->ManualAddress != NULL) { - FreePool(Ip4NvData->ManualAddress); + if (Ip4NvData->ManualAddress != NULL) { + FreePool (Ip4NvData->ManualAddress); } - if(Ip4NvData->GatewayAddress != NULL) { - FreePool(Ip4NvData->GatewayAddress); + if (Ip4NvData->GatewayAddress != NULL) { + FreePool (Ip4NvData->GatewayAddress); } - if(Ip4NvData->DnsAddress != NULL) { - FreePool(Ip4NvData->DnsAddress); + if (Ip4NvData->DnsAddress != NULL) { + FreePool (Ip4NvData->DnsAddress); } Ip4NvData->ManualAddressCount = 0; diff --git a/NetworkPkg/Ip4Dxe/Ip4Config2Nv.h b/NetworkPkg/Ip4Dxe/Ip4Config2Nv.h index f453e19e9b..0a1e8007a0 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Config2Nv.h +++ b/NetworkPkg/Ip4Dxe/Ip4Config2Nv.h @@ -14,7 +14,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent extern UINT8 Ip4Config2Bin[]; extern UINT8 Ip4DxeStrings[]; -#define NIC_ITEM_CONFIG_SIZE (sizeof (IP4_CONFIG2_INSTANCE) + (sizeof (EFI_IPv4_ADDRESS) * MAX_IP4_CONFIG_DNS)) +#define NIC_ITEM_CONFIG_SIZE (sizeof (IP4_CONFIG2_INSTANCE) + (sizeof (EFI_IPv4_ADDRESS) * MAX_IP4_CONFIG_DNS)) /** Install HII Config Access protocol for network device and allocate resource. @@ -28,7 +28,7 @@ extern UINT8 Ip4DxeStrings[]; **/ EFI_STATUS Ip4Config2FormInit ( - IN OUT IP4_CONFIG2_INSTANCE *Instance + IN OUT IP4_CONFIG2_INSTANCE *Instance ); /** @@ -39,7 +39,7 @@ Ip4Config2FormInit ( **/ VOID Ip4Config2FormUnload ( - IN OUT IP4_CONFIG2_INSTANCE *Instance + IN OUT IP4_CONFIG2_INSTANCE *Instance ); #endif diff --git a/NetworkPkg/Ip4Dxe/Ip4Driver.c b/NetworkPkg/Ip4Dxe/Ip4Driver.c index 7fed659ca1..ec483ff01f 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Driver.c +++ b/NetworkPkg/Ip4Dxe/Ip4Driver.c @@ -10,7 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Ip4Impl.h" -EFI_DRIVER_BINDING_PROTOCOL gIp4DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gIp4DriverBinding = { Ip4DriverBindingSupported, Ip4DriverBindingStart, Ip4DriverBindingStop, @@ -35,13 +35,14 @@ IpSec2InstalledCallback ( IN VOID *Context ) { - EFI_STATUS Status; + EFI_STATUS Status; + // // Test if protocol was even found. // Notification function will be called at least once. // Status = gBS->LocateProtocol (&gEfiIpSec2ProtocolGuid, NULL, (VOID **)&mIpSec); - if (Status == EFI_SUCCESS && mIpSec != NULL) { + if ((Status == EFI_SUCCESS) && (mIpSec != NULL)) { // // Close the event so it does not get called again. // @@ -69,11 +70,11 @@ IpSec2InstalledCallback ( EFI_STATUS EFIAPI Ip4DriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { - VOID *Registration; + VOID *Registration; EfiCreateProtocolNotifyEvent ( &gEfiIpSec2ProtocolGuid, @@ -114,12 +115,12 @@ Ip4DriverEntryPoint ( EFI_STATUS EFIAPI Ip4DriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL * This, + IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; // // Test for the MNP service binding Protocol @@ -167,10 +168,9 @@ Ip4DriverBindingSupported ( **/ EFI_STATUS Ip4CleanService ( - IN IP4_SERVICE *IpSb + IN IP4_SERVICE *IpSb ); - /** Create a new IP4 driver service binding private instance. @@ -187,13 +187,13 @@ Ip4CleanService ( **/ EFI_STATUS Ip4CreateService ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE ImageHandle, - OUT IP4_SERVICE **Service + IN EFI_HANDLE Controller, + IN EFI_HANDLE ImageHandle, + OUT IP4_SERVICE **Service ) { - IP4_SERVICE *IpSb; - EFI_STATUS Status; + IP4_SERVICE *IpSb; + EFI_STATUS Status; ASSERT (Service != NULL); @@ -215,23 +215,23 @@ Ip4CreateService ( IpSb->ServiceBinding.DestroyChild = Ip4ServiceBindingDestroyChild; IpSb->State = IP4_SERVICE_UNSTARTED; - IpSb->NumChildren = 0; + IpSb->NumChildren = 0; InitializeListHead (&IpSb->Children); InitializeListHead (&IpSb->Interfaces); - IpSb->DefaultInterface = NULL; - IpSb->DefaultRouteTable = NULL; + IpSb->DefaultInterface = NULL; + IpSb->DefaultRouteTable = NULL; Ip4InitAssembleTable (&IpSb->Assemble); - IpSb->IgmpCtrl.Igmpv1QuerySeen = 0; + IpSb->IgmpCtrl.Igmpv1QuerySeen = 0; InitializeListHead (&IpSb->IgmpCtrl.Groups); - IpSb->Image = ImageHandle; - IpSb->Controller = Controller; + IpSb->Image = ImageHandle; + IpSb->Controller = Controller; - IpSb->MnpChildHandle = NULL; - IpSb->Mnp = NULL; + IpSb->MnpChildHandle = NULL; + IpSb->Mnp = NULL; IpSb->MnpConfigData.ReceivedQueueTimeoutValue = 0; IpSb->MnpConfigData.TransmitQueueTimeoutValue = 0; @@ -246,7 +246,7 @@ Ip4CreateService ( ZeroMem (&IpSb->SnpMode, sizeof (EFI_SIMPLE_NETWORK_MODE)); - IpSb->Timer = NULL; + IpSb->Timer = NULL; IpSb->ReconfigCheckTimer = NULL; IpSb->ReconfigEvent = NULL; @@ -316,7 +316,7 @@ Ip4CreateService ( Status = gBS->OpenProtocol ( IpSb->MnpChildHandle, &gEfiManagedNetworkProtocolGuid, - (VOID **) &IpSb->Mnp, + (VOID **)&IpSb->Mnp, ImageHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -345,7 +345,7 @@ Ip4CreateService ( } IpSb->MacString = NULL; - Status = NetLibGetMacString (IpSb->Controller, IpSb->Image, &IpSb->MacString); + Status = NetLibGetMacString (IpSb->Controller, IpSb->Image, &IpSb->MacString); if (EFI_ERROR (Status)) { goto ON_ERROR; @@ -375,8 +375,9 @@ Ip4CreateService ( // IpSb->MaxPacketSize -= NET_VLAN_TAG_LEN; } + IpSb->OldMaxPacketSize = IpSb->MaxPacketSize; - *Service = IpSb; + *Service = IpSb; return EFI_SUCCESS; @@ -387,7 +388,6 @@ ON_ERROR: return Status; } - /** Clean up a IP4 service binding instance. It will release all the resource allocated by the instance. The instance may be @@ -403,12 +403,12 @@ ON_ERROR: **/ EFI_STATUS Ip4CleanService ( - IN IP4_SERVICE *IpSb + IN IP4_SERVICE *IpSb ) { - EFI_STATUS Status; + EFI_STATUS Status; - IpSb->State = IP4_SERVICE_DESTROY; + IpSb->State = IP4_SERVICE_DESTROY; if (IpSb->Timer != NULL) { gBS->SetTimer (IpSb->Timer, TimerCancel, 0); @@ -493,8 +493,8 @@ Ip4CleanService ( EFI_STATUS EFIAPI Ip4DestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { IP4_PROTOCOL *IpInstance; @@ -502,14 +502,14 @@ Ip4DestroyChildEntryInHandleBuffer ( UINTN NumberOfChildren; EFI_HANDLE *ChildHandleBuffer; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - IpInstance = NET_LIST_USER_STRUCT_S (Entry, IP4_PROTOCOL, Link, IP4_PROTOCOL_SIGNATURE); - ServiceBinding = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; - NumberOfChildren = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; - ChildHandleBuffer = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; + IpInstance = NET_LIST_USER_STRUCT_S (Entry, IP4_PROTOCOL, Link, IP4_PROTOCOL_SIGNATURE); + ServiceBinding = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; + NumberOfChildren = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; + ChildHandleBuffer = ((IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; if (!NetIsInHandleBuffer (IpInstance->Handle, NumberOfChildren, ChildHandleBuffer)) { return EFI_SUCCESS; @@ -544,11 +544,11 @@ Ip4DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; - IP4_SERVICE *IpSb; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Cfg2; - UINTN Index; - IP4_CONFIG2_DATA_ITEM *DataItem; + EFI_STATUS Status; + IP4_SERVICE *IpSb; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Cfg2; + UINTN Index; + IP4_CONFIG2_DATA_ITEM *DataItem; IpSb = NULL; Ip4Cfg2 = NULL; @@ -578,7 +578,7 @@ Ip4DriverBindingStart ( ASSERT (IpSb != NULL); - Ip4Cfg2 = &IpSb->Ip4Config2Instance.Ip4Config2; + Ip4Cfg2 = &IpSb->Ip4Config2Instance.Ip4Config2; // // Install the Ip4ServiceBinding Protocol onto ControllerHandle @@ -617,11 +617,11 @@ Ip4DriverBindingStart ( DataItem->DataSize, DataItem->Data.Ptr ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { goto UNINSTALL_PROTOCOL; } - if (Index == Ip4Config2DataTypePolicy && (*(DataItem->Data.Policy) == Ip4Config2PolicyDhcp)) { + if ((Index == Ip4Config2DataTypePolicy) && (*(DataItem->Data.Policy) == Ip4Config2PolicyDhcp)) { break; } } @@ -634,7 +634,7 @@ Ip4DriverBindingStart ( // Status = Ip4ReceiveFrame (IpSb->DefaultInterface, NULL, Ip4AccpetFrame, IpSb); - if (EFI_ERROR (Status) && Status != EFI_ALREADY_STARTED) { + if (EFI_ERROR (Status) && (Status != EFI_ALREADY_STARTED)) { goto UNINSTALL_PROTOCOL; } @@ -673,7 +673,6 @@ FREE_SERVICE: return Status; } - /** Stop this driver on ControllerHandle. This service is called by the EFI boot service DisconnectController(). In order to @@ -711,9 +710,9 @@ Ip4DriverBindingStop ( IP4_INTERFACE *IpIf; IP4_ROUTE_TABLE *RouteTable; - BOOLEAN IsDhcp4; + BOOLEAN IsDhcp4; - IsDhcp4 = FALSE; + IsDhcp4 = FALSE; NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiManagedNetworkProtocolGuid); if (NicHandle == NULL) { @@ -731,7 +730,7 @@ Ip4DriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiIp4ServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -747,18 +746,17 @@ Ip4DriverBindingStop ( gBS->CloseEvent (IpSb->Ip4Config2Instance.Dhcp4Event); IpSb->Ip4Config2Instance.Dhcp4Event = NULL; } else if (NumberOfChildren != 0) { - List = &IpSb->Children; + List = &IpSb->Children; Context.ServiceBinding = ServiceBinding; Context.NumberOfChildren = NumberOfChildren; Context.ChildHandleBuffer = ChildHandleBuffer; - Status = NetDestroyLinkList ( - List, - Ip4DestroyChildEntryInHandleBuffer, - &Context, - NULL - ); + Status = NetDestroyLinkList ( + List, + Ip4DestroyChildEntryInHandleBuffer, + &Context, + NULL + ); } else if (IpSb->DefaultInterface->ArpHandle == ControllerHandle) { - // // The ARP protocol for the default interface is being uninstalled and all // its IP child handles should have been destroyed before. So, release the @@ -772,21 +770,21 @@ Ip4DriverBindingStop ( if (IpIf == NULL) { goto ON_ERROR; } + RouteTable = Ip4CreateRouteTable (); if (RouteTable == NULL) { Ip4FreeInterface (IpIf, NULL); - goto ON_ERROR;; + goto ON_ERROR; } - IpSb->DefaultInterface = IpIf; + IpSb->DefaultInterface = IpIf; InsertHeadList (&IpSb->Interfaces, &IpIf->Link); IpSb->DefaultRouteTable = RouteTable; Ip4ReceiveFrame (IpIf, NULL, Ip4AccpetFrame, IpSb); IpSb->State = IP4_SERVICE_UNSTARTED; - } else if (IsListEmpty (&IpSb->Children)) { - State = IpSb->State; + State = IpSb->State; // // OK, clean other resources then uninstall the service binding protocol. // @@ -809,6 +807,7 @@ Ip4DriverBindingStop ( FreeUnicodeStringTable (gIp4ControllerNameTable); gIp4ControllerNameTable = NULL; } + FreePool (IpSb); } @@ -816,7 +815,6 @@ ON_ERROR: return Status; } - /** Creates a child handle and installs a protocol. @@ -843,11 +841,11 @@ Ip4ServiceBindingCreateChild ( IN OUT EFI_HANDLE *ChildHandle ) { - IP4_SERVICE *IpSb; - IP4_PROTOCOL *IpInstance; - EFI_TPL OldTpl; - EFI_STATUS Status; - VOID *Mnp; + IP4_SERVICE *IpSb; + IP4_PROTOCOL *IpInstance; + EFI_TPL OldTpl; + EFI_STATUS Status; + VOID *Mnp; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -884,7 +882,7 @@ Ip4ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( IpSb->MnpChildHandle, &gEfiManagedNetworkProtocolGuid, - (VOID **) &Mnp, + (VOID **)&Mnp, gIp4DriverBinding.DriverBindingHandle, IpInstance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -913,7 +911,6 @@ Ip4ServiceBindingCreateChild ( ON_ERROR: if (EFI_ERROR (Status)) { - Ip4CleanProtocol (IpInstance); FreePool (IpInstance); @@ -922,7 +919,6 @@ ON_ERROR: return Status; } - /** Destroys a child handle with a protocol installed on it. @@ -948,11 +944,11 @@ Ip4ServiceBindingDestroyChild ( IN EFI_HANDLE ChildHandle ) { - EFI_STATUS Status; - IP4_SERVICE *IpSb; - IP4_PROTOCOL *IpInstance; - EFI_IP4_PROTOCOL *Ip4; - EFI_TPL OldTpl; + EFI_STATUS Status; + IP4_SERVICE *IpSb; + IP4_PROTOCOL *IpInstance; + EFI_IP4_PROTOCOL *Ip4; + EFI_TPL OldTpl; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -961,12 +957,12 @@ Ip4ServiceBindingDestroyChild ( // // Retrieve the private context data structures // - IpSb = IP4_SERVICE_FROM_PROTOCOL (This); + IpSb = IP4_SERVICE_FROM_PROTOCOL (This); Status = gBS->OpenProtocol ( ChildHandle, &gEfiIp4ProtocolGuid, - (VOID **) &Ip4, + (VOID **)&Ip4, gIp4DriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1007,7 +1003,7 @@ Ip4ServiceBindingDestroyChild ( ChildHandle ); - if (IpInstance->Interface != NULL && IpInstance->Interface->Arp != NULL) { + if ((IpInstance->Interface != NULL) && (IpInstance->Interface->Arp != NULL)) { gBS->CloseProtocol ( IpInstance->Interface->ArpHandle, &gEfiArpProtocolGuid, diff --git a/NetworkPkg/Ip4Dxe/Ip4Driver.h b/NetworkPkg/Ip4Dxe/Ip4Driver.h index d94bdf3bde..36cd0c21c9 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Driver.h +++ b/NetworkPkg/Ip4Dxe/Ip4Driver.h @@ -16,14 +16,15 @@ extern EFI_COMPONENT_NAME2_PROTOCOL gIp4ComponentName2; extern EFI_UNICODE_STRING_TABLE *gIp4ControllerNameTable; typedef struct { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - UINTN NumberOfChildren; - EFI_HANDLE *ChildHandleBuffer; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; } IP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; // // Function prototype for the driver's entry point // + /** This is the declaration of an EFI image entry point. This entry point is the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including @@ -42,13 +43,14 @@ typedef struct { EFI_STATUS EFIAPI Ip4DriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ); // // Function prototypes for the Driver Binding Protocol // + /** Test to see if this driver supports ControllerHandle. This service is called by the EFI boot service ConnectController(). In @@ -70,9 +72,9 @@ Ip4DriverEntryPoint ( EFI_STATUS EFIAPI Ip4DriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL * This, + IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ); /** @@ -96,9 +98,9 @@ Ip4DriverBindingSupported ( EFI_STATUS EFIAPI Ip4DriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL * This, + IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ); /** @@ -131,6 +133,7 @@ Ip4DriverBindingStop ( // // Function prototypes for the ServiceBinding Protocol // + /** Creates a child handle and installs a protocol. @@ -181,4 +184,5 @@ Ip4ServiceBindingDestroyChild ( IN EFI_SERVICE_BINDING_PROTOCOL *This, IN EFI_HANDLE ChildHandle ); + #endif diff --git a/NetworkPkg/Ip4Dxe/Ip4Icmp.c b/NetworkPkg/Ip4Dxe/Ip4Icmp.c index 833ffa74ff..01dbb17629 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Icmp.c +++ b/NetworkPkg/Ip4Dxe/Ip4Icmp.c @@ -8,61 +8,59 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Ip4Impl.h" IP4_ICMP_CLASS -mIcmpClass[] = { - {ICMP_ECHO_REPLY, ICMP_QUERY_MESSAGE }, - {1, ICMP_INVALID_MESSAGE}, - {2, ICMP_INVALID_MESSAGE}, - {ICMP_DEST_UNREACHABLE, ICMP_ERROR_MESSAGE }, - {ICMP_SOURCE_QUENCH, ICMP_ERROR_MESSAGE }, - {ICMP_REDIRECT, ICMP_ERROR_MESSAGE }, - {6, ICMP_INVALID_MESSAGE}, - {7, ICMP_INVALID_MESSAGE}, - {ICMP_ECHO_REQUEST, ICMP_QUERY_MESSAGE }, - {9, ICMP_INVALID_MESSAGE}, - {10, ICMP_INVALID_MESSAGE}, - {ICMP_TIME_EXCEEDED, ICMP_ERROR_MESSAGE }, - {ICMP_PARAMETER_PROBLEM, ICMP_ERROR_MESSAGE }, - {ICMP_TIMESTAMP , ICMP_QUERY_MESSAGE }, - {14, ICMP_INVALID_MESSAGE}, - {ICMP_INFO_REQUEST , ICMP_QUERY_MESSAGE }, - {ICMP_INFO_REPLY , ICMP_QUERY_MESSAGE }, + mIcmpClass[] = { + { ICMP_ECHO_REPLY, ICMP_QUERY_MESSAGE }, + { 1, ICMP_INVALID_MESSAGE }, + { 2, ICMP_INVALID_MESSAGE }, + { ICMP_DEST_UNREACHABLE, ICMP_ERROR_MESSAGE }, + { ICMP_SOURCE_QUENCH, ICMP_ERROR_MESSAGE }, + { ICMP_REDIRECT, ICMP_ERROR_MESSAGE }, + { 6, ICMP_INVALID_MESSAGE }, + { 7, ICMP_INVALID_MESSAGE }, + { ICMP_ECHO_REQUEST, ICMP_QUERY_MESSAGE }, + { 9, ICMP_INVALID_MESSAGE }, + { 10, ICMP_INVALID_MESSAGE }, + { ICMP_TIME_EXCEEDED, ICMP_ERROR_MESSAGE }, + { ICMP_PARAMETER_PROBLEM, ICMP_ERROR_MESSAGE }, + { ICMP_TIMESTAMP, ICMP_QUERY_MESSAGE }, + { 14, ICMP_INVALID_MESSAGE }, + { ICMP_INFO_REQUEST, ICMP_QUERY_MESSAGE }, + { ICMP_INFO_REPLY, ICMP_QUERY_MESSAGE }, }; EFI_IP4_ICMP_TYPE -mIp4SupportedIcmp[23] = { - {ICMP_ECHO_REPLY, ICMP_DEFAULT_CODE }, - - {ICMP_DEST_UNREACHABLE, ICMP_NET_UNREACHABLE }, - {ICMP_DEST_UNREACHABLE, ICMP_HOST_UNREACHABLE }, - {ICMP_DEST_UNREACHABLE, ICMP_PROTO_UNREACHABLE }, - {ICMP_DEST_UNREACHABLE, ICMP_PORT_UNREACHABLE }, - {ICMP_DEST_UNREACHABLE, ICMP_FRAGMENT_FAILED }, - {ICMP_DEST_UNREACHABLE, ICMP_SOURCEROUTE_FAILED }, - {ICMP_DEST_UNREACHABLE, ICMP_NET_UNKNOWN }, - {ICMP_DEST_UNREACHABLE, ICMP_HOST_UNKNOWN }, - {ICMP_DEST_UNREACHABLE, ICMP_SOURCE_ISOLATED }, - {ICMP_DEST_UNREACHABLE, ICMP_NET_PROHIBITED }, - {ICMP_DEST_UNREACHABLE, ICMP_HOST_PROHIBITED }, - {ICMP_DEST_UNREACHABLE, ICMP_NET_UNREACHABLE_TOS }, - {ICMP_DEST_UNREACHABLE, ICMP_HOST_UNREACHABLE_TOS}, - - {ICMP_SOURCE_QUENCH, ICMP_DEFAULT_CODE }, - - {ICMP_REDIRECT, ICMP_NET_REDIRECT }, - {ICMP_REDIRECT, ICMP_HOST_REDIRECT }, - {ICMP_REDIRECT, ICMP_NET_TOS_REDIRECT }, - {ICMP_REDIRECT, ICMP_HOST_TOS_REDIRECT }, - - {ICMP_ECHO_REQUEST, ICMP_DEFAULT_CODE }, - - {ICMP_TIME_EXCEEDED, ICMP_TIMEOUT_IN_TRANSIT }, - {ICMP_TIME_EXCEEDED, ICMP_TIMEOUT_REASSEMBLE }, - - {ICMP_PARAMETER_PROBLEM, ICMP_DEFAULT_CODE }, + mIp4SupportedIcmp[23] = { + { ICMP_ECHO_REPLY, ICMP_DEFAULT_CODE }, + + { ICMP_DEST_UNREACHABLE, ICMP_NET_UNREACHABLE }, + { ICMP_DEST_UNREACHABLE, ICMP_HOST_UNREACHABLE }, + { ICMP_DEST_UNREACHABLE, ICMP_PROTO_UNREACHABLE }, + { ICMP_DEST_UNREACHABLE, ICMP_PORT_UNREACHABLE }, + { ICMP_DEST_UNREACHABLE, ICMP_FRAGMENT_FAILED }, + { ICMP_DEST_UNREACHABLE, ICMP_SOURCEROUTE_FAILED }, + { ICMP_DEST_UNREACHABLE, ICMP_NET_UNKNOWN }, + { ICMP_DEST_UNREACHABLE, ICMP_HOST_UNKNOWN }, + { ICMP_DEST_UNREACHABLE, ICMP_SOURCE_ISOLATED }, + { ICMP_DEST_UNREACHABLE, ICMP_NET_PROHIBITED }, + { ICMP_DEST_UNREACHABLE, ICMP_HOST_PROHIBITED }, + { ICMP_DEST_UNREACHABLE, ICMP_NET_UNREACHABLE_TOS }, + { ICMP_DEST_UNREACHABLE, ICMP_HOST_UNREACHABLE_TOS }, + + { ICMP_SOURCE_QUENCH, ICMP_DEFAULT_CODE }, + + { ICMP_REDIRECT, ICMP_NET_REDIRECT }, + { ICMP_REDIRECT, ICMP_HOST_REDIRECT }, + { ICMP_REDIRECT, ICMP_NET_TOS_REDIRECT }, + { ICMP_REDIRECT, ICMP_HOST_TOS_REDIRECT }, + + { ICMP_ECHO_REQUEST, ICMP_DEFAULT_CODE }, + + { ICMP_TIME_EXCEEDED, ICMP_TIMEOUT_IN_TRANSIT }, + { ICMP_TIME_EXCEEDED, ICMP_TIMEOUT_REASSEMBLE }, + + { ICMP_PARAMETER_PROBLEM, ICMP_DEFAULT_CODE }, }; - - /** Process the ICMP redirect. Find the instance then update its route cache. @@ -88,19 +86,19 @@ mIp4SupportedIcmp[23] = { **/ EFI_STATUS Ip4ProcessIcmpRedirect ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet, - IN IP4_ICMP_ERROR_HEAD *Icmp + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet, + IN IP4_ICMP_ERROR_HEAD *Icmp ) { - LIST_ENTRY *Entry; - IP4_PROTOCOL *Ip4Instance; - IP4_ROUTE_CACHE_ENTRY *CacheEntry; - IP4_INTERFACE *IpIf; - IP4_ADDR Gateway; - IP4_ADDR Src; - IP4_ADDR Dst; + LIST_ENTRY *Entry; + IP4_PROTOCOL *Ip4Instance; + IP4_ROUTE_CACHE_ENTRY *CacheEntry; + IP4_INTERFACE *IpIf; + IP4_ADDR Gateway; + IP4_ADDR Src; + IP4_ADDR Dst; // // Find the interface whose IP address is the source of the @@ -129,8 +127,8 @@ Ip4ProcessIcmpRedirect ( continue; } - Dst = NTOHL (Icmp->IpHead.Dst); - Src = NTOHL (Icmp->IpHead.Src); + Dst = NTOHL (Icmp->IpHead.Dst); + Src = NTOHL (Icmp->IpHead.Src); CacheEntry = Ip4FindRouteCache (Ip4Instance->RouteTable, Dst, Src); // @@ -146,7 +144,6 @@ Ip4ProcessIcmpRedirect ( return EFI_SUCCESS; } - /** Process the ICMP error packet. If it is an ICMP redirect packet, update call Ip4ProcessIcmpRedirect to update the IP instance's @@ -164,19 +161,19 @@ Ip4ProcessIcmpRedirect ( **/ EFI_STATUS Ip4ProcessIcmpError ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet ) { - IP4_ICMP_ERROR_HEAD Icmp; + IP4_ICMP_ERROR_HEAD Icmp; if (Packet->TotalSize < sizeof (Icmp)) { NetbufFree (Packet); return EFI_INVALID_PARAMETER; } - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); // // If it is an ICMP redirect error, update the route cache @@ -190,7 +187,6 @@ Ip4ProcessIcmpError ( return Ip4Demultiplex (IpSb, Head, Packet, NULL, 0); } - /** Replay an ICMP echo request. @@ -206,15 +202,15 @@ Ip4ProcessIcmpError ( **/ EFI_STATUS Ip4IcmpReplyEcho ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet ) { - IP4_ICMP_QUERY_HEAD *Icmp; - NET_BUF *Data; - EFI_STATUS Status; - IP4_HEAD ReplyHead; + IP4_ICMP_QUERY_HEAD *Icmp; + NET_BUF *Data; + EFI_STATUS Status; + IP4_HEAD ReplyHead; // // make a copy the packet, it is really a bad idea to @@ -233,17 +229,17 @@ Ip4IcmpReplyEcho ( // use specific destination. See RFC1122. SRR/RR option // update is omitted. // - Icmp = (IP4_ICMP_QUERY_HEAD *) NetbufGetByte (Data, 0, NULL); + Icmp = (IP4_ICMP_QUERY_HEAD *)NetbufGetByte (Data, 0, NULL); ASSERT (Icmp != NULL); Icmp->Head.Type = ICMP_ECHO_REPLY; Icmp->Head.Checksum = 0; - Icmp->Head.Checksum = (UINT16) (~NetblockChecksum ((UINT8 *) Icmp, Data->TotalSize)); + Icmp->Head.Checksum = (UINT16)(~NetblockChecksum ((UINT8 *)Icmp, Data->TotalSize)); - ReplyHead.Tos = 0; - ReplyHead.Fragment = 0; - ReplyHead.Ttl = 64; - ReplyHead.Protocol = EFI_IP_PROTO_ICMP; - ReplyHead.Src = 0; + ReplyHead.Tos = 0; + ReplyHead.Fragment = 0; + ReplyHead.Ttl = 64; + ReplyHead.Protocol = EFI_IP_PROTO_ICMP; + ReplyHead.Src = 0; // // Ip4Output will select a source for us @@ -270,7 +266,6 @@ ON_EXIT: return Status; } - /** Process the ICMP query message. If it is an ICMP echo request, answer it. Otherwise deliver it to upper layer. @@ -287,19 +282,19 @@ ON_EXIT: **/ EFI_STATUS Ip4ProcessIcmpQuery ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet ) { - IP4_ICMP_QUERY_HEAD Icmp; + IP4_ICMP_QUERY_HEAD Icmp; if (Packet->TotalSize < sizeof (Icmp)) { NetbufFree (Packet); return EFI_INVALID_PARAMETER; } - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); if (Icmp.Head.Type == ICMP_ECHO_REQUEST) { return Ip4IcmpReplyEcho (IpSb, Head, Packet); @@ -308,7 +303,6 @@ Ip4ProcessIcmpQuery ( return Ip4Demultiplex (IpSb, Head, Packet, NULL, 0); } - /** Handle the ICMP packet. First validate the message format, then according to the message types, process it as query or @@ -326,35 +320,33 @@ Ip4ProcessIcmpQuery ( **/ EFI_STATUS Ip4IcmpHandle ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet ) { - IP4_ICMP_HEAD Icmp; - UINT16 Checksum; + IP4_ICMP_HEAD Icmp; + UINT16 Checksum; if (Packet->TotalSize < sizeof (Icmp)) { goto DROP; } - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); if (Icmp.Type > ICMP_TYPE_MAX) { goto DROP; } - Checksum = (UINT16) (~NetbufChecksum (Packet)); + Checksum = (UINT16)(~NetbufChecksum (Packet)); if ((Icmp.Checksum != 0) && (Checksum != 0)) { goto DROP; } if (mIcmpClass[Icmp.Type].IcmpClass == ICMP_ERROR_MESSAGE) { return Ip4ProcessIcmpError (IpSb, Head, Packet); - } else if (mIcmpClass[Icmp.Type].IcmpClass == ICMP_QUERY_MESSAGE) { return Ip4ProcessIcmpQuery (IpSb, Head, Packet); - } DROP: diff --git a/NetworkPkg/Ip4Dxe/Ip4Icmp.h b/NetworkPkg/Ip4Dxe/Ip4Icmp.h index a23952dbdd..7eea9d5e9f 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Icmp.h +++ b/NetworkPkg/Ip4Dxe/Ip4Icmp.h @@ -9,26 +9,26 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_IP4_ICMP_H__ #define __EFI_IP4_ICMP_H__ - // - // ICMP type definitions - // -#define ICMP_ECHO_REPLY 0 -#define ICMP_DEST_UNREACHABLE 3 -#define ICMP_SOURCE_QUENCH 4 -#define ICMP_REDIRECT 5 -#define ICMP_ECHO_REQUEST 8 -#define ICMP_TIME_EXCEEDED 11 -#define ICMP_PARAMETER_PROBLEM 12 -#define ICMP_TIMESTAMP 13 -#define ICMP_INFO_REQUEST 15 -#define ICMP_INFO_REPLY 16 -#define ICMP_TYPE_MAX ICMP_INFO_REPLY - -#define ICMP_DEFAULT_CODE 0 - - // - // ICMP code definitions for ICMP_DEST_UNREACHABLE - // +// +// ICMP type definitions +// +#define ICMP_ECHO_REPLY 0 +#define ICMP_DEST_UNREACHABLE 3 +#define ICMP_SOURCE_QUENCH 4 +#define ICMP_REDIRECT 5 +#define ICMP_ECHO_REQUEST 8 +#define ICMP_TIME_EXCEEDED 11 +#define ICMP_PARAMETER_PROBLEM 12 +#define ICMP_TIMESTAMP 13 +#define ICMP_INFO_REQUEST 15 +#define ICMP_INFO_REPLY 16 +#define ICMP_TYPE_MAX ICMP_INFO_REPLY + +#define ICMP_DEFAULT_CODE 0 + +// +// ICMP code definitions for ICMP_DEST_UNREACHABLE +// #define ICMP_NET_UNREACHABLE 0 #define ICMP_HOST_UNREACHABLE 1 #define ICMP_PROTO_UNREACHABLE 2 // Host may generate @@ -43,31 +43,31 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define ICMP_NET_UNREACHABLE_TOS 11 #define ICMP_HOST_UNREACHABLE_TOS 12 - // - // ICMP code definitions for ICMP_TIME_EXCEEDED - // -#define ICMP_TIMEOUT_IN_TRANSIT 0 -#define ICMP_TIMEOUT_REASSEMBLE 1 // Host may generate - - // - // ICMP code definitions for ICMP_TIME_EXCEEDED - // -#define ICMP_NET_REDIRECT 0 -#define ICMP_HOST_REDIRECT 1 -#define ICMP_NET_TOS_REDIRECT 2 -#define ICMP_HOST_TOS_REDIRECT 3 - - // - // ICMP message classes, each class of ICMP message shares - // a common message format. INVALID_MESSAGE is only a flag. - // -#define ICMP_INVALID_MESSAGE 0 -#define ICMP_ERROR_MESSAGE 1 -#define ICMP_QUERY_MESSAGE 2 +// +// ICMP code definitions for ICMP_TIME_EXCEEDED +// +#define ICMP_TIMEOUT_IN_TRANSIT 0 +#define ICMP_TIMEOUT_REASSEMBLE 1 // Host may generate + +// +// ICMP code definitions for ICMP_TIME_EXCEEDED +// +#define ICMP_NET_REDIRECT 0 +#define ICMP_HOST_REDIRECT 1 +#define ICMP_NET_TOS_REDIRECT 2 +#define ICMP_HOST_TOS_REDIRECT 3 + +// +// ICMP message classes, each class of ICMP message shares +// a common message format. INVALID_MESSAGE is only a flag. +// +#define ICMP_INVALID_MESSAGE 0 +#define ICMP_ERROR_MESSAGE 1 +#define ICMP_QUERY_MESSAGE 2 typedef struct { - UINT8 IcmpType; - UINT8 IcmpClass; + UINT8 IcmpType; + UINT8 IcmpClass; } IP4_ICMP_CLASS; extern IP4_ICMP_CLASS mIcmpClass[]; @@ -90,8 +90,9 @@ extern EFI_IP4_ICMP_TYPE mIp4SupportedIcmp[]; **/ EFI_STATUS Ip4IcmpHandle ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet ); + #endif diff --git a/NetworkPkg/Ip4Dxe/Ip4If.c b/NetworkPkg/Ip4Dxe/Ip4If.c index edb0b197ca..b312017d22 100644 --- a/NetworkPkg/Ip4Dxe/Ip4If.c +++ b/NetworkPkg/Ip4Dxe/Ip4If.c @@ -24,7 +24,7 @@ EFI_MAC_ADDRESS mZeroMacAddress; VOID EFIAPI Ip4OnFrameSentDpc ( - IN VOID *Context + IN VOID *Context ); /** @@ -37,8 +37,8 @@ Ip4OnFrameSentDpc ( VOID EFIAPI Ip4OnFrameSent ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -53,7 +53,7 @@ Ip4OnFrameSent ( VOID EFIAPI Ip4OnArpResolvedDpc ( - IN VOID *Context + IN VOID *Context ); /** @@ -67,8 +67,8 @@ Ip4OnArpResolvedDpc ( VOID EFIAPI Ip4OnArpResolved ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -85,7 +85,7 @@ Ip4OnArpResolved ( VOID EFIAPI Ip4OnFrameReceivedDpc ( - IN VOID *Context + IN VOID *Context ); /** @@ -98,8 +98,8 @@ Ip4OnFrameReceivedDpc ( VOID EFIAPI Ip4OnFrameReceived ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -115,13 +115,12 @@ Ip4OnFrameReceived ( **/ VOID Ip4CancelFrameArp ( - IN IP4_ARP_QUE *ArpQue, - IN EFI_STATUS IoStatus, - IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL, - IN VOID *Context + IN IP4_ARP_QUE *ArpQue, + IN EFI_STATUS IoStatus, + IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL, + IN VOID *Context ); - /** Wrap a transmit request into a newly allocated IP4_LINK_TX_TOKEN. @@ -140,12 +139,12 @@ Ip4CancelFrameArp ( **/ IP4_LINK_TX_TOKEN * Ip4WrapLinkTxToken ( - IN IP4_INTERFACE *Interface, - IN IP4_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN IP4_FRAME_CALLBACK CallBack, - IN VOID *Context, - IN IP4_SERVICE *IpSb + IN IP4_INTERFACE *Interface, + IN IP4_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN IP4_FRAME_CALLBACK CallBack, + IN VOID *Context, + IN IP4_SERVICE *IpSb ) { EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken; @@ -154,8 +153,10 @@ Ip4WrapLinkTxToken ( EFI_STATUS Status; UINT32 Count; - Token = AllocatePool (sizeof (IP4_LINK_TX_TOKEN) + \ - (Packet->BlockOpNum - 1) * sizeof (EFI_MANAGED_NETWORK_FRAGMENT_DATA)); + Token = AllocatePool ( + sizeof (IP4_LINK_TX_TOKEN) + \ + (Packet->BlockOpNum - 1) * sizeof (EFI_MANAGED_NETWORK_FRAGMENT_DATA) + ); if (Token == NULL) { return NULL; @@ -173,8 +174,8 @@ Ip4WrapLinkTxToken ( CopyMem (&Token->DstMac, &mZeroMacAddress, sizeof (Token->DstMac)); CopyMem (&Token->SrcMac, &Interface->Mac, sizeof (Token->SrcMac)); - MnpToken = &(Token->MnpToken); - MnpToken->Status = EFI_NOT_READY; + MnpToken = &(Token->MnpToken); + MnpToken->Status = EFI_NOT_READY; Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, @@ -189,8 +190,8 @@ Ip4WrapLinkTxToken ( return NULL; } - MnpTxData = &Token->MnpTxData; - MnpToken->Packet.TxData = MnpTxData; + MnpTxData = &Token->MnpTxData; + MnpToken->Packet.TxData = MnpTxData; MnpTxData->DestinationAddress = &Token->DstMac; MnpTxData->SourceAddress = &Token->SrcMac; @@ -198,15 +199,14 @@ Ip4WrapLinkTxToken ( MnpTxData->DataLength = Packet->TotalSize; MnpTxData->HeaderLength = 0; - Count = Packet->BlockOpNum; + Count = Packet->BlockOpNum; - NetbufBuildExt (Packet, (NET_FRAGMENT *) MnpTxData->FragmentTable, &Count); - MnpTxData->FragmentCount = (UINT16)Count; + NetbufBuildExt (Packet, (NET_FRAGMENT *)MnpTxData->FragmentTable, &Count); + MnpTxData->FragmentCount = (UINT16)Count; return Token; } - /** Free the link layer transmit token. It will close the event then free the memory used. @@ -216,7 +216,7 @@ Ip4WrapLinkTxToken ( **/ VOID Ip4FreeLinkTxToken ( - IN IP4_LINK_TX_TOKEN *Token + IN IP4_LINK_TX_TOKEN *Token ) { NET_CHECK_SIGNATURE (Token, IP4_FRAME_TX_SIGNATURE); @@ -225,7 +225,6 @@ Ip4FreeLinkTxToken ( FreePool (Token); } - /** Create an IP_ARP_QUE structure to request ARP service. @@ -238,12 +237,12 @@ Ip4FreeLinkTxToken ( **/ IP4_ARP_QUE * Ip4CreateArpQue ( - IN IP4_INTERFACE *Interface, - IN IP4_ADDR DestIp + IN IP4_INTERFACE *Interface, + IN IP4_ADDR DestIp ) { - IP4_ARP_QUE *ArpQue; - EFI_STATUS Status; + IP4_ARP_QUE *ArpQue; + EFI_STATUS Status; ArpQue = AllocatePool (sizeof (IP4_ARP_QUE)); @@ -270,13 +269,12 @@ Ip4CreateArpQue ( return NULL; } - ArpQue->Ip = DestIp; + ArpQue->Ip = DestIp; CopyMem (&ArpQue->Mac, &mZeroMacAddress, sizeof (ArpQue->Mac)); return ArpQue; } - /** Remove all the transmit requests queued on the ARP queue, then free it. @@ -287,8 +285,8 @@ Ip4CreateArpQue ( **/ VOID Ip4FreeArpQue ( - IN IP4_ARP_QUE *ArpQue, - IN EFI_STATUS IoStatus + IN IP4_ARP_QUE *ArpQue, + IN EFI_STATUS IoStatus ) { NET_CHECK_SIGNATURE (ArpQue, IP4_FRAME_ARP_SIGNATURE); @@ -302,7 +300,6 @@ Ip4FreeArpQue ( FreePool (ArpQue); } - /** Create a link layer receive token to wrap the receive request @@ -317,10 +314,10 @@ Ip4FreeArpQue ( **/ IP4_LINK_RX_TOKEN * Ip4CreateLinkRxToken ( - IN IP4_INTERFACE *Interface, - IN IP4_PROTOCOL *IpInstance, - IN IP4_FRAME_CALLBACK CallBack, - IN VOID *Context + IN IP4_INTERFACE *Interface, + IN IP4_PROTOCOL *IpInstance, + IN IP4_FRAME_CALLBACK CallBack, + IN VOID *Context ) { EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken; @@ -338,8 +335,8 @@ Ip4CreateLinkRxToken ( Token->CallBack = CallBack; Token->Context = Context; - MnpToken = &Token->MnpToken; - MnpToken->Status = EFI_NOT_READY; + MnpToken = &Token->MnpToken; + MnpToken->Status = EFI_NOT_READY; Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, @@ -358,7 +355,6 @@ Ip4CreateLinkRxToken ( return Token; } - /** Free the link layer request token. It will close the event then free the memory used. @@ -368,17 +364,15 @@ Ip4CreateLinkRxToken ( **/ VOID Ip4FreeFrameRxToken ( - IN IP4_LINK_RX_TOKEN *Token + IN IP4_LINK_RX_TOKEN *Token ) { - NET_CHECK_SIGNATURE (Token, IP4_FRAME_RX_SIGNATURE); gBS->CloseEvent (Token->MnpToken.Event); FreePool (Token); } - /** Remove all the frames on the ARP queue that pass the FrameToCancel, that is, either FrameToCancel is NULL or it returns true for the frame. @@ -392,15 +386,15 @@ Ip4FreeFrameRxToken ( **/ VOID Ip4CancelFrameArp ( - IN IP4_ARP_QUE *ArpQue, - IN EFI_STATUS IoStatus, - IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL, - IN VOID *Context + IN IP4_ARP_QUE *ArpQue, + IN EFI_STATUS IoStatus, + IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL, + IN VOID *Context ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_LINK_TX_TOKEN *Token; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_LINK_TX_TOKEN *Token; NET_LIST_FOR_EACH_SAFE (Entry, Next, &ArpQue->Frames) { Token = NET_LIST_USER_STRUCT (Entry, IP4_LINK_TX_TOKEN, Link); @@ -414,7 +408,6 @@ Ip4CancelFrameArp ( } } - /** Remove all the frames on the interface that pass the FrameToCancel, either queued on ARP queues or that have already been delivered to @@ -430,16 +423,16 @@ Ip4CancelFrameArp ( **/ VOID Ip4CancelFrames ( - IN IP4_INTERFACE *Interface, - IN EFI_STATUS IoStatus, - IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL, - IN VOID *Context + IN IP4_INTERFACE *Interface, + IN EFI_STATUS IoStatus, + IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL, + IN VOID *Context ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_ARP_QUE *ArpQue; - IP4_LINK_TX_TOKEN *Token; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_ARP_QUE *ArpQue; + IP4_LINK_TX_TOKEN *Token; // // Cancel all the pending frames on ARP requests @@ -467,7 +460,6 @@ Ip4CancelFrames ( } } - /** Create an IP4_INTERFACE. Delay the creation of ARP instance until the interface is configured. @@ -488,8 +480,8 @@ Ip4CreateInterface ( IN EFI_HANDLE ImageHandle ) { - IP4_INTERFACE *Interface; - EFI_SIMPLE_NETWORK_MODE SnpMode; + IP4_INTERFACE *Interface; + EFI_SIMPLE_NETWORK_MODE SnpMode; if (Mnp == NULL) { return NULL; @@ -503,7 +495,7 @@ Ip4CreateInterface ( Interface->Signature = IP4_INTERFACE_SIGNATURE; InitializeListHead (&Interface->Link); - Interface->RefCnt = 1; + Interface->RefCnt = 1; Interface->Ip = IP4_ALLZERO_ADDRESS; Interface->SubnetMask = IP4_ALLZERO_ADDRESS; @@ -530,7 +522,7 @@ Ip4CreateInterface ( CopyMem (&Interface->Mac, &SnpMode.CurrentAddress, sizeof (Interface->Mac)); CopyMem (&Interface->BroadcastMac, &SnpMode.BroadcastAddress, sizeof (Interface->BroadcastMac)); - Interface->HwaddrLen = SnpMode.HwAddressSize; + Interface->HwaddrLen = SnpMode.HwAddressSize; InitializeListHead (&Interface->IpInstances); Interface->PromiscRecv = FALSE; @@ -538,7 +530,6 @@ Ip4CreateInterface ( return Interface; } - /** Set the interface's address, create and configure the ARP child if necessary. @@ -554,13 +545,13 @@ Ip4CreateInterface ( **/ EFI_STATUS Ip4SetAddress ( - IN OUT IP4_INTERFACE *Interface, - IN IP4_ADDR IpAddr, - IN IP4_ADDR SubnetMask + IN OUT IP4_INTERFACE *Interface, + IN IP4_ADDR IpAddr, + IN IP4_ADDR SubnetMask ) { - EFI_ARP_CONFIG_DATA ArpConfig; - EFI_STATUS Status; + EFI_ARP_CONFIG_DATA ArpConfig; + EFI_STATUS Status; NET_CHECK_SIGNATURE (Interface, IP4_INTERFACE_SIGNATURE); @@ -572,10 +563,10 @@ Ip4SetAddress ( // RFC793. If that isn't the case, we are aggregating the // networks, use the subnet's mask instead. // - Interface->Ip = IpAddr; - Interface->SubnetMask = SubnetMask; - Interface->SubnetBrdcast = (IpAddr | ~SubnetMask); - Interface->NetBrdcast = (IpAddr | ~SubnetMask); + Interface->Ip = IpAddr; + Interface->SubnetMask = SubnetMask; + Interface->SubnetBrdcast = (IpAddr | ~SubnetMask); + Interface->NetBrdcast = (IpAddr | ~SubnetMask); // // Do clean up for Arp child @@ -621,7 +612,7 @@ Ip4SetAddress ( Status = gBS->OpenProtocol ( Interface->ArpHandle, &gEfiArpProtocolGuid, - (VOID **) &Interface->Arp, + (VOID **)&Interface->Arp, Interface->Image, Interface->Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -667,7 +658,6 @@ ON_ERROR: return Status; } - /** Filter function to cancel all the frame related to an IP instance. @@ -682,19 +672,17 @@ ON_ERROR: **/ BOOLEAN Ip4CancelInstanceFrame ( - IN IP4_LINK_TX_TOKEN *Frame, - IN VOID *Context + IN IP4_LINK_TX_TOKEN *Frame, + IN VOID *Context ) { - if (Frame->IpInstance == (IP4_PROTOCOL *) Context) { + if (Frame->IpInstance == (IP4_PROTOCOL *)Context) { return TRUE; } return FALSE; } - - /** If there is a pending receive request, cancel it. Don't call the receive request's callback because this function can be only @@ -709,11 +697,11 @@ Ip4CancelInstanceFrame ( **/ VOID Ip4CancelReceive ( - IN IP4_INTERFACE *Interface + IN IP4_INTERFACE *Interface ) { - EFI_TPL OldTpl; - IP4_LINK_RX_TOKEN *Token; + EFI_TPL OldTpl; + IP4_LINK_RX_TOKEN *Token; if ((Token = Interface->RecvRequest) != NULL) { OldTpl = gBS->RaiseTPL (TPL_CALLBACK); @@ -725,7 +713,6 @@ Ip4CancelReceive ( } } - /** Free the interface used by IpInstance. All the IP instance with the same Ip/Netmask pair share the same interface. It is reference @@ -742,8 +729,8 @@ Ip4CancelReceive ( **/ EFI_STATUS Ip4FreeInterface ( - IN IP4_INTERFACE *Interface, - IN IP4_PROTOCOL *IpInstance OPTIONAL + IN IP4_INTERFACE *Interface, + IN IP4_PROTOCOL *IpInstance OPTIONAL ) { NET_CHECK_SIGNATURE (Interface, IP4_INTERFACE_SIGNATURE); @@ -773,11 +760,11 @@ Ip4FreeInterface ( if (Interface->Arp != NULL) { gBS->CloseProtocol ( - Interface->ArpHandle, - &gEfiArpProtocolGuid, - Interface->Image, - Interface->Controller - ); + Interface->ArpHandle, + &gEfiArpProtocolGuid, + Interface->Image, + Interface->Controller + ); NetLibDestroyServiceChild ( Interface->Controller, @@ -805,16 +792,16 @@ Ip4FreeInterface ( **/ EFI_STATUS Ip4SendFrameToDefaultRoute ( - IN IP4_ARP_QUE *ArpQue + IN IP4_ARP_QUE *ArpQue ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; - IP4_LINK_TX_TOKEN *Token; - IP4_ADDR Gateway; - EFI_STATUS Status; - IP4_ROUTE_ENTRY *DefaultRoute; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; + IP4_LINK_TX_TOKEN *Token; + IP4_ADDR Gateway; + EFI_STATUS Status; + IP4_ROUTE_ENTRY *DefaultRoute; // // ARP resolve failed when using /32 subnet mask. @@ -830,18 +817,22 @@ Ip4SendFrameToDefaultRoute ( if (Token->IpInstance != NULL) { RtCacheEntry = Ip4FindRouteCache (Token->IpInstance->RouteTable, NTOHL (ArpQue->Ip), Token->Interface->Ip); } + if (RtCacheEntry == NULL) { RtCacheEntry = Ip4FindRouteCache (Token->IpSb->DefaultRouteTable, NTOHL (ArpQue->Ip), Token->Interface->Ip); } + if (RtCacheEntry == NULL) { - Status= EFI_NO_MAPPING; + Status = EFI_NO_MAPPING; goto ON_ERROR; } - DefaultRoute = (IP4_ROUTE_ENTRY*)RtCacheEntry->Tag; + + DefaultRoute = (IP4_ROUTE_ENTRY *)RtCacheEntry->Tag; if (DefaultRoute == NULL) { - Status= EFI_NO_MAPPING; + Status = EFI_NO_MAPPING; goto ON_ERROR; } + // // Try to send the frame to the default route. // @@ -850,15 +841,17 @@ Ip4SendFrameToDefaultRoute ( // // ARP resolve for the default route is failed, return error to caller. // - Status= EFI_NO_MAPPING; + Status = EFI_NO_MAPPING; goto ON_ERROR; } + RtCacheEntry->NextHop = Gateway; - Status = Ip4SendFrame (Token->Interface,Token->IpInstance,Token->Packet,Gateway,Token->CallBack,Token->Context,Token->IpSb); + Status = Ip4SendFrame (Token->Interface, Token->IpInstance, Token->Packet, Gateway, Token->CallBack, Token->Context, Token->IpSb); if (EFI_ERROR (Status)) { - Status= EFI_NO_MAPPING; + Status = EFI_NO_MAPPING; goto ON_ERROR; } + Ip4FreeRouteCacheEntry (RtCacheEntry); } @@ -868,12 +861,12 @@ ON_ERROR: if (RtCacheEntry != NULL) { Ip4FreeRouteCacheEntry (RtCacheEntry); } + Token->CallBack (Token->IpInstance, Token->Packet, Status, 0, Token->Context); Ip4FreeLinkTxToken (Token); return Status; } - /** Callback function when ARP request are finished. It will cancel all the queued frame if the ARP requests failed. Or transmit them @@ -886,18 +879,18 @@ ON_ERROR: VOID EFIAPI Ip4OnArpResolvedDpc ( - IN VOID *Context + IN VOID *Context ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_ARP_QUE *ArpQue; - IP4_INTERFACE *Interface; - IP4_LINK_TX_TOKEN *Token; - EFI_STATUS Status; - EFI_STATUS IoStatus; - - ArpQue = (IP4_ARP_QUE *) Context; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_ARP_QUE *ArpQue; + IP4_INTERFACE *Interface; + IP4_LINK_TX_TOKEN *Token; + EFI_STATUS Status; + EFI_STATUS IoStatus; + + ArpQue = (IP4_ARP_QUE *)Context; NET_CHECK_SIGNATURE (ArpQue, IP4_FRAME_ARP_SIGNATURE); RemoveEntryList (&ArpQue->Link); @@ -919,6 +912,7 @@ Ip4OnArpResolvedDpc ( // IoStatus = Ip4SendFrameToDefaultRoute (ArpQue); } + goto ON_EXIT; } @@ -927,13 +921,13 @@ Ip4OnArpResolvedDpc ( // queue. It isn't necessary for us to cache the ARP binding because // we always check the ARP cache first before transmit. // - IoStatus = EFI_SUCCESS; + IoStatus = EFI_SUCCESS; Interface = ArpQue->Interface; NET_LIST_FOR_EACH_SAFE (Entry, Next, &ArpQue->Frames) { RemoveEntryList (Entry); - Token = NET_LIST_USER_STRUCT (Entry, IP4_LINK_TX_TOKEN, Link); + Token = NET_LIST_USER_STRUCT (Entry, IP4_LINK_TX_TOKEN, Link); CopyMem (&Token->DstMac, &ArpQue->Mac, sizeof (Token->DstMac)); // @@ -970,8 +964,8 @@ ON_EXIT: VOID EFIAPI Ip4OnArpResolved ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -980,8 +974,6 @@ Ip4OnArpResolved ( QueueDpc (TPL_CALLBACK, Ip4OnArpResolvedDpc, Context); } - - /** Callback function when frame transmission is finished. It will call the frame owner's callback function to tell it the result. @@ -992,23 +984,23 @@ Ip4OnArpResolved ( VOID EFIAPI Ip4OnFrameSentDpc ( - IN VOID *Context + IN VOID *Context ) { - IP4_LINK_TX_TOKEN *Token; + IP4_LINK_TX_TOKEN *Token; - Token = (IP4_LINK_TX_TOKEN *) Context; + Token = (IP4_LINK_TX_TOKEN *)Context; NET_CHECK_SIGNATURE (Token, IP4_FRAME_TX_SIGNATURE); RemoveEntryList (&Token->Link); Token->CallBack ( - Token->IpInstance, - Token->Packet, - Token->MnpToken.Status, - 0, - Token->Context - ); + Token->IpInstance, + Token->Packet, + Token->MnpToken.Status, + 0, + Token->Context + ); Ip4FreeLinkTxToken (Token); } @@ -1023,8 +1015,8 @@ Ip4OnFrameSentDpc ( VOID EFIAPI Ip4OnFrameSent ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -1033,8 +1025,6 @@ Ip4OnFrameSent ( QueueDpc (TPL_CALLBACK, Ip4OnFrameSentDpc, Context); } - - /** Send a frame from the interface. If the next hop is broadcast or multicast address, it is transmitted immediately. If the next hop @@ -1060,20 +1050,20 @@ Ip4OnFrameSent ( **/ EFI_STATUS Ip4SendFrame ( - IN IP4_INTERFACE *Interface, - IN IP4_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN IP4_ADDR NextHop, - IN IP4_FRAME_CALLBACK CallBack, - IN VOID *Context, - IN IP4_SERVICE *IpSb + IN IP4_INTERFACE *Interface, + IN IP4_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN IP4_ADDR NextHop, + IN IP4_FRAME_CALLBACK CallBack, + IN VOID *Context, + IN IP4_SERVICE *IpSb ) { - IP4_LINK_TX_TOKEN *Token; - LIST_ENTRY *Entry; - IP4_ARP_QUE *ArpQue; - EFI_ARP_PROTOCOL *Arp; - EFI_STATUS Status; + IP4_LINK_TX_TOKEN *Token; + LIST_ENTRY *Entry; + IP4_ARP_QUE *ArpQue; + EFI_ARP_PROTOCOL *Arp; + EFI_STATUS Status; ASSERT (Interface->Configured); @@ -1092,9 +1082,7 @@ Ip4SendFrame ( if (NextHop == IP4_ALLONE_ADDRESS) { CopyMem (&Token->DstMac, &Interface->BroadcastMac, sizeof (Token->DstMac)); goto SEND_NOW; - } else if (IP4_IS_MULTICAST (NextHop)) { - Status = Ip4GetMulticastMac (Interface->Mnp, NextHop, &Token->DstMac); if (EFI_ERROR (Status)) { @@ -1120,7 +1108,6 @@ Ip4SendFrame ( if (Status == EFI_SUCCESS) { goto SEND_NOW; - } else if (Status != EFI_NOT_READY) { goto ON_ERROR; } @@ -1187,7 +1174,6 @@ ON_ERROR: return Status; } - /** Call back function when the received packet is freed. Check Ip4OnFrameReceived for information. @@ -1198,19 +1184,18 @@ ON_ERROR: VOID EFIAPI Ip4RecycleFrame ( - IN VOID *Context + IN VOID *Context ) { - IP4_LINK_RX_TOKEN *Frame; + IP4_LINK_RX_TOKEN *Frame; - Frame = (IP4_LINK_RX_TOKEN *) Context; + Frame = (IP4_LINK_RX_TOKEN *)Context; NET_CHECK_SIGNATURE (Frame, IP4_FRAME_RX_SIGNATURE); gBS->SignalEvent (Frame->MnpToken.Packet.RxData->RecycleEvent); Ip4FreeFrameRxToken (Frame); } - /** Received a frame from MNP, wrap it in net buffer then deliver it to IP's input function. The ownship of the packet also @@ -1225,7 +1210,7 @@ Ip4RecycleFrame ( VOID EFIAPI Ip4OnFrameReceivedDpc ( - IN VOID *Context + IN VOID *Context ) { EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken; @@ -1235,7 +1220,7 @@ Ip4OnFrameReceivedDpc ( NET_BUF *Packet; UINT32 Flag; - Token = (IP4_LINK_RX_TOKEN *) Context; + Token = (IP4_LINK_RX_TOKEN *)Context; NET_CHECK_SIGNATURE (Token, IP4_FRAME_RX_SIGNATURE); // @@ -1251,7 +1236,7 @@ Ip4OnFrameReceivedDpc ( Token->CallBack (Token->IpInstance, NULL, MnpToken->Status, 0, Token->Context); Ip4FreeFrameRxToken (Token); - return ; + return; } // @@ -1269,7 +1254,7 @@ Ip4OnFrameReceivedDpc ( Token->CallBack (Token->IpInstance, NULL, EFI_OUT_OF_RESOURCES, 0, Token->Context); Ip4FreeFrameRxToken (Token); - return ; + return; } Flag = (MnpRxData->BroadcastFlag ? IP4_LINK_BROADCAST : 0); @@ -1289,8 +1274,8 @@ Ip4OnFrameReceivedDpc ( VOID EFIAPI Ip4OnFrameReceived ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -1299,7 +1284,6 @@ Ip4OnFrameReceived ( QueueDpc (TPL_CALLBACK, Ip4OnFrameReceivedDpc, Context); } - /** Request to receive the packet from the interface. @@ -1317,14 +1301,14 @@ Ip4OnFrameReceived ( **/ EFI_STATUS Ip4ReceiveFrame ( - IN IP4_INTERFACE *Interface, - IN IP4_PROTOCOL *IpInstance OPTIONAL, - IN IP4_FRAME_CALLBACK CallBack, - IN VOID *Context + IN IP4_INTERFACE *Interface, + IN IP4_PROTOCOL *IpInstance OPTIONAL, + IN IP4_FRAME_CALLBACK CallBack, + IN VOID *Context ) { - IP4_LINK_RX_TOKEN *Token; - EFI_STATUS Status; + IP4_LINK_RX_TOKEN *Token; + EFI_STATUS Status; NET_CHECK_SIGNATURE (Interface, IP4_INTERFACE_SIGNATURE); @@ -1339,11 +1323,12 @@ Ip4ReceiveFrame ( } Interface->RecvRequest = Token; - Status = Interface->Mnp->Receive (Interface->Mnp, &Token->MnpToken); + Status = Interface->Mnp->Receive (Interface->Mnp, &Token->MnpToken); if (EFI_ERROR (Status)) { Interface->RecvRequest = NULL; Ip4FreeFrameRxToken (Token); return Status; } + return EFI_SUCCESS; } diff --git a/NetworkPkg/Ip4Dxe/Ip4If.h b/NetworkPkg/Ip4Dxe/Ip4If.h index ec951d3043..8169529021 100644 --- a/NetworkPkg/Ip4Dxe/Ip4If.h +++ b/NetworkPkg/Ip4Dxe/Ip4If.h @@ -9,10 +9,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_IP4_IF_H__ #define __EFI_IP4_IF_H__ -#define IP4_FRAME_RX_SIGNATURE SIGNATURE_32 ('I', 'P', 'F', 'R') -#define IP4_FRAME_TX_SIGNATURE SIGNATURE_32 ('I', 'P', 'F', 'T') -#define IP4_FRAME_ARP_SIGNATURE SIGNATURE_32 ('I', 'P', 'F', 'A') -#define IP4_INTERFACE_SIGNATURE SIGNATURE_32 ('I', 'P', 'I', 'F') +#define IP4_FRAME_RX_SIGNATURE SIGNATURE_32 ('I', 'P', 'F', 'R') +#define IP4_FRAME_TX_SIGNATURE SIGNATURE_32 ('I', 'P', 'F', 'T') +#define IP4_FRAME_ARP_SIGNATURE SIGNATURE_32 ('I', 'P', 'F', 'A') +#define IP4_INTERFACE_SIGNATURE SIGNATURE_32 ('I', 'P', 'I', 'F') /** This prototype is used by both receive and transmission. @@ -40,11 +40,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent typedef VOID (*IP4_FRAME_CALLBACK)( - IN IP4_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN EFI_STATUS IoStatus, - IN UINT32 LinkFlag, - IN VOID *Context + IN IP4_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN EFI_STATUS IoStatus, + IN UINT32 LinkFlag, + IN VOID *Context ); /// @@ -54,14 +54,14 @@ VOID /// Reference MNP's spec for information. /// typedef struct { - UINT32 Signature; - IP4_INTERFACE *Interface; + UINT32 Signature; + IP4_INTERFACE *Interface; - IP4_PROTOCOL *IpInstance; - IP4_FRAME_CALLBACK CallBack; - VOID *Context; + IP4_PROTOCOL *IpInstance; + IP4_FRAME_CALLBACK CallBack; + VOID *Context; - EFI_MANAGED_NETWORK_COMPLETION_TOKEN MnpToken; + EFI_MANAGED_NETWORK_COMPLETION_TOKEN MnpToken; } IP4_LINK_RX_TOKEN; /// @@ -69,22 +69,22 @@ typedef struct { /// Upon completion, the Callback will be called. /// typedef struct { - UINT32 Signature; - LIST_ENTRY Link; + UINT32 Signature; + LIST_ENTRY Link; - IP4_INTERFACE *Interface; - IP4_SERVICE *IpSb; + IP4_INTERFACE *Interface; + IP4_SERVICE *IpSb; - IP4_PROTOCOL *IpInstance; - IP4_FRAME_CALLBACK CallBack; - NET_BUF *Packet; - VOID *Context; + IP4_PROTOCOL *IpInstance; + IP4_FRAME_CALLBACK CallBack; + NET_BUF *Packet; + VOID *Context; - EFI_MAC_ADDRESS DstMac; - EFI_MAC_ADDRESS SrcMac; + EFI_MAC_ADDRESS DstMac; + EFI_MAC_ADDRESS SrcMac; - EFI_MANAGED_NETWORK_COMPLETION_TOKEN MnpToken; - EFI_MANAGED_NETWORK_TRANSMIT_DATA MnpTxData; + EFI_MANAGED_NETWORK_COMPLETION_TOKEN MnpToken; + EFI_MANAGED_NETWORK_TRANSMIT_DATA MnpTxData; } IP4_LINK_TX_TOKEN; /// @@ -94,18 +94,18 @@ typedef struct { /// be sent all at once the ARP requests succeed. /// typedef struct { - UINT32 Signature; - LIST_ENTRY Link; + UINT32 Signature; + LIST_ENTRY Link; - LIST_ENTRY Frames; - IP4_INTERFACE *Interface; + LIST_ENTRY Frames; + IP4_INTERFACE *Interface; // // ARP requesting staffs // - EFI_EVENT OnResolved; - IP4_ADDR Ip; - EFI_MAC_ADDRESS Mac; + EFI_EVENT OnResolved; + IP4_ADDR Ip; + EFI_MAC_ADDRESS Mac; } IP4_ARP_QUE; /** @@ -121,8 +121,8 @@ typedef struct { typedef BOOLEAN (*IP4_FRAME_TO_CANCEL)( - IP4_LINK_TX_TOKEN *Frame, - VOID *Context + IP4_LINK_TX_TOKEN *Frame, + VOID *Context ); // @@ -133,53 +133,53 @@ BOOLEAN // with 0.0.0.0/0.0.0.0. // struct _IP4_INTERFACE { - UINT32 Signature; - LIST_ENTRY Link; - INTN RefCnt; + UINT32 Signature; + LIST_ENTRY Link; + INTN RefCnt; // // IP address and subnet mask of the interface. It also contains // the subnet/net broadcast address for quick access. The fields // are invalid if (Configured == FALSE) // - IP4_ADDR Ip; - IP4_ADDR SubnetMask; - IP4_ADDR SubnetBrdcast; - IP4_ADDR NetBrdcast; - BOOLEAN Configured; + IP4_ADDR Ip; + IP4_ADDR SubnetMask; + IP4_ADDR SubnetBrdcast; + IP4_ADDR NetBrdcast; + BOOLEAN Configured; // // Handle used to create/destroy ARP child. All the IP children // share one MNP which is owned by IP service binding. // - EFI_HANDLE Controller; - EFI_HANDLE Image; + EFI_HANDLE Controller; + EFI_HANDLE Image; - EFI_MANAGED_NETWORK_PROTOCOL *Mnp; - EFI_ARP_PROTOCOL *Arp; - EFI_HANDLE ArpHandle; + EFI_MANAGED_NETWORK_PROTOCOL *Mnp; + EFI_ARP_PROTOCOL *Arp; + EFI_HANDLE ArpHandle; // // Queues to keep the frames sent and waiting ARP request. // - LIST_ENTRY ArpQues; - LIST_ENTRY SentFrames; - IP4_LINK_RX_TOKEN *RecvRequest; + LIST_ENTRY ArpQues; + LIST_ENTRY SentFrames; + IP4_LINK_RX_TOKEN *RecvRequest; // // The interface's MAC and broadcast MAC address. // - EFI_MAC_ADDRESS Mac; - EFI_MAC_ADDRESS BroadcastMac; - UINT32 HwaddrLen; + EFI_MAC_ADDRESS Mac; + EFI_MAC_ADDRESS BroadcastMac; + UINT32 HwaddrLen; // // All the IP instances that have the same IP/SubnetMask are linked // together through IpInstances. If any of the instance enables // promiscuous receive, PromiscRecv is true. // - LIST_ENTRY IpInstances; - BOOLEAN PromiscRecv; + LIST_ENTRY IpInstances; + BOOLEAN PromiscRecv; }; /** @@ -217,9 +217,9 @@ Ip4CreateInterface ( **/ EFI_STATUS Ip4SetAddress ( - IN OUT IP4_INTERFACE *Interface, - IN IP4_ADDR IpAddr, - IN IP4_ADDR SubnetMask + IN OUT IP4_INTERFACE *Interface, + IN IP4_ADDR IpAddr, + IN IP4_ADDR SubnetMask ); /** @@ -238,8 +238,8 @@ Ip4SetAddress ( **/ EFI_STATUS Ip4FreeInterface ( - IN IP4_INTERFACE *Interface, - IN IP4_PROTOCOL *IpInstance OPTIONAL + IN IP4_INTERFACE *Interface, + IN IP4_PROTOCOL *IpInstance OPTIONAL ); /** @@ -267,13 +267,13 @@ Ip4FreeInterface ( **/ EFI_STATUS Ip4SendFrame ( - IN IP4_INTERFACE *Interface, - IN IP4_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN IP4_ADDR NextHop, - IN IP4_FRAME_CALLBACK CallBack, - IN VOID *Context, - IN IP4_SERVICE *IpSb + IN IP4_INTERFACE *Interface, + IN IP4_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN IP4_ADDR NextHop, + IN IP4_FRAME_CALLBACK CallBack, + IN VOID *Context, + IN IP4_SERVICE *IpSb ); /** @@ -291,10 +291,10 @@ Ip4SendFrame ( **/ VOID Ip4CancelFrames ( - IN IP4_INTERFACE *Interface, - IN EFI_STATUS IoStatus, - IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL, - IN VOID *Context + IN IP4_INTERFACE *Interface, + IN EFI_STATUS IoStatus, + IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL, + IN VOID *Context ); /** @@ -311,7 +311,7 @@ Ip4CancelFrames ( **/ VOID Ip4CancelReceive ( - IN IP4_INTERFACE *Interface + IN IP4_INTERFACE *Interface ); /** @@ -331,10 +331,10 @@ Ip4CancelReceive ( **/ EFI_STATUS Ip4ReceiveFrame ( - IN IP4_INTERFACE *Interface, - IN IP4_PROTOCOL *IpInstance OPTIONAL, - IN IP4_FRAME_CALLBACK CallBack, - IN VOID *Context + IN IP4_INTERFACE *Interface, + IN IP4_PROTOCOL *IpInstance OPTIONAL, + IN IP4_FRAME_CALLBACK CallBack, + IN VOID *Context ); #endif diff --git a/NetworkPkg/Ip4Dxe/Ip4Igmp.c b/NetworkPkg/Ip4Dxe/Ip4Igmp.c index f69ba762fe..e66dae70af 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Igmp.c +++ b/NetworkPkg/Ip4Dxe/Ip4Igmp.c @@ -14,7 +14,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // UINT32 mRouteAlertOption = 0x00000494; - /** Init the IGMP control data of the IP4 service instance, configure MNP to receive ALL SYSTEM multicast. @@ -28,7 +27,7 @@ UINT32 mRouteAlertOption = 0x00000494; **/ EFI_STATUS Ip4InitIgmp ( - IN OUT IP4_SERVICE *IpSb + IN OUT IP4_SERVICE *IpSb ) { IGMP_SERVICE_DATA *IgmpCtrl; @@ -41,13 +40,13 @@ Ip4InitIgmp ( // // Configure MNP to receive ALL_SYSTEM multicast // - Group = AllocatePool (sizeof (IGMP_GROUP)); + Group = AllocatePool (sizeof (IGMP_GROUP)); if (Group == NULL) { return EFI_OUT_OF_RESOURCES; } - Mnp = IpSb->Mnp; + Mnp = IpSb->Mnp; Group->Address = IP4_ALLSYSTEM_ADDRESS; Group->RefCnt = 1; @@ -74,7 +73,6 @@ ON_ERROR: return Status; } - /** Find the IGMP_GROUP structure which contains the status of multicast group Address in this IGMP control block @@ -89,12 +87,12 @@ ON_ERROR: **/ IGMP_GROUP * Ip4FindGroup ( - IN IGMP_SERVICE_DATA *IgmpCtrl, - IN IP4_ADDR Address + IN IGMP_SERVICE_DATA *IgmpCtrl, + IN IP4_ADDR Address ) { - LIST_ENTRY *Entry; - IGMP_GROUP *Group; + LIST_ENTRY *Entry; + IGMP_GROUP *Group; NET_LIST_FOR_EACH (Entry, &IgmpCtrl->Groups) { Group = NET_LIST_USER_STRUCT (Entry, IGMP_GROUP, Link); @@ -107,7 +105,6 @@ Ip4FindGroup ( return NULL; } - /** Count the number of IP4 multicast groups that are mapped to the same MAC address. Several IP4 multicast address may be mapped to @@ -122,13 +119,13 @@ Ip4FindGroup ( **/ INTN Ip4FindMac ( - IN IGMP_SERVICE_DATA *IgmpCtrl, - IN EFI_MAC_ADDRESS *Mac + IN IGMP_SERVICE_DATA *IgmpCtrl, + IN EFI_MAC_ADDRESS *Mac ) { - LIST_ENTRY *Entry; - IGMP_GROUP *Group; - INTN Count; + LIST_ENTRY *Entry; + IGMP_GROUP *Group; + INTN Count; Count = 0; @@ -143,7 +140,6 @@ Ip4FindMac ( return Count; } - /** Send an IGMP protocol message to the Dst, such as IGMP v1 membership report. @@ -161,15 +157,15 @@ Ip4FindMac ( **/ EFI_STATUS Ip4SendIgmpMessage ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Dst, - IN UINT8 Type, - IN IP4_ADDR Group + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Dst, + IN UINT8 Type, + IN IP4_ADDR Group ) { - IP4_HEAD Head; - NET_BUF *Packet; - IGMP_HEAD *Igmp; + IP4_HEAD Head; + NET_BUF *Packet; + IGMP_HEAD *Igmp; // // Allocate a net buffer to hold the message @@ -185,7 +181,7 @@ Ip4SendIgmpMessage ( // NetbufReserve (Packet, IP4_MAX_HEADLEN); - Igmp = (IGMP_HEAD *) NetbufAllocSpace (Packet, sizeof (IGMP_HEAD), FALSE); + Igmp = (IGMP_HEAD *)NetbufAllocSpace (Packet, sizeof (IGMP_HEAD), FALSE); if (Igmp == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -194,21 +190,21 @@ Ip4SendIgmpMessage ( Igmp->MaxRespTime = 0; Igmp->Checksum = 0; Igmp->Group = HTONL (Group); - Igmp->Checksum = (UINT16) (~NetblockChecksum ((UINT8 *) Igmp, sizeof (IGMP_HEAD))); + Igmp->Checksum = (UINT16)(~NetblockChecksum ((UINT8 *)Igmp, sizeof (IGMP_HEAD))); - Head.Tos = 0; - Head.Protocol = IP4_PROTO_IGMP; - Head.Ttl = 1; - Head.Fragment = 0; - Head.Dst = Dst; - Head.Src = IP4_ALLZERO_ADDRESS; + Head.Tos = 0; + Head.Protocol = IP4_PROTO_IGMP; + Head.Ttl = 1; + Head.Fragment = 0; + Head.Dst = Dst; + Head.Src = IP4_ALLZERO_ADDRESS; return Ip4Output ( IpSb, NULL, Packet, &Head, - (UINT8 *) &mRouteAlertOption, + (UINT8 *)&mRouteAlertOption, sizeof (UINT32), IP4_ALLZERO_ADDRESS, Ip4SysPacketSent, @@ -216,7 +212,6 @@ Ip4SendIgmpMessage ( ); } - /** Send an IGMP membership report. Depends on whether the server is v1 or v2, it will send either a V1 or V2 membership report. @@ -232,8 +227,8 @@ Ip4SendIgmpMessage ( **/ EFI_STATUS Ip4SendIgmpReport ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Group + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Group ) { if (IpSb->IgmpCtrl.Igmpv1QuerySeen != 0) { @@ -243,7 +238,6 @@ Ip4SendIgmpReport ( } } - /** Join the multicast group on behalf of this IP4 child @@ -257,8 +251,8 @@ Ip4SendIgmpReport ( **/ EFI_STATUS Ip4JoinGroup ( - IN IP4_PROTOCOL *IpInstance, - IN IP4_ADDR Address + IN IP4_PROTOCOL *IpInstance, + IN IP4_ADDR Address ) { EFI_MANAGED_NETWORK_PROTOCOL *Mnp; @@ -267,15 +261,15 @@ Ip4JoinGroup ( IGMP_GROUP *Group; EFI_STATUS Status; - IpSb = IpInstance->Service; - IgmpCtrl = &IpSb->IgmpCtrl; - Mnp = IpSb->Mnp; + IpSb = IpInstance->Service; + IgmpCtrl = &IpSb->IgmpCtrl; + Mnp = IpSb->Mnp; // // If the IP service already is a member in the group, just // increase the reference count and return. // - Group = Ip4FindGroup (IgmpCtrl, Address); + Group = Ip4FindGroup (IgmpCtrl, Address); if (Group != NULL) { Group->RefCnt++; @@ -323,7 +317,6 @@ ON_ERROR: return Status; } - /** Leave the IP4 multicast group on behalf of IpInstance. @@ -338,8 +331,8 @@ ON_ERROR: **/ EFI_STATUS Ip4LeaveGroup ( - IN IP4_PROTOCOL *IpInstance, - IN IP4_ADDR Address + IN IP4_PROTOCOL *IpInstance, + IN IP4_ADDR Address ) { EFI_MANAGED_NETWORK_PROTOCOL *Mnp; @@ -348,11 +341,11 @@ Ip4LeaveGroup ( IGMP_GROUP *Group; EFI_STATUS Status; - IpSb = IpInstance->Service; - IgmpCtrl = &IpSb->IgmpCtrl; - Mnp = IpSb->Mnp; + IpSb = IpInstance->Service; + IgmpCtrl = &IpSb->IgmpCtrl; + Mnp = IpSb->Mnp; - Group = Ip4FindGroup (IgmpCtrl, Address); + Group = Ip4FindGroup (IgmpCtrl, Address); if (Group == NULL) { return EFI_NOT_FOUND; @@ -383,7 +376,7 @@ Ip4LeaveGroup ( // Send a leave report if the membership is reported by us // and we are talking IGMPv2. // - if (Group->ReportByUs && IgmpCtrl->Igmpv1QuerySeen == 0) { + if (Group->ReportByUs && (IgmpCtrl->Igmpv1QuerySeen == 0)) { Ip4SendIgmpMessage (IpSb, IP4_ALLROUTER_ADDRESS, IGMP_LEAVE_GROUP, Group->Address); } @@ -393,7 +386,6 @@ Ip4LeaveGroup ( return EFI_SUCCESS; } - /** Handle the received IGMP message for the IP4 service instance. @@ -407,16 +399,16 @@ Ip4LeaveGroup ( **/ EFI_STATUS Ip4IgmpHandle ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet ) { - IGMP_SERVICE_DATA *IgmpCtrl; - IGMP_HEAD Igmp; - IGMP_GROUP *Group; - IP4_ADDR Address; - LIST_ENTRY *Entry; + IGMP_SERVICE_DATA *IgmpCtrl; + IGMP_HEAD Igmp; + IGMP_GROUP *Group; + IP4_ADDR Address; + LIST_ENTRY *Entry; IgmpCtrl = &IpSb->IgmpCtrl; @@ -436,65 +428,64 @@ Ip4IgmpHandle ( NetbufCopy (Packet, 0, sizeof (IGMP_HEAD), (UINT8 *)&Igmp); switch (Igmp.Type) { - case IGMP_MEMBERSHIP_QUERY: - // - // If MaxRespTime is zero, it is most likely that we are - // talking to a V1 router - // - if (Igmp.MaxRespTime == 0) { - IgmpCtrl->Igmpv1QuerySeen = IGMP_V1ROUTER_PRESENT; - Igmp.MaxRespTime = 100; - } + case IGMP_MEMBERSHIP_QUERY: + // + // If MaxRespTime is zero, it is most likely that we are + // talking to a V1 router + // + if (Igmp.MaxRespTime == 0) { + IgmpCtrl->Igmpv1QuerySeen = IGMP_V1ROUTER_PRESENT; + Igmp.MaxRespTime = 100; + } - // - // Igmp is ticking once per second but MaxRespTime is in - // the unit of 100ms. - // - Igmp.MaxRespTime /= 10; - Address = NTOHL (Igmp.Group); + // + // Igmp is ticking once per second but MaxRespTime is in + // the unit of 100ms. + // + Igmp.MaxRespTime /= 10; + Address = NTOHL (Igmp.Group); - if (Address == IP4_ALLSYSTEM_ADDRESS) { - break; - } + if (Address == IP4_ALLSYSTEM_ADDRESS) { + break; + } - NET_LIST_FOR_EACH (Entry, &IgmpCtrl->Groups) { - Group = NET_LIST_USER_STRUCT (Entry, IGMP_GROUP, Link); + NET_LIST_FOR_EACH (Entry, &IgmpCtrl->Groups) { + Group = NET_LIST_USER_STRUCT (Entry, IGMP_GROUP, Link); - // - // If address is all zero, all the memberships will be reported. - // otherwise only one is reported. - // - if ((Address == IP4_ALLZERO_ADDRESS) || (Address == Group->Address)) { // - // If the timer is pending, only update it if the time left - // is longer than the MaxRespTime. TODO: randomize the DelayTime. + // If address is all zero, all the memberships will be reported. + // otherwise only one is reported. // - if ((Group->DelayTime == 0) || (Group->DelayTime > Igmp.MaxRespTime)) { - Group->DelayTime = MAX (1, Igmp.MaxRespTime); + if ((Address == IP4_ALLZERO_ADDRESS) || (Address == Group->Address)) { + // + // If the timer is pending, only update it if the time left + // is longer than the MaxRespTime. TODO: randomize the DelayTime. + // + if ((Group->DelayTime == 0) || (Group->DelayTime > Igmp.MaxRespTime)) { + Group->DelayTime = MAX (1, Igmp.MaxRespTime); + } } } - } - break; + break; - case IGMP_V1_MEMBERSHIP_REPORT: - case IGMP_V2_MEMBERSHIP_REPORT: - Address = NTOHL (Igmp.Group); - Group = Ip4FindGroup (IgmpCtrl, Address); + case IGMP_V1_MEMBERSHIP_REPORT: + case IGMP_V2_MEMBERSHIP_REPORT: + Address = NTOHL (Igmp.Group); + Group = Ip4FindGroup (IgmpCtrl, Address); - if ((Group != NULL) && (Group->DelayTime > 0)) { - Group->DelayTime = 0; - Group->ReportByUs = FALSE; - } + if ((Group != NULL) && (Group->DelayTime > 0)) { + Group->DelayTime = 0; + Group->ReportByUs = FALSE; + } - break; + break; } NetbufFree (Packet); return EFI_SUCCESS; } - /** The periodical timer function for IGMP. It does the following things: @@ -508,12 +499,12 @@ Ip4IgmpHandle ( **/ VOID Ip4IgmpTicking ( - IN IP4_SERVICE *IpSb + IN IP4_SERVICE *IpSb ) { - IGMP_SERVICE_DATA *IgmpCtrl; - LIST_ENTRY *Entry; - IGMP_GROUP *Group; + IGMP_SERVICE_DATA *IgmpCtrl; + LIST_ENTRY *Entry; + IGMP_GROUP *Group; IgmpCtrl = &IpSb->IgmpCtrl; @@ -539,7 +530,6 @@ Ip4IgmpTicking ( } } - /** Add a group address to the array of group addresses. The caller should make sure that no duplicated address @@ -557,12 +547,12 @@ Ip4IgmpTicking ( **/ IP4_ADDR * Ip4CombineGroups ( - IN IP4_ADDR *Source, - IN UINT32 Count, - IN IP4_ADDR Addr + IN IP4_ADDR *Source, + IN UINT32 Count, + IN IP4_ADDR Addr ) { - IP4_ADDR *Groups; + IP4_ADDR *Groups; Groups = AllocatePool (sizeof (IP4_ADDR) * (Count + 1)); @@ -576,7 +566,6 @@ Ip4CombineGroups ( return Groups; } - /** Remove a group address from the array of group addresses. Although the function doesn't assume the byte order of the @@ -593,12 +582,12 @@ Ip4CombineGroups ( **/ INTN Ip4RemoveGroupAddr ( - IN OUT IP4_ADDR *Groups, - IN UINT32 Count, - IN IP4_ADDR Addr + IN OUT IP4_ADDR *Groups, + IN UINT32 Count, + IN IP4_ADDR Addr ) { - UINT32 Index; + UINT32 Index; for (Index = 0; Index < Count; Index++) { if (Groups[Index] == Addr) { diff --git a/NetworkPkg/Ip4Dxe/Ip4Igmp.h b/NetworkPkg/Ip4Dxe/Ip4Igmp.h index 56631bd4af..d5028aea7c 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Igmp.h +++ b/NetworkPkg/Ip4Dxe/Ip4Igmp.h @@ -16,15 +16,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define IGMP_V2_MEMBERSHIP_REPORT 0x16 #define IGMP_LEAVE_GROUP 0x17 -#define IGMP_V1ROUTER_PRESENT 400 -#define IGMP_UNSOLICIATED_REPORT 10 +#define IGMP_V1ROUTER_PRESENT 400 +#define IGMP_UNSOLICIATED_REPORT 10 #pragma pack(1) typedef struct { - UINT8 Type; - UINT8 MaxRespTime; - UINT16 Checksum; - IP4_ADDR Group; + UINT8 Type; + UINT8 MaxRespTime; + UINT16 Checksum; + IP4_ADDR Group; } IGMP_HEAD; #pragma pack() @@ -35,12 +35,12 @@ typedef struct { /// "idle member" state. /// typedef struct { - LIST_ENTRY Link; - INTN RefCnt; - IP4_ADDR Address; - INTN DelayTime; - BOOLEAN ReportByUs; - EFI_MAC_ADDRESS Mac; + LIST_ENTRY Link; + INTN RefCnt; + IP4_ADDR Address; + INTN DelayTime; + BOOLEAN ReportByUs; + EFI_MAC_ADDRESS Mac; } IGMP_GROUP; /// @@ -49,8 +49,8 @@ typedef struct { /// connected network is v1 or v2. /// typedef struct { - INTN Igmpv1QuerySeen; - LIST_ENTRY Groups; + INTN Igmpv1QuerySeen; + LIST_ENTRY Groups; } IGMP_SERVICE_DATA; /** @@ -66,7 +66,7 @@ typedef struct { **/ EFI_STATUS Ip4InitIgmp ( - IN OUT IP4_SERVICE *IpSb + IN OUT IP4_SERVICE *IpSb ); /** @@ -82,8 +82,8 @@ Ip4InitIgmp ( **/ EFI_STATUS Ip4JoinGroup ( - IN IP4_PROTOCOL *IpInstance, - IN IP4_ADDR Address + IN IP4_PROTOCOL *IpInstance, + IN IP4_ADDR Address ); /** @@ -100,8 +100,8 @@ Ip4JoinGroup ( **/ EFI_STATUS Ip4LeaveGroup ( - IN IP4_PROTOCOL *IpInstance, - IN IP4_ADDR Address + IN IP4_PROTOCOL *IpInstance, + IN IP4_ADDR Address ); /** @@ -117,9 +117,9 @@ Ip4LeaveGroup ( **/ EFI_STATUS Ip4IgmpHandle ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet ); /** @@ -135,7 +135,7 @@ Ip4IgmpHandle ( **/ VOID Ip4IgmpTicking ( - IN IP4_SERVICE *IpSb + IN IP4_SERVICE *IpSb ); /** @@ -155,9 +155,9 @@ Ip4IgmpTicking ( **/ IP4_ADDR * Ip4CombineGroups ( - IN IP4_ADDR *Source, - IN UINT32 Count, - IN IP4_ADDR Addr + IN IP4_ADDR *Source, + IN UINT32 Count, + IN IP4_ADDR Addr ); /** @@ -176,9 +176,9 @@ Ip4CombineGroups ( **/ INTN Ip4RemoveGroupAddr ( - IN OUT IP4_ADDR *Groups, - IN UINT32 Count, - IN IP4_ADDR Addr + IN OUT IP4_ADDR *Groups, + IN UINT32 Count, + IN IP4_ADDR Addr ); /** @@ -195,7 +195,8 @@ Ip4RemoveGroupAddr ( **/ IGMP_GROUP * Ip4FindGroup ( - IN IGMP_SERVICE_DATA *IgmpCtrl, - IN IP4_ADDR Address + IN IGMP_SERVICE_DATA *IgmpCtrl, + IN IP4_ADDR Address ); + #endif diff --git a/NetworkPkg/Ip4Dxe/Ip4Impl.c b/NetworkPkg/Ip4Dxe/Ip4Impl.c index 5935d405dd..4786214b12 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Impl.c +++ b/NetworkPkg/Ip4Dxe/Ip4Impl.c @@ -7,7 +7,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Ip4Impl.h" -EFI_IPSEC2_PROTOCOL *mIpSec = NULL; +EFI_IPSEC2_PROTOCOL *mIpSec = NULL; /** Gets the current operational settings for this instance of the EFI IPv4 Protocol driver. @@ -30,10 +30,10 @@ EFI_IPSEC2_PROTOCOL *mIpSec = NULL; 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 + 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 ); /** @@ -82,8 +82,8 @@ EfiIp4GetModeData ( EFI_STATUS EFIAPI EfiIp4Configure ( - IN EFI_IP4_PROTOCOL *This, - IN EFI_IP4_CONFIG_DATA *IpConfigData OPTIONAL + IN EFI_IP4_PROTOCOL *This, + IN EFI_IP4_CONFIG_DATA *IpConfigData OPTIONAL ); /** @@ -119,9 +119,9 @@ EfiIp4Configure ( EFI_STATUS EFIAPI EfiIp4Groups ( - IN EFI_IP4_PROTOCOL *This, - IN BOOLEAN JoinFlag, - IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL + IN EFI_IP4_PROTOCOL *This, + IN BOOLEAN JoinFlag, + IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL ); /** @@ -177,11 +177,11 @@ EfiIp4Groups ( EFI_STATUS EFIAPI EfiIp4Routes ( - IN EFI_IP4_PROTOCOL *This, - IN BOOLEAN DeleteRoute, - IN EFI_IPv4_ADDRESS *SubnetAddress, - IN EFI_IPv4_ADDRESS *SubnetMask, - IN EFI_IPv4_ADDRESS *GatewayAddress + IN EFI_IP4_PROTOCOL *This, + IN BOOLEAN DeleteRoute, + IN EFI_IPv4_ADDRESS *SubnetAddress, + IN EFI_IPv4_ADDRESS *SubnetMask, + IN EFI_IPv4_ADDRESS *GatewayAddress ); /** @@ -216,8 +216,8 @@ EfiIp4Routes ( EFI_STATUS EFIAPI EfiIp4Transmit ( - IN EFI_IP4_PROTOCOL *This, - IN EFI_IP4_COMPLETION_TOKEN *Token + IN EFI_IP4_PROTOCOL *This, + IN EFI_IP4_COMPLETION_TOKEN *Token ); /** @@ -255,8 +255,8 @@ EfiIp4Transmit ( EFI_STATUS EFIAPI EfiIp4Receive ( - IN EFI_IP4_PROTOCOL *This, - IN EFI_IP4_COMPLETION_TOKEN *Token + IN EFI_IP4_PROTOCOL *This, + IN EFI_IP4_COMPLETION_TOKEN *Token ); /** @@ -291,8 +291,8 @@ EfiIp4Receive ( EFI_STATUS EFIAPI EfiIp4Cancel ( - IN EFI_IP4_PROTOCOL *This, - IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL + IN EFI_IP4_PROTOCOL *This, + IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL ); /** @@ -325,11 +325,11 @@ EfiIp4Cancel ( EFI_STATUS EFIAPI EfiIp4Poll ( - IN EFI_IP4_PROTOCOL *This + IN EFI_IP4_PROTOCOL *This ); EFI_IP4_PROTOCOL -mEfiIp4ProtocolTemplete = { + mEfiIp4ProtocolTemplete = { EfiIp4GetModeData, EfiIp4Configure, EfiIp4Groups, @@ -361,18 +361,18 @@ mEfiIp4ProtocolTemplete = { 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 + 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 ) { - IP4_PROTOCOL *IpInstance; - IP4_SERVICE *IpSb; - EFI_IP4_CONFIG_DATA *Config; - EFI_STATUS Status; - EFI_TPL OldTpl; - IP4_ADDR Ip; + IP4_PROTOCOL *IpInstance; + IP4_SERVICE *IpSb; + EFI_IP4_CONFIG_DATA *Config; + EFI_STATUS Status; + EFI_TPL OldTpl; + IP4_ADDR Ip; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -387,18 +387,18 @@ EfiIp4GetModeData ( // IsStarted is "whether the EfiIp4Configure has been called". // IsConfigured is "whether the station address has been configured" // - Ip4ModeData->IsStarted = (BOOLEAN)(IpInstance->State == IP4_STATE_CONFIGED); + Ip4ModeData->IsStarted = (BOOLEAN)(IpInstance->State == IP4_STATE_CONFIGED); CopyMem (&Ip4ModeData->ConfigData, &IpInstance->ConfigData, sizeof (Ip4ModeData->ConfigData)); - Ip4ModeData->IsConfigured = FALSE; + Ip4ModeData->IsConfigured = FALSE; - Ip4ModeData->GroupCount = IpInstance->GroupCount; - Ip4ModeData->GroupTable = (EFI_IPv4_ADDRESS *) IpInstance->Groups; + Ip4ModeData->GroupCount = IpInstance->GroupCount; + Ip4ModeData->GroupTable = (EFI_IPv4_ADDRESS *)IpInstance->Groups; Ip4ModeData->IcmpTypeCount = 23; Ip4ModeData->IcmpTypeList = mIp4SupportedIcmp; - Ip4ModeData->RouteTable = NULL; - Ip4ModeData->RouteCount = 0; + Ip4ModeData->RouteTable = NULL; + Ip4ModeData->RouteCount = 0; Ip4ModeData->MaxPacketSize = IpSb->MaxPacketSize; @@ -409,7 +409,7 @@ EfiIp4GetModeData ( // using the default one, such as a ftp server. // if (Ip4ModeData->IsStarted) { - Config = &Ip4ModeData->ConfigData; + Config = &Ip4ModeData->ConfigData; Ip = HTONL (IpInstance->Interface->Ip); CopyMem (&Config->StationAddress, &Ip, sizeof (EFI_IPv4_ADDRESS)); @@ -443,7 +443,6 @@ EfiIp4GetModeData ( return Status; } - /** Config the MNP parameter used by IP. The IP driver use one MNP child to transmit/receive frames. By default, it configures MNP @@ -464,17 +463,17 @@ EfiIp4GetModeData ( **/ EFI_STATUS Ip4ServiceConfigMnp ( - IN IP4_SERVICE *IpSb, - IN BOOLEAN Force + IN IP4_SERVICE *IpSb, + IN BOOLEAN Force ) { - LIST_ENTRY *Entry; - LIST_ENTRY *ProtoEntry; - IP4_INTERFACE *IpIf; - IP4_PROTOCOL *IpInstance; - BOOLEAN Reconfig; - BOOLEAN PromiscReceive; - EFI_STATUS Status; + LIST_ENTRY *Entry; + LIST_ENTRY *ProtoEntry; + IP4_INTERFACE *IpIf; + IP4_PROTOCOL *IpInstance; + BOOLEAN Reconfig; + BOOLEAN PromiscReceive; + EFI_STATUS Status; Reconfig = FALSE; PromiscReceive = FALSE; @@ -486,7 +485,6 @@ Ip4ServiceConfigMnp ( // filter also. // NET_LIST_FOR_EACH (Entry, &IpSb->Interfaces) { - IpIf = NET_LIST_USER_STRUCT (Entry, IP4_INTERFACE, Link); IpIf->PromiscRecv = FALSE; @@ -507,7 +505,7 @@ Ip4ServiceConfigMnp ( return EFI_SUCCESS; } - Reconfig = TRUE; + Reconfig = TRUE; IpSb->MnpConfigData.EnablePromiscuousReceive = PromiscReceive; } @@ -523,7 +521,6 @@ Ip4ServiceConfigMnp ( return Status; } - /** Initialize the IP4_PROTOCOL structure to the unconfigured states. @@ -533,8 +530,8 @@ Ip4ServiceConfigMnp ( **/ VOID Ip4InitProtocol ( - IN IP4_SERVICE *IpSb, - IN OUT IP4_PROTOCOL *IpInstance + IN IP4_SERVICE *IpSb, + IN OUT IP4_PROTOCOL *IpInstance ) { ASSERT ((IpSb != NULL) && (IpInstance != NULL)); @@ -544,12 +541,12 @@ Ip4InitProtocol ( IpInstance->Signature = IP4_PROTOCOL_SIGNATURE; CopyMem (&IpInstance->Ip4Proto, &mEfiIp4ProtocolTemplete, sizeof (IpInstance->Ip4Proto)); IpInstance->State = IP4_STATE_UNCONFIGED; - IpInstance->InDestroy = FALSE; + IpInstance->InDestroy = FALSE; IpInstance->Service = IpSb; InitializeListHead (&IpInstance->Link); - NetMapInit (&IpInstance->RxTokens); - NetMapInit (&IpInstance->TxTokens); + NetMapInit (&IpInstance->RxTokens); + NetMapInit (&IpInstance->TxTokens); InitializeListHead (&IpInstance->Received); InitializeListHead (&IpInstance->Delivered); InitializeListHead (&IpInstance->AddrLink); @@ -557,7 +554,6 @@ Ip4InitProtocol ( EfiInitializeLock (&IpInstance->RecycleLock, TPL_NOTIFY); } - /** Configure the IP4 child. If the child is already configured, change the configuration parameter. Otherwise configure it @@ -595,7 +591,7 @@ Ip4ConfigProtocol ( IpSb = IpInstance->Service; - Ip4Config2 = NULL; + Ip4Config2 = NULL; // // User is changing packet filters. It must be stopped @@ -646,7 +642,6 @@ Ip4ConfigProtocol ( if (IpIf != NULL) { NET_GET_REF (IpIf); - } else { IpIf = Ip4CreateInterface (IpSb->Mnp, IpSb->Controller, IpSb->Image); @@ -686,13 +681,13 @@ Ip4ConfigProtocol ( Policy = IpSb->Ip4Config2Instance.Policy; if (Policy != Ip4Config2PolicyDhcp) { Ip4Config2 = &IpSb->Ip4Config2Instance.Ip4Config2; - Policy = Ip4Config2PolicyDhcp; - Status= Ip4Config2->SetData ( - Ip4Config2, - Ip4Config2DataTypePolicy, - sizeof (EFI_IP4_CONFIG2_POLICY), - &Policy - ); + Policy = Ip4Config2PolicyDhcp; + Status = Ip4Config2->SetData ( + Ip4Config2, + Ip4Config2DataTypePolicy, + sizeof (EFI_IP4_CONFIG2_POLICY), + &Policy + ); if (EFI_ERROR (Status)) { goto ON_ERROR; } @@ -715,11 +710,11 @@ Ip4ConfigProtocol ( IpInstance->Interface = IpIf; if (IpIf->Arp != NULL) { - Arp = NULL; + Arp = NULL; Status = gBS->OpenProtocol ( IpIf->ArpHandle, &gEfiArpProtocolGuid, - (VOID **) &Arp, + (VOID **)&Arp, gIp4DriverBinding.DriverBindingHandle, IpInstance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -729,10 +724,11 @@ Ip4ConfigProtocol ( goto ON_ERROR; } } + InsertTailList (&IpIf->IpInstances, &IpInstance->AddrLink); CopyMem (&IpInstance->ConfigData, Config, sizeof (IpInstance->ConfigData)); - IpInstance->State = IP4_STATE_CONFIGED; + IpInstance->State = IP4_STATE_CONFIGED; // // Although EFI_NO_MAPPING is an error code, the IP child has been @@ -751,7 +747,6 @@ ON_ERROR: return Status; } - /** Clean up the IP4 child, release all the resources used by it. @@ -763,7 +758,7 @@ ON_ERROR: **/ EFI_STATUS Ip4CleanProtocol ( - IN IP4_PROTOCOL *IpInstance + IN IP4_PROTOCOL *IpInstance ) { if (EFI_ERROR (Ip4Cancel (IpInstance, NULL))) { @@ -780,7 +775,6 @@ Ip4CleanProtocol ( // hasn't been called. Just leave it alone. // if (!IsListEmpty (&IpInstance->Delivered)) { - ; } if (IpInstance->Interface != NULL) { @@ -793,6 +787,7 @@ Ip4CleanProtocol ( IpInstance->Handle ); } + Ip4FreeInterface (IpInstance->Interface, IpInstance); IpInstance->Interface = NULL; } @@ -814,8 +809,8 @@ Ip4CleanProtocol ( if (IpInstance->Groups != NULL) { FreePool (IpInstance->Groups); - IpInstance->Groups = NULL; - IpInstance->GroupCount = 0; + IpInstance->Groups = NULL; + IpInstance->GroupCount = 0; } NetMapClean (&IpInstance->TxTokens); @@ -825,7 +820,6 @@ Ip4CleanProtocol ( return EFI_SUCCESS; } - /** Assigns an IPv4 address and subnet mask to this EFI IPv4 Protocol driver instance. @@ -872,17 +866,17 @@ Ip4CleanProtocol ( EFI_STATUS EFIAPI EfiIp4Configure ( - IN EFI_IP4_PROTOCOL *This, - IN EFI_IP4_CONFIG_DATA *IpConfigData OPTIONAL + IN EFI_IP4_PROTOCOL *This, + IN EFI_IP4_CONFIG_DATA *IpConfigData OPTIONAL ) { - IP4_PROTOCOL *IpInstance; - EFI_IP4_CONFIG_DATA *Current; - EFI_TPL OldTpl; - EFI_STATUS Status; - BOOLEAN AddrOk; - IP4_ADDR IpAddress; - IP4_ADDR SubnetMask; + IP4_PROTOCOL *IpInstance; + EFI_IP4_CONFIG_DATA *Current; + EFI_TPL OldTpl; + EFI_STATUS Status; + BOOLEAN AddrOk; + IP4_ADDR IpAddress; + IP4_ADDR SubnetMask; // // First, validate the parameters @@ -898,7 +892,6 @@ EfiIp4Configure ( // Validate the configuration first. // if (IpConfigData != NULL) { - CopyMem (&IpAddress, &IpConfigData->StationAddress, sizeof (IP4_ADDR)); CopyMem (&SubnetMask, &IpConfigData->SubnetMask, sizeof (IP4_ADDR)); @@ -931,8 +924,9 @@ EfiIp4Configure ( } if (!Current->UseDefaultAddress && - (!EFI_IP4_EQUAL (&Current->StationAddress, &IpConfigData->StationAddress) || - !EFI_IP4_EQUAL (&Current->SubnetMask, &IpConfigData->SubnetMask))) { + (!EFI_IP4_EQUAL (&Current->StationAddress, &IpConfigData->StationAddress) || + !EFI_IP4_EQUAL (&Current->SubnetMask, &IpConfigData->SubnetMask))) + { Status = EFI_ALREADY_STARTED; goto ON_EXIT; } @@ -971,10 +965,8 @@ EfiIp4Configure ( ON_EXIT: gBS->RestoreTPL (OldTpl); return Status; - } - /** Change the IP4 child's multicast setting. The caller should make sure that the parameters is valid. @@ -992,14 +984,14 @@ ON_EXIT: **/ EFI_STATUS Ip4Groups ( - IN IP4_PROTOCOL *IpInstance, - IN BOOLEAN JoinFlag, - IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL + IN IP4_PROTOCOL *IpInstance, + IN BOOLEAN JoinFlag, + IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL ) { - IP4_ADDR *Members; - IP4_ADDR Group; - UINT32 Index; + IP4_ADDR *Members; + IP4_ADDR Group; + UINT32 Index; // // Add it to the instance's Groups, and join the group by IGMP. @@ -1045,7 +1037,7 @@ Ip4Groups ( // Must iterate from the end to the beginning because the GroupCount // is decremented each time an address is removed.. // - for (Index = IpInstance->GroupCount; Index > 0 ; Index--) { + for (Index = IpInstance->GroupCount; Index > 0; Index--) { ASSERT (IpInstance->Groups != NULL); Group = IpInstance->Groups[Index - 1]; if ((GroupAddress == NULL) || EFI_IP4_EQUAL (&Group, GroupAddress)) { @@ -1072,7 +1064,6 @@ Ip4Groups ( return ((GroupAddress != NULL) ? EFI_NOT_FOUND : EFI_SUCCESS); } - /** Joins and leaves multicast groups. @@ -1106,15 +1097,15 @@ Ip4Groups ( EFI_STATUS EFIAPI EfiIp4Groups ( - IN EFI_IP4_PROTOCOL *This, - IN BOOLEAN JoinFlag, - IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL + IN EFI_IP4_PROTOCOL *This, + IN BOOLEAN JoinFlag, + IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL ) { - IP4_PROTOCOL *IpInstance; - EFI_STATUS Status; - EFI_TPL OldTpl; - IP4_ADDR McastIp; + IP4_PROTOCOL *IpInstance; + EFI_STATUS Status; + EFI_TPL OldTpl; + IP4_ADDR McastIp; if ((This == NULL) || (JoinFlag && (GroupAddress == NULL))) { return EFI_INVALID_PARAMETER; @@ -1148,7 +1139,6 @@ ON_EXIT: return Status; } - /** Adds and deletes routing table entries. @@ -1202,26 +1192,27 @@ ON_EXIT: EFI_STATUS EFIAPI EfiIp4Routes ( - IN EFI_IP4_PROTOCOL *This, - IN BOOLEAN DeleteRoute, - IN EFI_IPv4_ADDRESS *SubnetAddress, - IN EFI_IPv4_ADDRESS *SubnetMask, - IN EFI_IPv4_ADDRESS *GatewayAddress + IN EFI_IP4_PROTOCOL *This, + IN BOOLEAN DeleteRoute, + IN EFI_IPv4_ADDRESS *SubnetAddress, + IN EFI_IPv4_ADDRESS *SubnetMask, + IN EFI_IPv4_ADDRESS *GatewayAddress ) { - IP4_PROTOCOL *IpInstance; - IP4_INTERFACE *IpIf; - IP4_ADDR Dest; - IP4_ADDR Netmask; - IP4_ADDR Nexthop; - EFI_STATUS Status; - EFI_TPL OldTpl; + IP4_PROTOCOL *IpInstance; + IP4_INTERFACE *IpIf; + IP4_ADDR Dest; + IP4_ADDR Netmask; + IP4_ADDR Nexthop; + EFI_STATUS Status; + EFI_TPL OldTpl; // // First, validate the parameters // if ((This == NULL) || (SubnetAddress == NULL) || - (SubnetMask == NULL) || (GatewayAddress == NULL)) { + (SubnetMask == NULL) || (GatewayAddress == NULL)) + { return EFI_INVALID_PARAMETER; } @@ -1246,7 +1237,7 @@ EfiIp4Routes ( Netmask = NTOHL (Netmask); Nexthop = NTOHL (Nexthop); - IpIf = IpInstance->Interface; + IpIf = IpInstance->Interface; if (!IP4_IS_VALID_NETMASK (Netmask)) { Status = EFI_INVALID_PARAMETER; @@ -1257,9 +1248,9 @@ EfiIp4Routes ( // the gateway address must be a unicast on the connected network if not zero. // if ((Nexthop != IP4_ALLZERO_ADDRESS) && - ((IpIf->SubnetMask != IP4_ALLONE_ADDRESS && !IP4_NET_EQUAL (Nexthop, IpIf->Ip, IpIf->SubnetMask)) || - IP4_IS_BROADCAST (Ip4GetNetCast (Nexthop, IpIf)))) { - + (((IpIf->SubnetMask != IP4_ALLONE_ADDRESS) && !IP4_NET_EQUAL (Nexthop, IpIf->Ip, IpIf->SubnetMask)) || + IP4_IS_BROADCAST (Ip4GetNetCast (Nexthop, IpIf)))) + { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } @@ -1275,7 +1266,6 @@ ON_EXIT: return Status; } - /** Check whether the user's token or event has already been enqueued on IP4's list. @@ -1293,16 +1283,16 @@ ON_EXIT: EFI_STATUS EFIAPI Ip4TokenExist ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { EFI_IP4_COMPLETION_TOKEN *Token; EFI_IP4_COMPLETION_TOKEN *TokenInItem; - Token = (EFI_IP4_COMPLETION_TOKEN *) Context; - TokenInItem = (EFI_IP4_COMPLETION_TOKEN *) Item->Key; + Token = (EFI_IP4_COMPLETION_TOKEN *)Context; + TokenInItem = (EFI_IP4_COMPLETION_TOKEN *)Item->Key; if ((Token == TokenInItem) || (Token->Event == TokenInItem->Event)) { return EFI_ACCESS_DENIED; @@ -1325,18 +1315,18 @@ Ip4TokenExist ( **/ EFI_STATUS Ip4TxTokenValid ( - IN EFI_IP4_COMPLETION_TOKEN *Token, - IN IP4_INTERFACE *IpIf, - IN BOOLEAN RawData + IN EFI_IP4_COMPLETION_TOKEN *Token, + IN IP4_INTERFACE *IpIf, + IN BOOLEAN RawData ) { - EFI_IP4_TRANSMIT_DATA *TxData; - EFI_IP4_OVERRIDE_DATA *Override; - IP4_ADDR Src; - IP4_ADDR Gateway; - UINT32 Offset; - UINT32 Index; - UINT32 HeadLen; + EFI_IP4_TRANSMIT_DATA *TxData; + EFI_IP4_OVERRIDE_DATA *Override; + IP4_ADDR Src; + IP4_ADDR Gateway; + UINT32 Offset; + UINT32 Index; + UINT32 HeadLen; if ((Token == NULL) || (Token->Event == NULL) || (Token->Packet.TxData == NULL)) { return EFI_INVALID_PARAMETER; @@ -1359,8 +1349,8 @@ Ip4TxTokenValid ( for (Index = 0; Index < TxData->FragmentCount; Index++) { if ((TxData->FragmentTable[Index].FragmentBuffer == NULL) || - (TxData->FragmentTable[Index].FragmentLength == 0)) { - + (TxData->FragmentTable[Index].FragmentLength == 0)) + { return EFI_INVALID_PARAMETER; } @@ -1407,8 +1397,8 @@ Ip4TxTokenValid ( if ((NetGetIpClass (Src) > IP4_ADDR_CLASSC) || (Src == IP4_ALLONE_ADDRESS) || - IP4_IS_BROADCAST (Ip4GetNetCast (Src, IpIf))) { - + IP4_IS_BROADCAST (Ip4GetNetCast (Src, IpIf))) + { return EFI_INVALID_PARAMETER; } @@ -1419,8 +1409,8 @@ Ip4TxTokenValid ( if ((Gateway != IP4_ALLZERO_ADDRESS) && ((NetGetIpClass (Gateway) > IP4_ADDR_CLASSC) || !IP4_NET_EQUAL (Gateway, IpIf->Ip, IpIf->SubnetMask) || - IP4_IS_BROADCAST (Ip4GetNetCast (Gateway, IpIf)))) { - + IP4_IS_BROADCAST (Ip4GetNetCast (Gateway, IpIf)))) + { return EFI_INVALID_PARAMETER; } } @@ -1431,15 +1421,14 @@ Ip4TxTokenValid ( HeadLen = sizeof (IP4_HEAD) + ((TxData->OptionsLength + 3) &~0x03); if ((HeadLen > IP4_MAX_HEADLEN) || - (TxData->TotalDataLength + HeadLen > IP4_MAX_PACKET_SIZE)) { - + (TxData->TotalDataLength + HeadLen > IP4_MAX_PACKET_SIZE)) + { return EFI_BAD_BUFFER_SIZE; } return EFI_SUCCESS; } - /** The callback function for the net buffer which wraps the user's transmit token. Although it seems this function is pretty simple, @@ -1464,13 +1453,13 @@ Ip4TxTokenValid ( VOID EFIAPI Ip4FreeTxToken ( - IN VOID *Context + IN VOID *Context ) { - IP4_TXTOKEN_WRAP *Wrap; - NET_MAP_ITEM *Item; + IP4_TXTOKEN_WRAP *Wrap; + NET_MAP_ITEM *Item; - Wrap = (IP4_TXTOKEN_WRAP *) Context; + Wrap = (IP4_TXTOKEN_WRAP *)Context; // // Signal IpSecRecycleEvent to inform IPsec free the memory @@ -1501,7 +1490,6 @@ Ip4FreeTxToken ( FreePool (Wrap); } - /** The callback function to Ip4Output to update the transmit status. @@ -1514,14 +1502,14 @@ Ip4FreeTxToken ( **/ VOID Ip4OnPacketSent ( - IP4_PROTOCOL *Ip4Instance, - NET_BUF *Packet, - EFI_STATUS IoStatus, - UINT32 Flag, - VOID *Context + IP4_PROTOCOL *Ip4Instance, + NET_BUF *Packet, + EFI_STATUS IoStatus, + UINT32 Flag, + VOID *Context ) { - IP4_TXTOKEN_WRAP *Wrap; + IP4_TXTOKEN_WRAP *Wrap; // // This is the transmission request from upper layer, @@ -1536,13 +1524,12 @@ Ip4OnPacketSent ( // release when all the fragments are release. Check the comments // in Ip4FreeTxToken and Ip4Output for information. // - Wrap = (IP4_TXTOKEN_WRAP *) Context; + Wrap = (IP4_TXTOKEN_WRAP *)Context; Wrap->Token->Status = IoStatus; NetbufFree (Wrap->Packet); } - /** Places outgoing data packets into the transmit queue. @@ -1575,27 +1562,27 @@ Ip4OnPacketSent ( EFI_STATUS EFIAPI EfiIp4Transmit ( - IN EFI_IP4_PROTOCOL *This, - IN EFI_IP4_COMPLETION_TOKEN *Token + IN EFI_IP4_PROTOCOL *This, + IN EFI_IP4_COMPLETION_TOKEN *Token ) { - IP4_SERVICE *IpSb; - IP4_PROTOCOL *IpInstance; - IP4_INTERFACE *IpIf; - IP4_TXTOKEN_WRAP *Wrap; - EFI_IP4_TRANSMIT_DATA *TxData; - EFI_IP4_CONFIG_DATA *Config; - EFI_IP4_OVERRIDE_DATA *Override; - IP4_HEAD Head; - IP4_ADDR GateWay; - EFI_STATUS Status; - EFI_TPL OldTpl; - BOOLEAN DontFragment; - UINT32 HeadLen; - UINT8 RawHdrLen; - UINT32 OptionsLength; - UINT8 *OptionsBuffer; - VOID *FirstFragment; + IP4_SERVICE *IpSb; + IP4_PROTOCOL *IpInstance; + IP4_INTERFACE *IpIf; + IP4_TXTOKEN_WRAP *Wrap; + EFI_IP4_TRANSMIT_DATA *TxData; + EFI_IP4_CONFIG_DATA *Config; + EFI_IP4_OVERRIDE_DATA *Override; + IP4_HEAD Head; + IP4_ADDR GateWay; + EFI_STATUS Status; + EFI_TPL OldTpl; + BOOLEAN DontFragment; + UINT32 HeadLen; + UINT8 RawHdrLen; + UINT32 OptionsLength; + UINT8 *OptionsBuffer; + VOID *FirstFragment; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -1607,11 +1594,11 @@ EfiIp4Transmit ( return EFI_NOT_STARTED; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - IpSb = IpInstance->Service; - IpIf = IpInstance->Interface; - Config = &IpInstance->ConfigData; + IpSb = IpInstance->Service; + IpIf = IpInstance->Interface; + Config = &IpInstance->ConfigData; if (Config->UseDefaultAddress && IP4_NO_MAPPING (IpInstance)) { Status = EFI_NO_MAPPING; @@ -1651,13 +1638,13 @@ EfiIp4Transmit ( FirstFragment = TxData->FragmentTable[0].FragmentBuffer; CopyMem (&RawHdrLen, FirstFragment, sizeof (UINT8)); - RawHdrLen = (UINT8) (RawHdrLen & 0x0f); + RawHdrLen = (UINT8)(RawHdrLen & 0x0f); if (RawHdrLen < 5) { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } - RawHdrLen = (UINT8) (RawHdrLen << 2); + RawHdrLen = (UINT8)(RawHdrLen << 2); CopyMem (&Head, FirstFragment, IP4_MIN_HEADLEN); @@ -1680,13 +1667,13 @@ EfiIp4Transmit ( OptionsBuffer = NULL; } else { OptionsLength = RawHdrLen - IP4_MIN_HEADLEN; - OptionsBuffer = (UINT8 *) FirstFragment + IP4_MIN_HEADLEN; + OptionsBuffer = (UINT8 *)FirstFragment + IP4_MIN_HEADLEN; } // // Trim off IPv4 header and options from first fragment. // - TxData->FragmentTable[0].FragmentBuffer = (UINT8 *) FirstFragment + RawHdrLen; + TxData->FragmentTable[0].FragmentBuffer = (UINT8 *)FirstFragment + RawHdrLen; TxData->FragmentTable[0].FragmentLength = TxData->FragmentTable[0].FragmentLength - RawHdrLen; } else { CopyMem (&Head.Dst, &TxData->DestinationAddress, sizeof (IP4_ADDR)); @@ -1717,7 +1704,7 @@ EfiIp4Transmit ( HeadLen = (TxData->OptionsLength + 3) & (~0x03); OptionsLength = TxData->OptionsLength; - OptionsBuffer = (UINT8 *) (TxData->OptionsBuffer); + OptionsBuffer = (UINT8 *)(TxData->OptionsBuffer); } // @@ -1738,18 +1725,18 @@ EfiIp4Transmit ( goto ON_EXIT; } - Wrap->IpInstance = IpInstance; - Wrap->Token = Token; - Wrap->Sent = FALSE; - Wrap->Life = IP4_US_TO_SEC (Config->TransmitTimeout); - Wrap->Packet = NetbufFromExt ( - (NET_FRAGMENT *) TxData->FragmentTable, - TxData->FragmentCount, - IP4_MAX_HEADLEN, - 0, - Ip4FreeTxToken, - Wrap - ); + Wrap->IpInstance = IpInstance; + Wrap->Token = Token; + Wrap->Sent = FALSE; + Wrap->Life = IP4_US_TO_SEC (Config->TransmitTimeout); + Wrap->Packet = NetbufFromExt ( + (NET_FRAGMENT *)TxData->FragmentTable, + TxData->FragmentCount, + IP4_MAX_HEADLEN, + 0, + Ip4FreeTxToken, + Wrap + ); if (Wrap->Packet == NULL) { FreePool (Wrap); @@ -1768,7 +1755,7 @@ EfiIp4Transmit ( // // Restore pointer of first fragment in RawData mode. // - TxData->FragmentTable[0].FragmentBuffer = (UINT8 *) FirstFragment; + TxData->FragmentTable[0].FragmentBuffer = (UINT8 *)FirstFragment; } NetbufFree (Wrap->Packet); @@ -1800,7 +1787,7 @@ EfiIp4Transmit ( // // Restore pointer of first fragment in RawData mode. // - TxData->FragmentTable[0].FragmentBuffer = (UINT8 *) FirstFragment; + TxData->FragmentTable[0].FragmentBuffer = (UINT8 *)FirstFragment; } NetbufFree (Wrap->Packet); @@ -1810,7 +1797,7 @@ EfiIp4Transmit ( // // Restore pointer of first fragment in RawData mode. // - TxData->FragmentTable[0].FragmentBuffer = (UINT8 *) FirstFragment; + TxData->FragmentTable[0].FragmentBuffer = (UINT8 *)FirstFragment; } ON_EXIT: @@ -1818,7 +1805,6 @@ ON_EXIT: return Status; } - /** Places a receiving request into the receiving queue. @@ -1854,13 +1840,13 @@ ON_EXIT: EFI_STATUS EFIAPI EfiIp4Receive ( - IN EFI_IP4_PROTOCOL *This, - IN EFI_IP4_COMPLETION_TOKEN *Token + IN EFI_IP4_PROTOCOL *This, + IN EFI_IP4_COMPLETION_TOKEN *Token ) { - IP4_PROTOCOL *IpInstance; - EFI_STATUS Status; - EFI_TPL OldTpl; + IP4_PROTOCOL *IpInstance; + EFI_STATUS Status; + EFI_TPL OldTpl; // // First validate the parameters @@ -1910,7 +1896,6 @@ ON_EXIT: return Status; } - /** Cancel the transmitted but not recycled packet. If a matching token is found, it will call Ip4CancelPacket to cancel the @@ -1931,15 +1916,15 @@ ON_EXIT: EFI_STATUS EFIAPI Ip4CancelTxTokens ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { EFI_IP4_COMPLETION_TOKEN *Token; IP4_TXTOKEN_WRAP *Wrap; - Token = (EFI_IP4_COMPLETION_TOKEN *) Context; + Token = (EFI_IP4_COMPLETION_TOKEN *)Context; // // Return EFI_SUCCESS to check the next item in the map if @@ -1949,7 +1934,7 @@ Ip4CancelTxTokens ( return EFI_SUCCESS; } - Wrap = (IP4_TXTOKEN_WRAP *) Item->Value; + Wrap = (IP4_TXTOKEN_WRAP *)Item->Value; ASSERT (Wrap != NULL); // @@ -1969,7 +1954,6 @@ Ip4CancelTxTokens ( return EFI_SUCCESS; } - /** Cancel the receive request. This is quiet simple, because it is only enqueued in our local receive map. @@ -1987,15 +1971,15 @@ Ip4CancelTxTokens ( EFI_STATUS EFIAPI Ip4CancelRxTokens ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { EFI_IP4_COMPLETION_TOKEN *Token; EFI_IP4_COMPLETION_TOKEN *This; - Token = (EFI_IP4_COMPLETION_TOKEN *) Context; + Token = (EFI_IP4_COMPLETION_TOKEN *)Context; This = Item->Key; if ((Token != NULL) && (Token != This)) { @@ -2015,7 +1999,6 @@ Ip4CancelRxTokens ( return EFI_SUCCESS; } - /** Cancel the user's receive/transmit request. @@ -2031,11 +2014,11 @@ Ip4CancelRxTokens ( **/ EFI_STATUS Ip4Cancel ( - IN IP4_PROTOCOL *IpInstance, - IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL + IN IP4_PROTOCOL *IpInstance, + IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; // // First check the transmitted packet. Ip4CancelTxTokens returns @@ -2083,15 +2066,14 @@ Ip4Cancel ( // all of them are cancelled. // if (!NetMapIsEmpty (&IpInstance->TxTokens) || - !NetMapIsEmpty (&IpInstance->RxTokens)) { - + !NetMapIsEmpty (&IpInstance->RxTokens)) + { return EFI_DEVICE_ERROR; } return EFI_SUCCESS; } - /** Abort an asynchronous transmit or receive request. @@ -2124,13 +2106,13 @@ Ip4Cancel ( EFI_STATUS EFIAPI EfiIp4Cancel ( - IN EFI_IP4_PROTOCOL *This, - IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL + IN EFI_IP4_PROTOCOL *This, + IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL ) { - IP4_PROTOCOL *IpInstance; - EFI_STATUS Status; - EFI_TPL OldTpl; + IP4_PROTOCOL *IpInstance; + EFI_STATUS Status; + EFI_TPL OldTpl; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -2157,7 +2139,6 @@ ON_EXIT: return Status; } - /** Polls for incoming data packets and processes outgoing data packets. @@ -2188,7 +2169,7 @@ ON_EXIT: EFI_STATUS EFIAPI EfiIp4Poll ( - IN EFI_IP4_PROTOCOL *This + IN EFI_IP4_PROTOCOL *This ) { IP4_PROTOCOL *IpInstance; @@ -2230,14 +2211,14 @@ EfiIp4Poll ( EFI_STATUS EFIAPI Ip4SentPacketTicking ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { - IP4_TXTOKEN_WRAP *Wrap; + IP4_TXTOKEN_WRAP *Wrap; - Wrap = (IP4_TXTOKEN_WRAP *) Item->Value; + Wrap = (IP4_TXTOKEN_WRAP *)Item->Value; ASSERT (Wrap != NULL); if ((Wrap->Life > 0) && (--Wrap->Life == 0)) { @@ -2259,13 +2240,13 @@ Ip4SentPacketTicking ( VOID EFIAPI Ip4TimerTicking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - IP4_SERVICE *IpSb; + IP4_SERVICE *IpSb; - IpSb = (IP4_SERVICE *) Context; + IpSb = (IP4_SERVICE *)Context; NET_CHECK_SIGNATURE (IpSb, IP4_SERVICE_SIGNATURE); Ip4PacketTimerTicking (IpSb); @@ -2287,16 +2268,16 @@ Ip4TimerTicking ( VOID EFIAPI Ip4TimerReconfigChecking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - IP4_SERVICE *IpSb; - BOOLEAN OldMediaPresent; - EFI_STATUS Status; - EFI_SIMPLE_NETWORK_MODE SnpModeData; + IP4_SERVICE *IpSb; + BOOLEAN OldMediaPresent; + EFI_STATUS Status; + EFI_SIMPLE_NETWORK_MODE SnpModeData; - IpSb = (IP4_SERVICE *) Context; + IpSb = (IP4_SERVICE *)Context; NET_CHECK_SIGNATURE (IpSb, IP4_SERVICE_SIGNATURE); OldMediaPresent = IpSb->MediaPresent; diff --git a/NetworkPkg/Ip4Dxe/Ip4Impl.h b/NetworkPkg/Ip4Dxe/Ip4Impl.h index e8ff33d38a..18d3172205 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Impl.h +++ b/NetworkPkg/Ip4Dxe/Ip4Impl.h @@ -60,8 +60,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // successfully configured, it goes to CONFIGED. if configure NULL // is called, it becomes UNCONFIGED again. // -#define IP4_STATE_UNCONFIGED 0 -#define IP4_STATE_CONFIGED 1 +#define IP4_STATE_UNCONFIGED 0 +#define IP4_STATE_CONFIGED 1 // // The state of IP4 service. It starts from UNSTARTED. It transits @@ -69,11 +69,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // configured, it becomes CONFIGED. and if partly destroyed, it goes // to DESTROY. // -#define IP4_SERVICE_UNSTARTED 0 -#define IP4_SERVICE_STARTED 1 -#define IP4_SERVICE_CONFIGED 2 -#define IP4_SERVICE_DESTROY 3 - +#define IP4_SERVICE_UNSTARTED 0 +#define IP4_SERVICE_STARTED 1 +#define IP4_SERVICE_CONFIGED 2 +#define IP4_SERVICE_DESTROY 3 /// /// IP4_TXTOKEN_WRAP wraps the upper layer's transmit token. @@ -85,12 +84,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent /// user's event signalled. /// typedef struct { - IP4_PROTOCOL *IpInstance; - EFI_IP4_COMPLETION_TOKEN *Token; - EFI_EVENT IpSecRecycleSignal; - NET_BUF *Packet; - BOOLEAN Sent; - INTN Life; + IP4_PROTOCOL *IpInstance; + EFI_IP4_COMPLETION_TOKEN *Token; + EFI_EVENT IpSecRecycleSignal; + NET_BUF *Packet; + BOOLEAN Sent; + INTN Life; } IP4_TXTOKEN_WRAP; /// @@ -100,8 +99,8 @@ typedef struct { /// to notice IPsec to free the resources. /// typedef struct { - EFI_EVENT IpSecRecycleSignal; - NET_BUF *Packet; + EFI_EVENT IpSecRecycleSignal; + NET_BUF *Packet; } IP4_IPSEC_WRAP; /// @@ -114,111 +113,109 @@ typedef struct { /// fragments will be freed at last. /// typedef struct { - LIST_ENTRY Link; - IP4_PROTOCOL *IpInstance; - NET_BUF *Packet; - EFI_IP4_RECEIVE_DATA RxData; + LIST_ENTRY Link; + IP4_PROTOCOL *IpInstance; + NET_BUF *Packet; + EFI_IP4_RECEIVE_DATA RxData; } IP4_RXDATA_WRAP; - struct _IP4_PROTOCOL { - UINT32 Signature; + UINT32 Signature; - EFI_IP4_PROTOCOL Ip4Proto; - EFI_HANDLE Handle; - INTN State; + EFI_IP4_PROTOCOL Ip4Proto; + EFI_HANDLE Handle; + INTN State; - BOOLEAN InDestroy; + BOOLEAN InDestroy; - IP4_SERVICE *Service; - LIST_ENTRY Link; // Link to all the IP protocol from the service + IP4_SERVICE *Service; + LIST_ENTRY Link; // Link to all the IP protocol from the service // // User's transmit/receive tokens, and received/delivered packets // - NET_MAP RxTokens; - NET_MAP TxTokens; // map between (User's Token, IP4_TXTOKE_WRAP) - LIST_ENTRY Received; // Received but not delivered packet - LIST_ENTRY Delivered; // Delivered and to be recycled packets - EFI_LOCK RecycleLock; + NET_MAP RxTokens; + NET_MAP TxTokens; // map between (User's Token, IP4_TXTOKE_WRAP) + LIST_ENTRY Received; // Received but not delivered packet + LIST_ENTRY Delivered; // Delivered and to be recycled packets + EFI_LOCK RecycleLock; // // Instance's address and route tables. There are two route tables. // RouteTable is used by the IP4 driver to route packet. EfiRouteTable // is used to communicate the current route info to the upper layer. // - IP4_INTERFACE *Interface; - LIST_ENTRY AddrLink; // Ip instances with the same IP address. - IP4_ROUTE_TABLE *RouteTable; + IP4_INTERFACE *Interface; + LIST_ENTRY AddrLink; // Ip instances with the same IP address. + IP4_ROUTE_TABLE *RouteTable; - EFI_IP4_ROUTE_TABLE *EfiRouteTable; - UINT32 EfiRouteCount; + EFI_IP4_ROUTE_TABLE *EfiRouteTable; + UINT32 EfiRouteCount; // // IGMP data for this instance // - IP4_ADDR *Groups; // stored in network byte order - UINT32 GroupCount; - - EFI_IP4_CONFIG_DATA ConfigData; + IP4_ADDR *Groups; // stored in network byte order + UINT32 GroupCount; + EFI_IP4_CONFIG_DATA ConfigData; }; struct _IP4_SERVICE { - UINT32 Signature; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - INTN State; + UINT32 Signature; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + INTN State; // // List of all the IP instances and interfaces, and default // interface and route table and caches. // - UINTN NumChildren; - LIST_ENTRY Children; + UINTN NumChildren; + LIST_ENTRY Children; - LIST_ENTRY Interfaces; + LIST_ENTRY Interfaces; - IP4_INTERFACE *DefaultInterface; - IP4_ROUTE_TABLE *DefaultRouteTable; + IP4_INTERFACE *DefaultInterface; + IP4_ROUTE_TABLE *DefaultRouteTable; // // Ip reassemble utilities, and IGMP data // - IP4_ASSEMBLE_TABLE Assemble; - IGMP_SERVICE_DATA IgmpCtrl; + IP4_ASSEMBLE_TABLE Assemble; + IGMP_SERVICE_DATA IgmpCtrl; // // Low level protocol used by this service instance // - EFI_HANDLE Image; - EFI_HANDLE Controller; + EFI_HANDLE Image; + EFI_HANDLE Controller; - EFI_HANDLE MnpChildHandle; - EFI_MANAGED_NETWORK_PROTOCOL *Mnp; + EFI_HANDLE MnpChildHandle; + EFI_MANAGED_NETWORK_PROTOCOL *Mnp; - EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData; - EFI_SIMPLE_NETWORK_MODE SnpMode; + EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData; + EFI_SIMPLE_NETWORK_MODE SnpMode; - EFI_EVENT Timer; - EFI_EVENT ReconfigCheckTimer; - EFI_EVENT ReconfigEvent; + EFI_EVENT Timer; + EFI_EVENT ReconfigCheckTimer; + EFI_EVENT ReconfigEvent; - BOOLEAN Reconfig; + BOOLEAN Reconfig; // // Underlying media present status. // - BOOLEAN MediaPresent; + BOOLEAN MediaPresent; // // IPv4 Configuration II Protocol instance // - IP4_CONFIG2_INSTANCE Ip4Config2Instance; + IP4_CONFIG2_INSTANCE Ip4Config2Instance; - CHAR16 *MacString; + CHAR16 *MacString; - UINT32 MaxPacketSize; - UINT32 OldMaxPacketSize; ///< The MTU before IPsec enable. + UINT32 MaxPacketSize; + UINT32 OldMaxPacketSize; ///< The MTU before IPsec enable. }; #define IP4_INSTANCE_FROM_PROTOCOL(Ip4) \ @@ -230,10 +227,9 @@ struct _IP4_SERVICE { #define IP4_SERVICE_FROM_CONFIG2_INSTANCE(This) \ CR (This, IP4_SERVICE, Ip4Config2Instance, IP4_SERVICE_SIGNATURE) +#define IP4_NO_MAPPING(IpInstance) (!(IpInstance)->Interface->Configured) -#define IP4_NO_MAPPING(IpInstance) (!(IpInstance)->Interface->Configured) - -extern EFI_IP4_PROTOCOL mEfiIp4ProtocolTemplete; +extern EFI_IP4_PROTOCOL mEfiIp4ProtocolTemplete; /** Config the MNP parameter used by IP. The IP driver use one MNP @@ -255,8 +251,8 @@ extern EFI_IP4_PROTOCOL mEfiIp4ProtocolTemplete; **/ EFI_STATUS Ip4ServiceConfigMnp ( - IN IP4_SERVICE *IpSb, - IN BOOLEAN Force + IN IP4_SERVICE *IpSb, + IN BOOLEAN Force ); /** @@ -268,8 +264,8 @@ Ip4ServiceConfigMnp ( **/ VOID Ip4InitProtocol ( - IN IP4_SERVICE *IpSb, - IN OUT IP4_PROTOCOL *IpInstance + IN IP4_SERVICE *IpSb, + IN OUT IP4_PROTOCOL *IpInstance ); /** @@ -283,7 +279,7 @@ Ip4InitProtocol ( **/ EFI_STATUS Ip4CleanProtocol ( - IN IP4_PROTOCOL *IpInstance + IN IP4_PROTOCOL *IpInstance ); /** @@ -301,8 +297,8 @@ Ip4CleanProtocol ( **/ EFI_STATUS Ip4Cancel ( - IN IP4_PROTOCOL *IpInstance, - IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL + IN IP4_PROTOCOL *IpInstance, + IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL ); /** @@ -322,9 +318,9 @@ Ip4Cancel ( **/ EFI_STATUS Ip4Groups ( - IN IP4_PROTOCOL *IpInstance, - IN BOOLEAN JoinFlag, - IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL + IN IP4_PROTOCOL *IpInstance, + IN BOOLEAN JoinFlag, + IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL ); /** @@ -339,8 +335,8 @@ Ip4Groups ( VOID EFIAPI Ip4TimerTicking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -358,8 +354,8 @@ Ip4TimerTicking ( VOID EFIAPI Ip4TimerReconfigChecking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -379,9 +375,9 @@ Ip4TimerReconfigChecking ( EFI_STATUS EFIAPI Ip4SentPacketTicking ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ); /** @@ -408,10 +404,10 @@ Ip4SentPacketTicking ( VOID EFIAPI Ip4FreeTxToken ( - IN VOID *Context + IN VOID *Context ); -extern EFI_IPSEC2_PROTOCOL *mIpSec; -extern BOOLEAN mIpSec2Installed; +extern EFI_IPSEC2_PROTOCOL *mIpSec; +extern BOOLEAN mIpSec2Installed; #endif diff --git a/NetworkPkg/Ip4Dxe/Ip4Input.c b/NetworkPkg/Ip4Dxe/Ip4Input.c index 868f04812c..1d12b3d816 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Input.c +++ b/NetworkPkg/Ip4Dxe/Ip4Input.c @@ -10,7 +10,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Ip4Impl.h" - /** Create an empty assemble entry for the packet identified by (Dst, Src, Id, Protocol). The default life for the packet is @@ -27,14 +26,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ IP4_ASSEMBLE_ENTRY * Ip4CreateAssembleEntry ( - IN IP4_ADDR Dst, - IN IP4_ADDR Src, - IN UINT16 Id, - IN UINT8 Protocol + IN IP4_ADDR Dst, + IN IP4_ADDR Src, + IN UINT16 Id, + IN UINT8 Protocol ) { - - IP4_ASSEMBLE_ENTRY *Assemble; + IP4_ASSEMBLE_ENTRY *Assemble; Assemble = AllocatePool (sizeof (IP4_ASSEMBLE_ENTRY)); @@ -58,7 +56,6 @@ Ip4CreateAssembleEntry ( return Assemble; } - /** Release all the fragments of a packet, then free the assemble entry. @@ -67,12 +64,12 @@ Ip4CreateAssembleEntry ( **/ VOID Ip4FreeAssembleEntry ( - IN IP4_ASSEMBLE_ENTRY *Assemble + IN IP4_ASSEMBLE_ENTRY *Assemble ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - NET_BUF *Fragment; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + NET_BUF *Fragment; NET_LIST_FOR_EACH_SAFE (Entry, Next, &Assemble->Fragments) { Fragment = NET_LIST_USER_STRUCT (Entry, NET_BUF, List); @@ -84,7 +81,6 @@ Ip4FreeAssembleEntry ( FreePool (Assemble); } - /** Initialize an already allocated assemble table. This is generally the assemble table embedded in the IP4 service instance. @@ -94,17 +90,16 @@ Ip4FreeAssembleEntry ( **/ VOID Ip4InitAssembleTable ( - IN OUT IP4_ASSEMBLE_TABLE *Table + IN OUT IP4_ASSEMBLE_TABLE *Table ) { - UINT32 Index; + UINT32 Index; for (Index = 0; Index < IP4_ASSEMLE_HASH_SIZE; Index++) { InitializeListHead (&Table->Bucket[Index]); } } - /** Clean up the assemble table: remove all the fragments and assemble entries. @@ -114,13 +109,13 @@ Ip4InitAssembleTable ( **/ VOID Ip4CleanAssembleTable ( - IN IP4_ASSEMBLE_TABLE *Table + IN IP4_ASSEMBLE_TABLE *Table ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_ASSEMBLE_ENTRY *Assemble; - UINT32 Index; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_ASSEMBLE_ENTRY *Assemble; + UINT32 Index; for (Index = 0; Index < IP4_ASSEMLE_HASH_SIZE; Index++) { NET_LIST_FOR_EACH_SAFE (Entry, Next, &Table->Bucket[Index]) { @@ -132,7 +127,6 @@ Ip4CleanAssembleTable ( } } - /** Trim the packet to fit in [Start, End), and update the per packet information. @@ -144,23 +138,23 @@ Ip4CleanAssembleTable ( **/ VOID Ip4TrimPacket ( - IN OUT NET_BUF *Packet, - IN INTN Start, - IN INTN End + IN OUT NET_BUF *Packet, + IN INTN Start, + IN INTN End ) { - IP4_CLIP_INFO *Info; - INTN Len; + IP4_CLIP_INFO *Info; + INTN Len; Info = IP4_GET_CLIP_INFO (Packet); ASSERT (Info->Start + Info->Length == Info->End); ASSERT ((Info->Start < End) && (Start < Info->End)); - if (Info->Start < Start) { + if (Info->Start < Start) { Len = Start - Info->Start; - NetbufTrim (Packet, (UINT32) Len, NET_BUF_HEAD); + NetbufTrim (Packet, (UINT32)Len, NET_BUF_HEAD); Info->Start = Start; Info->Length -= Len; } @@ -168,13 +162,12 @@ Ip4TrimPacket ( if (End < Info->End) { Len = End - Info->End; - NetbufTrim (Packet, (UINT32) Len, NET_BUF_TAIL); + NetbufTrim (Packet, (UINT32)Len, NET_BUF_TAIL); Info->End = End; Info->Length -= Len; } } - /** Release all the fragments of the packet. This is the callback for the assembled packet's OnFree. It will free the assemble entry, @@ -186,13 +179,12 @@ Ip4TrimPacket ( VOID EFIAPI Ip4OnFreeFragments ( - IN VOID *Arg + IN VOID *Arg ) { - Ip4FreeAssembleEntry ((IP4_ASSEMBLE_ENTRY *) Arg); + Ip4FreeAssembleEntry ((IP4_ASSEMBLE_ENTRY *)Arg); } - /** Reassemble the IP fragments. If all the fragments of the packet have been received, it will wrap the packet in a net buffer then @@ -210,37 +202,38 @@ Ip4OnFreeFragments ( **/ NET_BUF * Ip4Reassemble ( - IN OUT IP4_ASSEMBLE_TABLE *Table, - IN OUT NET_BUF *Packet + IN OUT IP4_ASSEMBLE_TABLE *Table, + IN OUT NET_BUF *Packet ) { - IP4_HEAD *IpHead; - IP4_CLIP_INFO *This; - IP4_CLIP_INFO *Node; - IP4_ASSEMBLE_ENTRY *Assemble; - LIST_ENTRY *Head; - LIST_ENTRY *Prev; - LIST_ENTRY *Cur; - NET_BUF *Fragment; - NET_BUF *NewPacket; - INTN Index; - - IpHead = Packet->Ip.Ip4; - This = IP4_GET_CLIP_INFO (Packet); + IP4_HEAD *IpHead; + IP4_CLIP_INFO *This; + IP4_CLIP_INFO *Node; + IP4_ASSEMBLE_ENTRY *Assemble; + LIST_ENTRY *Head; + LIST_ENTRY *Prev; + LIST_ENTRY *Cur; + NET_BUF *Fragment; + NET_BUF *NewPacket; + INTN Index; + + IpHead = Packet->Ip.Ip4; + This = IP4_GET_CLIP_INFO (Packet); ASSERT (IpHead != NULL); // // First: find the related assemble entry // - Assemble = NULL; - Index = IP4_ASSEMBLE_HASH (IpHead->Dst, IpHead->Src, IpHead->Id, IpHead->Protocol); + Assemble = NULL; + Index = IP4_ASSEMBLE_HASH (IpHead->Dst, IpHead->Src, IpHead->Id, IpHead->Protocol); NET_LIST_FOR_EACH (Cur, &Table->Bucket[Index]) { Assemble = NET_LIST_USER_STRUCT (Cur, IP4_ASSEMBLE_ENTRY, Link); if ((Assemble->Dst == IpHead->Dst) && (Assemble->Src == IpHead->Src) && - (Assemble->Id == IpHead->Id) && (Assemble->Protocol == IpHead->Protocol)) { + (Assemble->Id == IpHead->Id) && (Assemble->Protocol == IpHead->Protocol)) + { break; } } @@ -262,6 +255,7 @@ Ip4Reassemble ( InsertHeadList (&Table->Bucket[Index], &Assemble->Link); } + // // Assemble shouldn't be NULL here // @@ -289,8 +283,8 @@ Ip4Reassemble ( // overlaps, trim the overlapped part off THIS fragment. // if ((Prev = Cur->BackLink) != Head) { - Fragment = NET_LIST_USER_STRUCT (Prev, NET_BUF, List); - Node = IP4_GET_CLIP_INFO (Fragment); + Fragment = NET_LIST_USER_STRUCT (Prev, NET_BUF, List); + Node = IP4_GET_CLIP_INFO (Fragment); if (This->Start < Node->End) { if (This->End <= Node->End) { @@ -364,8 +358,8 @@ Ip4Reassemble ( // ASSERT (Assemble->Head == NULL); - Assemble->Head = IpHead; - Assemble->Info = IP4_GET_CLIP_INFO (Packet); + Assemble->Head = IpHead; + Assemble->Info = IP4_GET_CLIP_INFO (Packet); } // @@ -383,7 +377,6 @@ Ip4Reassemble ( // queue ends at the total length, all data is received. // if ((Assemble->TotalLen != 0) && (Assemble->CurLen >= Assemble->TotalLen)) { - RemoveEntryList (&Assemble->Link); // @@ -444,12 +437,12 @@ DROP: VOID EFIAPI Ip4IpSecFree ( - IN VOID *Arg + IN VOID *Arg ) { - IP4_IPSEC_WRAP *Wrap; + IP4_IPSEC_WRAP *Wrap; - Wrap = (IP4_IPSEC_WRAP *) Arg; + Wrap = (IP4_IPSEC_WRAP *)Arg; if (Wrap->IpSecRecycleSignal != NULL) { gBS->SignalEvent (Wrap->IpSecRecycleSignal); @@ -496,29 +489,30 @@ Ip4IpSecProcessPacket ( IN VOID *Context ) { - NET_FRAGMENT *FragmentTable; - NET_FRAGMENT *OriginalFragmentTable; - UINT32 FragmentCount; - UINT32 OriginalFragmentCount; - EFI_EVENT RecycleEvent; - NET_BUF *Packet; - IP4_TXTOKEN_WRAP *TxWrap; - IP4_IPSEC_WRAP *IpSecWrap; - EFI_STATUS Status; - IP4_HEAD ZeroHead; - - Status = EFI_SUCCESS; + NET_FRAGMENT *FragmentTable; + NET_FRAGMENT *OriginalFragmentTable; + UINT32 FragmentCount; + UINT32 OriginalFragmentCount; + EFI_EVENT RecycleEvent; + NET_BUF *Packet; + IP4_TXTOKEN_WRAP *TxWrap; + IP4_IPSEC_WRAP *IpSecWrap; + EFI_STATUS Status; + IP4_HEAD ZeroHead; + + Status = EFI_SUCCESS; if (!mIpSec2Installed) { goto ON_EXIT; } + ASSERT (mIpSec != NULL); Packet = *Netbuf; RecycleEvent = NULL; IpSecWrap = NULL; FragmentTable = NULL; - TxWrap = (IP4_TXTOKEN_WRAP *) Context; + TxWrap = (IP4_TXTOKEN_WRAP *)Context; FragmentCount = Packet->BlockOpNum; ZeroMem (&ZeroHead, sizeof (IP4_HEAD)); @@ -571,11 +565,11 @@ Ip4IpSecProcessPacket ( mIpSec, IpSb->Controller, IP_VERSION_4, - (VOID *) (*Head), + (VOID *)(*Head), &(*Head)->Protocol, - (VOID **) Options, + (VOID **)Options, OptionsLen, - (EFI_IPSEC_FRAGMENT_DATA **) (&FragmentTable), + (EFI_IPSEC_FRAGMENT_DATA **)(&FragmentTable), &FragmentCount, Direction, &RecycleEvent @@ -590,7 +584,7 @@ Ip4IpSecProcessPacket ( goto ON_EXIT; } - if (OriginalFragmentTable == FragmentTable && OriginalFragmentCount == FragmentCount) { + if ((OriginalFragmentTable == FragmentTable) && (OriginalFragmentCount == FragmentCount)) { // // For ByPass Packet // @@ -603,8 +597,7 @@ Ip4IpSecProcessPacket ( FreePool (OriginalFragmentTable); } - if (Direction == EfiIPsecOutBound && TxWrap != NULL) { - + if ((Direction == EfiIPsecOutBound) && (TxWrap != NULL)) { TxWrap->IpSecRecycleSignal = RecycleEvent; TxWrap->Packet = NetbufFromExt ( FragmentTable, @@ -620,7 +613,7 @@ Ip4IpSecProcessPacket ( // the TxWrap. // TxWrap->Packet = *Netbuf; - Status = EFI_OUT_OF_RESOURCES; + Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } @@ -629,9 +622,7 @@ Ip4IpSecProcessPacket ( // NetIpSecNetbufFree (*Netbuf); *Netbuf = TxWrap->Packet; - } else { - IpSecWrap = AllocateZeroPool (sizeof (IP4_IPSEC_WRAP)); if (IpSecWrap == NULL) { @@ -659,7 +650,7 @@ Ip4IpSecProcessPacket ( goto ON_EXIT; } - if (Direction == EfiIPsecInBound && 0 != CompareMem (*Head, &ZeroHead, sizeof (IP4_HEAD))) { + if ((Direction == EfiIPsecInBound) && (0 != CompareMem (*Head, &ZeroHead, sizeof (IP4_HEAD)))) { Ip4PrependHead (Packet, *Head, *Options, *OptionsLen); Ip4NtohHead (Packet->Ip.Ip4); NetbufTrim (Packet, ((*Head)->HeadLen << 2), TRUE); @@ -670,6 +661,7 @@ Ip4IpSecProcessPacket ( sizeof (IP4_CLIP_INFO) ); } + *Netbuf = Packet; } @@ -695,18 +687,18 @@ ON_EXIT: **/ EFI_STATUS Ip4PreProcessPacket ( - IN IP4_SERVICE *IpSb, - IN OUT NET_BUF **Packet, - IN IP4_HEAD *Head, - IN UINT8 *Option, - IN UINT32 OptionLen, - IN UINT32 Flag + IN IP4_SERVICE *IpSb, + IN OUT NET_BUF **Packet, + IN IP4_HEAD *Head, + IN UINT8 *Option, + IN UINT32 OptionLen, + IN UINT32 Flag ) { - IP4_CLIP_INFO *Info; - UINT32 HeadLen; - UINT32 TotalLen; - UINT16 Checksum; + IP4_CLIP_INFO *Info; + UINT32 HeadLen; + UINT32 TotalLen; + UINT16 Checksum; // // Check if the IP4 header is correctly formatted. @@ -722,14 +714,15 @@ Ip4PreProcessPacket ( } if ((Head->Ver != 4) || (HeadLen < IP4_MIN_HEADLEN) || - (TotalLen < HeadLen) || (TotalLen != (*Packet)->TotalSize)) { + (TotalLen < HeadLen) || (TotalLen != (*Packet)->TotalSize)) + { return EFI_INVALID_PARAMETER; } // // Some OS may send IP packets without checksum. // - Checksum = (UINT16) (~NetblockChecksum ((UINT8 *) Head, HeadLen)); + Checksum = (UINT16)(~NetblockChecksum ((UINT8 *)Head, HeadLen)); if ((Head->Checksum != 0) && (Checksum != 0)) { return EFI_INVALID_PARAMETER; @@ -738,15 +731,15 @@ Ip4PreProcessPacket ( // // Convert the IP header to host byte order, then get the per packet info. // - (*Packet)->Ip.Ip4 = Ip4NtohHead (Head); + (*Packet)->Ip.Ip4 = Ip4NtohHead (Head); - Info = IP4_GET_CLIP_INFO (*Packet); - Info->LinkFlag = Flag; - Info->CastType = Ip4GetHostCast (IpSb, Head->Dst, Head->Src); - Info->Start = (Head->Fragment & IP4_HEAD_OFFSET_MASK) << 3; - Info->Length = Head->TotalLen - HeadLen; - Info->End = Info->Start + Info->Length; - Info->Status = EFI_SUCCESS; + Info = IP4_GET_CLIP_INFO (*Packet); + Info->LinkFlag = Flag; + Info->CastType = Ip4GetHostCast (IpSb, Head->Dst, Head->Src); + Info->Start = (Head->Fragment & IP4_HEAD_OFFSET_MASK) << 3; + Info->Length = Head->TotalLen - HeadLen; + Info->End = Info->Start + Info->Length; + Info->Status = EFI_SUCCESS; // // The packet is destinated to us if the CastType is non-zero. @@ -815,7 +808,7 @@ Ip4PreProcessPacket ( **/ BOOLEAN Ip4IsValidPacketLength ( - IN NET_BUF *Packet + IN NET_BUF *Packet ) { // @@ -843,21 +836,21 @@ Ip4IsValidPacketLength ( **/ VOID Ip4AccpetFrame ( - IN IP4_PROTOCOL *Ip4Instance, - IN NET_BUF *Packet, - IN EFI_STATUS IoStatus, - IN UINT32 Flag, - IN VOID *Context + IN IP4_PROTOCOL *Ip4Instance, + IN NET_BUF *Packet, + IN EFI_STATUS IoStatus, + IN UINT32 Flag, + IN VOID *Context ) { - IP4_SERVICE *IpSb; - IP4_HEAD *Head; - EFI_STATUS Status; - IP4_HEAD ZeroHead; - UINT8 *Option; - UINT32 OptionLen; - - IpSb = (IP4_SERVICE *) Context; + IP4_SERVICE *IpSb; + IP4_HEAD *Head; + EFI_STATUS Status; + IP4_HEAD ZeroHead; + UINT8 *Option; + UINT32 OptionLen; + + IpSb = (IP4_SERVICE *)Context; Option = NULL; if (EFI_ERROR (IoStatus) || (IpSb->State == IP4_SERVICE_DESTROY)) { @@ -868,11 +861,11 @@ Ip4AccpetFrame ( goto RESTART; } - Head = (IP4_HEAD *) NetbufGetByte (Packet, 0, NULL); + Head = (IP4_HEAD *)NetbufGetByte (Packet, 0, NULL); ASSERT (Head != NULL); OptionLen = (Head->HeadLen << 2) - IP4_MIN_HEADLEN; if (OptionLen > 0) { - Option = (UINT8 *) (Head + 1); + Option = (UINT8 *)(Head + 1); } // @@ -922,7 +915,7 @@ Ip4AccpetFrame ( goto RESTART; } - Head = (IP4_HEAD *) NetbufGetByte (Packet, 0, NULL); + Head = (IP4_HEAD *)NetbufGetByte (Packet, 0, NULL); ASSERT (Head != NULL); Status = Ip4PreProcessPacket ( IpSb, @@ -938,20 +931,20 @@ Ip4AccpetFrame ( } ASSERT (Packet != NULL); - Head = Packet->Ip.Ip4; + Head = Packet->Ip.Ip4; IP4_GET_CLIP_INFO (Packet)->Status = EFI_SUCCESS; switch (Head->Protocol) { - case EFI_IP_PROTO_ICMP: - Ip4IcmpHandle (IpSb, Head, Packet); - break; + case EFI_IP_PROTO_ICMP: + Ip4IcmpHandle (IpSb, Head, Packet); + break; - case IP4_PROTO_IGMP: - Ip4IgmpHandle (IpSb, Head, Packet); - break; + case IP4_PROTO_IGMP: + Ip4IgmpHandle (IpSb, Head, Packet); + break; - default: - Ip4Demultiplex (IpSb, Head, Packet, Option, OptionLen); + default: + Ip4Demultiplex (IpSb, Head, Packet, Option, OptionLen); } Packet = NULL; @@ -970,10 +963,9 @@ DROP: NetbufFree (Packet); } - return ; + return; } - /** Check whether this IP child accepts the packet. @@ -987,16 +979,16 @@ DROP: **/ BOOLEAN Ip4InstanceFrameAcceptable ( - IN IP4_PROTOCOL *IpInstance, - IN IP4_HEAD *Head, - IN NET_BUF *Packet + IN IP4_PROTOCOL *IpInstance, + IN IP4_HEAD *Head, + IN NET_BUF *Packet ) { - IP4_ICMP_ERROR_HEAD Icmp; - EFI_IP4_CONFIG_DATA *Config; - IP4_CLIP_INFO *Info; - UINT16 Proto; - UINT32 Index; + IP4_ICMP_ERROR_HEAD Icmp; + EFI_IP4_CONFIG_DATA *Config; + IP4_CLIP_INFO *Info; + UINT16 Proto; + UINT32 Index; Config = &IpInstance->ConfigData; @@ -1024,14 +1016,14 @@ Ip4InstanceFrameAcceptable ( Proto = Head->Protocol; if ((Proto == EFI_IP_PROTO_ICMP) && (!Config->AcceptAnyProtocol) && (Proto != Config->DefaultProtocol)) { - NetbufCopy (Packet, 0, sizeof (Icmp.Head), (UINT8 *) &Icmp.Head); + NetbufCopy (Packet, 0, sizeof (Icmp.Head), (UINT8 *)&Icmp.Head); if (mIcmpClass[Icmp.Head.Type].IcmpClass == ICMP_ERROR_MESSAGE) { if (!Config->AcceptIcmpErrors) { return FALSE; } - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); Proto = Icmp.IpHead.Protocol; } } @@ -1076,7 +1068,6 @@ Ip4InstanceFrameAcceptable ( return TRUE; } - /** Enqueue a shared copy of the packet to the IP4 child if the packet is acceptable to it. Here the data of the packet is @@ -1094,13 +1085,13 @@ Ip4InstanceFrameAcceptable ( **/ EFI_STATUS Ip4InstanceEnquePacket ( - IN IP4_PROTOCOL *IpInstance, - IN IP4_HEAD *Head, - IN NET_BUF *Packet + IN IP4_PROTOCOL *IpInstance, + IN IP4_HEAD *Head, + IN NET_BUF *Packet ) { - IP4_CLIP_INFO *Info; - NET_BUF *Clone; + IP4_CLIP_INFO *Info; + NET_BUF *Clone; // // Check whether the packet is acceptable to this instance. @@ -1126,14 +1117,13 @@ Ip4InstanceEnquePacket ( // Set the receive time out for the assembled packet. If it expires, // packet will be removed from the queue. // - Info = IP4_GET_CLIP_INFO (Clone); - Info->Life = IP4_US_TO_SEC (IpInstance->ConfigData.ReceiveTimeout); + Info = IP4_GET_CLIP_INFO (Clone); + Info->Life = IP4_US_TO_SEC (IpInstance->ConfigData.ReceiveTimeout); InsertTailList (&IpInstance->Received, &Clone->List); return EFI_SUCCESS; } - /** The signal handle of IP4's recycle event. It is called back when the upper layer release the packet. @@ -1146,13 +1136,13 @@ Ip4InstanceEnquePacket ( VOID EFIAPI Ip4OnRecyclePacket ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - IP4_RXDATA_WRAP *Wrap; + IP4_RXDATA_WRAP *Wrap; - Wrap = (IP4_RXDATA_WRAP *) Context; + Wrap = (IP4_RXDATA_WRAP *)Context; EfiAcquireLockOrFail (&Wrap->IpInstance->RecycleLock); RemoveEntryList (&Wrap->Link); @@ -1165,7 +1155,6 @@ Ip4OnRecyclePacket ( FreePool (Wrap); } - /** Wrap the received packet to a IP4_RXDATA_WRAP, which will be delivered to the upper layer. Each IP4 child that accepts the @@ -1183,14 +1172,14 @@ Ip4OnRecyclePacket ( **/ IP4_RXDATA_WRAP * Ip4WrapRxData ( - IN IP4_PROTOCOL *IpInstance, - IN NET_BUF *Packet + IN IP4_PROTOCOL *IpInstance, + IN NET_BUF *Packet ) { - IP4_RXDATA_WRAP *Wrap; - EFI_IP4_RECEIVE_DATA *RxData; - EFI_STATUS Status; - BOOLEAN RawData; + IP4_RXDATA_WRAP *Wrap; + EFI_IP4_RECEIVE_DATA *RxData; + EFI_STATUS Status; + BOOLEAN RawData; Wrap = AllocatePool (IP4_RXDATA_WRAP_SIZE (Packet->BlockOpNum)); @@ -1200,9 +1189,9 @@ Ip4WrapRxData ( InitializeListHead (&Wrap->Link); - Wrap->IpInstance = IpInstance; - Wrap->Packet = Packet; - RxData = &Wrap->RxData; + Wrap->IpInstance = IpInstance; + Wrap->Packet = Packet; + RxData = &Wrap->RxData; ZeroMem (RxData, sizeof (EFI_IP4_RECEIVE_DATA)); @@ -1229,27 +1218,26 @@ Ip4WrapRxData ( // if (!RawData) { RxData->HeaderLength = (Packet->Ip.Ip4->HeadLen << 2); - RxData->Header = (EFI_IP4_HEADER *) Ip4NtohHead (Packet->Ip.Ip4); + RxData->Header = (EFI_IP4_HEADER *)Ip4NtohHead (Packet->Ip.Ip4); RxData->OptionsLength = RxData->HeaderLength - IP4_MIN_HEADLEN; RxData->Options = NULL; if (RxData->OptionsLength != 0) { - RxData->Options = (VOID *) (RxData->Header + 1); + RxData->Options = (VOID *)(RxData->Header + 1); } } - RxData->DataLength = Packet->TotalSize; + RxData->DataLength = Packet->TotalSize; // // Build the fragment table to be delivered up. // RxData->FragmentCount = Packet->BlockOpNum; - NetbufBuildExt (Packet, (NET_FRAGMENT *) RxData->FragmentTable, &RxData->FragmentCount); + NetbufBuildExt (Packet, (NET_FRAGMENT *)RxData->FragmentTable, &RxData->FragmentCount); return Wrap; } - /** Deliver the received packets to upper layer if there are both received requests and enqueued packets. If the enqueued packet is shared, it will @@ -1266,7 +1254,7 @@ Ip4WrapRxData ( **/ EFI_STATUS Ip4InstanceDeliverPacket ( - IN IP4_PROTOCOL *IpInstance + IN IP4_PROTOCOL *IpInstance ) { EFI_IP4_COMPLETION_TOKEN *Token; @@ -1280,8 +1268,8 @@ Ip4InstanceDeliverPacket ( // Deliver a packet if there are both a packet and a receive token. // while (!IsListEmpty (&IpInstance->Received) && - !NetMapIsEmpty (&IpInstance->RxTokens)) { - + !NetMapIsEmpty (&IpInstance->RxTokens)) + { Packet = NET_LIST_HEAD (&IpInstance->Received, NET_BUF, List); if (!NET_BUF_SHARED (Packet)) { @@ -1295,7 +1283,6 @@ Ip4InstanceDeliverPacket ( } RemoveEntryList (&Packet->List); - } else { // // Create a duplicated packet if this packet is shared @@ -1321,7 +1308,7 @@ Ip4InstanceDeliverPacket ( Head = NetbufAllocSpace (Dup, IP4_MAX_HEADLEN, NET_BUF_HEAD); ASSERT (Head != NULL); - Dup->Ip.Ip4 = (IP4_HEAD *) Head; + Dup->Ip.Ip4 = (IP4_HEAD *)Head; CopyMem (Head, Packet->Ip.Ip4, Packet->Ip.Ip4->HeadLen << 2); NetbufTrim (Dup, IP4_MAX_HEADLEN, TRUE); @@ -1358,7 +1345,6 @@ Ip4InstanceDeliverPacket ( return EFI_SUCCESS; } - /** Enqueue a received packet to all the IP children that share the same interface. @@ -1375,20 +1361,20 @@ Ip4InstanceDeliverPacket ( **/ INTN Ip4InterfaceEnquePacket ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet, - IN UINT8 *Option, - IN UINT32 OptionLen, - IN IP4_INTERFACE *IpIf + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet, + IN UINT8 *Option, + IN UINT32 OptionLen, + IN IP4_INTERFACE *IpIf ) { - IP4_PROTOCOL *IpInstance; - IP4_CLIP_INFO *Info; - LIST_ENTRY *Entry; - INTN Enqueued; - INTN LocalType; - INTN SavedType; + IP4_PROTOCOL *IpInstance; + IP4_CLIP_INFO *Info; + LIST_ENTRY *Entry; + INTN Enqueued; + INTN LocalType; + INTN SavedType; // // First, check that the packet is acceptable to this interface @@ -1406,7 +1392,6 @@ Ip4InterfaceEnquePacket ( // that later. // LocalType = Info->CastType; - } else { // // Check the destination against local IP. If the station @@ -1416,7 +1401,6 @@ Ip4InterfaceEnquePacket ( // if (IpIf->Ip == IP4_ALLZERO_ADDRESS) { LocalType = IP4_LOCAL_HOST; - } else { LocalType = Ip4GetNetCast (Head->Dst, IpIf); @@ -1436,10 +1420,10 @@ Ip4InterfaceEnquePacket ( // and pass the local cast type to the IP children on the // interface. The global cast type will be restored later. // - SavedType = Info->CastType; - Info->CastType = LocalType; + SavedType = Info->CastType; + Info->CastType = LocalType; - Enqueued = 0; + Enqueued = 0; NET_LIST_FOR_EACH (Entry, &IpIf->IpInstances) { IpInstance = NET_LIST_USER_STRUCT (Entry, IP4_PROTOCOL, AddrLink); @@ -1448,7 +1432,7 @@ Ip4InterfaceEnquePacket ( // // In RawData mode, add IPv4 headers and options back to packet. // - if ((IpInstance->ConfigData.RawData) && (Option != NULL) && (OptionLen != 0)){ + if ((IpInstance->ConfigData.RawData) && (Option != NULL) && (OptionLen != 0)) { Ip4PrependHead (Packet, Head, Option, OptionLen); } @@ -1461,7 +1445,6 @@ Ip4InterfaceEnquePacket ( return Enqueued; } - /** Deliver the packet for each IP4 child on the interface. @@ -1473,12 +1456,12 @@ Ip4InterfaceEnquePacket ( **/ EFI_STATUS Ip4InterfaceDeliverPacket ( - IN IP4_SERVICE *IpSb, - IN IP4_INTERFACE *IpIf + IN IP4_SERVICE *IpSb, + IN IP4_INTERFACE *IpIf ) { - IP4_PROTOCOL *Ip4Instance; - LIST_ENTRY *Entry; + IP4_PROTOCOL *Ip4Instance; + LIST_ENTRY *Entry; NET_LIST_FOR_EACH (Entry, &IpIf->IpInstances) { Ip4Instance = NET_LIST_USER_STRUCT (Entry, IP4_PROTOCOL, AddrLink); @@ -1488,7 +1471,6 @@ Ip4InterfaceDeliverPacket ( return EFI_SUCCESS; } - /** Demultiple the packet. the packet delivery is processed in two passes. The first pass will enqueue a shared copy of the packet @@ -1511,16 +1493,16 @@ Ip4InterfaceDeliverPacket ( **/ EFI_STATUS Ip4Demultiplex ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet, - IN UINT8 *Option, - IN UINT32 OptionLen + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet, + IN UINT8 *Option, + IN UINT32 OptionLen ) { - LIST_ENTRY *Entry; - IP4_INTERFACE *IpIf; - INTN Enqueued; + LIST_ENTRY *Entry; + IP4_INTERFACE *IpIf; + INTN Enqueued; // // Two pass delivery: first, enqueue a shared copy of the packet @@ -1565,7 +1547,6 @@ Ip4Demultiplex ( return EFI_SUCCESS; } - /** Timeout the fragment and enqueued packets. @@ -1574,17 +1555,17 @@ Ip4Demultiplex ( **/ VOID Ip4PacketTimerTicking ( - IN IP4_SERVICE *IpSb + IN IP4_SERVICE *IpSb ) { - LIST_ENTRY *InstanceEntry; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_PROTOCOL *IpInstance; - IP4_ASSEMBLE_ENTRY *Assemble; - NET_BUF *Packet; - IP4_CLIP_INFO *Info; - UINT32 Index; + LIST_ENTRY *InstanceEntry; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_PROTOCOL *IpInstance; + IP4_ASSEMBLE_ENTRY *Assemble; + NET_BUF *Packet; + IP4_CLIP_INFO *Info; + UINT32 Index; // // First, time out the fragments. The packet's life is counting down diff --git a/NetworkPkg/Ip4Dxe/Ip4Input.h b/NetworkPkg/Ip4Dxe/Ip4Input.h index 9bd86e15c9..668719d4ab 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Input.h +++ b/NetworkPkg/Ip4Dxe/Ip4Input.h @@ -8,8 +8,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_IP4_INPUT_H__ #define __EFI_IP4_INPUT_H__ -#define IP4_MIN_HEADLEN 20 -#define IP4_MAX_HEADLEN 60 +#define IP4_MIN_HEADLEN 20 +#define IP4_MAX_HEADLEN 60 /// /// 8(ESP header) + 16(max IV) + 16(max padding) + 2(ESP tail) + 12(max ICV) = 54 /// @@ -30,37 +30,37 @@ SPDX-License-Identifier: BSD-2-Clause-Patent /// life. If it isn't consumed before Life reaches zero, the packet is released. /// typedef struct { - UINTN LinkFlag; - INTN CastType; - INTN Start; - INTN End; - INTN Length; - UINT32 Life; - EFI_STATUS Status; + UINTN LinkFlag; + INTN CastType; + INTN Start; + INTN End; + INTN Length; + UINT32 Life; + EFI_STATUS Status; } IP4_CLIP_INFO; /// /// Structure used to assemble IP packets. /// typedef struct { - LIST_ENTRY Link; + LIST_ENTRY Link; // // Identity of one IP4 packet. Each fragment of a packet has // the same (Dst, Src, Id, Protocol). // - IP4_ADDR Dst; - IP4_ADDR Src; - UINT16 Id; - UINT8 Protocol; - - INTN TotalLen; - INTN CurLen; - LIST_ENTRY Fragments; // List of all the fragments of this packet - - IP4_HEAD *Head; // IP head of the first fragment - IP4_CLIP_INFO *Info; // Per packet info of the first fragment - INTN Life; // Count down life for the packet. + IP4_ADDR Dst; + IP4_ADDR Src; + UINT16 Id; + UINT8 Protocol; + + INTN TotalLen; + INTN CurLen; + LIST_ENTRY Fragments; // List of all the fragments of this packet + + IP4_HEAD *Head; // IP head of the first fragment + IP4_CLIP_INFO *Info; // Per packet info of the first fragment + INTN Life; // Count down life for the packet. } IP4_ASSEMBLE_ENTRY; /// @@ -69,10 +69,10 @@ typedef struct { /// as hash table. /// typedef struct { - LIST_ENTRY Bucket[IP4_ASSEMLE_HASH_SIZE]; + LIST_ENTRY Bucket[IP4_ASSEMLE_HASH_SIZE]; } IP4_ASSEMBLE_TABLE; -#define IP4_GET_CLIP_INFO(Packet) ((IP4_CLIP_INFO *) ((Packet)->ProtoData)) +#define IP4_GET_CLIP_INFO(Packet) ((IP4_CLIP_INFO *) ((Packet)->ProtoData)) #define IP4_ASSEMBLE_HASH(Dst, Src, Id, Proto) \ (((Dst) + (Src) + ((Id) << 16) + (Proto)) % IP4_ASSEMLE_HASH_SIZE) @@ -89,7 +89,7 @@ typedef struct { **/ VOID Ip4InitAssembleTable ( - IN OUT IP4_ASSEMBLE_TABLE *Table + IN OUT IP4_ASSEMBLE_TABLE *Table ); /** @@ -101,7 +101,7 @@ Ip4InitAssembleTable ( **/ VOID Ip4CleanAssembleTable ( - IN IP4_ASSEMBLE_TABLE *Table + IN IP4_ASSEMBLE_TABLE *Table ); /** @@ -119,11 +119,11 @@ Ip4CleanAssembleTable ( **/ VOID Ip4AccpetFrame ( - IN IP4_PROTOCOL *Ip4Instance, - IN NET_BUF *Packet, - IN EFI_STATUS IoStatus, - IN UINT32 Flag, - IN VOID *Context + IN IP4_PROTOCOL *Ip4Instance, + IN NET_BUF *Packet, + IN EFI_STATUS IoStatus, + IN UINT32 Flag, + IN VOID *Context ); /** @@ -148,11 +148,11 @@ Ip4AccpetFrame ( **/ EFI_STATUS Ip4Demultiplex ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet, - IN UINT8 *Option, - IN UINT32 OptionLen + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet, + IN UINT8 *Option, + IN UINT32 OptionLen ); /** @@ -171,12 +171,12 @@ Ip4Demultiplex ( **/ INTN Ip4InterfaceEnquePacket ( - IN IP4_SERVICE *IpSb, - IN IP4_HEAD *Head, - IN NET_BUF *Packet, - IN UINT8 *Option, - IN UINT32 OptionLen, - IN IP4_INTERFACE *IpIf + IN IP4_SERVICE *IpSb, + IN IP4_HEAD *Head, + IN NET_BUF *Packet, + IN UINT8 *Option, + IN UINT32 OptionLen, + IN IP4_INTERFACE *IpIf ); /** @@ -195,7 +195,7 @@ Ip4InterfaceEnquePacket ( **/ EFI_STATUS Ip4InstanceDeliverPacket ( - IN IP4_PROTOCOL *IpInstance + IN IP4_PROTOCOL *IpInstance ); /** @@ -206,7 +206,7 @@ Ip4InstanceDeliverPacket ( **/ VOID Ip4PacketTimerTicking ( - IN IP4_SERVICE *IpSb + IN IP4_SERVICE *IpSb ); /** diff --git a/NetworkPkg/Ip4Dxe/Ip4NvData.h b/NetworkPkg/Ip4Dxe/Ip4NvData.h index d161c1c8c5..869b08fce6 100644 --- a/NetworkPkg/Ip4Dxe/Ip4NvData.h +++ b/NetworkPkg/Ip4Dxe/Ip4NvData.h @@ -14,32 +14,31 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define FORMID_MAIN_FORM 1 #define FORMID_DEVICE_FORM 2 -#define KEY_ENABLE 0x100 -#define KEY_DHCP_ENABLE 0x101 -#define KEY_LOCAL_IP 0x102 -#define KEY_SUBNET_MASK 0x103 -#define KEY_GATE_WAY 0x104 -#define KEY_DNS 0x105 -#define KEY_SAVE_CHANGES 0x106 - -#define IP_MIN_SIZE 7 -#define IP_MAX_SIZE 15 -#define IP4_STR_MAX_SIZE 16 -#define ADDRESS_STR_MAX_SIZE 255 -#define MAX_IP4_CONFIG_DNS 16 +#define KEY_ENABLE 0x100 +#define KEY_DHCP_ENABLE 0x101 +#define KEY_LOCAL_IP 0x102 +#define KEY_SUBNET_MASK 0x103 +#define KEY_GATE_WAY 0x104 +#define KEY_DNS 0x105 +#define KEY_SAVE_CHANGES 0x106 + +#define IP_MIN_SIZE 7 +#define IP_MAX_SIZE 15 +#define IP4_STR_MAX_SIZE 16 +#define ADDRESS_STR_MAX_SIZE 255 +#define MAX_IP4_CONFIG_DNS 16 /// /// IP4_CONFIG2_IFR_NVDATA contains the IP4 configure /// parameters for that NIC. /// typedef struct { - UINT8 Configure; ///< NIC configure status - UINT8 DhcpEnable; ///< Static or DHCP - CHAR16 StationAddress[IP4_STR_MAX_SIZE]; ///< IP addresses - CHAR16 SubnetMask[IP4_STR_MAX_SIZE]; ///< Subnet address - CHAR16 GatewayAddress[IP4_STR_MAX_SIZE]; ///< Gateway address - CHAR16 DnsAddress[ADDRESS_STR_MAX_SIZE]; ///< DNS server address + UINT8 Configure; ///< NIC configure status + UINT8 DhcpEnable; ///< Static or DHCP + CHAR16 StationAddress[IP4_STR_MAX_SIZE]; ///< IP addresses + CHAR16 SubnetMask[IP4_STR_MAX_SIZE]; ///< Subnet address + CHAR16 GatewayAddress[IP4_STR_MAX_SIZE]; ///< Gateway address + CHAR16 DnsAddress[ADDRESS_STR_MAX_SIZE]; ///< DNS server address } IP4_CONFIG2_IFR_NVDATA; #endif - diff --git a/NetworkPkg/Ip4Dxe/Ip4Option.c b/NetworkPkg/Ip4Dxe/Ip4Option.c index 34c7ff2560..c72d5d7c73 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Option.c +++ b/NetworkPkg/Ip4Dxe/Ip4Option.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Ip4Impl.h" - /** Validate the IP4 option format for both the packets we received and will transmit. @@ -24,75 +23,73 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ BOOLEAN Ip4OptionIsValid ( - IN UINT8 *Option, - IN UINT32 OptionLen, - IN BOOLEAN Rcvd + IN UINT8 *Option, + IN UINT32 OptionLen, + IN BOOLEAN Rcvd ) { - UINT32 Cur; - UINT32 Len; - UINT32 Point; + UINT32 Cur; + UINT32 Len; + UINT32 Point; - Cur = 0; + Cur = 0; while (Cur < OptionLen) { switch (Option[Cur]) { - case IP4_OPTION_NOP: - Cur++; - break; - - case IP4_OPTION_EOP: - Cur = OptionLen; - break; - - case IP4_OPTION_LSRR: - case IP4_OPTION_SSRR: - case IP4_OPTION_RR: - Len = Option[Cur + 1]; - Point = Option[Cur + 2]; - - // - // SRR/RR options are formatted as |Type|Len|Point|Ip1|Ip2|... - // - if ((OptionLen - Cur < Len) || (Len < 3) || ((Len - 3) % 4 != 0)) { - return FALSE; - } - - if ((Point > Len + 1) || (Point % 4 != 0)) { - return FALSE; - } - - // - // The Point must point pass the last entry if the packet is received - // by us. It must point to 4 if the packet is to be sent by us for - // source route option. - // - if ((Option[Cur] != IP4_OPTION_RR) && - ((Rcvd && (Point != Len + 1)) || (!Rcvd && (Point != 4)))) { - - return FALSE; - } - - Cur += Len; - break; - - default: - Len = Option[Cur + 1]; - - if ((OptionLen - Cur < Len) || (Len < 2)) { - return FALSE; - } - - Cur = Cur + Len; - break; + case IP4_OPTION_NOP: + Cur++; + break; + + case IP4_OPTION_EOP: + Cur = OptionLen; + break; + + case IP4_OPTION_LSRR: + case IP4_OPTION_SSRR: + case IP4_OPTION_RR: + Len = Option[Cur + 1]; + Point = Option[Cur + 2]; + + // + // SRR/RR options are formatted as |Type|Len|Point|Ip1|Ip2|... + // + if ((OptionLen - Cur < Len) || (Len < 3) || ((Len - 3) % 4 != 0)) { + return FALSE; + } + + if ((Point > Len + 1) || (Point % 4 != 0)) { + return FALSE; + } + + // + // The Point must point pass the last entry if the packet is received + // by us. It must point to 4 if the packet is to be sent by us for + // source route option. + // + if ((Option[Cur] != IP4_OPTION_RR) && + ((Rcvd && (Point != Len + 1)) || (!Rcvd && (Point != 4)))) + { + return FALSE; + } + + Cur += Len; + break; + + default: + Len = Option[Cur + 1]; + + if ((OptionLen - Cur < Len) || (Len < 2)) { + return FALSE; + } + + Cur = Cur + Len; + break; } - } return TRUE; } - /** Copy the option from the original option to buffer. It handles the details such as: @@ -112,27 +109,27 @@ Ip4OptionIsValid ( **/ EFI_STATUS Ip4CopyOption ( - IN UINT8 *Option, - IN UINT32 OptionLen, - IN BOOLEAN FirstFragment, - IN OUT UINT8 *Buf OPTIONAL, - IN OUT UINT32 *BufLen + IN UINT8 *Option, + IN UINT32 OptionLen, + IN BOOLEAN FirstFragment, + IN OUT UINT8 *Buf OPTIONAL, + IN OUT UINT32 *BufLen ) { - UINT8 OptBuf[40]; - UINT32 Cur; - UINT32 Next; - UINT8 Type; - UINT32 Len; + UINT8 OptBuf[40]; + UINT32 Cur; + UINT32 Next; + UINT8 Type; + UINT32 Len; ASSERT ((BufLen != NULL) && (OptionLen <= 40)); - Cur = 0; - Next = 0; + Cur = 0; + Next = 0; while (Cur < OptionLen) { - Type = Option[Cur]; - Len = Option[Cur + 1]; + Type = Option[Cur]; + Len = Option[Cur + 1]; if (Type == IP4_OPTION_NOP) { // @@ -142,18 +139,16 @@ Ip4CopyOption ( OptBuf[Next] = IP4_OPTION_NOP; Next++; Cur++; - } else if (Type == IP4_OPTION_EOP) { // // Don't append the EOP to avoid including only a EOP option // break; - } else { // // don't copy options that is only valid for the first fragment // - if (FirstFragment || (Type & IP4_OPTION_COPY_MASK) != 0) { + if (FirstFragment || ((Type & IP4_OPTION_COPY_MASK) != 0)) { CopyMem (OptBuf + Next, Option + Cur, Len); Next += Len; } diff --git a/NetworkPkg/Ip4Dxe/Ip4Option.h b/NetworkPkg/Ip4Dxe/Ip4Option.h index 05b1bdb973..a8988db8a8 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Option.h +++ b/NetworkPkg/Ip4Dxe/Ip4Option.h @@ -9,11 +9,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #ifndef __EFI_IP4_OPTION_H__ #define __EFI_IP4_OPTION_H__ -#define IP4_OPTION_EOP 0 -#define IP4_OPTION_NOP 1 -#define IP4_OPTION_LSRR 131 // Loss source and record routing, 10000011 -#define IP4_OPTION_SSRR 137 // Strict source and record routing, 10001001 -#define IP4_OPTION_RR 7 // Record routing, 00000111 +#define IP4_OPTION_EOP 0 +#define IP4_OPTION_NOP 1 +#define IP4_OPTION_LSRR 131 // Loss source and record routing, 10000011 +#define IP4_OPTION_SSRR 137 // Strict source and record routing, 10001001 +#define IP4_OPTION_RR 7 // Record routing, 00000111 #define IP4_OPTION_COPY_MASK 0x80 @@ -33,9 +33,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ BOOLEAN Ip4OptionIsValid ( - IN UINT8 *Option, - IN UINT32 OptionLen, - IN BOOLEAN Rcvd + IN UINT8 *Option, + IN UINT32 OptionLen, + IN BOOLEAN Rcvd ); /** @@ -57,10 +57,11 @@ Ip4OptionIsValid ( **/ EFI_STATUS Ip4CopyOption ( - IN UINT8 *Option, - IN UINT32 OptionLen, - IN BOOLEAN FirstFragment, - IN OUT UINT8 *Buf OPTIONAL, - IN OUT UINT32 *BufLen + IN UINT8 *Option, + IN UINT32 OptionLen, + IN BOOLEAN FirstFragment, + IN OUT UINT8 *Buf OPTIONAL, + IN OUT UINT32 *BufLen ); + #endif diff --git a/NetworkPkg/Ip4Dxe/Ip4Output.c b/NetworkPkg/Ip4Dxe/Ip4Output.c index c161b72542..b8da0b0511 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Output.c +++ b/NetworkPkg/Ip4Dxe/Ip4Output.c @@ -10,7 +10,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent UINT16 mIp4Id; - /** Prepend an IP4 head to the Packet. It will copy the options and build the IP4 header fields. Used for IP4 fragmentation. @@ -31,16 +30,16 @@ UINT16 mIp4Id; **/ EFI_STATUS Ip4PrependHead ( - IN OUT NET_BUF *Packet, - IN IP4_HEAD *Head, - IN UINT8 *Option, - IN UINT32 OptLen + IN OUT NET_BUF *Packet, + IN IP4_HEAD *Head, + IN UINT8 *Option, + IN UINT32 OptLen ) { - UINT32 HeadLen; - UINT32 Len; - IP4_HEAD *PacketHead; - BOOLEAN FirstFragment; + UINT32 HeadLen; + UINT32 Len; + IP4_HEAD *PacketHead; + BOOLEAN FirstFragment; // // Prepend the options: first get the option length, then copy it over. @@ -53,35 +52,34 @@ Ip4PrependHead ( HeadLen = IP4_MIN_HEADLEN + Len; ASSERT (((Len % 4) == 0) && (HeadLen <= IP4_MAX_HEADLEN)); - PacketHead = (IP4_HEAD *) NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD); + PacketHead = (IP4_HEAD *)NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD); if (PacketHead == NULL) { return EFI_BAD_BUFFER_SIZE; } - Ip4CopyOption (Option, OptLen, FirstFragment, (UINT8 *) (PacketHead + 1), &Len); + Ip4CopyOption (Option, OptLen, FirstFragment, (UINT8 *)(PacketHead + 1), &Len); // // Set the head up, convert the host byte order to network byte order // - PacketHead->Ver = 4; - PacketHead->HeadLen = (UINT8) (HeadLen >> 2); - PacketHead->Tos = Head->Tos; - PacketHead->TotalLen = HTONS ((UINT16) Packet->TotalSize); - PacketHead->Id = HTONS (Head->Id); - PacketHead->Fragment = HTONS (Head->Fragment); - PacketHead->Checksum = 0; - PacketHead->Ttl = Head->Ttl; - PacketHead->Protocol = Head->Protocol; - PacketHead->Src = HTONL (Head->Src); - PacketHead->Dst = HTONL (Head->Dst); - PacketHead->Checksum = (UINT16) (~NetblockChecksum ((UINT8 *) PacketHead, HeadLen)); - - Packet->Ip.Ip4 = PacketHead; + PacketHead->Ver = 4; + PacketHead->HeadLen = (UINT8)(HeadLen >> 2); + PacketHead->Tos = Head->Tos; + PacketHead->TotalLen = HTONS ((UINT16)Packet->TotalSize); + PacketHead->Id = HTONS (Head->Id); + PacketHead->Fragment = HTONS (Head->Fragment); + PacketHead->Checksum = 0; + PacketHead->Ttl = Head->Ttl; + PacketHead->Protocol = Head->Protocol; + PacketHead->Src = HTONL (Head->Src); + PacketHead->Dst = HTONL (Head->Dst); + PacketHead->Checksum = (UINT16)(~NetblockChecksum ((UINT8 *)PacketHead, HeadLen)); + + Packet->Ip.Ip4 = PacketHead; return EFI_SUCCESS; } - /** Select an interface to send the packet generated in the IP4 driver itself, that is, not by the requests of IP4 child's consumer. Such @@ -97,14 +95,14 @@ Ip4PrependHead ( **/ IP4_INTERFACE * Ip4SelectInterface ( - IN IP4_SERVICE *IpSb, - IN IP4_ADDR Dst, - IN IP4_ADDR Src + IN IP4_SERVICE *IpSb, + IN IP4_ADDR Dst, + IN IP4_ADDR Src ) { - IP4_INTERFACE *IpIf; - IP4_INTERFACE *Selected; - LIST_ENTRY *Entry; + IP4_INTERFACE *IpIf; + IP4_INTERFACE *Selected; + LIST_ENTRY *Entry; // // Select the interface the Dst is on if one of the connected @@ -143,7 +141,6 @@ Ip4SelectInterface ( return Selected; } - /** The default callback function for system generated packet. It will free the packet. @@ -159,17 +156,16 @@ Ip4SelectInterface ( **/ VOID Ip4SysPacketSent ( - IP4_PROTOCOL *Ip4Instance, - NET_BUF *Packet, - EFI_STATUS IoStatus, - UINT32 LinkFlag, - VOID *Context + IP4_PROTOCOL *Ip4Instance, + NET_BUF *Packet, + EFI_STATUS IoStatus, + UINT32 LinkFlag, + VOID *Context ) { NetbufFree (Packet); } - /** Transmit an IP4 packet. The packet comes either from the IP4 child's consumer (IpInstance != NULL) or the IP4 driver itself @@ -207,29 +203,29 @@ Ip4SysPacketSent ( **/ EFI_STATUS Ip4Output ( - IN IP4_SERVICE *IpSb, - IN IP4_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN IP4_HEAD *Head, - IN UINT8 *Option, - IN UINT32 OptLen, - IN IP4_ADDR GateWay, - IN IP4_FRAME_CALLBACK Callback, - IN VOID *Context + IN IP4_SERVICE *IpSb, + IN IP4_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN IP4_HEAD *Head, + IN UINT8 *Option, + IN UINT32 OptLen, + IN IP4_ADDR GateWay, + IN IP4_FRAME_CALLBACK Callback, + IN VOID *Context ) { - IP4_INTERFACE *IpIf; - IP4_ROUTE_CACHE_ENTRY *CacheEntry; - IP4_ADDR Dest; - EFI_STATUS Status; - NET_BUF *Fragment; - UINT32 Index; - UINT32 HeadLen; - UINT32 PacketLen; - UINT32 Offset; - UINT32 Mtu; - UINT32 Num; - BOOLEAN RawData; + IP4_INTERFACE *IpIf; + IP4_ROUTE_CACHE_ENTRY *CacheEntry; + IP4_ADDR Dest; + EFI_STATUS Status; + NET_BUF *Fragment; + UINT32 Index; + UINT32 HeadLen; + UINT32 PacketLen; + UINT32 Offset; + UINT32 Mtu; + UINT32 Num; + BOOLEAN RawData; // // Select an interface/source for system packet, application @@ -256,12 +252,12 @@ Ip4Output ( HeadLen = sizeof (IP4_HEAD) + ((OptLen + 3) & (~0x03)); if ((IpInstance != NULL) && IpInstance->ConfigData.RawData) { - RawData = TRUE; + RawData = TRUE; } else { - Head->HeadLen = (UINT8) (HeadLen >> 2); - Head->Id = mIp4Id++; - Head->Ver = 4; - RawData = FALSE; + Head->HeadLen = (UINT8)(HeadLen >> 2); + Head->Id = mIp4Id++; + Head->Ver = 4; + RawData = FALSE; } // @@ -277,7 +273,7 @@ Ip4Output ( Context ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } @@ -289,7 +285,6 @@ Ip4Output ( // it is local broadcast. // GateWay = IP4_ALLONE_ADDRESS; - } else if (IP4_IS_MULTICAST (Dest)) { // // Set the gateway to the destination if it is an multicast @@ -297,7 +292,6 @@ Ip4Output ( // broadcast and multicast. // GateWay = Head->Dst; - } else if (GateWay == IP4_ALLZERO_ADDRESS) { // // Route the packet unless overridden, that is, GateWay isn't zero. @@ -343,8 +337,8 @@ Ip4Output ( // fragment is NOT sent in this loop. First compute how many // fragments there are. // - Mtu = (Mtu - HeadLen) & (~0x07); - Num = (Packet->TotalSize + Mtu - 1) / Mtu; + Mtu = (Mtu - HeadLen) & (~0x07); + Num = (Packet->TotalSize + Mtu - 1) / Mtu; // // Initialize the packet length and Offset. Other than the last @@ -437,7 +431,6 @@ ON_ERROR: return Status; } - /** The filter function to find a packet and all its fragments. The packet's fragments have their Context set to the packet. @@ -451,18 +444,17 @@ ON_ERROR: **/ BOOLEAN Ip4CancelPacketFragments ( - IN IP4_LINK_TX_TOKEN *Frame, - IN VOID *Context + IN IP4_LINK_TX_TOKEN *Frame, + IN VOID *Context ) { - if ((Frame->Packet == (NET_BUF *) Context) || (Frame->Context == Context)) { + if ((Frame->Packet == (NET_BUF *)Context) || (Frame->Context == Context)) { return TRUE; } return FALSE; } - /** Cancel the Packet and all its fragments. @@ -473,9 +465,9 @@ Ip4CancelPacketFragments ( **/ VOID Ip4CancelPacket ( - IN IP4_INTERFACE *IpIf, - IN NET_BUF *Packet, - IN EFI_STATUS IoStatus + IN IP4_INTERFACE *IpIf, + IN NET_BUF *Packet, + IN EFI_STATUS IoStatus ) { Ip4CancelFrames (IpIf, IoStatus, Ip4CancelPacketFragments, Packet); diff --git a/NetworkPkg/Ip4Dxe/Ip4Output.h b/NetworkPkg/Ip4Dxe/Ip4Output.h index bb6fa641b0..4bd9baa147 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Output.h +++ b/NetworkPkg/Ip4Dxe/Ip4Output.h @@ -23,11 +23,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ VOID Ip4SysPacketSent ( - IP4_PROTOCOL *Ip4Instance, - NET_BUF *Packet, - EFI_STATUS IoStatus, - UINT32 LinkFlag, - VOID *Context + IP4_PROTOCOL *Ip4Instance, + NET_BUF *Packet, + EFI_STATUS IoStatus, + UINT32 LinkFlag, + VOID *Context ); /** @@ -63,15 +63,15 @@ Ip4SysPacketSent ( **/ EFI_STATUS Ip4Output ( - IN IP4_SERVICE *IpSb, - IN IP4_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN IP4_HEAD *Head, - IN UINT8 *Option, - IN UINT32 OptLen, - IN IP4_ADDR GateWay, - IN IP4_FRAME_CALLBACK Callback, - IN VOID *Context + IN IP4_SERVICE *IpSb, + IN IP4_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN IP4_HEAD *Head, + IN UINT8 *Option, + IN UINT32 OptLen, + IN IP4_ADDR GateWay, + IN IP4_FRAME_CALLBACK Callback, + IN VOID *Context ); /** @@ -84,9 +84,9 @@ Ip4Output ( **/ VOID Ip4CancelPacket ( - IN IP4_INTERFACE *IpIf, - IN NET_BUF *Packet, - IN EFI_STATUS IoStatus + IN IP4_INTERFACE *IpIf, + IN NET_BUF *Packet, + IN EFI_STATUS IoStatus ); /** @@ -109,10 +109,10 @@ Ip4CancelPacket ( **/ EFI_STATUS Ip4PrependHead ( - IN OUT NET_BUF *Packet, - IN IP4_HEAD *Head, - IN UINT8 *Option, - IN UINT32 OptLen + IN OUT NET_BUF *Packet, + IN IP4_HEAD *Head, + IN UINT8 *Option, + IN UINT32 OptLen ); extern UINT16 mIp4Id; diff --git a/NetworkPkg/Ip4Dxe/Ip4Route.c b/NetworkPkg/Ip4Dxe/Ip4Route.c index 386011934b..0a92254141 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Route.c +++ b/NetworkPkg/Ip4Dxe/Ip4Route.c @@ -7,7 +7,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Ip4Impl.h" - /** Allocate a route entry then initialize it with the Dest/Netmask and Gateway. @@ -22,12 +21,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ IP4_ROUTE_ENTRY * Ip4CreateRouteEntry ( - IN IP4_ADDR Dest, - IN IP4_ADDR Netmask, - IN IP4_ADDR GateWay + IN IP4_ADDR Dest, + IN IP4_ADDR Netmask, + IN IP4_ADDR GateWay ) { - IP4_ROUTE_ENTRY *RtEntry; + IP4_ROUTE_ENTRY *RtEntry; RtEntry = AllocatePool (sizeof (IP4_ROUTE_ENTRY)); @@ -46,7 +45,6 @@ Ip4CreateRouteEntry ( return RtEntry; } - /** Free the route table entry. It is reference counted. @@ -55,7 +53,7 @@ Ip4CreateRouteEntry ( **/ VOID Ip4FreeRouteEntry ( - IN IP4_ROUTE_ENTRY *RtEntry + IN IP4_ROUTE_ENTRY *RtEntry ) { ASSERT (RtEntry->RefCnt > 0); @@ -65,7 +63,6 @@ Ip4FreeRouteEntry ( } } - /** Allocate and initialize an IP4 route cache entry. @@ -81,13 +78,13 @@ Ip4FreeRouteEntry ( **/ IP4_ROUTE_CACHE_ENTRY * Ip4CreateRouteCacheEntry ( - IN IP4_ADDR Dst, - IN IP4_ADDR Src, - IN IP4_ADDR GateWay, - IN UINTN Tag + IN IP4_ADDR Dst, + IN IP4_ADDR Src, + IN IP4_ADDR GateWay, + IN UINTN Tag ) { - IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; + IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; RtCacheEntry = AllocatePool (sizeof (IP4_ROUTE_CACHE_ENTRY)); @@ -106,7 +103,6 @@ Ip4CreateRouteCacheEntry ( return RtCacheEntry; } - /** Free the route cache entry. It is reference counted. @@ -125,7 +121,6 @@ Ip4FreeRouteCacheEntry ( } } - /** Initialize an empty route cache table. @@ -134,17 +129,16 @@ Ip4FreeRouteCacheEntry ( **/ VOID Ip4InitRouteCache ( - IN OUT IP4_ROUTE_CACHE *RtCache + IN OUT IP4_ROUTE_CACHE *RtCache ) { - UINT32 Index; + UINT32 Index; for (Index = 0; Index < IP4_ROUTE_CACHE_HASH_VALUE; Index++) { InitializeListHead (&(RtCache->CacheBucket[Index])); } } - /** Clean up a route cache, that is free all the route cache entries enqueued in the cache. @@ -154,13 +148,13 @@ Ip4InitRouteCache ( **/ VOID Ip4CleanRouteCache ( - IN IP4_ROUTE_CACHE *RtCache + IN IP4_ROUTE_CACHE *RtCache ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; - UINT32 Index; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; + UINT32 Index; for (Index = 0; Index < IP4_ROUTE_CACHE_HASH_VALUE; Index++) { NET_LIST_FOR_EACH_SAFE (Entry, Next, &(RtCache->CacheBucket[Index])) { @@ -172,8 +166,6 @@ Ip4CleanRouteCache ( } } - - /** Create an empty route table, includes its internal route cache @@ -186,8 +178,8 @@ Ip4CreateRouteTable ( VOID ) { - IP4_ROUTE_TABLE *RtTable; - UINT32 Index; + IP4_ROUTE_TABLE *RtTable; + UINT32 Index; RtTable = AllocatePool (sizeof (IP4_ROUTE_TABLE)); @@ -208,7 +200,6 @@ Ip4CreateRouteTable ( return RtTable; } - /** Free the route table and its associated route cache. Route table is reference counted. @@ -218,18 +209,18 @@ Ip4CreateRouteTable ( **/ VOID Ip4FreeRouteTable ( - IN IP4_ROUTE_TABLE *RtTable + IN IP4_ROUTE_TABLE *RtTable ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_ROUTE_ENTRY *RtEntry; - UINT32 Index; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_ROUTE_ENTRY *RtEntry; + UINT32 Index; ASSERT (RtTable->RefCnt > 0); if (--RtTable->RefCnt > 0) { - return ; + return; } // @@ -249,8 +240,6 @@ Ip4FreeRouteTable ( FreePool (RtTable); } - - /** Remove all the cache entries bearing the Tag. When a route cache entry is created, it is tagged with the address of route entry @@ -263,18 +252,17 @@ Ip4FreeRouteTable ( **/ VOID Ip4PurgeRouteCache ( - IN OUT IP4_ROUTE_CACHE *RtCache, - IN UINTN Tag + IN OUT IP4_ROUTE_CACHE *RtCache, + IN UINTN Tag ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; - UINT32 Index; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; + UINT32 Index; for (Index = 0; Index < IP4_ROUTE_CACHE_HASH_VALUE; Index++) { NET_LIST_FOR_EACH_SAFE (Entry, Next, &RtCache->CacheBucket[Index]) { - RtCacheEntry = NET_LIST_USER_STRUCT (Entry, IP4_ROUTE_CACHE_ENTRY, Link); if (RtCacheEntry->Tag == Tag) { @@ -285,7 +273,6 @@ Ip4PurgeRouteCache ( } } - /** Add a route entry to the route table. All the IP4_ADDRs are in host byte order. @@ -302,15 +289,15 @@ Ip4PurgeRouteCache ( **/ EFI_STATUS Ip4AddRoute ( - IN OUT IP4_ROUTE_TABLE *RtTable, - IN IP4_ADDR Dest, - IN IP4_ADDR Netmask, - IN IP4_ADDR Gateway + IN OUT IP4_ROUTE_TABLE *RtTable, + IN IP4_ADDR Dest, + IN IP4_ADDR Netmask, + IN IP4_ADDR Gateway ) { - LIST_ENTRY *Head; - LIST_ENTRY *Entry; - IP4_ROUTE_ENTRY *RtEntry; + LIST_ENTRY *Head; + LIST_ENTRY *Entry; + IP4_ROUTE_ENTRY *RtEntry; // // All the route entries with the same netmask length are @@ -348,7 +335,6 @@ Ip4AddRoute ( return EFI_SUCCESS; } - /** Remove a route entry and all the route caches spawn from it. @@ -364,16 +350,16 @@ Ip4AddRoute ( **/ EFI_STATUS Ip4DelRoute ( - IN OUT IP4_ROUTE_TABLE *RtTable, - IN IP4_ADDR Dest, - IN IP4_ADDR Netmask, - IN IP4_ADDR Gateway + IN OUT IP4_ROUTE_TABLE *RtTable, + IN IP4_ADDR Dest, + IN IP4_ADDR Netmask, + IN IP4_ADDR Gateway ) { - LIST_ENTRY *Head; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_ROUTE_ENTRY *RtEntry; + LIST_ENTRY *Head; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_ROUTE_ENTRY *RtEntry; Head = &(RtTable->RouteArea[NetGetMaskLength (Netmask)]); @@ -381,9 +367,9 @@ Ip4DelRoute ( RtEntry = NET_LIST_USER_STRUCT (Entry, IP4_ROUTE_ENTRY, Link); if (IP4_NET_EQUAL (RtEntry->Dest, Dest, Netmask) && (RtEntry->NextHop == Gateway)) { - Ip4PurgeRouteCache (&RtTable->Cache, (UINTN) RtEntry); + Ip4PurgeRouteCache (&RtTable->Cache, (UINTN)RtEntry); RemoveEntryList (Entry); - Ip4FreeRouteEntry (RtEntry); + Ip4FreeRouteEntry (RtEntry); RtTable->TotalNum--; return EFI_SUCCESS; @@ -393,7 +379,6 @@ Ip4DelRoute ( return EFI_NOT_FOUND; } - /** Find a route cache with the dst and src. This is used by ICMP redirect message process. All kinds of redirect is treated as @@ -410,14 +395,14 @@ Ip4DelRoute ( **/ IP4_ROUTE_CACHE_ENTRY * Ip4FindRouteCache ( - IN IP4_ROUTE_TABLE *RtTable, - IN IP4_ADDR Dest, - IN IP4_ADDR Src + IN IP4_ROUTE_TABLE *RtTable, + IN IP4_ADDR Dest, + IN IP4_ADDR Src ) { - LIST_ENTRY *Entry; - IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; - UINT32 Index; + LIST_ENTRY *Entry; + IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; + UINT32 Index; Index = IP4_ROUTE_CACHE_HASH (Dest, Src); @@ -433,7 +418,6 @@ Ip4FindRouteCache ( return NULL; } - /** Search the route table for a most specific match to the Dst. It searches from the longest route area (mask length == 32) to the shortest route area @@ -452,14 +436,14 @@ Ip4FindRouteCache ( **/ IP4_ROUTE_ENTRY * Ip4FindRouteEntry ( - IN IP4_ROUTE_TABLE *RtTable, - IN IP4_ADDR Dst + IN IP4_ROUTE_TABLE *RtTable, + IN IP4_ADDR Dst ) { - LIST_ENTRY *Entry; - IP4_ROUTE_ENTRY *RtEntry; - IP4_ROUTE_TABLE *Table; - INTN Index; + LIST_ENTRY *Entry; + IP4_ROUTE_ENTRY *RtEntry; + IP4_ROUTE_TABLE *Table; + INTN Index; RtEntry = NULL; @@ -476,11 +460,9 @@ Ip4FindRouteEntry ( } } - return NULL; } - /** Search the route table to route the packet. Return/create a route cache if there is a route to the destination. @@ -500,26 +482,26 @@ Ip4FindRouteEntry ( **/ IP4_ROUTE_CACHE_ENTRY * Ip4Route ( - IN IP4_ROUTE_TABLE *RtTable, - IN IP4_ADDR Dest, - IN IP4_ADDR Src, - IN IP4_ADDR SubnetMask, - IN BOOLEAN AlwaysTryDestAddr + IN IP4_ROUTE_TABLE *RtTable, + IN IP4_ADDR Dest, + IN IP4_ADDR Src, + IN IP4_ADDR SubnetMask, + IN BOOLEAN AlwaysTryDestAddr ) { - LIST_ENTRY *Head; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; - IP4_ROUTE_CACHE_ENTRY *Cache; - IP4_ROUTE_ENTRY *RtEntry; - IP4_ADDR NextHop; - UINT32 Count; + LIST_ENTRY *Head; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP4_ROUTE_CACHE_ENTRY *RtCacheEntry; + IP4_ROUTE_CACHE_ENTRY *Cache; + IP4_ROUTE_ENTRY *RtEntry; + IP4_ADDR NextHop; + UINT32 Count; ASSERT (RtTable != NULL); - Head = &RtTable->Cache.CacheBucket[IP4_ROUTE_CACHE_HASH (Dest, Src)]; - RtCacheEntry = Ip4FindRouteCache (RtTable, Dest, Src); + Head = &RtTable->Cache.CacheBucket[IP4_ROUTE_CACHE_HASH (Dest, Src)]; + RtCacheEntry = Ip4FindRouteCache (RtTable, Dest, Src); // // If found, promote the cache entry to the head of the hash bucket. LRU @@ -552,7 +534,7 @@ Ip4Route ( // When using /32 subnet mask, the packet will always be sent to the direct // destination first, if we can't find a matching route cache. // - if (SubnetMask == IP4_ALLONE_ADDRESS || ((RtEntry->Flag & IP4_DIRECT_ROUTE) != 0)) { + if ((SubnetMask == IP4_ALLONE_ADDRESS) || ((RtEntry->Flag & IP4_DIRECT_ROUTE) != 0)) { NextHop = Dest; } else { NextHop = RtEntry->NextHop; @@ -567,7 +549,7 @@ Ip4Route ( // For /32 subnet mask, the default route in RtEntry will be used if failed // to send the packet to driect destination address. // - RtCacheEntry = Ip4CreateRouteCacheEntry (Dest, Src, NextHop, (UINTN) RtEntry); + RtCacheEntry = Ip4CreateRouteCacheEntry (Dest, Src, NextHop, (UINTN)RtEntry); if (RtCacheEntry == NULL) { return NULL; @@ -596,7 +578,6 @@ Ip4Route ( return RtCacheEntry; } - /** Build a EFI_IP4_ROUTE_TABLE to be returned to the caller of GetModeData. The EFI_IP4_ROUTE_TABLE is clumsy to use in the @@ -610,15 +591,15 @@ Ip4Route ( **/ EFI_STATUS Ip4BuildEfiRouteTable ( - IN IP4_PROTOCOL *IpInstance + IN IP4_PROTOCOL *IpInstance ) { - LIST_ENTRY *Entry; - IP4_ROUTE_TABLE *RtTable; - IP4_ROUTE_ENTRY *RtEntry; - EFI_IP4_ROUTE_TABLE *Table; - UINT32 Count; - INT32 Index; + LIST_ENTRY *Entry; + IP4_ROUTE_TABLE *RtTable; + IP4_ROUTE_ENTRY *RtEntry; + EFI_IP4_ROUTE_TABLE *Table; + UINT32 Count; + INT32 Index; RtTable = IpInstance->RouteTable; diff --git a/NetworkPkg/Ip4Dxe/Ip4Route.h b/NetworkPkg/Ip4Dxe/Ip4Route.h index b4d91667e9..fc4026275b 100644 --- a/NetworkPkg/Ip4Dxe/Ip4Route.h +++ b/NetworkPkg/Ip4Dxe/Ip4Route.h @@ -11,10 +11,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Ip4Common.h" -#define IP4_DIRECT_ROUTE 0x00000001 +#define IP4_DIRECT_ROUTE 0x00000001 -#define IP4_ROUTE_CACHE_HASH_VALUE 31 -#define IP4_ROUTE_CACHE_MAX 64 // Max NO. of cache entry per hash bucket +#define IP4_ROUTE_CACHE_HASH_VALUE 31 +#define IP4_ROUTE_CACHE_MAX 64 // Max NO. of cache entry per hash bucket #define IP4_ROUTE_CACHE_HASH(Dst, Src) (((Dst) ^ (Src)) % IP4_ROUTE_CACHE_HASH_VALUE) @@ -26,12 +26,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent /// enties of the connected network have the flag on. /// typedef struct { - LIST_ENTRY Link; - INTN RefCnt; - IP4_ADDR Dest; - IP4_ADDR Netmask; - IP4_ADDR NextHop; - UINT32 Flag; + LIST_ENTRY Link; + INTN RefCnt; + IP4_ADDR Dest; + IP4_ADDR Netmask; + IP4_ADDR NextHop; + UINT32 Flag; } IP4_ROUTE_ENTRY; /// @@ -45,12 +45,12 @@ typedef struct { /// to-be-deleted route entry. /// typedef struct { - LIST_ENTRY Link; - INTN RefCnt; - IP4_ADDR Dest; - IP4_ADDR Src; - IP4_ADDR NextHop; - UINTN Tag; + LIST_ENTRY Link; + INTN RefCnt; + IP4_ADDR Dest; + IP4_ADDR Src; + IP4_ADDR NextHop; + UINTN Tag; } IP4_ROUTE_CACHE_ENTRY; /// @@ -61,7 +61,7 @@ typedef struct { /// detach them later. /// typedef struct { - LIST_ENTRY CacheBucket[IP4_ROUTE_CACHE_HASH_VALUE]; + LIST_ENTRY CacheBucket[IP4_ROUTE_CACHE_HASH_VALUE]; } IP4_ROUTE_CACHE; /// @@ -75,11 +75,11 @@ typedef struct { typedef struct _IP4_ROUTE_TABLE IP4_ROUTE_TABLE; struct _IP4_ROUTE_TABLE { - INTN RefCnt; - UINT32 TotalNum; - LIST_ENTRY RouteArea[IP4_MASK_NUM]; - IP4_ROUTE_TABLE *Next; - IP4_ROUTE_CACHE Cache; + INTN RefCnt; + UINT32 TotalNum; + LIST_ENTRY RouteArea[IP4_MASK_NUM]; + IP4_ROUTE_TABLE *Next; + IP4_ROUTE_CACHE Cache; }; /** @@ -103,7 +103,7 @@ Ip4CreateRouteTable ( **/ VOID Ip4FreeRouteTable ( - IN IP4_ROUTE_TABLE *RtTable + IN IP4_ROUTE_TABLE *RtTable ); /** @@ -122,10 +122,10 @@ Ip4FreeRouteTable ( **/ EFI_STATUS Ip4AddRoute ( - IN OUT IP4_ROUTE_TABLE *RtTable, - IN IP4_ADDR Dest, - IN IP4_ADDR Netmask, - IN IP4_ADDR Gateway + IN OUT IP4_ROUTE_TABLE *RtTable, + IN IP4_ADDR Dest, + IN IP4_ADDR Netmask, + IN IP4_ADDR Gateway ); /** @@ -143,10 +143,10 @@ Ip4AddRoute ( **/ EFI_STATUS Ip4DelRoute ( - IN OUT IP4_ROUTE_TABLE *RtTable, - IN IP4_ADDR Dest, - IN IP4_ADDR Netmask, - IN IP4_ADDR Gateway + IN OUT IP4_ROUTE_TABLE *RtTable, + IN IP4_ADDR Dest, + IN IP4_ADDR Netmask, + IN IP4_ADDR Gateway ); /** @@ -165,9 +165,9 @@ Ip4DelRoute ( **/ IP4_ROUTE_CACHE_ENTRY * Ip4FindRouteCache ( - IN IP4_ROUTE_TABLE *RtTable, - IN IP4_ADDR Dest, - IN IP4_ADDR Src + IN IP4_ROUTE_TABLE *RtTable, + IN IP4_ADDR Dest, + IN IP4_ADDR Src ); /** @@ -200,11 +200,11 @@ Ip4FreeRouteCacheEntry ( **/ IP4_ROUTE_CACHE_ENTRY * Ip4Route ( - IN IP4_ROUTE_TABLE *RtTable, - IN IP4_ADDR Dest, - IN IP4_ADDR Src, - IN IP4_ADDR SubnetMask, - IN BOOLEAN AlwaysTryDestAddr + IN IP4_ROUTE_TABLE *RtTable, + IN IP4_ADDR Dest, + IN IP4_ADDR Src, + IN IP4_ADDR SubnetMask, + IN BOOLEAN AlwaysTryDestAddr ); /** @@ -220,6 +220,7 @@ Ip4Route ( **/ EFI_STATUS Ip4BuildEfiRouteTable ( - IN IP4_PROTOCOL *IpInstance + IN IP4_PROTOCOL *IpInstance ); + #endif diff --git a/NetworkPkg/Ip6Dxe/ComponentName.c b/NetworkPkg/Ip6Dxe/ComponentName.c index e57fe5e605..b59c6d2a22 100644 --- a/NetworkPkg/Ip6Dxe/ComponentName.c +++ b/NetworkPkg/Ip6Dxe/ComponentName.c @@ -132,17 +132,17 @@ Ip6ComponentNameGetDriverName ( EFI_STATUS EFIAPI Ip6ComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); // // EFI Component Name Protocol. // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gIp6ComponentName = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gIp6ComponentName = { Ip6ComponentNameGetDriverName, Ip6ComponentNameGetControllerName, "eng" @@ -152,12 +152,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gIp6ComponentName = // EFI Component Name 2 Protocol. // GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gIp6ComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) Ip6ComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) Ip6ComponentNameGetControllerName, + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)Ip6ComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)Ip6ComponentNameGetControllerName, "en" }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mIp6DriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mIp6DriverNameTable[] = { { "eng;en", L"IP6 Network Service Driver" @@ -168,7 +168,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mIp6DriverNameTable[ } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gIp6ControllerNameTable = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gIp6ControllerNameTable = NULL; /** Retrieves a Unicode string that is the user-readable name of the driver. @@ -218,13 +218,12 @@ Ip6ComponentNameGetDriverName ( ) { return LookupUnicodeString2 ( - Language, - This->SupportedLanguages, - mIp6DriverNameTable, - DriverName, - (BOOLEAN) (This == &gIp6ComponentName) - ); - + Language, + This->SupportedLanguages, + mIp6DriverNameTable, + DriverName, + (BOOLEAN)(This == &gIp6ComponentName) + ); } /** @@ -239,14 +238,14 @@ Ip6ComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - IN EFI_IP6_PROTOCOL *Ip6 + IN EFI_IP6_PROTOCOL *Ip6 ) { - EFI_STATUS Status; - CHAR16 HandleName[128]; - EFI_IP6_MODE_DATA Ip6ModeData; - UINTN Offset; - CHAR16 Address[sizeof"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"]; + EFI_STATUS Status; + CHAR16 HandleName[128]; + EFI_IP6_MODE_DATA Ip6ModeData; + UINTN Offset; + CHAR16 Address[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"]; if (Ip6 == NULL) { return EFI_INVALID_PARAMETER; @@ -284,35 +283,37 @@ UpdateName ( } if (!EFI_ERROR (Status) && Ip6ModeData.IsStarted) { - Status = NetLibIp6ToStr (&Ip6ModeData.ConfigData.StationAddress, Address, sizeof(Address)); + Status = NetLibIp6ToStr (&Ip6ModeData.ConfigData.StationAddress, Address, sizeof (Address)); if (EFI_ERROR (Status)) { return Status; } + Offset += UnicodeSPrint ( HandleName, - sizeof(HandleName), + sizeof (HandleName), L"IPv6(StationAddress=%s, ", Address ); - Status = NetLibIp6ToStr (&Ip6ModeData.ConfigData.DestinationAddress, Address, sizeof(Address)); + Status = NetLibIp6ToStr (&Ip6ModeData.ConfigData.DestinationAddress, Address, sizeof (Address)); if (EFI_ERROR (Status)) { return Status; } + UnicodeSPrint ( HandleName + Offset, - sizeof(HandleName) - Offset * sizeof (CHAR16), + sizeof (HandleName) - Offset * sizeof (CHAR16), L"DestinationAddress=%s)", Address ); } else if (!Ip6ModeData.IsStarted) { - UnicodeSPrint (HandleName, sizeof(HandleName), L"IPv6(Not started)"); + UnicodeSPrint (HandleName, sizeof (HandleName), L"IPv6(Not started)"); } else { - UnicodeSPrint (HandleName, sizeof(HandleName), L"IPv6(%r)", Status); + UnicodeSPrint (HandleName, sizeof (HandleName), L"IPv6(%r)", Status); } if (gIp6ControllerNameTable != NULL) { - FreeUnicodeStringTable (gIp6ControllerNameTable); - gIp6ControllerNameTable = NULL; + FreeUnicodeStringTable (gIp6ControllerNameTable); + gIp6ControllerNameTable = NULL; } Status = AddUnicodeString2 ( @@ -406,15 +407,15 @@ UpdateName ( EFI_STATUS EFIAPI Ip6ComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_IP6_PROTOCOL *Ip6; + EFI_STATUS Status; + EFI_IP6_PROTOCOL *Ip6; // // Only provide names for child handles. diff --git a/NetworkPkg/Ip6Dxe/Ip6Common.c b/NetworkPkg/Ip6Dxe/Ip6Common.c index 840fff0e72..6622cf838b 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Common.c +++ b/NetworkPkg/Ip6Dxe/Ip6Common.c @@ -101,16 +101,16 @@ Ip6BuildEfiAddressList ( **/ EFI_STATUS Ip6SetToAllNodeMulticast ( - IN BOOLEAN Router, - IN UINT8 Scope, - OUT EFI_IPv6_ADDRESS *Ip6Addr + IN BOOLEAN Router, + IN UINT8 Scope, + OUT EFI_IPv6_ADDRESS *Ip6Addr ) { if (Ip6Addr == NULL) { return EFI_INVALID_PARAMETER; } - if (!Router && Scope == IP6_SITE_LOCAL_SCOPE) { + if (!Router && (Scope == IP6_SITE_LOCAL_SCOPE)) { return EFI_INVALID_PARAMETER; } @@ -140,13 +140,13 @@ Ip6SetToAllNodeMulticast ( **/ UINT8 * Ip6CreateInterfaceID ( - IN OUT IP6_SERVICE *IpSb + IN OUT IP6_SERVICE *IpSb ) { - UINT8 InterfaceId[8]; - UINT8 Byte; - EFI_MAC_ADDRESS *MacAddr; - UINT32 AddrLen; + UINT8 InterfaceId[8]; + UINT8 Byte; + EFI_MAC_ADDRESS *MacAddr; + UINT32 AddrLen; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); @@ -155,7 +155,7 @@ Ip6CreateInterfaceID ( // // Currently only IEEE 802 48-bit MACs are supported to create link local address. // - if (AddrLen != IP6_MAC_LEN || IpSb->InterfaceIdLen != IP6_IF_ID_LEN) { + if ((AddrLen != IP6_MAC_LEN) || (IpSb->InterfaceIdLen != IP6_IF_ID_LEN)) { return NULL; } @@ -171,7 +171,7 @@ Ip6CreateInterfaceID ( InterfaceId[4] = 0xFE; CopyMem (&InterfaceId[5], &MacAddr->Addr[3], 3); - Byte = (UINT8) (InterfaceId[0] & IP6_U_BIT); + Byte = (UINT8)(InterfaceId[0] & IP6_U_BIT); if (Byte == IP6_U_BIT) { InterfaceId[0] &= ~IP6_U_BIT; } else { @@ -198,7 +198,7 @@ Ip6CreateInterfaceID ( **/ EFI_IPv6_ADDRESS * Ip6CreateLinkLocalAddr ( - IN OUT IP6_SERVICE *IpSb + IN OUT IP6_SERVICE *IpSb ) { EFI_IPv6_ADDRESS *Ip6Addr; @@ -289,8 +289,8 @@ Ip6CreateLinkLocalAddr ( **/ VOID Ip6CreateSNMulticastAddr ( - IN EFI_IPv6_ADDRESS *Ip6Addr, - OUT EFI_IPv6_ADDRESS *MulticastAddr + IN EFI_IPv6_ADDRESS *Ip6Addr, + OUT EFI_IPv6_ADDRESS *MulticastAddr ) { ASSERT (Ip6Addr != NULL && MulticastAddr != NULL); @@ -314,8 +314,8 @@ Ip6CreateSNMulticastAddr ( **/ VOID Ip6AddAddr ( - IN OUT IP6_INTERFACE *IpIf, - IN IP6_ADDRESS_INFO *AddrInfo + IN OUT IP6_INTERFACE *IpIf, + IN IP6_ADDRESS_INFO *AddrInfo ) { InsertHeadList (&IpIf->AddressList, &AddrInfo->Link); @@ -335,17 +335,17 @@ Ip6AddAddr ( EFI_STATUS EFIAPI Ip6DestroyChildEntryByAddr ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { IP6_PROTOCOL *Instance; EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; EFI_IPv6_ADDRESS *Address; - Instance = NET_LIST_USER_STRUCT_S (Entry, IP6_PROTOCOL, Link, IP6_PROTOCOL_SIGNATURE); - ServiceBinding = ((IP6_DESTROY_CHILD_BY_ADDR_CALLBACK_CONTEXT*) Context)->ServiceBinding; - Address = ((IP6_DESTROY_CHILD_BY_ADDR_CALLBACK_CONTEXT*) Context)->Address; + Instance = NET_LIST_USER_STRUCT_S (Entry, IP6_PROTOCOL, Link, IP6_PROTOCOL_SIGNATURE); + ServiceBinding = ((IP6_DESTROY_CHILD_BY_ADDR_CALLBACK_CONTEXT *)Context)->ServiceBinding; + Address = ((IP6_DESTROY_CHILD_BY_ADDR_CALLBACK_CONTEXT *)Context)->Address; if ((Instance->State == IP6_STATE_CONFIGED) && EFI_IP6_EQUAL (&Instance->ConfigData.StationAddress, Address)) { return ServiceBinding->DestroyChild (ServiceBinding, Instance->Handle); @@ -368,14 +368,14 @@ Ip6DestroyInstanceByAddress ( IN EFI_IPv6_ADDRESS *Address ) { - LIST_ENTRY *List; + LIST_ENTRY *List; IP6_DESTROY_CHILD_BY_ADDR_CALLBACK_CONTEXT Context; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); - List = &IpSb->Children; + List = &IpSb->Children; Context.ServiceBinding = &IpSb->ServiceBinding; - Context.Address = Address; + Context.Address = Address; NetDestroyLinkList ( List, Ip6DestroyChildEntryByAddr, @@ -416,13 +416,13 @@ Ip6RemoveAddr ( IN UINT8 PrefixLength ) { - EFI_STATUS Status; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_ADDRESS_INFO *AddrInfo; - EFI_IPv6_ADDRESS SnMCastAddr; + EFI_STATUS Status; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_ADDRESS_INFO *AddrInfo; + EFI_IPv6_ADDRESS SnMCastAddr; - if (IsListEmpty (AddressList) || *AddressCount < 1 || PrefixLength > IP6_PREFIX_MAX) { + if (IsListEmpty (AddressList) || (*AddressCount < 1) || (PrefixLength > IP6_PREFIX_MAX)) { return EFI_INVALID_PARAMETER; } @@ -431,10 +431,11 @@ Ip6RemoveAddr ( NET_LIST_FOR_EACH_SAFE (Entry, Next, AddressList) { AddrInfo = NET_LIST_USER_STRUCT_S (Entry, IP6_ADDRESS_INFO, Link, IP6_ADDR_INFO_SIGNATURE); - if (Prefix == NULL || - (PrefixLength == 128 && EFI_IP6_EQUAL (Prefix, &AddrInfo->Address)) || - (PrefixLength == AddrInfo->PrefixLength && NetIp6IsNetEqual (Prefix, &AddrInfo->Address, PrefixLength)) - ) { + if ((Prefix == NULL) || + ((PrefixLength == 128) && EFI_IP6_EQUAL (Prefix, &AddrInfo->Address)) || + ((PrefixLength == AddrInfo->PrefixLength) && NetIp6IsNetEqual (Prefix, &AddrInfo->Address, PrefixLength)) + ) + { if (IpSb != NULL) { NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); Ip6CreateSNMulticastAddr (&AddrInfo->Address, &SnMCastAddr); @@ -468,11 +469,11 @@ Ip6RemoveAddr ( **/ BOOLEAN Ip6IsSNMulticastAddr ( - IN EFI_IPv6_ADDRESS *Ip6 + IN EFI_IPv6_ADDRESS *Ip6 ) { - EFI_IPv6_ADDRESS Sn; - BOOLEAN Flag; + EFI_IPv6_ADDRESS Sn; + BOOLEAN Flag; Ip6CreateSNMulticastAddr (Ip6, &Sn); Flag = FALSE; @@ -501,16 +502,16 @@ Ip6IsSNMulticastAddr ( **/ BOOLEAN Ip6IsOneOfSetAddress ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Address, - OUT IP6_INTERFACE **Interface OPTIONAL, - OUT IP6_ADDRESS_INFO **AddressInfo OPTIONAL + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Address, + OUT IP6_INTERFACE **Interface OPTIONAL, + OUT IP6_ADDRESS_INFO **AddressInfo OPTIONAL ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Entry2; - IP6_INTERFACE *IpIf; - IP6_ADDRESS_INFO *TmpAddressInfo; + LIST_ENTRY *Entry; + LIST_ENTRY *Entry2; + IP6_INTERFACE *IpIf; + IP6_ADDRESS_INFO *TmpAddressInfo; // // Check link-local address first @@ -566,7 +567,7 @@ Ip6IsValidLinkAddress ( IN EFI_MAC_ADDRESS *LinkAddress ) { - UINT32 Index; + UINT32 Index; // // TODO: might be updated later to be more acceptable. @@ -590,29 +591,29 @@ Ip6IsValidLinkAddress ( **/ VOID Ip6CopyAddressByPrefix ( - OUT EFI_IPv6_ADDRESS *Dest, - IN EFI_IPv6_ADDRESS *Src, - IN UINT8 PrefixLength + OUT EFI_IPv6_ADDRESS *Dest, + IN EFI_IPv6_ADDRESS *Src, + IN UINT8 PrefixLength ) { - UINT8 Byte; - UINT8 Bit; - UINT8 Mask; + UINT8 Byte; + UINT8 Bit; + UINT8 Mask; ASSERT (Dest != NULL && Src != NULL); ASSERT (PrefixLength <= IP6_PREFIX_MAX); - Byte = (UINT8) (PrefixLength / 8); - Bit = (UINT8) (PrefixLength % 8); + Byte = (UINT8)(PrefixLength / 8); + Bit = (UINT8)(PrefixLength % 8); ZeroMem (Dest, sizeof (EFI_IPv6_ADDRESS)); CopyMem (Dest, Src, Byte); if (Bit > 0) { - Mask = (UINT8) (0xFF << (8 - Bit)); + Mask = (UINT8)(0xFF << (8 - Bit)); ASSERT (Byte < 16); - Dest->Addr[Byte] = (UINT8) (Src->Addr[Byte] & Mask); + Dest->Addr[Byte] = (UINT8)(Src->Addr[Byte] & Mask); } } @@ -632,12 +633,12 @@ Ip6CopyAddressByPrefix ( **/ EFI_STATUS Ip6GetMulticastMac ( - IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp, - IN EFI_IPv6_ADDRESS *Multicast, - OUT EFI_MAC_ADDRESS *Mac + IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp, + IN EFI_IPv6_ADDRESS *Multicast, + OUT EFI_MAC_ADDRESS *Mac ) { - EFI_IP_ADDRESS EfiIp; + EFI_IP_ADDRESS EfiIp; IP6_COPY_ADDRESS (&EfiIp.v6, Multicast); @@ -656,7 +657,7 @@ Ip6GetMulticastMac ( **/ EFI_IP6_HEADER * Ip6NtohHead ( - IN OUT EFI_IP6_HEADER *Head + IN OUT EFI_IP6_HEADER *Head ) { Head->FlowLabelL = NTOHS (Head->FlowLabelL); @@ -664,4 +665,3 @@ Ip6NtohHead ( return Head; } - diff --git a/NetworkPkg/Ip6Dxe/Ip6Common.h b/NetworkPkg/Ip6Dxe/Ip6Common.h index 18723f84e7..cfa9bb5e2a 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Common.h +++ b/NetworkPkg/Ip6Dxe/Ip6Common.h @@ -10,59 +10,59 @@ #ifndef __EFI_IP6_COMMON_H__ #define __EFI_IP6_COMMON_H__ -#define IP6_LINK_EQUAL(Mac1, Mac2) (CompareMem ((Mac1), (Mac2), sizeof (EFI_MAC_ADDRESS)) == 0) +#define IP6_LINK_EQUAL(Mac1, Mac2) (CompareMem ((Mac1), (Mac2), sizeof (EFI_MAC_ADDRESS)) == 0) // // Convert the Microsecond to second. IP transmit/receive time is // in the unit of microsecond. IP ticks once per second. // -#define IP6_US_TO_SEC(Us) (((Us) + 999999) / 1000000) +#define IP6_US_TO_SEC(Us) (((Us) + 999999) / 1000000) -#define IP6_ETHER_PROTO 0x86DD +#define IP6_ETHER_PROTO 0x86DD -#define IP6_MAC_LEN 6 -#define IP6_IF_ID_LEN 8 +#define IP6_MAC_LEN 6 +#define IP6_IF_ID_LEN 8 -#define IP6_INTERFACE_LOCAL_SCOPE 1 -#define IP6_LINK_LOCAL_SCOPE 2 -#define IP6_SITE_LOCAL_SCOPE 5 +#define IP6_INTERFACE_LOCAL_SCOPE 1 +#define IP6_LINK_LOCAL_SCOPE 2 +#define IP6_SITE_LOCAL_SCOPE 5 -#define IP6_INFINIT_LIFETIME 0xFFFFFFFF +#define IP6_INFINIT_LIFETIME 0xFFFFFFFF -#define IP6_HOP_LIMIT 255 +#define IP6_HOP_LIMIT 255 // // Make it to 64 since all 54 bits are zero. // -#define IP6_LINK_LOCAL_PREFIX_LENGTH 64 +#define IP6_LINK_LOCAL_PREFIX_LENGTH 64 -#define IP6_TIMER_INTERVAL_IN_MS 100 -#define IP6_ONE_SECOND_IN_MS 1000 +#define IP6_TIMER_INTERVAL_IN_MS 100 +#define IP6_ONE_SECOND_IN_MS 1000 // // The packet is received as link level broadcast/multicast/promiscuous. // -#define IP6_LINK_BROADCAST 0x00000001 -#define IP6_LINK_MULTICAST 0x00000002 -#define IP6_LINK_PROMISC 0x00000004 +#define IP6_LINK_BROADCAST 0x00000001 +#define IP6_LINK_MULTICAST 0x00000002 +#define IP6_LINK_PROMISC 0x00000004 -#define IP6_U_BIT 0x02 +#define IP6_U_BIT 0x02 typedef enum { - Ip6Promiscuous = 1, + Ip6Promiscuous = 1, Ip6Unicast, Ip6Multicast, Ip6AnyCast } IP6_ADDRESS_TYPE; typedef struct { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - EFI_IPv6_ADDRESS *Address; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + EFI_IPv6_ADDRESS *Address; } IP6_DESTROY_CHILD_BY_ADDR_CALLBACK_CONTEXT; -typedef struct _IP6_INTERFACE IP6_INTERFACE; -typedef struct _IP6_PROTOCOL IP6_PROTOCOL; -typedef struct _IP6_SERVICE IP6_SERVICE; -typedef struct _IP6_ADDRESS_INFO IP6_ADDRESS_INFO; +typedef struct _IP6_INTERFACE IP6_INTERFACE; +typedef struct _IP6_PROTOCOL IP6_PROTOCOL; +typedef struct _IP6_SERVICE IP6_SERVICE; +typedef struct _IP6_ADDRESS_INFO IP6_ADDRESS_INFO; /** Build a array of EFI_IP6_ADDRESS_INFO to be returned to the caller. The number @@ -105,9 +105,9 @@ Ip6BuildEfiAddressList ( **/ EFI_STATUS Ip6SetToAllNodeMulticast ( - IN BOOLEAN Router, - IN UINT8 Scope, - OUT EFI_IPv6_ADDRESS *Ip6Addr + IN BOOLEAN Router, + IN UINT8 Scope, + OUT EFI_IPv6_ADDRESS *Ip6Addr ); /** @@ -123,7 +123,7 @@ Ip6SetToAllNodeMulticast ( **/ UINT8 * Ip6CreateInterfaceID ( - IN OUT IP6_SERVICE *IpSb + IN OUT IP6_SERVICE *IpSb ); /** @@ -140,7 +140,7 @@ Ip6CreateInterfaceID ( **/ EFI_IPv6_ADDRESS * Ip6CreateLinkLocalAddr ( - IN OUT IP6_SERVICE *IpSb + IN OUT IP6_SERVICE *IpSb ); /** @@ -155,8 +155,8 @@ Ip6CreateLinkLocalAddr ( **/ VOID Ip6CreateSNMulticastAddr ( - IN EFI_IPv6_ADDRESS *Ip6Addr, - OUT EFI_IPv6_ADDRESS *MulticastAddr + IN EFI_IPv6_ADDRESS *Ip6Addr, + OUT EFI_IPv6_ADDRESS *MulticastAddr ); /** @@ -170,7 +170,7 @@ Ip6CreateSNMulticastAddr ( **/ BOOLEAN Ip6IsSNMulticastAddr ( - IN EFI_IPv6_ADDRESS *Ip6 + IN EFI_IPv6_ADDRESS *Ip6 ); /** @@ -190,10 +190,10 @@ Ip6IsSNMulticastAddr ( **/ BOOLEAN Ip6IsOneOfSetAddress ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Address, - OUT IP6_INTERFACE **Interface OPTIONAL, - OUT IP6_ADDRESS_INFO **AddressInfo OPTIONAL + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Address, + OUT IP6_INTERFACE **Interface OPTIONAL, + OUT IP6_ADDRESS_INFO **AddressInfo OPTIONAL ); /** @@ -212,7 +212,6 @@ Ip6IsValidLinkAddress ( IN EFI_MAC_ADDRESS *LinkAddress ); - /** Copy the PrefixLength bits from Src to Dest. @@ -223,9 +222,9 @@ Ip6IsValidLinkAddress ( **/ VOID Ip6CopyAddressByPrefix ( - OUT EFI_IPv6_ADDRESS *Dest, - IN EFI_IPv6_ADDRESS *Src, - IN UINT8 PrefixLength + OUT EFI_IPv6_ADDRESS *Dest, + IN EFI_IPv6_ADDRESS *Src, + IN UINT8 PrefixLength ); /** @@ -237,8 +236,8 @@ Ip6CopyAddressByPrefix ( **/ VOID Ip6AddAddr ( - IN OUT IP6_INTERFACE *IpIf, - IN IP6_ADDRESS_INFO *AddrInfo + IN OUT IP6_INTERFACE *IpIf, + IN IP6_ADDRESS_INFO *AddrInfo ); /** @@ -289,9 +288,9 @@ Ip6RemoveAddr ( **/ EFI_STATUS Ip6GetMulticastMac ( - IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp, - IN EFI_IPv6_ADDRESS *Multicast, - OUT EFI_MAC_ADDRESS *Mac + IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp, + IN EFI_IPv6_ADDRESS *Multicast, + OUT EFI_MAC_ADDRESS *Mac ); /** @@ -306,7 +305,7 @@ Ip6GetMulticastMac ( **/ EFI_IP6_HEADER * Ip6NtohHead ( - IN OUT EFI_IP6_HEADER *Head + IN OUT EFI_IP6_HEADER *Head ); #endif diff --git a/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c b/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c index ab38013369..70e232ce6c 100644 --- a/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c +++ b/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.c @@ -10,7 +10,7 @@ #include "Ip6Impl.h" -LIST_ENTRY mIp6ConfigInstanceList = {&mIp6ConfigInstanceList, &mIp6ConfigInstanceList}; +LIST_ENTRY mIp6ConfigInstanceList = { &mIp6ConfigInstanceList, &mIp6ConfigInstanceList }; /** The event process routine when the DHCPv6 service binding protocol is installed @@ -42,15 +42,15 @@ Ip6ConfigOnPolicyChanged ( IN EFI_IP6_CONFIG_POLICY NewPolicy ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Entry2; - LIST_ENTRY *Next; - IP6_INTERFACE *IpIf; - IP6_DAD_ENTRY *DadEntry; - IP6_DELAY_JOIN_LIST *DelayNode; - IP6_ADDRESS_INFO *AddrInfo; - IP6_PROTOCOL *Instance; - BOOLEAN Recovery; + LIST_ENTRY *Entry; + LIST_ENTRY *Entry2; + LIST_ENTRY *Next; + IP6_INTERFACE *IpIf; + IP6_DAD_ENTRY *DadEntry; + IP6_DELAY_JOIN_LIST *DelayNode; + IP6_ADDRESS_INFO *AddrInfo; + IP6_PROTOCOL *Instance; + BOOLEAN Recovery; Recovery = FALSE; @@ -73,14 +73,14 @@ Ip6ConfigOnPolicyChanged ( Ip6CreatePrefixListEntry ( IpSb, TRUE, - (UINT32) IP6_INFINIT_LIFETIME, - (UINT32) IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, IP6_LINK_LOCAL_PREFIX_LENGTH, &IpSb->LinkLocalAddr ); } - if (!IsListEmpty (&IpSb->DefaultInterface->AddressList) && IpSb->DefaultInterface->AddressCount > 0) { + if (!IsListEmpty (&IpSb->DefaultInterface->AddressList) && (IpSb->DefaultInterface->AddressCount > 0)) { // // If any IPv6 children (Instance) in configured state and use global unicast address, it will be // destroyed in Ip6RemoveAddr() function later. Then, the upper layer driver's Stop() function will be @@ -114,7 +114,7 @@ Ip6ConfigOnPolicyChanged ( 0 ); - if (IpSb->Controller != NULL && Recovery) { + if ((IpSb->Controller != NULL) && Recovery) { // // ConnectController() to recover the upper layer network stacks. // @@ -122,7 +122,6 @@ Ip6ConfigOnPolicyChanged ( } } - NET_LIST_FOR_EACH (Entry, &IpSb->Interfaces) { // // remove all pending delay node and DAD entries for the global addresses. @@ -158,7 +157,7 @@ Ip6ConfigOnPolicyChanged ( // // delay 1 second // - IpSb->Ticks = (UINT32) IP6_GET_TICKS (IP6_ONE_SECOND_IN_MS); + IpSb->Ticks = (UINT32)IP6_GET_TICKS (IP6_ONE_SECOND_IN_MS); } } @@ -216,7 +215,7 @@ Ip6ConfigStartStatefulAutoConfig ( &gEfiDhcp6ServiceBindingProtocolGuid, TPL_CALLBACK, Ip6ConfigOnDhcp6SbInstalled, - (VOID *) Instance, + (VOID *)Instance, &Instance->Registration ); } @@ -233,7 +232,7 @@ Ip6ConfigStartStatefulAutoConfig ( Status = gBS->OpenProtocol ( Instance->Dhcp6Handle, &gEfiDhcp6ProtocolGuid, - (VOID **) &Instance->Dhcp6, + (VOID **)&Instance->Dhcp6, IpSb->Image, IpSb->Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -247,13 +246,13 @@ Ip6ConfigStartStatefulAutoConfig ( // Set the exta options to send. Here we only want the option request option // with DNS SERVERS. // - Oro = (EFI_DHCP6_PACKET_OPTION *) OptBuf; - Oro->OpCode = HTONS (DHCP6_OPT_ORO); - Oro->OpLen = HTONS (2); - *((UINT16 *) &Oro->Data[0]) = HTONS (DHCP6_OPT_DNS_SERVERS); - OptList[0] = Oro; + Oro = (EFI_DHCP6_PACKET_OPTION *)OptBuf; + Oro->OpCode = HTONS (DHCP6_OPT_ORO); + Oro->OpLen = HTONS (2); + *((UINT16 *)&Oro->Data[0]) = HTONS (DHCP6_OPT_DNS_SERVERS); + OptList[0] = Oro; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; if (!OtherInfoOnly) { // @@ -273,13 +272,11 @@ Ip6ConfigStartStatefulAutoConfig ( Status = Dhcp6->Configure (Dhcp6, &Dhcp6CfgData); if (!EFI_ERROR (Status)) { - if (IpSb->LinkLocalOk) { Status = Dhcp6->Start (Dhcp6); } else { IpSb->Dhcp6NeedStart = TRUE; } - } } else { // @@ -306,7 +303,6 @@ Ip6ConfigStartStatefulAutoConfig ( } else { IpSb->Dhcp6NeedInfoRequest = TRUE; } - } return Status; @@ -323,12 +319,12 @@ Ip6ConfigStartStatefulAutoConfig ( EFI_STATUS EFIAPI Ip6ConfigSignalEvent ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Arg + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Arg ) { - gBS->SignalEvent ((EFI_EVENT) Item->Key); + gBS->SignalEvent ((EFI_EVENT)Item->Key); return EFI_SUCCESS; } @@ -389,7 +385,7 @@ Ip6ConfigReadConfigData ( &VarSize, Variable ); - if (EFI_ERROR (Status) || (UINT16) (~NetblockChecksum ((UINT8 *) Variable, (UINT32) VarSize)) != 0) { + if (EFI_ERROR (Status) || ((UINT16)(~NetblockChecksum ((UINT8 *)Variable, (UINT32)VarSize)) != 0)) { // // GetVariable error or the variable is corrupted. // @@ -402,13 +398,13 @@ Ip6ConfigReadConfigData ( Instance->IaId = Variable->IaId; for (Index = 0; Index < Variable->DataRecordCount; Index++) { - CopyMem (&DataRecord, &Variable->DataRecord[Index], sizeof (DataRecord)); DataItem = &Instance->DataItem[DataRecord.DataType]; if (DATA_ATTRIB_SET (DataItem->Attribute, DATA_ATTRIB_SIZE_FIXED) && (DataItem->DataSize != DataRecord.DataSize) - ) { + ) + { // // Perhaps a corrupted data record... // @@ -433,7 +429,7 @@ Ip6ConfigReadConfigData ( } } - Data = (CHAR8 *) Variable + DataRecord.Offset; + Data = (CHAR8 *)Variable + DataRecord.Offset; CopyMem (DataItem->Data.Ptr, Data, DataRecord.DataSize); DataItem->DataSize = DataRecord.DataSize; @@ -496,10 +492,8 @@ Ip6ConfigWriteConfigData ( VarSize = sizeof (IP6_CONFIG_VARIABLE) - sizeof (IP6_CONFIG_DATA_RECORD); for (Index = 0; Index < Ip6ConfigDataTypeMaximum; Index++) { - DataItem = &Instance->DataItem[Index]; if (!DATA_ATTRIB_SET (DataItem->Attribute, DATA_ATTRIB_VOLATILE) && !EFI_ERROR (DataItem->Status)) { - VarSize += sizeof (IP6_CONFIG_DATA_RECORD) + DataItem->DataSize; } } @@ -510,28 +504,26 @@ Ip6ConfigWriteConfigData ( } Variable->IaId = Instance->IaId; - Heap = (CHAR8 *) Variable + VarSize; + Heap = (CHAR8 *)Variable + VarSize; Variable->DataRecordCount = 0; for (Index = 0; Index < Ip6ConfigDataTypeMaximum; Index++) { - DataItem = &Instance->DataItem[Index]; if (!DATA_ATTRIB_SET (DataItem->Attribute, DATA_ATTRIB_VOLATILE) && !EFI_ERROR (DataItem->Status)) { - Heap -= DataItem->DataSize; CopyMem (Heap, DataItem->Data.Ptr, DataItem->DataSize); DataRecord = &Variable->DataRecord[Variable->DataRecordCount]; - DataRecord->DataType = (EFI_IP6_CONFIG_DATA_TYPE) Index; - DataRecord->DataSize = (UINT32) DataItem->DataSize; - DataRecord->Offset = (UINT16) (Heap - (CHAR8 *) Variable); + DataRecord->DataType = (EFI_IP6_CONFIG_DATA_TYPE)Index; + DataRecord->DataSize = (UINT32)DataItem->DataSize; + DataRecord->Offset = (UINT16)(Heap - (CHAR8 *)Variable); Variable->DataRecordCount++; } } Variable->Checksum = 0; - Variable->Checksum = (UINT16) ~NetblockChecksum ((UINT8 *) Variable, (UINT32) VarSize); + Variable->Checksum = (UINT16) ~NetblockChecksum ((UINT8 *)Variable, (UINT32)VarSize); Status = gRT->SetVariable ( VarName, @@ -597,20 +589,20 @@ Ip6ConfigGetIfInfo ( // // Copy the fixed size part of the interface info. // - Item = &Instance->DataItem[Ip6ConfigDataTypeInterfaceInfo]; - IfInfo = (EFI_IP6_CONFIG_INTERFACE_INFO *) Data; + Item = &Instance->DataItem[Ip6ConfigDataTypeInterfaceInfo]; + IfInfo = (EFI_IP6_CONFIG_INTERFACE_INFO *)Data; CopyMem (IfInfo, Item->Data.Ptr, sizeof (EFI_IP6_CONFIG_INTERFACE_INFO)); // // AddressInfo // - IfInfo->AddressInfo = (EFI_IP6_ADDRESS_INFO *) (IfInfo + 1); + IfInfo->AddressInfo = (EFI_IP6_ADDRESS_INFO *)(IfInfo + 1); Ip6BuildEfiAddressList (IpSb, &IfInfo->AddressInfoCount, &IfInfo->AddressInfo); // // RouteTable // - IfInfo->RouteTable = (EFI_IP6_ROUTE_TABLE *) (IfInfo->AddressInfo + IfInfo->AddressInfoCount); + IfInfo->RouteTable = (EFI_IP6_ROUTE_TABLE *)(IfInfo->AddressInfo + IfInfo->AddressInfoCount); Ip6BuildEfiRouteTable (IpSb->RouteTable, &IfInfo->RouteCount, &IfInfo->RouteTable); if (IfInfo->AddressInfoCount == 0) { @@ -657,7 +649,7 @@ Ip6ConfigSetAltIfId ( DataItem = &Instance->DataItem[Ip6ConfigDataTypeAltInterfaceId]; OldIfId = DataItem->Data.AltIfId; - NewIfId = (EFI_IP6_CONFIG_INTERFACE_ID *) Data; + NewIfId = (EFI_IP6_CONFIG_INTERFACE_ID *)Data; CopyMem (OldIfId, NewIfId, DataSize); DataItem->Status = EFI_SUCCESS; @@ -696,33 +688,34 @@ Ip6ConfigSetPolicy ( return EFI_BAD_BUFFER_SIZE; } - NewPolicy = *((EFI_IP6_CONFIG_POLICY *) Data); + NewPolicy = *((EFI_IP6_CONFIG_POLICY *)Data); if (NewPolicy > Ip6ConfigPolicyAutomatic) { return EFI_INVALID_PARAMETER; } if (NewPolicy == Instance->Policy) { - return EFI_ABORTED; } else { // // Clean the ManualAddress, Gateway and DnsServers, shrink the variable // data size, and fire up all the related events. // - DataItem = &Instance->DataItem[Ip6ConfigDataTypeManualAddress]; + DataItem = &Instance->DataItem[Ip6ConfigDataTypeManualAddress]; if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NULL; DataItem->DataSize = 0; DataItem->Status = EFI_NOT_FOUND; NetMapIterate (&DataItem->EventMap, Ip6ConfigSignalEvent, NULL); - DataItem = &Instance->DataItem[Ip6ConfigDataTypeGateway]; + DataItem = &Instance->DataItem[Ip6ConfigDataTypeGateway]; if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NULL; DataItem->DataSize = 0; DataItem->Status = EFI_NOT_FOUND; @@ -784,12 +777,10 @@ Ip6ConfigSetDadXmits ( OldDadXmits = Instance->DataItem[Ip6ConfigDataTypeDupAddrDetectTransmits].Data.DadXmits; - if ((*(UINT32 *) Data) == OldDadXmits->DupAddrDetectTransmits) { - + if ((*(UINT32 *)Data) == OldDadXmits->DupAddrDetectTransmits) { return EFI_ABORTED; } else { - - OldDadXmits->DupAddrDetectTransmits = *((UINT32 *) Data); + OldDadXmits->DupAddrDetectTransmits = *((UINT32 *)Data); return EFI_SUCCESS; } } @@ -820,7 +811,7 @@ Ip6ManualAddrDadCallback ( UINTN DadFailCount; IP6_SERVICE *IpSb; - Instance = (IP6_CONFIG_INSTANCE *) Context; + Instance = (IP6_CONFIG_INSTANCE *)Context; NET_CHECK_SIGNATURE (Instance, IP6_CONFIG_INSTANCE_SIGNATURE); Item = &Instance->DataItem[Ip6ConfigDataTypeManualAddress]; ManualAddr = NULL; @@ -872,20 +863,20 @@ Ip6ManualAddrDadCallback ( // Part of addresses are detected to be duplicates, so update the // data with those passed. // - PassedAddr = (EFI_IP6_CONFIG_MANUAL_ADDRESS *) AllocatePool (Item->DataSize); + PassedAddr = (EFI_IP6_CONFIG_MANUAL_ADDRESS *)AllocatePool (Item->DataSize); ASSERT (PassedAddr != NULL); Item->Data.Ptr = PassedAddr; Item->Status = EFI_SUCCESS; while (!NetMapIsEmpty (&Instance->DadPassedMap)) { - ManualAddr = (EFI_IP6_CONFIG_MANUAL_ADDRESS *) NetMapRemoveHead (&Instance->DadPassedMap, NULL); + ManualAddr = (EFI_IP6_CONFIG_MANUAL_ADDRESS *)NetMapRemoveHead (&Instance->DadPassedMap, NULL); CopyMem (PassedAddr, ManualAddr, sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS)); PassedAddr++; } - ASSERT ((UINTN) PassedAddr - (UINTN) Item->Data.Ptr == Item->DataSize); + ASSERT ((UINTN)PassedAddr - (UINTN)Item->Data.Ptr == Item->DataSize); } } else { // @@ -991,16 +982,16 @@ Ip6ConfigSetManualAddress ( DataItem = &Instance->DataItem[Ip6ConfigDataTypeManualAddress]; - if (Data != NULL && DataSize != 0) { + if ((Data != NULL) && (DataSize != 0)) { NewAddressCount = DataSize / sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS); - NewAddress = (EFI_IP6_CONFIG_MANUAL_ADDRESS *) Data; + NewAddress = (EFI_IP6_CONFIG_MANUAL_ADDRESS *)Data; for (Index1 = 0; Index1 < NewAddressCount; Index1++, NewAddress++) { - if (NetIp6IsLinkLocalAddr (&NewAddress->Address) || !NetIp6IsValidUnicast (&NewAddress->Address) || (NewAddress->PrefixLength > 128) - ) { + ) + { // // make sure the IPv6 address is unicast and not link-local address && // the prefix length is valid. @@ -1014,7 +1005,6 @@ Ip6ConfigSetManualAddress ( // Any two addresses in the array can't be equal. // if (EFI_IP6_EQUAL (&TmpAddress->Address, &NewAddress->Address)) { - return EFI_INVALID_PARAMETER; } } @@ -1032,7 +1022,7 @@ Ip6ConfigSetManualAddress ( NET_LIST_FOR_EACH (Entry2, &IpIf->AddressList) { CurrentAddrInfo = NET_LIST_USER_STRUCT_S (Entry2, IP6_ADDRESS_INFO, Link, IP6_ADDR_INFO_SIGNATURE); - Copy = AllocateCopyPool (sizeof (IP6_ADDRESS_INFO), CurrentAddrInfo); + Copy = AllocateCopyPool (sizeof (IP6_ADDRESS_INFO), CurrentAddrInfo); if (Copy == NULL) { break; } @@ -1059,6 +1049,7 @@ Ip6ConfigSetManualAddress ( if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NewAddress; DataItem->DataSize = DataSize; DataItem->Status = EFI_NOT_READY; @@ -1066,7 +1057,7 @@ Ip6ConfigSetManualAddress ( // // Trigger DAD, it's an asynchronous process. // - IsUpdated = FALSE; + IsUpdated = FALSE; for (Index1 = 0; Index1 < NewAddressCount; Index1++, NewAddress++) { if (Ip6IsOneOfSetAddress (IpSb, &NewAddress->Address, NULL, &CurrentAddrInfo)) { @@ -1113,7 +1104,7 @@ Ip6ConfigSetManualAddress ( // Save the prefix length. // CurrentAddrInfo->PrefixLength = NewAddress->PrefixLength; - IsUpdated = TRUE; + IsUpdated = TRUE; } // @@ -1129,8 +1120,8 @@ Ip6ConfigSetManualAddress ( Ip6CreatePrefixListEntry ( IpSb, TRUE, - (UINT32) IP6_INFINIT_LIFETIME, - (UINT32) IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, NewAddress->PrefixLength, &NewAddress->Address ); @@ -1156,8 +1147,8 @@ Ip6ConfigSetManualAddress ( &NewAddress->Address, NewAddress->IsAnycast, NewAddress->PrefixLength, - (UINT32) IP6_INFINIT_LIFETIME, - (UINT32) IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, Ip6ManualAddrDadCallback, Instance ); @@ -1230,6 +1221,7 @@ Ip6ConfigSetManualAddress ( if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NULL; DataItem->DataSize = 0; DataItem->Status = EFI_NOT_FOUND; @@ -1243,8 +1235,8 @@ Ip6ConfigSetManualAddress ( Ip6CreatePrefixListEntry ( IpSb, TRUE, - (UINT32) IP6_INFINIT_LIFETIME, - (UINT32) IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, IP6_LINK_LOCAL_PREFIX_LENGTH, &IpSb->LinkLocalAddr ); @@ -1330,13 +1322,13 @@ Ip6ConfigSetGateway ( IP6_DEFAULT_ROUTER *DefaultRouter; VOID *Tmp; - OldGateway = NULL; - NewGateway = NULL; - Item = NULL; - DefaultRouter = NULL; - Tmp = NULL; - OneRemoved = FALSE; - OneAdded = FALSE; + OldGateway = NULL; + NewGateway = NULL; + Item = NULL; + DefaultRouter = NULL; + Tmp = NULL; + OneRemoved = FALSE; + OneAdded = FALSE; if ((DataSize != 0) && (DataSize % sizeof (EFI_IPv6_ADDRESS) != 0)) { return EFI_BAD_BUFFER_SIZE; @@ -1362,13 +1354,11 @@ Ip6ConfigSetGateway ( } } - if (Data != NULL && DataSize != 0) { - NewGateway = (EFI_IPv6_ADDRESS *) Data; + if ((Data != NULL) && (DataSize != 0)) { + NewGateway = (EFI_IPv6_ADDRESS *)Data; NewGatewayCount = DataSize / sizeof (EFI_IPv6_ADDRESS); for (Index1 = 0; Index1 < NewGatewayCount; Index1++) { - if (!NetIp6IsValidUnicast (NewGateway + Index1)) { - return EFI_INVALID_PARAMETER; } @@ -1389,7 +1379,6 @@ Ip6ConfigSetGateway ( } for (Index1 = 0; Index1 < NewGatewayCount; Index1++) { - DefaultRouter = Ip6FindDefaultRouter (IpSb, NewGateway + Index1); if (DefaultRouter == NULL) { Ip6CreateDefaultRouter (IpSb, NewGateway + Index1, IP6_INF_ROUTER_LIFETIME); @@ -1401,11 +1390,11 @@ Ip6ConfigSetGateway ( Item->Status = EFI_SUCCESS; return EFI_ABORTED; } else { - if (Tmp != NULL) { if (Item->Data.Ptr != NULL) { FreePool (Item->Data.Ptr); } + Item->Data.Ptr = Tmp; } @@ -1421,6 +1410,7 @@ Ip6ConfigSetGateway ( if (Item->Data.Ptr != NULL) { FreePool (Item->Data.Ptr); } + Item->Data.Ptr = NULL; Item->DataSize = 0; Item->Status = EFI_NOT_FOUND; @@ -1483,8 +1473,8 @@ Ip6ConfigSetDnsServer ( Item = &Instance->DataItem[Ip6ConfigDataTypeDnsServer]; - if (Data != NULL && DataSize != 0) { - NewDns = (EFI_IPv6_ADDRESS *) Data; + if ((Data != NULL) && (DataSize != 0)) { + NewDns = (EFI_IPv6_ADDRESS *)Data; OldDns = Item->Data.DnsServers; NewDnsCount = DataSize / sizeof (EFI_IPv6_ADDRESS); OldDnsCount = Item->DataSize / sizeof (EFI_IPv6_ADDRESS); @@ -1500,7 +1490,6 @@ Ip6ConfigSetDnsServer ( } for (NewIndex = 0; NewIndex < NewDnsCount; NewIndex++) { - if (!NetIp6IsValidUnicast (NewDns + NewIndex)) { // // The dns server address must be unicast. @@ -1508,6 +1497,7 @@ Ip6ConfigSetDnsServer ( if (Tmp != NULL) { FreePool (Tmp); } + return EFI_INVALID_PARAMETER; } @@ -1544,6 +1534,7 @@ Ip6ConfigSetDnsServer ( if (Item->Data.Ptr != NULL) { FreePool (Item->Data.Ptr); } + Item->Data.Ptr = Tmp; } @@ -1551,13 +1542,14 @@ Ip6ConfigSetDnsServer ( Item->DataSize = DataSize; Item->Status = EFI_SUCCESS; } - } else { + } else { // // DataSize is 0 and Data is NULL, clean up the DnsServer address. // if (Item->Data.Ptr != NULL) { FreePool (Item->Data.Ptr); } + Item->Data.Ptr = NULL; Item->DataSize = 0; Item->Status = EFI_NOT_FOUND; @@ -1585,7 +1577,7 @@ Ip6ConfigInitIfInfo ( sizeof (IfInfo->Name), L"eth%d", IpSb->Ip6ConfigInstance.IfIndex - ); + ); IfInfo->IfType = IpSb->SnpMode.IfType; IfInfo->HwAddressSize = IpSb->SnpMode.HwAddressSize; @@ -1607,9 +1599,9 @@ Ip6ConfigInitIfInfo ( **/ EFI_STATUS Ip6ConfigParseDhcpReply ( - IN EFI_DHCP6_PROTOCOL *Dhcp6, - IN OUT IP6_CONFIG_INSTANCE *Instance, - IN EFI_DHCP6_PACKET *Reply + IN EFI_DHCP6_PROTOCOL *Dhcp6, + IN OUT IP6_CONFIG_INSTANCE *Instance, + IN EFI_DHCP6_PACKET *Reply ) { EFI_STATUS Status; @@ -1669,7 +1661,7 @@ Ip6ConfigParseDhcpReply ( // // Validate the DnsServers: whether they are unicast addresses. // - DnsServer = (EFI_IPv6_ADDRESS *) OptList[Index]->Data; + DnsServer = (EFI_IPv6_ADDRESS *)OptList[Index]->Data; for (Index2 = 0; Index2 < Length / sizeof (EFI_IPv6_ADDRESS); Index2++) { if (!NetIp6IsValidUnicast (DnsServer)) { Status = EFI_NOT_READY; @@ -1728,7 +1720,7 @@ Ip6ConfigSetStatefulAddrCallback ( { IP6_CONFIG_INSTANCE *Instance; - Instance = (IP6_CONFIG_INSTANCE *) Context; + Instance = (IP6_CONFIG_INSTANCE *)Context; NET_CHECK_SIGNATURE (Instance, IP6_CONFIG_INSTANCE_SIGNATURE); // @@ -1769,6 +1761,7 @@ Ip6ConfigSetStatefulAddrCallback ( if (Instance->DeclineAddress != NULL) { FreePool (Instance->DeclineAddress); } + Instance->DeclineAddress = NULL; Instance->DeclineAddressCount = 0; } @@ -1788,25 +1781,25 @@ Ip6ConfigOnDhcp6Event ( IN VOID *Context ) { - IP6_CONFIG_INSTANCE *Instance; - EFI_DHCP6_PROTOCOL *Dhcp6; - EFI_STATUS Status; - EFI_DHCP6_MODE_DATA Dhcp6ModeData; - EFI_DHCP6_IA *Ia; - EFI_DHCP6_IA_ADDRESS *IaAddr; - UINT32 Index; - IP6_SERVICE *IpSb; - IP6_ADDRESS_INFO *AddrInfo; - IP6_INTERFACE *IpIf; + IP6_CONFIG_INSTANCE *Instance; + EFI_DHCP6_PROTOCOL *Dhcp6; + EFI_STATUS Status; + EFI_DHCP6_MODE_DATA Dhcp6ModeData; + EFI_DHCP6_IA *Ia; + EFI_DHCP6_IA_ADDRESS *IaAddr; + UINT32 Index; + IP6_SERVICE *IpSb; + IP6_ADDRESS_INFO *AddrInfo; + IP6_INTERFACE *IpIf; - Instance = (IP6_CONFIG_INSTANCE *) Context; + Instance = (IP6_CONFIG_INSTANCE *)Context; if ((Instance->Policy != Ip6ConfigPolicyAutomatic) || Instance->OtherInfoOnly) { // // IPv6 is not operating in the automatic policy now or // the DHCPv6 information request message exchange is aborted. // - return ; + return; } // @@ -1816,7 +1809,7 @@ Ip6ConfigOnDhcp6Event ( Status = Dhcp6->GetModeData (Dhcp6, &Dhcp6ModeData, NULL); if (EFI_ERROR (Status)) { - return ; + return; } IpSb = IP6_SERVICE_FROM_IP6_CONFIG_INSTANCE (Instance); @@ -1828,16 +1821,16 @@ Ip6ConfigOnDhcp6Event ( FreePool (Instance->DeclineAddress); } - Instance->DeclineAddress = (EFI_IPv6_ADDRESS *) AllocatePool (Ia->IaAddressCount * sizeof (EFI_IPv6_ADDRESS)); + Instance->DeclineAddress = (EFI_IPv6_ADDRESS *)AllocatePool (Ia->IaAddressCount * sizeof (EFI_IPv6_ADDRESS)); if (Instance->DeclineAddress == NULL) { goto ON_EXIT; } Instance->FailedIaAddressCount = Ia->IaAddressCount; - Instance->DeclineAddressCount = 0; + Instance->DeclineAddressCount = 0; for (Index = 0; Index < Ia->IaAddressCount; Index++, IaAddr++) { - if (Ia->IaAddress[Index].ValidLifetime != 0 && Ia->State == Dhcp6Bound) { + if ((Ia->IaAddress[Index].ValidLifetime != 0) && (Ia->State == Dhcp6Bound)) { // // Set this address, either it's a new address or with updated lifetimes. // An appropriate prefix length will be set. @@ -1908,7 +1901,7 @@ Ip6ConfigOnDhcp6Reply ( IN EFI_DHCP6_PACKET *Packet ) { - return Ip6ConfigParseDhcpReply (This, (IP6_CONFIG_INSTANCE *) Context, Packet); + return Ip6ConfigParseDhcpReply (This, (IP6_CONFIG_INSTANCE *)Context, Packet); } /** @@ -1928,13 +1921,13 @@ Ip6ConfigOnDhcp6SbInstalled ( { IP6_CONFIG_INSTANCE *Instance; - Instance = (IP6_CONFIG_INSTANCE *) Context; + Instance = (IP6_CONFIG_INSTANCE *)Context; if ((Instance->Dhcp6Handle != NULL) || (Instance->Policy != Ip6ConfigPolicyAutomatic)) { // // The DHCP6 child is already created or the policy is no longer AUTOMATIC. // - return ; + return; } Ip6ConfigStartStatefulAutoConfig (Instance, Instance->OtherInfoOnly); @@ -1990,10 +1983,10 @@ Ip6ConfigOnDhcp6SbInstalled ( EFI_STATUS EFIAPI EfiIp6ConfigSetData ( - IN EFI_IP6_CONFIG_PROTOCOL *This, - IN EFI_IP6_CONFIG_DATA_TYPE DataType, - IN UINTN DataSize, - IN VOID *Data + IN EFI_IP6_CONFIG_PROTOCOL *This, + IN EFI_IP6_CONFIG_DATA_TYPE DataType, + IN UINTN DataSize, + IN VOID *Data ) { EFI_TPL OldTpl; @@ -2001,7 +1994,7 @@ EfiIp6ConfigSetData ( IP6_CONFIG_INSTANCE *Instance; IP6_SERVICE *IpSb; - if ((This == NULL) || (Data == NULL && DataSize != 0) || (Data != NULL && DataSize == 0)) { + if ((This == NULL) || ((Data == NULL) && (DataSize != 0)) || ((Data != NULL) && (DataSize == 0))) { return EFI_INVALID_PARAMETER; } @@ -2021,14 +2014,12 @@ EfiIp6ConfigSetData ( Status = Instance->DataItem[DataType].Status; if (Status != EFI_NOT_READY) { - if (Instance->DataItem[DataType].SetData == NULL) { // // This type of data is readonly. // Status = EFI_WRITE_PROTECTED; } else { - Status = Instance->DataItem[DataType].SetData (Instance, DataSize, Data); if (!EFI_ERROR (Status)) { // @@ -2098,10 +2089,10 @@ EfiIp6ConfigSetData ( EFI_STATUS EFIAPI EfiIp6ConfigGetData ( - IN EFI_IP6_CONFIG_PROTOCOL *This, - IN EFI_IP6_CONFIG_DATA_TYPE DataType, - IN OUT UINTN *DataSize, - IN VOID *Data OPTIONAL + IN EFI_IP6_CONFIG_PROTOCOL *This, + IN EFI_IP6_CONFIG_DATA_TYPE DataType, + IN OUT UINTN *DataSize, + IN VOID *Data OPTIONAL ) { EFI_TPL OldTpl; @@ -2122,11 +2113,9 @@ EfiIp6ConfigGetData ( Instance = IP6_CONFIG_INSTANCE_FROM_PROTOCOL (This); DataItem = &Instance->DataItem[DataType]; - Status = Instance->DataItem[DataType].Status; + Status = Instance->DataItem[DataType].Status; if (!EFI_ERROR (Status)) { - if (DataItem->GetData != NULL) { - Status = DataItem->GetData (Instance, DataSize, Data); } else if (*DataSize < Instance->DataItem[DataType].DataSize) { // @@ -2135,7 +2124,6 @@ EfiIp6ConfigGetData ( *DataSize = Instance->DataItem[DataType].DataSize; Status = EFI_BUFFER_TOO_SMALL; } else { - *DataSize = Instance->DataItem[DataType].DataSize; CopyMem (Data, Instance->DataItem[DataType].Data.Ptr, *DataSize); } @@ -2171,9 +2159,9 @@ EfiIp6ConfigGetData ( EFI_STATUS EFIAPI EfiIp6ConfigRegisterDataNotify ( - IN EFI_IP6_CONFIG_PROTOCOL *This, - IN EFI_IP6_CONFIG_DATA_TYPE DataType, - IN EFI_EVENT Event + IN EFI_IP6_CONFIG_PROTOCOL *This, + IN EFI_IP6_CONFIG_DATA_TYPE DataType, + IN EFI_EVENT Event ) { EFI_TPL OldTpl; @@ -2190,26 +2178,22 @@ EfiIp6ConfigRegisterDataNotify ( return EFI_UNSUPPORTED; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - Instance = IP6_CONFIG_INSTANCE_FROM_PROTOCOL (This); - EventMap = &Instance->DataItem[DataType].EventMap; + Instance = IP6_CONFIG_INSTANCE_FROM_PROTOCOL (This); + EventMap = &Instance->DataItem[DataType].EventMap; // // Check whether this event is already registered for this DataType. // Item = NetMapFindKey (EventMap, Event); if (Item == NULL) { - Status = NetMapInsertTail (EventMap, Event, NULL); if (EFI_ERROR (Status)) { - Status = EFI_OUT_OF_RESOURCES; } - } else { - Status = EFI_ACCESS_DENIED; } @@ -2236,9 +2220,9 @@ EfiIp6ConfigRegisterDataNotify ( EFI_STATUS EFIAPI EfiIp6ConfigUnregisterDataNotify ( - IN EFI_IP6_CONFIG_PROTOCOL *This, - IN EFI_IP6_CONFIG_DATA_TYPE DataType, - IN EFI_EVENT Event + IN EFI_IP6_CONFIG_PROTOCOL *This, + IN EFI_IP6_CONFIG_DATA_TYPE DataType, + IN EFI_EVENT Event ) { EFI_TPL OldTpl; @@ -2260,11 +2244,9 @@ EfiIp6ConfigUnregisterDataNotify ( Item = NetMapFindKey (&Instance->DataItem[DataType].EventMap, Event); if (Item != NULL) { - NetMapRemoveItem (&Instance->DataItem[DataType].EventMap, Item, NULL); Status = EFI_SUCCESS; } else { - Status = EFI_NOT_FOUND; } @@ -2357,24 +2339,24 @@ Ip6ConfigInitInstance ( Instance->Policy = Ip6ConfigPolicyManual; SET_DATA_ATTRIB (DataItem->Attribute, DATA_ATTRIB_SIZE_FIXED); - DataItem = &Instance->DataItem[Ip6ConfigDataTypeDupAddrDetectTransmits]; - DataItem->SetData = Ip6ConfigSetDadXmits; - DataItem->Data.Ptr = &Instance->DadXmits; - DataItem->DataSize = sizeof (Instance->DadXmits); + DataItem = &Instance->DataItem[Ip6ConfigDataTypeDupAddrDetectTransmits]; + DataItem->SetData = Ip6ConfigSetDadXmits; + DataItem->Data.Ptr = &Instance->DadXmits; + DataItem->DataSize = sizeof (Instance->DadXmits); Instance->DadXmits.DupAddrDetectTransmits = IP6_CONFIG_DEFAULT_DAD_XMITS; SET_DATA_ATTRIB (DataItem->Attribute, DATA_ATTRIB_SIZE_FIXED); - DataItem = &Instance->DataItem[Ip6ConfigDataTypeManualAddress]; - DataItem->SetData = Ip6ConfigSetManualAddress; - DataItem->Status = EFI_NOT_FOUND; + DataItem = &Instance->DataItem[Ip6ConfigDataTypeManualAddress]; + DataItem->SetData = Ip6ConfigSetManualAddress; + DataItem->Status = EFI_NOT_FOUND; - DataItem = &Instance->DataItem[Ip6ConfigDataTypeGateway]; - DataItem->SetData = Ip6ConfigSetGateway; - DataItem->Status = EFI_NOT_FOUND; + DataItem = &Instance->DataItem[Ip6ConfigDataTypeGateway]; + DataItem->SetData = Ip6ConfigSetGateway; + DataItem->Status = EFI_NOT_FOUND; - DataItem = &Instance->DataItem[Ip6ConfigDataTypeDnsServer]; - DataItem->SetData = Ip6ConfigSetDnsServer; - DataItem->Status = EFI_NOT_FOUND; + DataItem = &Instance->DataItem[Ip6ConfigDataTypeDnsServer]; + DataItem->SetData = Ip6ConfigSetDnsServer; + DataItem->Status = EFI_NOT_FOUND; // // Create the event used for DHCP. @@ -2388,7 +2370,7 @@ Ip6ConfigInitInstance ( ); ASSERT_EFI_ERROR (Status); - Instance->Configured = TRUE; + Instance->Configured = TRUE; // // Try to read the config data from NV variable. @@ -2415,7 +2397,6 @@ Ip6ConfigInitInstance ( Instance->Ip6Config.RegisterDataNotify = EfiIp6ConfigRegisterDataNotify; Instance->Ip6Config.UnregisterDataNotify = EfiIp6ConfigUnregisterDataNotify; - // // Publish the IP6 configuration form // @@ -2441,11 +2422,10 @@ Ip6ConfigCleanInstance ( } if (!Instance->Configured) { - return ; + return; } if (Instance->Dhcp6Handle != NULL) { - Ip6ConfigDestroyDhcp6 (Instance); } @@ -2460,13 +2440,13 @@ Ip6ConfigCleanInstance ( NetMapClean (&Instance->DadFailedMap); for (Index = 0; Index < Ip6ConfigDataTypeMaximum; Index++) { - DataItem = &Instance->DataItem[Index]; if (!DATA_ATTRIB_SET (DataItem->Attribute, DATA_ATTRIB_SIZE_FIXED)) { if (DataItem->Data.Ptr != NULL) { FreePool (DataItem->Data.Ptr); } + DataItem->Data.Ptr = NULL; DataItem->DataSize = 0; } @@ -2493,9 +2473,9 @@ Ip6ConfigDestroyDhcp6 ( IN OUT IP6_CONFIG_INSTANCE *Instance ) { - IP6_SERVICE *IpSb; - EFI_STATUS Status; - EFI_DHCP6_PROTOCOL *Dhcp6; + IP6_SERVICE *IpSb; + EFI_STATUS Status; + EFI_DHCP6_PROTOCOL *Dhcp6; Dhcp6 = Instance->Dhcp6; ASSERT (Dhcp6 != NULL); @@ -2530,4 +2510,3 @@ Ip6ConfigDestroyDhcp6 ( return Status; } - diff --git a/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.h b/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.h index 1c2eede2ab..66b730a32d 100644 --- a/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.h +++ b/NetworkPkg/Ip6Dxe/Ip6ConfigImpl.h @@ -10,17 +10,17 @@ #ifndef __IP6_CONFIG_IMPL_H__ #define __IP6_CONFIG_IMPL_H__ -#define IP6_CONFIG_INSTANCE_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'C') -#define IP6_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'F', 'C', 'I') -#define IP6_CONFIG_VARIABLE_ATTRIBUTE (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS) +#define IP6_CONFIG_INSTANCE_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'C') +#define IP6_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'F', 'C', 'I') +#define IP6_CONFIG_VARIABLE_ATTRIBUTE (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS) -#define IP6_CONFIG_DEFAULT_DAD_XMITS 1 +#define IP6_CONFIG_DEFAULT_DAD_XMITS 1 -#define DATA_ATTRIB_SIZE_FIXED 0x1 -#define DATA_ATTRIB_VOLATILE 0x2 +#define DATA_ATTRIB_SIZE_FIXED 0x1 +#define DATA_ATTRIB_VOLATILE 0x2 -#define DATA_ATTRIB_SET(Attrib, Bits) (BOOLEAN)((Attrib) & (Bits)) -#define SET_DATA_ATTRIB(Attrib, Bits) ((Attrib) |= (Bits)) +#define DATA_ATTRIB_SET(Attrib, Bits) (BOOLEAN)((Attrib) & (Bits)) +#define SET_DATA_ATTRIB(Attrib, Bits) ((Attrib) |= (Bits)) typedef struct _IP6_CONFIG_INSTANCE IP6_CONFIG_INSTANCE; @@ -31,7 +31,6 @@ typedef struct _IP6_CONFIG_INSTANCE IP6_CONFIG_INSTANCE; IP6_CONFIG_INSTANCE_SIGNATURE \ ) - #define IP6_CONFIG_INSTANCE_FROM_FORM_CALLBACK(Callback) \ CR ((Callback), \ IP6_CONFIG_INSTANCE, \ @@ -99,30 +98,30 @@ EFI_STATUS ); typedef union { - VOID *Ptr; - EFI_IP6_CONFIG_INTERFACE_INFO *IfInfo; - EFI_IP6_CONFIG_INTERFACE_ID *AltIfId; - EFI_IP6_CONFIG_POLICY *Policy; - EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS *DadXmits; - EFI_IP6_CONFIG_MANUAL_ADDRESS *ManualAddress; - EFI_IPv6_ADDRESS *Gateway; - EFI_IPv6_ADDRESS *DnsServers; + VOID *Ptr; + EFI_IP6_CONFIG_INTERFACE_INFO *IfInfo; + EFI_IP6_CONFIG_INTERFACE_ID *AltIfId; + EFI_IP6_CONFIG_POLICY *Policy; + EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS *DadXmits; + EFI_IP6_CONFIG_MANUAL_ADDRESS *ManualAddress; + EFI_IPv6_ADDRESS *Gateway; + EFI_IPv6_ADDRESS *DnsServers; } IP6_CONFIG_DATA; typedef struct { - IP6_CONFIG_SET_DATA SetData; - IP6_CONFIG_GET_DATA GetData; - EFI_STATUS Status; - UINT8 Attribute; - NET_MAP EventMap; - IP6_CONFIG_DATA Data; - UINTN DataSize; + IP6_CONFIG_SET_DATA SetData; + IP6_CONFIG_GET_DATA GetData; + EFI_STATUS Status; + UINT8 Attribute; + NET_MAP EventMap; + IP6_CONFIG_DATA Data; + UINTN DataSize; } IP6_CONFIG_DATA_ITEM; typedef struct { - UINT16 Offset; - UINT32 DataSize; - EFI_IP6_CONFIG_DATA_TYPE DataType; + UINT16 Offset; + UINT32 DataSize; + EFI_IP6_CONFIG_DATA_TYPE DataType; } IP6_CONFIG_DATA_RECORD; #pragma pack(1) @@ -142,69 +141,69 @@ typedef struct { // EFI_IPv6_ADDRESS DnsServers[]; // typedef struct { - UINT32 IaId; - UINT16 Checksum; - UINT16 DataRecordCount; - IP6_CONFIG_DATA_RECORD DataRecord[1]; + UINT32 IaId; + UINT16 Checksum; + UINT16 DataRecordCount; + IP6_CONFIG_DATA_RECORD DataRecord[1]; } IP6_CONFIG_VARIABLE; #pragma pack() typedef struct { - LIST_ENTRY Link; - EFI_IP6_ADDRESS_INFO AddrInfo; + LIST_ENTRY Link; + EFI_IP6_ADDRESS_INFO AddrInfo; } IP6_ADDRESS_INFO_ENTRY; typedef struct { - EFI_IP6_CONFIG_POLICY Policy; ///< manual or automatic - EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadTransmitCount; ///< dad transmits count - EFI_IP6_CONFIG_INTERFACE_ID InterfaceId; ///< alternative interface id - LIST_ENTRY ManualAddress; ///< IP addresses - UINT32 ManualAddressCount; ///< IP addresses count - LIST_ENTRY GatewayAddress; ///< Gateway address - UINT32 GatewayAddressCount; ///< Gateway address count - LIST_ENTRY DnsAddress; ///< DNS server address - UINT32 DnsAddressCount; ///< DNS server address count + EFI_IP6_CONFIG_POLICY Policy; ///< manual or automatic + EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadTransmitCount; ///< dad transmits count + EFI_IP6_CONFIG_INTERFACE_ID InterfaceId; ///< alternative interface id + LIST_ENTRY ManualAddress; ///< IP addresses + UINT32 ManualAddressCount; ///< IP addresses count + LIST_ENTRY GatewayAddress; ///< Gateway address + UINT32 GatewayAddressCount; ///< Gateway address count + LIST_ENTRY DnsAddress; ///< DNS server address + UINT32 DnsAddressCount; ///< DNS server address count } IP6_CONFIG_NVDATA; typedef struct _IP6_FORM_CALLBACK_INFO { - UINT32 Signature; - EFI_HANDLE ChildHandle; - EFI_HII_CONFIG_ACCESS_PROTOCOL HiiConfigAccess; - EFI_DEVICE_PATH_PROTOCOL *HiiVendorDevicePath; - EFI_HII_HANDLE RegisteredHandle; + UINT32 Signature; + EFI_HANDLE ChildHandle; + EFI_HII_CONFIG_ACCESS_PROTOCOL HiiConfigAccess; + EFI_DEVICE_PATH_PROTOCOL *HiiVendorDevicePath; + EFI_HII_HANDLE RegisteredHandle; } IP6_FORM_CALLBACK_INFO; struct _IP6_CONFIG_INSTANCE { - UINT32 Signature; - BOOLEAN Configured; - LIST_ENTRY Link; - UINT16 IfIndex; - - EFI_IP6_CONFIG_INTERFACE_INFO InterfaceInfo; - EFI_IP6_CONFIG_INTERFACE_ID AltIfId; - EFI_IP6_CONFIG_POLICY Policy; - EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits; - - IP6_CONFIG_DATA_ITEM DataItem[Ip6ConfigDataTypeMaximum]; - NET_MAP DadFailedMap; - NET_MAP DadPassedMap; - - EFI_IP6_CONFIG_PROTOCOL Ip6Config; - - EFI_EVENT Dhcp6SbNotifyEvent; - VOID *Registration; - EFI_HANDLE Dhcp6Handle; - EFI_DHCP6_PROTOCOL *Dhcp6; - BOOLEAN OtherInfoOnly; - UINT32 IaId; - EFI_EVENT Dhcp6Event; - UINT32 FailedIaAddressCount; - EFI_IPv6_ADDRESS *DeclineAddress; - UINT32 DeclineAddressCount; - - IP6_FORM_CALLBACK_INFO CallbackInfo; - IP6_CONFIG_NVDATA Ip6NvData; + UINT32 Signature; + BOOLEAN Configured; + LIST_ENTRY Link; + UINT16 IfIndex; + + EFI_IP6_CONFIG_INTERFACE_INFO InterfaceInfo; + EFI_IP6_CONFIG_INTERFACE_ID AltIfId; + EFI_IP6_CONFIG_POLICY Policy; + EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits; + + IP6_CONFIG_DATA_ITEM DataItem[Ip6ConfigDataTypeMaximum]; + NET_MAP DadFailedMap; + NET_MAP DadPassedMap; + + EFI_IP6_CONFIG_PROTOCOL Ip6Config; + + EFI_EVENT Dhcp6SbNotifyEvent; + VOID *Registration; + EFI_HANDLE Dhcp6Handle; + EFI_DHCP6_PROTOCOL *Dhcp6; + BOOLEAN OtherInfoOnly; + UINT32 IaId; + EFI_EVENT Dhcp6Event; + UINT32 FailedIaAddressCount; + EFI_IPv6_ADDRESS *DeclineAddress; + UINT32 DeclineAddressCount; + + IP6_FORM_CALLBACK_INFO CallbackInfo; + IP6_CONFIG_NVDATA Ip6NvData; }; /** diff --git a/NetworkPkg/Ip6Dxe/Ip6ConfigNv.c b/NetworkPkg/Ip6Dxe/Ip6ConfigNv.c index a0727d2666..1ed4039349 100644 --- a/NetworkPkg/Ip6Dxe/Ip6ConfigNv.c +++ b/NetworkPkg/Ip6Dxe/Ip6ConfigNv.c @@ -9,7 +9,7 @@ #include "Ip6Impl.h" -CHAR16 mIp6ConfigStorageName[] = L"IP6_CONFIG_IFR_NVDATA"; +CHAR16 mIp6ConfigStorageName[] = L"IP6_CONFIG_IFR_NVDATA"; /** The notify function of create event when performing a manual configuration. @@ -21,11 +21,11 @@ CHAR16 mIp6ConfigStorageName[] = L"IP6_CONFIG_IFR_NVDATA"; VOID EFIAPI Ip6ConfigManualAddressNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - *((BOOLEAN *) Context) = TRUE; + *((BOOLEAN *)Context) = TRUE; } /** @@ -52,27 +52,27 @@ Ip6ConfigManualAddressNotify ( **/ EFI_STATUS Ip6ConfigNvGetData ( - IN EFI_IP6_CONFIG_PROTOCOL *Ip6Config, - IN EFI_IP6_CONFIG_DATA_TYPE DataType, - OUT UINTN *DataSize, - OUT VOID **Data + IN EFI_IP6_CONFIG_PROTOCOL *Ip6Config, + IN EFI_IP6_CONFIG_DATA_TYPE DataType, + OUT UINTN *DataSize, + OUT VOID **Data ) { - UINTN BufferSize; - VOID *Buffer; - EFI_STATUS Status; + UINTN BufferSize; + VOID *Buffer; + EFI_STATUS Status; if ((Ip6Config == NULL) || (Data == NULL) || (DataSize == NULL)) { return EFI_INVALID_PARAMETER; } BufferSize = 0; - Status = Ip6Config->GetData ( - Ip6Config, - DataType, - &BufferSize, - NULL - ); + Status = Ip6Config->GetData ( + Ip6Config, + DataType, + &BufferSize, + NULL + ); if (Status != EFI_BUFFER_TOO_SMALL) { return Status; } @@ -108,12 +108,12 @@ Ip6ConfigNvGetData ( **/ VOID Ip6FreeAddressInfoList ( - IN LIST_ENTRY *ListHead + IN LIST_ENTRY *ListHead ) { - IP6_ADDRESS_INFO_ENTRY *Node; - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; + IP6_ADDRESS_INFO_ENTRY *Node; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, ListHead) { Node = NET_LIST_USER_STRUCT (Entry, IP6_ADDRESS_INFO_ENTRY, Link); @@ -135,19 +135,20 @@ Ip6ToStr ( OUT CHAR16 *Str ) { - UINTN Index; - BOOLEAN Short; - UINTN Number; - CHAR16 FormatString[8]; + UINTN Index; + BOOLEAN Short; + UINTN Number; + CHAR16 FormatString[8]; Short = FALSE; for (Index = 0; Index < 15; Index = Index + 2) { if (!Short && - Index % 2 == 0 && - Ip6->Addr[Index] == 0 && - Ip6->Addr[Index + 1] == 0 - ) { + (Index % 2 == 0) && + (Ip6->Addr[Index] == 0) && + (Ip6->Addr[Index + 1] == 0) + ) + { // // Deal with the case of ::. // @@ -156,8 +157,8 @@ Ip6ToStr ( *(Str + 1) = L':'; Str = Str + 2; } else { - *Str = L':'; - Str = Str + 1; + *Str = L':'; + Str = Str + 1; } while ((Index < 15) && (Ip6->Addr[Index] == 0) && (Ip6->Addr[Index + 1] == 0)) { @@ -178,7 +179,7 @@ Ip6ToStr ( ASSERT (Index < 15); if (Ip6->Addr[Index] == 0) { - Number = UnicodeSPrint (Str, 2 * IP6_STR_MAX_SIZE, L"%x:", (UINTN) Ip6->Addr[Index + 1]); + Number = UnicodeSPrint (Str, 2 * IP6_STR_MAX_SIZE, L"%x:", (UINTN)Ip6->Addr[Index + 1]); } else { if (Ip6->Addr[Index + 1] < 0x10) { CopyMem (FormatString, L"%x0%x:", StrSize (L"%x0%x:")); @@ -189,9 +190,9 @@ Ip6ToStr ( Number = UnicodeSPrint ( Str, 2 * IP6_STR_MAX_SIZE, - (CONST CHAR16 *) FormatString, - (UINTN) Ip6->Addr[Index], - (UINTN) Ip6->Addr[Index + 1] + (CONST CHAR16 *)FormatString, + (UINTN)Ip6->Addr[Index], + (UINTN)Ip6->Addr[Index + 1] ); } @@ -218,12 +219,12 @@ Ip6ToStr ( **/ EFI_STATUS Ip6ConvertInterfaceIdToString ( - OUT CHAR16 *String, - IN EFI_IP6_CONFIG_INTERFACE_ID *IfId + OUT CHAR16 *String, + IN EFI_IP6_CONFIG_INTERFACE_ID *IfId ) { - UINT8 Index; - UINTN Number; + UINT8 Index; + UINTN Number; if ((String == NULL) || (IfId == NULL)) { return EFI_INVALID_PARAMETER; @@ -234,7 +235,7 @@ Ip6ConvertInterfaceIdToString ( String, 2 * INTERFACE_ID_STR_STORAGE, L"%x:", - (UINTN) IfId->Id[Index] + (UINTN)IfId->Id[Index] ); String = String + Number; } @@ -256,20 +257,20 @@ Ip6ConvertInterfaceIdToString ( **/ EFI_STATUS Ip6ParseInterfaceIdFromString ( - IN CONST CHAR16 *String, - OUT EFI_IP6_CONFIG_INTERFACE_ID *IfId + IN CONST CHAR16 *String, + OUT EFI_IP6_CONFIG_INTERFACE_ID *IfId ) { - UINT8 Index; - CHAR16 *IfIdStr; - CHAR16 *TempStr; - UINTN NodeVal; + UINT8 Index; + CHAR16 *IfIdStr; + CHAR16 *TempStr; + UINTN NodeVal; if ((String == NULL) || (IfId == NULL)) { return EFI_INVALID_PARAMETER; } - IfIdStr = (CHAR16 *) String; + IfIdStr = (CHAR16 *)String; ZeroMem (IfId, sizeof (EFI_IP6_CONFIG_INTERFACE_ID)); @@ -297,7 +298,7 @@ Ip6ParseInterfaceIdFromString ( return EFI_INVALID_PARAMETER; } - IfId->Id[Index] = (UINT8) NodeVal; + IfId->Id[Index] = (UINT8)NodeVal; IfIdStr++; } @@ -323,18 +324,18 @@ Ip6ParseInterfaceIdFromString ( **/ EFI_STATUS Ip6CreateOpCode ( - IN UINT16 StartLabelNumber, - OUT VOID **StartOpCodeHandle, - OUT EFI_IFR_GUID_LABEL **StartLabel, - OUT VOID **EndOpCodeHandle, - OUT EFI_IFR_GUID_LABEL **EndLabel + IN UINT16 StartLabelNumber, + OUT VOID **StartOpCodeHandle, + OUT EFI_IFR_GUID_LABEL **StartLabel, + OUT VOID **EndOpCodeHandle, + OUT EFI_IFR_GUID_LABEL **EndLabel ) { - EFI_STATUS Status; - EFI_IFR_GUID_LABEL *InternalStartLabel; - EFI_IFR_GUID_LABEL *InternalEndLabel; + EFI_STATUS Status; + EFI_IFR_GUID_LABEL *InternalStartLabel; + EFI_IFR_GUID_LABEL *InternalEndLabel; - if (StartOpCodeHandle == NULL || StartLabel == NULL || EndOpCodeHandle == NULL || EndLabel == NULL) { + if ((StartOpCodeHandle == NULL) || (StartLabel == NULL) || (EndOpCodeHandle == NULL) || (EndLabel == NULL)) { return EFI_INVALID_PARAMETER; } @@ -358,12 +359,12 @@ Ip6CreateOpCode ( // // Create Hii Extend Label OpCode as the start opcode. // - InternalStartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - *StartOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + InternalStartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + *StartOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); if (InternalStartLabel == NULL) { goto Exit; } @@ -374,12 +375,12 @@ Ip6CreateOpCode ( // // Create Hii Extend Label OpCode as the end opcode. // - InternalEndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - *EndOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + InternalEndLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + *EndOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); if (InternalEndLabel == NULL) { goto Exit; } @@ -429,26 +430,26 @@ Exit: **/ EFI_STATUS Ip6ConvertAddressListToString ( - IN OUT CHAR16 *String, - IN EFI_HII_HANDLE HiiHandle, - IN IP6_CONFIG_NV_ADDRESS_TYPE AddressType, - IN VOID *AddressInfo, - IN UINTN AddressCount + IN OUT CHAR16 *String, + IN EFI_HII_HANDLE HiiHandle, + IN IP6_CONFIG_NV_ADDRESS_TYPE AddressType, + IN VOID *AddressInfo, + IN UINTN AddressCount ) { - UINTN Index; - UINTN Number; - CHAR16 *TempStr; - EFI_STATUS Status; - VOID *StartOpCodeHandle; - EFI_IFR_GUID_LABEL *StartLabel; - VOID *EndOpCodeHandle; - EFI_IFR_GUID_LABEL *EndLabel; - UINT16 StartLabelNumber; - EFI_STRING_ID TextTwo; - UINT8 *AddressHead; - UINT8 PrefixLength; - EFI_IPv6_ADDRESS *Address; + UINTN Index; + UINTN Number; + CHAR16 *TempStr; + EFI_STATUS Status; + VOID *StartOpCodeHandle; + EFI_IFR_GUID_LABEL *StartLabel; + VOID *EndOpCodeHandle; + EFI_IFR_GUID_LABEL *EndLabel; + UINT16 StartLabelNumber; + EFI_STRING_ID TextTwo; + UINT8 *AddressHead; + UINT8 PrefixLength; + EFI_IPv6_ADDRESS *Address; if ((String == NULL) || (HiiHandle == NULL) || (AddressInfo == NULL)) { return EFI_INVALID_PARAMETER; @@ -478,15 +479,15 @@ Ip6ConvertAddressListToString ( return Status; } - AddressHead = (UINT8 *) AddressInfo; + AddressHead = (UINT8 *)AddressInfo; for (Index = 0; Index < AddressCount; Index++) { if (AddressType == Ip6ConfigNvHostAddress) { AddressInfo = AddressHead + sizeof (EFI_IP6_ADDRESS_INFO) * Index; - Address = &((EFI_IP6_ADDRESS_INFO *) AddressInfo)->Address; + Address = &((EFI_IP6_ADDRESS_INFO *)AddressInfo)->Address; } else if (AddressType == Ip6ConfigNvRouteTable) { AddressInfo = AddressHead + sizeof (EFI_IP6_ROUTE_TABLE) * Index; - Address = &((EFI_IP6_ROUTE_TABLE *) AddressInfo)->Destination; + Address = &((EFI_IP6_ROUTE_TABLE *)AddressInfo)->Destination; } else { AddressInfo = AddressHead + sizeof (EFI_IPv6_ADDRESS) * Index; Address = AddressInfo; @@ -500,9 +501,9 @@ Ip6ConvertAddressListToString ( if ((AddressType == Ip6ConfigNvHostAddress) || (AddressType == Ip6ConfigNvRouteTable)) { if (AddressType == Ip6ConfigNvHostAddress) { - PrefixLength = ((EFI_IP6_ADDRESS_INFO *) AddressInfo)->PrefixLength; + PrefixLength = ((EFI_IP6_ADDRESS_INFO *)AddressInfo)->PrefixLength; } else { - PrefixLength = ((EFI_IP6_ROUTE_TABLE *) AddressInfo)->PrefixLength; + PrefixLength = ((EFI_IP6_ROUTE_TABLE *)AddressInfo)->PrefixLength; } // @@ -518,13 +519,13 @@ Ip6ConvertAddressListToString ( // // Append " >> " to the string. // - Number = UnicodeSPrint (TempStr, 8, L" >> "); - TempStr = TempStr + Number; + Number = UnicodeSPrint (TempStr, 8, L" >> "); + TempStr = TempStr + Number; // // Append the gateway address to the string. // - Ip6ToStr (&((EFI_IP6_ROUTE_TABLE *) AddressInfo)->Gateway, TempStr); + Ip6ToStr (&((EFI_IP6_ROUTE_TABLE *)AddressInfo)->Gateway, TempStr); TempStr = TempStr + StrLen (TempStr); } @@ -539,7 +540,7 @@ Ip6ConvertAddressListToString ( HiiCreateTextOpCode (StartOpCodeHandle, STR_NULL, STR_NULL, TextTwo); - String = TempStr; + String = TempStr; *String = IP6_ADDRESS_DELIMITER; String++; } @@ -576,26 +577,26 @@ Exit: **/ EFI_STATUS Ip6ParseAddressListFromString ( - IN CONST CHAR16 *String, - OUT LIST_ENTRY *ListHead, - OUT UINT32 *AddressCount + IN CONST CHAR16 *String, + OUT LIST_ENTRY *ListHead, + OUT UINT32 *AddressCount ) { - EFI_STATUS Status; - CHAR16 *LocalString; - CHAR16 *Temp; - CHAR16 *TempStr; - EFI_IP6_ADDRESS_INFO AddressInfo; - IP6_ADDRESS_INFO_ENTRY *Node; - BOOLEAN Last; - UINT32 Count; + EFI_STATUS Status; + CHAR16 *LocalString; + CHAR16 *Temp; + CHAR16 *TempStr; + EFI_IP6_ADDRESS_INFO AddressInfo; + IP6_ADDRESS_INFO_ENTRY *Node; + BOOLEAN Last; + UINT32 Count; if ((String == NULL) || (ListHead == NULL) || (AddressCount == NULL)) { return EFI_INVALID_PARAMETER; } ZeroMem (&AddressInfo, sizeof (EFI_IP6_ADDRESS_INFO)); - LocalString = (CHAR16 *) AllocateCopyPool (StrSize (String), String); + LocalString = (CHAR16 *)AllocateCopyPool (StrSize (String), String); if (LocalString == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -684,12 +685,12 @@ Ip6ConvertInterfaceInfoToString ( IN OUT IP6_CONFIG_IFR_NVDATA *IfrNvData ) { - UINT32 Index; - UINTN Number; - CHAR16 *String; - CHAR16 PortString[ADDRESS_STR_MAX_SIZE]; - CHAR16 FormatString[8]; - EFI_STRING_ID StringId; + UINT32 Index; + UINTN Number; + CHAR16 *String; + CHAR16 PortString[ADDRESS_STR_MAX_SIZE]; + CHAR16 FormatString[8]; + EFI_STRING_ID StringId; if ((IfInfo == NULL) || (HiiHandle == NULL) || (IfrNvData == NULL)) { return EFI_INVALID_PARAMETER; @@ -739,7 +740,6 @@ Ip6ConvertInterfaceInfoToString ( ASSERT (IfInfo->HwAddressSize <= 32); for (Index = 0; Index < IfInfo->HwAddressSize; Index++) { - if (IfInfo->HwAddress.Addr[Index] < 0x10) { CopyMem (FormatString, L"0%x-", sizeof (L"0%x-")); } else { @@ -749,8 +749,8 @@ Ip6ConvertInterfaceInfoToString ( Number = UnicodeSPrint ( String, 8, - (CONST CHAR16 *) FormatString, - (UINTN) IfInfo->HwAddress.Addr[Index] + (CONST CHAR16 *)FormatString, + (UINTN)IfInfo->HwAddress.Addr[Index] ); String = String + Number; } @@ -792,21 +792,21 @@ Ip6ConvertInterfaceInfoToString ( **/ EFI_STATUS Ip6BuildNvAddressInfo ( - IN IP6_CONFIG_INSTANCE *Instance, - IN IP6_CONFIG_NV_ADDRESS_TYPE AddressType, - OUT VOID **AddressInfo, - OUT UINTN *AddressSize + IN IP6_CONFIG_INSTANCE *Instance, + IN IP6_CONFIG_NV_ADDRESS_TYPE AddressType, + OUT VOID **AddressInfo, + OUT UINTN *AddressSize ) { - IP6_CONFIG_NVDATA *Ip6NvData; - LIST_ENTRY *Entry; - LIST_ENTRY *ListHead; - IP6_ADDRESS_INFO_ENTRY *Node; - VOID *AddressList; - VOID *TmpStr; - UINTN DataSize; - EFI_IPv6_ADDRESS *Ip6Address; - EFI_IP6_CONFIG_MANUAL_ADDRESS *ManualAddress; + IP6_CONFIG_NVDATA *Ip6NvData; + LIST_ENTRY *Entry; + LIST_ENTRY *ListHead; + IP6_ADDRESS_INFO_ENTRY *Node; + VOID *AddressList; + VOID *TmpStr; + UINTN DataSize; + EFI_IPv6_ADDRESS *Ip6Address; + EFI_IP6_CONFIG_MANUAL_ADDRESS *ManualAddress; if ((Instance == NULL) || (AddressInfo == NULL) || (AddressSize == NULL)) { return EFI_INVALID_PARAMETER; @@ -839,14 +839,14 @@ Ip6BuildNvAddressInfo ( NET_LIST_FOR_EACH (Entry, ListHead) { Node = NET_LIST_USER_STRUCT (Entry, IP6_ADDRESS_INFO_ENTRY, Link); if (AddressType == Ip6ConfigNvHostAddress) { - ManualAddress = (EFI_IP6_CONFIG_MANUAL_ADDRESS *) AddressList; + ManualAddress = (EFI_IP6_CONFIG_MANUAL_ADDRESS *)AddressList; IP6_COPY_ADDRESS (&ManualAddress->Address, &Node->AddrInfo.Address); ManualAddress->PrefixLength = Node->AddrInfo.PrefixLength; - AddressList = (UINT8 *) AddressList + sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS); + AddressList = (UINT8 *)AddressList + sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS); } else { - Ip6Address = (EFI_IPv6_ADDRESS *) AddressList; + Ip6Address = (EFI_IPv6_ADDRESS *)AddressList; IP6_COPY_ADDRESS (Ip6Address, &Node->AddrInfo.Address); - AddressList = (UINT8 *) AddressList + sizeof (EFI_IPv6_ADDRESS); + AddressList = (UINT8 *)AddressList + sizeof (EFI_IPv6_ADDRESS); } } @@ -869,18 +869,18 @@ Ip6BuildNvAddressInfo ( **/ EFI_STATUS Ip6ConvertConfigNvDataToIfrNvData ( - IN OUT IP6_CONFIG_IFR_NVDATA *IfrNvData, - IN IP6_CONFIG_INSTANCE *Instance + IN OUT IP6_CONFIG_IFR_NVDATA *IfrNvData, + IN IP6_CONFIG_INSTANCE *Instance ) { - IP6_CONFIG_NVDATA *Ip6NvData; - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; - UINTN DataSize; - VOID *Data; - EFI_STATUS Status; - EFI_IP6_CONFIG_POLICY Policy; - EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits; - EFI_HII_HANDLE HiiHandle; + IP6_CONFIG_NVDATA *Ip6NvData; + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + UINTN DataSize; + VOID *Data; + EFI_STATUS Status; + EFI_IP6_CONFIG_POLICY Policy; + EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits; + EFI_HII_HANDLE HiiHandle; if ((IfrNvData == NULL) || (Instance == NULL)) { return EFI_INVALID_PARAMETER; @@ -901,7 +901,7 @@ Ip6ConvertConfigNvDataToIfrNvData ( Ip6Config, Ip6ConfigDataTypeInterfaceInfo, &DataSize, - (VOID **) &Data + (VOID **)&Data ); if (EFI_ERROR (Status)) { goto Exit; @@ -911,7 +911,7 @@ Ip6ConvertConfigNvDataToIfrNvData ( // Convert the interface info to string and print. // Status = Ip6ConvertInterfaceInfoToString ( - (EFI_IP6_CONFIG_INTERFACE_INFO *) Data, + (EFI_IP6_CONFIG_INTERFACE_INFO *)Data, HiiHandle, IfrNvData ); @@ -980,7 +980,7 @@ Ip6ConvertConfigNvDataToIfrNvData ( Exit: if (Data != NULL) { - FreePool (Data); + FreePool (Data); } return Status; @@ -1000,13 +1000,13 @@ Exit: **/ EFI_STATUS Ip6ConvertIfrNvDataToConfigNvDataGeneral ( - IN IP6_CONFIG_IFR_NVDATA *IfrNvData, - IN OUT IP6_CONFIG_INSTANCE *Instance + IN IP6_CONFIG_IFR_NVDATA *IfrNvData, + IN OUT IP6_CONFIG_INSTANCE *Instance ) { - IP6_CONFIG_NVDATA *Ip6NvData; - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; - EFI_STATUS Status; + IP6_CONFIG_NVDATA *Ip6NvData; + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + EFI_STATUS Status; if ((IfrNvData == NULL) || (Instance == NULL)) { return EFI_INVALID_PARAMETER; @@ -1083,19 +1083,19 @@ Ip6ConvertIfrNvDataToConfigNvDataGeneral ( **/ EFI_STATUS Ip6ConvertIfrNvDataToConfigNvDataAdvanced ( - IN IP6_CONFIG_IFR_NVDATA *IfrNvData, - IN OUT IP6_CONFIG_INSTANCE *Instance + IN IP6_CONFIG_IFR_NVDATA *IfrNvData, + IN OUT IP6_CONFIG_INSTANCE *Instance ) { - IP6_CONFIG_NVDATA *Ip6NvData; - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; - EFI_STATUS Status; - EFI_IP6_CONFIG_MANUAL_ADDRESS *ManualAddress; - EFI_IPv6_ADDRESS *Address; - BOOLEAN IsAddressOk; - EFI_EVENT SetAddressEvent; - EFI_EVENT TimeoutEvent; - UINTN DataSize; + IP6_CONFIG_NVDATA *Ip6NvData; + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + EFI_STATUS Status; + EFI_IP6_CONFIG_MANUAL_ADDRESS *ManualAddress; + EFI_IPv6_ADDRESS *Address; + BOOLEAN IsAddressOk; + EFI_EVENT SetAddressEvent; + EFI_EVENT TimeoutEvent; + UINTN DataSize; if ((IfrNvData == NULL) || (Instance == NULL)) { return EFI_INVALID_PARAMETER; @@ -1164,7 +1164,7 @@ Ip6ConvertIfrNvDataToConfigNvDataAdvanced ( Status = Ip6BuildNvAddressInfo ( Instance, Ip6ConfigNvHostAddress, - (VOID **) &ManualAddress, + (VOID **)&ManualAddress, &DataSize ); if (EFI_ERROR (Status)) { @@ -1186,7 +1186,7 @@ Ip6ConvertIfrNvDataToConfigNvDataAdvanced ( Ip6Config, Ip6ConfigDataTypeManualAddress, DataSize, - (VOID *) ManualAddress + (VOID *)ManualAddress ); if (Status == EFI_NOT_READY) { gBS->SetTimer (TimeoutEvent, TimerRelative, 50000000); @@ -1194,6 +1194,7 @@ Ip6ConvertIfrNvDataToConfigNvDataAdvanced ( if (IsAddressOk) { Status = EFI_SUCCESS; } + break; } } @@ -1215,7 +1216,7 @@ Ip6ConvertIfrNvDataToConfigNvDataAdvanced ( Status = Ip6BuildNvAddressInfo ( Instance, Ip6ConfigNvGatewayAddress, - (VOID **) &Address, + (VOID **)&Address, &DataSize ); if (EFI_ERROR (Status)) { @@ -1226,7 +1227,7 @@ Ip6ConvertIfrNvDataToConfigNvDataAdvanced ( Ip6Config, Ip6ConfigDataTypeGateway, DataSize, - (VOID *) Address + (VOID *)Address ); if (EFI_ERROR (Status)) { goto Exit; @@ -1243,7 +1244,7 @@ Ip6ConvertIfrNvDataToConfigNvDataAdvanced ( Status = Ip6BuildNvAddressInfo ( Instance, Ip6ConfigNvDnsAddress, - (VOID **) &Address, + (VOID **)&Address, &DataSize ); if (EFI_ERROR (Status)) { @@ -1254,7 +1255,7 @@ Ip6ConvertIfrNvDataToConfigNvDataAdvanced ( Ip6Config, Ip6ConfigDataTypeDnsServer, DataSize, - (VOID *) Address + (VOID *)Address ); if (EFI_ERROR (Status)) { goto Exit; @@ -1283,7 +1284,6 @@ Exit: return Status; } - /** This function allows the caller to request the current configuration for one or more named elements. The resulting @@ -1349,30 +1349,30 @@ Exit: EFI_STATUS EFIAPI Ip6FormExtractConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Request, - OUT EFI_STRING *Progress, - OUT EFI_STRING *Results + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results ) { + EFI_STATUS Status; + IP6_FORM_CALLBACK_INFO *Private; + IP6_CONFIG_INSTANCE *Ip6ConfigInstance; + IP6_CONFIG_IFR_NVDATA *IfrNvData; + EFI_STRING ConfigRequestHdr; + EFI_STRING ConfigRequest; + BOOLEAN AllocatedRequest; + UINTN Size; + UINTN BufferSize; - EFI_STATUS Status; - IP6_FORM_CALLBACK_INFO *Private; - IP6_CONFIG_INSTANCE *Ip6ConfigInstance; - IP6_CONFIG_IFR_NVDATA *IfrNvData; - EFI_STRING ConfigRequestHdr; - EFI_STRING ConfigRequest; - BOOLEAN AllocatedRequest; - UINTN Size; - UINTN BufferSize; - - if (This == NULL || Progress == NULL || Results == NULL) { + if ((This == NULL) || (Progress == NULL) || (Results == NULL)) { return EFI_INVALID_PARAMETER; } *Progress = Request; if ((Request != NULL) && - !HiiIsConfigHdrMatch (Request, &gIp6ConfigNvDataGuid, mIp6ConfigStorageName)) { + !HiiIsConfigHdrMatch (Request, &gIp6ConfigNvDataGuid, mIp6ConfigStorageName)) + { return EFI_NOT_FOUND; } @@ -1381,11 +1381,11 @@ Ip6FormExtractConfig ( AllocatedRequest = FALSE; Size = 0; - Private = IP6_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS (This); + Private = IP6_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS (This); Ip6ConfigInstance = IP6_CONFIG_INSTANCE_FROM_FORM_CALLBACK (Private); - BufferSize = sizeof (IP6_CONFIG_IFR_NVDATA); + BufferSize = sizeof (IP6_CONFIG_IFR_NVDATA); - IfrNvData = (IP6_CONFIG_IFR_NVDATA *) AllocateZeroPool (BufferSize); + IfrNvData = (IP6_CONFIG_IFR_NVDATA *)AllocateZeroPool (BufferSize); if (IfrNvData == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -1407,7 +1407,7 @@ Ip6FormExtractConfig ( mIp6ConfigStorageName, Private->ChildHandle ); - Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); + Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); ConfigRequest = AllocateZeroPool (Size); ASSERT (ConfigRequest != NULL); AllocatedRequest = TRUE; @@ -1416,7 +1416,7 @@ Ip6FormExtractConfig ( Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, - (UINT64) BufferSize + (UINT64)BufferSize ); FreePool (ConfigRequestHdr); } @@ -1427,7 +1427,7 @@ Ip6FormExtractConfig ( Status = gHiiConfigRouting->BlockToConfig ( gHiiConfigRouting, ConfigRequest, - (UINT8 *) IfrNvData, + (UINT8 *)IfrNvData, BufferSize, Results, Progress @@ -1442,6 +1442,7 @@ Exit: FreePool (ConfigRequest); ConfigRequest = NULL; } + // // Set Progress string to the original request string. // @@ -1490,12 +1491,12 @@ Exit: EFI_STATUS EFIAPI Ip6FormRouteConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Configuration, - OUT EFI_STRING *Progress + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress ) { - if (This == NULL || Configuration == NULL || Progress == NULL) { + if ((This == NULL) || (Configuration == NULL) || (Progress == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1525,17 +1526,16 @@ Ip6FormRouteConfig ( **/ EFI_STATUS Ip6GetCurrentSetting ( - IN IP6_CONFIG_INSTANCE *Instance + IN IP6_CONFIG_INSTANCE *Instance ) { - EFI_IP6_CONFIG_PROTOCOL *Ip6Config; - EFI_HII_HANDLE HiiHandle; - EFI_IP6_CONFIG_INTERFACE_INFO *Data; - UINTN DataSize; - EFI_STATUS Status; - CHAR16 PortString[ADDRESS_STR_MAX_SIZE]; - EFI_IP6_CONFIG_INTERFACE_INFO *IfInfo; - + EFI_IP6_CONFIG_PROTOCOL *Ip6Config; + EFI_HII_HANDLE HiiHandle; + EFI_IP6_CONFIG_INTERFACE_INFO *Data; + UINTN DataSize; + EFI_STATUS Status; + CHAR16 PortString[ADDRESS_STR_MAX_SIZE]; + EFI_IP6_CONFIG_INTERFACE_INFO *IfInfo; Ip6Config = &Instance->Ip6Config; HiiHandle = Instance->CallbackInfo.RegisteredHandle; @@ -1548,7 +1548,7 @@ Ip6GetCurrentSetting ( Ip6Config, Ip6ConfigDataTypeInterfaceInfo, &DataSize, - (VOID **) &Data + (VOID **)&Data ); if (EFI_ERROR (Status)) { return Status; @@ -1557,7 +1557,7 @@ Ip6GetCurrentSetting ( // // Generate dynamic text opcode for host address and draw it. // - IfInfo = (EFI_IP6_CONFIG_INTERFACE_INFO *) Data; + IfInfo = (EFI_IP6_CONFIG_INTERFACE_INFO *)Data; Status = Ip6ConvertAddressListToString ( PortString, HiiHandle, @@ -1590,17 +1590,18 @@ Ip6GetCurrentSetting ( // FreePool (Data); DataSize = 0; - Data = NULL; - Status = Ip6ConfigNvGetData ( - Ip6Config, - Ip6ConfigDataTypeDnsServer, - &DataSize, - (VOID **) &Data - ); + Data = NULL; + Status = Ip6ConfigNvGetData ( + Ip6Config, + Ip6ConfigDataTypeDnsServer, + &DataSize, + (VOID **)&Data + ); if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) { if (Data != NULL) { FreePool (Data); } + return Status; } @@ -1629,17 +1630,18 @@ Ip6GetCurrentSetting ( } DataSize = 0; - Data = NULL; - Status = Ip6ConfigNvGetData ( - Ip6Config, - Ip6ConfigDataTypeGateway, - &DataSize, - (VOID **) &Data - ); + Data = NULL; + Status = Ip6ConfigNvGetData ( + Ip6Config, + Ip6ConfigDataTypeGateway, + &DataSize, + (VOID **)&Data + ); if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) { if (Data != NULL) { FreePool (Data); } + return Status; } @@ -1697,21 +1699,21 @@ Ip6GetCurrentSetting ( EFI_STATUS EFIAPI Ip6FormCallback ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN EFI_BROWSER_ACTION Action, - IN EFI_QUESTION_ID QuestionId, - IN UINT8 Type, - IN EFI_IFR_TYPE_VALUE *Value, - OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest ) { - IP6_FORM_CALLBACK_INFO *Private; - UINTN BufferSize; - IP6_CONFIG_IFR_NVDATA *IfrNvData; - EFI_STATUS Status; - EFI_INPUT_KEY Key; - IP6_CONFIG_INSTANCE *Instance; - IP6_CONFIG_NVDATA *Ip6NvData; + IP6_FORM_CALLBACK_INFO *Private; + UINTN BufferSize; + IP6_CONFIG_IFR_NVDATA *IfrNvData; + EFI_STATUS Status; + EFI_INPUT_KEY Key; + IP6_CONFIG_INSTANCE *Instance; + IP6_CONFIG_NVDATA *Ip6NvData; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -1721,11 +1723,11 @@ Ip6FormCallback ( Instance = IP6_CONFIG_INSTANCE_FROM_FORM_CALLBACK (Private); Ip6NvData = &Instance->Ip6NvData; - if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)){ + if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)) { return EFI_SUCCESS; } - if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) { + if ((Action != EFI_BROWSER_ACTION_CHANGING) && (Action != EFI_BROWSER_ACTION_CHANGED)) { return EFI_UNSUPPORTED; } @@ -1738,123 +1740,124 @@ Ip6FormCallback ( // BufferSize = sizeof (IP6_CONFIG_IFR_NVDATA); - IfrNvData = AllocateZeroPool (BufferSize); + IfrNvData = AllocateZeroPool (BufferSize); if (IfrNvData == NULL) { return EFI_OUT_OF_RESOURCES; } Status = EFI_SUCCESS; - HiiGetBrowserData (NULL, NULL, BufferSize, (UINT8 *) IfrNvData); + HiiGetBrowserData (NULL, NULL, BufferSize, (UINT8 *)IfrNvData); if (Action == EFI_BROWSER_ACTION_CHANGING) { switch (QuestionId) { - case KEY_GET_CURRENT_SETTING: - Status = Ip6GetCurrentSetting (Instance); - break; + case KEY_GET_CURRENT_SETTING: + Status = Ip6GetCurrentSetting (Instance); + break; - default: - break; + default: + break; } } else if (Action == EFI_BROWSER_ACTION_CHANGED) { switch (QuestionId) { - case KEY_SAVE_CONFIG_CHANGES: - Status = Ip6ConvertIfrNvDataToConfigNvDataAdvanced (IfrNvData, Instance); - if (EFI_ERROR (Status)) { - break; - } + case KEY_SAVE_CONFIG_CHANGES: + Status = Ip6ConvertIfrNvDataToConfigNvDataAdvanced (IfrNvData, Instance); + if (EFI_ERROR (Status)) { + break; + } - Status = Ip6GetCurrentSetting (Instance); + Status = Ip6GetCurrentSetting (Instance); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT; - break; + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT; + break; - case KEY_IGNORE_CONFIG_CHANGES: - Ip6FreeAddressInfoList (&Ip6NvData->ManualAddress); - Ip6FreeAddressInfoList (&Ip6NvData->GatewayAddress); - Ip6FreeAddressInfoList (&Ip6NvData->DnsAddress); + case KEY_IGNORE_CONFIG_CHANGES: + Ip6FreeAddressInfoList (&Ip6NvData->ManualAddress); + Ip6FreeAddressInfoList (&Ip6NvData->GatewayAddress); + Ip6FreeAddressInfoList (&Ip6NvData->DnsAddress); - Ip6NvData->ManualAddressCount = 0; - Ip6NvData->GatewayAddressCount = 0; - Ip6NvData->DnsAddressCount = 0; + Ip6NvData->ManualAddressCount = 0; + Ip6NvData->GatewayAddressCount = 0; + Ip6NvData->DnsAddressCount = 0; - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT; - break; + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT; + break; + + case KEY_SAVE_CHANGES: + Status = Ip6ConvertIfrNvDataToConfigNvDataGeneral (IfrNvData, Instance); + if (EFI_ERROR (Status)) { + break; + } - case KEY_SAVE_CHANGES: - Status = Ip6ConvertIfrNvDataToConfigNvDataGeneral (IfrNvData, Instance); - if (EFI_ERROR (Status)) { + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; break; - } - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; - break; - case KEY_INTERFACE_ID: - Status = Ip6ParseInterfaceIdFromString (IfrNvData->InterfaceId, &Ip6NvData->InterfaceId); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Invalid Interface ID!", - NULL - ); - } + case KEY_INTERFACE_ID: + Status = Ip6ParseInterfaceIdFromString (IfrNvData->InterfaceId, &Ip6NvData->InterfaceId); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Invalid Interface ID!", + NULL + ); + } - break; + break; - case KEY_MANUAL_ADDRESS: - Status = Ip6ParseAddressListFromString ( - IfrNvData->ManualAddress, - &Ip6NvData->ManualAddress, - &Ip6NvData->ManualAddressCount - ); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Invalid Host Addresses!", - NULL - ); - } + case KEY_MANUAL_ADDRESS: + Status = Ip6ParseAddressListFromString ( + IfrNvData->ManualAddress, + &Ip6NvData->ManualAddress, + &Ip6NvData->ManualAddressCount + ); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Invalid Host Addresses!", + NULL + ); + } - break; + break; - case KEY_GATEWAY_ADDRESS: - Status = Ip6ParseAddressListFromString ( - IfrNvData->GatewayAddress, - &Ip6NvData->GatewayAddress, - &Ip6NvData->GatewayAddressCount - ); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Invalid Gateway Addresses!", - NULL - ); - } + case KEY_GATEWAY_ADDRESS: + Status = Ip6ParseAddressListFromString ( + IfrNvData->GatewayAddress, + &Ip6NvData->GatewayAddress, + &Ip6NvData->GatewayAddressCount + ); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Invalid Gateway Addresses!", + NULL + ); + } - break; + break; - case KEY_DNS_ADDRESS: - Status = Ip6ParseAddressListFromString ( - IfrNvData->DnsAddress, - &Ip6NvData->DnsAddress, - &Ip6NvData->DnsAddressCount - ); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Invalid DNS Addresses!", - NULL - ); - } + case KEY_DNS_ADDRESS: + Status = Ip6ParseAddressListFromString ( + IfrNvData->DnsAddress, + &Ip6NvData->DnsAddress, + &Ip6NvData->DnsAddressCount + ); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Invalid DNS Addresses!", + NULL + ); + } - break; + break; - default: - break; + default: + break; } } @@ -1863,7 +1866,7 @@ Ip6FormCallback ( // Pass changed uncommitted data back to Form Browser. // BufferSize = sizeof (IP6_CONFIG_IFR_NVDATA); - HiiSetBrowserData (NULL, NULL, BufferSize, (UINT8 *) IfrNvData, NULL); + HiiSetBrowserData (NULL, NULL, BufferSize, (UINT8 *)IfrNvData, NULL); } FreePool (IfrNvData); @@ -1882,20 +1885,20 @@ Ip6FormCallback ( **/ EFI_STATUS Ip6ConfigFormInit ( - IN OUT IP6_CONFIG_INSTANCE *Instance + IN OUT IP6_CONFIG_INSTANCE *Instance ) { - EFI_STATUS Status; - IP6_SERVICE *IpSb; - IP6_FORM_CALLBACK_INFO *CallbackInfo; - EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess; - VENDOR_DEVICE_PATH VendorDeviceNode; - EFI_SERVICE_BINDING_PROTOCOL *MnpSb; - CHAR16 *MacString; - CHAR16 MenuString[128]; - CHAR16 PortString[128]; - CHAR16 *OldMenuString; - EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; + EFI_STATUS Status; + IP6_SERVICE *IpSb; + IP6_FORM_CALLBACK_INFO *CallbackInfo; + EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess; + VENDOR_DEVICE_PATH VendorDeviceNode; + EFI_SERVICE_BINDING_PROTOCOL *MnpSb; + CHAR16 *MacString; + CHAR16 MenuString[128]; + CHAR16 PortString[128]; + CHAR16 *OldMenuString; + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; IpSb = IP6_SERVICE_FROM_IP6_CONFIG_INSTANCE (Instance); ASSERT (IpSb != NULL); @@ -1903,13 +1906,13 @@ Ip6ConfigFormInit ( Status = gBS->HandleProtocol ( IpSb->Controller, &gEfiDevicePathProtocolGuid, - (VOID **) &ParentDevicePath + (VOID **)&ParentDevicePath ); if (EFI_ERROR (Status)) { return Status; } - CallbackInfo = &Instance->CallbackInfo; + CallbackInfo = &Instance->CallbackInfo; CallbackInfo->Signature = IP6_FORM_CALLBACK_INFO_SIGNATURE; // @@ -1926,7 +1929,7 @@ Ip6ConfigFormInit ( SetDevicePathNodeLength (&VendorDeviceNode.Header, sizeof (VENDOR_DEVICE_PATH)); CallbackInfo->HiiVendorDevicePath = AppendDevicePathNode ( ParentDevicePath, - (EFI_DEVICE_PATH_PROTOCOL *) &VendorDeviceNode + (EFI_DEVICE_PATH_PROTOCOL *)&VendorDeviceNode ); if (CallbackInfo->HiiVendorDevicePath == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -1956,7 +1959,7 @@ Ip6ConfigFormInit ( Status = gBS->OpenProtocol ( IpSb->Controller, &gEfiManagedNetworkServiceBindingProtocolGuid, - (VOID **) &MnpSb, + (VOID **)&MnpSb, IpSb->Image, CallbackInfo->ChildHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -1990,8 +1993,9 @@ Ip6ConfigFormInit ( OldMenuString = HiiGetString ( CallbackInfo->RegisteredHandle, STRING_TOKEN (STR_IP6_CONFIG_FORM_HELP), - NULL) - ; + NULL + ) + ; UnicodeSPrint (MenuString, 128, L"%s (MAC:%s)", OldMenuString, MacString); HiiSetString ( CallbackInfo->RegisteredHandle, @@ -2030,12 +2034,12 @@ Error: **/ VOID Ip6ConfigFormUnload ( - IN OUT IP6_CONFIG_INSTANCE *Instance + IN OUT IP6_CONFIG_INSTANCE *Instance ) { - IP6_SERVICE *IpSb; - IP6_FORM_CALLBACK_INFO *CallbackInfo; - IP6_CONFIG_NVDATA *Ip6NvData; + IP6_SERVICE *IpSb; + IP6_FORM_CALLBACK_INFO *CallbackInfo; + IP6_CONFIG_NVDATA *Ip6NvData; IpSb = IP6_SERVICE_FROM_IP6_CONFIG_INSTANCE (Instance); ASSERT (IpSb != NULL); @@ -2043,7 +2047,6 @@ Ip6ConfigFormUnload ( CallbackInfo = &Instance->CallbackInfo; if (CallbackInfo->ChildHandle != NULL) { - // // Close the child handle // diff --git a/NetworkPkg/Ip6Dxe/Ip6ConfigNv.h b/NetworkPkg/Ip6Dxe/Ip6ConfigNv.h index d4840270cb..063bc8e461 100644 --- a/NetworkPkg/Ip6Dxe/Ip6ConfigNv.h +++ b/NetworkPkg/Ip6Dxe/Ip6ConfigNv.h @@ -16,10 +16,10 @@ extern UINT8 Ip6ConfigBin[]; extern UINT8 Ip6DxeStrings[]; -#define IP6_ETHERNET L"Ethernet" -#define IP6_EXPERIMENTAL_ETHERNET L"Experimental Ethernet" -#define IP6_ADDRESS_DELIMITER L' ' -#define IP6_LINK_LOCAL_PREFIX L"FE80::" +#define IP6_ETHERNET L"Ethernet" +#define IP6_EXPERIMENTAL_ETHERNET L"Experimental Ethernet" +#define IP6_ADDRESS_DELIMITER L' ' +#define IP6_LINK_LOCAL_PREFIX L"FE80::" typedef enum { Ip6InterfaceTypeEthernet = 1, @@ -45,7 +45,7 @@ typedef enum { **/ EFI_STATUS Ip6ConfigFormInit ( - IN OUT IP6_CONFIG_INSTANCE *Instance + IN OUT IP6_CONFIG_INSTANCE *Instance ); /** @@ -56,7 +56,7 @@ Ip6ConfigFormInit ( **/ VOID Ip6ConfigFormUnload ( - IN OUT IP6_CONFIG_INSTANCE *Instance + IN OUT IP6_CONFIG_INSTANCE *Instance ); #endif diff --git a/NetworkPkg/Ip6Dxe/Ip6Driver.c b/NetworkPkg/Ip6Dxe/Ip6Driver.c index 80ce5b5d0a..b483a7d136 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Driver.c +++ b/NetworkPkg/Ip6Dxe/Ip6Driver.c @@ -10,7 +10,7 @@ #include "Ip6Impl.h" -EFI_DRIVER_BINDING_PROTOCOL gIp6DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gIp6DriverBinding = { Ip6DriverBindingSupported, Ip6DriverBindingStart, Ip6DriverBindingStop, @@ -35,13 +35,14 @@ IpSec2InstalledCallback ( IN VOID *Context ) { - EFI_STATUS Status; + EFI_STATUS Status; + // // Test if protocol was even found. // Notification function will be called at least once. // Status = gBS->LocateProtocol (&gEfiIpSec2ProtocolGuid, NULL, (VOID **)&mIpSec); - if (Status == EFI_SUCCESS && mIpSec != NULL) { + if ((Status == EFI_SUCCESS) && (mIpSec != NULL)) { // // Close the event so it does not get called again. // @@ -69,11 +70,11 @@ IpSec2InstalledCallback ( EFI_STATUS EFIAPI Ip6DriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { - VOID *Registration; + VOID *Registration; EfiCreateProtocolNotifyEvent ( &gEfiIpSec2ProtocolGuid, @@ -142,14 +143,14 @@ Ip6DriverBindingSupported ( **/ EFI_STATUS Ip6CleanService ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ) { - EFI_STATUS Status; - EFI_IPv6_ADDRESS AllNodes; - IP6_NEIGHBOR_ENTRY *NeighborCache; + EFI_STATUS Status; + EFI_IPv6_ADDRESS AllNodes; + IP6_NEIGHBOR_ENTRY *NeighborCache; - IpSb->State = IP6_SERVICE_DESTROY; + IpSb->State = IP6_SERVICE_DESTROY; if (IpSb->Timer != NULL) { gBS->SetTimer (IpSb->Timer, TimerCancel, 0); @@ -207,11 +208,11 @@ Ip6CleanService ( IpSb->Mnp->Cancel (IpSb->Mnp, NULL); IpSb->Mnp->Configure (IpSb->Mnp, NULL); gBS->CloseProtocol ( - IpSb->MnpChildHandle, - &gEfiManagedNetworkProtocolGuid, - IpSb->Image, - IpSb->Controller - ); + IpSb->MnpChildHandle, + &gEfiManagedNetworkProtocolGuid, + IpSb->Image, + IpSb->Controller + ); IpSb->Mnp = NULL; } @@ -256,9 +257,9 @@ Ip6CleanService ( **/ EFI_STATUS Ip6CreateService ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE ImageHandle, - OUT IP6_SERVICE **Service + IN EFI_HANDLE Controller, + IN EFI_HANDLE ImageHandle, + OUT IP6_SERVICE **Service ) { IP6_SERVICE *IpSb; @@ -286,60 +287,60 @@ Ip6CreateService ( IpSb->ServiceBinding.DestroyChild = Ip6ServiceBindingDestroyChild; IpSb->State = IP6_SERVICE_UNSTARTED; - IpSb->NumChildren = 0; + IpSb->NumChildren = 0; InitializeListHead (&IpSb->Children); InitializeListHead (&IpSb->Interfaces); - IpSb->DefaultInterface = NULL; - IpSb->RouteTable = NULL; + IpSb->DefaultInterface = NULL; + IpSb->RouteTable = NULL; - IpSb->RecvRequest.Signature = IP6_LINK_RX_SIGNATURE; - IpSb->RecvRequest.CallBack = NULL; - IpSb->RecvRequest.Context = NULL; - MnpToken = &IpSb->RecvRequest.MnpToken; - MnpToken->Event = NULL; - MnpToken->Status = EFI_NOT_READY; - MnpToken->Packet.RxData = NULL; + IpSb->RecvRequest.Signature = IP6_LINK_RX_SIGNATURE; + IpSb->RecvRequest.CallBack = NULL; + IpSb->RecvRequest.Context = NULL; + MnpToken = &IpSb->RecvRequest.MnpToken; + MnpToken->Event = NULL; + MnpToken->Status = EFI_NOT_READY; + MnpToken->Packet.RxData = NULL; Ip6CreateAssembleTable (&IpSb->Assemble); - IpSb->MldCtrl.Mldv1QuerySeen = 0; + IpSb->MldCtrl.Mldv1QuerySeen = 0; InitializeListHead (&IpSb->MldCtrl.Groups); ZeroMem (&IpSb->LinkLocalAddr, sizeof (EFI_IPv6_ADDRESS)); - IpSb->LinkLocalOk = FALSE; - IpSb->LinkLocalDadFail = FALSE; - IpSb->Dhcp6NeedStart = FALSE; - IpSb->Dhcp6NeedInfoRequest = FALSE; - - IpSb->CurHopLimit = IP6_HOP_LIMIT; - IpSb->LinkMTU = IP6_MIN_LINK_MTU; - IpSb->BaseReachableTime = IP6_REACHABLE_TIME; + IpSb->LinkLocalOk = FALSE; + IpSb->LinkLocalDadFail = FALSE; + IpSb->Dhcp6NeedStart = FALSE; + IpSb->Dhcp6NeedInfoRequest = FALSE; + + IpSb->CurHopLimit = IP6_HOP_LIMIT; + IpSb->LinkMTU = IP6_MIN_LINK_MTU; + IpSb->BaseReachableTime = IP6_REACHABLE_TIME; Ip6UpdateReachableTime (IpSb); // // RFC4861 RETRANS_TIMER: 1,000 milliseconds // - IpSb->RetransTimer = IP6_RETRANS_TIMER; + IpSb->RetransTimer = IP6_RETRANS_TIMER; - IpSb->RoundRobin = 0; + IpSb->RoundRobin = 0; InitializeListHead (&IpSb->NeighborTable); InitializeListHead (&IpSb->DefaultRouterList); InitializeListHead (&IpSb->OnlinkPrefix); InitializeListHead (&IpSb->AutonomousPrefix); - IpSb->InterfaceIdLen = IP6_IF_ID_LEN; - IpSb->InterfaceId = NULL; + IpSb->InterfaceIdLen = IP6_IF_ID_LEN; + IpSb->InterfaceId = NULL; - IpSb->RouterAdvertiseReceived = FALSE; - IpSb->SolicitTimer = IP6_MAX_RTR_SOLICITATIONS; - IpSb->Ticks = 0; + IpSb->RouterAdvertiseReceived = FALSE; + IpSb->SolicitTimer = IP6_MAX_RTR_SOLICITATIONS; + IpSb->Ticks = 0; - IpSb->Image = ImageHandle; - IpSb->Controller = Controller; + IpSb->Image = ImageHandle; + IpSb->Controller = Controller; - IpSb->MnpChildHandle = NULL; - IpSb->Mnp = NULL; + IpSb->MnpChildHandle = NULL; + IpSb->Mnp = NULL; Config = &IpSb->MnpConfigData; Config->ReceivedQueueTimeoutValue = 0; @@ -355,12 +356,12 @@ Ip6CreateService ( ZeroMem (&IpSb->SnpMode, sizeof (EFI_SIMPLE_NETWORK_MODE)); - IpSb->Timer = NULL; - IpSb->FasterTimer = NULL; + IpSb->Timer = NULL; + IpSb->FasterTimer = NULL; ZeroMem (&IpSb->Ip6ConfigInstance, sizeof (IP6_CONFIG_INSTANCE)); - IpSb->MacString = NULL; + IpSb->MacString = NULL; // // Create various resources. First create the route table, timer @@ -408,7 +409,7 @@ Ip6CreateService ( Status = gBS->OpenProtocol ( IpSb->MnpChildHandle, &gEfiManagedNetworkProtocolGuid, - (VOID **) (&IpSb->Mnp), + (VOID **)(&IpSb->Mnp), ImageHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -434,6 +435,7 @@ Ip6CreateService ( // IpSb->MaxPacketSize -= NET_VLAN_TAG_LEN; } + IpSb->OldMaxPacketSize = IpSb->MaxPacketSize; // @@ -489,7 +491,6 @@ ON_ERROR: return Status; } - /** Start this driver on ControllerHandle. @@ -511,10 +512,10 @@ Ip6DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - IP6_SERVICE *IpSb; - EFI_STATUS Status; - EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; - IP6_CONFIG_DATA_ITEM *DataItem; + IP6_SERVICE *IpSb; + EFI_STATUS Status; + EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; + IP6_CONFIG_DATA_ITEM *DataItem; IpSb = NULL; Ip6Cfg = NULL; @@ -544,7 +545,7 @@ Ip6DriverBindingStart ( ASSERT (IpSb != NULL); - Ip6Cfg = &IpSb->Ip6ConfigInstance.Ip6Config; + Ip6Cfg = &IpSb->Ip6ConfigInstance.Ip6Config; // // Install the Ip6ServiceBinding Protocol onto ControllerHandle @@ -581,7 +582,7 @@ Ip6DriverBindingStart ( DataItem->DataSize, DataItem->Data.Ptr ); - if (Status == EFI_INVALID_PARAMETER || Status == EFI_BAD_BUFFER_SIZE) { + if ((Status == EFI_INVALID_PARAMETER) || (Status == EFI_BAD_BUFFER_SIZE)) { // // Clean the invalid ManualAddress configuration. // @@ -606,7 +607,7 @@ Ip6DriverBindingStart ( DataItem->DataSize, DataItem->Data.Ptr ); - if (Status == EFI_INVALID_PARAMETER || Status == EFI_BAD_BUFFER_SIZE) { + if ((Status == EFI_INVALID_PARAMETER) || (Status == EFI_BAD_BUFFER_SIZE)) { // // Clean the invalid Gateway configuration. // @@ -688,8 +689,8 @@ FREE_SERVICE: EFI_STATUS EFIAPI Ip6DestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { IP6_PROTOCOL *IpInstance; @@ -697,14 +698,14 @@ Ip6DestroyChildEntryInHandleBuffer ( UINTN NumberOfChildren; EFI_HANDLE *ChildHandleBuffer; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - IpInstance = NET_LIST_USER_STRUCT_S (Entry, IP6_PROTOCOL, Link, IP6_PROTOCOL_SIGNATURE); - ServiceBinding = ((IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; - NumberOfChildren = ((IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; - ChildHandleBuffer = ((IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; + IpInstance = NET_LIST_USER_STRUCT_S (Entry, IP6_PROTOCOL, Link, IP6_PROTOCOL_SIGNATURE); + ServiceBinding = ((IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; + NumberOfChildren = ((IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; + ChildHandleBuffer = ((IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; if (!NetIsInHandleBuffer (IpInstance->Handle, NumberOfChildren, ChildHandleBuffer)) { return EFI_SUCCESS; @@ -736,14 +737,14 @@ Ip6DriverBindingStop ( IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ) { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - IP6_SERVICE *IpSb; - EFI_HANDLE NicHandle; - EFI_STATUS Status; - LIST_ENTRY *List; - INTN State; - BOOLEAN IsDhcp6; - IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + IP6_SERVICE *IpSb; + EFI_HANDLE NicHandle; + EFI_STATUS Status; + LIST_ENTRY *List; + INTN State; + BOOLEAN IsDhcp6; + IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; IsDhcp6 = FALSE; NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiManagedNetworkProtocolGuid); @@ -759,7 +760,7 @@ Ip6DriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiIp6ServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -778,18 +779,18 @@ Ip6DriverBindingStop ( // // NumberOfChildren is not zero, destroy the IP6 children instances in ChildHandleBuffer. // - List = &IpSb->Children; + List = &IpSb->Children; Context.ServiceBinding = ServiceBinding; Context.NumberOfChildren = NumberOfChildren; Context.ChildHandleBuffer = ChildHandleBuffer; - Status = NetDestroyLinkList ( - List, - Ip6DestroyChildEntryInHandleBuffer, - &Context, - NULL - ); + Status = NetDestroyLinkList ( + List, + Ip6DestroyChildEntryInHandleBuffer, + &Context, + NULL + ); } else if (IsListEmpty (&IpSb->Children)) { - State = IpSb->State; + State = IpSb->State; Status = Ip6CleanService (IpSb); if (EFI_ERROR (Status)) { IpSb->State = State; @@ -813,7 +814,6 @@ Exit: return Status; } - /** Creates a child handle with a set of I/O services. @@ -836,17 +836,17 @@ Ip6ServiceBindingCreateChild ( IN EFI_HANDLE *ChildHandle ) { - IP6_SERVICE *IpSb; - IP6_PROTOCOL *IpInstance; - EFI_TPL OldTpl; - EFI_STATUS Status; - VOID *Mnp; + IP6_SERVICE *IpSb; + IP6_PROTOCOL *IpInstance; + EFI_TPL OldTpl; + EFI_STATUS Status; + VOID *Mnp; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; } - IpSb = IP6_SERVICE_FROM_PROTOCOL (This); + IpSb = IP6_SERVICE_FROM_PROTOCOL (This); if (IpSb->LinkLocalDadFail) { return EFI_DEVICE_ERROR; @@ -881,7 +881,7 @@ Ip6ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( IpSb->MnpChildHandle, &gEfiManagedNetworkProtocolGuid, - (VOID **) &Mnp, + (VOID **)&Mnp, gIp6DriverBinding.DriverBindingHandle, IpInstance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -910,7 +910,6 @@ Ip6ServiceBindingCreateChild ( ON_ERROR: if (EFI_ERROR (Status)) { - Ip6CleanProtocol (IpInstance); FreePool (IpInstance); @@ -942,11 +941,11 @@ Ip6ServiceBindingDestroyChild ( IN EFI_HANDLE ChildHandle ) { - EFI_STATUS Status; - IP6_SERVICE *IpSb; - IP6_PROTOCOL *IpInstance; - EFI_IP6_PROTOCOL *Ip6; - EFI_TPL OldTpl; + EFI_STATUS Status; + IP6_SERVICE *IpSb; + IP6_PROTOCOL *IpInstance; + EFI_IP6_PROTOCOL *Ip6; + EFI_TPL OldTpl; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -955,12 +954,12 @@ Ip6ServiceBindingDestroyChild ( // // Retrieve the private context data structures // - IpSb = IP6_SERVICE_FROM_PROTOCOL (This); + IpSb = IP6_SERVICE_FROM_PROTOCOL (This); Status = gBS->OpenProtocol ( ChildHandle, &gEfiIp6ProtocolGuid, - (VOID **) &Ip6, + (VOID **)&Ip6, gIp6DriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL diff --git a/NetworkPkg/Ip6Dxe/Ip6Driver.h b/NetworkPkg/Ip6Dxe/Ip6Driver.h index 007f687c6e..996dbe4f7a 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Driver.h +++ b/NetworkPkg/Ip6Dxe/Ip6Driver.h @@ -10,16 +10,16 @@ #ifndef __EFI_IP6_DRIVER_H__ #define __EFI_IP6_DRIVER_H__ -extern EFI_DRIVER_BINDING_PROTOCOL gIp6DriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gIp6ComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gIp6ComponentName2; -extern EFI_UNICODE_STRING_TABLE *gIp6ControllerNameTable; +extern EFI_DRIVER_BINDING_PROTOCOL gIp6DriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gIp6ComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gIp6ComponentName2; +extern EFI_UNICODE_STRING_TABLE *gIp6ControllerNameTable; typedef struct { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - UINTN NumberOfChildren; - EFI_HANDLE *ChildHandleBuffer; -}IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; +} IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; /** Clean up an IP6 service binding instance. It releases all @@ -36,7 +36,7 @@ typedef struct { **/ EFI_STATUS Ip6CleanService ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ); // @@ -61,8 +61,8 @@ Ip6CleanService ( EFI_STATUS EFIAPI Ip6DriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ); // diff --git a/NetworkPkg/Ip6Dxe/Ip6Icmp.c b/NetworkPkg/Ip6Dxe/Ip6Icmp.c index d43121e4cb..a0e4d25db7 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Icmp.c +++ b/NetworkPkg/Ip6Dxe/Ip6Icmp.c @@ -10,8 +10,7 @@ #include "Ip6Impl.h" -EFI_IP6_ICMP_TYPE mIp6SupportedIcmp[23] = { - +EFI_IP6_ICMP_TYPE mIp6SupportedIcmp[23] = { { ICMP_V6_DEST_UNREACHABLE, ICMP_V6_NO_ROUTE_TO_DEST @@ -127,15 +126,15 @@ EFI_IP6_ICMP_TYPE mIp6SupportedIcmp[23] = { **/ EFI_STATUS Ip6IcmpReplyEcho ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_ICMP_INFORMATION_HEAD *Icmp; - NET_BUF *Data; - EFI_STATUS Status; - EFI_IP6_HEADER ReplyHead; + IP6_ICMP_INFORMATION_HEAD *Icmp; + NET_BUF *Data; + EFI_STATUS Status; + EFI_IP6_HEADER ReplyHead; Status = EFI_OUT_OF_RESOURCES; // @@ -153,7 +152,7 @@ Ip6IcmpReplyEcho ( // use specific destination. See RFC1122. SRR/RR option // update is omitted. // - Icmp = (IP6_ICMP_INFORMATION_HEAD *) NetbufGetByte (Data, 0, NULL); + Icmp = (IP6_ICMP_INFORMATION_HEAD *)NetbufGetByte (Data, 0, NULL); if (Icmp == NULL) { NetbufFree (Data); goto Exit; @@ -169,9 +168,9 @@ Ip6IcmpReplyEcho ( // ZeroMem (&ReplyHead, sizeof (EFI_IP6_HEADER)); - ReplyHead.PayloadLength = HTONS ((UINT16) (Packet->TotalSize)); - ReplyHead.NextHeader = IP6_ICMP; - ReplyHead.HopLimit = IpSb->CurHopLimit; + ReplyHead.PayloadLength = HTONS ((UINT16)(Packet->TotalSize)); + ReplyHead.NextHeader = IP6_ICMP; + ReplyHead.HopLimit = IpSb->CurHopLimit; IP6_COPY_ADDRESS (&ReplyHead.DestinationAddress, &Head->SourceAddress); if (Ip6IsOneOfSetAddress (IpSb, &Head->DestinationAddress, NULL, NULL)) { @@ -218,17 +217,17 @@ Exit: **/ EFI_STATUS Ip6ProcessPacketTooBig ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_ICMP_ERROR_HEAD Icmp; - UINT32 Mtu; - IP6_ROUTE_ENTRY *RouteEntry; - EFI_IPv6_ADDRESS *DestAddress; + IP6_ICMP_ERROR_HEAD Icmp; + UINT32 Mtu; + IP6_ROUTE_ENTRY *RouteEntry; + EFI_IPv6_ADDRESS *DestAddress; - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); Mtu = NTOHL (Icmp.Fourth); DestAddress = &Icmp.IpHead.DestinationAddress; @@ -280,12 +279,12 @@ Ip6ProcessPacketTooBig ( **/ EFI_STATUS Ip6ProcessIcmpError ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_ICMP_ERROR_HEAD Icmp; + IP6_ICMP_ERROR_HEAD Icmp; // // Check the validity of the packet @@ -294,7 +293,7 @@ Ip6ProcessIcmpError ( goto DROP; } - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); if (Icmp.Head.Type == ICMP_V6_PACKET_TOO_BIG) { return Ip6ProcessPacketTooBig (IpSb, Head, Packet); } @@ -329,55 +328,56 @@ DROP: **/ EFI_STATUS Ip6ProcessIcmpInformation ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_ICMP_INFORMATION_HEAD Icmp; - EFI_STATUS Status; + IP6_ICMP_INFORMATION_HEAD Icmp; + EFI_STATUS Status; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); NET_CHECK_SIGNATURE (Packet, NET_BUF_SIGNATURE); ASSERT (Head != NULL); - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); Status = EFI_INVALID_PARAMETER; switch (Icmp.Head.Type) { - case ICMP_V6_ECHO_REQUEST: - // - // If ICMPv6 echo, reply it - // - if (Icmp.Head.Code == 0) { - Status = Ip6IcmpReplyEcho (IpSb, Head, Packet); - } - break; - case ICMP_V6_LISTENER_QUERY: - Status = Ip6ProcessMldQuery (IpSb, Head, Packet); - break; - case ICMP_V6_LISTENER_REPORT: - case ICMP_V6_LISTENER_REPORT_2: - Status = Ip6ProcessMldReport (IpSb, Head, Packet); - break; - case ICMP_V6_NEIGHBOR_SOLICIT: - Status = Ip6ProcessNeighborSolicit (IpSb, Head, Packet); - break; - case ICMP_V6_NEIGHBOR_ADVERTISE: - Status = Ip6ProcessNeighborAdvertise (IpSb, Head, Packet); - break; - case ICMP_V6_ROUTER_ADVERTISE: - Status = Ip6ProcessRouterAdvertise (IpSb, Head, Packet); - break; - case ICMP_V6_REDIRECT: - Status = Ip6ProcessRedirect (IpSb, Head, Packet); - break; - case ICMP_V6_ECHO_REPLY: - Status = Ip6Demultiplex (IpSb, Head, Packet); - break; - default: - Status = EFI_INVALID_PARAMETER; - break; + case ICMP_V6_ECHO_REQUEST: + // + // If ICMPv6 echo, reply it + // + if (Icmp.Head.Code == 0) { + Status = Ip6IcmpReplyEcho (IpSb, Head, Packet); + } + + break; + case ICMP_V6_LISTENER_QUERY: + Status = Ip6ProcessMldQuery (IpSb, Head, Packet); + break; + case ICMP_V6_LISTENER_REPORT: + case ICMP_V6_LISTENER_REPORT_2: + Status = Ip6ProcessMldReport (IpSb, Head, Packet); + break; + case ICMP_V6_NEIGHBOR_SOLICIT: + Status = Ip6ProcessNeighborSolicit (IpSb, Head, Packet); + break; + case ICMP_V6_NEIGHBOR_ADVERTISE: + Status = Ip6ProcessNeighborAdvertise (IpSb, Head, Packet); + break; + case ICMP_V6_ROUTER_ADVERTISE: + Status = Ip6ProcessRouterAdvertise (IpSb, Head, Packet); + break; + case ICMP_V6_REDIRECT: + Status = Ip6ProcessRedirect (IpSb, Head, Packet); + break; + case ICMP_V6_ECHO_REPLY: + Status = Ip6Demultiplex (IpSb, Head, Packet); + break; + default: + Status = EFI_INVALID_PARAMETER; + break; } return Status; @@ -400,14 +400,14 @@ Ip6ProcessIcmpInformation ( **/ EFI_STATUS Ip6IcmpHandle ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_ICMP_HEAD Icmp; - UINT16 PseudoCheckSum; - UINT16 CheckSum; + IP6_ICMP_HEAD Icmp; + UINT16 PseudoCheckSum; + UINT16 CheckSum; // // Check the validity of the incoming packet. @@ -416,7 +416,7 @@ Ip6IcmpHandle ( goto DROP; } - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); // // Make sure checksum is valid. @@ -458,28 +458,28 @@ DROP: **/ VOID Ip6GetPrefix ( - IN UINT8 PrefixLength, - IN OUT EFI_IPv6_ADDRESS *Prefix + IN UINT8 PrefixLength, + IN OUT EFI_IPv6_ADDRESS *Prefix ) { - UINT8 Byte; - UINT8 Bit; - UINT8 Mask; - UINT8 Value; + UINT8 Byte; + UINT8 Bit; + UINT8 Mask; + UINT8 Value; ASSERT ((Prefix != NULL) && (PrefixLength < IP6_PREFIX_MAX)); if (PrefixLength == 0) { ZeroMem (Prefix, sizeof (EFI_IPv6_ADDRESS)); - return ; + return; } if (PrefixLength >= IP6_PREFIX_MAX) { - return ; + return; } - Byte = (UINT8) (PrefixLength / 8); - Bit = (UINT8) (PrefixLength % 8); + Byte = (UINT8)(PrefixLength / 8); + Bit = (UINT8)(PrefixLength % 8); Value = Prefix->Addr[Byte]; if (Byte > 0) { @@ -487,10 +487,9 @@ Ip6GetPrefix ( } if (Bit > 0) { - Mask = (UINT8) (0xFF << (8 - Bit)); - Prefix->Addr[Byte] = (UINT8) (Value & Mask); + Mask = (UINT8)(0xFF << (8 - Bit)); + Prefix->Addr[Byte] = (UINT8)(Value & Mask); } - } /** @@ -505,13 +504,13 @@ Ip6GetPrefix ( **/ BOOLEAN Ip6IsAnycast ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *DestinationAddress + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *DestinationAddress ) { - IP6_PREFIX_LIST_ENTRY *PrefixEntry; - EFI_IPv6_ADDRESS Prefix; - BOOLEAN Flag; + IP6_PREFIX_LIST_ENTRY *PrefixEntry; + EFI_IPv6_ADDRESS Prefix; + BOOLEAN Flag; ZeroMem (&Prefix, sizeof (EFI_IPv6_ADDRESS)); @@ -563,21 +562,21 @@ Ip6IsAnycast ( **/ EFI_STATUS Ip6SendIcmpError ( - IN IP6_SERVICE *IpSb, - IN NET_BUF *Packet, - IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, - IN EFI_IPv6_ADDRESS *DestinationAddress, - IN UINT8 Type, - IN UINT8 Code, - IN UINT32 *Pointer OPTIONAL + IN IP6_SERVICE *IpSb, + IN NET_BUF *Packet, + IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, + IN EFI_IPv6_ADDRESS *DestinationAddress, + IN UINT8 Type, + IN UINT8 Code, + IN UINT32 *Pointer OPTIONAL ) { - UINT32 PacketLen; - NET_BUF *ErrorMsg; - UINT16 PayloadLen; - EFI_IP6_HEADER Head; - IP6_ICMP_INFORMATION_HEAD *IcmpHead; - UINT8 *ErrorBody; + UINT32 PacketLen; + NET_BUF *ErrorMsg; + UINT16 PayloadLen; + EFI_IP6_HEADER Head; + IP6_ICMP_INFORMATION_HEAD *IcmpHead; + UINT8 *ErrorBody; if (DestinationAddress == NULL) { return EFI_INVALID_PARAMETER; @@ -592,24 +591,25 @@ Ip6SendIcmpError ( if (NetIp6IsUnspecifiedAddr (DestinationAddress) || IP6_IS_MULTICAST (DestinationAddress) || Ip6IsAnycast (IpSb, DestinationAddress) - ) { + ) + { return EFI_INVALID_PARAMETER; } switch (Type) { - case ICMP_V6_DEST_UNREACHABLE: - case ICMP_V6_TIME_EXCEEDED: - break; + case ICMP_V6_DEST_UNREACHABLE: + case ICMP_V6_TIME_EXCEEDED: + break; - case ICMP_V6_PARAMETER_PROBLEM: - if (Pointer == NULL) { - return EFI_INVALID_PARAMETER; - } + case ICMP_V6_PARAMETER_PROBLEM: + if (Pointer == NULL) { + return EFI_INVALID_PARAMETER; + } - break; + break; - default: - return EFI_INVALID_PARAMETER; + default: + return EFI_INVALID_PARAMETER; } PacketLen = sizeof (IP6_ICMP_ERROR_HEAD) + Packet->TotalSize; @@ -623,16 +623,16 @@ Ip6SendIcmpError ( return EFI_OUT_OF_RESOURCES; } - PayloadLen = (UINT16) (PacketLen - sizeof (EFI_IP6_HEADER)); + PayloadLen = (UINT16)(PacketLen - sizeof (EFI_IP6_HEADER)); // // Create the basic IPv6 header. // ZeroMem (&Head, sizeof (EFI_IP6_HEADER)); - Head.PayloadLength = HTONS (PayloadLen); - Head.NextHeader = IP6_ICMP; - Head.HopLimit = IpSb->CurHopLimit; + Head.PayloadLength = HTONS (PayloadLen); + Head.NextHeader = IP6_ICMP; + Head.HopLimit = IpSb->CurHopLimit; if (SourceAddress != NULL) { IP6_COPY_ADDRESS (&Head.SourceAddress, SourceAddress); @@ -647,7 +647,7 @@ Ip6SendIcmpError ( // // Fill in the ICMP error message head // - IcmpHead = (IP6_ICMP_INFORMATION_HEAD *) NetbufAllocSpace (ErrorMsg, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); + IcmpHead = (IP6_ICMP_INFORMATION_HEAD *)NetbufAllocSpace (ErrorMsg, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); if (IcmpHead == NULL) { NetbufFree (ErrorMsg); return EFI_OUT_OF_RESOURCES; @@ -665,7 +665,7 @@ Ip6SendIcmpError ( // Fill in the ICMP error message body // PayloadLen -= sizeof (IP6_ICMP_INFORMATION_HEAD); - ErrorBody = NetbufAllocSpace (ErrorMsg, PayloadLen, FALSE); + ErrorBody = NetbufAllocSpace (ErrorMsg, PayloadLen, FALSE); if (ErrorBody != NULL) { ZeroMem (ErrorBody, PayloadLen); NetbufCopy (Packet, 0, PayloadLen, ErrorBody); @@ -676,4 +676,3 @@ Ip6SendIcmpError ( // return Ip6Output (IpSb, NULL, NULL, ErrorMsg, &Head, NULL, 0, Ip6SysPacketSent, NULL); } - diff --git a/NetworkPkg/Ip6Dxe/Ip6Icmp.h b/NetworkPkg/Ip6Dxe/Ip6Icmp.h index c63adb0095..09a06ac6df 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Icmp.h +++ b/NetworkPkg/Ip6Dxe/Ip6Icmp.h @@ -10,18 +10,17 @@ #ifndef __EFI_IP6_ICMP_H__ #define __EFI_IP6_ICMP_H__ -#define ICMP_V6_DEFAULT_CODE 0 +#define ICMP_V6_DEFAULT_CODE 0 -#define ICMP_V6_ERROR_MAX 127 +#define ICMP_V6_ERROR_MAX 127 // // ICMPv6 message classes, each class of ICMPv6 message shares // a common message format. INVALID_MESSAGE is only a flag. // -#define ICMP_V6_INVALID_MESSAGE 0 -#define ICMP_V6_ERROR_MESSAGE 1 -#define ICMP_V6_INFORMATION_MESSAGE 2 - +#define ICMP_V6_INVALID_MESSAGE 0 +#define ICMP_V6_ERROR_MESSAGE 1 +#define ICMP_V6_INFORMATION_MESSAGE 2 extern EFI_IP6_ICMP_TYPE mIp6SupportedIcmp[]; @@ -42,9 +41,9 @@ extern EFI_IP6_ICMP_TYPE mIp6SupportedIcmp[]; **/ EFI_STATUS Ip6IcmpHandle ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -59,8 +58,8 @@ Ip6IcmpHandle ( **/ BOOLEAN Ip6IsAnycast ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *DestinationAddress + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *DestinationAddress ); /** @@ -89,14 +88,13 @@ Ip6IsAnycast ( **/ EFI_STATUS Ip6SendIcmpError ( - IN IP6_SERVICE *IpSb, - IN NET_BUF *Packet, - IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, - IN EFI_IPv6_ADDRESS *DestinationAddress, - IN UINT8 Type, - IN UINT8 Code, - IN UINT32 *Pointer OPTIONAL + IN IP6_SERVICE *IpSb, + IN NET_BUF *Packet, + IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, + IN EFI_IPv6_ADDRESS *DestinationAddress, + IN UINT8 Type, + IN UINT8 Code, + IN UINT32 *Pointer OPTIONAL ); #endif - diff --git a/NetworkPkg/Ip6Dxe/Ip6If.c b/NetworkPkg/Ip6Dxe/Ip6If.c index 5b46971057..4629c05f25 100644 --- a/NetworkPkg/Ip6Dxe/Ip6If.c +++ b/NetworkPkg/Ip6Dxe/Ip6If.c @@ -19,8 +19,8 @@ VOID EFIAPI Ip6OnFrameSent ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -37,11 +37,11 @@ Ip6OnFrameSent ( **/ BOOLEAN Ip6CancelInstanceFrame ( - IN IP6_LINK_TX_TOKEN *Frame, - IN VOID *Context + IN IP6_LINK_TX_TOKEN *Frame, + IN VOID *Context ) { - if (Frame->IpInstance == (IP6_PROTOCOL *) Context) { + if (Frame->IpInstance == (IP6_PROTOCOL *)Context) { return TRUE; } @@ -73,14 +73,14 @@ Ip6CancelInstanceFrame ( **/ EFI_STATUS Ip6SetAddress ( - IN IP6_INTERFACE *Interface, - IN EFI_IPv6_ADDRESS *Ip6Addr, - IN BOOLEAN IsAnycast, - IN UINT8 PrefixLength, - IN UINT32 ValidLifetime, - IN UINT32 PreferredLifetime, - IN IP6_DAD_CALLBACK DadCallback OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_INTERFACE *Interface, + IN EFI_IPv6_ADDRESS *Ip6Addr, + IN BOOLEAN IsAnycast, + IN UINT8 PrefixLength, + IN UINT32 ValidLifetime, + IN UINT32 PreferredLifetime, + IN IP6_DAD_CALLBACK DadCallback OPTIONAL, + IN VOID *Context OPTIONAL ) { IP6_SERVICE *IpSb; @@ -109,12 +109,12 @@ Ip6SetAddress ( return EFI_SUCCESS; } - AddressInfo = (IP6_ADDRESS_INFO *) AllocatePool (sizeof (IP6_ADDRESS_INFO)); + AddressInfo = (IP6_ADDRESS_INFO *)AllocatePool (sizeof (IP6_ADDRESS_INFO)); if (AddressInfo == NULL) { return EFI_OUT_OF_RESOURCES; } - AddressInfo->Signature = IP6_ADDR_INFO_SIGNATURE; + AddressInfo->Signature = IP6_ADDR_INFO_SIGNATURE; IP6_COPY_ADDRESS (&AddressInfo->Address, Ip6Addr); AddressInfo->IsAnycast = IsAnycast; AddressInfo->PrefixLength = PrefixLength; @@ -158,24 +158,23 @@ Ip6SetAddress ( AddressInfo->PrefixLength = IP6_LINK_LOCAL_PREFIX_LENGTH; } - // // Node should delay joining the solicited-node multicast address by a random delay // between 0 and MAX_RTR_SOLICITATION_DELAY (1 second). // Thus queue the address to be processed in Duplicate Address Detection module // after the delay time (in milliseconds). // - Delay = (UINT64) NET_RANDOM (NetRandomInitSeed ()); + Delay = (UINT64)NET_RANDOM (NetRandomInitSeed ()); Delay = MultU64x32 (Delay, IP6_ONE_SECOND_IN_MS); Delay = RShiftU64 (Delay, 32); - DelayNode = (IP6_DELAY_JOIN_LIST *) AllocatePool (sizeof (IP6_DELAY_JOIN_LIST)); + DelayNode = (IP6_DELAY_JOIN_LIST *)AllocatePool (sizeof (IP6_DELAY_JOIN_LIST)); if (DelayNode == NULL) { FreePool (AddressInfo); return EFI_OUT_OF_RESOURCES; } - DelayNode->DelayTime = (UINT32) (DivU64x32 (Delay, IP6_TIMER_INTERVAL_IN_MS)); + DelayNode->DelayTime = (UINT32)(DivU64x32 (Delay, IP6_TIMER_INTERVAL_IN_MS)); DelayNode->Interface = Interface; DelayNode->AddressInfo = AddressInfo; DelayNode->DadCallback = DadCallback; @@ -197,13 +196,13 @@ Ip6SetAddress ( **/ IP6_INTERFACE * Ip6CreateInterface ( - IN IP6_SERVICE *IpSb, - IN BOOLEAN LinkLocal + IN IP6_SERVICE *IpSb, + IN BOOLEAN LinkLocal ) { - EFI_STATUS Status; - IP6_INTERFACE *Interface; - EFI_IPv6_ADDRESS *Ip6Addr; + EFI_STATUS Status; + IP6_INTERFACE *Interface; + EFI_IPv6_ADDRESS *Ip6Addr; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); @@ -212,27 +211,27 @@ Ip6CreateInterface ( return NULL; } - Interface->Signature = IP6_INTERFACE_SIGNATURE; - Interface->RefCnt = 1; + Interface->Signature = IP6_INTERFACE_SIGNATURE; + Interface->RefCnt = 1; InitializeListHead (&Interface->AddressList); - Interface->AddressCount = 0; - Interface->Configured = FALSE; + Interface->AddressCount = 0; + Interface->Configured = FALSE; - Interface->Service = IpSb; - Interface->Controller = IpSb->Controller; - Interface->Image = IpSb->Image; + Interface->Service = IpSb; + Interface->Controller = IpSb->Controller; + Interface->Image = IpSb->Image; InitializeListHead (&Interface->ArpQues); InitializeListHead (&Interface->SentFrames); - Interface->DupAddrDetect = IpSb->Ip6ConfigInstance.DadXmits.DupAddrDetectTransmits; + Interface->DupAddrDetect = IpSb->Ip6ConfigInstance.DadXmits.DupAddrDetectTransmits; InitializeListHead (&Interface->DupAddrDetectList); InitializeListHead (&Interface->DelayJoinList); InitializeListHead (&Interface->IpInstances); - Interface->PromiscRecv = FALSE; + Interface->PromiscRecv = FALSE; if (!LinkLocal) { return Interface; @@ -254,8 +253,8 @@ Ip6CreateInterface ( Ip6Addr, FALSE, IP6_LINK_LOCAL_PREFIX_LENGTH, - (UINT32) IP6_INFINIT_LIFETIME, - (UINT32) IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, NULL, NULL ); @@ -288,12 +287,12 @@ ON_ERROR: **/ VOID Ip6CleanInterface ( - IN IP6_INTERFACE *Interface, - IN IP6_PROTOCOL *IpInstance OPTIONAL + IN IP6_INTERFACE *Interface, + IN IP6_PROTOCOL *IpInstance OPTIONAL ) { - IP6_DAD_ENTRY *Duplicate; - IP6_DELAY_JOIN_LIST *Delay; + IP6_DAD_ENTRY *Duplicate; + IP6_DELAY_JOIN_LIST *Delay; NET_CHECK_SIGNATURE (Interface, IP6_INTERFACE_SIGNATURE); ASSERT (Interface->RefCnt > 0); @@ -352,11 +351,11 @@ Ip6CleanInterface ( **/ IP6_LINK_TX_TOKEN * Ip6CreateLinkTxToken ( - IN IP6_INTERFACE *Interface, - IN IP6_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN IP6_FRAME_CALLBACK CallBack, - IN VOID *Context + IN IP6_INTERFACE *Interface, + IN IP6_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN IP6_FRAME_CALLBACK CallBack, + IN VOID *Context ) { EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken; @@ -381,8 +380,8 @@ Ip6CreateLinkTxToken ( ZeroMem (&Token->DstMac, sizeof (EFI_MAC_ADDRESS)); IP6_COPY_LINK_ADDRESS (&Token->SrcMac, &Interface->Service->SnpMode.CurrentAddress); - MnpToken = &(Token->MnpToken); - MnpToken->Status = EFI_NOT_READY; + MnpToken = &(Token->MnpToken); + MnpToken->Status = EFI_NOT_READY; Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, @@ -397,8 +396,8 @@ Ip6CreateLinkTxToken ( return NULL; } - MnpTxData = &Token->MnpTxData; - MnpToken->Packet.TxData = MnpTxData; + MnpTxData = &Token->MnpTxData; + MnpToken->Packet.TxData = MnpTxData; MnpTxData->DestinationAddress = &Token->DstMac; MnpTxData->SourceAddress = &Token->SrcMac; @@ -406,10 +405,10 @@ Ip6CreateLinkTxToken ( MnpTxData->DataLength = Packet->TotalSize; MnpTxData->HeaderLength = 0; - Count = Packet->BlockOpNum; + Count = Packet->BlockOpNum; - NetbufBuildExt (Packet, (NET_FRAGMENT *) MnpTxData->FragmentTable, &Count); - MnpTxData->FragmentCount = (UINT16)Count; + NetbufBuildExt (Packet, (NET_FRAGMENT *)MnpTxData->FragmentTable, &Count); + MnpTxData->FragmentCount = (UINT16)Count; return Token; } @@ -423,7 +422,7 @@ Ip6CreateLinkTxToken ( **/ VOID Ip6FreeLinkTxToken ( - IN IP6_LINK_TX_TOKEN *Token + IN IP6_LINK_TX_TOKEN *Token ) { NET_CHECK_SIGNATURE (Token, IP6_LINK_TX_SIGNATURE); @@ -442,12 +441,12 @@ Ip6FreeLinkTxToken ( VOID EFIAPI Ip6RecycleFrame ( - IN VOID *Context + IN VOID *Context ) { EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData; - RxData = (EFI_MANAGED_NETWORK_RECEIVE_DATA *) Context; + RxData = (EFI_MANAGED_NETWORK_RECEIVE_DATA *)Context; gBS->SignalEvent (RxData->RecycleEvent); } @@ -466,7 +465,7 @@ Ip6RecycleFrame ( VOID EFIAPI Ip6OnFrameReceivedDpc ( - IN VOID *Context + IN VOID *Context ) { EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken; @@ -477,23 +476,22 @@ Ip6OnFrameReceivedDpc ( UINT32 Flag; IP6_SERVICE *IpSb; - Token = (IP6_LINK_RX_TOKEN *) Context; + Token = (IP6_LINK_RX_TOKEN *)Context; NET_CHECK_SIGNATURE (Token, IP6_LINK_RX_SIGNATURE); // // First clear the interface's receive request in case the // caller wants to call Ip6ReceiveFrame in the callback. // - IpSb = (IP6_SERVICE *) Token->Context; + IpSb = (IP6_SERVICE *)Token->Context; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); - MnpToken = &Token->MnpToken; MnpRxData = MnpToken->Packet.RxData; if (EFI_ERROR (MnpToken->Status) || (MnpRxData == NULL)) { Token->CallBack (NULL, MnpToken->Status, 0, Token->Context); - return ; + return; } // @@ -510,7 +508,7 @@ Ip6OnFrameReceivedDpc ( Token->CallBack (NULL, EFI_OUT_OF_RESOURCES, 0, Token->Context); - return ; + return; } Flag = (MnpRxData->BroadcastFlag ? IP6_LINK_BROADCAST : 0); @@ -530,8 +528,8 @@ Ip6OnFrameReceivedDpc ( VOID EFIAPI Ip6OnFrameReceived ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -553,18 +551,18 @@ Ip6OnFrameReceived ( **/ EFI_STATUS Ip6ReceiveFrame ( - IN IP6_FRAME_CALLBACK CallBack, - IN IP6_SERVICE *IpSb + IN IP6_FRAME_CALLBACK CallBack, + IN IP6_SERVICE *IpSb ) { - EFI_STATUS Status; - IP6_LINK_RX_TOKEN *Token; + EFI_STATUS Status; + IP6_LINK_RX_TOKEN *Token; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); Token = &IpSb->RecvRequest; Token->CallBack = CallBack; - Token->Context = (VOID *) IpSb; + Token->Context = (VOID *)IpSb; Status = IpSb->Mnp->Receive (IpSb->Mnp, &Token->MnpToken); if (EFI_ERROR (Status)) { @@ -584,22 +582,22 @@ Ip6ReceiveFrame ( VOID EFIAPI Ip6OnFrameSentDpc ( - IN VOID *Context + IN VOID *Context ) { - IP6_LINK_TX_TOKEN *Token; + IP6_LINK_TX_TOKEN *Token; - Token = (IP6_LINK_TX_TOKEN *) Context; + Token = (IP6_LINK_TX_TOKEN *)Context; NET_CHECK_SIGNATURE (Token, IP6_LINK_TX_SIGNATURE); RemoveEntryList (&Token->Link); Token->CallBack ( - Token->Packet, - Token->MnpToken.Status, - 0, - Token->Context - ); + Token->Packet, + Token->MnpToken.Status, + 0, + Token->Context + ); Ip6FreeLinkTxToken (Token); } @@ -614,8 +612,8 @@ Ip6OnFrameSentDpc ( VOID EFIAPI Ip6OnFrameSent ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -646,20 +644,20 @@ Ip6OnFrameSent ( **/ EFI_STATUS Ip6SendFrame ( - IN IP6_INTERFACE *Interface, - IN IP6_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN EFI_IPv6_ADDRESS *NextHop, - IN IP6_FRAME_CALLBACK CallBack, - IN VOID *Context + IN IP6_INTERFACE *Interface, + IN IP6_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN EFI_IPv6_ADDRESS *NextHop, + IN IP6_FRAME_CALLBACK CallBack, + IN VOID *Context ) { - IP6_SERVICE *IpSb; - IP6_LINK_TX_TOKEN *Token; - EFI_STATUS Status; - IP6_NEIGHBOR_ENTRY *NeighborCache; - LIST_ENTRY *Entry; - IP6_NEIGHBOR_ENTRY *ArpQue; + IP6_SERVICE *IpSb; + IP6_LINK_TX_TOKEN *Token; + EFI_STATUS Status; + IP6_NEIGHBOR_ENTRY *NeighborCache; + LIST_ENTRY *Entry; + IP6_NEIGHBOR_ENTRY *ArpQue; IpSb = Interface->Service; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); @@ -706,21 +704,21 @@ Ip6SendFrame ( } switch (NeighborCache->State) { - case EfiNeighborStale: - NeighborCache->State = EfiNeighborDelay; - NeighborCache->Ticks = (UINT32) IP6_GET_TICKS (IP6_DELAY_FIRST_PROBE_TIME); + case EfiNeighborStale: + NeighborCache->State = EfiNeighborDelay; + NeighborCache->Ticks = (UINT32)IP6_GET_TICKS (IP6_DELAY_FIRST_PROBE_TIME); // // Fall through // - case EfiNeighborReachable: - case EfiNeighborDelay: - case EfiNeighborProbe: - IP6_COPY_LINK_ADDRESS (&Token->DstMac, &NeighborCache->LinkAddress); - goto SendNow; - break; - - default: - break; + case EfiNeighborReachable: + case EfiNeighborDelay: + case EfiNeighborProbe: + IP6_COPY_LINK_ADDRESS (&Token->DstMac, &NeighborCache->LinkAddress); + goto SendNow; + break; + + default: + break; } // @@ -747,7 +745,7 @@ Ip6SendFrame ( return EFI_SUCCESS; SendNow: - // + // // Insert the tx token into the SentFrames list before calling Mnp->Transmit. // Remove it if the returned status is not EFI_SUCCESS. // @@ -777,13 +775,13 @@ Error: VOID EFIAPI Ip6TimerTicking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - IP6_SERVICE *IpSb; + IP6_SERVICE *IpSb; - IpSb = (IP6_SERVICE *) Context; + IpSb = (IP6_SERVICE *)Context; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); Ip6PacketTimerTicking (IpSb); diff --git a/NetworkPkg/Ip6Dxe/Ip6If.h b/NetworkPkg/Ip6Dxe/Ip6If.h index ab43d8ea59..1f058e244e 100644 --- a/NetworkPkg/Ip6Dxe/Ip6If.h +++ b/NetworkPkg/Ip6Dxe/Ip6If.h @@ -10,10 +10,10 @@ #ifndef __EFI_IP6_IF_H__ #define __EFI_IP6_IF_H__ -#define IP6_LINK_RX_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'R') -#define IP6_LINK_TX_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'T') -#define IP6_INTERFACE_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'I') -#define IP6_ADDR_INFO_SIGNATURE SIGNATURE_32 ('I', 'P', 'A', 'I') +#define IP6_LINK_RX_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'R') +#define IP6_LINK_TX_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'T') +#define IP6_INTERFACE_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'I') +#define IP6_ADDR_INFO_SIGNATURE SIGNATURE_32 ('I', 'P', 'A', 'I') // // This prototype is used by both receive and transmission. @@ -33,10 +33,10 @@ typedef VOID (*IP6_FRAME_CALLBACK) ( - NET_BUF *Packet, - EFI_STATUS IoStatus, - UINT32 LinkFlag, - VOID *Context + NET_BUF *Packet, + EFI_STATUS IoStatus, + UINT32 LinkFlag, + VOID *Context ); // @@ -46,10 +46,10 @@ VOID // Reference MNP's spec for information. // typedef struct { - UINT32 Signature; - IP6_FRAME_CALLBACK CallBack; - VOID *Context; - EFI_MANAGED_NETWORK_COMPLETION_TOKEN MnpToken; + UINT32 Signature; + IP6_FRAME_CALLBACK CallBack; + VOID *Context; + EFI_MANAGED_NETWORK_COMPLETION_TOKEN MnpToken; } IP6_LINK_RX_TOKEN; // @@ -57,29 +57,29 @@ typedef struct { // Upon completion, the Callback will be called. // typedef struct { - UINT32 Signature; - LIST_ENTRY Link; + UINT32 Signature; + LIST_ENTRY Link; - IP6_PROTOCOL *IpInstance; - IP6_FRAME_CALLBACK CallBack; - NET_BUF *Packet; - VOID *Context; + IP6_PROTOCOL *IpInstance; + IP6_FRAME_CALLBACK CallBack; + NET_BUF *Packet; + VOID *Context; - EFI_MAC_ADDRESS DstMac; - EFI_MAC_ADDRESS SrcMac; + EFI_MAC_ADDRESS DstMac; + EFI_MAC_ADDRESS SrcMac; - EFI_MANAGED_NETWORK_COMPLETION_TOKEN MnpToken; - EFI_MANAGED_NETWORK_TRANSMIT_DATA MnpTxData; + EFI_MANAGED_NETWORK_COMPLETION_TOKEN MnpToken; + EFI_MANAGED_NETWORK_TRANSMIT_DATA MnpTxData; } IP6_LINK_TX_TOKEN; struct _IP6_ADDRESS_INFO { - UINT32 Signature; - LIST_ENTRY Link; - EFI_IPv6_ADDRESS Address; - BOOLEAN IsAnycast; - UINT8 PrefixLength; - UINT32 ValidLifetime; - UINT32 PreferredLifetime; + UINT32 Signature; + LIST_ENTRY Link; + EFI_IPv6_ADDRESS Address; + BOOLEAN IsAnycast; + UINT8 PrefixLength; + UINT32 ValidLifetime; + UINT32 PreferredLifetime; }; // @@ -89,50 +89,48 @@ struct _IP6_ADDRESS_INFO { typedef BOOLEAN (*IP6_FRAME_TO_CANCEL) ( - IP6_LINK_TX_TOKEN *Frame, - VOID *Context + IP6_LINK_TX_TOKEN *Frame, + VOID *Context ); struct _IP6_INTERFACE { - UINT32 Signature; - LIST_ENTRY Link; - INTN RefCnt; + UINT32 Signature; + LIST_ENTRY Link; + INTN RefCnt; // // IP address and prefix length of the interface. The fileds // are invalid if (Configured == FALSE) // - LIST_ENTRY AddressList; - UINT32 AddressCount; - BOOLEAN Configured; + LIST_ENTRY AddressList; + UINT32 AddressCount; + BOOLEAN Configured; - IP6_SERVICE *Service; - - EFI_HANDLE Controller; - EFI_HANDLE Image; + IP6_SERVICE *Service; + EFI_HANDLE Controller; + EFI_HANDLE Image; // // Queues to keep the frames sent and waiting ARP request. // - LIST_ENTRY ArpQues; - LIST_ENTRY SentFrames; - + LIST_ENTRY ArpQues; + LIST_ENTRY SentFrames; // // The interface's configuration variables // - UINT32 DupAddrDetect; - LIST_ENTRY DupAddrDetectList; - LIST_ENTRY DelayJoinList; + UINT32 DupAddrDetect; + LIST_ENTRY DupAddrDetectList; + LIST_ENTRY DelayJoinList; // // All the IP instances that have the same IP/SubnetMask are linked // together through IpInstances. If any of the instance enables // promiscuous receive, PromiscRecv is true. // - LIST_ENTRY IpInstances; - BOOLEAN PromiscRecv; + LIST_ENTRY IpInstances; + BOOLEAN PromiscRecv; }; /** @@ -147,8 +145,8 @@ struct _IP6_INTERFACE { **/ IP6_INTERFACE * Ip6CreateInterface ( - IN IP6_SERVICE *IpSb, - IN BOOLEAN LinkLocal + IN IP6_SERVICE *IpSb, + IN BOOLEAN LinkLocal ); /** @@ -165,8 +163,8 @@ Ip6CreateInterface ( **/ VOID Ip6CleanInterface ( - IN IP6_INTERFACE *Interface, - IN IP6_PROTOCOL *IpInstance OPTIONAL + IN IP6_INTERFACE *Interface, + IN IP6_PROTOCOL *IpInstance OPTIONAL ); /** @@ -178,7 +176,7 @@ Ip6CleanInterface ( **/ VOID Ip6FreeLinkTxToken ( - IN IP6_LINK_TX_TOKEN *Token + IN IP6_LINK_TX_TOKEN *Token ); /** @@ -191,8 +189,8 @@ Ip6FreeLinkTxToken ( VOID EFIAPI Ip6OnFrameReceived ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -208,8 +206,8 @@ Ip6OnFrameReceived ( **/ EFI_STATUS Ip6ReceiveFrame ( - IN IP6_FRAME_CALLBACK CallBack, - IN IP6_SERVICE *IpSb + IN IP6_FRAME_CALLBACK CallBack, + IN IP6_SERVICE *IpSb ); /** @@ -234,12 +232,12 @@ Ip6ReceiveFrame ( **/ EFI_STATUS Ip6SendFrame ( - IN IP6_INTERFACE *Interface, - IN IP6_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN EFI_IPv6_ADDRESS *NextHop, - IN IP6_FRAME_CALLBACK CallBack, - IN VOID *Context + IN IP6_INTERFACE *Interface, + IN IP6_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN EFI_IPv6_ADDRESS *NextHop, + IN IP6_FRAME_CALLBACK CallBack, + IN VOID *Context ); /** @@ -254,8 +252,8 @@ Ip6SendFrame ( VOID EFIAPI Ip6TimerTicking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); #endif diff --git a/NetworkPkg/Ip6Dxe/Ip6Impl.c b/NetworkPkg/Ip6Dxe/Ip6Impl.c index 826a5c252f..a4bfd0f9a3 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Impl.c +++ b/NetworkPkg/Ip6Dxe/Ip6Impl.c @@ -10,9 +10,9 @@ #include "Ip6Impl.h" -EFI_IPSEC2_PROTOCOL *mIpSec = NULL; +EFI_IPSEC2_PROTOCOL *mIpSec = NULL; -EFI_IP6_PROTOCOL mEfiIp6ProtocolTemplete = { +EFI_IP6_PROTOCOL mEfiIp6ProtocolTemplete = { EfiIp6GetModeData, EfiIp6Configure, EfiIp6Groups, @@ -44,18 +44,18 @@ EFI_IP6_PROTOCOL mEfiIp6ProtocolTemplete = { EFI_STATUS EFIAPI EfiIp6GetModeData ( - IN EFI_IP6_PROTOCOL *This, - OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + IN EFI_IP6_PROTOCOL *This, + OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, + OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, + OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL ) { - IP6_PROTOCOL *IpInstance; - IP6_SERVICE *IpSb; - IP6_INTERFACE *IpIf; - EFI_IP6_CONFIG_DATA *Config; - EFI_STATUS Status; - EFI_TPL OldTpl; + IP6_PROTOCOL *IpInstance; + IP6_SERVICE *IpSb; + IP6_INTERFACE *IpIf; + EFI_IP6_CONFIG_DATA *Config; + EFI_STATUS Status; + EFI_TPL OldTpl; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -75,25 +75,25 @@ EfiIp6GetModeData ( // IsStarted is "whether the EfiIp6Configure has been called". // IsConfigured is "whether the station address has been configured" // - Ip6ModeData->IsStarted = (BOOLEAN) (IpInstance->State == IP6_STATE_CONFIGED); + Ip6ModeData->IsStarted = (BOOLEAN)(IpInstance->State == IP6_STATE_CONFIGED); Ip6ModeData->MaxPacketSize = IpSb->MaxPacketSize; CopyMem (&Ip6ModeData->ConfigData, &IpInstance->ConfigData, sizeof (EFI_IP6_CONFIG_DATA)); - Ip6ModeData->IsConfigured = FALSE; + Ip6ModeData->IsConfigured = FALSE; - Ip6ModeData->AddressCount = 0; - Ip6ModeData->AddressList = NULL; + Ip6ModeData->AddressCount = 0; + Ip6ModeData->AddressList = NULL; - Ip6ModeData->GroupCount = IpInstance->GroupCount; - Ip6ModeData->GroupTable = NULL; + Ip6ModeData->GroupCount = IpInstance->GroupCount; + Ip6ModeData->GroupTable = NULL; - Ip6ModeData->RouteCount = 0; - Ip6ModeData->RouteTable = NULL; + Ip6ModeData->RouteCount = 0; + Ip6ModeData->RouteTable = NULL; Ip6ModeData->NeighborCount = 0; Ip6ModeData->NeighborCache = NULL; - Ip6ModeData->PrefixCount = 0; - Ip6ModeData->PrefixTable = NULL; + Ip6ModeData->PrefixCount = 0; + Ip6ModeData->PrefixTable = NULL; Ip6ModeData->IcmpTypeCount = 23; Ip6ModeData->IcmpTypeList = AllocateCopyPool ( @@ -160,6 +160,7 @@ EfiIp6GetModeData ( goto Error; } } + // // Return the neighbor cache entries // @@ -183,7 +184,6 @@ EfiIp6GetModeData ( if (EFI_ERROR (Status)) { goto Error; } - } } @@ -242,15 +242,16 @@ Exit: **/ BOOLEAN Ip6IsValidAddress ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Ip, - IN BOOLEAN Flag + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Ip, + IN BOOLEAN Flag ) { if (!NetIp6IsUnspecifiedAddr (Ip)) { - if (!NetIp6IsValidUnicast(Ip)) { + if (!NetIp6IsValidUnicast (Ip)) { return FALSE; } + if (Ip6IsOneOfSetAddress (IpSb, Ip, NULL, NULL)) { return Flag; } @@ -273,14 +274,14 @@ Ip6IsValidAddress ( **/ BOOLEAN Ip6IsIllegalProtocol ( - IN UINT8 Protocol + IN UINT8 Protocol ) { - if (Protocol == IP6_HOP_BY_HOP || Protocol == EFI_IP_PROTO_ICMP || Protocol == IP4_PROTO_IGMP) { + if ((Protocol == IP6_HOP_BY_HOP) || (Protocol == EFI_IP_PROTO_ICMP) || (Protocol == IP4_PROTO_IGMP)) { return TRUE; } - if (Protocol == 41 || Protocol == 43 || Protocol == 44 || Protocol == 59 || Protocol == 60 || Protocol == 124) { + if ((Protocol == 41) || (Protocol == 43) || (Protocol == 44) || (Protocol == 59) || (Protocol == 60) || (Protocol == 124)) { return TRUE; } @@ -296,8 +297,8 @@ Ip6IsIllegalProtocol ( **/ VOID Ip6InitProtocol ( - IN IP6_SERVICE *IpSb, - IN OUT IP6_PROTOCOL *IpInstance + IN IP6_SERVICE *IpSb, + IN OUT IP6_PROTOCOL *IpInstance ) { ASSERT ((IpSb != NULL) && (IpInstance != NULL)); @@ -310,8 +311,8 @@ Ip6InitProtocol ( IpInstance->GroupList = NULL; CopyMem (&IpInstance->Ip6Proto, &mEfiIp6ProtocolTemplete, sizeof (EFI_IP6_PROTOCOL)); - NetMapInit (&IpInstance->RxTokens); - NetMapInit (&IpInstance->TxTokens); + NetMapInit (&IpInstance->RxTokens); + NetMapInit (&IpInstance->TxTokens); InitializeListHead (&IpInstance->Received); InitializeListHead (&IpInstance->Delivered); @@ -340,19 +341,19 @@ Ip6InitProtocol ( **/ EFI_STATUS Ip6ConfigProtocol ( - IN OUT IP6_PROTOCOL *IpInstance, - IN EFI_IP6_CONFIG_DATA *Config + IN OUT IP6_PROTOCOL *IpInstance, + IN EFI_IP6_CONFIG_DATA *Config ) { - IP6_SERVICE *IpSb; - IP6_INTERFACE *IpIf; - EFI_STATUS Status; - EFI_IP6_CONFIG_DATA *Current; - IP6_ADDRESS_INFO *AddressInfo; - BOOLEAN StationZero; - BOOLEAN DestZero; - EFI_IPv6_ADDRESS Source; - BOOLEAN AddrOk; + IP6_SERVICE *IpSb; + IP6_INTERFACE *IpIf; + EFI_STATUS Status; + EFI_IP6_CONFIG_DATA *Current; + IP6_ADDRESS_INFO *AddressInfo; + BOOLEAN StationZero; + BOOLEAN DestZero; + EFI_IPv6_ADDRESS Source; + BOOLEAN AddrOk; IpSb = IpInstance->Service; Current = &IpInstance->ConfigData; @@ -419,7 +420,6 @@ Ip6ConfigProtocol ( return EFI_INVALID_PARAMETER; } - NET_GET_REF (IpIf); IpInstance->Interface = IpIf; InsertTailList (&IpIf->IpInstances, &IpInstance->AddrLink); @@ -442,7 +442,7 @@ Ip6ConfigProtocol ( **/ EFI_STATUS Ip6CleanProtocol ( - IN OUT IP6_PROTOCOL *IpInstance + IN OUT IP6_PROTOCOL *IpInstance ) { if (EFI_ERROR (Ip6Cancel (IpInstance, NULL))) { @@ -459,7 +459,6 @@ Ip6CleanProtocol ( // hasn't been called. Just leave it alone. // if (!IsListEmpty (&IpInstance->Delivered)) { - ; } if (IpInstance->Interface != NULL) { @@ -470,8 +469,8 @@ Ip6CleanProtocol ( if (IpInstance->GroupList != NULL) { FreePool (IpInstance->GroupList); - IpInstance->GroupList = NULL; - IpInstance->GroupCount = 0; + IpInstance->GroupList = NULL; + IpInstance->GroupCount = 0; } NetMapClean (&IpInstance->TxTokens); @@ -501,17 +500,17 @@ Ip6CleanProtocol ( **/ EFI_STATUS Ip6ServiceConfigMnp ( - IN IP6_SERVICE *IpSb, - IN BOOLEAN Force + IN IP6_SERVICE *IpSb, + IN BOOLEAN Force ) { - LIST_ENTRY *Entry; - LIST_ENTRY *ProtoEntry; - IP6_INTERFACE *IpIf; - IP6_PROTOCOL *IpInstance; - BOOLEAN Reconfig; - BOOLEAN PromiscReceive; - EFI_STATUS Status; + LIST_ENTRY *Entry; + LIST_ENTRY *ProtoEntry; + IP6_INTERFACE *IpIf; + IP6_PROTOCOL *IpInstance; + BOOLEAN Reconfig; + BOOLEAN PromiscReceive; + EFI_STATUS Status; Reconfig = FALSE; PromiscReceive = FALSE; @@ -523,7 +522,6 @@ Ip6ServiceConfigMnp ( // filter also. // NET_LIST_FOR_EACH (Entry, &IpSb->Interfaces) { - IpIf = NET_LIST_USER_STRUCT (Entry, IP6_INTERFACE, Link); IpIf->PromiscRecv = FALSE; @@ -544,7 +542,7 @@ Ip6ServiceConfigMnp ( return EFI_SUCCESS; } - Reconfig = TRUE; + Reconfig = TRUE; IpSb->MnpConfigData.EnablePromiscuousReceive = PromiscReceive; } @@ -610,15 +608,15 @@ Ip6ServiceConfigMnp ( EFI_STATUS EFIAPI EfiIp6Configure ( - IN EFI_IP6_PROTOCOL *This, - IN EFI_IP6_CONFIG_DATA *Ip6ConfigData OPTIONAL + IN EFI_IP6_PROTOCOL *This, + IN EFI_IP6_CONFIG_DATA *Ip6ConfigData OPTIONAL ) { - IP6_PROTOCOL *IpInstance; - EFI_IP6_CONFIG_DATA *Current; - EFI_TPL OldTpl; - EFI_STATUS Status; - IP6_SERVICE *IpSb; + IP6_PROTOCOL *IpInstance; + EFI_IP6_CONFIG_DATA *Current; + EFI_TPL OldTpl; + EFI_STATUS Status; + IP6_SERVICE *IpSb; // // First, validate the parameters @@ -630,13 +628,13 @@ EfiIp6Configure ( IpInstance = IP6_INSTANCE_FROM_PROTOCOL (This); IpSb = IpInstance->Service; - if (IpSb->LinkLocalDadFail && Ip6ConfigData != NULL) { + if (IpSb->LinkLocalDadFail && (Ip6ConfigData != NULL)) { return EFI_DEVICE_ERROR; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - Status = EFI_INVALID_PARAMETER; + Status = EFI_INVALID_PARAMETER; // // Validate the configuration first. @@ -646,8 +644,9 @@ EfiIp6Configure ( // Check whether the station address is valid. // if (!Ip6IsValidAddress (IpSb, &Ip6ConfigData->StationAddress, TRUE)) { - goto Exit; + goto Exit; } + // // Check whether the default protocol is valid. // @@ -744,16 +743,16 @@ EfiIp6Groups ( IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL ) { - EFI_TPL OldTpl; - EFI_STATUS Status; - IP6_PROTOCOL *IpInstance; - IP6_SERVICE *IpSb; + EFI_TPL OldTpl; + EFI_STATUS Status; + IP6_PROTOCOL *IpInstance; + IP6_SERVICE *IpSb; - if ((This == NULL) || (JoinFlag && GroupAddress == NULL)) { + if ((This == NULL) || (JoinFlag && (GroupAddress == NULL))) { return EFI_INVALID_PARAMETER; } - if (GroupAddress != NULL && !IP6_IS_MULTICAST (GroupAddress)) { + if ((GroupAddress != NULL) && !IP6_IS_MULTICAST (GroupAddress)) { return EFI_INVALID_PARAMETER; } @@ -764,7 +763,7 @@ EfiIp6Groups ( return EFI_DEVICE_ERROR; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); if (IpInstance->State != IP6_STATE_CONFIGED) { Status = EFI_NOT_STARTED; @@ -824,17 +823,17 @@ ON_EXIT: EFI_STATUS EFIAPI EfiIp6Routes ( - IN EFI_IP6_PROTOCOL *This, - IN BOOLEAN DeleteRoute, - IN EFI_IPv6_ADDRESS *Destination OPTIONAL, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL + IN EFI_IP6_PROTOCOL *This, + IN BOOLEAN DeleteRoute, + IN EFI_IPv6_ADDRESS *Destination OPTIONAL, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL ) { - IP6_PROTOCOL *IpInstance; - EFI_STATUS Status; - EFI_TPL OldTpl; - IP6_SERVICE *IpSb; + IP6_PROTOCOL *IpInstance; + EFI_STATUS Status; + EFI_TPL OldTpl; + IP6_SERVICE *IpSb; if ((This == NULL) || (PrefixLength > IP6_PREFIX_MAX)) { return EFI_INVALID_PARAMETER; @@ -855,7 +854,7 @@ EfiIp6Routes ( return EFI_INVALID_PARAMETER; } - if (!DeleteRoute && (Destination == NULL || GatewayAddress == NULL)) { + if (!DeleteRoute && ((Destination == NULL) || (GatewayAddress == NULL))) { return EFI_INVALID_PARAMETER; } @@ -866,7 +865,8 @@ EfiIp6Routes ( if (!NetIp6IsUnspecifiedAddr (GatewayAddress) && !NetIp6IsNetEqual (GatewayAddress, &IpInstance->ConfigData.StationAddress, PrefixLength) - ) { + ) + { return EFI_INVALID_PARAMETER; } } @@ -935,20 +935,20 @@ EfiIp6Routes ( EFI_STATUS EFIAPI EfiIp6Neighbors ( - IN EFI_IP6_PROTOCOL *This, - IN BOOLEAN DeleteFlag, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, - IN UINT32 Timeout, - IN BOOLEAN Override + IN EFI_IP6_PROTOCOL *This, + IN BOOLEAN DeleteFlag, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, + IN UINT32 Timeout, + IN BOOLEAN Override ) { - EFI_TPL OldTpl; - EFI_STATUS Status; - IP6_PROTOCOL *IpInstance; - IP6_SERVICE *IpSb; + EFI_TPL OldTpl; + EFI_STATUS Status; + IP6_PROTOCOL *IpInstance; + IP6_SERVICE *IpSb; - if (This == NULL || TargetIp6Address == NULL) { + if ((This == NULL) || (TargetIp6Address == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1011,18 +1011,18 @@ Exit: EFI_STATUS EFIAPI Ip6TokenExist ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { EFI_IP6_COMPLETION_TOKEN *Token; EFI_IP6_COMPLETION_TOKEN *TokenInItem; - Token = (EFI_IP6_COMPLETION_TOKEN *) Context; - TokenInItem = (EFI_IP6_COMPLETION_TOKEN *) Item->Key; + Token = (EFI_IP6_COMPLETION_TOKEN *)Context; + TokenInItem = (EFI_IP6_COMPLETION_TOKEN *)Item->Key; - if (Token == TokenInItem || Token->Event == TokenInItem->Event) { + if ((Token == TokenInItem) || (Token->Event == TokenInItem->Event)) { return EFI_ACCESS_DENIED; } @@ -1041,29 +1041,29 @@ Ip6TokenExist ( **/ EFI_STATUS Ip6TxTokenValid ( - IN EFI_IP6_COMPLETION_TOKEN *Token + IN EFI_IP6_COMPLETION_TOKEN *Token ) { - EFI_IP6_TRANSMIT_DATA *TxData; - UINT32 Index; - UINT32 DataLength; + EFI_IP6_TRANSMIT_DATA *TxData; + UINT32 Index; + UINT32 DataLength; - if (Token == NULL || Token->Event == NULL) { + if ((Token == NULL) || (Token->Event == NULL)) { return EFI_INVALID_PARAMETER; } TxData = Token->Packet.TxData; - if (TxData == NULL || (TxData->ExtHdrsLength != 0 && TxData->ExtHdrs == NULL)) { + if ((TxData == NULL) || ((TxData->ExtHdrsLength != 0) && (TxData->ExtHdrs == NULL))) { return EFI_INVALID_PARAMETER; } - if (TxData->FragmentCount == 0 || TxData->DataLength == 0) { + if ((TxData->FragmentCount == 0) || (TxData->DataLength == 0)) { return EFI_INVALID_PARAMETER; } for (DataLength = 0, Index = 0; Index < TxData->FragmentCount; Index++) { - if (TxData->FragmentTable[Index].FragmentLength == 0 || TxData->FragmentTable[Index].FragmentBuffer == NULL) { + if ((TxData->FragmentTable[Index].FragmentLength == 0) || (TxData->FragmentTable[Index].FragmentBuffer == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1115,13 +1115,13 @@ Ip6TxTokenValid ( VOID EFIAPI Ip6FreeTxToken ( - IN VOID *Context + IN VOID *Context ) { - IP6_TXTOKEN_WRAP *Wrap; - NET_MAP_ITEM *Item; + IP6_TXTOKEN_WRAP *Wrap; + NET_MAP_ITEM *Item; - Wrap = (IP6_TXTOKEN_WRAP *) Context; + Wrap = (IP6_TXTOKEN_WRAP *)Context; // // Signal IpSecRecycleEvent to inform IPsec free the memory @@ -1152,7 +1152,6 @@ Ip6FreeTxToken ( FreePool (Wrap); } - /** The callback function to Ip6Output to update the transmit status. @@ -1164,19 +1163,19 @@ Ip6FreeTxToken ( **/ VOID Ip6OnPacketSent ( - IN NET_BUF *Packet, - IN EFI_STATUS IoStatus, - IN UINT32 Flag, - IN VOID *Context + IN NET_BUF *Packet, + IN EFI_STATUS IoStatus, + IN UINT32 Flag, + IN VOID *Context ) { - IP6_TXTOKEN_WRAP *Wrap; + IP6_TXTOKEN_WRAP *Wrap; // // This is the transmission request from upper layer, // not the IP6 driver itself. // - Wrap = (IP6_TXTOKEN_WRAP *) Context; + Wrap = (IP6_TXTOKEN_WRAP *)Context; Wrap->Token->Status = IoStatus; NetbufFree (Wrap->Packet); @@ -1241,16 +1240,16 @@ EfiIp6Transmit ( IN EFI_IP6_COMPLETION_TOKEN *Token ) { - IP6_SERVICE *IpSb; - IP6_PROTOCOL *IpInstance; - EFI_IP6_CONFIG_DATA *Config; - EFI_STATUS Status; - EFI_TPL OldTpl; - EFI_IP6_HEADER Head; - EFI_IP6_TRANSMIT_DATA *TxData; - EFI_IP6_OVERRIDE_DATA *Override; - IP6_TXTOKEN_WRAP *Wrap; - UINT8 *ExtHdrs; + IP6_SERVICE *IpSb; + IP6_PROTOCOL *IpInstance; + EFI_IP6_CONFIG_DATA *Config; + EFI_STATUS Status; + EFI_TPL OldTpl; + EFI_IP6_HEADER Head; + EFI_IP6_TRANSMIT_DATA *TxData; + EFI_IP6_OVERRIDE_DATA *Override; + IP6_TXTOKEN_WRAP *Wrap; + UINT8 *ExtHdrs; // // Check input parameters. @@ -1273,7 +1272,7 @@ EfiIp6Transmit ( return EFI_DEVICE_ERROR; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); if (IpInstance->State != IP6_STATE_CONFIGED) { Status = EFI_NOT_STARTED; @@ -1293,7 +1292,7 @@ EfiIp6Transmit ( // // Build the IP header, fill in the information from ConfigData or OverrideData // - ZeroMem (&Head, sizeof(EFI_IP6_HEADER)); + ZeroMem (&Head, sizeof (EFI_IP6_HEADER)); TxData = Token->Packet.TxData; IP6_COPY_ADDRESS (&Head.SourceAddress, &Config->StationAddress); IP6_COPY_ADDRESS (&Head.DestinationAddress, &Config->DestinationAddress); @@ -1306,7 +1305,6 @@ EfiIp6Transmit ( } ASSERT (!NetIp6IsUnspecifiedAddr (&Config->StationAddress)); - } else { // // StationAddress is unspecified only when ConfigData.Dest is unspecified. @@ -1342,15 +1340,15 @@ EfiIp6Transmit ( Override = TxData->OverrideData; Head.NextHeader = Override->Protocol; Head.HopLimit = Override->HopLimit; - Head.FlowLabelL = HTONS ((UINT16) Override->FlowLabel); - Head.FlowLabelH = (UINT8) ((Override->FlowLabel >> 16) & 0x0F); + Head.FlowLabelL = HTONS ((UINT16)Override->FlowLabel); + Head.FlowLabelH = (UINT8)((Override->FlowLabel >> 16) & 0x0F); } else { Head.HopLimit = Config->HopLimit; - Head.FlowLabelL = HTONS ((UINT16) Config->FlowLabel); - Head.FlowLabelH = (UINT8) ((Config->FlowLabel >> 16) & 0x0F); + Head.FlowLabelL = HTONS ((UINT16)Config->FlowLabel); + Head.FlowLabelH = (UINT8)((Config->FlowLabel >> 16) & 0x0F); } - Head.PayloadLength = HTONS ((UINT16) (TxData->ExtHdrsLength + TxData->DataLength)); + Head.PayloadLength = HTONS ((UINT16)(TxData->ExtHdrsLength + TxData->DataLength)); // // OK, it survives all the validation check. Wrap the token in @@ -1362,18 +1360,18 @@ EfiIp6Transmit ( goto Exit; } - Wrap->IpInstance = IpInstance; - Wrap->Token = Token; - Wrap->Sent = FALSE; - Wrap->Life = IP6_US_TO_SEC (Config->TransmitTimeout); - Wrap->Packet = NetbufFromExt ( - (NET_FRAGMENT *) TxData->FragmentTable, - TxData->FragmentCount, - IP6_MAX_HEADLEN, - 0, - Ip6FreeTxToken, - Wrap - ); + Wrap->IpInstance = IpInstance; + Wrap->Token = Token; + Wrap->Sent = FALSE; + Wrap->Life = IP6_US_TO_SEC (Config->TransmitTimeout); + Wrap->Packet = NetbufFromExt ( + (NET_FRAGMENT *)TxData->FragmentTable, + TxData->FragmentCount, + IP6_MAX_HEADLEN, + 0, + Ip6FreeTxToken, + Wrap + ); if (Wrap->Packet == NULL) { FreePool (Wrap); @@ -1397,8 +1395,8 @@ EfiIp6Transmit ( // Allocate a new buffer to store IPv6 extension headers to avoid updating // the original data in EFI_IP6_COMPLETION_TOKEN. // - if (TxData->ExtHdrsLength != 0 && TxData->ExtHdrs != NULL) { - ExtHdrs = (UINT8 *) AllocateCopyPool (TxData->ExtHdrsLength, TxData->ExtHdrs); + if ((TxData->ExtHdrsLength != 0) && (TxData->ExtHdrs != NULL)) { + ExtHdrs = (UINT8 *)AllocateCopyPool (TxData->ExtHdrsLength, TxData->ExtHdrs); if (ExtHdrs == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; @@ -1485,12 +1483,12 @@ EfiIp6Receive ( IN EFI_IP6_COMPLETION_TOKEN *Token ) { - IP6_PROTOCOL *IpInstance; - EFI_STATUS Status; - EFI_TPL OldTpl; - IP6_SERVICE *IpSb; + IP6_PROTOCOL *IpInstance; + EFI_STATUS Status; + EFI_TPL OldTpl; + IP6_SERVICE *IpSb; - if (This == NULL || Token == NULL || Token->Event == NULL) { + if ((This == NULL) || (Token == NULL) || (Token->Event == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1540,7 +1538,6 @@ Exit: return Status; } - /** Cancel the transmitted but not recycled packet. If a matching token is found, it will call Ip6CancelPacket to cancel the @@ -1561,15 +1558,15 @@ Exit: EFI_STATUS EFIAPI Ip6CancelTxTokens ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { EFI_IP6_COMPLETION_TOKEN *Token; IP6_TXTOKEN_WRAP *Wrap; - Token = (EFI_IP6_COMPLETION_TOKEN *) Context; + Token = (EFI_IP6_COMPLETION_TOKEN *)Context; // // Return EFI_SUCCESS to check the next item in the map if @@ -1579,7 +1576,7 @@ Ip6CancelTxTokens ( return EFI_SUCCESS; } - Wrap = (IP6_TXTOKEN_WRAP *) Item->Value; + Wrap = (IP6_TXTOKEN_WRAP *)Item->Value; ASSERT (Wrap != NULL); // @@ -1599,7 +1596,6 @@ Ip6CancelTxTokens ( return EFI_SUCCESS; } - /** Cancel the receive request. This is simple, because it is only enqueued in our local receive map. @@ -1618,15 +1614,15 @@ Ip6CancelTxTokens ( EFI_STATUS EFIAPI Ip6CancelRxTokens ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { EFI_IP6_COMPLETION_TOKEN *Token; EFI_IP6_COMPLETION_TOKEN *This; - Token = (EFI_IP6_COMPLETION_TOKEN *) Context; + Token = (EFI_IP6_COMPLETION_TOKEN *)Context; This = Item->Key; if ((Token != NULL) && (Token != This)) { @@ -1662,11 +1658,11 @@ Ip6CancelRxTokens ( **/ EFI_STATUS Ip6Cancel ( - IN IP6_PROTOCOL *IpInstance, - IN EFI_IP6_COMPLETION_TOKEN *Token OPTIONAL + IN IP6_PROTOCOL *IpInstance, + IN EFI_IP6_COMPLETION_TOKEN *Token OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; // // First check the transmitted packet. Ip6CancelTxTokens returns @@ -1713,7 +1709,6 @@ Ip6Cancel ( // all of them are cancelled. // if (!NetMapIsEmpty (&IpInstance->TxTokens) || !NetMapIsEmpty (&IpInstance->RxTokens)) { - return EFI_DEVICE_ERROR; } @@ -1755,9 +1750,9 @@ EfiIp6Cancel ( IN EFI_IP6_COMPLETION_TOKEN *Token OPTIONAL ) { - IP6_PROTOCOL *IpInstance; - EFI_STATUS Status; - EFI_TPL OldTpl; + IP6_PROTOCOL *IpInstance; + EFI_STATUS Status; + EFI_TPL OldTpl; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -1807,7 +1802,7 @@ Exit: EFI_STATUS EFIAPI EfiIp6Poll ( - IN EFI_IP6_PROTOCOL *This + IN EFI_IP6_PROTOCOL *This ) { IP6_PROTOCOL *IpInstance; @@ -1836,6 +1831,4 @@ EfiIp6Poll ( // the packet polled up. // return Mnp->Poll (Mnp); - } - diff --git a/NetworkPkg/Ip6Dxe/Ip6Impl.h b/NetworkPkg/Ip6Dxe/Ip6Impl.h index 8919e94489..9802c33b55 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Impl.h +++ b/NetworkPkg/Ip6Dxe/Ip6Impl.h @@ -54,8 +54,8 @@ #include "Ip6ConfigNv.h" #include "Ip6ConfigImpl.h" -#define IP6_PROTOCOL_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'P') -#define IP6_SERVICE_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'S') +#define IP6_PROTOCOL_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'P') +#define IP6_SERVICE_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'S') // // The state of IP6 protocol. It starts from UNCONFIGED. if it is @@ -63,8 +63,8 @@ // is called, it becomes UNCONFIGED again. If (partly) destroyed, it // becomes DESTROY. // -#define IP6_STATE_UNCONFIGED 0 -#define IP6_STATE_CONFIGED 1 +#define IP6_STATE_UNCONFIGED 0 +#define IP6_STATE_CONFIGED 1 // // The state of IP6 service. It starts from UNSTARTED. It transits @@ -83,10 +83,10 @@ #define IP6_SERVICE_FROM_PROTOCOL(Sb) \ CR ((Sb), IP6_SERVICE, ServiceBinding, IP6_SERVICE_SIGNATURE) -#define IP6_NO_MAPPING(IpInstance) (!(IpInstance)->Interface->Configured) +#define IP6_NO_MAPPING(IpInstance) (!(IpInstance)->Interface->Configured) -extern EFI_IPSEC2_PROTOCOL *mIpSec; -extern BOOLEAN mIpSec2Installed; +extern EFI_IPSEC2_PROTOCOL *mIpSec; +extern BOOLEAN mIpSec2Installed; // // IP6_TXTOKEN_WRAP wraps the upper layer's transmit token. @@ -98,17 +98,17 @@ extern BOOLEAN mIpSec2Installed; // user's event signalled. // typedef struct { - IP6_PROTOCOL *IpInstance; - EFI_IP6_COMPLETION_TOKEN *Token; - EFI_EVENT IpSecRecycleSignal; - NET_BUF *Packet; - BOOLEAN Sent; - INTN Life; + IP6_PROTOCOL *IpInstance; + EFI_IP6_COMPLETION_TOKEN *Token; + EFI_EVENT IpSecRecycleSignal; + NET_BUF *Packet; + BOOLEAN Sent; + INTN Life; } IP6_TXTOKEN_WRAP; typedef struct { - EFI_EVENT IpSecRecycleSignal; - NET_BUF *Packet; + EFI_EVENT IpSecRecycleSignal; + NET_BUF *Packet; } IP6_IPSEC_WRAP; // @@ -121,123 +121,123 @@ typedef struct { // fragments will be freed at last. // typedef struct { - LIST_ENTRY Link; - IP6_PROTOCOL *IpInstance; - NET_BUF *Packet; - EFI_IP6_RECEIVE_DATA RxData; + LIST_ENTRY Link; + IP6_PROTOCOL *IpInstance; + NET_BUF *Packet; + EFI_IP6_RECEIVE_DATA RxData; } IP6_RXDATA_WRAP; struct _IP6_PROTOCOL { - UINT32 Signature; + UINT32 Signature; - EFI_IP6_PROTOCOL Ip6Proto; - EFI_HANDLE Handle; - INTN State; + EFI_IP6_PROTOCOL Ip6Proto; + EFI_HANDLE Handle; + INTN State; - IP6_SERVICE *Service; - LIST_ENTRY Link; // Link to all the IP protocol from the service + IP6_SERVICE *Service; + LIST_ENTRY Link; // Link to all the IP protocol from the service - UINT8 PrefixLength; // PrefixLength of the configured station address. + UINT8 PrefixLength; // PrefixLength of the configured station address. // // User's transmit/receive tokens, and received/delivered packets // - NET_MAP RxTokens; - NET_MAP TxTokens; // map between (User's Token, IP6_TXTOKE_WRAP) - LIST_ENTRY Received; // Received but not delivered packet - LIST_ENTRY Delivered; // Delivered and to be recycled packets - EFI_LOCK RecycleLock; + NET_MAP RxTokens; + NET_MAP TxTokens; // map between (User's Token, IP6_TXTOKE_WRAP) + LIST_ENTRY Received; // Received but not delivered packet + LIST_ENTRY Delivered; // Delivered and to be recycled packets + EFI_LOCK RecycleLock; - IP6_INTERFACE *Interface; - LIST_ENTRY AddrLink; // Ip instances with the same IP address. + IP6_INTERFACE *Interface; + LIST_ENTRY AddrLink; // Ip instances with the same IP address. - EFI_IPv6_ADDRESS *GroupList; // stored in network order. - UINT32 GroupCount; + EFI_IPv6_ADDRESS *GroupList; // stored in network order. + UINT32 GroupCount; - EFI_IP6_CONFIG_DATA ConfigData; - BOOLEAN InDestroy; + EFI_IP6_CONFIG_DATA ConfigData; + BOOLEAN InDestroy; }; struct _IP6_SERVICE { - UINT32 Signature; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - INTN State; + UINT32 Signature; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + INTN State; // // List of all the IP instances and interfaces, and default // interface and route table and caches. // - UINTN NumChildren; - LIST_ENTRY Children; + UINTN NumChildren; + LIST_ENTRY Children; - LIST_ENTRY Interfaces; + LIST_ENTRY Interfaces; - IP6_INTERFACE *DefaultInterface; - IP6_ROUTE_TABLE *RouteTable; + IP6_INTERFACE *DefaultInterface; + IP6_ROUTE_TABLE *RouteTable; - IP6_LINK_RX_TOKEN RecvRequest; + IP6_LINK_RX_TOKEN RecvRequest; // // Ip reassemble utilities and MLD data // - IP6_ASSEMBLE_TABLE Assemble; - IP6_MLD_SERVICE_DATA MldCtrl; + IP6_ASSEMBLE_TABLE Assemble; + IP6_MLD_SERVICE_DATA MldCtrl; - EFI_IPv6_ADDRESS LinkLocalAddr; - BOOLEAN LinkLocalOk; - BOOLEAN LinkLocalDadFail; - BOOLEAN Dhcp6NeedStart; - BOOLEAN Dhcp6NeedInfoRequest; + EFI_IPv6_ADDRESS LinkLocalAddr; + BOOLEAN LinkLocalOk; + BOOLEAN LinkLocalDadFail; + BOOLEAN Dhcp6NeedStart; + BOOLEAN Dhcp6NeedInfoRequest; // // ND data // - UINT8 CurHopLimit; - UINT32 LinkMTU; - UINT32 BaseReachableTime; - UINT32 ReachableTime; - UINT32 RetransTimer; - LIST_ENTRY NeighborTable; + UINT8 CurHopLimit; + UINT32 LinkMTU; + UINT32 BaseReachableTime; + UINT32 ReachableTime; + UINT32 RetransTimer; + LIST_ENTRY NeighborTable; - LIST_ENTRY OnlinkPrefix; - LIST_ENTRY AutonomousPrefix; + LIST_ENTRY OnlinkPrefix; + LIST_ENTRY AutonomousPrefix; - LIST_ENTRY DefaultRouterList; - UINT32 RoundRobin; + LIST_ENTRY DefaultRouterList; + UINT32 RoundRobin; - UINT8 InterfaceIdLen; - UINT8 *InterfaceId; + UINT8 InterfaceIdLen; + UINT8 *InterfaceId; - BOOLEAN RouterAdvertiseReceived; - UINT8 SolicitTimer; - UINT32 Ticks; + BOOLEAN RouterAdvertiseReceived; + UINT8 SolicitTimer; + UINT32 Ticks; // // Low level protocol used by this service instance // - EFI_HANDLE Image; - EFI_HANDLE Controller; + EFI_HANDLE Image; + EFI_HANDLE Controller; - EFI_HANDLE MnpChildHandle; - EFI_MANAGED_NETWORK_PROTOCOL *Mnp; + EFI_HANDLE MnpChildHandle; + EFI_MANAGED_NETWORK_PROTOCOL *Mnp; - EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData; - EFI_SIMPLE_NETWORK_MODE SnpMode; + EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData; + EFI_SIMPLE_NETWORK_MODE SnpMode; - EFI_EVENT Timer; - EFI_EVENT FasterTimer; + EFI_EVENT Timer; + EFI_EVENT FasterTimer; // // IPv6 Configuration Protocol instance // - IP6_CONFIG_INSTANCE Ip6ConfigInstance; + IP6_CONFIG_INSTANCE Ip6ConfigInstance; // // The string representation of the current mac address of the // NIC this IP6_SERVICE works on. // - CHAR16 *MacString; - UINT32 MaxPacketSize; - UINT32 OldMaxPacketSize; + CHAR16 *MacString; + UINT32 MaxPacketSize; + UINT32 OldMaxPacketSize; }; /** @@ -264,7 +264,7 @@ struct _IP6_SERVICE { VOID EFIAPI Ip6FreeTxToken ( - IN VOID *Context + IN VOID *Context ); /** @@ -287,8 +287,8 @@ Ip6FreeTxToken ( **/ EFI_STATUS Ip6ServiceConfigMnp ( - IN IP6_SERVICE *IpSb, - IN BOOLEAN Force + IN IP6_SERVICE *IpSb, + IN BOOLEAN Force ); /** @@ -307,8 +307,8 @@ Ip6ServiceConfigMnp ( **/ EFI_STATUS Ip6Cancel ( - IN IP6_PROTOCOL *IpInstance, - IN EFI_IP6_COMPLETION_TOKEN *Token OPTIONAL + IN IP6_PROTOCOL *IpInstance, + IN EFI_IP6_COMPLETION_TOKEN *Token OPTIONAL ); /** @@ -320,8 +320,8 @@ Ip6Cancel ( **/ VOID Ip6InitProtocol ( - IN IP6_SERVICE *IpSb, - IN OUT IP6_PROTOCOL *IpInstance + IN IP6_SERVICE *IpSb, + IN OUT IP6_PROTOCOL *IpInstance ); /** @@ -335,7 +335,7 @@ Ip6InitProtocol ( **/ EFI_STATUS Ip6CleanProtocol ( - IN OUT IP6_PROTOCOL *IpInstance + IN OUT IP6_PROTOCOL *IpInstance ); // @@ -362,10 +362,10 @@ Ip6CleanProtocol ( EFI_STATUS EFIAPI EfiIp6GetModeData ( - IN EFI_IP6_PROTOCOL *This, - OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + IN EFI_IP6_PROTOCOL *This, + OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, + OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, + OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL ); /** @@ -418,8 +418,8 @@ EfiIp6GetModeData ( EFI_STATUS EFIAPI EfiIp6Configure ( - IN EFI_IP6_PROTOCOL *This, - IN EFI_IP6_CONFIG_DATA *Ip6ConfigData OPTIONAL + IN EFI_IP6_PROTOCOL *This, + IN EFI_IP6_CONFIG_DATA *Ip6ConfigData OPTIONAL ); /** @@ -507,11 +507,11 @@ EfiIp6Groups ( EFI_STATUS EFIAPI EfiIp6Routes ( - IN EFI_IP6_PROTOCOL *This, - IN BOOLEAN DeleteRoute, - IN EFI_IPv6_ADDRESS *Destination OPTIONAL, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL + IN EFI_IP6_PROTOCOL *This, + IN BOOLEAN DeleteRoute, + IN EFI_IPv6_ADDRESS *Destination OPTIONAL, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL ); /** @@ -563,12 +563,12 @@ EfiIp6Routes ( EFI_STATUS EFIAPI EfiIp6Neighbors ( - IN EFI_IP6_PROTOCOL *This, - IN BOOLEAN DeleteFlag, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, - IN UINT32 Timeout, - IN BOOLEAN Override + IN EFI_IP6_PROTOCOL *This, + IN BOOLEAN DeleteFlag, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, + IN UINT32 Timeout, + IN BOOLEAN Override ); /** @@ -742,7 +742,7 @@ EfiIp6Cancel ( EFI_STATUS EFIAPI EfiIp6Poll ( - IN EFI_IP6_PROTOCOL *This + IN EFI_IP6_PROTOCOL *This ); #endif diff --git a/NetworkPkg/Ip6Dxe/Ip6Input.c b/NetworkPkg/Ip6Dxe/Ip6Input.c index c42baa35b6..fe6a3648e1 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Input.c +++ b/NetworkPkg/Ip6Dxe/Ip6Input.c @@ -24,12 +24,12 @@ **/ IP6_ASSEMBLE_ENTRY * Ip6CreateAssembleEntry ( - IN EFI_IPv6_ADDRESS *Dst, - IN EFI_IPv6_ADDRESS *Src, - IN UINT32 Id + IN EFI_IPv6_ADDRESS *Dst, + IN EFI_IPv6_ADDRESS *Src, + IN UINT32 Id ) { - IP6_ASSEMBLE_ENTRY *Assemble; + IP6_ASSEMBLE_ENTRY *Assemble; Assemble = AllocatePool (sizeof (IP6_ASSEMBLE_ENTRY)); if (Assemble == NULL) { @@ -40,8 +40,8 @@ Ip6CreateAssembleEntry ( IP6_COPY_ADDRESS (&Assemble->Src, Src); InitializeListHead (&Assemble->Fragments); - Assemble->Id = Id; - Assemble->Life = IP6_FRAGMENT_LIFE + 1; + Assemble->Id = Id; + Assemble->Life = IP6_FRAGMENT_LIFE + 1; Assemble->TotalLen = 0; Assemble->CurLen = 0; @@ -60,12 +60,12 @@ Ip6CreateAssembleEntry ( **/ VOID Ip6FreeAssembleEntry ( - IN IP6_ASSEMBLE_ENTRY *Assemble + IN IP6_ASSEMBLE_ENTRY *Assemble ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - NET_BUF *Fragment; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + NET_BUF *Fragment; NET_LIST_FOR_EACH_SAFE (Entry, Next, &Assemble->Fragments) { Fragment = NET_LIST_USER_STRUCT (Entry, NET_BUF, List); @@ -92,10 +92,10 @@ Ip6FreeAssembleEntry ( VOID EFIAPI Ip6OnFreeFragments ( - IN VOID *Arg + IN VOID *Arg ) { - Ip6FreeAssembleEntry ((IP6_ASSEMBLE_ENTRY *) Arg); + Ip6FreeAssembleEntry ((IP6_ASSEMBLE_ENTRY *)Arg); } /** @@ -109,33 +109,33 @@ Ip6OnFreeFragments ( **/ VOID Ip6TrimPacket ( - IN OUT NET_BUF *Packet, - IN INTN Start, - IN INTN End + IN OUT NET_BUF *Packet, + IN INTN Start, + IN INTN End ) { - IP6_CLIP_INFO *Info; - INTN Len; + IP6_CLIP_INFO *Info; + INTN Len; Info = IP6_GET_CLIP_INFO (Packet); ASSERT (Info->Start + Info->Length == Info->End); ASSERT ((Info->Start < End) && (Start < Info->End)); - if (Info->Start < Start) { + if (Info->Start < Start) { Len = Start - Info->Start; - NetbufTrim (Packet, (UINT32) Len, NET_BUF_HEAD); - Info->Start = (UINT32) Start; - Info->Length -= (UINT32) Len; + NetbufTrim (Packet, (UINT32)Len, NET_BUF_HEAD); + Info->Start = (UINT32)Start; + Info->Length -= (UINT32)Len; } if (End < Info->End) { Len = End - Info->End; - NetbufTrim (Packet, (UINT32) Len, NET_BUF_TAIL); - Info->End = (UINT32) End; - Info->Length -= (UINT32) Len; + NetbufTrim (Packet, (UINT32)Len, NET_BUF_TAIL); + Info->End = (UINT32)End; + Info->Length -= (UINT32)Len; } } @@ -156,26 +156,26 @@ Ip6TrimPacket ( **/ NET_BUF * Ip6Reassemble ( - IN OUT IP6_ASSEMBLE_TABLE *Table, - IN NET_BUF *Packet + IN OUT IP6_ASSEMBLE_TABLE *Table, + IN NET_BUF *Packet ) { - EFI_IP6_HEADER *Head; - IP6_CLIP_INFO *This; - IP6_CLIP_INFO *Node; - IP6_ASSEMBLE_ENTRY *Assemble; - IP6_ASSEMBLE_ENTRY *Entry; - LIST_ENTRY *ListHead; - LIST_ENTRY *Prev; - LIST_ENTRY *Cur; - NET_BUF *Fragment; - NET_BUF *TmpPacket; - NET_BUF *NewPacket; - NET_BUF *Duplicate; - UINT8 *DupHead; - INTN Index; - UINT16 UnFragmentLen; - UINT8 *NextHeader; + EFI_IP6_HEADER *Head; + IP6_CLIP_INFO *This; + IP6_CLIP_INFO *Node; + IP6_ASSEMBLE_ENTRY *Assemble; + IP6_ASSEMBLE_ENTRY *Entry; + LIST_ENTRY *ListHead; + LIST_ENTRY *Prev; + LIST_ENTRY *Cur; + NET_BUF *Fragment; + NET_BUF *TmpPacket; + NET_BUF *NewPacket; + NET_BUF *Duplicate; + UINT8 *DupHead; + INTN Index; + UINT16 UnFragmentLen; + UINT8 *NextHeader; Head = Packet->Ip.Ip6; This = IP6_GET_CLIP_INFO (Packet); @@ -185,16 +185,17 @@ Ip6Reassemble ( // // Find the corresponding assemble entry by (Dst, Src, Id) // - Assemble = NULL; - Index = IP6_ASSEMBLE_HASH (&Head->DestinationAddress, &Head->SourceAddress, This->Id); + Assemble = NULL; + Index = IP6_ASSEMBLE_HASH (&Head->DestinationAddress, &Head->SourceAddress, This->Id); NET_LIST_FOR_EACH (Cur, &Table->Bucket[Index]) { Entry = NET_LIST_USER_STRUCT (Cur, IP6_ASSEMBLE_ENTRY, Link); - if (Entry->Id == This->Id && + if ((Entry->Id == This->Id) && EFI_IP6_EQUAL (&Entry->Src, &Head->SourceAddress) && EFI_IP6_EQUAL (&Entry->Dst, &Head->DestinationAddress) - ) { + ) + { Assemble = Entry; break; } @@ -239,8 +240,8 @@ Ip6Reassemble ( // overlaps, trim the overlapped part off THIS fragment. // if ((Prev = Cur->BackLink) != ListHead) { - Fragment = NET_LIST_USER_STRUCT (Prev, NET_BUF, List); - Node = IP6_GET_CLIP_INFO (Fragment); + Fragment = NET_LIST_USER_STRUCT (Prev, NET_BUF, List); + Node = IP6_GET_CLIP_INFO (Fragment); if (This->Start < Node->End) { if (This->End <= Node->End) { @@ -331,13 +332,13 @@ Ip6Reassemble ( // DupHead = NetbufGetByte (Duplicate, 0, NULL); ASSERT (DupHead != NULL); - Duplicate->Ip.Ip6 = Ip6NtohHead ((EFI_IP6_HEADER *) DupHead); + Duplicate->Ip.Ip6 = Ip6NtohHead ((EFI_IP6_HEADER *)DupHead); Assemble->Packet = Duplicate; // // Adjust the unfragmentable part in first fragment // - UnFragmentLen = (UINT16) (This->HeadLen - sizeof (EFI_IP6_HEADER)); + UnFragmentLen = (UINT16)(This->HeadLen - sizeof (EFI_IP6_HEADER)); if (UnFragmentLen == 0) { // // There is not any unfragmentable extension header. @@ -376,7 +377,6 @@ Ip6Reassemble ( // queue ends at the total length, all data is received. // if ((Assemble->TotalLen != 0) && (Assemble->CurLen >= Assemble->TotalLen)) { - RemoveEntryList (&Assemble->Link); // @@ -385,7 +385,7 @@ Ip6Reassemble ( // is a fake, drop it now. // Fragment = NET_LIST_USER_STRUCT (ListHead->BackLink, NET_BUF, List); - if (IP6_GET_CLIP_INFO (Fragment)->End != (INTN) Assemble->TotalLen) { + if (IP6_GET_CLIP_INFO (Fragment)->End != (INTN)Assemble->TotalLen) { Ip6FreeAssembleEntry (Assemble); goto Error; } @@ -441,7 +441,6 @@ Error: return NULL; } - /** The callback function for the net buffer that wraps the packet processed by IPsec. It releases the wrap packet and also signals IPsec to free the resources. @@ -452,12 +451,12 @@ Error: VOID EFIAPI Ip6IpSecFree ( - IN VOID *Arg + IN VOID *Arg ) { - IP6_IPSEC_WRAP *Wrap; + IP6_IPSEC_WRAP *Wrap; - Wrap = (IP6_IPSEC_WRAP *) Arg; + Wrap = (IP6_IPSEC_WRAP *)Arg; if (Wrap->IpSecRecycleSignal != NULL) { gBS->SignalEvent (Wrap->IpSecRecycleSignal); @@ -506,24 +505,25 @@ Ip6IpSecProcessPacket ( IN VOID *Context ) { - NET_FRAGMENT *FragmentTable; - NET_FRAGMENT *OriginalFragmentTable; - UINT32 FragmentCount; - UINT32 OriginalFragmentCount; - EFI_EVENT RecycleEvent; - NET_BUF *Packet; - IP6_TXTOKEN_WRAP *TxWrap; - IP6_IPSEC_WRAP *IpSecWrap; - EFI_STATUS Status; - EFI_IP6_HEADER *PacketHead; - UINT8 *Buf; - EFI_IP6_HEADER ZeroHead; - - Status = EFI_SUCCESS; + NET_FRAGMENT *FragmentTable; + NET_FRAGMENT *OriginalFragmentTable; + UINT32 FragmentCount; + UINT32 OriginalFragmentCount; + EFI_EVENT RecycleEvent; + NET_BUF *Packet; + IP6_TXTOKEN_WRAP *TxWrap; + IP6_IPSEC_WRAP *IpSecWrap; + EFI_STATUS Status; + EFI_IP6_HEADER *PacketHead; + UINT8 *Buf; + EFI_IP6_HEADER ZeroHead; + + Status = EFI_SUCCESS; if (!mIpSec2Installed) { goto ON_EXIT; } + ASSERT (mIpSec != NULL); Packet = *Netbuf; @@ -532,7 +532,7 @@ Ip6IpSecProcessPacket ( FragmentTable = NULL; PacketHead = NULL; Buf = NULL; - TxWrap = (IP6_TXTOKEN_WRAP *) Context; + TxWrap = (IP6_TXTOKEN_WRAP *)Context; FragmentCount = Packet->BlockOpNum; ZeroMem (&ZeroHead, sizeof (EFI_IP6_HEADER)); @@ -552,7 +552,6 @@ Ip6IpSecProcessPacket ( IpSb->MaxPacketSize = IpSb->OldMaxPacketSize - IP6_MAX_IPSEC_HEADLEN; } - // // Bypass all multicast inbound or outbound traffic. // @@ -570,11 +569,11 @@ Ip6IpSecProcessPacket ( goto ON_EXIT; } - Status = NetbufBuildExt (Packet, FragmentTable, &FragmentCount); + Status = NetbufBuildExt (Packet, FragmentTable, &FragmentCount); OriginalFragmentTable = FragmentTable; OriginalFragmentCount = FragmentCount; - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { FreePool (FragmentTable); goto ON_EXIT; } @@ -588,11 +587,11 @@ Ip6IpSecProcessPacket ( mIpSec, IpSb->Controller, IP_VERSION_6, - (VOID *) (*Head), + (VOID *)(*Head), LastHead, - (VOID **) ExtHdrs, + (VOID **)ExtHdrs, ExtHdrsLen, - (EFI_IPSEC_FRAGMENT_DATA **) (&FragmentTable), + (EFI_IPSEC_FRAGMENT_DATA **)(&FragmentTable), &FragmentCount, Direction, &RecycleEvent @@ -607,7 +606,7 @@ Ip6IpSecProcessPacket ( goto ON_EXIT; } - if (OriginalFragmentCount == FragmentCount && OriginalFragmentTable == FragmentTable) { + if ((OriginalFragmentCount == FragmentCount) && (OriginalFragmentTable == FragmentTable)) { // // For ByPass Packet // @@ -620,7 +619,7 @@ Ip6IpSecProcessPacket ( FreePool (OriginalFragmentTable); } - if (Direction == EfiIPsecOutBound && TxWrap != NULL) { + if ((Direction == EfiIPsecOutBound) && (TxWrap != NULL)) { TxWrap->IpSecRecycleSignal = RecycleEvent; TxWrap->Packet = NetbufFromExt ( FragmentTable, @@ -632,7 +631,7 @@ Ip6IpSecProcessPacket ( ); if (TxWrap->Packet == NULL) { TxWrap->Packet = *Netbuf; - Status = EFI_OUT_OF_RESOURCES; + Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } @@ -642,11 +641,9 @@ Ip6IpSecProcessPacket ( sizeof (IP6_CLIP_INFO) ); - NetIpSecNetbufFree(Packet); + NetIpSecNetbufFree (Packet); *Netbuf = TxWrap->Packet; - } else { - IpSecWrap = AllocateZeroPool (sizeof (IP6_IPSEC_WRAP)); if (IpSecWrap == NULL) { @@ -674,13 +671,12 @@ Ip6IpSecProcessPacket ( goto ON_EXIT; } - if (Direction == EfiIPsecInBound && 0 != CompareMem (&ZeroHead, *Head, sizeof (EFI_IP6_HEADER))) { - - PacketHead = (EFI_IP6_HEADER *) NetbufAllocSpace ( - Packet, - sizeof (EFI_IP6_HEADER) + *ExtHdrsLen, - NET_BUF_HEAD - ); + if ((Direction == EfiIPsecInBound) && (0 != CompareMem (&ZeroHead, *Head, sizeof (EFI_IP6_HEADER)))) { + PacketHead = (EFI_IP6_HEADER *)NetbufAllocSpace ( + Packet, + sizeof (EFI_IP6_HEADER) + *ExtHdrsLen, + NET_BUF_HEAD + ); if (PacketHead == NULL) { *Netbuf = Packet; Status = EFI_OUT_OF_RESOURCES; @@ -688,11 +684,11 @@ Ip6IpSecProcessPacket ( } CopyMem (PacketHead, *Head, sizeof (EFI_IP6_HEADER)); - *Head = PacketHead; + *Head = PacketHead; Packet->Ip.Ip6 = PacketHead; if (*ExtHdrs != NULL) { - Buf = (UINT8 *) (PacketHead + 1); + Buf = (UINT8 *)(PacketHead + 1); CopyMem (Buf, *ExtHdrs, *ExtHdrsLen); } @@ -703,6 +699,7 @@ Ip6IpSecProcessPacket ( sizeof (IP6_CLIP_INFO) ); } + *Netbuf = Packet; } @@ -733,25 +730,25 @@ ON_EXIT: **/ EFI_STATUS Ip6PreProcessPacket ( - IN IP6_SERVICE *IpSb, - IN OUT NET_BUF **Packet, - IN UINT32 Flag, - OUT UINT8 **Payload, - OUT UINT8 **LastHead, - OUT UINT32 *ExtHdrsLen, - OUT UINT32 *UnFragmentLen, - OUT BOOLEAN *Fragmented, - OUT EFI_IP6_HEADER **Head + IN IP6_SERVICE *IpSb, + IN OUT NET_BUF **Packet, + IN UINT32 Flag, + OUT UINT8 **Payload, + OUT UINT8 **LastHead, + OUT UINT32 *ExtHdrsLen, + OUT UINT32 *UnFragmentLen, + OUT BOOLEAN *Fragmented, + OUT EFI_IP6_HEADER **Head ) { - UINT16 PayloadLen; - UINT16 TotalLen; - UINT32 FormerHeadOffset; - UINT32 HeadLen; - IP6_FRAGMENT_HEADER *FragmentHead; - UINT16 FragmentOffset; - IP6_CLIP_INFO *Info; - EFI_IPv6_ADDRESS Loopback; + UINT16 PayloadLen; + UINT16 TotalLen; + UINT32 FormerHeadOffset; + UINT32 HeadLen; + IP6_FRAGMENT_HEADER *FragmentHead; + UINT16 FragmentOffset; + IP6_CLIP_INFO *Info; + EFI_IPv6_ADDRESS Loopback; HeadLen = 0; PayloadLen = 0; @@ -765,7 +762,7 @@ Ip6PreProcessPacket ( // // Get header information of the packet. // - *Head = (EFI_IP6_HEADER *) NetbufGetByte (*Packet, 0, NULL); + *Head = (EFI_IP6_HEADER *)NetbufGetByte (*Packet, 0, NULL); if (*Head == NULL) { return EFI_INVALID_PARAMETER; } @@ -783,7 +780,8 @@ Ip6PreProcessPacket ( ZeroMem (&Loopback, sizeof (EFI_IPv6_ADDRESS)); Loopback.Addr[15] = 0x1; if ((CompareMem (&Loopback, &(*Head)->DestinationAddress, sizeof (EFI_IPv6_ADDRESS)) == 0) || - (NetIp6IsUnspecifiedAddr (&(*Head)->DestinationAddress))) { + (NetIp6IsUnspecifiedAddr (&(*Head)->DestinationAddress))) + { return EFI_INVALID_PARAMETER; } @@ -818,17 +816,16 @@ Ip6PreProcessPacket ( return EFI_INVALID_PARAMETER; } - PayloadLen = (*Head)->PayloadLength; Info->Start = 0; Info->Length = PayloadLen; Info->End = Info->Start + Info->Length; - Info->HeadLen = (UINT16) sizeof (EFI_IP6_HEADER); + Info->HeadLen = (UINT16)sizeof (EFI_IP6_HEADER); Info->Status = EFI_SUCCESS; Info->LastFrag = FALSE; - TotalLen = (UINT16) (PayloadLen + sizeof (EFI_IP6_HEADER)); + TotalLen = (UINT16)(PayloadLen + sizeof (EFI_IP6_HEADER)); // // Mnp may deliver frame trailer sequence up, trim it off. @@ -845,7 +842,7 @@ Ip6PreProcessPacket ( // Check the extension headers, if exist validate them // if (PayloadLen != 0) { - *Payload = AllocatePool ((UINTN) PayloadLen); + *Payload = AllocatePool ((UINTN)PayloadLen); if (*Payload == NULL) { return EFI_INVALID_PARAMETER; } @@ -858,24 +855,25 @@ Ip6PreProcessPacket ( *Packet, &(*Head)->NextHeader, *Payload, - (UINT32) PayloadLen, + (UINT32)PayloadLen, TRUE, &FormerHeadOffset, LastHead, ExtHdrsLen, UnFragmentLen, Fragmented - )) { + )) + { return EFI_INVALID_PARAMETER; } - HeadLen = sizeof (EFI_IP6_HEADER) + *UnFragmentLen; + HeadLen = sizeof (EFI_IP6_HEADER) + *UnFragmentLen; if (*Fragmented) { // // Get the fragment offset from the Fragment header // - FragmentHead = (IP6_FRAGMENT_HEADER *) NetbufGetByte (*Packet, HeadLen, NULL); + FragmentHead = (IP6_FRAGMENT_HEADER *)NetbufGetByte (*Packet, HeadLen, NULL); if (FragmentHead == NULL) { return EFI_INVALID_PARAMETER; } @@ -895,10 +893,10 @@ Ip6PreProcessPacket ( Info->NextHeader = FragmentHead->NextHeader; } - Info->HeadLen = (UINT16) HeadLen; - HeadLen += sizeof (IP6_FRAGMENT_HEADER); + Info->HeadLen = (UINT16)HeadLen; + HeadLen += sizeof (IP6_FRAGMENT_HEADER); Info->Start = FragmentOffset; - Info->Length = TotalLen - (UINT16) HeadLen; + Info->Length = TotalLen - (UINT16)HeadLen; Info->End = Info->Start + Info->Length; Info->Id = FragmentHead->Identification; Info->FormerNextHeader = FormerHeadOffset; @@ -921,14 +919,14 @@ Ip6PreProcessPacket ( // // Re-check the assembled packet to get the right values. // - *Head = (*Packet)->Ip.Ip6; - PayloadLen = (*Head)->PayloadLength; + *Head = (*Packet)->Ip.Ip6; + PayloadLen = (*Head)->PayloadLength; if (PayloadLen != 0) { if (*Payload != NULL) { FreePool (*Payload); } - *Payload = AllocatePool ((UINTN) PayloadLen); + *Payload = AllocatePool ((UINTN)PayloadLen); if (*Payload == NULL) { return EFI_INVALID_PARAMETER; } @@ -941,14 +939,15 @@ Ip6PreProcessPacket ( *Packet, &(*Head)->NextHeader, *Payload, - (UINT32) PayloadLen, + (UINT32)PayloadLen, TRUE, NULL, LastHead, ExtHdrsLen, UnFragmentLen, Fragmented - )) { + )) + { return EFI_INVALID_PARAMETER; } } @@ -975,23 +974,23 @@ Ip6PreProcessPacket ( **/ VOID Ip6AcceptFrame ( - IN NET_BUF *Packet, - IN EFI_STATUS IoStatus, - IN UINT32 Flag, - IN VOID *Context + IN NET_BUF *Packet, + IN EFI_STATUS IoStatus, + IN UINT32 Flag, + IN VOID *Context ) { - IP6_SERVICE *IpSb; - EFI_IP6_HEADER *Head; - UINT8 *Payload; - UINT8 *LastHead; - UINT32 UnFragmentLen; - UINT32 ExtHdrsLen; - BOOLEAN Fragmented; - EFI_STATUS Status; - EFI_IP6_HEADER ZeroHead; - - IpSb = (IP6_SERVICE *) Context; + IP6_SERVICE *IpSb; + EFI_IP6_HEADER *Head; + UINT8 *Payload; + UINT8 *LastHead; + UINT32 UnFragmentLen; + UINT32 ExtHdrsLen; + BOOLEAN Fragmented; + EFI_STATUS Status; + EFI_IP6_HEADER ZeroHead; + + IpSb = (IP6_SERVICE *)Context; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); Payload = NULL; @@ -1021,6 +1020,7 @@ Ip6AcceptFrame ( if (EFI_ERROR (Status)) { goto Restart; } + // // After trim off, the packet is a esp/ah/udp/tcp/icmp6 net buffer, // and no need consider any other ahead ext headers. @@ -1072,15 +1072,15 @@ Ip6AcceptFrame ( // Packet may have been changed. The ownership of the packet // is transferred to the packet process logic. // - Head = Packet->Ip.Ip6; + Head = Packet->Ip.Ip6; IP6_GET_CLIP_INFO (Packet)->Status = EFI_SUCCESS; switch (*LastHead) { - case IP6_ICMP: - Ip6IcmpHandle (IpSb, Head, Packet); - break; - default: - Ip6Demultiplex (IpSb, Head, Packet); + case IP6_ICMP: + Ip6IcmpHandle (IpSb, Head, Packet); + break; + default: + Ip6Demultiplex (IpSb, Head, Packet); } Packet = NULL; @@ -1103,7 +1103,7 @@ Drop: NetbufFree (Packet); } - return ; + return; } /** @@ -1115,10 +1115,10 @@ Drop: **/ VOID Ip6CreateAssembleTable ( - IN OUT IP6_ASSEMBLE_TABLE *Table + IN OUT IP6_ASSEMBLE_TABLE *Table ) { - UINT32 Index; + UINT32 Index; for (Index = 0; Index < IP6_ASSEMLE_HASH_SIZE; Index++) { InitializeListHead (&Table->Bucket[Index]); @@ -1134,13 +1134,13 @@ Ip6CreateAssembleTable ( **/ VOID Ip6CleanAssembleTable ( - IN OUT IP6_ASSEMBLE_TABLE *Table + IN OUT IP6_ASSEMBLE_TABLE *Table ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_ASSEMBLE_ENTRY *Assemble; - UINT32 Index; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_ASSEMBLE_ENTRY *Assemble; + UINT32 Index; for (Index = 0; Index < IP6_ASSEMLE_HASH_SIZE; Index++) { NET_LIST_FOR_EACH_SAFE (Entry, Next, &Table->Bucket[Index]) { @@ -1152,7 +1152,6 @@ Ip6CleanAssembleTable ( } } - /** The signal handle of IP6's recycle event. It is called back when the upper layer releases the packet. @@ -1164,13 +1163,13 @@ Ip6CleanAssembleTable ( VOID EFIAPI Ip6OnRecyclePacket ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - IP6_RXDATA_WRAP *Wrap; + IP6_RXDATA_WRAP *Wrap; - Wrap = (IP6_RXDATA_WRAP *) Context; + Wrap = (IP6_RXDATA_WRAP *)Context; EfiAcquireLockOrFail (&Wrap->IpInstance->RecycleLock); RemoveEntryList (&Wrap->Link); @@ -1199,13 +1198,13 @@ Ip6OnRecyclePacket ( **/ IP6_RXDATA_WRAP * Ip6WrapRxData ( - IN IP6_PROTOCOL *IpInstance, - IN NET_BUF *Packet + IN IP6_PROTOCOL *IpInstance, + IN NET_BUF *Packet ) { - IP6_RXDATA_WRAP *Wrap; - EFI_IP6_RECEIVE_DATA *RxData; - EFI_STATUS Status; + IP6_RXDATA_WRAP *Wrap; + EFI_IP6_RECEIVE_DATA *RxData; + EFI_STATUS Status; Wrap = AllocatePool (IP6_RXDATA_WRAP_SIZE (Packet->BlockOpNum)); @@ -1215,9 +1214,9 @@ Ip6WrapRxData ( InitializeListHead (&Wrap->Link); - Wrap->IpInstance = IpInstance; - Wrap->Packet = Packet; - RxData = &Wrap->RxData; + Wrap->IpInstance = IpInstance; + Wrap->Packet = Packet; + RxData = &Wrap->RxData; ZeroMem (&RxData->TimeStamp, sizeof (EFI_TIME)); @@ -1239,15 +1238,15 @@ Ip6WrapRxData ( // // The application expects a network byte order header. // - RxData->HeaderLength = sizeof (EFI_IP6_HEADER); - RxData->Header = (EFI_IP6_HEADER *) Ip6NtohHead (Packet->Ip.Ip6); - RxData->DataLength = Packet->TotalSize; + RxData->HeaderLength = sizeof (EFI_IP6_HEADER); + RxData->Header = (EFI_IP6_HEADER *)Ip6NtohHead (Packet->Ip.Ip6); + RxData->DataLength = Packet->TotalSize; // // Build the fragment table to be delivered up. // RxData->FragmentCount = Packet->BlockOpNum; - NetbufBuildExt (Packet, (NET_FRAGMENT *) RxData->FragmentTable, &RxData->FragmentCount); + NetbufBuildExt (Packet, (NET_FRAGMENT *)RxData->FragmentTable, &RxData->FragmentCount); return Wrap; } @@ -1265,19 +1264,19 @@ Ip6WrapRxData ( **/ BOOLEAN Ip6InstanceFrameAcceptable ( - IN IP6_PROTOCOL *IpInstance, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_PROTOCOL *IpInstance, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_ICMP_ERROR_HEAD Icmp; - EFI_IP6_CONFIG_DATA *Config; - IP6_CLIP_INFO *Info; - UINT8 *Proto; - UINT32 Index; - UINT8 *ExtHdrs; - UINT16 ErrMsgPayloadLen; - UINT8 *ErrMsgPayload; + IP6_ICMP_ERROR_HEAD Icmp; + EFI_IP6_CONFIG_DATA *Config; + IP6_CLIP_INFO *Info; + UINT8 *Proto; + UINT32 Index; + UINT8 *ExtHdrs; + UINT16 ErrMsgPayloadLen; + UINT8 *ErrMsgPayload; Config = &IpInstance->ConfigData; Proto = NULL; @@ -1308,14 +1307,15 @@ Ip6InstanceFrameAcceptable ( Packet, &Head->NextHeader, ExtHdrs, - (UINT32) Head->PayloadLength, + (UINT32)Head->PayloadLength, TRUE, NULL, &Proto, NULL, NULL, NULL - )) { + )) + { return FALSE; } @@ -1324,7 +1324,7 @@ Ip6InstanceFrameAcceptable ( // invoked by its packet, like UDP. // if ((*Proto == IP6_ICMP) && (!Config->AcceptAnyProtocol) && (*Proto != Config->DefaultProtocol)) { - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); if (Icmp.Head.Type <= ICMP_V6_ERROR_MAX) { if (!Config->AcceptIcmpErrors) { @@ -1349,7 +1349,8 @@ Ip6InstanceFrameAcceptable ( NULL, NULL, NULL - )) { + )) + { return FALSE; } } @@ -1408,13 +1409,13 @@ Ip6InstanceFrameAcceptable ( **/ EFI_STATUS Ip6InstanceEnquePacket ( - IN IP6_PROTOCOL *IpInstance, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_PROTOCOL *IpInstance, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_CLIP_INFO *Info; - NET_BUF *Clone; + IP6_CLIP_INFO *Info; + NET_BUF *Clone; // // Check whether the packet is acceptable to this instance. @@ -1440,8 +1441,8 @@ Ip6InstanceEnquePacket ( // Set the receive time out for the assembled packet. If it expires, // packet will be removed from the queue. // - Info = IP6_GET_CLIP_INFO (Clone); - Info->Life = IP6_US_TO_SEC (IpInstance->ConfigData.ReceiveTimeout); + Info = IP6_GET_CLIP_INFO (Clone); + Info->Life = IP6_US_TO_SEC (IpInstance->ConfigData.ReceiveTimeout); InsertTailList (&IpInstance->Received, &Clone->List); return EFI_SUCCESS; @@ -1463,7 +1464,7 @@ Ip6InstanceEnquePacket ( **/ EFI_STATUS Ip6InstanceDeliverPacket ( - IN IP6_PROTOCOL *IpInstance + IN IP6_PROTOCOL *IpInstance ) { EFI_IP6_COMPLETION_TOKEN *Token; @@ -1476,7 +1477,6 @@ Ip6InstanceDeliverPacket ( // Deliver a packet if there are both a packet and a receive token. // while (!IsListEmpty (&IpInstance->Received) && !NetMapIsEmpty (&IpInstance->RxTokens)) { - Packet = NET_LIST_HEAD (&IpInstance->Received, NET_BUF, List); if (!NET_BUF_SHARED (Packet)) { @@ -1490,7 +1490,6 @@ Ip6InstanceDeliverPacket ( } RemoveEntryList (&Packet->List); - } else { // // Create a duplicated packet if this packet is shared @@ -1506,9 +1505,9 @@ Ip6InstanceDeliverPacket ( // headless. Trim the head off after copy. The IP head // may be not continuous before the data. // - Head = NetbufAllocSpace (Dup, sizeof (EFI_IP6_HEADER), NET_BUF_HEAD); + Head = NetbufAllocSpace (Dup, sizeof (EFI_IP6_HEADER), NET_BUF_HEAD); ASSERT (Head != NULL); - Dup->Ip.Ip6 = (EFI_IP6_HEADER *) Head; + Dup->Ip.Ip6 = (EFI_IP6_HEADER *)Head; CopyMem (Head, Packet->Ip.Ip6, sizeof (EFI_IP6_HEADER)); NetbufTrim (Dup, sizeof (EFI_IP6_HEADER), TRUE); @@ -1558,18 +1557,18 @@ Ip6InstanceDeliverPacket ( **/ INTN Ip6InterfaceEnquePacket ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet, - IN IP6_INTERFACE *IpIf + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet, + IN IP6_INTERFACE *IpIf ) { - IP6_PROTOCOL *IpInstance; - IP6_CLIP_INFO *Info; - LIST_ENTRY *Entry; - INTN Enqueued; - INTN LocalType; - INTN SavedType; + IP6_PROTOCOL *IpInstance; + IP6_CLIP_INFO *Info; + LIST_ENTRY *Entry; + INTN Enqueued; + INTN LocalType; + INTN SavedType; // // First, check that the packet is acceptable to this interface @@ -1590,10 +1589,10 @@ Ip6InterfaceEnquePacket ( // and pass the local cast type to the IP children on the // interface. The global cast type will be restored later. // - SavedType = Info->CastType; - Info->CastType = (UINT32) LocalType; + SavedType = Info->CastType; + Info->CastType = (UINT32)LocalType; - Enqueued = 0; + Enqueued = 0; NET_LIST_FOR_EACH (Entry, &IpIf->IpInstances) { IpInstance = NET_LIST_USER_STRUCT (Entry, IP6_PROTOCOL, AddrLink); @@ -1604,7 +1603,7 @@ Ip6InterfaceEnquePacket ( } } - Info->CastType = (UINT32) SavedType; + Info->CastType = (UINT32)SavedType; return Enqueued; } @@ -1617,12 +1616,12 @@ Ip6InterfaceEnquePacket ( **/ VOID Ip6InterfaceDeliverPacket ( - IN IP6_SERVICE *IpSb, - IN IP6_INTERFACE *IpIf + IN IP6_SERVICE *IpSb, + IN IP6_INTERFACE *IpIf ) { - IP6_PROTOCOL *IpInstance; - LIST_ENTRY *Entry; + IP6_PROTOCOL *IpInstance; + LIST_ENTRY *Entry; NET_LIST_FOR_EACH (Entry, &IpIf->IpInstances) { IpInstance = NET_LIST_USER_STRUCT (Entry, IP6_PROTOCOL, AddrLink); @@ -1650,15 +1649,14 @@ Ip6InterfaceDeliverPacket ( **/ EFI_STATUS Ip6Demultiplex ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - - LIST_ENTRY *Entry; - IP6_INTERFACE *IpIf; - INTN Enqueued; + LIST_ENTRY *Entry; + IP6_INTERFACE *IpIf; + INTN Enqueued; // // Two pass delivery: first, enqueue a shared copy of the packet @@ -1714,14 +1712,14 @@ Ip6Demultiplex ( EFI_STATUS EFIAPI Ip6SentPacketTicking ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Context + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Context ) { - IP6_TXTOKEN_WRAP *Wrap; + IP6_TXTOKEN_WRAP *Wrap; - Wrap = (IP6_TXTOKEN_WRAP *) Item->Value; + Wrap = (IP6_TXTOKEN_WRAP *)Item->Value; ASSERT (Wrap != NULL); if ((Wrap->Life > 0) && (--Wrap->Life == 0)) { @@ -1739,17 +1737,17 @@ Ip6SentPacketTicking ( **/ VOID Ip6PacketTimerTicking ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ) { - LIST_ENTRY *InstanceEntry; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_PROTOCOL *IpInstance; - IP6_ASSEMBLE_ENTRY *Assemble; - NET_BUF *Packet; - IP6_CLIP_INFO *Info; - UINT32 Index; + LIST_ENTRY *InstanceEntry; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_PROTOCOL *IpInstance; + IP6_ASSEMBLE_ENTRY *Assemble; + NET_BUF *Packet; + IP6_CLIP_INFO *Info; + UINT32 Index; // // First, time out the fragments. The packet's life is counting down @@ -1766,7 +1764,8 @@ Ip6PacketTimerTicking ( // Time Exceeded message should be sent to the source of that fragment. // if ((Assemble->Packet != NULL) && - !IP6_IS_MULTICAST (&Assemble->Head->DestinationAddress)) { + !IP6_IS_MULTICAST (&Assemble->Head->DestinationAddress)) + { Ip6SendIcmpError ( IpSb, Assemble->Packet, @@ -1812,4 +1811,3 @@ Ip6PacketTimerTicking ( NetMapIterate (&IpInstance->TxTokens, Ip6SentPacketTicking, NULL); } } - diff --git a/NetworkPkg/Ip6Dxe/Ip6Input.h b/NetworkPkg/Ip6Dxe/Ip6Input.h index 76a4edb54c..5fcf4af31d 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Input.h +++ b/NetworkPkg/Ip6Dxe/Ip6Input.h @@ -10,23 +10,21 @@ #ifndef __EFI_IP6_INPUT_H__ #define __EFI_IP6_INPUT_H__ -#define IP6_MIN_HEADLEN 40 -#define IP6_MAX_HEADLEN 120 +#define IP6_MIN_HEADLEN 40 +#define IP6_MAX_HEADLEN 120 /// /// 8(ESP header) + 16(max IV) + 16(max padding) + 2(ESP tail) + 12(max ICV) = 54 /// -#define IP6_MAX_IPSEC_HEADLEN 54 +#define IP6_MAX_IPSEC_HEADLEN 54 - -#define IP6_ASSEMLE_HASH_SIZE 127 +#define IP6_ASSEMLE_HASH_SIZE 127 /// /// Lift time in seconds. /// -#define IP6_FRAGMENT_LIFE 60 -#define IP6_MAX_PACKET_SIZE 65535 - +#define IP6_FRAGMENT_LIFE 60 +#define IP6_MAX_PACKET_SIZE 65535 -#define IP6_GET_CLIP_INFO(Packet) ((IP6_CLIP_INFO *) ((Packet)->ProtoData)) +#define IP6_GET_CLIP_INFO(Packet) ((IP6_CLIP_INFO *) ((Packet)->ProtoData)) #define IP6_ASSEMBLE_HASH(Dst, Src, Id) \ ((*((UINT32 *) (Dst)) + *((UINT32 *) (Src)) + (Id)) % IP6_ASSEMLE_HASH_SIZE) @@ -45,42 +43,42 @@ // life. If it isn't consumed before Life reaches zero, the packet is released. // typedef struct { - UINT32 LinkFlag; - INT32 CastType; - INT32 Start; - INT32 End; - INT32 Length; - UINT32 Life; - EFI_STATUS Status; - UINT32 Id; - UINT16 HeadLen; - UINT8 NextHeader; - UINT8 LastFrag; - UINT32 FormerNextHeader; + UINT32 LinkFlag; + INT32 CastType; + INT32 Start; + INT32 End; + INT32 Length; + UINT32 Life; + EFI_STATUS Status; + UINT32 Id; + UINT16 HeadLen; + UINT8 NextHeader; + UINT8 LastFrag; + UINT32 FormerNextHeader; } IP6_CLIP_INFO; // // Structure used to assemble IP packets. // typedef struct { - LIST_ENTRY Link; - LIST_ENTRY Fragments; // List of all the fragments of this packet + LIST_ENTRY Link; + LIST_ENTRY Fragments; // List of all the fragments of this packet // // Identity of one IP6 packet. Each fragment of a packet has // the same (Dst, Src, Id). // - EFI_IPv6_ADDRESS Dst; - EFI_IPv6_ADDRESS Src; - UINT32 Id; + EFI_IPv6_ADDRESS Dst; + EFI_IPv6_ADDRESS Src; + UINT32 Id; - UINT32 TotalLen; - UINT32 CurLen; - UINT32 Life; // Count down life for the packet. + UINT32 TotalLen; + UINT32 CurLen; + UINT32 Life; // Count down life for the packet. - EFI_IP6_HEADER *Head; // IP head of the first fragment - IP6_CLIP_INFO *Info; // Per packet information of the first fragment - NET_BUF *Packet; // The first fragment of the packet + EFI_IP6_HEADER *Head; // IP head of the first fragment + IP6_CLIP_INFO *Info; // Per packet information of the first fragment + NET_BUF *Packet; // The first fragment of the packet } IP6_ASSEMBLE_ENTRY; // @@ -89,7 +87,7 @@ typedef struct { // as hash table. // typedef struct { - LIST_ENTRY Bucket[IP6_ASSEMLE_HASH_SIZE]; + LIST_ENTRY Bucket[IP6_ASSEMLE_HASH_SIZE]; } IP6_ASSEMBLE_TABLE; /** @@ -105,10 +103,10 @@ typedef struct { **/ VOID Ip6AcceptFrame ( - IN NET_BUF *Packet, - IN EFI_STATUS IoStatus, - IN UINT32 Flag, - IN VOID *Context + IN NET_BUF *Packet, + IN EFI_STATUS IoStatus, + IN UINT32 Flag, + IN VOID *Context ); /** @@ -127,7 +125,7 @@ Ip6AcceptFrame ( **/ EFI_STATUS Ip6InstanceDeliverPacket ( - IN IP6_PROTOCOL *IpInstance + IN IP6_PROTOCOL *IpInstance ); /** @@ -175,7 +173,7 @@ Ip6IpSecProcessPacket ( **/ VOID Ip6CreateAssembleTable ( - IN OUT IP6_ASSEMBLE_TABLE *Table + IN OUT IP6_ASSEMBLE_TABLE *Table ); /** @@ -187,7 +185,7 @@ Ip6CreateAssembleTable ( **/ VOID Ip6CleanAssembleTable ( - IN OUT IP6_ASSEMBLE_TABLE *Table + IN OUT IP6_ASSEMBLE_TABLE *Table ); /** @@ -210,9 +208,9 @@ Ip6CleanAssembleTable ( **/ EFI_STATUS Ip6Demultiplex ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -223,7 +221,7 @@ Ip6Demultiplex ( **/ VOID Ip6PacketTimerTicking ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ); #endif diff --git a/NetworkPkg/Ip6Dxe/Ip6Mld.c b/NetworkPkg/Ip6Dxe/Ip6Mld.c index ba12089dee..e6b2b653e2 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Mld.c +++ b/NetworkPkg/Ip6Dxe/Ip6Mld.c @@ -21,12 +21,12 @@ **/ IP6_MLD_GROUP * Ip6CreateMldEntry ( - IN OUT IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *MulticastAddr, - IN UINT32 DelayTimer + IN OUT IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *MulticastAddr, + IN UINT32 DelayTimer ) { - IP6_MLD_GROUP *Entry; + IP6_MLD_GROUP *Entry; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); ASSERT (MulticastAddr != NULL && IP6_IS_MULTICAST (MulticastAddr)); @@ -54,12 +54,12 @@ Ip6CreateMldEntry ( **/ IP6_MLD_GROUP * Ip6FindMldEntry ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *MulticastAddr + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *MulticastAddr ) { - LIST_ENTRY *Entry; - IP6_MLD_GROUP *Group; + LIST_ENTRY *Entry; + IP6_MLD_GROUP *Group; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); ASSERT (MulticastAddr != NULL && IP6_IS_MULTICAST (MulticastAddr)); @@ -88,13 +88,13 @@ Ip6FindMldEntry ( **/ INTN Ip6FindMac ( - IN IP6_MLD_SERVICE_DATA *MldCtrl, - IN EFI_MAC_ADDRESS *Mac + IN IP6_MLD_SERVICE_DATA *MldCtrl, + IN EFI_MAC_ADDRESS *Mac ) { - LIST_ENTRY *Entry; - IP6_MLD_GROUP *Group; - INTN Count; + LIST_ENTRY *Entry; + IP6_MLD_GROUP *Group; + INTN Count; Count = 0; @@ -125,20 +125,20 @@ Ip6FindMac ( **/ EFI_STATUS Ip6SendMldReport ( - IN IP6_SERVICE *IpSb, - IN IP6_INTERFACE *Interface OPTIONAL, - IN EFI_IPv6_ADDRESS *MulticastAddr + IN IP6_SERVICE *IpSb, + IN IP6_INTERFACE *Interface OPTIONAL, + IN EFI_IPv6_ADDRESS *MulticastAddr ) { - IP6_MLD_HEAD *MldHead; - NET_BUF *Packet; - EFI_IP6_HEADER Head; - UINT16 PayloadLen; - UINTN OptionLen; - UINT8 *Options; - EFI_STATUS Status; - UINT16 HeadChecksum; - UINT16 PseudoChecksum; + IP6_MLD_HEAD *MldHead; + NET_BUF *Packet; + EFI_IP6_HEADER Head; + UINT16 PayloadLen; + UINTN OptionLen; + UINT8 *Options; + EFI_STATUS Status; + UINT16 HeadChecksum; + UINT16 PseudoChecksum; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); ASSERT (MulticastAddr != NULL && IP6_IS_MULTICAST (MulticastAddr)); @@ -149,11 +149,11 @@ Ip6SendMldReport ( // OptionLen = 0; - Status = Ip6FillHopByHop (NULL, &OptionLen, IP6_ICMP); + Status = Ip6FillHopByHop (NULL, &OptionLen, IP6_ICMP); ASSERT (Status == EFI_BUFFER_TOO_SMALL); - PayloadLen = (UINT16) (OptionLen + sizeof (IP6_MLD_HEAD)); - Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32) PayloadLen); + PayloadLen = (UINT16)(OptionLen + sizeof (IP6_MLD_HEAD)); + Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32)PayloadLen); if (Packet == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -163,11 +163,11 @@ Ip6SendMldReport ( // RFC3590: Use link-local address as source address if it is available, // otherwise use the unspecified address. // - Head.FlowLabelL = 0; - Head.FlowLabelH = 0; - Head.PayloadLength = HTONS (PayloadLen); - Head.NextHeader = IP6_HOP_BY_HOP; - Head.HopLimit = 1; + Head.FlowLabelL = 0; + Head.FlowLabelH = 0; + Head.PayloadLength = HTONS (PayloadLen); + Head.NextHeader = IP6_HOP_BY_HOP; + Head.HopLimit = 1; IP6_COPY_ADDRESS (&Head.DestinationAddress, MulticastAddr); // @@ -180,7 +180,7 @@ Ip6SendMldReport ( // // Fill a IPv6 Router Alert option in a Hop-by-Hop Options Header // - Options = NetbufAllocSpace (Packet, (UINT32) OptionLen, FALSE); + Options = NetbufAllocSpace (Packet, (UINT32)OptionLen, FALSE); ASSERT (Options != NULL); Status = Ip6FillHopByHop (Options, &OptionLen, IP6_ICMP); if (EFI_ERROR (Status)) { @@ -192,14 +192,14 @@ Ip6SendMldReport ( // // Fill in MLD message - Report // - MldHead = (IP6_MLD_HEAD *) NetbufAllocSpace (Packet, sizeof (IP6_MLD_HEAD), FALSE); + MldHead = (IP6_MLD_HEAD *)NetbufAllocSpace (Packet, sizeof (IP6_MLD_HEAD), FALSE); ASSERT (MldHead != NULL); ZeroMem (MldHead, sizeof (IP6_MLD_HEAD)); MldHead->Head.Type = ICMP_V6_LISTENER_REPORT; MldHead->Head.Code = 0; IP6_COPY_ADDRESS (&MldHead->Group, MulticastAddr); - HeadChecksum = NetblockChecksum ((UINT8 *) MldHead, sizeof (IP6_MLD_HEAD)); + HeadChecksum = NetblockChecksum ((UINT8 *)MldHead, sizeof (IP6_MLD_HEAD)); PseudoChecksum = NetIp6PseudoHeadChecksum ( &Head.SourceAddress, &Head.DestinationAddress, @@ -229,20 +229,20 @@ Ip6SendMldReport ( **/ EFI_STATUS Ip6SendMldDone ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *MulticastAddr + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *MulticastAddr ) { - IP6_MLD_HEAD *MldHead; - NET_BUF *Packet; - EFI_IP6_HEADER Head; - UINT16 PayloadLen; - UINTN OptionLen; - UINT8 *Options; - EFI_STATUS Status; - EFI_IPv6_ADDRESS Destination; - UINT16 HeadChecksum; - UINT16 PseudoChecksum; + IP6_MLD_HEAD *MldHead; + NET_BUF *Packet; + EFI_IP6_HEADER Head; + UINT16 PayloadLen; + UINTN OptionLen; + UINT8 *Options; + EFI_STATUS Status; + EFI_IPv6_ADDRESS Destination; + UINT16 HeadChecksum; + UINT16 PseudoChecksum; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); ASSERT (MulticastAddr != NULL && IP6_IS_MULTICAST (MulticastAddr)); @@ -253,11 +253,11 @@ Ip6SendMldDone ( // OptionLen = 0; - Status = Ip6FillHopByHop (NULL, &OptionLen, IP6_ICMP); + Status = Ip6FillHopByHop (NULL, &OptionLen, IP6_ICMP); ASSERT (Status == EFI_BUFFER_TOO_SMALL); - PayloadLen = (UINT16) (OptionLen + sizeof (IP6_MLD_HEAD)); - Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32) PayloadLen); + PayloadLen = (UINT16)(OptionLen + sizeof (IP6_MLD_HEAD)); + Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32)PayloadLen); if (Packet == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -265,11 +265,11 @@ Ip6SendMldDone ( // // Create the basic IPv6 header. // - Head.FlowLabelL = 0; - Head.FlowLabelH = 0; - Head.PayloadLength = HTONS (PayloadLen); - Head.NextHeader = IP6_HOP_BY_HOP; - Head.HopLimit = 1; + Head.FlowLabelL = 0; + Head.FlowLabelH = 0; + Head.PayloadLength = HTONS (PayloadLen); + Head.NextHeader = IP6_HOP_BY_HOP; + Head.HopLimit = 1; // // If Link-Local address is not ready, we use unspecified address. @@ -284,7 +284,7 @@ Ip6SendMldDone ( // // Fill a IPv6 Router Alert option in a Hop-by-Hop Options Header // - Options = NetbufAllocSpace (Packet, (UINT32) OptionLen, FALSE); + Options = NetbufAllocSpace (Packet, (UINT32)OptionLen, FALSE); ASSERT (Options != NULL); Status = Ip6FillHopByHop (Options, &OptionLen, IP6_ICMP); if (EFI_ERROR (Status)) { @@ -296,14 +296,14 @@ Ip6SendMldDone ( // // Fill in MLD message - Done // - MldHead = (IP6_MLD_HEAD *) NetbufAllocSpace (Packet, sizeof (IP6_MLD_HEAD), FALSE); + MldHead = (IP6_MLD_HEAD *)NetbufAllocSpace (Packet, sizeof (IP6_MLD_HEAD), FALSE); ASSERT (MldHead != NULL); ZeroMem (MldHead, sizeof (IP6_MLD_HEAD)); MldHead->Head.Type = ICMP_V6_LISTENER_DONE; MldHead->Head.Code = 0; IP6_COPY_ADDRESS (&MldHead->Group, MulticastAddr); - HeadChecksum = NetblockChecksum ((UINT8 *) MldHead, sizeof (IP6_MLD_HEAD)); + HeadChecksum = NetblockChecksum ((UINT8 *)MldHead, sizeof (IP6_MLD_HEAD)); PseudoChecksum = NetIp6PseudoHeadChecksum ( &Head.SourceAddress, &Head.DestinationAddress, @@ -332,12 +332,12 @@ Ip6SendMldDone ( **/ EFI_STATUS Ip6InitMld ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ) { - EFI_IPv6_ADDRESS AllNodes; - IP6_MLD_GROUP *Group; - EFI_STATUS Status; + EFI_IPv6_ADDRESS AllNodes; + IP6_MLD_GROUP *Group; + EFI_STATUS Status; // // Join the link-scope all-nodes multicast address (FF02::1). @@ -347,7 +347,7 @@ Ip6InitMld ( Ip6SetToAllNodeMulticast (FALSE, IP6_LINK_LOCAL_SCOPE, &AllNodes); - Group = Ip6CreateMldEntry (IpSb, &AllNodes, (UINT32) IP6_INFINIT_LIFETIME); + Group = Ip6CreateMldEntry (IpSb, &AllNodes, (UINT32)IP6_INFINIT_LIFETIME); if (Group == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -388,11 +388,11 @@ ERROR: **/ EFI_STATUS Ip6CombineGroups ( - IN OUT IP6_PROTOCOL *IpInstance, - IN EFI_IPv6_ADDRESS *Group + IN OUT IP6_PROTOCOL *IpInstance, + IN EFI_IPv6_ADDRESS *Group ) { - EFI_IPv6_ADDRESS *GroupList; + EFI_IPv6_ADDRESS *GroupList; NET_CHECK_SIGNATURE (IpInstance, IP6_PROTOCOL_SIGNATURE); ASSERT (Group != NULL && IP6_IS_MULTICAST (Group)); @@ -437,12 +437,12 @@ Ip6CombineGroups ( **/ EFI_STATUS Ip6RemoveGroup ( - IN OUT IP6_PROTOCOL *IpInstance, - IN EFI_IPv6_ADDRESS *Group + IN OUT IP6_PROTOCOL *IpInstance, + IN EFI_IPv6_ADDRESS *Group ) { - UINT32 Index; - UINT32 Count; + UINT32 Index; + UINT32 Count; Count = IpInstance->GroupCount; @@ -481,13 +481,13 @@ Ip6RemoveGroup ( **/ EFI_STATUS Ip6JoinGroup ( - IN IP6_SERVICE *IpSb, - IN IP6_INTERFACE *Interface, - IN EFI_IPv6_ADDRESS *Address + IN IP6_SERVICE *IpSb, + IN IP6_INTERFACE *Interface, + IN EFI_IPv6_ADDRESS *Address ) { - IP6_MLD_GROUP *Group; - EFI_STATUS Status; + IP6_MLD_GROUP *Group; + EFI_STATUS Status; Group = Ip6FindMldEntry (IpSb, Address); if (Group != NULL) { @@ -545,12 +545,12 @@ ERROR: **/ EFI_STATUS Ip6LeaveGroup ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Address + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Address ) { - IP6_MLD_GROUP *Group; - EFI_STATUS Status; + IP6_MLD_GROUP *Group; + EFI_STATUS Status; Group = Ip6FindMldEntry (IpSb, Address); if (Group == NULL) { @@ -611,15 +611,15 @@ Ip6LeaveGroup ( **/ EFI_STATUS Ip6Groups ( - IN IP6_PROTOCOL *IpInstance, - IN BOOLEAN JoinFlag, - IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL + IN IP6_PROTOCOL *IpInstance, + IN BOOLEAN JoinFlag, + IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL ) { - EFI_STATUS Status; - IP6_SERVICE *IpSb; - UINT32 Index; - EFI_IPv6_ADDRESS *Group; + EFI_STATUS Status; + IP6_SERVICE *IpSb; + UINT32 Index; + EFI_IPv6_ADDRESS *Group; IpSb = IpInstance->Service; @@ -690,13 +690,13 @@ Ip6Groups ( **/ EFI_STATUS Ip6UpdateDelayTimer ( - IN IP6_SERVICE *IpSb, - IN UINT16 MaxRespDelay, - IN EFI_IPv6_ADDRESS *MulticastAddr, - IN OUT IP6_MLD_GROUP *Group + IN IP6_SERVICE *IpSb, + IN UINT16 MaxRespDelay, + IN EFI_IPv6_ADDRESS *MulticastAddr, + IN OUT IP6_MLD_GROUP *Group ) { - UINT32 Delay; + UINT32 Delay; // // If the Query packet specifies a Maximum Response Delay of zero, perform timer @@ -707,14 +707,14 @@ Ip6UpdateDelayTimer ( return Ip6SendMldReport (IpSb, NULL, MulticastAddr); } - Delay = (UINT32) (MaxRespDelay / 1000); + Delay = (UINT32)(MaxRespDelay / 1000); // // Sets a delay timer to a random value selected from the range [0, Maximum Response Delay] // If a timer is already running, resets it if the request Maximum Response Delay // is less than the remaining value of the running timer. // - if (Group->DelayTimer == 0 || Delay < Group->DelayTimer) { + if ((Group->DelayTimer == 0) || (Delay < Group->DelayTimer)) { Group->DelayTimer = Delay / 4294967295UL * NET_RANDOM (NetRandomInitSeed ()); } @@ -736,16 +736,16 @@ Ip6UpdateDelayTimer ( **/ EFI_STATUS Ip6ProcessMldQuery ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - EFI_IPv6_ADDRESS AllNodes; - IP6_MLD_GROUP *Group; - IP6_MLD_HEAD MldPacket; - LIST_ENTRY *Entry; - EFI_STATUS Status; + EFI_IPv6_ADDRESS AllNodes; + IP6_MLD_GROUP *Group; + IP6_MLD_HEAD MldPacket; + LIST_ENTRY *Entry; + EFI_STATUS Status; Status = EFI_INVALID_PARAMETER; @@ -756,14 +756,14 @@ Ip6ProcessMldQuery ( goto Exit; } - if (Head->HopLimit != 1 || !IP6_IS_MULTICAST (&Head->DestinationAddress)) { + if ((Head->HopLimit != 1) || !IP6_IS_MULTICAST (&Head->DestinationAddress)) { goto Exit; } // // The Packet points to MLD report raw data without Hop-By-Hop option. // - NetbufCopy (Packet, 0, sizeof (IP6_MLD_HEAD), (UINT8 *) &MldPacket); + NetbufCopy (Packet, 0, sizeof (IP6_MLD_HEAD), (UINT8 *)&MldPacket); MldPacket.MaxRespDelay = NTOHS (MldPacket.MaxRespDelay); Ip6SetToAllNodeMulticast (FALSE, IP6_LINK_LOCAL_SCOPE, &AllNodes); @@ -774,6 +774,7 @@ Ip6ProcessMldQuery ( if (!EFI_IP6_EQUAL (&Head->DestinationAddress, &MldPacket.Group)) { goto Exit; } + // // The node is not listening but it receives the specific query. Just return. // @@ -824,14 +825,14 @@ Exit: **/ EFI_STATUS Ip6ProcessMldReport ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_MLD_HEAD MldPacket; - IP6_MLD_GROUP *Group; - EFI_STATUS Status; + IP6_MLD_HEAD MldPacket; + IP6_MLD_GROUP *Group; + EFI_STATUS Status; Status = EFI_INVALID_PARAMETER; @@ -842,14 +843,14 @@ Ip6ProcessMldReport ( goto Exit; } - if (Head->HopLimit != 1 || !IP6_IS_MULTICAST (&Head->DestinationAddress)) { + if ((Head->HopLimit != 1) || !IP6_IS_MULTICAST (&Head->DestinationAddress)) { goto Exit; } // // The Packet points to MLD report raw data without Hop-By-Hop option. // - NetbufCopy (Packet, 0, sizeof (IP6_MLD_HEAD), (UINT8 *) &MldPacket); + NetbufCopy (Packet, 0, sizeof (IP6_MLD_HEAD), (UINT8 *)&MldPacket); if (!EFI_IP6_EQUAL (&Head->DestinationAddress, &MldPacket.Group)) { goto Exit; } @@ -883,11 +884,11 @@ Exit: **/ VOID Ip6MldTimerTicking ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ) { - IP6_MLD_GROUP *Group; - LIST_ENTRY *Entry; + IP6_MLD_GROUP *Group; + LIST_ENTRY *Entry; // // Send solicited report when timer expires @@ -899,4 +900,3 @@ Ip6MldTimerTicking ( } } } - diff --git a/NetworkPkg/Ip6Dxe/Ip6Mld.h b/NetworkPkg/Ip6Dxe/Ip6Mld.h index 89dd6c21fb..0b1fa21c38 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Mld.h +++ b/NetworkPkg/Ip6Dxe/Ip6Mld.h @@ -10,14 +10,14 @@ #ifndef __EFI_IP6_MLD_H__ #define __EFI_IP6_MLD_H__ -#define IP6_UNSOLICITED_REPORT_INTERVAL 10 +#define IP6_UNSOLICITED_REPORT_INTERVAL 10 #pragma pack(1) typedef struct { - IP6_ICMP_HEAD Head; - UINT16 MaxRespDelay; - UINT16 Reserved; - EFI_IPv6_ADDRESS Group; + IP6_ICMP_HEAD Head; + UINT16 MaxRespDelay; + UINT16 Reserved; + EFI_IPv6_ADDRESS Group; } IP6_MLD_HEAD; #pragma pack() @@ -28,12 +28,12 @@ typedef struct { // "idle listener" state. // typedef struct { - LIST_ENTRY Link; - INTN RefCnt; - EFI_IPv6_ADDRESS Address; - UINT32 DelayTimer; - BOOLEAN SendByUs; - EFI_MAC_ADDRESS Mac; + LIST_ENTRY Link; + INTN RefCnt; + EFI_IPv6_ADDRESS Address; + UINT32 DelayTimer; + BOOLEAN SendByUs; + EFI_MAC_ADDRESS Mac; } IP6_MLD_GROUP; // @@ -42,8 +42,8 @@ typedef struct { // connected network is v1 or v2. // typedef struct { - INTN Mldv1QuerySeen; - LIST_ENTRY Groups; + INTN Mldv1QuerySeen; + LIST_ENTRY Groups; } IP6_MLD_SERVICE_DATA; /** @@ -57,8 +57,8 @@ typedef struct { **/ IP6_MLD_GROUP * Ip6FindMldEntry ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *MulticastAddr + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *MulticastAddr ); /** @@ -74,7 +74,7 @@ Ip6FindMldEntry ( **/ EFI_STATUS Ip6InitMld ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ); /** @@ -91,9 +91,9 @@ Ip6InitMld ( **/ EFI_STATUS Ip6JoinGroup ( - IN IP6_SERVICE *IpSb, - IN IP6_INTERFACE *Interface, - IN EFI_IPv6_ADDRESS *Address + IN IP6_SERVICE *IpSb, + IN IP6_INTERFACE *Interface, + IN EFI_IPv6_ADDRESS *Address ); /** @@ -109,8 +109,8 @@ Ip6JoinGroup ( **/ EFI_STATUS Ip6LeaveGroup ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Address + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Address ); /** @@ -131,9 +131,9 @@ Ip6LeaveGroup ( **/ EFI_STATUS Ip6Groups ( - IN IP6_PROTOCOL *IpInstance, - IN BOOLEAN JoinFlag, - IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL + IN IP6_PROTOCOL *IpInstance, + IN BOOLEAN JoinFlag, + IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL ); /** @@ -151,9 +151,9 @@ Ip6Groups ( **/ EFI_STATUS Ip6ProcessMldQuery ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -170,12 +170,11 @@ Ip6ProcessMldQuery ( **/ EFI_STATUS Ip6ProcessMldReport ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); - /** The heartbeat timer of the MLD module. It sends out solicited MLD report when DelayTimer expires. @@ -185,8 +184,7 @@ Ip6ProcessMldReport ( **/ VOID Ip6MldTimerTicking ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ); #endif - diff --git a/NetworkPkg/Ip6Dxe/Ip6Nd.c b/NetworkPkg/Ip6Dxe/Ip6Nd.c index 0780a98cb3..c10c7017f8 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Nd.c +++ b/NetworkPkg/Ip6Dxe/Ip6Nd.c @@ -9,7 +9,7 @@ #include "Ip6Impl.h" -EFI_MAC_ADDRESS mZeroMacAddress; +EFI_MAC_ADDRESS mZeroMacAddress; /** Update the ReachableTime in IP6 service binding instance data, in milliseconds. @@ -22,10 +22,10 @@ Ip6UpdateReachableTime ( IN OUT IP6_SERVICE *IpSb ) { - UINT32 Random; + UINT32 Random; - Random = (NetRandomInitSeed () / 4294967295UL) * IP6_RANDOM_FACTOR_SCALE; - Random = Random + IP6_MIN_RANDOM_FACTOR_SCALED; + Random = (NetRandomInitSeed () / 4294967295UL) * IP6_RANDOM_FACTOR_SCALE; + Random = Random + IP6_MIN_RANDOM_FACTOR_SCALED; IpSb->ReachableTime = (IpSb->BaseReachableTime * Random) / IP6_RANDOM_FACTOR_SCALE; } @@ -43,17 +43,17 @@ Ip6UpdateReachableTime ( **/ EFI_STATUS Ip6BuildEfiNeighborCache ( - IN IP6_PROTOCOL *IpInstance, - OUT UINT32 *NeighborCount, - OUT EFI_IP6_NEIGHBOR_CACHE **NeighborCache + IN IP6_PROTOCOL *IpInstance, + OUT UINT32 *NeighborCount, + OUT EFI_IP6_NEIGHBOR_CACHE **NeighborCache ) { - IP6_NEIGHBOR_ENTRY *Neighbor; - LIST_ENTRY *Entry; - IP6_SERVICE *IpSb; - UINT32 Count; - EFI_IP6_NEIGHBOR_CACHE *EfiNeighborCache; - EFI_IP6_NEIGHBOR_CACHE *NeighborCacheTmp; + IP6_NEIGHBOR_ENTRY *Neighbor; + LIST_ENTRY *Entry; + IP6_SERVICE *IpSb; + UINT32 Count; + EFI_IP6_NEIGHBOR_CACHE *EfiNeighborCache; + EFI_IP6_NEIGHBOR_CACHE *NeighborCacheTmp; NET_CHECK_SIGNATURE (IpInstance, IP6_PROTOCOL_SIGNATURE); ASSERT (NeighborCount != NULL && NeighborCache != NULL); @@ -82,7 +82,7 @@ Ip6BuildEfiNeighborCache ( EfiNeighborCache = NeighborCacheTmp + Count; - EfiNeighborCache->State = Neighbor->State; + EfiNeighborCache->State = Neighbor->State; IP6_COPY_ADDRESS (&EfiNeighborCache->Neighbor, &Neighbor->Neighbor); IP6_COPY_LINK_ADDRESS (&EfiNeighborCache->LinkAddress, &Neighbor->LinkAddress); @@ -114,12 +114,12 @@ Ip6BuildPrefixTable ( OUT EFI_IP6_ADDRESS_INFO **PrefixTable ) { - LIST_ENTRY *Entry; - IP6_SERVICE *IpSb; - UINT32 Count; - IP6_PREFIX_LIST_ENTRY *PrefixList; - EFI_IP6_ADDRESS_INFO *EfiPrefix; - EFI_IP6_ADDRESS_INFO *PrefixTableTmp; + LIST_ENTRY *Entry; + IP6_SERVICE *IpSb; + UINT32 Count; + IP6_PREFIX_LIST_ENTRY *PrefixList; + EFI_IP6_ADDRESS_INFO *EfiPrefix; + EFI_IP6_ADDRESS_INFO *PrefixTableTmp; NET_CHECK_SIGNATURE (IpInstance, IP6_PROTOCOL_SIGNATURE); ASSERT (PrefixCount != NULL && PrefixTable != NULL); @@ -178,21 +178,21 @@ Ip6BuildPrefixTable ( **/ IP6_PREFIX_LIST_ENTRY * Ip6CreatePrefixListEntry ( - IN IP6_SERVICE *IpSb, - IN BOOLEAN OnLinkOrAuto, - IN UINT32 ValidLifetime, - IN UINT32 PreferredLifetime, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *Prefix + IN IP6_SERVICE *IpSb, + IN BOOLEAN OnLinkOrAuto, + IN UINT32 ValidLifetime, + IN UINT32 PreferredLifetime, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *Prefix ) { - IP6_PREFIX_LIST_ENTRY *PrefixEntry; - IP6_ROUTE_ENTRY *RtEntry; - LIST_ENTRY *ListHead; - LIST_ENTRY *Entry; - IP6_PREFIX_LIST_ENTRY *TmpPrefixEntry; + IP6_PREFIX_LIST_ENTRY *PrefixEntry; + IP6_ROUTE_ENTRY *RtEntry; + LIST_ENTRY *ListHead; + LIST_ENTRY *Entry; + IP6_PREFIX_LIST_ENTRY *TmpPrefixEntry; - if (Prefix == NULL || PreferredLifetime > ValidLifetime || PrefixLength > IP6_PREFIX_MAX) { + if ((Prefix == NULL) || (PreferredLifetime > ValidLifetime) || (PrefixLength > IP6_PREFIX_MAX)) { return NULL; } @@ -205,7 +205,7 @@ Ip6CreatePrefixListEntry ( Prefix ); if (PrefixEntry != NULL) { - PrefixEntry->RefCnt ++; + PrefixEntry->RefCnt++; return PrefixEntry; } @@ -242,7 +242,7 @@ Ip6CreatePrefixListEntry ( // is put ahead in the list. // NET_LIST_FOR_EACH (Entry, ListHead) { - TmpPrefixEntry = NET_LIST_USER_STRUCT(Entry, IP6_PREFIX_LIST_ENTRY, Link); + TmpPrefixEntry = NET_LIST_USER_STRUCT (Entry, IP6_PREFIX_LIST_ENTRY, Link); if (TmpPrefixEntry->PrefixLength < PrefixEntry->PrefixLength) { break; @@ -274,26 +274,26 @@ Ip6DestroyPrefixListEntry ( IN BOOLEAN ImmediateDelete ) { - LIST_ENTRY *Entry; - IP6_INTERFACE *IpIf; - EFI_STATUS Status; + LIST_ENTRY *Entry; + IP6_INTERFACE *IpIf; + EFI_STATUS Status; if ((!ImmediateDelete) && (PrefixEntry->RefCnt > 0) && ((--PrefixEntry->RefCnt) > 0)) { - return ; + return; } if (OnLinkOrAuto) { - // - // Remove the direct route for onlink prefix from route table. - // - do { - Status = Ip6DelRoute ( - IpSb->RouteTable, - &PrefixEntry->Prefix, - PrefixEntry->PrefixLength, - NULL - ); - } while (Status != EFI_NOT_FOUND); + // + // Remove the direct route for onlink prefix from route table. + // + do { + Status = Ip6DelRoute ( + IpSb->RouteTable, + &PrefixEntry->Prefix, + PrefixEntry->PrefixLength, + NULL + ); + } while (Status != EFI_NOT_FOUND); } else { // // Remove the corresponding addresses generated from this autonomous prefix. @@ -324,15 +324,15 @@ Ip6DestroyPrefixListEntry ( **/ IP6_PREFIX_LIST_ENTRY * Ip6FindPrefixListEntry ( - IN IP6_SERVICE *IpSb, - IN BOOLEAN OnLinkOrAuto, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *Prefix + IN IP6_SERVICE *IpSb, + IN BOOLEAN OnLinkOrAuto, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *Prefix ) { - IP6_PREFIX_LIST_ENTRY *PrefixList; - LIST_ENTRY *Entry; - LIST_ENTRY *ListHead; + IP6_PREFIX_LIST_ENTRY *PrefixList; + LIST_ENTRY *Entry; + LIST_ENTRY *ListHead; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); ASSERT (Prefix != NULL); @@ -349,8 +349,9 @@ Ip6FindPrefixListEntry ( // // Perform exactly prefix match. // - if (PrefixList->PrefixLength == PrefixLength && - NetIp6IsNetEqual (&PrefixList->Prefix, Prefix, PrefixLength)) { + if ((PrefixList->PrefixLength == PrefixLength) && + NetIp6IsNetEqual (&PrefixList->Prefix, Prefix, PrefixLength)) + { return PrefixList; } } else { @@ -377,14 +378,14 @@ Ip6FindPrefixListEntry ( **/ VOID Ip6CleanPrefixListTable ( - IN IP6_SERVICE *IpSb, - IN LIST_ENTRY *ListHead + IN IP6_SERVICE *IpSb, + IN LIST_ENTRY *ListHead ) { - IP6_PREFIX_LIST_ENTRY *PrefixList; - BOOLEAN OnLink; + IP6_PREFIX_LIST_ENTRY *PrefixList; + BOOLEAN OnLink; - OnLink = (BOOLEAN) (ListHead == &IpSb->OnlinkPrefix); + OnLink = (BOOLEAN)(ListHead == &IpSb->OnlinkPrefix); while (!IsListEmpty (ListHead)) { PrefixList = NET_LIST_HEAD (ListHead, IP6_PREFIX_LIST_ENTRY, Link); @@ -402,25 +403,25 @@ Ip6CleanPrefixListTable ( **/ VOID Ip6OnArpResolved ( - IN VOID *Context + IN VOID *Context ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_NEIGHBOR_ENTRY *ArpQue; - IP6_SERVICE *IpSb; - IP6_LINK_TX_TOKEN *Token; - EFI_STATUS Status; - BOOLEAN Sent; - - ArpQue = (IP6_NEIGHBOR_ENTRY *) Context; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_NEIGHBOR_ENTRY *ArpQue; + IP6_SERVICE *IpSb; + IP6_LINK_TX_TOKEN *Token; + EFI_STATUS Status; + BOOLEAN Sent; + + ArpQue = (IP6_NEIGHBOR_ENTRY *)Context; if ((ArpQue == NULL) || (ArpQue->Interface == NULL)) { - return ; + return; } - IpSb = ArpQue->Interface->Service; + IpSb = ArpQue->Interface->Service; if ((IpSb == NULL) || (IpSb->Signature != IP6_SERVICE_SIGNATURE)) { - return ; + return; } // @@ -430,7 +431,7 @@ Ip6OnArpResolved ( // if (NET_MAC_EQUAL (&ArpQue->LinkAddress, &mZeroMacAddress, IpSb->SnpMode.HwAddressSize)) { Ip6FreeNeighborEntry (IpSb, ArpQue, FALSE, TRUE, EFI_NO_MAPPING, NULL, NULL); - return ; + return; } // @@ -471,7 +472,7 @@ Ip6OnArpResolved ( if (Sent && (ArpQue->State == EfiNeighborStale)) { ArpQue->State = EfiNeighborDelay; - ArpQue->Ticks = (UINT32) IP6_GET_TICKS (IP6_DELAY_FIRST_PROBE_TIME); + ArpQue->Ticks = (UINT32)IP6_GET_TICKS (IP6_DELAY_FIRST_PROBE_TIME); } } @@ -491,17 +492,17 @@ Ip6OnArpResolved ( **/ IP6_NEIGHBOR_ENTRY * Ip6CreateNeighborEntry ( - IN IP6_SERVICE *IpSb, - IN IP6_ARP_CALLBACK CallBack, - IN EFI_IPv6_ADDRESS *Ip6Address, - IN EFI_MAC_ADDRESS *LinkAddress OPTIONAL + IN IP6_SERVICE *IpSb, + IN IP6_ARP_CALLBACK CallBack, + IN EFI_IPv6_ADDRESS *Ip6Address, + IN EFI_MAC_ADDRESS *LinkAddress OPTIONAL ) { - IP6_NEIGHBOR_ENTRY *Entry; - IP6_DEFAULT_ROUTER *DefaultRouter; + IP6_NEIGHBOR_ENTRY *Entry; + IP6_DEFAULT_ROUTER *DefaultRouter; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); - ASSERT (Ip6Address!= NULL); + ASSERT (Ip6Address != NULL); Entry = AllocateZeroPool (sizeof (IP6_NEIGHBOR_ENTRY)); if (Entry == NULL) { @@ -552,13 +553,13 @@ Ip6CreateNeighborEntry ( **/ IP6_NEIGHBOR_ENTRY * Ip6FindNeighborEntry ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Ip6Address + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Ip6Address ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_NEIGHBOR_ENTRY *Neighbor; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_NEIGHBOR_ENTRY *Neighbor; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); ASSERT (Ip6Address != NULL); @@ -599,25 +600,25 @@ Ip6FindNeighborEntry ( **/ EFI_STATUS Ip6FreeNeighborEntry ( - IN IP6_SERVICE *IpSb, - IN IP6_NEIGHBOR_ENTRY *NeighborCache, - IN BOOLEAN SendIcmpError, - IN BOOLEAN FullFree, - IN EFI_STATUS IoStatus, - IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_SERVICE *IpSb, + IN IP6_NEIGHBOR_ENTRY *NeighborCache, + IN BOOLEAN SendIcmpError, + IN BOOLEAN FullFree, + IN EFI_STATUS IoStatus, + IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, + IN VOID *Context OPTIONAL ) { - IP6_LINK_TX_TOKEN *TxToken; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_DEFAULT_ROUTER *DefaultRouter; + IP6_LINK_TX_TOKEN *TxToken; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_DEFAULT_ROUTER *DefaultRouter; // // If FrameToCancel fails, the token will not be released. // To avoid the memory leak, stop this usage model. // - if (FullFree && FrameToCancel != NULL) { + if (FullFree && (FrameToCancel != NULL)) { return EFI_INVALID_PARAMETER; } @@ -677,13 +678,13 @@ Ip6FreeNeighborEntry ( **/ IP6_DEFAULT_ROUTER * Ip6CreateDefaultRouter ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Ip6Address, - IN UINT16 RouterLifetime + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Ip6Address, + IN UINT16 RouterLifetime ) { - IP6_DEFAULT_ROUTER *Entry; - IP6_ROUTE_ENTRY *RtEntry; + IP6_DEFAULT_ROUTER *Entry; + IP6_ROUTE_ENTRY *RtEntry; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); ASSERT (Ip6Address != NULL); @@ -724,11 +725,11 @@ Ip6CreateDefaultRouter ( **/ VOID Ip6DestroyDefaultRouter ( - IN IP6_SERVICE *IpSb, - IN IP6_DEFAULT_ROUTER *DefaultRouter + IN IP6_SERVICE *IpSb, + IN IP6_DEFAULT_ROUTER *DefaultRouter ) { - EFI_STATUS Status; + EFI_STATUS Status; RemoveEntryList (&DefaultRouter->Link); @@ -751,10 +752,10 @@ Ip6DestroyDefaultRouter ( **/ VOID Ip6CleanDefaultRouterList ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ) { - IP6_DEFAULT_ROUTER *DefaultRouter; + IP6_DEFAULT_ROUTER *DefaultRouter; while (!IsListEmpty (&IpSb->DefaultRouterList)) { DefaultRouter = NET_LIST_HEAD (&IpSb->DefaultRouterList, IP6_DEFAULT_ROUTER, Link); @@ -774,12 +775,12 @@ Ip6CleanDefaultRouterList ( **/ IP6_DEFAULT_ROUTER * Ip6FindDefaultRouter ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Ip6Address + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Ip6Address ) { - LIST_ENTRY *Entry; - IP6_DEFAULT_ROUTER *DefaultRouter; + LIST_ENTRY *Entry; + IP6_DEFAULT_ROUTER *DefaultRouter; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); ASSERT (Ip6Address != NULL); @@ -846,10 +847,10 @@ Ip6OnDADFinished ( // Set the exta options to send. Here we only want the option request option // with DNS SERVERS. // - Oro = (EFI_DHCP6_PACKET_OPTION *) OptBuf; - Oro->OpCode = HTONS (DHCP6_OPT_ORO); - Oro->OpLen = HTONS (2); - *((UINT16 *) &Oro->Data[0]) = HTONS (DHCP6_OPT_DNS_SERVERS); + Oro = (EFI_DHCP6_PACKET_OPTION *)OptBuf; + Oro->OpCode = HTONS (DHCP6_OPT_ORO); + Oro->OpLen = HTONS (2); + *((UINT16 *)&Oro->Data[0]) = HTONS (DHCP6_OPT_DNS_SERVERS); InfoReqReXmit.Irt = 4; InfoReqReXmit.Mrc = 64; @@ -875,12 +876,11 @@ Ip6OnDADFinished ( Ip6CreatePrefixListEntry ( IpSb, TRUE, - (UINT32) IP6_INFINIT_LIFETIME, - (UINT32) IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, + (UINT32)IP6_INFINIT_LIFETIME, IP6_LINK_LOCAL_PREFIX_LENGTH, &IpSb->LinkLocalAddr ); - } else { // // Global scope unicast address. @@ -928,7 +928,7 @@ Ip6OnDADFinished ( IpSb->Mnp->Configure (IpSb->Mnp, NULL); gBS->SetTimer (IpSb->Timer, TimerCancel, 0); gBS->SetTimer (IpSb->FasterTimer, TimerCancel, 0); - return ; + return; } if (!IsDadPassed || NetIp6IsLinkLocalAddr (&AddrInfo->Address)) { @@ -961,10 +961,10 @@ Ip6OnDADFinished ( **/ EFI_STATUS Ip6InitDADProcess ( - IN IP6_INTERFACE *IpIf, - IN IP6_ADDRESS_INFO *AddressInfo, - IN IP6_DAD_CALLBACK Callback OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_INTERFACE *IpIf, + IN IP6_ADDRESS_INFO *AddressInfo, + IN IP6_DAD_CALLBACK Callback OPTIONAL, + IN VOID *Context OPTIONAL ) { IP6_DAD_ENTRY *Entry; @@ -1009,15 +1009,15 @@ Ip6InitDADProcess ( return Status; } - Entry->Signature = IP6_DAD_ENTRY_SIGNATURE; - Entry->MaxTransmit = DadXmits->DupAddrDetectTransmits; - Entry->Transmit = 0; - Entry->Receive = 0; - MaxDelayTick = IP6_MAX_RTR_SOLICITATION_DELAY / IP6_TIMER_INTERVAL_IN_MS; - Entry->RetransTick = (MaxDelayTick * ((NET_RANDOM (NetRandomInitSeed ()) % 5) + 1)) / 5; - Entry->AddressInfo = AddressInfo; - Entry->Callback = Callback; - Entry->Context = Context; + Entry->Signature = IP6_DAD_ENTRY_SIGNATURE; + Entry->MaxTransmit = DadXmits->DupAddrDetectTransmits; + Entry->Transmit = 0; + Entry->Receive = 0; + MaxDelayTick = IP6_MAX_RTR_SOLICITATION_DELAY / IP6_TIMER_INTERVAL_IN_MS; + Entry->RetransTick = (MaxDelayTick * ((NET_RANDOM (NetRandomInitSeed ()) % 5) + 1)) / 5; + Entry->AddressInfo = AddressInfo; + Entry->Callback = Callback; + Entry->Context = Context; InsertTailList (&IpIf->DupAddrDetectList, &Entry->Link); if (Entry->MaxTransmit == 0) { @@ -1044,16 +1044,16 @@ Ip6InitDADProcess ( **/ IP6_DAD_ENTRY * Ip6FindDADEntry ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Target, - OUT IP6_INTERFACE **Interface OPTIONAL + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Target, + OUT IP6_INTERFACE **Interface OPTIONAL ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Entry2; - IP6_INTERFACE *IpIf; - IP6_DAD_ENTRY *DupAddrDetect; - IP6_ADDRESS_INFO *AddrInfo; + LIST_ENTRY *Entry; + LIST_ENTRY *Entry2; + IP6_INTERFACE *IpIf; + IP6_DAD_ENTRY *DupAddrDetect; + IP6_ADDRESS_INFO *AddrInfo; NET_LIST_FOR_EACH (Entry, &IpSb->Interfaces) { IpIf = NET_LIST_USER_STRUCT (Entry, IP6_INTERFACE, Link); @@ -1065,6 +1065,7 @@ Ip6FindDADEntry ( if (Interface != NULL) { *Interface = IpIf; } + return DupAddrDetect; } } @@ -1093,24 +1094,24 @@ Ip6FindDADEntry ( **/ EFI_STATUS Ip6SendRouterSolicit ( - IN IP6_SERVICE *IpSb, - IN IP6_INTERFACE *Interface OPTIONAL, - IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, - IN EFI_IPv6_ADDRESS *DestinationAddress OPTIONAL, - IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL + IN IP6_SERVICE *IpSb, + IN IP6_INTERFACE *Interface OPTIONAL, + IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, + IN EFI_IPv6_ADDRESS *DestinationAddress OPTIONAL, + IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL ) { - NET_BUF *Packet; - EFI_IP6_HEADER Head; - IP6_ICMP_INFORMATION_HEAD *IcmpHead; - IP6_ETHER_ADDR_OPTION *LinkLayerOption; - UINT16 PayloadLen; - IP6_INTERFACE *IpIf; + NET_BUF *Packet; + EFI_IP6_HEADER Head; + IP6_ICMP_INFORMATION_HEAD *IcmpHead; + IP6_ETHER_ADDR_OPTION *LinkLayerOption; + UINT16 PayloadLen; + IP6_INTERFACE *IpIf; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); IpIf = Interface; - if (IpIf == NULL && IpSb->DefaultInterface != NULL) { + if ((IpIf == NULL) && (IpSb->DefaultInterface != NULL)) { IpIf = IpSb->DefaultInterface; } @@ -1118,12 +1119,12 @@ Ip6SendRouterSolicit ( // Generate the packet to be sent // - PayloadLen = (UINT16) sizeof (IP6_ICMP_INFORMATION_HEAD); + PayloadLen = (UINT16)sizeof (IP6_ICMP_INFORMATION_HEAD); if (SourceLinkAddress != NULL) { PayloadLen += sizeof (IP6_ETHER_ADDR_OPTION); } - Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32) PayloadLen); + Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32)PayloadLen); if (Packet == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -1131,11 +1132,11 @@ Ip6SendRouterSolicit ( // // Create the basic IPv6 header. // - Head.FlowLabelL = 0; - Head.FlowLabelH = 0; - Head.PayloadLength = HTONS (PayloadLen); - Head.NextHeader = IP6_ICMP; - Head.HopLimit = IP6_HOP_LIMIT; + Head.FlowLabelL = 0; + Head.FlowLabelH = 0; + Head.PayloadLength = HTONS (PayloadLen); + Head.NextHeader = IP6_ICMP; + Head.HopLimit = IP6_HOP_LIMIT; if (SourceAddress != NULL) { IP6_COPY_ADDRESS (&Head.SourceAddress, SourceAddress); @@ -1143,7 +1144,6 @@ Ip6SendRouterSolicit ( ZeroMem (&Head.SourceAddress, sizeof (EFI_IPv6_ADDRESS)); } - if (DestinationAddress != NULL) { IP6_COPY_ADDRESS (&Head.DestinationAddress, DestinationAddress); } else { @@ -1156,7 +1156,7 @@ Ip6SendRouterSolicit ( // Fill in the ICMP header, and Source link-layer address if contained. // - IcmpHead = (IP6_ICMP_INFORMATION_HEAD *) NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); + IcmpHead = (IP6_ICMP_INFORMATION_HEAD *)NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); ASSERT (IcmpHead != NULL); ZeroMem (IcmpHead, sizeof (IP6_ICMP_INFORMATION_HEAD)); IcmpHead->Head.Type = ICMP_V6_ROUTER_SOLICIT; @@ -1164,14 +1164,14 @@ Ip6SendRouterSolicit ( LinkLayerOption = NULL; if (SourceLinkAddress != NULL) { - LinkLayerOption = (IP6_ETHER_ADDR_OPTION *) NetbufAllocSpace ( - Packet, - sizeof (IP6_ETHER_ADDR_OPTION), - FALSE - ); + LinkLayerOption = (IP6_ETHER_ADDR_OPTION *)NetbufAllocSpace ( + Packet, + sizeof (IP6_ETHER_ADDR_OPTION), + FALSE + ); ASSERT (LinkLayerOption != NULL); LinkLayerOption->Type = Ip6OptionEtherSource; - LinkLayerOption->Length = (UINT8) sizeof (IP6_ETHER_ADDR_OPTION); + LinkLayerOption->Length = (UINT8)sizeof (IP6_ETHER_ADDR_OPTION); CopyMem (LinkLayerOption->EtherAddr, SourceLinkAddress, 6); } @@ -1205,22 +1205,22 @@ Ip6SendRouterSolicit ( **/ EFI_STATUS Ip6SendNeighborAdvertise ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *SourceAddress, - IN EFI_IPv6_ADDRESS *DestinationAddress, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *TargetLinkAddress, - IN BOOLEAN IsRouter, - IN BOOLEAN Override, - IN BOOLEAN Solicited + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *SourceAddress, + IN EFI_IPv6_ADDRESS *DestinationAddress, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *TargetLinkAddress, + IN BOOLEAN IsRouter, + IN BOOLEAN Override, + IN BOOLEAN Solicited ) { - NET_BUF *Packet; - EFI_IP6_HEADER Head; - IP6_ICMP_INFORMATION_HEAD *IcmpHead; - IP6_ETHER_ADDR_OPTION *LinkLayerOption; - EFI_IPv6_ADDRESS *Target; - UINT16 PayloadLen; + NET_BUF *Packet; + EFI_IP6_HEADER Head; + IP6_ICMP_INFORMATION_HEAD *IcmpHead; + IP6_ETHER_ADDR_OPTION *LinkLayerOption; + EFI_IPv6_ADDRESS *Target; + UINT16 PayloadLen; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); @@ -1232,13 +1232,13 @@ Ip6SendNeighborAdvertise ( // ASSERT (DestinationAddress != NULL && TargetIp6Address != NULL && TargetLinkAddress != NULL); - PayloadLen = (UINT16) (sizeof (IP6_ICMP_INFORMATION_HEAD) + sizeof (EFI_IPv6_ADDRESS) + sizeof (IP6_ETHER_ADDR_OPTION)); + PayloadLen = (UINT16)(sizeof (IP6_ICMP_INFORMATION_HEAD) + sizeof (EFI_IPv6_ADDRESS) + sizeof (IP6_ETHER_ADDR_OPTION)); // // Generate the packet to be sent // - Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32) PayloadLen); + Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32)PayloadLen); if (Packet == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -1246,11 +1246,11 @@ Ip6SendNeighborAdvertise ( // // Create the basic IPv6 header. // - Head.FlowLabelL = 0; - Head.FlowLabelH = 0; - Head.PayloadLength = HTONS (PayloadLen); - Head.NextHeader = IP6_ICMP; - Head.HopLimit = IP6_HOP_LIMIT; + Head.FlowLabelL = 0; + Head.FlowLabelH = 0; + Head.PayloadLength = HTONS (PayloadLen); + Head.NextHeader = IP6_ICMP; + Head.HopLimit = IP6_HOP_LIMIT; IP6_COPY_ADDRESS (&Head.SourceAddress, SourceAddress); IP6_COPY_ADDRESS (&Head.DestinationAddress, DestinationAddress); @@ -1262,7 +1262,7 @@ Ip6SendNeighborAdvertise ( // Set the Router flag, Solicited flag and Override flag. // - IcmpHead = (IP6_ICMP_INFORMATION_HEAD *) NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); + IcmpHead = (IP6_ICMP_INFORMATION_HEAD *)NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); ASSERT (IcmpHead != NULL); ZeroMem (IcmpHead, sizeof (IP6_ICMP_INFORMATION_HEAD)); IcmpHead->Head.Type = ICMP_V6_NEIGHBOR_ADVERTISE; @@ -1280,15 +1280,15 @@ Ip6SendNeighborAdvertise ( IcmpHead->Fourth |= IP6_OVERRIDE_FLAG; } - Target = (EFI_IPv6_ADDRESS *) NetbufAllocSpace (Packet, sizeof (EFI_IPv6_ADDRESS), FALSE); + Target = (EFI_IPv6_ADDRESS *)NetbufAllocSpace (Packet, sizeof (EFI_IPv6_ADDRESS), FALSE); ASSERT (Target != NULL); IP6_COPY_ADDRESS (Target, TargetIp6Address); - LinkLayerOption = (IP6_ETHER_ADDR_OPTION *) NetbufAllocSpace ( - Packet, - sizeof (IP6_ETHER_ADDR_OPTION), - FALSE - ); + LinkLayerOption = (IP6_ETHER_ADDR_OPTION *)NetbufAllocSpace ( + Packet, + sizeof (IP6_ETHER_ADDR_OPTION), + FALSE + ); ASSERT (LinkLayerOption != NULL); LinkLayerOption->Type = Ip6OptionEtherTarget; LinkLayerOption->Length = 1; @@ -1320,33 +1320,33 @@ Ip6SendNeighborAdvertise ( **/ EFI_STATUS Ip6SendNeighborSolicit ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *SourceAddress, - IN EFI_IPv6_ADDRESS *DestinationAddress, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *SourceAddress, + IN EFI_IPv6_ADDRESS *DestinationAddress, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL ) { - NET_BUF *Packet; - EFI_IP6_HEADER Head; - IP6_ICMP_INFORMATION_HEAD *IcmpHead; - IP6_ETHER_ADDR_OPTION *LinkLayerOption; - EFI_IPv6_ADDRESS *Target; - BOOLEAN IsDAD; - UINT16 PayloadLen; - IP6_NEIGHBOR_ENTRY *Neighbor; + NET_BUF *Packet; + EFI_IP6_HEADER Head; + IP6_ICMP_INFORMATION_HEAD *IcmpHead; + IP6_ETHER_ADDR_OPTION *LinkLayerOption; + EFI_IPv6_ADDRESS *Target; + BOOLEAN IsDAD; + UINT16 PayloadLen; + IP6_NEIGHBOR_ENTRY *Neighbor; // // Check input parameters // NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); - if (DestinationAddress == NULL || TargetIp6Address == NULL) { + if ((DestinationAddress == NULL) || (TargetIp6Address == NULL)) { return EFI_INVALID_PARAMETER; } IsDAD = FALSE; - if (SourceAddress == NULL || (SourceAddress != NULL && NetIp6IsUnspecifiedAddr (SourceAddress))) { + if ((SourceAddress == NULL) || ((SourceAddress != NULL) && NetIp6IsUnspecifiedAddr (SourceAddress))) { IsDAD = TRUE; } @@ -1355,21 +1355,21 @@ Ip6SendNeighborSolicit ( // if the solicitation is not sent by performing DAD - Duplicate Address Detection. // Otherwise must not include it. // - PayloadLen = (UINT16) (sizeof (IP6_ICMP_INFORMATION_HEAD) + sizeof (EFI_IPv6_ADDRESS)); + PayloadLen = (UINT16)(sizeof (IP6_ICMP_INFORMATION_HEAD) + sizeof (EFI_IPv6_ADDRESS)); if (!IsDAD) { if (SourceLinkAddress == NULL) { return EFI_INVALID_PARAMETER; } - PayloadLen = (UINT16) (PayloadLen + sizeof (IP6_ETHER_ADDR_OPTION)); + PayloadLen = (UINT16)(PayloadLen + sizeof (IP6_ETHER_ADDR_OPTION)); } // // Generate the packet to be sent // - Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32) PayloadLen); + Packet = NetbufAlloc (sizeof (EFI_IP6_HEADER) + (UINT32)PayloadLen); if (Packet == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -1377,11 +1377,11 @@ Ip6SendNeighborSolicit ( // // Create the basic IPv6 header // - Head.FlowLabelL = 0; - Head.FlowLabelH = 0; - Head.PayloadLength = HTONS (PayloadLen); - Head.NextHeader = IP6_ICMP; - Head.HopLimit = IP6_HOP_LIMIT; + Head.FlowLabelL = 0; + Head.FlowLabelH = 0; + Head.PayloadLength = HTONS (PayloadLen); + Head.NextHeader = IP6_ICMP; + Head.HopLimit = IP6_HOP_LIMIT; if (SourceAddress != NULL) { IP6_COPY_ADDRESS (&Head.SourceAddress, SourceAddress); @@ -1396,27 +1396,26 @@ Ip6SendNeighborSolicit ( // // Fill in the ICMP header, Target address, and Source link-layer address. // - IcmpHead = (IP6_ICMP_INFORMATION_HEAD *) NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); + IcmpHead = (IP6_ICMP_INFORMATION_HEAD *)NetbufAllocSpace (Packet, sizeof (IP6_ICMP_INFORMATION_HEAD), FALSE); ASSERT (IcmpHead != NULL); ZeroMem (IcmpHead, sizeof (IP6_ICMP_INFORMATION_HEAD)); IcmpHead->Head.Type = ICMP_V6_NEIGHBOR_SOLICIT; IcmpHead->Head.Code = 0; - Target = (EFI_IPv6_ADDRESS *) NetbufAllocSpace (Packet, sizeof (EFI_IPv6_ADDRESS), FALSE); + Target = (EFI_IPv6_ADDRESS *)NetbufAllocSpace (Packet, sizeof (EFI_IPv6_ADDRESS), FALSE); ASSERT (Target != NULL); IP6_COPY_ADDRESS (Target, TargetIp6Address); LinkLayerOption = NULL; if (!IsDAD) { - // // Fill in the source link-layer address option // - LinkLayerOption = (IP6_ETHER_ADDR_OPTION *) NetbufAllocSpace ( - Packet, - sizeof (IP6_ETHER_ADDR_OPTION), - FALSE - ); + LinkLayerOption = (IP6_ETHER_ADDR_OPTION *)NetbufAllocSpace ( + Packet, + sizeof (IP6_ETHER_ADDR_OPTION), + FALSE + ); ASSERT (LinkLayerOption != NULL); LinkLayerOption->Type = Ip6OptionEtherSource; LinkLayerOption->Length = 1; @@ -1457,30 +1456,30 @@ Ip6SendNeighborSolicit ( **/ EFI_STATUS Ip6ProcessNeighborSolicit ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_ICMP_INFORMATION_HEAD Icmp; - EFI_IPv6_ADDRESS Target; - IP6_ETHER_ADDR_OPTION LinkLayerOption; - BOOLEAN IsDAD; - BOOLEAN IsUnicast; - BOOLEAN IsMaintained; - IP6_DAD_ENTRY *DupAddrDetect; - IP6_INTERFACE *IpIf; - IP6_NEIGHBOR_ENTRY *Neighbor; - BOOLEAN Solicited; - BOOLEAN UpdateCache; - EFI_IPv6_ADDRESS Dest; - UINT16 OptionLen; - UINT8 *Option; - BOOLEAN Provided; - EFI_STATUS Status; - VOID *MacAddress; - - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + IP6_ICMP_INFORMATION_HEAD Icmp; + EFI_IPv6_ADDRESS Target; + IP6_ETHER_ADDR_OPTION LinkLayerOption; + BOOLEAN IsDAD; + BOOLEAN IsUnicast; + BOOLEAN IsMaintained; + IP6_DAD_ENTRY *DupAddrDetect; + IP6_INTERFACE *IpIf; + IP6_NEIGHBOR_ENTRY *Neighbor; + BOOLEAN Solicited; + BOOLEAN UpdateCache; + EFI_IPv6_ADDRESS Dest; + UINT16 OptionLen; + UINT8 *Option; + BOOLEAN Provided; + EFI_STATUS Status; + VOID *MacAddress; + + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); NetbufCopy (Packet, sizeof (Icmp), sizeof (Target), Target.Addr); // @@ -1492,7 +1491,7 @@ Ip6ProcessNeighborSolicit ( // Status = EFI_INVALID_PARAMETER; - if (Head->HopLimit != IP6_HOP_LIMIT || Icmp.Head.Code != 0 || !NetIp6IsValidUnicast (&Target)) { + if ((Head->HopLimit != IP6_HOP_LIMIT) || (Icmp.Head.Code != 0) || !NetIp6IsValidUnicast (&Target)) { goto Exit; } @@ -1503,9 +1502,9 @@ Ip6ProcessNeighborSolicit ( if (Head->PayloadLength < IP6_ND_LENGTH) { goto Exit; } else { - OptionLen = (UINT16) (Head->PayloadLength - IP6_ND_LENGTH); + OptionLen = (UINT16)(Head->PayloadLength - IP6_ND_LENGTH); if (OptionLen != 0) { - Option = NetbufGetByte (Packet, IP6_ND_LENGTH, NULL); + Option = NetbufGetByte (Packet, IP6_ND_LENGTH, NULL); ASSERT (Option != NULL); // @@ -1527,7 +1526,7 @@ Ip6ProcessNeighborSolicit ( Packet, IP6_ND_LENGTH, sizeof (IP6_ETHER_ADDR_OPTION), - (UINT8 *) &LinkLayerOption + (UINT8 *)&LinkLayerOption ); // // The solicitation for neighbor discovery should include a source link-layer @@ -1591,7 +1590,8 @@ Ip6ProcessNeighborSolicit ( MacAddress, &IpSb->SnpMode.CurrentAddress, IpSb->SnpMode.HwAddressSize - ) != 0) { + ) != 0) + { // // The NS is from another node to performing DAD on the same address. // Fail DAD for the tentative address. @@ -1607,6 +1607,7 @@ Ip6ProcessNeighborSolicit ( } } } + goto Exit; } @@ -1624,6 +1625,7 @@ Ip6ProcessNeighborSolicit ( Status = EFI_OUT_OF_RESOURCES; goto Exit; } + UpdateCache = TRUE; } else { if (CompareMem (Neighbor->LinkAddress.Addr, LinkLayerOption.EtherAddr, 6) != 0) { @@ -1633,12 +1635,12 @@ Ip6ProcessNeighborSolicit ( if (UpdateCache) { Neighbor->State = EfiNeighborStale; - Neighbor->Ticks = (UINT32) IP6_INFINIT_LIFETIME; + Neighbor->Ticks = (UINT32)IP6_INFINIT_LIFETIME; CopyMem (Neighbor->LinkAddress.Addr, LinkLayerOption.EtherAddr, 6); // // Send queued packets if exist. // - Neighbor->CallBack ((VOID *) Neighbor); + Neighbor->CallBack ((VOID *)Neighbor); } } @@ -1686,28 +1688,28 @@ Exit: **/ EFI_STATUS Ip6ProcessNeighborAdvertise ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_ICMP_INFORMATION_HEAD Icmp; - EFI_IPv6_ADDRESS Target; - IP6_ETHER_ADDR_OPTION LinkLayerOption; - BOOLEAN Provided; - INTN Compare; - IP6_NEIGHBOR_ENTRY *Neighbor; - IP6_DEFAULT_ROUTER *DefaultRouter; - BOOLEAN Solicited; - BOOLEAN IsRouter; - BOOLEAN Override; - IP6_DAD_ENTRY *DupAddrDetect; - IP6_INTERFACE *IpIf; - UINT16 OptionLen; - UINT8 *Option; - EFI_STATUS Status; - - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + IP6_ICMP_INFORMATION_HEAD Icmp; + EFI_IPv6_ADDRESS Target; + IP6_ETHER_ADDR_OPTION LinkLayerOption; + BOOLEAN Provided; + INTN Compare; + IP6_NEIGHBOR_ENTRY *Neighbor; + IP6_DEFAULT_ROUTER *DefaultRouter; + BOOLEAN Solicited; + BOOLEAN IsRouter; + BOOLEAN Override; + IP6_DAD_ENTRY *DupAddrDetect; + IP6_INTERFACE *IpIf; + UINT16 OptionLen; + UINT8 *Option; + EFI_STATUS Status; + + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); NetbufCopy (Packet, sizeof (Icmp), sizeof (Target), Target.Addr); // @@ -1720,7 +1722,7 @@ Ip6ProcessNeighborAdvertise ( // ICMP Code is 0. // Target Address is not a multicast address. // - if (Head->HopLimit != IP6_HOP_LIMIT || Icmp.Head.Code != 0 || !NetIp6IsValidUnicast (&Target)) { + if ((Head->HopLimit != IP6_HOP_LIMIT) || (Icmp.Head.Code != 0) || !NetIp6IsValidUnicast (&Target)) { goto Exit; } @@ -1732,9 +1734,9 @@ Ip6ProcessNeighborAdvertise ( if (Head->PayloadLength < IP6_ND_LENGTH) { goto Exit; } else { - OptionLen = (UINT16) (Head->PayloadLength - IP6_ND_LENGTH); + OptionLen = (UINT16)(Head->PayloadLength - IP6_ND_LENGTH); if (OptionLen != 0) { - Option = NetbufGetByte (Packet, IP6_ND_LENGTH, NULL); + Option = NetbufGetByte (Packet, IP6_ND_LENGTH, NULL); ASSERT (Option != NULL); // @@ -1753,6 +1755,7 @@ Ip6ProcessNeighborAdvertise ( if ((Icmp.Fourth & IP6_SOLICITED_FLAG) == IP6_SOLICITED_FLAG) { Solicited = TRUE; } + if (IP6_IS_MULTICAST (&Head->DestinationAddress) && Solicited) { goto Exit; } @@ -1787,6 +1790,7 @@ Ip6ProcessNeighborAdvertise ( if ((Icmp.Fourth & IP6_IS_ROUTER_FLAG) == IP6_IS_ROUTER_FLAG) { IsRouter = TRUE; } + if ((Icmp.Fourth & IP6_OVERRIDE_FLAG) == IP6_OVERRIDE_FLAG) { Override = TRUE; } @@ -1799,7 +1803,7 @@ Ip6ProcessNeighborAdvertise ( Packet, IP6_ND_LENGTH, sizeof (IP6_ETHER_ADDR_OPTION), - (UINT8 *) &LinkLayerOption + (UINT8 *)&LinkLayerOption ); if (LinkLayerOption.Type == Ip6OptionEtherTarget) { @@ -1828,6 +1832,7 @@ Ip6ProcessNeighborAdvertise ( if (!Provided) { goto Exit; } + // // Update the Neighbor Cache // @@ -1837,17 +1842,16 @@ Ip6ProcessNeighborAdvertise ( Neighbor->Ticks = IP6_GET_TICKS (IpSb->ReachableTime); } else { Neighbor->State = EfiNeighborStale; - Neighbor->Ticks = (UINT32) IP6_INFINIT_LIFETIME; + Neighbor->Ticks = (UINT32)IP6_INFINIT_LIFETIME; // // Send any packets queued for the neighbor awaiting address resolution. // - Neighbor->CallBack ((VOID *) Neighbor); + Neighbor->CallBack ((VOID *)Neighbor); } Neighbor->IsRouter = IsRouter; - } else { - if (!Override && Compare != 0) { + if (!Override && (Compare != 0)) { // // When the Override Flag is clear and supplied link-layer address differs from // that in the cache, if the state of the entry is not REACHABLE, ignore the @@ -1856,12 +1860,13 @@ Ip6ProcessNeighborAdvertise ( // if (Neighbor->State == EfiNeighborReachable) { Neighbor->State = EfiNeighborStale; - Neighbor->Ticks = (UINT32) IP6_INFINIT_LIFETIME; + Neighbor->Ticks = (UINT32)IP6_INFINIT_LIFETIME; } } else { if (Compare != 0) { CopyMem (Neighbor->LinkAddress.Addr, LinkLayerOption.EtherAddr, 6); } + // // Update the entry's state // @@ -1871,7 +1876,7 @@ Ip6ProcessNeighborAdvertise ( } else { if (Compare != 0) { Neighbor->State = EfiNeighborStale; - Neighbor->Ticks = (UINT32) IP6_INFINIT_LIFETIME; + Neighbor->Ticks = (UINT32)IP6_INFINIT_LIFETIME; } } @@ -1892,7 +1897,7 @@ Ip6ProcessNeighborAdvertise ( } if (Neighbor->State == EfiNeighborReachable) { - Neighbor->CallBack ((VOID *) Neighbor); + Neighbor->CallBack ((VOID *)Neighbor); } Status = EFI_SUCCESS; @@ -1918,36 +1923,36 @@ Exit: **/ EFI_STATUS Ip6ProcessRouterAdvertise ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_ICMP_INFORMATION_HEAD Icmp; - UINT32 ReachableTime; - UINT32 RetransTimer; - UINT16 RouterLifetime; - UINT32 Offset; - UINT8 Type; - UINT8 Length; - IP6_ETHER_ADDR_OPTION LinkLayerOption; - UINT32 Fourth; - UINT8 CurHopLimit; - BOOLEAN Mflag; - BOOLEAN Oflag; - IP6_DEFAULT_ROUTER *DefaultRouter; - IP6_NEIGHBOR_ENTRY *NeighborCache; - EFI_MAC_ADDRESS LinkLayerAddress; - IP6_MTU_OPTION MTUOption; - IP6_PREFIX_INFO_OPTION PrefixOption; - IP6_PREFIX_LIST_ENTRY *PrefixList; - BOOLEAN OnLink; - BOOLEAN Autonomous; - EFI_IPv6_ADDRESS StatelessAddress; - EFI_STATUS Status; - UINT16 OptionLen; - UINT8 *Option; - INTN Result; + IP6_ICMP_INFORMATION_HEAD Icmp; + UINT32 ReachableTime; + UINT32 RetransTimer; + UINT16 RouterLifetime; + UINT32 Offset; + UINT8 Type; + UINT8 Length; + IP6_ETHER_ADDR_OPTION LinkLayerOption; + UINT32 Fourth; + UINT8 CurHopLimit; + BOOLEAN Mflag; + BOOLEAN Oflag; + IP6_DEFAULT_ROUTER *DefaultRouter; + IP6_NEIGHBOR_ENTRY *NeighborCache; + EFI_MAC_ADDRESS LinkLayerAddress; + IP6_MTU_OPTION MTUOption; + IP6_PREFIX_INFO_OPTION PrefixOption; + IP6_PREFIX_LIST_ENTRY *PrefixList; + BOOLEAN OnLink; + BOOLEAN Autonomous; + EFI_IPv6_ADDRESS StatelessAddress; + EFI_STATUS Status; + UINT16 OptionLen; + UINT8 *Option; + INTN Result; Status = EFI_INVALID_PARAMETER; @@ -1958,7 +1963,7 @@ Ip6ProcessRouterAdvertise ( goto Exit; } - NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *) &Icmp); + NetbufCopy (Packet, 0, sizeof (Icmp), (UINT8 *)&Icmp); // // Validate the incoming Router Advertisement @@ -1970,23 +1975,25 @@ Ip6ProcessRouterAdvertise ( if (!NetIp6IsLinkLocalAddr (&Head->SourceAddress)) { goto Exit; } + // // The IP Hop Limit field has a value of 255, i.e. the packet // could not possibly have been forwarded by a router. // ICMP Code is 0. // ICMP length (derived from the IP length) is 16 or more octets. // - if (Head->HopLimit != IP6_HOP_LIMIT || Icmp.Head.Code != 0 || - Head->PayloadLength < IP6_RA_LENGTH) { + if ((Head->HopLimit != IP6_HOP_LIMIT) || (Icmp.Head.Code != 0) || + (Head->PayloadLength < IP6_RA_LENGTH)) + { goto Exit; } // // All included options have a length that is greater than zero. // - OptionLen = (UINT16) (Head->PayloadLength - IP6_RA_LENGTH); + OptionLen = (UINT16)(Head->PayloadLength - IP6_RA_LENGTH); if (OptionLen != 0) { - Option = NetbufGetByte (Packet, IP6_RA_LENGTH, NULL); + Option = NetbufGetByte (Packet, IP6_RA_LENGTH, NULL); ASSERT (Option != NULL); if (!Ip6IsNDOptionValid (Option, OptionLen)) { @@ -2035,17 +2042,17 @@ Ip6ProcessRouterAdvertise ( } } - CurHopLimit = *((UINT8 *) &Fourth + 3); + CurHopLimit = *((UINT8 *)&Fourth + 3); if (CurHopLimit != 0) { IpSb->CurHopLimit = CurHopLimit; } Mflag = FALSE; Oflag = FALSE; - if ((*((UINT8 *) &Fourth + 2) & IP6_M_ADDR_CONFIG_FLAG) == IP6_M_ADDR_CONFIG_FLAG) { + if ((*((UINT8 *)&Fourth + 2) & IP6_M_ADDR_CONFIG_FLAG) == IP6_M_ADDR_CONFIG_FLAG) { Mflag = TRUE; } else { - if ((*((UINT8 *) &Fourth + 2) & IP6_O_CONFIG_FLAG) == IP6_O_CONFIG_FLAG) { + if ((*((UINT8 *)&Fourth + 2) & IP6_O_CONFIG_FLAG) == IP6_O_CONFIG_FLAG) { Oflag = TRUE; } } @@ -2060,12 +2067,12 @@ Ip6ProcessRouterAdvertise ( // // Process Reachable Time and Retrans Timer fields. // - NetbufCopy (Packet, sizeof (Icmp), sizeof (UINT32), (UINT8 *) &ReachableTime); - NetbufCopy (Packet, sizeof (Icmp) + sizeof (UINT32), sizeof (UINT32), (UINT8 *) &RetransTimer); + NetbufCopy (Packet, sizeof (Icmp), sizeof (UINT32), (UINT8 *)&ReachableTime); + NetbufCopy (Packet, sizeof (Icmp) + sizeof (UINT32), sizeof (UINT32), (UINT8 *)&RetransTimer); ReachableTime = NTOHL (ReachableTime); RetransTimer = NTOHL (RetransTimer); - if (ReachableTime != 0 && ReachableTime != IpSb->BaseReachableTime) { + if ((ReachableTime != 0) && (ReachableTime != IpSb->BaseReachableTime)) { // // If new value is not unspecified and differs from the previous one, record it // in BaseReachableTime and recompute a ReachableTime. @@ -2098,262 +2105,266 @@ Ip6ProcessRouterAdvertise ( // fit within the input packet. // Offset = 16; - while (Offset < (UINT32) Head->PayloadLength) { + while (Offset < (UINT32)Head->PayloadLength) { NetbufCopy (Packet, Offset, sizeof (UINT8), &Type); switch (Type) { - case Ip6OptionEtherSource: - // - // Update the neighbor cache - // - NetbufCopy (Packet, Offset, sizeof (IP6_ETHER_ADDR_OPTION), (UINT8 *) &LinkLayerOption); + case Ip6OptionEtherSource: + // + // Update the neighbor cache + // + NetbufCopy (Packet, Offset, sizeof (IP6_ETHER_ADDR_OPTION), (UINT8 *)&LinkLayerOption); - // - // Option size validity ensured by Ip6IsNDOptionValid(). - // - ASSERT (LinkLayerOption.Length != 0); - ASSERT (Offset + (UINT32) LinkLayerOption.Length * 8 <= (UINT32) Head->PayloadLength); + // + // Option size validity ensured by Ip6IsNDOptionValid(). + // + ASSERT (LinkLayerOption.Length != 0); + ASSERT (Offset + (UINT32)LinkLayerOption.Length * 8 <= (UINT32)Head->PayloadLength); - ZeroMem (&LinkLayerAddress, sizeof (EFI_MAC_ADDRESS)); - CopyMem (&LinkLayerAddress, LinkLayerOption.EtherAddr, 6); + ZeroMem (&LinkLayerAddress, sizeof (EFI_MAC_ADDRESS)); + CopyMem (&LinkLayerAddress, LinkLayerOption.EtherAddr, 6); - if (NeighborCache == NULL) { - NeighborCache = Ip6CreateNeighborEntry ( - IpSb, - Ip6OnArpResolved, - &Head->SourceAddress, - &LinkLayerAddress - ); if (NeighborCache == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto Exit; + NeighborCache = Ip6CreateNeighborEntry ( + IpSb, + Ip6OnArpResolved, + &Head->SourceAddress, + &LinkLayerAddress + ); + if (NeighborCache == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Exit; + } + + NeighborCache->IsRouter = TRUE; + NeighborCache->State = EfiNeighborStale; + NeighborCache->Ticks = (UINT32)IP6_INFINIT_LIFETIME; + } else { + Result = CompareMem (&LinkLayerAddress, &NeighborCache->LinkAddress, 6); + + // + // If the link-local address is the same as that already in the cache, + // the cache entry's state remains unchanged. Otherwise update the + // reachability state to STALE. + // + if ((NeighborCache->State == EfiNeighborInComplete) || (Result != 0)) { + CopyMem (&NeighborCache->LinkAddress, &LinkLayerAddress, 6); + + NeighborCache->Ticks = (UINT32)IP6_INFINIT_LIFETIME; + + if (NeighborCache->State == EfiNeighborInComplete) { + // + // Send queued packets if exist. + // + NeighborCache->State = EfiNeighborStale; + NeighborCache->CallBack ((VOID *)NeighborCache); + } else { + NeighborCache->State = EfiNeighborStale; + } + } } - NeighborCache->IsRouter = TRUE; - NeighborCache->State = EfiNeighborStale; - NeighborCache->Ticks = (UINT32) IP6_INFINIT_LIFETIME; - } else { - Result = CompareMem (&LinkLayerAddress, &NeighborCache->LinkAddress, 6); + + Offset += (UINT32)LinkLayerOption.Length * 8; + break; + case Ip6OptionPrefixInfo: + NetbufCopy (Packet, Offset, sizeof (IP6_PREFIX_INFO_OPTION), (UINT8 *)&PrefixOption); // - // If the link-local address is the same as that already in the cache, - // the cache entry's state remains unchanged. Otherwise update the - // reachability state to STALE. + // Option size validity ensured by Ip6IsNDOptionValid(). // - if ((NeighborCache->State == EfiNeighborInComplete) || (Result != 0)) { - CopyMem (&NeighborCache->LinkAddress, &LinkLayerAddress, 6); + ASSERT (PrefixOption.Length == 4); + ASSERT (Offset + (UINT32)PrefixOption.Length * 8 <= (UINT32)Head->PayloadLength); - NeighborCache->Ticks = (UINT32) IP6_INFINIT_LIFETIME; + PrefixOption.ValidLifetime = NTOHL (PrefixOption.ValidLifetime); + PrefixOption.PreferredLifetime = NTOHL (PrefixOption.PreferredLifetime); - if (NeighborCache->State == EfiNeighborInComplete) { - // - // Send queued packets if exist. - // - NeighborCache->State = EfiNeighborStale; - NeighborCache->CallBack ((VOID *) NeighborCache); - } else { - NeighborCache->State = EfiNeighborStale; - } + // + // Get L and A flag, recorded in the lower 2 bits of Reserved1 + // + OnLink = FALSE; + if ((PrefixOption.Reserved1 & IP6_ON_LINK_FLAG) == IP6_ON_LINK_FLAG) { + OnLink = TRUE; } - } - - Offset += (UINT32) LinkLayerOption.Length * 8; - break; - case Ip6OptionPrefixInfo: - NetbufCopy (Packet, Offset, sizeof (IP6_PREFIX_INFO_OPTION), (UINT8 *) &PrefixOption); - // - // Option size validity ensured by Ip6IsNDOptionValid(). - // - ASSERT (PrefixOption.Length == 4); - ASSERT (Offset + (UINT32) PrefixOption.Length * 8 <= (UINT32) Head->PayloadLength); - - PrefixOption.ValidLifetime = NTOHL (PrefixOption.ValidLifetime); - PrefixOption.PreferredLifetime = NTOHL (PrefixOption.PreferredLifetime); + Autonomous = FALSE; + if ((PrefixOption.Reserved1 & IP6_AUTO_CONFIG_FLAG) == IP6_AUTO_CONFIG_FLAG) { + Autonomous = TRUE; + } - // - // Get L and A flag, recorded in the lower 2 bits of Reserved1 - // - OnLink = FALSE; - if ((PrefixOption.Reserved1 & IP6_ON_LINK_FLAG) == IP6_ON_LINK_FLAG) { - OnLink = TRUE; - } - Autonomous = FALSE; - if ((PrefixOption.Reserved1 & IP6_AUTO_CONFIG_FLAG) == IP6_AUTO_CONFIG_FLAG) { - Autonomous = TRUE; - } + // + // If the prefix is the link-local prefix, silently ignore the prefix option. + // + if ((PrefixOption.PrefixLength == IP6_LINK_LOCAL_PREFIX_LENGTH) && + NetIp6IsLinkLocalAddr (&PrefixOption.Prefix) + ) + { + Offset += sizeof (IP6_PREFIX_INFO_OPTION); + break; + } - // - // If the prefix is the link-local prefix, silently ignore the prefix option. - // - if (PrefixOption.PrefixLength == IP6_LINK_LOCAL_PREFIX_LENGTH && - NetIp6IsLinkLocalAddr (&PrefixOption.Prefix) - ) { - Offset += sizeof (IP6_PREFIX_INFO_OPTION); - break; - } - // - // Do following if on-link flag is set according to RFC4861. - // - if (OnLink) { - PrefixList = Ip6FindPrefixListEntry ( - IpSb, - TRUE, - PrefixOption.PrefixLength, - &PrefixOption.Prefix - ); // - // Create a new entry for the prefix, if the ValidLifetime is zero, - // silently ignore the prefix option. + // Do following if on-link flag is set according to RFC4861. // - if (PrefixList == NULL && PrefixOption.ValidLifetime != 0) { - PrefixList = Ip6CreatePrefixListEntry ( + if (OnLink) { + PrefixList = Ip6FindPrefixListEntry ( IpSb, TRUE, - PrefixOption.ValidLifetime, - PrefixOption.PreferredLifetime, PrefixOption.PrefixLength, &PrefixOption.Prefix ); - if (PrefixList == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto Exit; - } - } else if (PrefixList != NULL) { - if (PrefixOption.ValidLifetime != 0) { - PrefixList->ValidLifetime = PrefixOption.ValidLifetime; - } else { - // - // If the prefix exists and incoming ValidLifetime is zero, immediately - // remove the prefix. - Ip6DestroyPrefixListEntry (IpSb, PrefixList, OnLink, TRUE); - } - } - } - - // - // Do following if Autonomous flag is set according to RFC4862. - // - if (Autonomous && PrefixOption.PreferredLifetime <= PrefixOption.ValidLifetime) { - PrefixList = Ip6FindPrefixListEntry ( - IpSb, - FALSE, - PrefixOption.PrefixLength, - &PrefixOption.Prefix - ); - // - // Create a new entry for the prefix, and form an address by prefix + interface id - // If the sum of the prefix length and interface identifier length - // does not equal 128 bits, the Prefix Information option MUST be ignored. - // - if (PrefixList == NULL && - PrefixOption.ValidLifetime != 0 && - PrefixOption.PrefixLength + IpSb->InterfaceIdLen * 8 == 128 - ) { // - // Form the address in network order. + // Create a new entry for the prefix, if the ValidLifetime is zero, + // silently ignore the prefix option. // - CopyMem (&StatelessAddress, &PrefixOption.Prefix, sizeof (UINT64)); - CopyMem (&StatelessAddress.Addr[8], IpSb->InterfaceId, sizeof (UINT64)); - - // - // If the address is not yet in the assigned address list, adds it into. - // - if (!Ip6IsOneOfSetAddress (IpSb, &StatelessAddress, NULL, NULL)) { - // - // And also not in the DAD process, check its uniqueness firstly. - // - if (Ip6FindDADEntry (IpSb, &StatelessAddress, NULL) == NULL) { - Status = Ip6SetAddress ( - IpSb->DefaultInterface, - &StatelessAddress, - FALSE, - PrefixOption.PrefixLength, - PrefixOption.ValidLifetime, - PrefixOption.PreferredLifetime, - NULL, - NULL - ); - if (EFI_ERROR (Status)) { - goto Exit; - } + if ((PrefixList == NULL) && (PrefixOption.ValidLifetime != 0)) { + PrefixList = Ip6CreatePrefixListEntry ( + IpSb, + TRUE, + PrefixOption.ValidLifetime, + PrefixOption.PreferredLifetime, + PrefixOption.PrefixLength, + &PrefixOption.Prefix + ); + if (PrefixList == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Exit; + } + } else if (PrefixList != NULL) { + if (PrefixOption.ValidLifetime != 0) { + PrefixList->ValidLifetime = PrefixOption.ValidLifetime; + } else { + // + // If the prefix exists and incoming ValidLifetime is zero, immediately + // remove the prefix. + Ip6DestroyPrefixListEntry (IpSb, PrefixList, OnLink, TRUE); } } + } - // - // Adds the prefix option to stateless prefix option list. - // - PrefixList = Ip6CreatePrefixListEntry ( + // + // Do following if Autonomous flag is set according to RFC4862. + // + if (Autonomous && (PrefixOption.PreferredLifetime <= PrefixOption.ValidLifetime)) { + PrefixList = Ip6FindPrefixListEntry ( IpSb, FALSE, - PrefixOption.ValidLifetime, - PrefixOption.PreferredLifetime, PrefixOption.PrefixLength, &PrefixOption.Prefix ); - if (PrefixList == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto Exit; - } - } else if (PrefixList != NULL) { - // - // Reset the preferred lifetime of the address if the advertised prefix exists. - // Perform specific action to valid lifetime together. + // Create a new entry for the prefix, and form an address by prefix + interface id + // If the sum of the prefix length and interface identifier length + // does not equal 128 bits, the Prefix Information option MUST be ignored. // - PrefixList->PreferredLifetime = PrefixOption.PreferredLifetime; - if ((PrefixOption.ValidLifetime > 7200) || - (PrefixOption.ValidLifetime > PrefixList->ValidLifetime)) { + if ((PrefixList == NULL) && + (PrefixOption.ValidLifetime != 0) && + (PrefixOption.PrefixLength + IpSb->InterfaceIdLen * 8 == 128) + ) + { // - // If the received Valid Lifetime is greater than 2 hours or - // greater than RemainingLifetime, set the valid lifetime of the - // corresponding address to the advertised Valid Lifetime. + // Form the address in network order. // - PrefixList->ValidLifetime = PrefixOption.ValidLifetime; + CopyMem (&StatelessAddress, &PrefixOption.Prefix, sizeof (UINT64)); + CopyMem (&StatelessAddress.Addr[8], IpSb->InterfaceId, sizeof (UINT64)); - } else if (PrefixList->ValidLifetime <= 7200) { // - // If RemainingLifetime is less than or equals to 2 hours, ignore the - // Prefix Information option with regards to the valid lifetime. - // TODO: If this option has been authenticated, set the valid lifetime. + // If the address is not yet in the assigned address list, adds it into. // - } else { + if (!Ip6IsOneOfSetAddress (IpSb, &StatelessAddress, NULL, NULL)) { + // + // And also not in the DAD process, check its uniqueness firstly. + // + if (Ip6FindDADEntry (IpSb, &StatelessAddress, NULL) == NULL) { + Status = Ip6SetAddress ( + IpSb->DefaultInterface, + &StatelessAddress, + FALSE, + PrefixOption.PrefixLength, + PrefixOption.ValidLifetime, + PrefixOption.PreferredLifetime, + NULL, + NULL + ); + if (EFI_ERROR (Status)) { + goto Exit; + } + } + } + // - // Otherwise, reset the valid lifetime of the corresponding - // address to 2 hours. + // Adds the prefix option to stateless prefix option list. + // + PrefixList = Ip6CreatePrefixListEntry ( + IpSb, + FALSE, + PrefixOption.ValidLifetime, + PrefixOption.PreferredLifetime, + PrefixOption.PrefixLength, + &PrefixOption.Prefix + ); + if (PrefixList == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto Exit; + } + } else if (PrefixList != NULL) { // - PrefixList->ValidLifetime = 7200; + // Reset the preferred lifetime of the address if the advertised prefix exists. + // Perform specific action to valid lifetime together. + // + PrefixList->PreferredLifetime = PrefixOption.PreferredLifetime; + if ((PrefixOption.ValidLifetime > 7200) || + (PrefixOption.ValidLifetime > PrefixList->ValidLifetime)) + { + // + // If the received Valid Lifetime is greater than 2 hours or + // greater than RemainingLifetime, set the valid lifetime of the + // corresponding address to the advertised Valid Lifetime. + // + PrefixList->ValidLifetime = PrefixOption.ValidLifetime; + } else if (PrefixList->ValidLifetime <= 7200) { + // + // If RemainingLifetime is less than or equals to 2 hours, ignore the + // Prefix Information option with regards to the valid lifetime. + // TODO: If this option has been authenticated, set the valid lifetime. + // + } else { + // + // Otherwise, reset the valid lifetime of the corresponding + // address to 2 hours. + // + PrefixList->ValidLifetime = 7200; + } } } - } - Offset += sizeof (IP6_PREFIX_INFO_OPTION); - break; - case Ip6OptionMtu: - NetbufCopy (Packet, Offset, sizeof (IP6_MTU_OPTION), (UINT8 *) &MTUOption); + Offset += sizeof (IP6_PREFIX_INFO_OPTION); + break; + case Ip6OptionMtu: + NetbufCopy (Packet, Offset, sizeof (IP6_MTU_OPTION), (UINT8 *)&MTUOption); - // - // Option size validity ensured by Ip6IsNDOptionValid(). - // - ASSERT (MTUOption.Length == 1); - ASSERT (Offset + (UINT32) MTUOption.Length * 8 <= (UINT32) Head->PayloadLength); + // + // Option size validity ensured by Ip6IsNDOptionValid(). + // + ASSERT (MTUOption.Length == 1); + ASSERT (Offset + (UINT32)MTUOption.Length * 8 <= (UINT32)Head->PayloadLength); - // - // Use IPv6 minimum link MTU 1280 bytes as the maximum packet size in order - // to omit implementation of Path MTU Discovery. Thus ignore the MTU option - // in Router Advertisement. - // + // + // Use IPv6 minimum link MTU 1280 bytes as the maximum packet size in order + // to omit implementation of Path MTU Discovery. Thus ignore the MTU option + // in Router Advertisement. + // - Offset += sizeof (IP6_MTU_OPTION); - break; - default: - // - // Silently ignore unrecognized options - // - NetbufCopy (Packet, Offset + sizeof (UINT8), sizeof (UINT8), &Length); + Offset += sizeof (IP6_MTU_OPTION); + break; + default: + // + // Silently ignore unrecognized options + // + NetbufCopy (Packet, Offset + sizeof (UINT8), sizeof (UINT8), &Length); - ASSERT (Length != 0); + ASSERT (Length != 0); - Offset += (UINT32) Length * 8; - break; + Offset += (UINT32)Length * 8; + break; } } @@ -2382,31 +2393,31 @@ Exit: **/ EFI_STATUS Ip6ProcessRedirect ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ) { - IP6_ICMP_INFORMATION_HEAD *Icmp; - EFI_IPv6_ADDRESS *Target; - EFI_IPv6_ADDRESS *IcmpDest; - UINT8 *Option; - UINT16 OptionLen; - IP6_ROUTE_ENTRY *RouteEntry; - IP6_ROUTE_CACHE_ENTRY *RouteCache; - IP6_NEIGHBOR_ENTRY *NeighborCache; - INT32 Length; - UINT8 OptLen; - IP6_ETHER_ADDR_OPTION *LinkLayerOption; - EFI_MAC_ADDRESS Mac; - UINT32 Index; - BOOLEAN IsRouter; - EFI_STATUS Status; - INTN Result; + IP6_ICMP_INFORMATION_HEAD *Icmp; + EFI_IPv6_ADDRESS *Target; + EFI_IPv6_ADDRESS *IcmpDest; + UINT8 *Option; + UINT16 OptionLen; + IP6_ROUTE_ENTRY *RouteEntry; + IP6_ROUTE_CACHE_ENTRY *RouteCache; + IP6_NEIGHBOR_ENTRY *NeighborCache; + INT32 Length; + UINT8 OptLen; + IP6_ETHER_ADDR_OPTION *LinkLayerOption; + EFI_MAC_ADDRESS Mac; + UINT32 Index; + BOOLEAN IsRouter; + EFI_STATUS Status; + INTN Result; Status = EFI_INVALID_PARAMETER; - Icmp = (IP6_ICMP_INFORMATION_HEAD *) NetbufGetByte (Packet, 0, NULL); + Icmp = (IP6_ICMP_INFORMATION_HEAD *)NetbufGetByte (Packet, 0, NULL); if (Icmp == NULL) { goto Exit; } @@ -2421,8 +2432,9 @@ Ip6ProcessRedirect ( // ICMP Code is 0. // ICMP length (derived from the IP length) is 40 or more octets. // - if (Head->HopLimit != IP6_HOP_LIMIT || Icmp->Head.Code != 0 || - Head->PayloadLength < IP6_REDITECT_LENGTH) { + if ((Head->HopLimit != IP6_HOP_LIMIT) || (Icmp->Head.Code != 0) || + (Head->PayloadLength < IP6_REDITECT_LENGTH)) + { goto Exit; } @@ -2443,9 +2455,9 @@ Ip6ProcessRedirect ( // // All included options have a length that is greater than zero. // - OptionLen = (UINT16) (Head->PayloadLength - IP6_REDITECT_LENGTH); + OptionLen = (UINT16)(Head->PayloadLength - IP6_REDITECT_LENGTH); if (OptionLen != 0) { - Option = NetbufGetByte (Packet, IP6_REDITECT_LENGTH, NULL); + Option = NetbufGetByte (Packet, IP6_REDITECT_LENGTH, NULL); ASSERT (Option != NULL); if (!Ip6IsNDOptionValid (Option, OptionLen)) { @@ -2453,7 +2465,7 @@ Ip6ProcessRedirect ( } } - Target = (EFI_IPv6_ADDRESS *) (Icmp + 1); + Target = (EFI_IPv6_ADDRESS *)(Icmp + 1); IcmpDest = Target + 1; // @@ -2479,32 +2491,34 @@ Ip6ProcessRedirect ( // address option. // Length = Packet->TotalSize - 40; - Option = (UINT8 *) (IcmpDest + 1); + Option = (UINT8 *)(IcmpDest + 1); LinkLayerOption = NULL; while (Length > 0) { switch (*Option) { - case Ip6OptionEtherTarget: + case Ip6OptionEtherTarget: - LinkLayerOption = (IP6_ETHER_ADDR_OPTION *) Option; - OptLen = LinkLayerOption->Length; - if (OptLen != 1) { - // - // For ethernet, the length must be 1. - // - goto Exit; - } - break; + LinkLayerOption = (IP6_ETHER_ADDR_OPTION *)Option; + OptLen = LinkLayerOption->Length; + if (OptLen != 1) { + // + // For ethernet, the length must be 1. + // + goto Exit; + } - default: + break; - OptLen = *(Option + 1); - if (OptLen == 0) { - // - // A length of 0 is invalid. - // - goto Exit; - } - break; + default: + + OptLen = *(Option + 1); + if (OptLen == 0) { + // + // A length of 0 is invalid. + // + goto Exit; + } + + break; } Length -= 8 * OptLen; @@ -2535,10 +2549,9 @@ Ip6ProcessRedirect ( IP6_COPY_ADDRESS (&RouteCache->NextHop, Target); if (!IsRouter) { - RouteEntry = (IP6_ROUTE_ENTRY *) RouteCache->Tag; + RouteEntry = (IP6_ROUTE_ENTRY *)RouteCache->Tag; RouteEntry->Flag = RouteEntry->Flag | IP6_DIRECT_ROUTE; } - } else { // // Get the Route Entry. @@ -2563,7 +2576,7 @@ Ip6ProcessRedirect ( IcmpDest, &Head->DestinationAddress, Target, - (UINTN) RouteEntry + (UINTN)RouteEntry ); if (RouteCache == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -2600,7 +2613,7 @@ Ip6ProcessRedirect ( } NeighborCache->State = EfiNeighborStale; - NeighborCache->Ticks = (UINT32) IP6_INFINIT_LIFETIME; + NeighborCache->Ticks = (UINT32)IP6_INFINIT_LIFETIME; } else { Result = CompareMem (LinkLayerOption->EtherAddr, &NeighborCache->LinkAddress, 6); @@ -2612,14 +2625,14 @@ Ip6ProcessRedirect ( if ((NeighborCache->State == EfiNeighborInComplete) || (Result != 0)) { CopyMem (&NeighborCache->LinkAddress, LinkLayerOption->EtherAddr, 6); - NeighborCache->Ticks = (UINT32) IP6_INFINIT_LIFETIME; + NeighborCache->Ticks = (UINT32)IP6_INFINIT_LIFETIME; if (NeighborCache->State == EfiNeighborInComplete) { // // Send queued packets if exist. // NeighborCache->State = EfiNeighborStale; - NeighborCache->CallBack ((VOID *) NeighborCache); + NeighborCache->CallBack ((VOID *)NeighborCache); } else { NeighborCache->State = EfiNeighborStale; } @@ -2627,7 +2640,7 @@ Ip6ProcessRedirect ( } } - if (NeighborCache != NULL && IsRouter) { + if ((NeighborCache != NULL) && IsRouter) { // // The Target is a router, set IsRouter to TRUE. // @@ -2667,14 +2680,14 @@ Exit: **/ EFI_STATUS Ip6AddNeighbor ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, - IN UINT32 Timeout, - IN BOOLEAN Override + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, + IN UINT32 Timeout, + IN BOOLEAN Override ) { - IP6_NEIGHBOR_ENTRY *Neighbor; + IP6_NEIGHBOR_ENTRY *Neighbor; Neighbor = Ip6FindNeighborEntry (IpSb, TargetIp6Address); if (Neighbor != NULL) { @@ -2702,7 +2715,7 @@ Ip6AddNeighbor ( Neighbor->Ticks = IP6_GET_TICKS (Timeout / TICKS_PER_MS); Neighbor->Dynamic = TRUE; } else { - Neighbor->Ticks = (UINT32) IP6_INFINIT_LIFETIME; + Neighbor->Ticks = (UINT32)IP6_INFINIT_LIFETIME; } return EFI_SUCCESS; @@ -2729,14 +2742,14 @@ Ip6AddNeighbor ( **/ EFI_STATUS Ip6DelNeighbor ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, - IN UINT32 Timeout, - IN BOOLEAN Override + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, + IN UINT32 Timeout, + IN BOOLEAN Override ) { - IP6_NEIGHBOR_ENTRY *Neighbor; + IP6_NEIGHBOR_ENTRY *Neighbor; Neighbor = Ip6FindNeighborEntry (IpSb, TargetIp6Address); if (Neighbor == NULL) { @@ -2761,24 +2774,24 @@ Ip6DelNeighbor ( VOID EFIAPI Ip6NdFasterTimerTicking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - LIST_ENTRY *Entry2; - IP6_INTERFACE *IpIf; - IP6_DELAY_JOIN_LIST *DelayNode; - EFI_IPv6_ADDRESS Source; - IP6_DAD_ENTRY *DupAddrDetect; - EFI_STATUS Status; - IP6_NEIGHBOR_ENTRY *NeighborCache; - EFI_IPv6_ADDRESS Destination; - IP6_SERVICE *IpSb; - BOOLEAN Flag; - - IpSb = (IP6_SERVICE *) Context; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + LIST_ENTRY *Entry2; + IP6_INTERFACE *IpIf; + IP6_DELAY_JOIN_LIST *DelayNode; + EFI_IPv6_ADDRESS Source; + IP6_DAD_ENTRY *DupAddrDetect; + EFI_STATUS Status; + IP6_NEIGHBOR_ENTRY *NeighborCache; + EFI_IPv6_ADDRESS Destination; + IP6_SERVICE *IpSb; + BOOLEAN Flag; + + IpSb = (IP6_SERVICE *)Context; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); ZeroMem (&Source, sizeof (EFI_IPv6_ADDRESS)); @@ -2790,13 +2803,14 @@ Ip6NdFasterTimerTicking ( // if ((IpSb->Ip6ConfigInstance.Policy == Ip6ConfigPolicyAutomatic) && !IpSb->RouterAdvertiseReceived && - IpSb->SolicitTimer > 0 - ) { + (IpSb->SolicitTimer > 0) + ) + { if ((IpSb->Ticks == 0) || (--IpSb->Ticks == 0)) { Status = Ip6SendRouterSolicit (IpSb, NULL, NULL, NULL, NULL); if (!EFI_ERROR (Status)) { IpSb->SolicitTimer--; - IpSb->Ticks = (UINT32) IP6_GET_TICKS (IP6_RTR_SOLICITATION_INTERVAL); + IpSb->Ticks = (UINT32)IP6_GET_TICKS (IP6_RTR_SOLICITATION_INTERVAL); } } } @@ -2864,7 +2878,8 @@ Ip6NdFasterTimerTicking ( // Flag = FALSE; if ((DupAddrDetect->Receive == 0) || - (DupAddrDetect->Transmit <= DupAddrDetect->Receive)) { + (DupAddrDetect->Transmit <= DupAddrDetect->Receive)) + { Flag = TRUE; } @@ -2881,149 +2896,111 @@ Ip6NdFasterTimerTicking ( NeighborCache = NET_LIST_USER_STRUCT (Entry, IP6_NEIGHBOR_ENTRY, Link); switch (NeighborCache->State) { - case EfiNeighborInComplete: - if (NeighborCache->Ticks > 0) { - --NeighborCache->Ticks; - } - - // - // Retransmit Neighbor Solicitation messages approximately every - // RetransTimer milliseconds while awaiting a response. - // - if (NeighborCache->Ticks == 0) { - if (NeighborCache->Transmit > 1) { - // - // Send out multicast neighbor solicitation for address resolution. - // After last neighbor solicitation message has been sent out, wait - // for RetransTimer and then remove entry if no response is received. - // - Ip6CreateSNMulticastAddr (&NeighborCache->Neighbor, &Destination); - Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source); - if (EFI_ERROR (Status)) { - return; - } - - Status = Ip6SendNeighborSolicit ( - IpSb, - &Source, - &Destination, - &NeighborCache->Neighbor, - &IpSb->SnpMode.CurrentAddress - ); - if (EFI_ERROR (Status)) { - return; - } + case EfiNeighborInComplete: + if (NeighborCache->Ticks > 0) { + --NeighborCache->Ticks; } // - // Update the retransmit times. + // Retransmit Neighbor Solicitation messages approximately every + // RetransTimer milliseconds while awaiting a response. // - if (NeighborCache->Transmit > 0) { - --NeighborCache->Transmit; - NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); - } - } - - if (NeighborCache->Transmit == 0) { - // - // Timeout, send ICMP destination unreachable packet and then remove entry - // - Status = Ip6FreeNeighborEntry ( - IpSb, - NeighborCache, - TRUE, - TRUE, - EFI_ICMP_ERROR, - NULL, - NULL - ); - if (EFI_ERROR (Status)) { - return; - } - } + if (NeighborCache->Ticks == 0) { + if (NeighborCache->Transmit > 1) { + // + // Send out multicast neighbor solicitation for address resolution. + // After last neighbor solicitation message has been sent out, wait + // for RetransTimer and then remove entry if no response is received. + // + Ip6CreateSNMulticastAddr (&NeighborCache->Neighbor, &Destination); + Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source); + if (EFI_ERROR (Status)) { + return; + } - break; + Status = Ip6SendNeighborSolicit ( + IpSb, + &Source, + &Destination, + &NeighborCache->Neighbor, + &IpSb->SnpMode.CurrentAddress + ); + if (EFI_ERROR (Status)) { + return; + } + } - case EfiNeighborReachable: - // - // This entry is inserted by EfiIp6Neighbors() as static entry - // and will not timeout. - // - if (!NeighborCache->Dynamic && (NeighborCache->Ticks == IP6_INFINIT_LIFETIME)) { - break; - } + // + // Update the retransmit times. + // + if (NeighborCache->Transmit > 0) { + --NeighborCache->Transmit; + NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); + } + } - if ((NeighborCache->Ticks == 0) || (--NeighborCache->Ticks == 0)) { - if (NeighborCache->Dynamic) { + if (NeighborCache->Transmit == 0) { // - // This entry is inserted by EfiIp6Neighbors() as dynamic entry - // and will be deleted after timeout. + // Timeout, send ICMP destination unreachable packet and then remove entry // Status = Ip6FreeNeighborEntry ( IpSb, NeighborCache, - FALSE, TRUE, - EFI_TIMEOUT, + TRUE, + EFI_ICMP_ERROR, NULL, NULL ); if (EFI_ERROR (Status)) { return; } - } else { - NeighborCache->State = EfiNeighborStale; - NeighborCache->Ticks = (UINT32) IP6_INFINIT_LIFETIME; } - } - break; - - case EfiNeighborDelay: - if ((NeighborCache->Ticks == 0) || (--NeighborCache->Ticks == 0)) { + break; - NeighborCache->State = EfiNeighborProbe; - NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); - NeighborCache->Transmit = IP6_MAX_UNICAST_SOLICIT + 1; + case EfiNeighborReachable: // - // Send out unicast neighbor solicitation for Neighbor Unreachability Detection + // This entry is inserted by EfiIp6Neighbors() as static entry + // and will not timeout. // - Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source); - if (EFI_ERROR (Status)) { - return; + if (!NeighborCache->Dynamic && (NeighborCache->Ticks == IP6_INFINIT_LIFETIME)) { + break; } - Status = Ip6SendNeighborSolicit ( - IpSb, - &Source, - &NeighborCache->Neighbor, - &NeighborCache->Neighbor, - &IpSb->SnpMode.CurrentAddress - ); - if (EFI_ERROR (Status)) { - return; + if ((NeighborCache->Ticks == 0) || (--NeighborCache->Ticks == 0)) { + if (NeighborCache->Dynamic) { + // + // This entry is inserted by EfiIp6Neighbors() as dynamic entry + // and will be deleted after timeout. + // + Status = Ip6FreeNeighborEntry ( + IpSb, + NeighborCache, + FALSE, + TRUE, + EFI_TIMEOUT, + NULL, + NULL + ); + if (EFI_ERROR (Status)) { + return; + } + } else { + NeighborCache->State = EfiNeighborStale; + NeighborCache->Ticks = (UINT32)IP6_INFINIT_LIFETIME; + } } - NeighborCache->Transmit--; - } - - break; - - case EfiNeighborProbe: - if (NeighborCache->Ticks > 0) { - --NeighborCache->Ticks; - } + break; - // - // Retransmit Neighbor Solicitation messages approximately every - // RetransTimer milliseconds while awaiting a response. - // - if (NeighborCache->Ticks == 0) { - if (NeighborCache->Transmit > 1) { + case EfiNeighborDelay: + if ((NeighborCache->Ticks == 0) || (--NeighborCache->Ticks == 0)) { + NeighborCache->State = EfiNeighborProbe; + NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); + NeighborCache->Transmit = IP6_MAX_UNICAST_SOLICIT + 1; // - // Send out unicast neighbor solicitation for Neighbor Unreachability - // Detection. After last neighbor solicitation message has been sent out, - // wait for RetransTimer and then remove entry if no response is received. + // Send out unicast neighbor solicitation for Neighbor Unreachability Detection // Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source); if (EFI_ERROR (Status)) { @@ -3040,39 +3017,76 @@ Ip6NdFasterTimerTicking ( if (EFI_ERROR (Status)) { return; } + + NeighborCache->Transmit--; } - // - // Update the retransmit times. - // - if (NeighborCache->Transmit > 0) { - --NeighborCache->Transmit; - NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); + break; + + case EfiNeighborProbe: + if (NeighborCache->Ticks > 0) { + --NeighborCache->Ticks; } - } - if (NeighborCache->Transmit == 0) { // - // Delete the neighbor entry. + // Retransmit Neighbor Solicitation messages approximately every + // RetransTimer milliseconds while awaiting a response. // - Status = Ip6FreeNeighborEntry ( - IpSb, - NeighborCache, - FALSE, - TRUE, - EFI_TIMEOUT, - NULL, - NULL - ); - if (EFI_ERROR (Status)) { - return; + if (NeighborCache->Ticks == 0) { + if (NeighborCache->Transmit > 1) { + // + // Send out unicast neighbor solicitation for Neighbor Unreachability + // Detection. After last neighbor solicitation message has been sent out, + // wait for RetransTimer and then remove entry if no response is received. + // + Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source); + if (EFI_ERROR (Status)) { + return; + } + + Status = Ip6SendNeighborSolicit ( + IpSb, + &Source, + &NeighborCache->Neighbor, + &NeighborCache->Neighbor, + &IpSb->SnpMode.CurrentAddress + ); + if (EFI_ERROR (Status)) { + return; + } + } + + // + // Update the retransmit times. + // + if (NeighborCache->Transmit > 0) { + --NeighborCache->Transmit; + NeighborCache->Ticks = IP6_GET_TICKS (IpSb->RetransTimer); + } } - } - break; + if (NeighborCache->Transmit == 0) { + // + // Delete the neighbor entry. + // + Status = Ip6FreeNeighborEntry ( + IpSb, + NeighborCache, + FALSE, + TRUE, + EFI_TIMEOUT, + NULL, + NULL + ); + if (EFI_ERROR (Status)) { + return; + } + } - default: - break; + break; + + default: + break; } } } @@ -3087,15 +3101,15 @@ Ip6NdFasterTimerTicking ( **/ VOID Ip6NdTimerTicking ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_DEFAULT_ROUTER *DefaultRouter; - IP6_PREFIX_LIST_ENTRY *PrefixOption; - UINT8 Index; - IP6_ROUTE_CACHE_ENTRY *RouteCache; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_DEFAULT_ROUTER *DefaultRouter; + IP6_PREFIX_LIST_ENTRY *PrefixOption; + UINT8 Index; + IP6_ROUTE_CACHE_ENTRY *RouteCache; // // Decrease the lifetime of default router, if expires remove it from default router list. @@ -3114,11 +3128,12 @@ Ip6NdTimerTicking ( // NET_LIST_FOR_EACH_SAFE (Entry, Next, &IpSb->AutonomousPrefix) { PrefixOption = NET_LIST_USER_STRUCT (Entry, IP6_PREFIX_LIST_ENTRY, Link); - if (PrefixOption->ValidLifetime != (UINT32) IP6_INFINIT_LIFETIME) { + if (PrefixOption->ValidLifetime != (UINT32)IP6_INFINIT_LIFETIME) { if ((PrefixOption->ValidLifetime > 0) && (--PrefixOption->ValidLifetime > 0)) { - if ((PrefixOption->PreferredLifetime != (UINT32) IP6_INFINIT_LIFETIME) && + if ((PrefixOption->PreferredLifetime != (UINT32)IP6_INFINIT_LIFETIME) && (PrefixOption->PreferredLifetime > 0) - ) { + ) + { --PrefixOption->PreferredLifetime; } } else { @@ -3129,7 +3144,7 @@ Ip6NdTimerTicking ( NET_LIST_FOR_EACH_SAFE (Entry, Next, &IpSb->OnlinkPrefix) { PrefixOption = NET_LIST_USER_STRUCT (Entry, IP6_PREFIX_LIST_ENTRY, Link); - if (PrefixOption->ValidLifetime != (UINT32) IP6_INFINIT_LIFETIME) { + if (PrefixOption->ValidLifetime != (UINT32)IP6_INFINIT_LIFETIME) { if ((PrefixOption->ValidLifetime == 0) || (--PrefixOption->ValidLifetime == 0)) { Ip6DestroyPrefixListEntry (IpSb, PrefixOption, TRUE, TRUE); } @@ -3156,4 +3171,3 @@ Ip6NdTimerTicking ( } } } - diff --git a/NetworkPkg/Ip6Dxe/Ip6Nd.h b/NetworkPkg/Ip6Dxe/Ip6Nd.h index 5f1bd6fb92..860934a167 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Nd.h +++ b/NetworkPkg/Ip6Dxe/Ip6Nd.h @@ -13,82 +13,82 @@ #define IP6_GET_TICKS(Ms) (((Ms) + IP6_TIMER_INTERVAL_IN_MS - 1) / IP6_TIMER_INTERVAL_IN_MS) enum { - IP6_INF_ROUTER_LIFETIME = 0xFFFF, + IP6_INF_ROUTER_LIFETIME = 0xFFFF, IP6_MAX_RTR_SOLICITATION_DELAY = 1000, ///< 1000 milliseconds IP6_MAX_RTR_SOLICITATIONS = 3, IP6_RTR_SOLICITATION_INTERVAL = 4000, - IP6_MIN_RANDOM_FACTOR_SCALED = 1, - IP6_MAX_RANDOM_FACTOR_SCALED = 3, - IP6_RANDOM_FACTOR_SCALE = 2, + IP6_MIN_RANDOM_FACTOR_SCALED = 1, + IP6_MAX_RANDOM_FACTOR_SCALED = 3, + IP6_RANDOM_FACTOR_SCALE = 2, - IP6_MAX_MULTICAST_SOLICIT = 3, - IP6_MAX_UNICAST_SOLICIT = 3, - IP6_MAX_ANYCAST_DELAY_TIME = 1, - IP6_MAX_NEIGHBOR_ADV = 3, - IP6_REACHABLE_TIME = 30000, - IP6_RETRANS_TIMER = 1000, - IP6_DELAY_FIRST_PROBE_TIME = 5000, + IP6_MAX_MULTICAST_SOLICIT = 3, + IP6_MAX_UNICAST_SOLICIT = 3, + IP6_MAX_ANYCAST_DELAY_TIME = 1, + IP6_MAX_NEIGHBOR_ADV = 3, + IP6_REACHABLE_TIME = 30000, + IP6_RETRANS_TIMER = 1000, + IP6_DELAY_FIRST_PROBE_TIME = 5000, - IP6_MIN_LINK_MTU = 1280, - IP6_MAX_LINK_MTU = 1500, + IP6_MIN_LINK_MTU = 1280, + IP6_MAX_LINK_MTU = 1500, - IP6_IS_ROUTER_FLAG = 0x80, - IP6_SOLICITED_FLAG = 0x40, - IP6_OVERRIDE_FLAG = 0x20, + IP6_IS_ROUTER_FLAG = 0x80, + IP6_SOLICITED_FLAG = 0x40, + IP6_OVERRIDE_FLAG = 0x20, - IP6_M_ADDR_CONFIG_FLAG = 0x80, - IP6_O_CONFIG_FLAG = 0x40, + IP6_M_ADDR_CONFIG_FLAG = 0x80, + IP6_O_CONFIG_FLAG = 0x40, - IP6_ON_LINK_FLAG = 0x80, - IP6_AUTO_CONFIG_FLAG = 0x40, + IP6_ON_LINK_FLAG = 0x80, + IP6_AUTO_CONFIG_FLAG = 0x40, - IP6_ND_LENGTH = 24, - IP6_RA_LENGTH = 16, - IP6_REDITECT_LENGTH = 40, - IP6_DAD_ENTRY_SIGNATURE = SIGNATURE_32 ('I', 'P', 'D', 'E') + IP6_ND_LENGTH = 24, + IP6_RA_LENGTH = 16, + IP6_REDITECT_LENGTH = 40, + IP6_DAD_ENTRY_SIGNATURE = SIGNATURE_32 ('I', 'P', 'D', 'E') }; typedef VOID (*IP6_ARP_CALLBACK) ( - VOID *Context + VOID *Context ); typedef struct _IP6_OPTION_HEADER { - UINT8 Type; - UINT8 Length; + UINT8 Type; + UINT8 Length; } IP6_OPTION_HEADER; STATIC_ASSERT (sizeof (IP6_OPTION_HEADER) == 2, "IP6_OPTION_HEADER is expected to be exactly 2 bytes long."); typedef struct _IP6_ETHE_ADDR_OPTION { - UINT8 Type; - UINT8 Length; - UINT8 EtherAddr[6]; + UINT8 Type; + UINT8 Length; + UINT8 EtherAddr[6]; } IP6_ETHER_ADDR_OPTION; STATIC_ASSERT (sizeof (IP6_ETHER_ADDR_OPTION) == 8, "IP6_ETHER_ADDR_OPTION is expected to be exactly 8 bytes long."); typedef struct _IP6_MTU_OPTION { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT32 Mtu; + UINT8 Type; + UINT8 Length; + UINT16 Reserved; + UINT32 Mtu; } IP6_MTU_OPTION; STATIC_ASSERT (sizeof (IP6_MTU_OPTION) == 8, "IP6_MTU_OPTION is expected to be exactly 8 bytes long."); typedef struct _IP6_PREFIX_INFO_OPTION { - UINT8 Type; - UINT8 Length; - UINT8 PrefixLength; - UINT8 Reserved1; - UINT32 ValidLifetime; - UINT32 PreferredLifetime; - UINT32 Reserved2; - EFI_IPv6_ADDRESS Prefix; + UINT8 Type; + UINT8 Length; + UINT8 PrefixLength; + UINT8 Reserved1; + UINT32 ValidLifetime; + UINT32 PreferredLifetime; + UINT32 Reserved2; + EFI_IPv6_ADDRESS Prefix; } IP6_PREFIX_INFO_OPTION; STATIC_ASSERT (sizeof (IP6_PREFIX_INFO_OPTION) == 32, "IP6_PREFIX_INFO_OPTION is expected to be exactly 32 bytes long."); @@ -102,25 +102,25 @@ VOID ); typedef struct _IP6_DAD_ENTRY { - UINT32 Signature; - LIST_ENTRY Link; - UINT32 MaxTransmit; - UINT32 Transmit; - UINT32 Receive; - UINT32 RetransTick; - IP6_ADDRESS_INFO *AddressInfo; - EFI_IPv6_ADDRESS Destination; - IP6_DAD_CALLBACK Callback; - VOID *Context; + UINT32 Signature; + LIST_ENTRY Link; + UINT32 MaxTransmit; + UINT32 Transmit; + UINT32 Receive; + UINT32 RetransTick; + IP6_ADDRESS_INFO *AddressInfo; + EFI_IPv6_ADDRESS Destination; + IP6_DAD_CALLBACK Callback; + VOID *Context; } IP6_DAD_ENTRY; typedef struct _IP6_DELAY_JOIN_LIST { - LIST_ENTRY Link; - UINT32 DelayTime; ///< in tick per 50 milliseconds - IP6_INTERFACE *Interface; - IP6_ADDRESS_INFO *AddressInfo; - IP6_DAD_CALLBACK DadCallback; - VOID *Context; + LIST_ENTRY Link; + UINT32 DelayTime; ///< in tick per 50 milliseconds + IP6_INTERFACE *Interface; + IP6_ADDRESS_INFO *AddressInfo; + IP6_DAD_CALLBACK DadCallback; + VOID *Context; } IP6_DELAY_JOIN_LIST; typedef struct _IP6_NEIGHBOR_ENTRY { @@ -142,20 +142,20 @@ typedef struct _IP6_NEIGHBOR_ENTRY { } IP6_NEIGHBOR_ENTRY; typedef struct _IP6_DEFAULT_ROUTER { - LIST_ENTRY Link; - INTN RefCnt; - UINT16 Lifetime; - EFI_IPv6_ADDRESS Router; - IP6_NEIGHBOR_ENTRY *NeighborCache; + LIST_ENTRY Link; + INTN RefCnt; + UINT16 Lifetime; + EFI_IPv6_ADDRESS Router; + IP6_NEIGHBOR_ENTRY *NeighborCache; } IP6_DEFAULT_ROUTER; typedef struct _IP6_PREFIX_LIST_ENTRY { - LIST_ENTRY Link; - INTN RefCnt; - UINT32 ValidLifetime; - UINT32 PreferredLifetime; - UINT8 PrefixLength; - EFI_IPv6_ADDRESS Prefix; + LIST_ENTRY Link; + INTN RefCnt; + UINT32 ValidLifetime; + UINT32 PreferredLifetime; + UINT8 PrefixLength; + EFI_IPv6_ADDRESS Prefix; } IP6_PREFIX_LIST_ENTRY; /** @@ -172,9 +172,9 @@ typedef struct _IP6_PREFIX_LIST_ENTRY { **/ EFI_STATUS Ip6BuildEfiNeighborCache ( - IN IP6_PROTOCOL *IpInstance, - OUT UINT32 *NeighborCount, - OUT EFI_IP6_NEIGHBOR_CACHE **NeighborCache + IN IP6_PROTOCOL *IpInstance, + OUT UINT32 *NeighborCount, + OUT EFI_IP6_NEIGHBOR_CACHE **NeighborCache ); /** @@ -210,9 +210,9 @@ Ip6BuildPrefixTable ( **/ IP6_DEFAULT_ROUTER * Ip6CreateDefaultRouter ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Ip6Address, - IN UINT16 RouterLifetime + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Ip6Address, + IN UINT16 RouterLifetime ); /** @@ -224,8 +224,8 @@ Ip6CreateDefaultRouter ( **/ VOID Ip6DestroyDefaultRouter ( - IN IP6_SERVICE *IpSb, - IN IP6_DEFAULT_ROUTER *DefaultRouter + IN IP6_SERVICE *IpSb, + IN IP6_DEFAULT_ROUTER *DefaultRouter ); /** @@ -236,7 +236,7 @@ Ip6DestroyDefaultRouter ( **/ VOID Ip6CleanDefaultRouterList ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ); /** @@ -251,8 +251,8 @@ Ip6CleanDefaultRouterList ( **/ IP6_DEFAULT_ROUTER * Ip6FindDefaultRouter ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Ip6Address + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Ip6Address ); /** @@ -289,10 +289,10 @@ Ip6OnDADFinished ( **/ EFI_STATUS Ip6InitDADProcess ( - IN IP6_INTERFACE *IpIf, - IN IP6_ADDRESS_INFO *AddressInfo, - IN IP6_DAD_CALLBACK Callback OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_INTERFACE *IpIf, + IN IP6_ADDRESS_INFO *AddressInfo, + IN IP6_DAD_CALLBACK Callback OPTIONAL, + IN VOID *Context OPTIONAL ); /** @@ -309,9 +309,9 @@ Ip6InitDADProcess ( **/ IP6_DAD_ENTRY * Ip6FindDADEntry ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Target, - OUT IP6_INTERFACE **Interface OPTIONAL + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Target, + OUT IP6_INTERFACE **Interface OPTIONAL ); /** @@ -334,12 +334,12 @@ Ip6FindDADEntry ( **/ IP6_PREFIX_LIST_ENTRY * Ip6CreatePrefixListEntry ( - IN IP6_SERVICE *IpSb, - IN BOOLEAN OnLinkOrAuto, - IN UINT32 ValidLifetime, - IN UINT32 PreferredLifetime, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *Prefix + IN IP6_SERVICE *IpSb, + IN BOOLEAN OnLinkOrAuto, + IN UINT32 ValidLifetime, + IN UINT32 PreferredLifetime, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *Prefix ); /** @@ -377,10 +377,10 @@ Ip6DestroyPrefixListEntry ( **/ IP6_PREFIX_LIST_ENTRY * Ip6FindPrefixListEntry ( - IN IP6_SERVICE *IpSb, - IN BOOLEAN OnLinkOrAuto, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *Prefix + IN IP6_SERVICE *IpSb, + IN BOOLEAN OnLinkOrAuto, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *Prefix ); /** @@ -393,8 +393,8 @@ Ip6FindPrefixListEntry ( **/ VOID Ip6CleanPrefixListTable ( - IN IP6_SERVICE *IpSb, - IN LIST_ENTRY *ListHead + IN IP6_SERVICE *IpSb, + IN LIST_ENTRY *ListHead ); /** @@ -413,10 +413,10 @@ Ip6CleanPrefixListTable ( **/ IP6_NEIGHBOR_ENTRY * Ip6CreateNeighborEntry ( - IN IP6_SERVICE *IpSb, - IN IP6_ARP_CALLBACK CallBack, - IN EFI_IPv6_ADDRESS *Ip6Address, - IN EFI_MAC_ADDRESS *LinkAddress OPTIONAL + IN IP6_SERVICE *IpSb, + IN IP6_ARP_CALLBACK CallBack, + IN EFI_IPv6_ADDRESS *Ip6Address, + IN EFI_MAC_ADDRESS *LinkAddress OPTIONAL ); /** @@ -431,8 +431,8 @@ Ip6CreateNeighborEntry ( **/ IP6_NEIGHBOR_ENTRY * Ip6FindNeighborEntry ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Ip6Address + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Ip6Address ); /** @@ -458,13 +458,13 @@ Ip6FindNeighborEntry ( **/ EFI_STATUS Ip6FreeNeighborEntry ( - IN IP6_SERVICE *IpSb, - IN IP6_NEIGHBOR_ENTRY *NeighborCache, - IN BOOLEAN SendIcmpError, - IN BOOLEAN FullFree, - IN EFI_STATUS IoStatus, - IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_SERVICE *IpSb, + IN IP6_NEIGHBOR_ENTRY *NeighborCache, + IN BOOLEAN SendIcmpError, + IN BOOLEAN FullFree, + IN EFI_STATUS IoStatus, + IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, + IN VOID *Context OPTIONAL ); /** @@ -493,11 +493,11 @@ Ip6FreeNeighborEntry ( **/ EFI_STATUS Ip6AddNeighbor ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, - IN UINT32 Timeout, - IN BOOLEAN Override + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, + IN UINT32 Timeout, + IN BOOLEAN Override ); /** @@ -521,11 +521,11 @@ Ip6AddNeighbor ( **/ EFI_STATUS Ip6DelNeighbor ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, - IN UINT32 Timeout, - IN BOOLEAN Override + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL, + IN UINT32 Timeout, + IN BOOLEAN Override ); /** @@ -544,9 +544,9 @@ Ip6DelNeighbor ( **/ EFI_STATUS Ip6ProcessNeighborSolicit ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -564,9 +564,9 @@ Ip6ProcessNeighborSolicit ( **/ EFI_STATUS Ip6ProcessNeighborAdvertise ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -584,9 +584,9 @@ Ip6ProcessNeighborAdvertise ( **/ EFI_STATUS Ip6ProcessRouterAdvertise ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -607,9 +607,9 @@ Ip6ProcessRouterAdvertise ( **/ EFI_STATUS Ip6ProcessRedirect ( - IN IP6_SERVICE *IpSb, - IN EFI_IP6_HEADER *Head, - IN NET_BUF *Packet + IN IP6_SERVICE *IpSb, + IN EFI_IP6_HEADER *Head, + IN NET_BUF *Packet ); /** @@ -631,11 +631,11 @@ Ip6ProcessRedirect ( **/ EFI_STATUS Ip6SendRouterSolicit ( - IN IP6_SERVICE *IpSb, - IN IP6_INTERFACE *Interface OPTIONAL, - IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, - IN EFI_IPv6_ADDRESS *DestinationAddress OPTIONAL, - IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL + IN IP6_SERVICE *IpSb, + IN IP6_INTERFACE *Interface OPTIONAL, + IN EFI_IPv6_ADDRESS *SourceAddress OPTIONAL, + IN EFI_IPv6_ADDRESS *DestinationAddress OPTIONAL, + IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL ); /** @@ -658,11 +658,11 @@ Ip6SendRouterSolicit ( **/ EFI_STATUS Ip6SendNeighborSolicit ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *SourceAddress, - IN EFI_IPv6_ADDRESS *DestinationAddress, - IN EFI_IPv6_ADDRESS *TargetIp6Address, - IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *SourceAddress, + IN EFI_IPv6_ADDRESS *DestinationAddress, + IN EFI_IPv6_ADDRESS *TargetIp6Address, + IN EFI_MAC_ADDRESS *SourceLinkAddress OPTIONAL ); /** @@ -690,14 +690,14 @@ Ip6SendNeighborSolicit ( **/ EFI_STATUS Ip6SetAddress ( - IN IP6_INTERFACE *Interface, - IN EFI_IPv6_ADDRESS *Ip6Addr, - IN BOOLEAN IsAnycast, - IN UINT8 PrefixLength, - IN UINT32 ValidLifetime, - IN UINT32 PreferredLifetime, - IN IP6_DAD_CALLBACK DadCallback OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_INTERFACE *Interface, + IN EFI_IPv6_ADDRESS *Ip6Addr, + IN BOOLEAN IsAnycast, + IN UINT8 PrefixLength, + IN UINT32 ValidLifetime, + IN UINT32 PreferredLifetime, + IN IP6_DAD_CALLBACK DadCallback OPTIONAL, + IN VOID *Context OPTIONAL ); /** @@ -712,8 +712,8 @@ Ip6SetAddress ( VOID EFIAPI Ip6NdFasterTimerTicking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -726,7 +726,7 @@ Ip6NdFasterTimerTicking ( **/ VOID Ip6NdTimerTicking ( - IN IP6_SERVICE *IpSb + IN IP6_SERVICE *IpSb ); /** @@ -739,7 +739,7 @@ Ip6NdTimerTicking ( **/ VOID Ip6OnArpResolved ( - IN VOID *Context + IN VOID *Context ); /** diff --git a/NetworkPkg/Ip6Dxe/Ip6NvData.h b/NetworkPkg/Ip6Dxe/Ip6NvData.h index eb36d7ed4c..d1c1c13345 100644 --- a/NetworkPkg/Ip6Dxe/Ip6NvData.h +++ b/NetworkPkg/Ip6Dxe/Ip6NvData.h @@ -12,35 +12,35 @@ #include -#define FORMID_MAIN_FORM 1 -#define FORMID_MANUAL_CONFIG_FORM 2 -#define FORMID_HEAD_FORM 3 - -#define IP6_POLICY_AUTO 0 -#define IP6_POLICY_MANUAL 1 -#define DAD_MAX_TRANSMIT_COUNT 10 - -#define KEY_INTERFACE_ID 0x101 -#define KEY_MANUAL_ADDRESS 0x102 -#define KEY_GATEWAY_ADDRESS 0x103 -#define KEY_DNS_ADDRESS 0x104 -#define KEY_SAVE_CHANGES 0x105 -#define KEY_SAVE_CONFIG_CHANGES 0x106 -#define KEY_IGNORE_CONFIG_CHANGES 0x107 -#define KEY_GET_CURRENT_SETTING 0x108 - -#define HOST_ADDRESS_LABEL 0x9000 -#define ROUTE_TABLE_LABEL 0xa000 -#define GATEWAY_ADDRESS_LABEL 0xb000 -#define DNS_ADDRESS_LABEL 0xc000 -#define LABEL_END 0xffff - -#define INTERFACE_ID_STR_MIN_SIZE 1 -#define INTERFACE_ID_STR_MAX_SIZE 23 -#define INTERFACE_ID_STR_STORAGE 25 -#define IP6_STR_MAX_SIZE 40 -#define ADDRESS_STR_MIN_SIZE 2 -#define ADDRESS_STR_MAX_SIZE 255 +#define FORMID_MAIN_FORM 1 +#define FORMID_MANUAL_CONFIG_FORM 2 +#define FORMID_HEAD_FORM 3 + +#define IP6_POLICY_AUTO 0 +#define IP6_POLICY_MANUAL 1 +#define DAD_MAX_TRANSMIT_COUNT 10 + +#define KEY_INTERFACE_ID 0x101 +#define KEY_MANUAL_ADDRESS 0x102 +#define KEY_GATEWAY_ADDRESS 0x103 +#define KEY_DNS_ADDRESS 0x104 +#define KEY_SAVE_CHANGES 0x105 +#define KEY_SAVE_CONFIG_CHANGES 0x106 +#define KEY_IGNORE_CONFIG_CHANGES 0x107 +#define KEY_GET_CURRENT_SETTING 0x108 + +#define HOST_ADDRESS_LABEL 0x9000 +#define ROUTE_TABLE_LABEL 0xa000 +#define GATEWAY_ADDRESS_LABEL 0xb000 +#define DNS_ADDRESS_LABEL 0xc000 +#define LABEL_END 0xffff + +#define INTERFACE_ID_STR_MIN_SIZE 1 +#define INTERFACE_ID_STR_MAX_SIZE 23 +#define INTERFACE_ID_STR_STORAGE 25 +#define IP6_STR_MAX_SIZE 40 +#define ADDRESS_STR_MIN_SIZE 2 +#define ADDRESS_STR_MAX_SIZE 255 /// /// IP6_CONFIG_IFR_NVDATA contains the IP6 configure @@ -48,16 +48,15 @@ /// #pragma pack(1) typedef struct { - UINT8 IfType; ///< interface type - UINT8 Padding[3]; - UINT32 Policy; ///< manual or automatic - UINT32 DadTransmitCount; ///< dad transmits count - CHAR16 InterfaceId[INTERFACE_ID_STR_STORAGE]; ///< alternative interface id - CHAR16 ManualAddress[ADDRESS_STR_MAX_SIZE]; ///< IP addresses - CHAR16 GatewayAddress[ADDRESS_STR_MAX_SIZE]; ///< Gateway address - CHAR16 DnsAddress[ADDRESS_STR_MAX_SIZE]; ///< DNS server address + UINT8 IfType; ///< interface type + UINT8 Padding[3]; + UINT32 Policy; ///< manual or automatic + UINT32 DadTransmitCount; ///< dad transmits count + CHAR16 InterfaceId[INTERFACE_ID_STR_STORAGE]; ///< alternative interface id + CHAR16 ManualAddress[ADDRESS_STR_MAX_SIZE]; ///< IP addresses + CHAR16 GatewayAddress[ADDRESS_STR_MAX_SIZE]; ///< Gateway address + CHAR16 DnsAddress[ADDRESS_STR_MAX_SIZE]; ///< DNS server address } IP6_CONFIG_IFR_NVDATA; #pragma pack() #endif - diff --git a/NetworkPkg/Ip6Dxe/Ip6Option.c b/NetworkPkg/Ip6Dxe/Ip6Option.c index 6b4b029d14..199eea124d 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Option.c +++ b/NetworkPkg/Ip6Dxe/Ip6Option.c @@ -28,15 +28,15 @@ **/ BOOLEAN Ip6IsOptionValid ( - IN IP6_SERVICE *IpSb, - IN NET_BUF *Packet, - IN UINT8 *Option, - IN UINT8 OptionLen, - IN UINT32 Pointer + IN IP6_SERVICE *IpSb, + IN NET_BUF *Packet, + IN UINT8 *Option, + IN UINT8 OptionLen, + IN UINT32 Pointer ) { - UINT8 Offset; - UINT8 OptionType; + UINT8 Offset; + UINT8 OptionType; Offset = 0; @@ -44,68 +44,67 @@ Ip6IsOptionValid ( OptionType = *(Option + Offset); switch (OptionType) { - case Ip6OptionPad1: - // - // It is a Pad1 option - // - Offset++; - break; - case Ip6OptionPadN: - // - // It is a PadN option - // - Offset = (UINT8) (Offset + *(Option + Offset + 1) + 2); - break; - case Ip6OptionRouterAlert: - // - // It is a Router Alert Option - // - Offset += 4; - break; - default: - // - // The highest-order two bits specify the action must be taken if - // the processing IPv6 node does not recognize the option type. - // - switch (OptionType & Ip6OptionMask) { - case Ip6OptionSkip: - Offset = (UINT8) (Offset + *(Option + Offset + 1)); + case Ip6OptionPad1: + // + // It is a Pad1 option + // + Offset++; break; - case Ip6OptionDiscard: - return FALSE; - case Ip6OptionParameterProblem: - Pointer = Pointer + Offset + sizeof (EFI_IP6_HEADER); - Ip6SendIcmpError ( - IpSb, - Packet, - NULL, - &Packet->Ip.Ip6->SourceAddress, - ICMP_V6_PARAMETER_PROBLEM, - 2, - &Pointer - ); - return FALSE; - case Ip6OptionMask: - if (!IP6_IS_MULTICAST (&Packet->Ip.Ip6->DestinationAddress)) { - Pointer = Pointer + Offset + sizeof (EFI_IP6_HEADER); - Ip6SendIcmpError ( - IpSb, - Packet, - NULL, - &Packet->Ip.Ip6->SourceAddress, - ICMP_V6_PARAMETER_PROBLEM, - 2, - &Pointer - ); + case Ip6OptionPadN: + // + // It is a PadN option + // + Offset = (UINT8)(Offset + *(Option + Offset + 1) + 2); + break; + case Ip6OptionRouterAlert: + // + // It is a Router Alert Option + // + Offset += 4; + break; + default: + // + // The highest-order two bits specify the action must be taken if + // the processing IPv6 node does not recognize the option type. + // + switch (OptionType & Ip6OptionMask) { + case Ip6OptionSkip: + Offset = (UINT8)(Offset + *(Option + Offset + 1)); + break; + case Ip6OptionDiscard: + return FALSE; + case Ip6OptionParameterProblem: + Pointer = Pointer + Offset + sizeof (EFI_IP6_HEADER); + Ip6SendIcmpError ( + IpSb, + Packet, + NULL, + &Packet->Ip.Ip6->SourceAddress, + ICMP_V6_PARAMETER_PROBLEM, + 2, + &Pointer + ); + return FALSE; + case Ip6OptionMask: + if (!IP6_IS_MULTICAST (&Packet->Ip.Ip6->DestinationAddress)) { + Pointer = Pointer + Offset + sizeof (EFI_IP6_HEADER); + Ip6SendIcmpError ( + IpSb, + Packet, + NULL, + &Packet->Ip.Ip6->SourceAddress, + ICMP_V6_PARAMETER_PROBLEM, + 2, + &Pointer + ); + } + + return FALSE; + break; } - return FALSE; break; - } - - break; } - } return TRUE; @@ -125,13 +124,13 @@ Ip6IsOptionValid ( **/ BOOLEAN Ip6IsNDOptionValid ( - IN UINT8 *Option, - IN UINT16 OptionLen + IN UINT8 *Option, + IN UINT16 OptionLen ) { - UINT32 Offset; - UINT16 Length; - IP6_OPTION_HEADER *OptionHeader; + UINT32 Offset; + UINT16 Length; + IP6_OPTION_HEADER *OptionHeader; if (Option == NULL) { ASSERT (Option != NULL); @@ -146,50 +145,54 @@ Ip6IsNDOptionValid ( // fit within the input buffer. // while (Offset + sizeof (IP6_OPTION_HEADER) - 1 < OptionLen) { - OptionHeader = (IP6_OPTION_HEADER*) (Option + Offset); - Length = (UINT16) OptionHeader->Length * 8; + OptionHeader = (IP6_OPTION_HEADER *)(Option + Offset); + Length = (UINT16)OptionHeader->Length * 8; switch (OptionHeader->Type) { - case Ip6OptionPrefixInfo: - if (Length != 32) { - return FALSE; - } - break; + case Ip6OptionPrefixInfo: + if (Length != 32) { + return FALSE; + } - case Ip6OptionMtu: - if (Length != 8) { - return FALSE; - } - break; + break; - default: - // RFC 4861 states that Length field cannot be 0. - if (Length == 0) { - return FALSE; - } - break; + case Ip6OptionMtu: + if (Length != 8) { + return FALSE; + } + + break; + + default: + // RFC 4861 states that Length field cannot be 0. + if (Length == 0) { + return FALSE; + } + + break; } // // Check whether recognized options are within the input buffer's scope. // switch (OptionHeader->Type) { - case Ip6OptionEtherSource: - case Ip6OptionEtherTarget: - case Ip6OptionPrefixInfo: - case Ip6OptionRedirected: - case Ip6OptionMtu: - if (Offset + Length > (UINT32) OptionLen) { - return FALSE; - } - break; + case Ip6OptionEtherSource: + case Ip6OptionEtherTarget: + case Ip6OptionPrefixInfo: + case Ip6OptionRedirected: + case Ip6OptionMtu: + if (Offset + Length > (UINT32)OptionLen) { + return FALSE; + } - default: - // - // Unrecognized options can be either valid (but unused) or invalid - // (garbage in between or right after valid options). Silently ignore. - // - break; + break; + + default: + // + // Unrecognized options can be either valid (but unused) or invalid + // (garbage in between or right after valid options). Silently ignore. + // + break; } // @@ -202,7 +205,6 @@ Ip6IsNDOptionValid ( return TRUE; } - /** Validate whether the NextHeader is a known valid protocol or one of the user configured protocols from the upper layer. @@ -216,18 +218,19 @@ Ip6IsNDOptionValid ( **/ BOOLEAN Ip6IsValidProtocol ( - IN IP6_SERVICE *IpSb, - IN UINT8 NextHeader + IN IP6_SERVICE *IpSb, + IN UINT8 NextHeader ) { - LIST_ENTRY *Entry; - IP6_PROTOCOL *IpInstance; - - if (NextHeader == EFI_IP_PROTO_TCP || - NextHeader == EFI_IP_PROTO_UDP || - NextHeader == IP6_ICMP || - NextHeader == IP6_ESP - ) { + LIST_ENTRY *Entry; + IP6_PROTOCOL *IpInstance; + + if ((NextHeader == EFI_IP_PROTO_TCP) || + (NextHeader == EFI_IP_PROTO_UDP) || + (NextHeader == IP6_ICMP) || + (NextHeader == IP6_ESP) + ) + { return TRUE; } @@ -281,29 +284,29 @@ Ip6IsValidProtocol ( **/ BOOLEAN Ip6IsExtsValid ( - IN IP6_SERVICE *IpSb OPTIONAL, - IN NET_BUF *Packet OPTIONAL, - IN UINT8 *NextHeader, - IN UINT8 *ExtHdrs, - IN UINT32 ExtHdrsLen, - IN BOOLEAN Rcvd, - OUT UINT32 *FormerHeader OPTIONAL, - OUT UINT8 **LastHeader, - OUT UINT32 *RealExtsLen OPTIONAL, - OUT UINT32 *UnFragmentLen OPTIONAL, - OUT BOOLEAN *Fragmented OPTIONAL + IN IP6_SERVICE *IpSb OPTIONAL, + IN NET_BUF *Packet OPTIONAL, + IN UINT8 *NextHeader, + IN UINT8 *ExtHdrs, + IN UINT32 ExtHdrsLen, + IN BOOLEAN Rcvd, + OUT UINT32 *FormerHeader OPTIONAL, + OUT UINT8 **LastHeader, + OUT UINT32 *RealExtsLen OPTIONAL, + OUT UINT32 *UnFragmentLen OPTIONAL, + OUT BOOLEAN *Fragmented OPTIONAL ) { - UINT32 Pointer; - UINT32 Offset; - UINT8 *Option; - UINT8 OptionLen; - BOOLEAN Flag; - UINT8 CountD; - UINT8 CountA; - IP6_FRAGMENT_HEADER *FragmentHead; - UINT16 FragmentOffset; - IP6_ROUTING_HEADER *RoutingHead; + UINT32 Pointer; + UINT32 Offset; + UINT8 *Option; + UINT8 OptionLen; + BOOLEAN Flag; + UINT8 CountD; + UINT8 CountA; + IP6_FRAGMENT_HEADER *FragmentHead; + UINT16 FragmentOffset; + IP6_ROUTING_HEADER *RoutingHead; if (RealExtsLen != NULL) { *RealExtsLen = 0; @@ -319,11 +322,11 @@ Ip6IsExtsValid ( *LastHeader = NextHeader; - if (ExtHdrs == NULL && ExtHdrsLen == 0) { + if ((ExtHdrs == NULL) && (ExtHdrsLen == 0)) { return TRUE; } - if ((ExtHdrs == NULL && ExtHdrsLen != 0) || (ExtHdrs != NULL && ExtHdrsLen == 0)) { + if (((ExtHdrs == NULL) && (ExtHdrsLen != 0)) || ((ExtHdrs != NULL) && (ExtHdrsLen == 0))) { return FALSE; } @@ -334,236 +337,240 @@ Ip6IsExtsValid ( CountA = 0; while (Offset <= ExtHdrsLen) { - switch (*NextHeader) { - case IP6_HOP_BY_HOP: - if (Offset != 0) { - if (!Rcvd) { + case IP6_HOP_BY_HOP: + if (Offset != 0) { + if (!Rcvd) { + return FALSE; + } + + // + // Hop-by-Hop Options header is restricted to appear immediately after an IPv6 header only. + // If not, generate a ICMP parameter problem message with code value of 1. + // + if (Pointer == 0) { + Pointer = sizeof (EFI_IP6_HEADER); + } else { + Pointer = Offset + sizeof (EFI_IP6_HEADER); + } + + if ((IpSb != NULL) && (Packet != NULL) && + !IP6_IS_MULTICAST (&Packet->Ip.Ip6->DestinationAddress)) + { + Ip6SendIcmpError ( + IpSb, + Packet, + NULL, + &Packet->Ip.Ip6->SourceAddress, + ICMP_V6_PARAMETER_PROBLEM, + 1, + &Pointer + ); + } + return FALSE; } - // - // Hop-by-Hop Options header is restricted to appear immediately after an IPv6 header only. - // If not, generate a ICMP parameter problem message with code value of 1. - // - if (Pointer == 0) { - Pointer = sizeof (EFI_IP6_HEADER); - } else { - Pointer = Offset + sizeof (EFI_IP6_HEADER); + + Flag = TRUE; + + // + // Fall through + // + case IP6_DESTINATION: + if (*NextHeader == IP6_DESTINATION) { + CountD++; } - if ((IpSb != NULL) && (Packet != NULL) && - !IP6_IS_MULTICAST (&Packet->Ip.Ip6->DestinationAddress)) { - Ip6SendIcmpError ( - IpSb, - Packet, - NULL, - &Packet->Ip.Ip6->SourceAddress, - ICMP_V6_PARAMETER_PROBLEM, - 1, - &Pointer - ); + if (CountD > 2) { + return FALSE; } - return FALSE; - } - Flag = TRUE; + NextHeader = ExtHdrs + Offset; + Pointer = Offset; - // - // Fall through - // - case IP6_DESTINATION: - if (*NextHeader == IP6_DESTINATION) { - CountD++; - } + Offset++; + Option = ExtHdrs + Offset; + OptionLen = (UINT8)((*Option + 1) * 8 - 2); + Option++; + Offset++; - if (CountD > 2) { - return FALSE; - } + if ((IpSb != NULL) && (Packet != NULL) && !Ip6IsOptionValid (IpSb, Packet, Option, OptionLen, Offset)) { + return FALSE; + } - NextHeader = ExtHdrs + Offset; - Pointer = Offset; + Offset = Offset + OptionLen; - Offset++; - Option = ExtHdrs + Offset; - OptionLen = (UINT8) ((*Option + 1) * 8 - 2); - Option++; - Offset++; + if (Flag) { + if (UnFragmentLen != NULL) { + *UnFragmentLen = Offset; + } - if (IpSb != NULL && Packet != NULL && !Ip6IsOptionValid (IpSb, Packet, Option, OptionLen, Offset)) { - return FALSE; - } + Flag = FALSE; + } + + break; - Offset = Offset + OptionLen; + case IP6_ROUTING: + NextHeader = ExtHdrs + Offset; + RoutingHead = (IP6_ROUTING_HEADER *)NextHeader; - if (Flag) { - if (UnFragmentLen != NULL) { - *UnFragmentLen = Offset; + // + // Type 0 routing header is defined in RFC2460 and deprecated in RFC5095. + // Thus all routing types are processed as unrecognized. + // + if (RoutingHead->SegmentsLeft == 0) { + // + // Ignore the routing header and proceed to process the next header. + // + Offset = Offset + (RoutingHead->HeaderLen + 1) * 8; + + if (UnFragmentLen != NULL) { + *UnFragmentLen = Offset; + } + } else { + // + // Discard the packet and send an ICMP Parameter Problem, Code 0, message + // to the packet's source address, pointing to the unrecognized routing + // type. + // + Pointer = Offset + 2 + sizeof (EFI_IP6_HEADER); + if ((IpSb != NULL) && (Packet != NULL) && + !IP6_IS_MULTICAST (&Packet->Ip.Ip6->DestinationAddress)) + { + Ip6SendIcmpError ( + IpSb, + Packet, + NULL, + &Packet->Ip.Ip6->SourceAddress, + ICMP_V6_PARAMETER_PROBLEM, + 0, + &Pointer + ); + } + + return FALSE; } - Flag = FALSE; - } + break; - break; + case IP6_FRAGMENT: - case IP6_ROUTING: - NextHeader = ExtHdrs + Offset; - RoutingHead = (IP6_ROUTING_HEADER *) NextHeader; + // + // RFC2402, AH header should after fragment header. + // + if (CountA > 1) { + return FALSE; + } - // - // Type 0 routing header is defined in RFC2460 and deprecated in RFC5095. - // Thus all routing types are processed as unrecognized. - // - if (RoutingHead->SegmentsLeft == 0) { // - // Ignore the routing header and proceed to process the next header. + // RFC2460, ICMP Parameter Problem message with code 0 should be sent + // if the length of a fragment is not a multiple of 8 octets and the M + // flag of that fragment is 1, pointing to the Payload length field of the + // fragment packet. // - Offset = Offset + (RoutingHead->HeaderLen + 1) * 8; + if ((IpSb != NULL) && (Packet != NULL) && ((ExtHdrsLen % 8) != 0)) { + // + // Check whether it is the last fragment. + // + FragmentHead = (IP6_FRAGMENT_HEADER *)(ExtHdrs + Offset); + if (FragmentHead == NULL) { + return FALSE; + } + + FragmentOffset = NTOHS (FragmentHead->FragmentOffset); + + if (((FragmentOffset & 0x1) == 0x1) && + !IP6_IS_MULTICAST (&Packet->Ip.Ip6->DestinationAddress)) + { + Pointer = sizeof (UINT32); + Ip6SendIcmpError ( + IpSb, + Packet, + NULL, + &Packet->Ip.Ip6->SourceAddress, + ICMP_V6_PARAMETER_PROBLEM, + 0, + &Pointer + ); + return FALSE; + } + } + + if (Fragmented != NULL) { + *Fragmented = TRUE; + } + + if (Rcvd && (FormerHeader != NULL)) { + *FormerHeader = (UINT32)(NextHeader - ExtHdrs); + } + + NextHeader = ExtHdrs + Offset; + Offset = Offset + 8; + break; - if (UnFragmentLen != NULL) { - *UnFragmentLen = Offset; + case IP6_AH: + if (++CountA > 1) { + return FALSE; } - } else { + Option = ExtHdrs + Offset; + NextHeader = Option; + Option++; // - // Discard the packet and send an ICMP Parameter Problem, Code 0, message - // to the packet's source address, pointing to the unrecognized routing - // type. + // RFC2402, Payload length is specified in 32-bit words, minus "2". // - Pointer = Offset + 2 + sizeof (EFI_IP6_HEADER); - if ((IpSb != NULL) && (Packet != NULL) && - !IP6_IS_MULTICAST (&Packet->Ip.Ip6->DestinationAddress)) { - Ip6SendIcmpError ( - IpSb, - Packet, - NULL, - &Packet->Ip.Ip6->SourceAddress, - ICMP_V6_PARAMETER_PROBLEM, - 0, - &Pointer - ); - } + OptionLen = (UINT8)((*Option + 2) * 4); + Offset = Offset + OptionLen; + break; + case IP6_NO_NEXT_HEADER: + *LastHeader = NextHeader; return FALSE; - } + break; - break; + default: + if (Ip6IsValidProtocol (IpSb, *NextHeader)) { + *LastHeader = NextHeader; - case IP6_FRAGMENT: + if (RealExtsLen != NULL) { + *RealExtsLen = Offset; + } - // - // RFC2402, AH header should after fragment header. - // - if (CountA > 1) { - return FALSE; - } + return TRUE; + } - // - // RFC2460, ICMP Parameter Problem message with code 0 should be sent - // if the length of a fragment is not a multiple of 8 octets and the M - // flag of that fragment is 1, pointing to the Payload length field of the - // fragment packet. - // - if (IpSb != NULL && Packet != NULL && (ExtHdrsLen % 8) != 0) { // - // Check whether it is the last fragment. + // The Next Header value is unrecognized by the node, discard the packet and + // send an ICMP parameter problem message with code value of 1. // - FragmentHead = (IP6_FRAGMENT_HEADER *) (ExtHdrs + Offset); - if (FragmentHead == NULL) { - return FALSE; + if (Offset == 0) { + // + // The Next Header directly follows IPv6 basic header. + // + Pointer = 6; + } else { + if (Pointer == 0) { + Pointer = sizeof (EFI_IP6_HEADER); + } else { + Pointer = Offset + sizeof (EFI_IP6_HEADER); + } } - FragmentOffset = NTOHS (FragmentHead->FragmentOffset); - - if (((FragmentOffset & 0x1) == 0x1) && - !IP6_IS_MULTICAST (&Packet->Ip.Ip6->DestinationAddress)) { - Pointer = sizeof (UINT32); + if ((IpSb != NULL) && (Packet != NULL) && + !IP6_IS_MULTICAST (&Packet->Ip.Ip6->DestinationAddress)) + { Ip6SendIcmpError ( IpSb, Packet, NULL, &Packet->Ip.Ip6->SourceAddress, ICMP_V6_PARAMETER_PROBLEM, - 0, + 1, &Pointer ); - return FALSE; } - } - - if (Fragmented != NULL) { - *Fragmented = TRUE; - } - if (Rcvd && FormerHeader != NULL) { - *FormerHeader = (UINT32) (NextHeader - ExtHdrs); - } - - NextHeader = ExtHdrs + Offset; - Offset = Offset + 8; - break; - - case IP6_AH: - if (++CountA > 1) { return FALSE; - } - - Option = ExtHdrs + Offset; - NextHeader = Option; - Option++; - // - // RFC2402, Payload length is specified in 32-bit words, minus "2". - // - OptionLen = (UINT8) ((*Option + 2) * 4); - Offset = Offset + OptionLen; - break; - - case IP6_NO_NEXT_HEADER: - *LastHeader = NextHeader; - return FALSE; - break; - - default: - if (Ip6IsValidProtocol (IpSb, *NextHeader)) { - - *LastHeader = NextHeader; - - if (RealExtsLen != NULL) { - *RealExtsLen = Offset; - } - - return TRUE; - } - - // - // The Next Header value is unrecognized by the node, discard the packet and - // send an ICMP parameter problem message with code value of 1. - // - if (Offset == 0) { - // - // The Next Header directly follows IPv6 basic header. - // - Pointer = 6; - } else { - if (Pointer == 0) { - Pointer = sizeof (EFI_IP6_HEADER); - } else { - Pointer = Offset + sizeof (EFI_IP6_HEADER); - } - } - - if ((IpSb != NULL) && (Packet != NULL) && - !IP6_IS_MULTICAST (&Packet->Ip.Ip6->DestinationAddress)) { - Ip6SendIcmpError ( - IpSb, - Packet, - NULL, - &Packet->Ip.Ip6->SourceAddress, - ICMP_V6_PARAMETER_PROBLEM, - 1, - &Pointer - ); - } - return FALSE; } } @@ -592,12 +599,12 @@ Ip6IsExtsValid ( **/ EFI_STATUS Ip6FillHopByHop ( - OUT UINT8 *Buffer, - IN OUT UINTN *BufferLen, - IN UINT8 NextHeader + OUT UINT8 *Buffer, + IN OUT UINTN *BufferLen, + IN UINT8 NextHeader ) { - UINT8 BufferArray[8]; + UINT8 BufferArray[8]; if (*BufferLen < 8) { *BufferLen = 8; @@ -640,23 +647,23 @@ Ip6FillHopByHop ( **/ EFI_STATUS Ip6FillFragmentHeader ( - IN IP6_SERVICE *IpSb, - IN UINT8 NextHeader, - IN UINT8 LastHeader, - IN UINT8 *ExtHdrs, - IN UINT32 ExtHdrsLen, - IN UINT16 FragmentOffset, - OUT UINT8 **UpdatedExtHdrs + IN IP6_SERVICE *IpSb, + IN UINT8 NextHeader, + IN UINT8 LastHeader, + IN UINT8 *ExtHdrs, + IN UINT32 ExtHdrsLen, + IN UINT16 FragmentOffset, + OUT UINT8 **UpdatedExtHdrs ) { - UINT32 Length; - UINT8 *Buffer; - UINT32 FormerHeader; - UINT32 Offset; - UINT32 Part1Len; - UINT32 HeaderLen; - UINT8 Current; - IP6_FRAGMENT_HEADER FragmentHead; + UINT32 Length; + UINT8 *Buffer; + UINT32 FormerHeader; + UINT32 Offset; + UINT32 Part1Len; + UINT32 HeaderLen; + UINT8 Current; + IP6_FRAGMENT_HEADER FragmentHead; if (UpdatedExtHdrs == NULL) { return EFI_INVALID_PARAMETER; @@ -668,82 +675,81 @@ Ip6FillFragmentHeader ( return EFI_OUT_OF_RESOURCES; } - Offset = 0; - Part1Len = 0; - FormerHeader = 0; - Current = NextHeader; + Offset = 0; + Part1Len = 0; + FormerHeader = 0; + Current = NextHeader; while ((ExtHdrs != NULL) && (Offset <= ExtHdrsLen)) { switch (NextHeader) { - case IP6_ROUTING: - case IP6_HOP_BY_HOP: - case IP6_DESTINATION: - Current = NextHeader; - NextHeader = *(ExtHdrs + Offset); + case IP6_ROUTING: + case IP6_HOP_BY_HOP: + case IP6_DESTINATION: + Current = NextHeader; + NextHeader = *(ExtHdrs + Offset); + + if ((Current == IP6_DESTINATION) && (NextHeader != IP6_ROUTING)) { + // + // Destination Options header should occur at most twice, once before + // a Routing header and once before the upper-layer header. Here we + // find the one before the upper-layer header. Insert the Fragment + // Header before it. + // + CopyMem (Buffer, ExtHdrs, Part1Len); + *(Buffer + FormerHeader) = IP6_FRAGMENT; + // + // Exit the loop. + // + Offset = ExtHdrsLen + 1; + break; + } - if ((Current == IP6_DESTINATION) && (NextHeader != IP6_ROUTING)) { - // - // Destination Options header should occur at most twice, once before - // a Routing header and once before the upper-layer header. Here we - // find the one before the upper-layer header. Insert the Fragment - // Header before it. - // - CopyMem (Buffer, ExtHdrs, Part1Len); - *(Buffer + FormerHeader) = IP6_FRAGMENT; - // - // Exit the loop. - // - Offset = ExtHdrsLen + 1; + FormerHeader = Offset; + HeaderLen = (*(ExtHdrs + Offset + 1) + 1) * 8; + Part1Len = Part1Len + HeaderLen; + Offset = Offset + HeaderLen; break; - } - - FormerHeader = Offset; - HeaderLen = (*(ExtHdrs + Offset + 1) + 1) * 8; - Part1Len = Part1Len + HeaderLen; - Offset = Offset + HeaderLen; - break; - - case IP6_FRAGMENT: - Current = NextHeader; - - if (Part1Len != 0) { - CopyMem (Buffer, ExtHdrs, Part1Len); - } - - *(Buffer + FormerHeader) = IP6_FRAGMENT; - - // - // Exit the loop. - // - Offset = ExtHdrsLen + 1; - break; + case IP6_FRAGMENT: + Current = NextHeader; - case IP6_AH: - Current = NextHeader; - NextHeader = *(ExtHdrs + Offset); - // - // RFC2402, Payload length is specified in 32-bit words, minus "2". - // - HeaderLen = (*(ExtHdrs + Offset + 1) + 2) * 4; - Part1Len = Part1Len + HeaderLen; - Offset = Offset + HeaderLen; - break; + if (Part1Len != 0) { + CopyMem (Buffer, ExtHdrs, Part1Len); + } - default: - if (Ip6IsValidProtocol (IpSb, NextHeader)) { - Current = NextHeader; - CopyMem (Buffer, ExtHdrs, Part1Len); *(Buffer + FormerHeader) = IP6_FRAGMENT; + // // Exit the loop. // Offset = ExtHdrsLen + 1; break; - } - FreePool (Buffer); - return EFI_UNSUPPORTED; + case IP6_AH: + Current = NextHeader; + NextHeader = *(ExtHdrs + Offset); + // + // RFC2402, Payload length is specified in 32-bit words, minus "2". + // + HeaderLen = (*(ExtHdrs + Offset + 1) + 2) * 4; + Part1Len = Part1Len + HeaderLen; + Offset = Offset + HeaderLen; + break; + + default: + if (Ip6IsValidProtocol (IpSb, NextHeader)) { + Current = NextHeader; + CopyMem (Buffer, ExtHdrs, Part1Len); + *(Buffer + FormerHeader) = IP6_FRAGMENT; + // + // Exit the loop. + // + Offset = ExtHdrsLen + 1; + break; + } + + FreePool (Buffer); + return EFI_UNSUPPORTED; } } @@ -778,4 +784,3 @@ Ip6FillFragmentHeader ( return EFI_SUCCESS; } - diff --git a/NetworkPkg/Ip6Dxe/Ip6Option.h b/NetworkPkg/Ip6Dxe/Ip6Option.h index c81b3fda2f..bd8e223c8a 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Option.h +++ b/NetworkPkg/Ip6Dxe/Ip6Option.h @@ -10,20 +10,20 @@ #ifndef __EFI_IP6_OPTION_H__ #define __EFI_IP6_OPTION_H__ -#define IP6_FRAGMENT_OFFSET_MASK (~0x3) +#define IP6_FRAGMENT_OFFSET_MASK (~0x3) typedef struct _IP6_FRAGMENT_HEADER { - UINT8 NextHeader; - UINT8 Reserved; - UINT16 FragmentOffset; - UINT32 Identification; + UINT8 NextHeader; + UINT8 Reserved; + UINT16 FragmentOffset; + UINT32 Identification; } IP6_FRAGMENT_HEADER; typedef struct _IP6_ROUTING_HEADER { - UINT8 NextHeader; - UINT8 HeaderLen; - UINT8 RoutingType; - UINT8 SegmentsLeft; + UINT8 NextHeader; + UINT8 HeaderLen; + UINT8 RoutingType; + UINT8 SegmentsLeft; } IP6_ROUTING_HEADER; typedef enum { @@ -35,11 +35,11 @@ typedef enum { Ip6OptionParameterProblem = 0x80, Ip6OptionMask = 0xc0, - Ip6OptionEtherSource = 1, - Ip6OptionEtherTarget = 2, - Ip6OptionPrefixInfo = 3, - Ip6OptionRedirected = 4, - Ip6OptionMtu = 5 + Ip6OptionEtherSource = 1, + Ip6OptionEtherTarget = 2, + Ip6OptionPrefixInfo = 3, + Ip6OptionRedirected = 4, + Ip6OptionMtu = 5 } IP6_OPTION_TYPE; /** @@ -72,17 +72,17 @@ typedef enum { **/ BOOLEAN Ip6IsExtsValid ( - IN IP6_SERVICE *IpSb OPTIONAL, - IN NET_BUF *Packet OPTIONAL, - IN UINT8 *NextHeader, - IN UINT8 *ExtHdrs, - IN UINT32 ExtHdrsLen, - IN BOOLEAN Rcvd, - OUT UINT32 *FormerHeader OPTIONAL, - OUT UINT8 **LastHeader, - OUT UINT32 *RealExtsLen OPTIONAL, - OUT UINT32 *UnFragmentLen OPTIONAL, - OUT BOOLEAN *Fragmented OPTIONAL + IN IP6_SERVICE *IpSb OPTIONAL, + IN NET_BUF *Packet OPTIONAL, + IN UINT8 *NextHeader, + IN UINT8 *ExtHdrs, + IN UINT32 ExtHdrsLen, + IN BOOLEAN Rcvd, + OUT UINT32 *FormerHeader OPTIONAL, + OUT UINT8 **LastHeader, + OUT UINT32 *RealExtsLen OPTIONAL, + OUT UINT32 *UnFragmentLen OPTIONAL, + OUT BOOLEAN *Fragmented OPTIONAL ); /** @@ -101,9 +101,9 @@ Ip6IsExtsValid ( **/ EFI_STATUS Ip6FillHopByHop ( - OUT UINT8 *Buffer, - IN OUT UINTN *BufferLen, - IN UINT8 NextHeader + OUT UINT8 *Buffer, + IN OUT UINTN *BufferLen, + IN UINT8 NextHeader ); /** @@ -127,13 +127,13 @@ Ip6FillHopByHop ( **/ EFI_STATUS Ip6FillFragmentHeader ( - IN IP6_SERVICE *IpSb, - IN UINT8 NextHeader, - IN UINT8 LastHeader, - IN UINT8 *ExtHdrs, - IN UINT32 ExtHdrsLen, - IN UINT16 FragmentOffset, - OUT UINT8 **UpdatedExtHdrs + IN IP6_SERVICE *IpSb, + IN UINT8 NextHeader, + IN UINT8 LastHeader, + IN UINT8 *ExtHdrs, + IN UINT32 ExtHdrsLen, + IN UINT16 FragmentOffset, + OUT UINT8 **UpdatedExtHdrs ); /** @@ -155,13 +155,13 @@ Ip6FillFragmentHeader ( **/ EFI_STATUS Ip6CopyExts ( - IN UINT8 NextHeader, - IN UINT8 *ExtHdrs, - IN UINT8 *LastHeader, - IN UINT16 FragmentOffset, - IN UINT32 UnFragmentHdrLen, - IN OUT UINT8 *Buf, - IN OUT UINT32 *BufLen + IN UINT8 NextHeader, + IN UINT8 *ExtHdrs, + IN UINT8 *LastHeader, + IN UINT16 FragmentOffset, + IN UINT32 UnFragmentHdrLen, + IN OUT UINT8 *Buf, + IN OUT UINT32 *BufLen ); /** @@ -178,8 +178,8 @@ Ip6CopyExts ( **/ BOOLEAN Ip6IsNDOptionValid ( - IN UINT8 *Option, - IN UINT16 OptionLen + IN UINT8 *Option, + IN UINT16 OptionLen ); #endif diff --git a/NetworkPkg/Ip6Dxe/Ip6Output.c b/NetworkPkg/Ip6Dxe/Ip6Output.c index 2a2eae4b85..9a100f1c72 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Output.c +++ b/NetworkPkg/Ip6Dxe/Ip6Output.c @@ -9,7 +9,7 @@ #include "Ip6Impl.h" -UINT32 mIp6Id; +UINT32 mIp6Id; /** Output all the available source addresses to a list entry head SourceList. The @@ -28,16 +28,16 @@ UINT32 mIp6Id; **/ EFI_STATUS Ip6CandidateSource ( - IN IP6_SERVICE *IpSb, - OUT LIST_ENTRY *SourceList, - OUT UINT32 *SourceCount + IN IP6_SERVICE *IpSb, + OUT LIST_ENTRY *SourceList, + OUT UINT32 *SourceCount ) { - IP6_INTERFACE *IpIf; - LIST_ENTRY *Entry; - LIST_ENTRY *Entry2; - IP6_ADDRESS_INFO *AddrInfo; - IP6_ADDRESS_INFO *Copy; + IP6_INTERFACE *IpIf; + LIST_ENTRY *Entry; + LIST_ENTRY *Entry2; + IP6_ADDRESS_INFO *AddrInfo; + IP6_ADDRESS_INFO *Copy; *SourceCount = 0; @@ -47,12 +47,12 @@ Ip6CandidateSource ( return EFI_OUT_OF_RESOURCES; } - Copy->Signature = IP6_ADDR_INFO_SIGNATURE; + Copy->Signature = IP6_ADDR_INFO_SIGNATURE; IP6_COPY_ADDRESS (&Copy->Address, &IpSb->LinkLocalAddr); Copy->IsAnycast = FALSE; Copy->PrefixLength = IP6_LINK_LOCAL_PREFIX_LENGTH; - Copy->ValidLifetime = (UINT32) IP6_INFINIT_LIFETIME; - Copy->PreferredLifetime = (UINT32) IP6_INFINIT_LIFETIME; + Copy->ValidLifetime = (UINT32)IP6_INFINIT_LIFETIME; + Copy->PreferredLifetime = (UINT32)IP6_INFINIT_LIFETIME; InsertTailList (SourceList, &Copy->Link); (*SourceCount)++; @@ -95,15 +95,15 @@ Ip6CandidateSource ( **/ UINT8 Ip6CommonPrefixLen ( - IN EFI_IPv6_ADDRESS *AddressA, - IN EFI_IPv6_ADDRESS *AddressB + IN EFI_IPv6_ADDRESS *AddressA, + IN EFI_IPv6_ADDRESS *AddressB ) { - UINT8 Count; - UINT8 Index; - UINT8 ByteA; - UINT8 ByteB; - UINT8 NumBits; + UINT8 Count; + UINT8 Index; + UINT8 ByteA; + UINT8 ByteB; + UINT8 NumBits; Count = 0; Index = 0; @@ -122,14 +122,14 @@ Ip6CommonPrefixLen ( // Check how many bits are common between the two bytes. // NumBits = 8; - ByteA = (UINT8) (ByteA ^ ByteB); + ByteA = (UINT8)(ByteA ^ ByteB); while (ByteA != 0) { NumBits--; - ByteA = (UINT8) (ByteA >> 1); + ByteA = (UINT8)(ByteA >> 1); } - return (UINT8) (Count + NumBits); + return (UINT8)(Count + NumBits); } return Count; @@ -151,21 +151,21 @@ Ip6CommonPrefixLen ( **/ EFI_STATUS Ip6SelectSourceAddress ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Destination, - OUT EFI_IPv6_ADDRESS *Source + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Destination, + OUT EFI_IPv6_ADDRESS *Source ) { - EFI_STATUS Status; - LIST_ENTRY SourceList; - UINT32 SourceCount; - UINT8 ScopeD; - LIST_ENTRY *Entry; - IP6_ADDRESS_INFO *AddrInfo; - IP6_PREFIX_LIST_ENTRY *Prefix; - UINT8 LastCommonLength; - UINT8 CurrentCommonLength; - EFI_IPv6_ADDRESS *TmpAddress; + EFI_STATUS Status; + LIST_ENTRY SourceList; + UINT32 SourceCount; + UINT8 ScopeD; + LIST_ENTRY *Entry; + IP6_ADDRESS_INFO *AddrInfo; + IP6_PREFIX_LIST_ENTRY *Prefix; + UINT8 LastCommonLength; + UINT8 CurrentCommonLength; + EFI_IPv6_ADDRESS *TmpAddress; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); @@ -188,7 +188,7 @@ Ip6SelectSourceAddress ( // Rule 2: Prefer appropriate scope. // if (IP6_IS_MULTICAST (Destination)) { - ScopeD = (UINT8) (Destination->Addr[1] >> 4); + ScopeD = (UINT8)(Destination->Addr[1] >> 4); } else if (NetIp6IsLinkLocalAddr (Destination)) { ScopeD = 0x2; } else { @@ -284,15 +284,15 @@ Exit: **/ IP6_INTERFACE * Ip6SelectInterface ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Destination, - IN OUT EFI_IPv6_ADDRESS *Source + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Destination, + IN OUT EFI_IPv6_ADDRESS *Source ) { - EFI_STATUS Status; - EFI_IPv6_ADDRESS SelectedSource; - IP6_INTERFACE *IpIf; - BOOLEAN Exist; + EFI_STATUS Status; + EFI_IPv6_ADDRESS SelectedSource; + IP6_INTERFACE *IpIf; + BOOLEAN Exist; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); ASSERT (Destination != NULL && Source != NULL); @@ -335,10 +335,10 @@ Ip6SelectInterface ( **/ VOID Ip6SysPacketSent ( - NET_BUF *Packet, - EFI_STATUS IoStatus, - UINT32 LinkFlag, - VOID *Context + NET_BUF *Packet, + EFI_STATUS IoStatus, + UINT32 LinkFlag, + VOID *Context ) { NetbufFree (Packet); @@ -365,22 +365,22 @@ Ip6SysPacketSent ( **/ EFI_STATUS Ip6PrependHead ( - IN IP6_SERVICE *IpSb, - IN NET_BUF *Packet, - IN EFI_IP6_HEADER *Head, - IN UINT16 FragmentOffset, - IN UINT8 *ExtHdrs, - IN UINT32 ExtHdrsLen, - IN UINT8 LastHeader, - IN UINT32 HeadLen + IN IP6_SERVICE *IpSb, + IN NET_BUF *Packet, + IN EFI_IP6_HEADER *Head, + IN UINT16 FragmentOffset, + IN UINT8 *ExtHdrs, + IN UINT32 ExtHdrsLen, + IN UINT8 LastHeader, + IN UINT32 HeadLen ) { - UINT32 Len; - UINT32 UnFragExtHdrsLen; - EFI_IP6_HEADER *PacketHead; - UINT8 *UpdatedExtHdrs; - EFI_STATUS Status; - UINT8 NextHeader; + UINT32 Len; + UINT32 UnFragExtHdrsLen; + EFI_IP6_HEADER *PacketHead; + UINT8 *UpdatedExtHdrs; + EFI_STATUS Status; + UINT8 NextHeader; UpdatedExtHdrs = NULL; @@ -388,7 +388,7 @@ Ip6PrependHead ( // HeadLen is the length of the fixed part of the sequences of fragments, i.e. // the unfragment part. // - PacketHead = (EFI_IP6_HEADER *) NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD); + PacketHead = (EFI_IP6_HEADER *)NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD); if (PacketHead == NULL) { return EFI_BAD_BUFFER_SIZE; } @@ -397,7 +397,7 @@ Ip6PrependHead ( // Set the head up, convert the host byte order to network byte order // CopyMem (PacketHead, Head, sizeof (EFI_IP6_HEADER)); - PacketHead->PayloadLength = HTONS ((UINT16) (Packet->TotalSize - sizeof (EFI_IP6_HEADER))); + PacketHead->PayloadLength = HTONS ((UINT16)(Packet->TotalSize - sizeof (EFI_IP6_HEADER))); Packet->Ip.Ip6 = PacketHead; Len = HeadLen - sizeof (EFI_IP6_HEADER); @@ -431,7 +431,7 @@ Ip6PrependHead ( } CopyMem ( - (UINT8 *) (PacketHead + 1), + (UINT8 *)(PacketHead + 1), UpdatedExtHdrs, UnFragExtHdrsLen + sizeof (IP6_FRAGMENT_HEADER) ); @@ -474,52 +474,52 @@ Ip6PrependHead ( **/ EFI_STATUS Ip6Output ( - IN IP6_SERVICE *IpSb, - IN IP6_INTERFACE *Interface OPTIONAL, - IN IP6_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN EFI_IP6_HEADER *Head, - IN UINT8 *ExtHdrs, - IN UINT32 ExtHdrsLen, - IN IP6_FRAME_CALLBACK Callback, - IN VOID *Context + IN IP6_SERVICE *IpSb, + IN IP6_INTERFACE *Interface OPTIONAL, + IN IP6_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN EFI_IP6_HEADER *Head, + IN UINT8 *ExtHdrs, + IN UINT32 ExtHdrsLen, + IN IP6_FRAME_CALLBACK Callback, + IN VOID *Context ) { - IP6_INTERFACE *IpIf; - EFI_IPv6_ADDRESS NextHop; - IP6_NEIGHBOR_ENTRY *NeighborCache; - IP6_ROUTE_CACHE_ENTRY *RouteCache; - EFI_STATUS Status; - UINT32 Mtu; - UINT32 HeadLen; - UINT16 FragmentOffset; - UINT8 *LastHeader; - UINT32 UnFragmentLen; - UINT32 UnFragmentHdrsLen; - UINT32 FragmentHdrsLen; - UINT16 *Checksum; - UINT16 PacketChecksum; - UINT16 PseudoChecksum; - UINT32 Index; - UINT32 PacketLen; - UINT32 RealExtLen; - UINT32 Offset; - NET_BUF *TmpPacket; - NET_BUF *Fragment; - UINT32 Num; - UINT8 *Buf; - EFI_IP6_HEADER *PacketHead; - IP6_ICMP_HEAD *IcmpHead; - IP6_TXTOKEN_WRAP *Wrap; - IP6_ROUTE_ENTRY *RouteEntry; - UINT8 *UpdatedExtHdrs; - UINT8 NextHeader; - UINT8 LastHeaderBackup; - BOOLEAN FragmentHeadInserted; - UINT8 *ExtHdrsBackup; - UINT8 NextHeaderBackup; - EFI_IPv6_ADDRESS Source; - EFI_IPv6_ADDRESS Destination; + IP6_INTERFACE *IpIf; + EFI_IPv6_ADDRESS NextHop; + IP6_NEIGHBOR_ENTRY *NeighborCache; + IP6_ROUTE_CACHE_ENTRY *RouteCache; + EFI_STATUS Status; + UINT32 Mtu; + UINT32 HeadLen; + UINT16 FragmentOffset; + UINT8 *LastHeader; + UINT32 UnFragmentLen; + UINT32 UnFragmentHdrsLen; + UINT32 FragmentHdrsLen; + UINT16 *Checksum; + UINT16 PacketChecksum; + UINT16 PseudoChecksum; + UINT32 Index; + UINT32 PacketLen; + UINT32 RealExtLen; + UINT32 Offset; + NET_BUF *TmpPacket; + NET_BUF *Fragment; + UINT32 Num; + UINT8 *Buf; + EFI_IP6_HEADER *PacketHead; + IP6_ICMP_HEAD *IcmpHead; + IP6_TXTOKEN_WRAP *Wrap; + IP6_ROUTE_ENTRY *RouteEntry; + UINT8 *UpdatedExtHdrs; + UINT8 NextHeader; + UINT8 LastHeaderBackup; + BOOLEAN FragmentHeadInserted; + UINT8 *ExtHdrsBackup; + UINT8 NextHeaderBackup; + EFI_IPv6_ADDRESS Source; + EFI_IPv6_ADDRESS Destination; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); @@ -557,7 +557,7 @@ Ip6Output ( // IpInstance->Interface is NULL when IpInstance is configured with both stationaddress // and destinationaddress is unspecified. // - if (IpInstance == NULL || IpInstance->Interface == NULL) { + if ((IpInstance == NULL) || (IpInstance->Interface == NULL)) { IpIf = Ip6SelectInterface (IpSb, &Head->DestinationAddress, &Head->SourceAddress); if (IpInstance != NULL) { IpInstance->Interface = IpIf; @@ -578,43 +578,46 @@ Ip6Output ( Head->TrafficClassL = 0; Head->TrafficClassH = 0; - Checksum = NULL; - NextHeader = *LastHeader; + Checksum = NULL; + NextHeader = *LastHeader; switch (NextHeader) { - case EFI_IP_PROTO_UDP: - Packet->Udp = (EFI_UDP_HEADER *) NetbufGetByte (Packet, 0, NULL); - ASSERT (Packet->Udp != NULL); - if (Packet->Udp->Checksum == 0) { - Checksum = &Packet->Udp->Checksum; - } - break; + case EFI_IP_PROTO_UDP: + Packet->Udp = (EFI_UDP_HEADER *)NetbufGetByte (Packet, 0, NULL); + ASSERT (Packet->Udp != NULL); + if (Packet->Udp->Checksum == 0) { + Checksum = &Packet->Udp->Checksum; + } - case EFI_IP_PROTO_TCP: - Packet->Tcp = (TCP_HEAD *) NetbufGetByte (Packet, 0, NULL); - ASSERT (Packet->Tcp != NULL); - if (Packet->Tcp->Checksum == 0) { - Checksum = &Packet->Tcp->Checksum; - } - break; + break; - case IP6_ICMP: - // - // Don't send ICMP packet to an IPv6 anycast address. - // - if (Ip6IsAnycast (IpSb, &Head->DestinationAddress)) { - return EFI_INVALID_PARAMETER; - } + case EFI_IP_PROTO_TCP: + Packet->Tcp = (TCP_HEAD *)NetbufGetByte (Packet, 0, NULL); + ASSERT (Packet->Tcp != NULL); + if (Packet->Tcp->Checksum == 0) { + Checksum = &Packet->Tcp->Checksum; + } - IcmpHead = (IP6_ICMP_HEAD *) NetbufGetByte (Packet, 0, NULL); - ASSERT (IcmpHead != NULL); - if (IcmpHead->Checksum == 0) { - Checksum = &IcmpHead->Checksum; - } - break; + break; - default: - break; + case IP6_ICMP: + // + // Don't send ICMP packet to an IPv6 anycast address. + // + if (Ip6IsAnycast (IpSb, &Head->DestinationAddress)) { + return EFI_INVALID_PARAMETER; + } + + IcmpHead = (IP6_ICMP_HEAD *)NetbufGetByte (Packet, 0, NULL); + ASSERT (IcmpHead != NULL); + if (IcmpHead->Checksum == 0) { + Checksum = &IcmpHead->Checksum; + } + + break; + + default: + break; } if (Checksum != NULL) { @@ -624,11 +627,11 @@ Ip6Output ( // PacketChecksum = NetbufChecksum (Packet); PseudoChecksum = NetIp6PseudoHeadChecksum ( - &Head->SourceAddress, - &Head->DestinationAddress, - NextHeader, - Packet->TotalSize - ); + &Head->SourceAddress, + &Head->DestinationAddress, + NextHeader, + Packet->TotalSize + ); *Checksum = (UINT16) ~NetAddChecksum (PacketChecksum, PseudoChecksum); } @@ -643,7 +646,7 @@ Ip6Output ( Context ); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } @@ -663,7 +666,8 @@ Ip6Output ( &RealExtLen, &UnFragmentHdrsLen, NULL - )) { + )) + { return EFI_INVALID_PARAMETER; } @@ -762,7 +766,6 @@ Ip6Output ( ); if (RouteEntry != NULL) { if ((RouteEntry->Flag & IP6_PACKET_TOO_BIG) == IP6_PACKET_TOO_BIG) { - // // FragmentHead is inserted after Hop-by-Hop Options header, Destination // Options header (first occur), Routing header, and before Fragment header, @@ -787,10 +790,10 @@ Ip6Output ( Head->NextHeader = IP6_FRAGMENT; } - ExtHdrsBackup = ExtHdrs; - ExtHdrs = UpdatedExtHdrs; - ExtHdrsLen = ExtHdrsLen + sizeof (IP6_FRAGMENT_HEADER); - RealExtLen = RealExtLen + sizeof (IP6_FRAGMENT_HEADER); + ExtHdrsBackup = ExtHdrs; + ExtHdrs = UpdatedExtHdrs; + ExtHdrsLen = ExtHdrsLen + sizeof (IP6_FRAGMENT_HEADER); + RealExtLen = RealExtLen + sizeof (IP6_FRAGMENT_HEADER); mIp6Id++; @@ -879,8 +882,8 @@ Ip6Output ( goto Error; } - FragmentOffset = (UINT16) ((UINT16) Offset | 0x1); - if (Index == Num - 1){ + FragmentOffset = (UINT16)((UINT16)Offset | 0x1); + if (Index == Num - 1) { // // The last fragment, clear the M flag. // @@ -915,11 +918,11 @@ Ip6Output ( // The last fragment of upper layer packet, update the IP6 token status. // if ((Index == Num -1) && (Context != NULL)) { - Wrap = (IP6_TXTOKEN_WRAP *) Context; + Wrap = (IP6_TXTOKEN_WRAP *)Context; Wrap->Token->Status = Status; } - Offset += PacketLen; + Offset += PacketLen; PacketLen = Packet->TotalSize - Offset; if (PacketLen > Mtu) { PacketLen = Mtu; @@ -939,7 +942,7 @@ Ip6Output ( // // Need not fragment the packet, send it in one frame. // - PacketHead = (EFI_IP6_HEADER *) NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD); + PacketHead = (EFI_IP6_HEADER *)NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD); if (PacketHead == NULL) { Status = EFI_BAD_BUFFER_SIZE; goto Error; @@ -949,7 +952,7 @@ Ip6Output ( Packet->Ip.Ip6 = PacketHead; if (ExtHdrs != NULL) { - Buf = (UINT8 *) (PacketHead + 1); + Buf = (UINT8 *)(PacketHead + 1); CopyMem (Buf, ExtHdrs, ExtHdrsLen); } @@ -957,8 +960,8 @@ Ip6Output ( // // A Fragment Header is inserted to the packet, update the payload length. // - PacketHead->PayloadLength = (UINT16) (NTOHS (PacketHead->PayloadLength) + - sizeof (IP6_FRAGMENT_HEADER)); + PacketHead->PayloadLength = (UINT16)(NTOHS (PacketHead->PayloadLength) + + sizeof (IP6_FRAGMENT_HEADER)); PacketHead->PayloadLength = HTONS (PacketHead->PayloadLength); FreePool (UpdatedExtHdrs); } @@ -976,6 +979,7 @@ Error: if (UpdatedExtHdrs != NULL) { FreePool (UpdatedExtHdrs); } + Ip6CancelPacket (IpIf, Packet, Status); return Status; } @@ -993,11 +997,11 @@ Error: **/ BOOLEAN Ip6CancelPacketFragments ( - IN IP6_LINK_TX_TOKEN *Frame, - IN VOID *Context + IN IP6_LINK_TX_TOKEN *Frame, + IN VOID *Context ) { - if ((Frame->Packet == (NET_BUF *) Context) || (Frame->Context == Context)) { + if ((Frame->Packet == (NET_BUF *)Context) || (Frame->Context == Context)) { return TRUE; } @@ -1018,18 +1022,18 @@ Ip6CancelPacketFragments ( **/ VOID Ip6CancelFrames ( - IN IP6_INTERFACE *Interface, - IN EFI_STATUS IoStatus, - IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_INTERFACE *Interface, + IN EFI_STATUS IoStatus, + IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, + IN VOID *Context OPTIONAL ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_LINK_TX_TOKEN *Token; - IP6_SERVICE *IpSb; - IP6_NEIGHBOR_ENTRY *ArpQue; - EFI_STATUS Status; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_LINK_TX_TOKEN *Token; + IP6_SERVICE *IpSb; + IP6_NEIGHBOR_ENTRY *ArpQue; + EFI_STATUS Status; IpSb = Interface->Service; NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE); @@ -1075,11 +1079,10 @@ Ip6CancelFrames ( **/ VOID Ip6CancelPacket ( - IN IP6_INTERFACE *IpIf, - IN NET_BUF *Packet, - IN EFI_STATUS IoStatus + IN IP6_INTERFACE *IpIf, + IN NET_BUF *Packet, + IN EFI_STATUS IoStatus ) { Ip6CancelFrames (IpIf, IoStatus, Ip6CancelPacketFragments, Packet); } - diff --git a/NetworkPkg/Ip6Dxe/Ip6Output.h b/NetworkPkg/Ip6Dxe/Ip6Output.h index a2aa579d47..6ac5003789 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Output.h +++ b/NetworkPkg/Ip6Dxe/Ip6Output.h @@ -10,7 +10,7 @@ #ifndef __EFI_IP6_OUTPUT_H__ #define __EFI_IP6_OUTPUT_H__ -extern UINT32 mIp6Id; +extern UINT32 mIp6Id; /** Output all the available source addresses to the list entry head SourceList. The @@ -28,9 +28,9 @@ extern UINT32 mIp6Id; **/ EFI_STATUS Ip6SelectSourceAddress ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Destination, - OUT EFI_IPv6_ADDRESS *Source + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Destination, + OUT EFI_IPv6_ADDRESS *Source ); /** @@ -46,10 +46,10 @@ Ip6SelectSourceAddress ( **/ VOID Ip6SysPacketSent ( - NET_BUF *Packet, - EFI_STATUS IoStatus, - UINT32 LinkFlag, - VOID *Context + NET_BUF *Packet, + EFI_STATUS IoStatus, + UINT32 LinkFlag, + VOID *Context ); /** @@ -86,15 +86,15 @@ Ip6SysPacketSent ( **/ EFI_STATUS Ip6Output ( - IN IP6_SERVICE *IpSb, - IN IP6_INTERFACE *Interface OPTIONAL, - IN IP6_PROTOCOL *IpInstance OPTIONAL, - IN NET_BUF *Packet, - IN EFI_IP6_HEADER *Head, - IN UINT8 *ExtHdrs, - IN UINT32 ExtHdrsLen, - IN IP6_FRAME_CALLBACK Callback, - IN VOID *Context + IN IP6_SERVICE *IpSb, + IN IP6_INTERFACE *Interface OPTIONAL, + IN IP6_PROTOCOL *IpInstance OPTIONAL, + IN NET_BUF *Packet, + IN EFI_IP6_HEADER *Head, + IN UINT8 *ExtHdrs, + IN UINT32 ExtHdrsLen, + IN IP6_FRAME_CALLBACK Callback, + IN VOID *Context ); /** @@ -111,10 +111,10 @@ Ip6Output ( **/ VOID Ip6CancelFrames ( - IN IP6_INTERFACE *Interface, - IN EFI_STATUS IoStatus, - IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, - IN VOID *Context OPTIONAL + IN IP6_INTERFACE *Interface, + IN EFI_STATUS IoStatus, + IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, + IN VOID *Context OPTIONAL ); /** @@ -127,9 +127,9 @@ Ip6CancelFrames ( **/ VOID Ip6CancelPacket ( - IN IP6_INTERFACE *IpIf, - IN NET_BUF *Packet, - IN EFI_STATUS IoStatus + IN IP6_INTERFACE *IpIf, + IN NET_BUF *Packet, + IN EFI_STATUS IoStatus ); #endif diff --git a/NetworkPkg/Ip6Dxe/Ip6Route.c b/NetworkPkg/Ip6Dxe/Ip6Route.c index c24361d295..2f91ba9ef5 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Route.c +++ b/NetworkPkg/Ip6Dxe/Ip6Route.c @@ -21,17 +21,17 @@ **/ UINT32 Ip6RouteCacheHash ( - IN EFI_IPv6_ADDRESS *Ip1, - IN EFI_IPv6_ADDRESS *Ip2 + IN EFI_IPv6_ADDRESS *Ip1, + IN EFI_IPv6_ADDRESS *Ip2 ) { - UINT32 Prefix1; - UINT32 Prefix2; + UINT32 Prefix1; + UINT32 Prefix2; - Prefix1 = *((UINT32 *) ((UINTN *) (Ip1))); - Prefix2 = *((UINT32 *) ((UINTN *) (Ip2))); + Prefix1 = *((UINT32 *)((UINTN *)(Ip1))); + Prefix2 = *((UINT32 *)((UINTN *)(Ip2))); - return ((UINT32) (Prefix1 ^ Prefix2) % IP6_ROUTE_CACHE_HASH_SIZE); + return ((UINT32)(Prefix1 ^ Prefix2) % IP6_ROUTE_CACHE_HASH_SIZE); } /** @@ -49,12 +49,12 @@ Ip6RouteCacheHash ( **/ IP6_ROUTE_ENTRY * Ip6CreateRouteEntry ( - IN EFI_IPv6_ADDRESS *Destination OPTIONAL, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL + IN EFI_IPv6_ADDRESS *Destination OPTIONAL, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL ) { - IP6_ROUTE_ENTRY *RtEntry; + IP6_ROUTE_ENTRY *RtEntry; RtEntry = AllocateZeroPool (sizeof (IP6_ROUTE_ENTRY)); @@ -85,7 +85,7 @@ Ip6CreateRouteEntry ( **/ VOID Ip6FreeRouteEntry ( - IN OUT IP6_ROUTE_ENTRY *RtEntry + IN OUT IP6_ROUTE_ENTRY *RtEntry ) { ASSERT ((RtEntry != NULL) && (RtEntry->RefCnt > 0)); @@ -116,14 +116,14 @@ Ip6FreeRouteEntry ( **/ IP6_ROUTE_ENTRY * Ip6FindRouteEntry ( - IN IP6_ROUTE_TABLE *RtTable, - IN EFI_IPv6_ADDRESS *Destination OPTIONAL, - IN EFI_IPv6_ADDRESS *NextHop OPTIONAL + IN IP6_ROUTE_TABLE *RtTable, + IN EFI_IPv6_ADDRESS *Destination OPTIONAL, + IN EFI_IPv6_ADDRESS *NextHop OPTIONAL ) { - LIST_ENTRY *Entry; - IP6_ROUTE_ENTRY *RtEntry; - INTN Index; + LIST_ENTRY *Entry; + IP6_ROUTE_ENTRY *RtEntry; + INTN Index; ASSERT (Destination != NULL || NextHop != NULL); @@ -144,7 +144,6 @@ Ip6FindRouteEntry ( return RtEntry; } } - } } @@ -166,13 +165,13 @@ Ip6FindRouteEntry ( **/ IP6_ROUTE_CACHE_ENTRY * Ip6CreateRouteCacheEntry ( - IN EFI_IPv6_ADDRESS *Dst, - IN EFI_IPv6_ADDRESS *Src, - IN EFI_IPv6_ADDRESS *GateWay, - IN UINTN Tag + IN EFI_IPv6_ADDRESS *Dst, + IN EFI_IPv6_ADDRESS *Src, + IN EFI_IPv6_ADDRESS *GateWay, + IN UINTN Tag ) { - IP6_ROUTE_CACHE_ENTRY *RtCacheEntry; + IP6_ROUTE_CACHE_ENTRY *RtCacheEntry; RtCacheEntry = AllocatePool (sizeof (IP6_ROUTE_CACHE_ENTRY)); @@ -222,21 +221,21 @@ Ip6FreeRouteCacheEntry ( **/ IP6_ROUTE_CACHE_ENTRY * Ip6FindRouteCache ( - IN IP6_ROUTE_TABLE *RtTable, - IN EFI_IPv6_ADDRESS *Dest, - IN EFI_IPv6_ADDRESS *Src + IN IP6_ROUTE_TABLE *RtTable, + IN EFI_IPv6_ADDRESS *Dest, + IN EFI_IPv6_ADDRESS *Src ) { - LIST_ENTRY *Entry; - IP6_ROUTE_CACHE_ENTRY *RtCacheEntry; - UINT32 Index; + LIST_ENTRY *Entry; + IP6_ROUTE_CACHE_ENTRY *RtCacheEntry; + UINT32 Index; Index = IP6_ROUTE_CACHE_HASH (Dest, Src); NET_LIST_FOR_EACH (Entry, &RtTable->Cache.CacheBucket[Index]) { RtCacheEntry = NET_LIST_USER_STRUCT (Entry, IP6_ROUTE_CACHE_ENTRY, Link); - if (EFI_IP6_EQUAL (Dest, &RtCacheEntry->Destination)&& EFI_IP6_EQUAL (Src, &RtCacheEntry->Source)) { + if (EFI_IP6_EQUAL (Dest, &RtCacheEntry->Destination) && EFI_IP6_EQUAL (Src, &RtCacheEntry->Source)) { NET_GET_REF (RtCacheEntry); return RtCacheEntry; } @@ -260,16 +259,16 @@ Ip6FindRouteCache ( **/ EFI_STATUS Ip6BuildEfiRouteTable ( - IN IP6_ROUTE_TABLE *RouteTable, - OUT UINT32 *EfiRouteCount, - OUT EFI_IP6_ROUTE_TABLE **EfiRouteTable OPTIONAL + IN IP6_ROUTE_TABLE *RouteTable, + OUT UINT32 *EfiRouteCount, + OUT EFI_IP6_ROUTE_TABLE **EfiRouteTable OPTIONAL ) { - LIST_ENTRY *Entry; - IP6_ROUTE_ENTRY *RtEntry; - EFI_IP6_ROUTE_TABLE *EfiTable; - UINT32 Count; - INT32 Index; + LIST_ENTRY *Entry; + IP6_ROUTE_ENTRY *RtEntry; + EFI_IP6_ROUTE_TABLE *EfiTable; + UINT32 Count; + INT32 Index; ASSERT (EfiRouteCount != NULL); @@ -295,7 +294,6 @@ Ip6BuildEfiRouteTable ( Count = 0; for (Index = IP6_PREFIX_MAX; Index >= 0; Index--) { - NET_LIST_FOR_EACH (Entry, &(RouteTable->RouteArea[Index])) { RtEntry = NET_LIST_USER_STRUCT (Entry, IP6_ROUTE_ENTRY, Link); @@ -329,8 +327,8 @@ Ip6CreateRouteTable ( VOID ) { - IP6_ROUTE_TABLE *RtTable; - UINT32 Index; + IP6_ROUTE_TABLE *RtTable; + UINT32 Index; RtTable = AllocatePool (sizeof (IP6_ROUTE_TABLE)); if (RtTable == NULL) { @@ -361,19 +359,19 @@ Ip6CreateRouteTable ( **/ VOID Ip6CleanRouteTable ( - IN OUT IP6_ROUTE_TABLE *RtTable + IN OUT IP6_ROUTE_TABLE *RtTable ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_ROUTE_ENTRY *RtEntry; - IP6_ROUTE_CACHE_ENTRY *RtCacheEntry; - UINT32 Index; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_ROUTE_ENTRY *RtEntry; + IP6_ROUTE_CACHE_ENTRY *RtCacheEntry; + UINT32 Index; ASSERT (RtTable->RefCnt > 0); if (--RtTable->RefCnt > 0) { - return ; + return; } // @@ -410,18 +408,17 @@ Ip6CleanRouteTable ( **/ VOID Ip6PurgeRouteCache ( - IN IP6_ROUTE_CACHE *RtCache, - IN UINTN Tag + IN IP6_ROUTE_CACHE *RtCache, + IN UINTN Tag ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_ROUTE_CACHE_ENTRY *RtCacheEntry; - UINT32 Index; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_ROUTE_CACHE_ENTRY *RtCacheEntry; + UINT32 Index; for (Index = 0; Index < IP6_ROUTE_CACHE_HASH_SIZE; Index++) { NET_LIST_FOR_EACH_SAFE (Entry, Next, &RtCache->CacheBucket[Index]) { - RtCacheEntry = NET_LIST_USER_STRUCT (Entry, IP6_ROUTE_CACHE_ENTRY, Link); if (RtCacheEntry->Tag == Tag) { @@ -447,15 +444,15 @@ Ip6PurgeRouteCache ( **/ EFI_STATUS Ip6AddRoute ( - IN OUT IP6_ROUTE_TABLE *RtTable, - IN EFI_IPv6_ADDRESS *Destination, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *GatewayAddress + IN OUT IP6_ROUTE_TABLE *RtTable, + IN EFI_IPv6_ADDRESS *Destination, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *GatewayAddress ) { - LIST_ENTRY *ListHead; - LIST_ENTRY *Entry; - IP6_ROUTE_ENTRY *Route; + LIST_ENTRY *ListHead; + LIST_ENTRY *Entry; + IP6_ROUTE_ENTRY *Route; ListHead = &RtTable->RouteArea[PrefixLength]; @@ -466,7 +463,8 @@ Ip6AddRoute ( Route = NET_LIST_USER_STRUCT (Entry, IP6_ROUTE_ENTRY, Link); if (NetIp6IsNetEqual (Destination, &Route->Destination, PrefixLength) && - EFI_IP6_EQUAL (GatewayAddress, &Route->NextHop)) { + EFI_IP6_EQUAL (GatewayAddress, &Route->NextHop)) + { return EFI_ACCESS_DENIED; } } @@ -506,17 +504,17 @@ Ip6AddRoute ( **/ EFI_STATUS Ip6DelRoute ( - IN OUT IP6_ROUTE_TABLE *RtTable, - IN EFI_IPv6_ADDRESS *Destination, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *GatewayAddress + IN OUT IP6_ROUTE_TABLE *RtTable, + IN EFI_IPv6_ADDRESS *Destination, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *GatewayAddress ) { - LIST_ENTRY *ListHead; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - IP6_ROUTE_ENTRY *Route; - UINT32 TotalNum; + LIST_ENTRY *ListHead; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + IP6_ROUTE_ENTRY *Route; + UINT32 TotalNum; ListHead = &RtTable->RouteArea[PrefixLength]; TotalNum = RtTable->TotalNum; @@ -524,14 +522,15 @@ Ip6DelRoute ( NET_LIST_FOR_EACH_SAFE (Entry, Next, ListHead) { Route = NET_LIST_USER_STRUCT (Entry, IP6_ROUTE_ENTRY, Link); - if (Destination != NULL && !NetIp6IsNetEqual (Destination, &Route->Destination, PrefixLength)) { + if ((Destination != NULL) && !NetIp6IsNetEqual (Destination, &Route->Destination, PrefixLength)) { continue; } - if (GatewayAddress != NULL && !EFI_IP6_EQUAL (GatewayAddress, &Route->NextHop)) { + + if ((GatewayAddress != NULL) && !EFI_IP6_EQUAL (GatewayAddress, &Route->NextHop)) { continue; } - Ip6PurgeRouteCache (&RtTable->Cache, (UINTN) Route); + Ip6PurgeRouteCache (&RtTable->Cache, (UINTN)Route); RemoveEntryList (Entry); Ip6FreeRouteEntry (Route); @@ -556,17 +555,17 @@ Ip6DelRoute ( **/ IP6_ROUTE_CACHE_ENTRY * Ip6Route ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Dest, - IN EFI_IPv6_ADDRESS *Src + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Dest, + IN EFI_IPv6_ADDRESS *Src ) { - IP6_ROUTE_TABLE *RtTable; - LIST_ENTRY *ListHead; - IP6_ROUTE_CACHE_ENTRY *RtCacheEntry; - IP6_ROUTE_ENTRY *RtEntry; - EFI_IPv6_ADDRESS NextHop; - UINT32 Index; + IP6_ROUTE_TABLE *RtTable; + LIST_ENTRY *ListHead; + IP6_ROUTE_CACHE_ENTRY *RtCacheEntry; + IP6_ROUTE_ENTRY *RtEntry; + EFI_IPv6_ADDRESS NextHop; + UINT32 Index; RtTable = IpSb->RouteTable; @@ -614,7 +613,7 @@ Ip6Route ( // // Create a route cache entry, and tag it as spawned from this route entry // - RtCacheEntry = Ip6CreateRouteCacheEntry (Dest, Src, &NextHop, (UINTN) RtEntry); + RtCacheEntry = Ip6CreateRouteCacheEntry (Dest, Src, &NextHop, (UINTN)RtEntry); if (RtCacheEntry == NULL) { return NULL; @@ -626,4 +625,3 @@ Ip6Route ( return RtCacheEntry; } - diff --git a/NetworkPkg/Ip6Dxe/Ip6Route.h b/NetworkPkg/Ip6Dxe/Ip6Route.h index af20dbb149..9023b217d1 100644 --- a/NetworkPkg/Ip6Dxe/Ip6Route.h +++ b/NetworkPkg/Ip6Dxe/Ip6Route.h @@ -10,38 +10,38 @@ #ifndef __EFI_IP6_ROUTE_H__ #define __EFI_IP6_ROUTE_H__ -#define IP6_DIRECT_ROUTE 0x00000001 -#define IP6_PACKET_TOO_BIG 0x00000010 +#define IP6_DIRECT_ROUTE 0x00000001 +#define IP6_PACKET_TOO_BIG 0x00000010 -#define IP6_ROUTE_CACHE_HASH_SIZE 31 +#define IP6_ROUTE_CACHE_HASH_SIZE 31 /// /// Max NO. of cache entry per hash bucket /// -#define IP6_ROUTE_CACHE_MAX 32 +#define IP6_ROUTE_CACHE_MAX 32 -#define IP6_ROUTE_CACHE_HASH(Ip1, Ip2) Ip6RouteCacheHash ((Ip1), (Ip2)) +#define IP6_ROUTE_CACHE_HASH(Ip1, Ip2) Ip6RouteCacheHash ((Ip1), (Ip2)) typedef struct { - LIST_ENTRY Link; - INTN RefCnt; - UINT32 Flag; - UINT8 PrefixLength; - EFI_IPv6_ADDRESS Destination; - EFI_IPv6_ADDRESS NextHop; + LIST_ENTRY Link; + INTN RefCnt; + UINT32 Flag; + UINT8 PrefixLength; + EFI_IPv6_ADDRESS Destination; + EFI_IPv6_ADDRESS NextHop; } IP6_ROUTE_ENTRY; typedef struct { - LIST_ENTRY Link; - INTN RefCnt; - UINTN Tag; - EFI_IPv6_ADDRESS Destination; - EFI_IPv6_ADDRESS Source; - EFI_IPv6_ADDRESS NextHop; + LIST_ENTRY Link; + INTN RefCnt; + UINTN Tag; + EFI_IPv6_ADDRESS Destination; + EFI_IPv6_ADDRESS Source; + EFI_IPv6_ADDRESS NextHop; } IP6_ROUTE_CACHE_ENTRY; typedef struct { - LIST_ENTRY CacheBucket[IP6_ROUTE_CACHE_HASH_SIZE]; - UINT8 CacheNum[IP6_ROUTE_CACHE_HASH_SIZE]; + LIST_ENTRY CacheBucket[IP6_ROUTE_CACHE_HASH_SIZE]; + UINT8 CacheNum[IP6_ROUTE_CACHE_HASH_SIZE]; } IP6_ROUTE_CACHE; // @@ -54,10 +54,10 @@ typedef struct { // typedef struct _IP6_ROUTE_TABLE { - INTN RefCnt; - UINT32 TotalNum; - LIST_ENTRY RouteArea[IP6_PREFIX_NUM]; - IP6_ROUTE_CACHE Cache; + INTN RefCnt; + UINT32 TotalNum; + LIST_ENTRY RouteArea[IP6_PREFIX_NUM]; + IP6_ROUTE_CACHE Cache; } IP6_ROUTE_TABLE; /** @@ -72,8 +72,8 @@ typedef struct _IP6_ROUTE_TABLE { **/ UINT32 Ip6RouteCacheHash ( - IN EFI_IPv6_ADDRESS *Ip1, - IN EFI_IPv6_ADDRESS *Ip2 + IN EFI_IPv6_ADDRESS *Ip1, + IN EFI_IPv6_ADDRESS *Ip2 ); /** @@ -91,10 +91,10 @@ Ip6RouteCacheHash ( **/ IP6_ROUTE_CACHE_ENTRY * Ip6CreateRouteCacheEntry ( - IN EFI_IPv6_ADDRESS *Dst, - IN EFI_IPv6_ADDRESS *Src, - IN EFI_IPv6_ADDRESS *GateWay, - IN UINTN Tag + IN EFI_IPv6_ADDRESS *Dst, + IN EFI_IPv6_ADDRESS *Src, + IN EFI_IPv6_ADDRESS *GateWay, + IN UINTN Tag ); /** @@ -122,9 +122,9 @@ Ip6FreeRouteCacheEntry ( **/ IP6_ROUTE_CACHE_ENTRY * Ip6FindRouteCache ( - IN IP6_ROUTE_TABLE *RtTable, - IN EFI_IPv6_ADDRESS *Dest, - IN EFI_IPv6_ADDRESS *Src + IN IP6_ROUTE_TABLE *RtTable, + IN EFI_IPv6_ADDRESS *Dest, + IN EFI_IPv6_ADDRESS *Src ); /** @@ -142,9 +142,9 @@ Ip6FindRouteCache ( **/ EFI_STATUS Ip6BuildEfiRouteTable ( - IN IP6_ROUTE_TABLE *RouteTable, - OUT UINT32 *EfiRouteCount, - OUT EFI_IP6_ROUTE_TABLE **EfiRouteTable OPTIONAL + IN IP6_ROUTE_TABLE *RouteTable, + OUT UINT32 *EfiRouteCount, + OUT EFI_IP6_ROUTE_TABLE **EfiRouteTable OPTIONAL ); /** @@ -168,7 +168,7 @@ Ip6CreateRouteTable ( **/ VOID Ip6CleanRouteTable ( - IN OUT IP6_ROUTE_TABLE *RtTable + IN OUT IP6_ROUTE_TABLE *RtTable ); /** @@ -186,9 +186,9 @@ Ip6CleanRouteTable ( **/ IP6_ROUTE_ENTRY * Ip6CreateRouteEntry ( - IN EFI_IPv6_ADDRESS *Destination OPTIONAL, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL + IN EFI_IPv6_ADDRESS *Destination OPTIONAL, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL ); /** @@ -212,9 +212,9 @@ Ip6CreateRouteEntry ( **/ IP6_ROUTE_ENTRY * Ip6FindRouteEntry ( - IN IP6_ROUTE_TABLE *RtTable, - IN EFI_IPv6_ADDRESS *Destination OPTIONAL, - IN EFI_IPv6_ADDRESS *NextHop OPTIONAL + IN IP6_ROUTE_TABLE *RtTable, + IN EFI_IPv6_ADDRESS *Destination OPTIONAL, + IN EFI_IPv6_ADDRESS *NextHop OPTIONAL ); /** @@ -225,7 +225,7 @@ Ip6FindRouteEntry ( **/ VOID Ip6FreeRouteEntry ( - IN OUT IP6_ROUTE_ENTRY *RtEntry + IN OUT IP6_ROUTE_ENTRY *RtEntry ); /** @@ -243,10 +243,10 @@ Ip6FreeRouteEntry ( **/ EFI_STATUS Ip6AddRoute ( - IN OUT IP6_ROUTE_TABLE *RtTable, - IN EFI_IPv6_ADDRESS *Destination, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *GatewayAddress + IN OUT IP6_ROUTE_TABLE *RtTable, + IN EFI_IPv6_ADDRESS *Destination, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *GatewayAddress ); /** @@ -265,10 +265,10 @@ Ip6AddRoute ( **/ EFI_STATUS Ip6DelRoute ( - IN OUT IP6_ROUTE_TABLE *RtTable, - IN EFI_IPv6_ADDRESS *Destination, - IN UINT8 PrefixLength, - IN EFI_IPv6_ADDRESS *GatewayAddress + IN OUT IP6_ROUTE_TABLE *RtTable, + IN EFI_IPv6_ADDRESS *Destination, + IN UINT8 PrefixLength, + IN EFI_IPv6_ADDRESS *GatewayAddress ); /** @@ -285,9 +285,9 @@ Ip6DelRoute ( **/ IP6_ROUTE_CACHE_ENTRY * Ip6Route ( - IN IP6_SERVICE *IpSb, - IN EFI_IPv6_ADDRESS *Dest, - IN EFI_IPv6_ADDRESS *Src + IN IP6_SERVICE *IpSb, + IN EFI_IPv6_ADDRESS *Dest, + IN EFI_IPv6_ADDRESS *Src ); #endif diff --git a/NetworkPkg/Library/DxeHttpIoLib/DxeHttpIoLib.c b/NetworkPkg/Library/DxeHttpIoLib/DxeHttpIoLib.c index 134bd72266..509a13cbda 100644 --- a/NetworkPkg/Library/DxeHttpIoLib/DxeHttpIoLib.c +++ b/NetworkPkg/Library/DxeHttpIoLib/DxeHttpIoLib.c @@ -26,10 +26,10 @@ VOID EFIAPI HttpIoNotifyDpc ( - IN VOID *Context + IN VOID *Context ) { - *((BOOLEAN *) Context) = TRUE; + *((BOOLEAN *)Context) = TRUE; } /** @@ -42,8 +42,8 @@ HttpIoNotifyDpc ( VOID EFIAPI HttpIoNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -60,11 +60,11 @@ HttpIoNotify ( **/ VOID HttpIoDestroyIo ( - IN HTTP_IO *HttpIo + IN HTTP_IO *HttpIo ) { - EFI_HTTP_PROTOCOL *Http; - EFI_EVENT Event; + EFI_HTTP_PROTOCOL *Http; + EFI_EVENT Event; if (HttpIo == NULL) { return; @@ -128,27 +128,27 @@ HttpIoDestroyIo ( **/ EFI_STATUS HttpIoCreateIo ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN UINT8 IpVersion, - IN HTTP_IO_CONFIG_DATA *ConfigData OPTIONAL, - IN HTTP_IO_CALLBACK Callback, - IN VOID *Context, - OUT HTTP_IO *HttpIo + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN UINT8 IpVersion, + IN HTTP_IO_CONFIG_DATA *ConfigData OPTIONAL, + IN HTTP_IO_CALLBACK Callback, + IN VOID *Context, + OUT HTTP_IO *HttpIo ) { - EFI_STATUS Status; - EFI_HTTP_CONFIG_DATA HttpConfigData; - EFI_HTTPv4_ACCESS_POINT Http4AccessPoint; - EFI_HTTPv6_ACCESS_POINT Http6AccessPoint; - EFI_HTTP_PROTOCOL *Http; - EFI_EVENT Event; + EFI_STATUS Status; + EFI_HTTP_CONFIG_DATA HttpConfigData; + EFI_HTTPv4_ACCESS_POINT Http4AccessPoint; + EFI_HTTPv6_ACCESS_POINT Http6AccessPoint; + EFI_HTTP_PROTOCOL *Http; + EFI_EVENT Event; if ((Image == NULL) || (Controller == NULL) || (HttpIo == NULL)) { return EFI_INVALID_PARAMETER; } - if (IpVersion != IP_VERSION_4 && IpVersion != IP_VERSION_6) { + if ((IpVersion != IP_VERSION_4) && (IpVersion != IP_VERSION_6)) { return EFI_UNSUPPORTED; } @@ -171,7 +171,7 @@ HttpIoCreateIo ( Status = gBS->OpenProtocol ( HttpIo->Handle, &gEfiHttpProtocolGuid, - (VOID **) &Http, + (VOID **)&Http, Image, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -183,19 +183,19 @@ HttpIoCreateIo ( // // Init the configuration data and configure the HTTP child. // - HttpIo->Image = Image; - HttpIo->Controller = Controller; - HttpIo->IpVersion = IpVersion; - HttpIo->Http = Http; - HttpIo->Callback = Callback; - HttpIo->Context = Context; - HttpIo->Timeout = PcdGet32 (PcdHttpIoTimeout); + HttpIo->Image = Image; + HttpIo->Controller = Controller; + HttpIo->IpVersion = IpVersion; + HttpIo->Http = Http; + HttpIo->Callback = Callback; + HttpIo->Context = Context; + HttpIo->Timeout = PcdGet32 (PcdHttpIoTimeout); if (ConfigData != NULL) { if (HttpIo->IpVersion == IP_VERSION_4) { - HttpConfigData.LocalAddressIsIPv6 = FALSE; - HttpConfigData.HttpVersion = ConfigData->Config4.HttpVersion; - HttpConfigData.TimeOutMillisec = ConfigData->Config4.RequestTimeOut; + HttpConfigData.LocalAddressIsIPv6 = FALSE; + HttpConfigData.HttpVersion = ConfigData->Config4.HttpVersion; + HttpConfigData.TimeOutMillisec = ConfigData->Config4.RequestTimeOut; Http4AccessPoint.UseDefaultAddress = ConfigData->Config4.UseDefaultAddress; Http4AccessPoint.LocalPort = ConfigData->Config4.LocalPort; @@ -204,10 +204,10 @@ HttpIoCreateIo ( HttpConfigData.AccessPoint.IPv4Node = &Http4AccessPoint; } else { HttpConfigData.LocalAddressIsIPv6 = TRUE; - HttpConfigData.HttpVersion = ConfigData->Config6.HttpVersion; - HttpConfigData.TimeOutMillisec = ConfigData->Config6.RequestTimeOut; + HttpConfigData.HttpVersion = ConfigData->Config6.HttpVersion; + HttpConfigData.TimeOutMillisec = ConfigData->Config6.RequestTimeOut; - Http6AccessPoint.LocalPort = ConfigData->Config6.LocalPort; + Http6AccessPoint.LocalPort = ConfigData->Config6.LocalPort; IP6_COPY_ADDRESS (&Http6AccessPoint.LocalAddress, &ConfigData->Config6.LocalIp); HttpConfigData.AccessPoint.IPv6Node = &Http6AccessPoint; } @@ -231,7 +231,8 @@ HttpIoCreateIo ( if (EFI_ERROR (Status)) { goto ON_ERROR; } - HttpIo->ReqToken.Event = Event; + + HttpIo->ReqToken.Event = Event; HttpIo->ReqToken.Message = &HttpIo->ReqMessage; Status = gBS->CreateEvent ( @@ -244,7 +245,8 @@ HttpIoCreateIo ( if (EFI_ERROR (Status)) { goto ON_ERROR; } - HttpIo->RspToken.Event = Event; + + HttpIo->RspToken.Event = Event; HttpIo->RspToken.Message = &HttpIo->RspMessage; // @@ -260,6 +262,7 @@ HttpIoCreateIo ( if (EFI_ERROR (Status)) { goto ON_ERROR; } + HttpIo->TimeoutEvent = Event; return EFI_SUCCESS; @@ -296,14 +299,14 @@ HttpIoSendRequest ( IN VOID *Body ) { - EFI_STATUS Status; - EFI_HTTP_PROTOCOL *Http; + EFI_STATUS Status; + EFI_HTTP_PROTOCOL *Http; - if (HttpIo == NULL || HttpIo->Http == NULL) { + if ((HttpIo == NULL) || (HttpIo->Http == NULL)) { return EFI_INVALID_PARAMETER; } - HttpIo->ReqToken.Status = EFI_NOT_READY; + HttpIo->ReqToken.Status = EFI_NOT_READY; HttpIo->ReqToken.Message->Data.Request = Request; HttpIo->ReqToken.Message->HeaderCount = HeaderCount; HttpIo->ReqToken.Message->Headers = Headers; @@ -312,10 +315,10 @@ HttpIoSendRequest ( if (HttpIo->Callback != NULL) { Status = HttpIo->Callback ( - HttpIoRequest, - HttpIo->ReqToken.Message, - HttpIo->Context - ); + HttpIoRequest, + HttpIo->ReqToken.Message, + HttpIo->Context + ); if (EFI_ERROR (Status)) { return Status; } @@ -324,12 +327,12 @@ HttpIoSendRequest ( // // Queue the request token to HTTP instances. // - Http = HttpIo->Http; + Http = HttpIo->Http; HttpIo->IsTxDone = FALSE; - Status = Http->Request ( - Http, - &HttpIo->ReqToken - ); + Status = Http->Request ( + Http, + &HttpIo->ReqToken + ); if (EFI_ERROR (Status)) { return Status; } @@ -361,33 +364,34 @@ HttpIoSendRequest ( **/ EFI_STATUS HttpIoRecvResponse ( - IN HTTP_IO *HttpIo, - IN BOOLEAN RecvMsgHeader, - OUT HTTP_IO_RESPONSE_DATA *ResponseData + IN HTTP_IO *HttpIo, + IN BOOLEAN RecvMsgHeader, + OUT HTTP_IO_RESPONSE_DATA *ResponseData ) { - EFI_STATUS Status; - EFI_HTTP_PROTOCOL *Http; + EFI_STATUS Status; + EFI_HTTP_PROTOCOL *Http; - if (HttpIo == NULL || HttpIo->Http == NULL || ResponseData == NULL) { + if ((HttpIo == NULL) || (HttpIo->Http == NULL) || (ResponseData == NULL)) { return EFI_INVALID_PARAMETER; } // // Queue the response token to HTTP instances. // - HttpIo->RspToken.Status = EFI_NOT_READY; + HttpIo->RspToken.Status = EFI_NOT_READY; if (RecvMsgHeader) { HttpIo->RspToken.Message->Data.Response = &ResponseData->Response; } else { HttpIo->RspToken.Message->Data.Response = NULL; } - HttpIo->RspToken.Message->HeaderCount = 0; - HttpIo->RspToken.Message->Headers = NULL; - HttpIo->RspToken.Message->BodyLength = ResponseData->BodyLength; - HttpIo->RspToken.Message->Body = ResponseData->Body; - Http = HttpIo->Http; + HttpIo->RspToken.Message->HeaderCount = 0; + HttpIo->RspToken.Message->Headers = NULL; + HttpIo->RspToken.Message->BodyLength = ResponseData->BodyLength; + HttpIo->RspToken.Message->Body = ResponseData->Body; + + Http = HttpIo->Http; HttpIo->IsRxDone = FALSE; // @@ -437,12 +441,13 @@ HttpIoRecvResponse ( } if ((HttpIo->Callback != NULL) && - (HttpIo->RspToken.Status == EFI_SUCCESS || HttpIo->RspToken.Status == EFI_HTTP_ERROR)) { + ((HttpIo->RspToken.Status == EFI_SUCCESS) || (HttpIo->RspToken.Status == EFI_HTTP_ERROR))) + { Status = HttpIo->Callback ( - HttpIoResponse, - HttpIo->RspToken.Message, - HttpIo->Context - ); + HttpIoResponse, + HttpIo->RspToken.Message, + HttpIo->Context + ); if (EFI_ERROR (Status)) { return Status; } @@ -451,7 +456,7 @@ HttpIoRecvResponse ( // // Store the received data into the wrapper. // - ResponseData->Status = HttpIo->RspToken.Status; + ResponseData->Status = HttpIo->RspToken.Status; ResponseData->HeaderCount = HttpIo->RspToken.Message->HeaderCount; ResponseData->Headers = HttpIo->RspToken.Message->Headers; ResponseData->BodyLength = HttpIo->RspToken.Message->BodyLength; @@ -472,20 +477,21 @@ HttpIoRecvResponse ( **/ EFI_STATUS HttpIoGetContentLength ( - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - OUT UINTN *ContentLength + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + OUT UINTN *ContentLength ) { - EFI_HTTP_HEADER *Header; + EFI_HTTP_HEADER *Header; Header = HttpFindHeader (HeaderCount, Headers, HTTP_HEADER_CONTENT_LENGTH); if (Header == NULL) { return EFI_NOT_FOUND; } - return AsciiStrDecimalToUintnS (Header->FieldValue, (CHAR8 **) NULL, ContentLength); + return AsciiStrDecimalToUintnS (Header->FieldValue, (CHAR8 **)NULL, ContentLength); } + /** Send HTTP request in chunks. @@ -499,21 +505,21 @@ HttpIoGetContentLength ( **/ EFI_STATUS HttpIoSendChunkedTransfer ( - IN HTTP_IO *HttpIo, - IN HTTP_IO_SEND_CHUNK_PROCESS *SendChunkProcess, - IN EFI_HTTP_MESSAGE *RequestMessage -) + IN HTTP_IO *HttpIo, + IN HTTP_IO_SEND_CHUNK_PROCESS *SendChunkProcess, + IN EFI_HTTP_MESSAGE *RequestMessage + ) { - EFI_STATUS Status; - EFI_HTTP_HEADER *NewHeaders; - EFI_HTTP_HEADER *ContentLengthHeader; - UINTN AddNewHeader; - UINTN HeaderCount; - CHAR8 *MessageBody; - UINTN MessageBodyLength; - UINTN ChunkLength; - CHAR8 ChunkLengthStr [HTTP_IO_CHUNK_SIZE_STRING_LEN]; - EFI_HTTP_REQUEST_DATA *SentRequestData; + EFI_STATUS Status; + EFI_HTTP_HEADER *NewHeaders; + EFI_HTTP_HEADER *ContentLengthHeader; + UINTN AddNewHeader; + UINTN HeaderCount; + CHAR8 *MessageBody; + UINTN MessageBodyLength; + UINTN ChunkLength; + CHAR8 ChunkLengthStr[HTTP_IO_CHUNK_SIZE_STRING_LEN]; + EFI_HTTP_REQUEST_DATA *SentRequestData; AddNewHeader = 0; NewHeaders = NULL; @@ -522,75 +528,79 @@ HttpIoSendChunkedTransfer ( MessageBodyLength = 0; switch (*SendChunkProcess) { - case HttpIoSendChunkHeaderZeroContent: + case HttpIoSendChunkHeaderZeroContent: ContentLengthHeader = HttpFindHeader (RequestMessage->HeaderCount, RequestMessage->Headers, HTTP_HEADER_CONTENT_LENGTH); if (ContentLengthHeader == NULL) { AddNewHeader = 1; } - NewHeaders = AllocateZeroPool ((RequestMessage->HeaderCount + AddNewHeader) * sizeof(EFI_HTTP_HEADER)); - CopyMem ((VOID*)NewHeaders, (VOID *)RequestMessage->Headers, RequestMessage->HeaderCount * sizeof (EFI_HTTP_HEADER)); + NewHeaders = AllocateZeroPool ((RequestMessage->HeaderCount + AddNewHeader) * sizeof (EFI_HTTP_HEADER)); + CopyMem ((VOID *)NewHeaders, (VOID *)RequestMessage->Headers, RequestMessage->HeaderCount * sizeof (EFI_HTTP_HEADER)); if (AddNewHeader == 0) { // // Override content-length to Transfer-Encoding. // - ContentLengthHeader = HttpFindHeader (RequestMessage->HeaderCount, NewHeaders, HTTP_HEADER_CONTENT_LENGTH); - ContentLengthHeader->FieldName = NULL; + ContentLengthHeader = HttpFindHeader (RequestMessage->HeaderCount, NewHeaders, HTTP_HEADER_CONTENT_LENGTH); + ContentLengthHeader->FieldName = NULL; ContentLengthHeader->FieldValue = NULL; } else { ContentLengthHeader = NewHeaders + RequestMessage->HeaderCount; } + HttpSetFieldNameAndValue (ContentLengthHeader, HTTP_HEADER_TRANSFER_ENCODING, HTTP_HEADER_TRANSFER_ENCODING_CHUNKED); - HeaderCount = RequestMessage->HeaderCount + AddNewHeader; + HeaderCount = RequestMessage->HeaderCount + AddNewHeader; MessageBodyLength = 0; - MessageBody = NULL; - SentRequestData = RequestMessage->Data.Request; + MessageBody = NULL; + SentRequestData = RequestMessage->Data.Request; break; - case HttpIoSendChunkContent: - HeaderCount = 0; - NewHeaders = NULL; + case HttpIoSendChunkContent: + HeaderCount = 0; + NewHeaders = NULL; SentRequestData = NULL; if (RequestMessage->BodyLength > HTTP_IO_MAX_SEND_PAYLOAD) { MessageBodyLength = HTTP_IO_MAX_SEND_PAYLOAD; } else { MessageBodyLength = RequestMessage->BodyLength; } + AsciiSPrint ( - ChunkLengthStr, - HTTP_IO_CHUNK_SIZE_STRING_LEN, - "%x%c%c", - MessageBodyLength, - CHUNKED_TRANSFER_CODING_CR, - CHUNKED_TRANSFER_CODING_LF - ); + ChunkLengthStr, + HTTP_IO_CHUNK_SIZE_STRING_LEN, + "%x%c%c", + MessageBodyLength, + CHUNKED_TRANSFER_CODING_CR, + CHUNKED_TRANSFER_CODING_LF + ); ChunkLength = AsciiStrLen (ChunkLengthStr); MessageBody = AllocatePool (ChunkLength + MessageBodyLength + 2); if (MessageBody == NULL) { - DEBUG((DEBUG_ERROR, "Not enough memory for chunk transfer\n")); + DEBUG ((DEBUG_ERROR, "Not enough memory for chunk transfer\n")); return EFI_OUT_OF_RESOURCES; } + // // Build up the chunk transfer paylaod. // CopyMem (MessageBody, ChunkLengthStr, ChunkLength); CopyMem (MessageBody + ChunkLength, RequestMessage->Body, MessageBodyLength); - *(MessageBody + ChunkLength + MessageBodyLength) = CHUNKED_TRANSFER_CODING_CR; + *(MessageBody + ChunkLength + MessageBodyLength) = CHUNKED_TRANSFER_CODING_CR; *(MessageBody + ChunkLength + MessageBodyLength + 1) = CHUNKED_TRANSFER_CODING_LF; // // Change variables for the next chunk trasnfer. // RequestMessage->BodyLength -= MessageBodyLength; - RequestMessage->Body = (VOID *)((CHAR8 *)RequestMessage->Body + MessageBodyLength); - MessageBodyLength += (ChunkLength + 2); + RequestMessage->Body = (VOID *)((CHAR8 *)RequestMessage->Body + MessageBodyLength); + MessageBodyLength += (ChunkLength + 2); if (RequestMessage->BodyLength == 0) { *SendChunkProcess = HttpIoSendChunkEndChunk; } + break; - case HttpIoSendChunkEndChunk: - HeaderCount = 0; - NewHeaders = NULL; + case HttpIoSendChunkEndChunk: + HeaderCount = 0; + NewHeaders = NULL; SentRequestData = NULL; AsciiSPrint ( ChunkLengthStr, @@ -601,17 +611,18 @@ HttpIoSendChunkedTransfer ( CHUNKED_TRANSFER_CODING_CR, CHUNKED_TRANSFER_CODING_LF ); - MessageBody = AllocatePool (AsciiStrLen(ChunkLengthStr)); + MessageBody = AllocatePool (AsciiStrLen (ChunkLengthStr)); if (MessageBody == NULL) { - DEBUG((DEBUG_ERROR, "Not enough memory for the end chunk transfer\n")); + DEBUG ((DEBUG_ERROR, "Not enough memory for the end chunk transfer\n")); return EFI_OUT_OF_RESOURCES; } + CopyMem (MessageBody, ChunkLengthStr, AsciiStrLen (ChunkLengthStr)); MessageBodyLength = AsciiStrLen (ChunkLengthStr); *SendChunkProcess = HttpIoSendChunkFinish; break; - default: + default: return EFI_INVALID_PARAMETER; } @@ -627,16 +638,20 @@ HttpIoSendChunkedTransfer ( if (ContentLengthHeader->FieldName != NULL) { FreePool (ContentLengthHeader->FieldName); } + if (ContentLengthHeader->FieldValue != NULL) { FreePool (ContentLengthHeader->FieldValue); } } + if (NewHeaders != NULL) { FreePool (NewHeaders); } + if (MessageBody != NULL) { FreePool (MessageBody); } + return Status; } @@ -661,30 +676,30 @@ HttpIoSendChunkedTransfer ( **/ EFI_STATUS HttpIoGetChunkedTransferContent ( - IN HTTP_IO *HttpIo, - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - OUT LIST_ENTRY **ChunkListHead, - OUT UINTN *ContentLength + IN HTTP_IO *HttpIo, + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + OUT LIST_ENTRY **ChunkListHead, + OUT UINTN *ContentLength ) { - EFI_HTTP_HEADER *Header; - CHAR8 ChunkSizeAscii [256]; - EFI_STATUS Status; - UINTN Index; - HTTP_IO_RESPONSE_DATA ResponseData; - UINTN TotalLength; - UINTN MaxTotalLength; - LIST_ENTRY *HttpChunks; - HTTP_IO_CHUNKS *ThisChunk; - LIST_ENTRY *ThisListEntry; - - if (ChunkListHead == NULL || ContentLength == NULL) { + EFI_HTTP_HEADER *Header; + CHAR8 ChunkSizeAscii[256]; + EFI_STATUS Status; + UINTN Index; + HTTP_IO_RESPONSE_DATA ResponseData; + UINTN TotalLength; + UINTN MaxTotalLength; + LIST_ENTRY *HttpChunks; + HTTP_IO_CHUNKS *ThisChunk; + LIST_ENTRY *ThisListEntry; + + if ((ChunkListHead == NULL) || (ContentLength == NULL)) { return EFI_INVALID_PARAMETER; } *ContentLength = 0; - Header = HttpFindHeader (HeaderCount, Headers, HTTP_HEADER_TRANSFER_ENCODING); + Header = HttpFindHeader (HeaderCount, Headers, HTTP_HEADER_TRANSFER_ENCODING); if (Header == NULL) { return EFI_NOT_FOUND; } @@ -692,30 +707,33 @@ HttpIoGetChunkedTransferContent ( if (AsciiStrCmp (Header->FieldValue, HTTP_HEADER_TRANSFER_ENCODING_CHUNKED) != 0) { return EFI_NOT_FOUND; } + // // Loop to get all chunks. // - TotalLength = 0; + TotalLength = 0; MaxTotalLength = PcdGet32 (PcdMaxHttpChunkTransfer); - HttpChunks = (LIST_ENTRY *)AllocateZeroPool (sizeof (LIST_ENTRY)); + HttpChunks = (LIST_ENTRY *)AllocateZeroPool (sizeof (LIST_ENTRY)); if (HttpChunks == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ExitDeleteChunks; } + InitializeListHead (HttpChunks); DEBUG ((DEBUG_INFO, " Chunked transfer\n")); while (TRUE) { - ZeroMem((VOID *)&ResponseData, sizeof(HTTP_IO_RESPONSE_DATA)); + ZeroMem ((VOID *)&ResponseData, sizeof (HTTP_IO_RESPONSE_DATA)); ResponseData.BodyLength = HTTP_IO_CHUNKED_TRANSFER_CODING_DATA_LENGTH; - ResponseData.Body = ChunkSizeAscii; - Status = HttpIoRecvResponse ( - HttpIo, - FALSE, - &ResponseData - ); + ResponseData.Body = ChunkSizeAscii; + Status = HttpIoRecvResponse ( + HttpIo, + FALSE, + &ResponseData + ); if (EFI_ERROR (Status)) { goto ExitDeleteChunks; } + // // Decoding Chunked Transfer Coding. // Only decode chunk-size and last chunk. @@ -724,13 +742,14 @@ HttpIoGetChunkedTransferContent ( // // Break if this is last chunk. // - if (ChunkSizeAscii [0] == CHUNKED_TRANSFER_CODING_LAST_CHUNK) { + if (ChunkSizeAscii[0] == CHUNKED_TRANSFER_CODING_LAST_CHUNK) { // // Check if this is a valid Last-Chunk. // - if ((ChunkSizeAscii [1] != CHUNKED_TRANSFER_CODING_CR) || - (ChunkSizeAscii [2] != CHUNKED_TRANSFER_CODING_LF) - ) { + if ((ChunkSizeAscii[1] != CHUNKED_TRANSFER_CODING_CR) || + (ChunkSizeAscii[2] != CHUNKED_TRANSFER_CODING_LF) + ) + { DEBUG ((DEBUG_ERROR, " This is an invalid Last-chunk\n")); Status = EFI_INVALID_PARAMETER; goto ExitDeleteChunks; @@ -746,12 +765,13 @@ HttpIoGetChunkedTransferContent ( InitializeListHead (&ThisChunk->NextChunk); ThisChunk->Length = ResponseData.BodyLength - 1 - 2; // Minus sizeof '0' and CRLF. - ThisChunk->Data = (CHAR8 *)AllocatePool (ThisChunk->Length); + ThisChunk->Data = (CHAR8 *)AllocatePool (ThisChunk->Length); if (ThisChunk->Data == NULL) { FreePool ((UINT8 *)ThisChunk); Status = EFI_OUT_OF_RESOURCES; goto ExitDeleteChunks; } + CopyMem ((UINT8 *)ThisChunk->Data, (UINT8 *)ResponseData.Body + 1, ThisChunk->Length); TotalLength += ThisChunk->Length; InsertTailList (HttpChunks, &ThisChunk->NextChunk); @@ -762,16 +782,18 @@ HttpIoGetChunkedTransferContent ( // Get the chunk length // Index = 0; - while ((ChunkSizeAscii [Index] != CHUNKED_TRANSFER_CODING_EXTENSION_SEPARATOR) && - (ChunkSizeAscii [Index] != (CHAR8)CHUNKED_TRANSFER_CODING_CR) && - (Index != HTTP_IO_CHUNKED_TRANSFER_CODING_DATA_LENGTH)) { - Index ++; + while ((ChunkSizeAscii[Index] != CHUNKED_TRANSFER_CODING_EXTENSION_SEPARATOR) && + (ChunkSizeAscii[Index] != (CHAR8)CHUNKED_TRANSFER_CODING_CR) && + (Index != HTTP_IO_CHUNKED_TRANSFER_CODING_DATA_LENGTH)) + { + Index++; } if (Index == HTTP_IO_CHUNKED_TRANSFER_CODING_DATA_LENGTH) { Status = EFI_NOT_FOUND; goto ExitDeleteChunks; } + ChunkSizeAscii[Index] = 0; AsciiStrHexToUintnS (ChunkSizeAscii, NULL, ContentLength); DEBUG ((DEBUG_INFO, " Length of this chunk %d\n", *ContentLength)); @@ -783,16 +805,18 @@ HttpIoGetChunkedTransferContent ( Status = EFI_OUT_OF_RESOURCES; goto ExitDeleteChunks; } + ResponseData.BodyLength = *ContentLength; - ResponseData.Body = (CHAR8 *)AllocatePool (*ContentLength); + ResponseData.Body = (CHAR8 *)AllocatePool (*ContentLength); if (ResponseData.Body == NULL) { FreePool (ThisChunk); Status = EFI_OUT_OF_RESOURCES; goto ExitDeleteChunks; } + InitializeListHead (&ThisChunk->NextChunk); ThisChunk->Length = *ContentLength; - ThisChunk->Data = ResponseData.Body; + ThisChunk->Data = ResponseData.Body; InsertTailList (HttpChunks, &ThisChunk->NextChunk); Status = HttpIoRecvResponse ( HttpIo, @@ -802,33 +826,37 @@ HttpIoGetChunkedTransferContent ( if (EFI_ERROR (Status)) { goto ExitDeleteChunks; } + // // Read CRLF // - ZeroMem((VOID *)&ResponseData, sizeof(HTTP_IO_RESPONSE_DATA)); + ZeroMem ((VOID *)&ResponseData, sizeof (HTTP_IO_RESPONSE_DATA)); ResponseData.BodyLength = 2; - ResponseData.Body = ChunkSizeAscii; - Status = HttpIoRecvResponse ( - HttpIo, - FALSE, - &ResponseData - ); + ResponseData.Body = ChunkSizeAscii; + Status = HttpIoRecvResponse ( + HttpIo, + FALSE, + &ResponseData + ); if (EFI_ERROR (Status)) { goto ExitDeleteChunks; } + // // Verify the end of chunk payload. // - if ((ChunkSizeAscii [0] != CHUNKED_TRANSFER_CODING_CR) || - (ChunkSizeAscii [1] != CHUNKED_TRANSFER_CODING_LF) - ) { - DEBUG ((DEBUG_ERROR, " This is an invalid End-of-chunk notation.\n")); - goto ExitDeleteChunks; + if ((ChunkSizeAscii[0] != CHUNKED_TRANSFER_CODING_CR) || + (ChunkSizeAscii[1] != CHUNKED_TRANSFER_CODING_LF) + ) + { + DEBUG ((DEBUG_ERROR, " This is an invalid End-of-chunk notation.\n")); + goto ExitDeleteChunks; } + TotalLength += *ContentLength; if (TotalLength > MaxTotalLength) { - DEBUG ((DEBUG_ERROR, " Total chunk transfer payload exceeds the size defined by PcdMaxHttpChunkTransfer.\n")); - goto ExitDeleteChunks; + DEBUG ((DEBUG_ERROR, " Total chunk transfer payload exceeds the size defined by PcdMaxHttpChunkTransfer.\n")); + goto ExitDeleteChunks; } } @@ -839,16 +867,19 @@ HttpIoGetChunkedTransferContent ( ExitDeleteChunks: if (HttpChunks != NULL) { - while (!IsListEmpty(HttpChunks)) { + while (!IsListEmpty (HttpChunks)) { ThisListEntry = GetFirstNode (HttpChunks); RemoveEntryList (ThisListEntry); ThisChunk = (HTTP_IO_CHUNKS *)ThisListEntry; if (ThisChunk->Data != NULL) { FreePool (ThisChunk->Data); } - FreePool(ThisListEntry); + + FreePool (ThisListEntry); } + FreePool (HttpChunks); } + return Status; } diff --git a/NetworkPkg/Library/DxeHttpLib/DxeHttpLib.c b/NetworkPkg/Library/DxeHttpLib/DxeHttpLib.c index 0bbe0fc5d7..6a5d78629b 100644 --- a/NetworkPkg/Library/DxeHttpLib/DxeHttpLib.c +++ b/NetworkPkg/Library/DxeHttpLib/DxeHttpLib.c @@ -10,8 +10,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "DxeHttpLib.h" - - /** Decode a percent-encoded URI component to the ASCII character. @@ -31,41 +29,44 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI UriPercentDecode ( - IN CHAR8 *Buffer, - IN UINT32 BufferLength, - OUT CHAR8 *ResultBuffer, - OUT UINT32 *ResultLength + IN CHAR8 *Buffer, + IN UINT32 BufferLength, + OUT CHAR8 *ResultBuffer, + OUT UINT32 *ResultLength ) { - UINTN Index; - UINTN Offset; - CHAR8 HexStr[3]; + UINTN Index; + UINTN Offset; + CHAR8 HexStr[3]; - if (Buffer == NULL || BufferLength == 0 || ResultBuffer == NULL) { + if ((Buffer == NULL) || (BufferLength == 0) || (ResultBuffer == NULL)) { return EFI_INVALID_PARAMETER; } - Index = 0; - Offset = 0; + Index = 0; + Offset = 0; HexStr[2] = '\0'; while (Index < BufferLength) { if (Buffer[Index] == '%') { - if (Index + 1 >= BufferLength || Index + 2 >= BufferLength || - !NET_IS_HEX_CHAR (Buffer[Index+1]) || !NET_IS_HEX_CHAR (Buffer[Index+2])) { + if ((Index + 1 >= BufferLength) || (Index + 2 >= BufferLength) || + !NET_IS_HEX_CHAR (Buffer[Index+1]) || !NET_IS_HEX_CHAR (Buffer[Index+2])) + { return EFI_INVALID_PARAMETER; } - HexStr[0] = Buffer[Index+1]; - HexStr[1] = Buffer[Index+2]; - ResultBuffer[Offset] = (CHAR8) AsciiStrHexToUintn (HexStr); - Index += 3; + + HexStr[0] = Buffer[Index+1]; + HexStr[1] = Buffer[Index+2]; + ResultBuffer[Offset] = (CHAR8)AsciiStrHexToUintn (HexStr); + Index += 3; } else { ResultBuffer[Offset] = Buffer[Index]; Index++; } + Offset++; } - *ResultLength = (UINT32) Offset; + *ResultLength = (UINT32)Offset; return EFI_SUCCESS; } @@ -83,19 +84,18 @@ UriPercentDecode ( **/ HTTP_URL_PARSE_STATE NetHttpParseAuthorityChar ( - IN CHAR8 Char, - IN HTTP_URL_PARSE_STATE State, - IN BOOLEAN *IsRightBracket + IN CHAR8 Char, + IN HTTP_URL_PARSE_STATE State, + IN BOOLEAN *IsRightBracket ) { - // // RFC 3986: // The authority component is preceded by a double slash ("//") and is // terminated by the next slash ("/"), question mark ("?"), or number // sign ("#") character, or by the end of the URI. // - if (Char == ' ' || Char == '\r' || Char == '\n') { + if ((Char == ' ') || (Char == '\r') || (Char == '\n')) { return UrlParserStateMax; } @@ -103,40 +103,42 @@ NetHttpParseAuthorityChar ( // authority = [ userinfo "@" ] host [ ":" port ] // switch (State) { - case UrlParserUserInfo: - if (Char == '@') { - return UrlParserHostStart; - } - break; + case UrlParserUserInfo: + if (Char == '@') { + return UrlParserHostStart; + } - case UrlParserHost: - case UrlParserHostStart: - if (Char == '[') { - return UrlParserHostIpv6; - } + break; - if (Char == ':') { - return UrlParserPortStart; - } + case UrlParserHost: + case UrlParserHostStart: + if (Char == '[') { + return UrlParserHostIpv6; + } - return UrlParserHost; + if (Char == ':') { + return UrlParserPortStart; + } - case UrlParserHostIpv6: - if (Char == ']') { - *IsRightBracket = TRUE; - } + return UrlParserHost; - if (Char == ':' && *IsRightBracket) { - return UrlParserPortStart; - } - return UrlParserHostIpv6; + case UrlParserHostIpv6: + if (Char == ']') { + *IsRightBracket = TRUE; + } + + if ((Char == ':') && *IsRightBracket) { + return UrlParserPortStart; + } - case UrlParserPort: - case UrlParserPortStart: - return UrlParserPort; + return UrlParserHostIpv6; + + case UrlParserPort: + case UrlParserPortStart: + return UrlParserPort; - default: - break; + default: + break; } return State; @@ -155,9 +157,9 @@ NetHttpParseAuthorityChar ( **/ EFI_STATUS NetHttpParseAuthority ( - IN CHAR8 *Url, - IN BOOLEAN FoundAt, - IN OUT HTTP_URL_PARSER *UrlParser + IN CHAR8 *Url, + IN BOOLEAN FoundAt, + IN OUT HTTP_URL_PARSER *UrlParser ) { CHAR8 *Char; @@ -180,38 +182,38 @@ NetHttpParseAuthority ( } IsrightBracket = FALSE; - Field = HTTP_URI_FIELD_MAX; - OldField = Field; - Authority = Url + UrlParser->FieldData[HTTP_URI_FIELD_AUTHORITY].Offset; - Length = UrlParser->FieldData[HTTP_URI_FIELD_AUTHORITY].Length; + Field = HTTP_URI_FIELD_MAX; + OldField = Field; + Authority = Url + UrlParser->FieldData[HTTP_URI_FIELD_AUTHORITY].Offset; + Length = UrlParser->FieldData[HTTP_URI_FIELD_AUTHORITY].Length; for (Char = Authority; Char < Authority + Length; Char++) { State = NetHttpParseAuthorityChar (*Char, State, &IsrightBracket); switch (State) { - case UrlParserStateMax: - return EFI_INVALID_PARAMETER; + case UrlParserStateMax: + return EFI_INVALID_PARAMETER; - case UrlParserHostStart: - case UrlParserPortStart: - continue; + case UrlParserHostStart: + case UrlParserPortStart: + continue; - case UrlParserUserInfo: - Field = HTTP_URI_FIELD_USERINFO; - break; + case UrlParserUserInfo: + Field = HTTP_URI_FIELD_USERINFO; + break; - case UrlParserHost: - Field = HTTP_URI_FIELD_HOST; - break; + case UrlParserHost: + Field = HTTP_URI_FIELD_HOST; + break; - case UrlParserHostIpv6: - Field = HTTP_URI_FIELD_HOST; - break; + case UrlParserHostIpv6: + Field = HTTP_URI_FIELD_HOST; + break; - case UrlParserPort: - Field = HTTP_URI_FIELD_PORT; - break; + case UrlParserPort: + Field = HTTP_URI_FIELD_PORT; + break; - default: - ASSERT (FALSE); + default: + ASSERT (FALSE); } // @@ -226,10 +228,10 @@ NetHttpParseAuthority ( // // New field start // - UrlParser->FieldBitMap |= BIT (Field); - UrlParser->FieldData[Field].Offset = (UINT32) (Char - Url); + UrlParser->FieldBitMap |= BIT (Field); + UrlParser->FieldData[Field].Offset = (UINT32)(Char - Url); UrlParser->FieldData[Field].Length = 1; - OldField = Field; + OldField = Field; } return EFI_SUCCESS; @@ -246,11 +248,11 @@ NetHttpParseAuthority ( **/ HTTP_URL_PARSE_STATE NetHttpParseUrlChar ( - IN CHAR8 Char, - IN HTTP_URL_PARSE_STATE State + IN CHAR8 Char, + IN HTTP_URL_PARSE_STATE State ) { - if (Char == ' ' || Char == '\r' || Char == '\n') { + if ((Char == ' ') || (Char == '\r') || (Char == '\n')) { return UrlParserStateMax; } @@ -264,76 +266,88 @@ NetHttpParseUrlChar ( // authority = [ userinfo "@" ] host [ ":" port ] // switch (State) { - case UrlParserUrlStart: - if (Char == '*' || Char == '/') { - return UrlParserPath; - } - return UrlParserScheme; + case UrlParserUrlStart: + if ((Char == '*') || (Char == '/')) { + return UrlParserPath; + } - case UrlParserScheme: - if (Char == ':') { - return UrlParserSchemeColon; - } - break; + return UrlParserScheme; - case UrlParserSchemeColon: - if (Char == '/') { - return UrlParserSchemeColonSlash; - } - break; + case UrlParserScheme: + if (Char == ':') { + return UrlParserSchemeColon; + } - case UrlParserSchemeColonSlash: - if (Char == '/') { - return UrlParserSchemeColonSlashSlash; - } - break; + break; - case UrlParserAtInAuthority: - if (Char == '@') { - return UrlParserStateMax; - } + case UrlParserSchemeColon: + if (Char == '/') { + return UrlParserSchemeColonSlash; + } - case UrlParserAuthority: - case UrlParserSchemeColonSlashSlash: - if (Char == '@') { - return UrlParserAtInAuthority; - } - if (Char == '/') { - return UrlParserPath; - } - if (Char == '?') { - return UrlParserQueryStart; - } - if (Char == '#') { - return UrlParserFragmentStart; - } - return UrlParserAuthority; + break; - case UrlParserPath: - if (Char == '?') { - return UrlParserQueryStart; - } - if (Char == '#') { - return UrlParserFragmentStart; - } - break; + case UrlParserSchemeColonSlash: + if (Char == '/') { + return UrlParserSchemeColonSlashSlash; + } - case UrlParserQuery: - case UrlParserQueryStart: - if (Char == '#') { - return UrlParserFragmentStart; - } - return UrlParserQuery; + break; + + case UrlParserAtInAuthority: + if (Char == '@') { + return UrlParserStateMax; + } - case UrlParserFragmentStart: - return UrlParserFragment; + case UrlParserAuthority: + case UrlParserSchemeColonSlashSlash: + if (Char == '@') { + return UrlParserAtInAuthority; + } + + if (Char == '/') { + return UrlParserPath; + } + + if (Char == '?') { + return UrlParserQueryStart; + } + + if (Char == '#') { + return UrlParserFragmentStart; + } + + return UrlParserAuthority; + + case UrlParserPath: + if (Char == '?') { + return UrlParserQueryStart; + } + + if (Char == '#') { + return UrlParserFragmentStart; + } + + break; + + case UrlParserQuery: + case UrlParserQueryStart: + if (Char == '#') { + return UrlParserFragmentStart; + } - default: - break; + return UrlParserQuery; + + case UrlParserFragmentStart: + return UrlParserFragment; + + default: + break; } return State; } + /** Create a URL parser for the input URL string. @@ -354,10 +368,10 @@ NetHttpParseUrlChar ( EFI_STATUS EFIAPI HttpParseUrl ( - IN CHAR8 *Url, - IN UINT32 Length, - IN BOOLEAN IsConnectMethod, - OUT VOID **UrlParser + IN CHAR8 *Url, + IN UINT32 Length, + IN BOOLEAN IsConnectMethod, + OUT VOID **UrlParser ) { HTTP_URL_PARSE_STATE State; @@ -370,7 +384,7 @@ HttpParseUrl ( Parser = NULL; - if (Url == NULL || Length == 0 || UrlParser == NULL) { + if ((Url == NULL) || (Length == 0) || (UrlParser == NULL)) { return EFI_INVALID_PARAMETER; } @@ -388,9 +402,9 @@ HttpParseUrl ( State = UrlParserUrlStart; } - Field = HTTP_URI_FIELD_MAX; + Field = HTTP_URI_FIELD_MAX; OldField = Field; - FoundAt = FALSE; + FoundAt = FALSE; for (Char = Url; Char < Url + Length; Char++) { // // Update state machine according to next char. @@ -398,44 +412,44 @@ HttpParseUrl ( State = NetHttpParseUrlChar (*Char, State); switch (State) { - case UrlParserStateMax: - FreePool (Parser); - return EFI_INVALID_PARAMETER; + case UrlParserStateMax: + FreePool (Parser); + return EFI_INVALID_PARAMETER; - case UrlParserSchemeColon: - case UrlParserSchemeColonSlash: - case UrlParserSchemeColonSlashSlash: - case UrlParserQueryStart: - case UrlParserFragmentStart: - // - // Skip all the delimiting char: "://" "?" "@" - // - continue; + case UrlParserSchemeColon: + case UrlParserSchemeColonSlash: + case UrlParserSchemeColonSlashSlash: + case UrlParserQueryStart: + case UrlParserFragmentStart: + // + // Skip all the delimiting char: "://" "?" "@" + // + continue; - case UrlParserScheme: - Field = HTTP_URI_FIELD_SCHEME; - break; + case UrlParserScheme: + Field = HTTP_URI_FIELD_SCHEME; + break; - case UrlParserAtInAuthority: - FoundAt = TRUE; - case UrlParserAuthority: - Field = HTTP_URI_FIELD_AUTHORITY; - break; + case UrlParserAtInAuthority: + FoundAt = TRUE; + case UrlParserAuthority: + Field = HTTP_URI_FIELD_AUTHORITY; + break; - case UrlParserPath: - Field = HTTP_URI_FIELD_PATH; - break; + case UrlParserPath: + Field = HTTP_URI_FIELD_PATH; + break; - case UrlParserQuery: - Field = HTTP_URI_FIELD_QUERY; - break; + case UrlParserQuery: + Field = HTTP_URI_FIELD_QUERY; + break; - case UrlParserFragment: - Field = HTTP_URI_FIELD_FRAGMENT; - break; + case UrlParserFragment: + Field = HTTP_URI_FIELD_FRAGMENT; + break; - default: - ASSERT (FALSE); + default: + ASSERT (FALSE); } // @@ -450,10 +464,10 @@ HttpParseUrl ( // // New field start // - Parser->FieldBitMap |= BIT (Field); - Parser->FieldData[Field].Offset = (UINT32) (Char - Url); + Parser->FieldBitMap |= BIT (Field); + Parser->FieldData[Field].Offset = (UINT32)(Char - Url); Parser->FieldData[Field].Length = 1; - OldField = Field; + OldField = Field; } // @@ -490,21 +504,21 @@ HttpParseUrl ( EFI_STATUS EFIAPI HttpUrlGetHostName ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT CHAR8 **HostName + IN CHAR8 *Url, + IN VOID *UrlParser, + OUT CHAR8 **HostName ) { - CHAR8 *Name; - EFI_STATUS Status; - UINT32 ResultLength; - HTTP_URL_PARSER *Parser; + CHAR8 *Name; + EFI_STATUS Status; + UINT32 ResultLength; + HTTP_URL_PARSER *Parser; - if (Url == NULL || UrlParser == NULL || HostName == NULL) { + if ((Url == NULL) || (UrlParser == NULL) || (HostName == NULL)) { return EFI_INVALID_PARAMETER; } - Parser = (HTTP_URL_PARSER *) UrlParser; + Parser = (HTTP_URL_PARSER *)UrlParser; if ((Parser->FieldBitMap & BIT (HTTP_URI_FIELD_HOST)) == 0) { return EFI_NOT_FOUND; @@ -527,11 +541,10 @@ HttpUrlGetHostName ( } Name[ResultLength] = '\0'; - *HostName = Name; + *HostName = Name; return EFI_SUCCESS; } - /** Get the IPv4 address from a HTTP URL. @@ -550,21 +563,21 @@ HttpUrlGetHostName ( EFI_STATUS EFIAPI HttpUrlGetIp4 ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT EFI_IPv4_ADDRESS *Ip4Address + IN CHAR8 *Url, + IN VOID *UrlParser, + OUT EFI_IPv4_ADDRESS *Ip4Address ) { - CHAR8 *Ip4String; - EFI_STATUS Status; - UINT32 ResultLength; - HTTP_URL_PARSER *Parser; + CHAR8 *Ip4String; + EFI_STATUS Status; + UINT32 ResultLength; + HTTP_URL_PARSER *Parser; - if (Url == NULL || UrlParser == NULL || Ip4Address == NULL) { + if ((Url == NULL) || (UrlParser == NULL) || (Ip4Address == NULL)) { return EFI_INVALID_PARAMETER; } - Parser = (HTTP_URL_PARSER *) UrlParser; + Parser = (HTTP_URL_PARSER *)UrlParser; if ((Parser->FieldBitMap & BIT (HTTP_URI_FIELD_HOST)) == 0) { return EFI_NOT_FOUND; @@ -587,7 +600,7 @@ HttpUrlGetIp4 ( } Ip4String[ResultLength] = '\0'; - Status = NetLibAsciiStrToIp4 (Ip4String, Ip4Address); + Status = NetLibAsciiStrToIp4 (Ip4String, Ip4Address); FreePool (Ip4String); return Status; @@ -611,23 +624,23 @@ HttpUrlGetIp4 ( EFI_STATUS EFIAPI HttpUrlGetIp6 ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT EFI_IPv6_ADDRESS *Ip6Address + IN CHAR8 *Url, + IN VOID *UrlParser, + OUT EFI_IPv6_ADDRESS *Ip6Address ) { - CHAR8 *Ip6String; - CHAR8 *Ptr; - UINT32 Length; - EFI_STATUS Status; - UINT32 ResultLength; - HTTP_URL_PARSER *Parser; - - if (Url == NULL || UrlParser == NULL || Ip6Address == NULL) { + CHAR8 *Ip6String; + CHAR8 *Ptr; + UINT32 Length; + EFI_STATUS Status; + UINT32 ResultLength; + HTTP_URL_PARSER *Parser; + + if ((Url == NULL) || (UrlParser == NULL) || (Ip6Address == NULL)) { return EFI_INVALID_PARAMETER; } - Parser = (HTTP_URL_PARSER *) UrlParser; + Parser = (HTTP_URL_PARSER *)UrlParser; if ((Parser->FieldBitMap & BIT (HTTP_URI_FIELD_HOST)) == 0) { return EFI_NOT_FOUND; @@ -641,7 +654,7 @@ HttpUrlGetIp6 ( return EFI_INVALID_PARAMETER; } - Ptr = Url + Parser->FieldData[HTTP_URI_FIELD_HOST].Offset; + Ptr = Url + Parser->FieldData[HTTP_URI_FIELD_HOST].Offset; if ((Ptr[0] != '[') || (Ptr[Length - 1] != ']')) { return EFI_INVALID_PARAMETER; } @@ -663,7 +676,7 @@ HttpUrlGetIp6 ( } Ip6String[ResultLength] = '\0'; - Status = NetLibAsciiStrToIp6 (Ip6String, Ip6Address); + Status = NetLibAsciiStrToIp6 (Ip6String, Ip6Address); FreePool (Ip6String); return Status; @@ -687,26 +700,26 @@ HttpUrlGetIp6 ( EFI_STATUS EFIAPI HttpUrlGetPort ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT UINT16 *Port + IN CHAR8 *Url, + IN VOID *UrlParser, + OUT UINT16 *Port ) { - CHAR8 *PortString; - EFI_STATUS Status; - UINTN Index; - UINTN Data; - UINT32 ResultLength; - HTTP_URL_PARSER *Parser; - - if (Url == NULL || UrlParser == NULL || Port == NULL) { + CHAR8 *PortString; + EFI_STATUS Status; + UINTN Index; + UINTN Data; + UINT32 ResultLength; + HTTP_URL_PARSER *Parser; + + if ((Url == NULL) || (UrlParser == NULL) || (Port == NULL)) { return EFI_INVALID_PARAMETER; } *Port = 0; Index = 0; - Parser = (HTTP_URL_PARSER *) UrlParser; + Parser = (HTTP_URL_PARSER *)UrlParser; if ((Parser->FieldBitMap & BIT (HTTP_URI_FIELD_PORT)) == 0) { return EFI_NOT_FOUND; @@ -734,17 +747,18 @@ HttpUrlGetPort ( Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } - Index ++; + + Index++; } - Status = AsciiStrDecimalToUintnS (Url + Parser->FieldData[HTTP_URI_FIELD_PORT].Offset, (CHAR8 **) NULL, &Data); + Status = AsciiStrDecimalToUintnS (Url + Parser->FieldData[HTTP_URI_FIELD_PORT].Offset, (CHAR8 **)NULL, &Data); if (Data > HTTP_URI_PORT_MAX_NUM) { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } - *Port = (UINT16) Data; + *Port = (UINT16)Data; ON_EXIT: FreePool (PortString); @@ -770,21 +784,21 @@ ON_EXIT: EFI_STATUS EFIAPI HttpUrlGetPath ( - IN CHAR8 *Url, - IN VOID *UrlParser, - OUT CHAR8 **Path + IN CHAR8 *Url, + IN VOID *UrlParser, + OUT CHAR8 **Path ) { - CHAR8 *PathStr; - EFI_STATUS Status; - UINT32 ResultLength; - HTTP_URL_PARSER *Parser; + CHAR8 *PathStr; + EFI_STATUS Status; + UINT32 ResultLength; + HTTP_URL_PARSER *Parser; - if (Url == NULL || UrlParser == NULL || Path == NULL) { + if ((Url == NULL) || (UrlParser == NULL) || (Path == NULL)) { return EFI_INVALID_PARAMETER; } - Parser = (HTTP_URL_PARSER *) UrlParser; + Parser = (HTTP_URL_PARSER *)UrlParser; if ((Parser->FieldBitMap & BIT (HTTP_URI_FIELD_PATH)) == 0) { return EFI_NOT_FOUND; @@ -807,7 +821,7 @@ HttpUrlGetPath ( } PathStr[ResultLength] = '\0'; - *Path = PathStr; + *Path = PathStr; return EFI_SUCCESS; } @@ -820,7 +834,7 @@ HttpUrlGetPath ( VOID EFIAPI HttpUrlFreeParser ( - IN VOID *UrlParser + IN VOID *UrlParser ) { FreePool (UrlParser); @@ -839,18 +853,18 @@ HttpUrlFreeParser ( EFI_HTTP_HEADER * EFIAPI HttpFindHeader ( - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - IN CHAR8 *FieldName + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + IN CHAR8 *FieldName ) { - UINTN Index; + UINTN Index; - if (HeaderCount == 0 || Headers == NULL || FieldName == NULL) { + if ((HeaderCount == 0) || (Headers == NULL) || (FieldName == NULL)) { return NULL; } - for (Index = 0; Index < HeaderCount; Index++){ + for (Index = 0; Index < HeaderCount; Index++) { // // Field names are case-insensitive (RFC 2616). // @@ -858,6 +872,7 @@ HttpFindHeader ( return &Headers[Index]; } } + return NULL; } @@ -879,17 +894,17 @@ typedef enum { } HTTP_BODY_PARSE_STATE; typedef struct { - BOOLEAN IgnoreBody; // "MUST NOT" include a message-body - BOOLEAN IsChunked; // "chunked" transfer-coding. - BOOLEAN ContentLengthIsValid; - UINTN ContentLength; // Entity length (not the message-body length), invalid until ContentLengthIsValid is TRUE - - HTTP_BODY_PARSER_CALLBACK Callback; - VOID *Context; - UINTN ParsedBodyLength; - HTTP_BODY_PARSE_STATE State; - UINTN CurrentChunkSize; - UINTN CurrentChunkParsedSize; + BOOLEAN IgnoreBody; // "MUST NOT" include a message-body + BOOLEAN IsChunked; // "chunked" transfer-coding. + BOOLEAN ContentLengthIsValid; + UINTN ContentLength; // Entity length (not the message-body length), invalid until ContentLengthIsValid is TRUE + + HTTP_BODY_PARSER_CALLBACK Callback; + VOID *Context; + UINTN ParsedBodyLength; + HTTP_BODY_PARSE_STATE State; + UINTN CurrentChunkSize; + UINTN CurrentChunkParsedSize; } HTTP_BODY_PARSER; /** @@ -902,10 +917,10 @@ typedef struct { **/ UINTN HttpIoHexCharToUintn ( - IN CHAR8 Char + IN CHAR8 Char ) { - if (Char >= '0' && Char <= '9') { + if ((Char >= '0') && (Char <= '9')) { return Char - '0'; } @@ -925,19 +940,19 @@ HttpIoHexCharToUintn ( **/ EFI_STATUS HttpIoParseContentLengthHeader ( - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - OUT UINTN *ContentLength + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + OUT UINTN *ContentLength ) { - EFI_HTTP_HEADER *Header; + EFI_HTTP_HEADER *Header; Header = HttpFindHeader (HeaderCount, Headers, HTTP_HEADER_CONTENT_LENGTH); if (Header == NULL) { return EFI_NOT_FOUND; } - return AsciiStrDecimalToUintnS (Header->FieldValue, (CHAR8 **) NULL, ContentLength); + return AsciiStrDecimalToUintnS (Header->FieldValue, (CHAR8 **)NULL, ContentLength); } /** @@ -952,12 +967,11 @@ HttpIoParseContentLengthHeader ( **/ BOOLEAN HttpIoIsChunked ( - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers ) { - EFI_HTTP_HEADER *Header; - + EFI_HTTP_HEADER *Header; Header = HttpFindHeader (HeaderCount, Headers, HTTP_HEADER_TRANSFER_ENCODING); if (Header == NULL) { @@ -982,8 +996,8 @@ HttpIoIsChunked ( **/ BOOLEAN HttpIoNoMessageBody ( - IN EFI_HTTP_METHOD Method, - IN EFI_HTTP_STATUS_CODE StatusCode + IN EFI_HTTP_METHOD Method, + IN EFI_HTTP_STATUS_CODE StatusCode ) { // @@ -1034,19 +1048,19 @@ HttpIoNoMessageBody ( EFI_STATUS EFIAPI HttpInitMsgParser ( - IN EFI_HTTP_METHOD Method, - IN EFI_HTTP_STATUS_CODE StatusCode, - IN UINTN HeaderCount, - IN EFI_HTTP_HEADER *Headers, - IN HTTP_BODY_PARSER_CALLBACK Callback, - IN VOID *Context, - OUT VOID **MsgParser + IN EFI_HTTP_METHOD Method, + IN EFI_HTTP_STATUS_CODE StatusCode, + IN UINTN HeaderCount, + IN EFI_HTTP_HEADER *Headers, + IN HTTP_BODY_PARSER_CALLBACK Callback, + IN VOID *Context, + OUT VOID **MsgParser ) { - EFI_STATUS Status; - HTTP_BODY_PARSER *Parser; + EFI_STATUS Status; + HTTP_BODY_PARSER *Parser; - if (HeaderCount != 0 && Headers == NULL) { + if ((HeaderCount != 0) && (Headers == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1069,7 +1083,7 @@ HttpInitMsgParser ( // // 2. Check whether the message using "chunked" transfer-coding. // - Parser->IsChunked = HttpIoIsChunked (HeaderCount, Headers); + Parser->IsChunked = HttpIoIsChunked (HeaderCount, Headers); // // 3. Check whether the message has a Content-Length header field. // @@ -1077,6 +1091,7 @@ HttpInitMsgParser ( if (!EFI_ERROR (Status)) { Parser->ContentLengthIsValid = TRUE; } + // // 4. Range header is not supported now, so we won't meet media type "multipart/byteranges". // 5. By server closing the connection @@ -1114,19 +1129,19 @@ HttpInitMsgParser ( EFI_STATUS EFIAPI HttpParseMessageBody ( - IN OUT VOID *MsgParser, - IN UINTN BodyLength, - IN CHAR8 *Body + IN OUT VOID *MsgParser, + IN UINTN BodyLength, + IN CHAR8 *Body ) { - CHAR8 *Char; - UINTN RemainderLengthInThis; - UINTN LengthForCallback; - UINTN PortionLength; - EFI_STATUS Status; - HTTP_BODY_PARSER *Parser; - - if (BodyLength == 0 || Body == NULL) { + CHAR8 *Char; + UINTN RemainderLengthInThis; + UINTN LengthForCallback; + UINTN PortionLength; + EFI_STATUS Status; + HTTP_BODY_PARSER *Parser; + + if ((BodyLength == 0) || (Body == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1134,7 +1149,7 @@ HttpParseMessageBody ( return EFI_INVALID_PARAMETER; } - Parser = (HTTP_BODY_PARSER *) MsgParser; + Parser = (HTTP_BODY_PARSER *)MsgParser; if (Parser->IgnoreBody) { Parser->State = BodyParserComplete; @@ -1149,6 +1164,7 @@ HttpParseMessageBody ( return Status; } } + return EFI_SUCCESS; } @@ -1165,202 +1181,213 @@ HttpParseMessageBody ( // The message body might be truncated in anywhere, so we need to parse is byte-by-byte. // for (Char = Body; Char < Body + BodyLength; ) { - switch (Parser->State) { - case BodyParserStateMax: - return EFI_ABORTED; + case BodyParserStateMax: + return EFI_ABORTED; - case BodyParserBodyIdentity: - // - // Identity transfer-coding, just notify user to save the body data. - // - PortionLength = MIN ( - BodyLength, - Parser->ContentLength - Parser->ParsedBodyLength - ); - if (PortionLength == 0) { + case BodyParserBodyIdentity: // - // Got BodyLength, but no ContentLength. Use BodyLength. + // Identity transfer-coding, just notify user to save the body data. // - PortionLength = BodyLength; - Parser->ContentLength = PortionLength; - } - - if (Parser->Callback != NULL) { - Status = Parser->Callback ( - BodyParseEventOnData, - Char, - PortionLength, - Parser->Context - ); - if (EFI_ERROR (Status)) { - return Status; + PortionLength = MIN ( + BodyLength, + Parser->ContentLength - Parser->ParsedBodyLength + ); + if (PortionLength == 0) { + // + // Got BodyLength, but no ContentLength. Use BodyLength. + // + PortionLength = BodyLength; + Parser->ContentLength = PortionLength; } - } - Char += PortionLength; - Parser->ParsedBodyLength += PortionLength; - if (Parser->ParsedBodyLength == Parser->ContentLength) { - Parser->State = BodyParserComplete; + if (Parser->Callback != NULL) { Status = Parser->Callback ( - BodyParseEventOnComplete, + BodyParseEventOnData, Char, - 0, + PortionLength, Parser->Context ); if (EFI_ERROR (Status)) { return Status; } } - } - break; - case BodyParserChunkSizeStart: - // - // First byte of chunk-size, the chunk-size might be truncated. - // - Parser->CurrentChunkSize = 0; - Parser->State = BodyParserChunkSize; - case BodyParserChunkSize: - if (!NET_IS_HEX_CHAR (*Char)) { - if (*Char == ';') { - Parser->State = BodyParserChunkExtStart; - Char++; - } else if (*Char == '\r') { - Parser->State = BodyParserChunkSizeEndCR; - Char++; - } else { - Parser->State = BodyParserStateMax; + Char += PortionLength; + Parser->ParsedBodyLength += PortionLength; + if (Parser->ParsedBodyLength == Parser->ContentLength) { + Parser->State = BodyParserComplete; + if (Parser->Callback != NULL) { + Status = Parser->Callback ( + BodyParseEventOnComplete, + Char, + 0, + Parser->Context + ); + if (EFI_ERROR (Status)) { + return Status; + } + } } + break; - } - if (Parser->CurrentChunkSize > (((~((UINTN) 0)) - 16) / 16)) { - return EFI_INVALID_PARAMETER; - } - Parser->CurrentChunkSize = Parser->CurrentChunkSize * 16 + HttpIoHexCharToUintn (*Char); - Char++; - break; + case BodyParserChunkSizeStart: + // + // First byte of chunk-size, the chunk-size might be truncated. + // + Parser->CurrentChunkSize = 0; + Parser->State = BodyParserChunkSize; + case BodyParserChunkSize: + if (!NET_IS_HEX_CHAR (*Char)) { + if (*Char == ';') { + Parser->State = BodyParserChunkExtStart; + Char++; + } else if (*Char == '\r') { + Parser->State = BodyParserChunkSizeEndCR; + Char++; + } else { + Parser->State = BodyParserStateMax; + } - case BodyParserChunkExtStart: - // - // Ignore all the chunk extensions. - // - if (*Char == '\r') { - Parser->State = BodyParserChunkSizeEndCR; - } - Char++; - break; + break; + } + + if (Parser->CurrentChunkSize > (((~((UINTN)0)) - 16) / 16)) { + return EFI_INVALID_PARAMETER; + } - case BodyParserChunkSizeEndCR: - if (*Char != '\n') { - Parser->State = BodyParserStateMax; + Parser->CurrentChunkSize = Parser->CurrentChunkSize * 16 + HttpIoHexCharToUintn (*Char); + Char++; break; - } - Char++; - if (Parser->CurrentChunkSize == 0) { + + case BodyParserChunkExtStart: // - // The last chunk has been parsed and now assumed the state - // of HttpBodyParse is ParserLastCRLF. So it need to decide - // whether the rest message is trailer or last CRLF in the next round. + // Ignore all the chunk extensions. // - Parser->ContentLengthIsValid = TRUE; - Parser->State = BodyParserLastCRLF; - break; - } - Parser->State = BodyParserChunkDataStart; - Parser->CurrentChunkParsedSize = 0; - break; + if (*Char == '\r') { + Parser->State = BodyParserChunkSizeEndCR; + } - case BodyParserLastCRLF: - // - // Judge the byte is belong to the Last CRLF or trailer, and then - // configure the state of HttpBodyParse to corresponding state. - // - if (*Char == '\r') { Char++; - Parser->State = BodyParserLastCRLFEnd; break; - } else { - Parser->State = BodyParserTrailer; + + case BodyParserChunkSizeEndCR: + if (*Char != '\n') { + Parser->State = BodyParserStateMax; + break; + } + + Char++; + if (Parser->CurrentChunkSize == 0) { + // + // The last chunk has been parsed and now assumed the state + // of HttpBodyParse is ParserLastCRLF. So it need to decide + // whether the rest message is trailer or last CRLF in the next round. + // + Parser->ContentLengthIsValid = TRUE; + Parser->State = BodyParserLastCRLF; + break; + } + + Parser->State = BodyParserChunkDataStart; + Parser->CurrentChunkParsedSize = 0; break; - } - case BodyParserLastCRLFEnd: - if (*Char == '\n') { - Parser->State = BodyParserComplete; + case BodyParserLastCRLF: + // + // Judge the byte is belong to the Last CRLF or trailer, and then + // configure the state of HttpBodyParse to corresponding state. + // + if (*Char == '\r') { + Char++; + Parser->State = BodyParserLastCRLFEnd; + break; + } else { + Parser->State = BodyParserTrailer; + break; + } + + case BodyParserLastCRLFEnd: + if (*Char == '\n') { + Parser->State = BodyParserComplete; + Char++; + if (Parser->Callback != NULL) { + Status = Parser->Callback ( + BodyParseEventOnComplete, + Char, + 0, + Parser->Context + ); + if (EFI_ERROR (Status)) { + return Status; + } + } + + break; + } else { + Parser->State = BodyParserStateMax; + break; + } + + case BodyParserTrailer: + if (*Char == '\r') { + Parser->State = BodyParserChunkSizeEndCR; + } + Char++; + break; + + case BodyParserChunkDataStart: + // + // First byte of chunk-data, the chunk data also might be truncated. + // + RemainderLengthInThis = BodyLength - (Char - Body); + LengthForCallback = MIN (Parser->CurrentChunkSize - Parser->CurrentChunkParsedSize, RemainderLengthInThis); if (Parser->Callback != NULL) { Status = Parser->Callback ( - BodyParseEventOnComplete, + BodyParseEventOnData, Char, - 0, + LengthForCallback, Parser->Context ); if (EFI_ERROR (Status)) { return Status; } } - break; - } else { - Parser->State = BodyParserStateMax; - break; - } - case BodyParserTrailer: - if (*Char == '\r') { - Parser->State = BodyParserChunkSizeEndCR; - } - Char++; - break; + Char += LengthForCallback; + Parser->ContentLength += LengthForCallback; + Parser->CurrentChunkParsedSize += LengthForCallback; + if (Parser->CurrentChunkParsedSize == Parser->CurrentChunkSize) { + Parser->State = BodyParserChunkDataEnd; + } - case BodyParserChunkDataStart: - // - // First byte of chunk-data, the chunk data also might be truncated. - // - RemainderLengthInThis = BodyLength - (Char - Body); - LengthForCallback = MIN (Parser->CurrentChunkSize - Parser->CurrentChunkParsedSize, RemainderLengthInThis); - if (Parser->Callback != NULL) { - Status = Parser->Callback ( - BodyParseEventOnData, - Char, - LengthForCallback, - Parser->Context - ); - if (EFI_ERROR (Status)) { - return Status; + break; + + case BodyParserChunkDataEnd: + if (*Char == '\r') { + Parser->State = BodyParserChunkDataEndCR; + } else { + Parser->State = BodyParserStateMax; } - } - Char += LengthForCallback; - Parser->ContentLength += LengthForCallback; - Parser->CurrentChunkParsedSize += LengthForCallback; - if (Parser->CurrentChunkParsedSize == Parser->CurrentChunkSize) { - Parser->State = BodyParserChunkDataEnd; - } - break; - case BodyParserChunkDataEnd: - if (*Char == '\r') { - Parser->State = BodyParserChunkDataEndCR; - } else { - Parser->State = BodyParserStateMax; - } - Char++; - break; + Char++; + break; + + case BodyParserChunkDataEndCR: + if (*Char != '\n') { + Parser->State = BodyParserStateMax; + break; + } - case BodyParserChunkDataEndCR: - if (*Char != '\n') { - Parser->State = BodyParserStateMax; + Char++; + Parser->State = BodyParserChunkSizeStart; break; - } - Char++; - Parser->State = BodyParserChunkSizeStart; - break; - default: - break; + default: + break; } - } if (Parser->State == BodyParserStateMax) { @@ -1382,20 +1409,21 @@ HttpParseMessageBody ( BOOLEAN EFIAPI HttpIsMessageComplete ( - IN VOID *MsgParser + IN VOID *MsgParser ) { - HTTP_BODY_PARSER *Parser; + HTTP_BODY_PARSER *Parser; if (MsgParser == NULL) { return FALSE; } - Parser = (HTTP_BODY_PARSER *) MsgParser; + Parser = (HTTP_BODY_PARSER *)MsgParser; if (Parser->State == BodyParserComplete) { return TRUE; } + return FALSE; } @@ -1415,17 +1443,17 @@ HttpIsMessageComplete ( EFI_STATUS EFIAPI HttpGetEntityLength ( - IN VOID *MsgParser, - OUT UINTN *ContentLength + IN VOID *MsgParser, + OUT UINTN *ContentLength ) { - HTTP_BODY_PARSER *Parser; + HTTP_BODY_PARSER *Parser; - if (MsgParser == NULL || ContentLength == NULL) { + if ((MsgParser == NULL) || (ContentLength == NULL)) { return EFI_INVALID_PARAMETER; } - Parser = (HTTP_BODY_PARSER *) MsgParser; + Parser = (HTTP_BODY_PARSER *)MsgParser; if (!Parser->ContentLengthIsValid) { return EFI_NOT_READY; @@ -1444,13 +1472,12 @@ HttpGetEntityLength ( VOID EFIAPI HttpFreeMsgParser ( - IN VOID *MsgParser + IN VOID *MsgParser ) { FreePool (MsgParser); } - /** Get the next string, which is distinguished by specified separator. @@ -1464,20 +1491,22 @@ HttpFreeMsgParser ( **/ CHAR8 * AsciiStrGetNextToken ( - IN CONST CHAR8 *String, - IN CHAR8 Separator + IN CONST CHAR8 *String, + IN CHAR8 Separator ) { - CONST CHAR8 *Token; + CONST CHAR8 *Token; Token = String; while (TRUE) { if (*Token == 0) { return NULL; } + if (*Token == Separator) { return (CHAR8 *)(Token + 1); } + Token++; } } @@ -1498,39 +1527,42 @@ AsciiStrGetNextToken ( EFI_STATUS EFIAPI HttpSetFieldNameAndValue ( - IN OUT EFI_HTTP_HEADER *HttpHeader, - IN CONST CHAR8 *FieldName, - IN CONST CHAR8 *FieldValue + IN OUT EFI_HTTP_HEADER *HttpHeader, + IN CONST CHAR8 *FieldName, + IN CONST CHAR8 *FieldValue ) { - UINTN FieldNameSize; - UINTN FieldValueSize; + UINTN FieldNameSize; + UINTN FieldValueSize; - if (HttpHeader == NULL || FieldName == NULL || FieldValue == NULL) { + if ((HttpHeader == NULL) || (FieldName == NULL) || (FieldValue == NULL)) { return EFI_INVALID_PARAMETER; } if (HttpHeader->FieldName != NULL) { FreePool (HttpHeader->FieldName); } + if (HttpHeader->FieldValue != NULL) { FreePool (HttpHeader->FieldValue); } - FieldNameSize = AsciiStrSize (FieldName); + FieldNameSize = AsciiStrSize (FieldName); HttpHeader->FieldName = AllocateZeroPool (FieldNameSize); if (HttpHeader->FieldName == NULL) { return EFI_OUT_OF_RESOURCES; } + CopyMem (HttpHeader->FieldName, FieldName, FieldNameSize); HttpHeader->FieldName[FieldNameSize - 1] = 0; - FieldValueSize = AsciiStrSize (FieldValue); + FieldValueSize = AsciiStrSize (FieldValue); HttpHeader->FieldValue = AllocateZeroPool (FieldValueSize); if (HttpHeader->FieldValue == NULL) { FreePool (HttpHeader->FieldName); return EFI_OUT_OF_RESOURCES; } + CopyMem (HttpHeader->FieldValue, FieldValue, FieldValueSize); HttpHeader->FieldValue[FieldValueSize - 1] = 0; @@ -1551,9 +1583,9 @@ HttpSetFieldNameAndValue ( CHAR8 * EFIAPI HttpGetFieldNameAndValue ( - IN CHAR8 *String, - OUT CHAR8 **FieldName, - OUT CHAR8 **FieldValue + IN CHAR8 *String, + OUT CHAR8 **FieldName, + OUT CHAR8 **FieldValue ) { CHAR8 *FieldNameStr; @@ -1561,7 +1593,7 @@ HttpGetFieldNameAndValue ( CHAR8 *StrPtr; CHAR8 *EndofHeader; - if (String == NULL || FieldName == NULL || FieldValue == NULL) { + if ((String == NULL) || (FieldName == NULL) || (FieldValue == NULL)) { return NULL; } @@ -1572,7 +1604,6 @@ HttpGetFieldNameAndValue ( StrPtr = NULL; EndofHeader = NULL; - // // Check whether the raw HTTP header string is valid or not. // @@ -1596,7 +1627,7 @@ HttpGetFieldNameAndValue ( // SP = ' '. // HT = '\t' (Tab). // - FieldNameStr = String; + FieldNameStr = String; FieldValueStr = AsciiStrGetNextToken (FieldNameStr, ':'); if (FieldValueStr == NULL) { return NULL; @@ -1611,23 +1642,23 @@ HttpGetFieldNameAndValue ( // Handle FieldValueStr, skip all the preceded LWS. // while (TRUE) { - if (*FieldValueStr == ' ' || *FieldValueStr == '\t') { + if ((*FieldValueStr == ' ') || (*FieldValueStr == '\t')) { // // Boundary condition check. // - if ((UINTN) EndofHeader - (UINTN) FieldValueStr < 1) { + if ((UINTN)EndofHeader - (UINTN)FieldValueStr < 1) { // // Wrong String format! // return NULL; } - FieldValueStr ++; + FieldValueStr++; } else if (*FieldValueStr == '\r') { // // Boundary condition check. // - if ((UINTN) EndofHeader - (UINTN) FieldValueStr < 3) { + if ((UINTN)EndofHeader - (UINTN)FieldValueStr < 3) { // // No more preceded LWS, so break here. // @@ -1635,7 +1666,7 @@ HttpGetFieldNameAndValue ( } if (*(FieldValueStr + 1) == '\n' ) { - if (*(FieldValueStr + 2) == ' ' || *(FieldValueStr + 2) == '\t') { + if ((*(FieldValueStr + 2) == ' ') || (*(FieldValueStr + 2) == '\t')) { FieldValueStr = FieldValueStr + 3; } else { // @@ -1663,7 +1694,7 @@ HttpGetFieldNameAndValue ( // Handle the LWS within the field value. // StrPtr = AsciiStrGetNextToken (StrPtr, '\r'); - if (StrPtr == NULL || *StrPtr != '\n') { + if ((StrPtr == NULL) || (*StrPtr != '\n')) { // // Wrong String format! // @@ -1681,7 +1712,7 @@ HttpGetFieldNameAndValue ( // // Get FieldName and FieldValue. // - *FieldName = FieldNameStr; + *FieldName = FieldNameStr; *FieldValue = FieldValueStr; return StrPtr; @@ -1701,13 +1732,14 @@ HttpFreeHeaderFields ( IN UINTN FieldCount ) { - UINTN Index; + UINTN Index; if (HeaderFields != NULL) { for (Index = 0; Index < FieldCount; Index++) { if (HeaderFields[Index].FieldName != NULL) { FreePool (HeaderFields[Index].FieldName); } + if (HeaderFields[Index].FieldValue != NULL) { FreePool (HeaderFields[Index].FieldValue); } @@ -1741,22 +1773,22 @@ HttpFreeHeaderFields ( EFI_STATUS EFIAPI HttpGenRequestMessage ( - IN CONST EFI_HTTP_MESSAGE *Message, - IN CONST CHAR8 *Url, - OUT CHAR8 **RequestMsg, - OUT UINTN *RequestMsgSize + IN CONST EFI_HTTP_MESSAGE *Message, + IN CONST CHAR8 *Url, + OUT CHAR8 **RequestMsg, + OUT UINTN *RequestMsgSize ) { - EFI_STATUS Status; - UINTN StrLength; - CHAR8 *RequestPtr; - UINTN HttpHdrSize; - UINTN MsgSize; - BOOLEAN Success; - VOID *HttpHdr; - EFI_HTTP_HEADER **AppendList; - UINTN Index; - EFI_HTTP_UTILITIES_PROTOCOL *HttpUtilitiesProtocol; + EFI_STATUS Status; + UINTN StrLength; + CHAR8 *RequestPtr; + UINTN HttpHdrSize; + UINTN MsgSize; + BOOLEAN Success; + VOID *HttpHdr; + EFI_HTTP_HEADER **AppendList; + UINTN Index; + EFI_HTTP_UTILITIES_PROTOCOL *HttpUtilitiesProtocol; Status = EFI_SUCCESS; HttpHdrSize = 0; @@ -1772,11 +1804,12 @@ HttpGenRequestMessage ( // 3. If we do not have a Request, HeaderCount should be zero // 4. If we do not have Request and Headers, we need at least a message-body // - if ((Message == NULL || RequestMsg == NULL || RequestMsgSize == NULL) || - (Message->Data.Request != NULL && Url == NULL) || - (Message->Data.Request != NULL && Message->HeaderCount == 0) || - (Message->Data.Request == NULL && Message->HeaderCount != 0) || - (Message->Data.Request == NULL && Message->HeaderCount == 0 && Message->BodyLength == 0)) { + if (((Message == NULL) || (RequestMsg == NULL) || (RequestMsgSize == NULL)) || + ((Message->Data.Request != NULL) && (Url == NULL)) || + ((Message->Data.Request != NULL) && (Message->HeaderCount == 0)) || + ((Message->Data.Request == NULL) && (Message->HeaderCount != 0)) || + ((Message->Data.Request == NULL) && (Message->HeaderCount == 0) && (Message->BodyLength == 0))) + { return EFI_INVALID_PARAMETER; } @@ -1787,11 +1820,11 @@ HttpGenRequestMessage ( Status = gBS->LocateProtocol ( &gEfiHttpUtilitiesProtocolGuid, NULL, - (VOID **) &HttpUtilitiesProtocol + (VOID **)&HttpUtilitiesProtocol ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR,"Failed to locate Http Utilities protocol. Status = %r.\n", Status)); + DEBUG ((DEBUG_ERROR, "Failed to locate Http Utilities protocol. Status = %r.\n", Status)); return Status; } @@ -1803,7 +1836,7 @@ HttpGenRequestMessage ( return EFI_OUT_OF_RESOURCES; } - for(Index = 0; Index < Message->HeaderCount; Index++){ + for (Index = 0; Index < Message->HeaderCount; Index++) { AppendList[Index] = &Message->Headers[Index]; } @@ -1824,7 +1857,7 @@ HttpGenRequestMessage ( FreePool (AppendList); - if (EFI_ERROR (Status) || HttpHdr == NULL){ + if (EFI_ERROR (Status) || (HttpHdr == NULL)) { return Status; } } @@ -1843,7 +1876,6 @@ HttpGenRequestMessage ( MsgSize += HTTP_METHOD_MAXIMUM_LEN + AsciiStrLen (HTTP_VERSION_CRLF_STR) + AsciiStrLen (Url); } - // // If we have a message body to be sent, account for it. // @@ -1865,43 +1897,43 @@ HttpGenRequestMessage ( // if (Message->Data.Request != NULL) { switch (Message->Data.Request->Method) { - case HttpMethodGet: - StrLength = sizeof (HTTP_METHOD_GET) - 1; - CopyMem (RequestPtr, HTTP_METHOD_GET, StrLength); - RequestPtr += StrLength; - break; - case HttpMethodPut: - StrLength = sizeof (HTTP_METHOD_PUT) - 1; - CopyMem (RequestPtr, HTTP_METHOD_PUT, StrLength); - RequestPtr += StrLength; - break; - case HttpMethodPatch: - StrLength = sizeof (HTTP_METHOD_PATCH) - 1; - CopyMem (RequestPtr, HTTP_METHOD_PATCH, StrLength); - RequestPtr += StrLength; - break; - case HttpMethodPost: - StrLength = sizeof (HTTP_METHOD_POST) - 1; - CopyMem (RequestPtr, HTTP_METHOD_POST, StrLength); - RequestPtr += StrLength; - break; - case HttpMethodHead: - StrLength = sizeof (HTTP_METHOD_HEAD) - 1; - CopyMem (RequestPtr, HTTP_METHOD_HEAD, StrLength); - RequestPtr += StrLength; - break; - case HttpMethodDelete: - StrLength = sizeof (HTTP_METHOD_DELETE) - 1; - CopyMem (RequestPtr, HTTP_METHOD_DELETE, StrLength); - RequestPtr += StrLength; - break; - default: - ASSERT (FALSE); - Status = EFI_INVALID_PARAMETER; - goto Exit; + case HttpMethodGet: + StrLength = sizeof (HTTP_METHOD_GET) - 1; + CopyMem (RequestPtr, HTTP_METHOD_GET, StrLength); + RequestPtr += StrLength; + break; + case HttpMethodPut: + StrLength = sizeof (HTTP_METHOD_PUT) - 1; + CopyMem (RequestPtr, HTTP_METHOD_PUT, StrLength); + RequestPtr += StrLength; + break; + case HttpMethodPatch: + StrLength = sizeof (HTTP_METHOD_PATCH) - 1; + CopyMem (RequestPtr, HTTP_METHOD_PATCH, StrLength); + RequestPtr += StrLength; + break; + case HttpMethodPost: + StrLength = sizeof (HTTP_METHOD_POST) - 1; + CopyMem (RequestPtr, HTTP_METHOD_POST, StrLength); + RequestPtr += StrLength; + break; + case HttpMethodHead: + StrLength = sizeof (HTTP_METHOD_HEAD) - 1; + CopyMem (RequestPtr, HTTP_METHOD_HEAD, StrLength); + RequestPtr += StrLength; + break; + case HttpMethodDelete: + StrLength = sizeof (HTTP_METHOD_DELETE) - 1; + CopyMem (RequestPtr, HTTP_METHOD_DELETE, StrLength); + RequestPtr += StrLength; + break; + default: + ASSERT (FALSE); + Status = EFI_INVALID_PARAMETER; + goto Exit; } - StrLength = AsciiStrLen(EMPTY_SPACE); + StrLength = AsciiStrLen (EMPTY_SPACE); CopyMem (RequestPtr, EMPTY_SPACE, StrLength); RequestPtr += StrLength; @@ -1934,7 +1966,7 @@ HttpGenRequestMessage ( // Done // (*RequestMsgSize) = (UINTN)(RequestPtr) - (UINTN)(*RequestMsg); - Success = TRUE; + Success = TRUE; Exit: @@ -1942,6 +1974,7 @@ Exit: if (*RequestMsg != NULL) { FreePool (*RequestMsg); } + *RequestMsg = NULL; return Status; } @@ -1965,95 +1998,95 @@ Exit: EFI_HTTP_STATUS_CODE EFIAPI HttpMappingToStatusCode ( - IN UINTN StatusCode + IN UINTN StatusCode ) { switch (StatusCode) { - case 100: - return HTTP_STATUS_100_CONTINUE; - case 101: - return HTTP_STATUS_101_SWITCHING_PROTOCOLS; - case 200: - return HTTP_STATUS_200_OK; - case 201: - return HTTP_STATUS_201_CREATED; - case 202: - return HTTP_STATUS_202_ACCEPTED; - case 203: - return HTTP_STATUS_203_NON_AUTHORITATIVE_INFORMATION; - case 204: - return HTTP_STATUS_204_NO_CONTENT; - case 205: - return HTTP_STATUS_205_RESET_CONTENT; - case 206: - return HTTP_STATUS_206_PARTIAL_CONTENT; - case 300: - return HTTP_STATUS_300_MULTIPLE_CHOICES; - case 301: - return HTTP_STATUS_301_MOVED_PERMANENTLY; - case 302: - return HTTP_STATUS_302_FOUND; - case 303: - return HTTP_STATUS_303_SEE_OTHER; - case 304: - return HTTP_STATUS_304_NOT_MODIFIED; - case 305: - return HTTP_STATUS_305_USE_PROXY; - case 307: - return HTTP_STATUS_307_TEMPORARY_REDIRECT; - case 308: - return HTTP_STATUS_308_PERMANENT_REDIRECT; - case 400: - return HTTP_STATUS_400_BAD_REQUEST; - case 401: - return HTTP_STATUS_401_UNAUTHORIZED; - case 402: - return HTTP_STATUS_402_PAYMENT_REQUIRED; - case 403: - return HTTP_STATUS_403_FORBIDDEN; - case 404: - return HTTP_STATUS_404_NOT_FOUND; - case 405: - return HTTP_STATUS_405_METHOD_NOT_ALLOWED; - case 406: - return HTTP_STATUS_406_NOT_ACCEPTABLE; - case 407: - return HTTP_STATUS_407_PROXY_AUTHENTICATION_REQUIRED; - case 408: - return HTTP_STATUS_408_REQUEST_TIME_OUT; - case 409: - return HTTP_STATUS_409_CONFLICT; - case 410: - return HTTP_STATUS_410_GONE; - case 411: - return HTTP_STATUS_411_LENGTH_REQUIRED; - case 412: - return HTTP_STATUS_412_PRECONDITION_FAILED; - case 413: - return HTTP_STATUS_413_REQUEST_ENTITY_TOO_LARGE; - case 414: - return HTTP_STATUS_414_REQUEST_URI_TOO_LARGE; - case 415: - return HTTP_STATUS_415_UNSUPPORTED_MEDIA_TYPE; - case 416: - return HTTP_STATUS_416_REQUESTED_RANGE_NOT_SATISFIED; - case 417: - return HTTP_STATUS_417_EXPECTATION_FAILED; - case 500: - return HTTP_STATUS_500_INTERNAL_SERVER_ERROR; - case 501: - return HTTP_STATUS_501_NOT_IMPLEMENTED; - case 502: - return HTTP_STATUS_502_BAD_GATEWAY; - case 503: - return HTTP_STATUS_503_SERVICE_UNAVAILABLE; - case 504: - return HTTP_STATUS_504_GATEWAY_TIME_OUT; - case 505: - return HTTP_STATUS_505_HTTP_VERSION_NOT_SUPPORTED; - - default: - return HTTP_STATUS_UNSUPPORTED_STATUS; + case 100: + return HTTP_STATUS_100_CONTINUE; + case 101: + return HTTP_STATUS_101_SWITCHING_PROTOCOLS; + case 200: + return HTTP_STATUS_200_OK; + case 201: + return HTTP_STATUS_201_CREATED; + case 202: + return HTTP_STATUS_202_ACCEPTED; + case 203: + return HTTP_STATUS_203_NON_AUTHORITATIVE_INFORMATION; + case 204: + return HTTP_STATUS_204_NO_CONTENT; + case 205: + return HTTP_STATUS_205_RESET_CONTENT; + case 206: + return HTTP_STATUS_206_PARTIAL_CONTENT; + case 300: + return HTTP_STATUS_300_MULTIPLE_CHOICES; + case 301: + return HTTP_STATUS_301_MOVED_PERMANENTLY; + case 302: + return HTTP_STATUS_302_FOUND; + case 303: + return HTTP_STATUS_303_SEE_OTHER; + case 304: + return HTTP_STATUS_304_NOT_MODIFIED; + case 305: + return HTTP_STATUS_305_USE_PROXY; + case 307: + return HTTP_STATUS_307_TEMPORARY_REDIRECT; + case 308: + return HTTP_STATUS_308_PERMANENT_REDIRECT; + case 400: + return HTTP_STATUS_400_BAD_REQUEST; + case 401: + return HTTP_STATUS_401_UNAUTHORIZED; + case 402: + return HTTP_STATUS_402_PAYMENT_REQUIRED; + case 403: + return HTTP_STATUS_403_FORBIDDEN; + case 404: + return HTTP_STATUS_404_NOT_FOUND; + case 405: + return HTTP_STATUS_405_METHOD_NOT_ALLOWED; + case 406: + return HTTP_STATUS_406_NOT_ACCEPTABLE; + case 407: + return HTTP_STATUS_407_PROXY_AUTHENTICATION_REQUIRED; + case 408: + return HTTP_STATUS_408_REQUEST_TIME_OUT; + case 409: + return HTTP_STATUS_409_CONFLICT; + case 410: + return HTTP_STATUS_410_GONE; + case 411: + return HTTP_STATUS_411_LENGTH_REQUIRED; + case 412: + return HTTP_STATUS_412_PRECONDITION_FAILED; + case 413: + return HTTP_STATUS_413_REQUEST_ENTITY_TOO_LARGE; + case 414: + return HTTP_STATUS_414_REQUEST_URI_TOO_LARGE; + case 415: + return HTTP_STATUS_415_UNSUPPORTED_MEDIA_TYPE; + case 416: + return HTTP_STATUS_416_REQUESTED_RANGE_NOT_SATISFIED; + case 417: + return HTTP_STATUS_417_EXPECTATION_FAILED; + case 500: + return HTTP_STATUS_500_INTERNAL_SERVER_ERROR; + case 501: + return HTTP_STATUS_501_NOT_IMPLEMENTED; + case 502: + return HTTP_STATUS_502_BAD_GATEWAY; + case 503: + return HTTP_STATUS_503_SERVICE_UNAVAILABLE; + case 504: + return HTTP_STATUS_504_GATEWAY_TIME_OUT; + case 505: + return HTTP_STATUS_505_HTTP_VERSION_NOT_SUPPORTED; + + default: + return HTTP_STATUS_UNSUPPORTED_STATUS; } } @@ -2071,12 +2104,12 @@ HttpMappingToStatusCode ( BOOLEAN EFIAPI HttpIsValidHttpHeader ( - IN CHAR8 *DeleteList[], - IN UINTN DeleteCount, - IN CHAR8 *FieldName + IN CHAR8 *DeleteList[], + IN UINTN DeleteCount, + IN CHAR8 *FieldName ) { - UINTN Index; + UINTN Index; if (FieldName == NULL) { return FALSE; @@ -2095,7 +2128,6 @@ HttpIsValidHttpHeader ( return TRUE; } - /** Create a HTTP_IO_HEADER to hold the HTTP header items. @@ -2106,10 +2138,10 @@ HttpIsValidHttpHeader ( **/ HTTP_IO_HEADER * HttpIoCreateHeader ( - UINTN MaxHeaderCount + UINTN MaxHeaderCount ) { - HTTP_IO_HEADER *HttpIoHeader; + HTTP_IO_HEADER *HttpIoHeader; if (MaxHeaderCount == 0) { return NULL; @@ -2121,7 +2153,7 @@ HttpIoCreateHeader ( } HttpIoHeader->MaxHeaderCount = MaxHeaderCount; - HttpIoHeader->Headers = (EFI_HTTP_HEADER *) (HttpIoHeader + 1); + HttpIoHeader->Headers = (EFI_HTTP_HEADER *)(HttpIoHeader + 1); return HttpIoHeader; } @@ -2134,10 +2166,10 @@ HttpIoCreateHeader ( **/ VOID HttpIoFreeHeader ( - IN HTTP_IO_HEADER *HttpIoHeader + IN HTTP_IO_HEADER *HttpIoHeader ) { - UINTN Index; + UINTN Index; if (HttpIoHeader != NULL) { if (HttpIoHeader->HeaderCount != 0) { @@ -2147,6 +2179,7 @@ HttpIoFreeHeader ( FreePool (HttpIoHeader->Headers[Index].FieldValue); } } + FreePool (HttpIoHeader); } } @@ -2166,16 +2199,16 @@ HttpIoFreeHeader ( **/ EFI_STATUS HttpIoSetHeader ( - IN HTTP_IO_HEADER *HttpIoHeader, - IN CHAR8 *FieldName, - IN CHAR8 *FieldValue + IN HTTP_IO_HEADER *HttpIoHeader, + IN CHAR8 *FieldName, + IN CHAR8 *FieldValue ) { - EFI_HTTP_HEADER *Header; - UINTN StrSize; - CHAR8 *NewFieldValue; + EFI_HTTP_HEADER *Header; + UINTN StrSize; + CHAR8 *NewFieldValue; - if (HttpIoHeader == NULL || FieldName == NULL || FieldValue == NULL) { + if ((HttpIoHeader == NULL) || (FieldName == NULL) || (FieldValue == NULL)) { return EFI_INVALID_PARAMETER; } @@ -2187,22 +2220,25 @@ HttpIoSetHeader ( if (HttpIoHeader->HeaderCount >= HttpIoHeader->MaxHeaderCount) { return EFI_OUT_OF_RESOURCES; } + Header = &HttpIoHeader->Headers[HttpIoHeader->HeaderCount]; - StrSize = AsciiStrSize (FieldName); + StrSize = AsciiStrSize (FieldName); Header->FieldName = AllocatePool (StrSize); if (Header->FieldName == NULL) { return EFI_OUT_OF_RESOURCES; } + CopyMem (Header->FieldName, FieldName, StrSize); Header->FieldName[StrSize -1] = '\0'; - StrSize = AsciiStrSize (FieldValue); + StrSize = AsciiStrSize (FieldValue); Header->FieldValue = AllocatePool (StrSize); if (Header->FieldValue == NULL) { FreePool (Header->FieldName); return EFI_OUT_OF_RESOURCES; } + CopyMem (Header->FieldValue, FieldValue, StrSize); Header->FieldValue[StrSize -1] = '\0'; @@ -2211,17 +2247,19 @@ HttpIoSetHeader ( // // Update an existing one. // - StrSize = AsciiStrSize (FieldValue); + StrSize = AsciiStrSize (FieldValue); NewFieldValue = AllocatePool (StrSize); if (NewFieldValue == NULL) { return EFI_OUT_OF_RESOURCES; } + CopyMem (NewFieldValue, FieldValue, StrSize); NewFieldValue[StrSize -1] = '\0'; if (Header->FieldValue != NULL) { FreePool (Header->FieldValue); } + Header->FieldValue = NewFieldValue; } diff --git a/NetworkPkg/Library/DxeHttpLib/DxeHttpLib.h b/NetworkPkg/Library/DxeHttpLib/DxeHttpLib.h index d064a98438..6752475ce2 100644 --- a/NetworkPkg/Library/DxeHttpLib/DxeHttpLib.h +++ b/NetworkPkg/Library/DxeHttpLib/DxeHttpLib.h @@ -34,29 +34,29 @@ Header file for HttpLib. // // Field index of the HTTP URL parse result. // -#define HTTP_URI_FIELD_SCHEME 0 -#define HTTP_URI_FIELD_AUTHORITY 1 -#define HTTP_URI_FIELD_PATH 2 -#define HTTP_URI_FIELD_QUERY 3 -#define HTTP_URI_FIELD_FRAGMENT 4 -#define HTTP_URI_FIELD_USERINFO 5 -#define HTTP_URI_FIELD_HOST 6 -#define HTTP_URI_FIELD_PORT 7 -#define HTTP_URI_FIELD_MAX 8 +#define HTTP_URI_FIELD_SCHEME 0 +#define HTTP_URI_FIELD_AUTHORITY 1 +#define HTTP_URI_FIELD_PATH 2 +#define HTTP_URI_FIELD_QUERY 3 +#define HTTP_URI_FIELD_FRAGMENT 4 +#define HTTP_URI_FIELD_USERINFO 5 +#define HTTP_URI_FIELD_HOST 6 +#define HTTP_URI_FIELD_PORT 7 +#define HTTP_URI_FIELD_MAX 8 -#define HTTP_URI_PORT_MAX_NUM 65535 +#define HTTP_URI_PORT_MAX_NUM 65535 // // Structure to store the parse result of a HTTP URL. // typedef struct { - UINT32 Offset; - UINT32 Length; + UINT32 Offset; + UINT32 Length; } HTTP_URL_FILED_DATA; typedef struct { - UINT16 FieldBitMap; - HTTP_URL_FILED_DATA FieldData[HTTP_URI_FIELD_MAX]; + UINT16 FieldBitMap; + HTTP_URL_FILED_DATA FieldData[HTTP_URI_FIELD_MAX]; } HTTP_URL_PARSER; typedef enum { @@ -82,4 +82,3 @@ typedef enum { } HTTP_URL_PARSE_STATE; #endif - diff --git a/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib.c b/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib.c index 0a816da001..d53411b64a 100644 --- a/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib.c +++ b/NetworkPkg/Library/DxeIpIoLib/DxeIpIoLib.c @@ -18,7 +18,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - GLOBAL_REMOVE_IF_UNREFERENCED LIST_ENTRY mActiveIpIoList = { &mActiveIpIoList, &mActiveIpIoList @@ -31,8 +30,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_IP4_CONFIG_DATA mIp4IoDefaultIpConfigData = { FALSE, FALSE, FALSE, - {{0, 0, 0, 0}}, - {{0, 0, 0, 0}}, + { + { 0, 0, 0, 0 } + }, + { + { 0, 0, 0, 0 } + }, 0, 255, FALSE, @@ -46,8 +49,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_IP6_CONFIG_DATA mIp6IoDefaultIpConfigData = { FALSE, TRUE, FALSE, - {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, - {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}, + { + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + }, + { + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + }, 0, 255, 0, @@ -56,32 +63,31 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_IP6_CONFIG_DATA mIp6IoDefaultIpConfigData = { }; GLOBAL_REMOVE_IF_UNREFERENCED ICMP_ERROR_INFO mIcmpErrMap[10] = { - {FALSE, TRUE }, // ICMP_ERR_UNREACH_NET - {FALSE, TRUE }, // ICMP_ERR_UNREACH_HOST - {TRUE, TRUE }, // ICMP_ERR_UNREACH_PROTOCOL - {TRUE, TRUE }, // ICMP_ERR_UNREACH_PORT - {TRUE, TRUE }, // ICMP_ERR_MSGSIZE - {FALSE, TRUE }, // ICMP_ERR_UNREACH_SRCFAIL - {FALSE, TRUE }, // ICMP_ERR_TIMXCEED_INTRANS - {FALSE, TRUE }, // ICMP_ERR_TIMEXCEED_REASS - {FALSE, FALSE}, // ICMP_ERR_QUENCH - {FALSE, TRUE } // ICMP_ERR_PARAMPROB + { FALSE, TRUE }, // ICMP_ERR_UNREACH_NET + { FALSE, TRUE }, // ICMP_ERR_UNREACH_HOST + { TRUE, TRUE }, // ICMP_ERR_UNREACH_PROTOCOL + { TRUE, TRUE }, // ICMP_ERR_UNREACH_PORT + { TRUE, TRUE }, // ICMP_ERR_MSGSIZE + { FALSE, TRUE }, // ICMP_ERR_UNREACH_SRCFAIL + { FALSE, TRUE }, // ICMP_ERR_TIMXCEED_INTRANS + { FALSE, TRUE }, // ICMP_ERR_TIMEXCEED_REASS + { FALSE, FALSE }, // ICMP_ERR_QUENCH + { FALSE, TRUE } // ICMP_ERR_PARAMPROB }; GLOBAL_REMOVE_IF_UNREFERENCED ICMP_ERROR_INFO mIcmp6ErrMap[10] = { - {FALSE, TRUE}, // ICMP6_ERR_UNREACH_NET - {FALSE, TRUE}, // ICMP6_ERR_UNREACH_HOST - {TRUE, TRUE}, // ICMP6_ERR_UNREACH_PROTOCOL - {TRUE, TRUE}, // ICMP6_ERR_UNREACH_PORT - {TRUE, TRUE}, // ICMP6_ERR_PACKAGE_TOOBIG - {FALSE, TRUE}, // ICMP6_ERR_TIMXCEED_HOPLIMIT - {FALSE, TRUE}, // ICMP6_ERR_TIMXCEED_REASS - {FALSE, TRUE}, // ICMP6_ERR_PARAMPROB_HEADER - {FALSE, TRUE}, // ICMP6_ERR_PARAMPROB_NEXHEADER - {FALSE, TRUE} // ICMP6_ERR_PARAMPROB_IPV6OPTION + { FALSE, TRUE }, // ICMP6_ERR_UNREACH_NET + { FALSE, TRUE }, // ICMP6_ERR_UNREACH_HOST + { TRUE, TRUE }, // ICMP6_ERR_UNREACH_PROTOCOL + { TRUE, TRUE }, // ICMP6_ERR_UNREACH_PORT + { TRUE, TRUE }, // ICMP6_ERR_PACKAGE_TOOBIG + { FALSE, TRUE }, // ICMP6_ERR_TIMXCEED_HOPLIMIT + { FALSE, TRUE }, // ICMP6_ERR_TIMXCEED_REASS + { FALSE, TRUE }, // ICMP6_ERR_PARAMPROB_HEADER + { FALSE, TRUE }, // ICMP6_ERR_PARAMPROB_NEXHEADER + { FALSE, TRUE } // ICMP6_ERR_PARAMPROB_IPV6OPTION }; - /** Notify function for IP transmit token. @@ -91,10 +97,9 @@ GLOBAL_REMOVE_IF_UNREFERENCED ICMP_ERROR_INFO mIcmp6ErrMap[10] = { VOID EFIAPI IpIoTransmitHandlerDpc ( - IN VOID *Context + IN VOID *Context ); - /** Notify function for IP transmit token. @@ -105,11 +110,10 @@ IpIoTransmitHandlerDpc ( VOID EFIAPI IpIoTransmitHandler ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); - /** This function create an IP child ,open the IP protocol, and return the opened IP protocol as Interface. @@ -143,7 +147,7 @@ IpIoCreateIpChildOpenProtocol ( if (IpVersion == IP_VERSION_4) { ServiceBindingGuid = &gEfiIp4ServiceBindingProtocolGuid; IpProtocolGuid = &gEfiIp4ProtocolGuid; - } else if (IpVersion == IP_VERSION_6){ + } else if (IpVersion == IP_VERSION_6) { ServiceBindingGuid = &gEfiIp6ServiceBindingProtocolGuid; IpProtocolGuid = &gEfiIp6ProtocolGuid; } else { @@ -189,7 +193,6 @@ IpIoCreateIpChildOpenProtocol ( return Status; } - /** This function close the previously opened IP protocol and destroy the IP child. @@ -265,9 +268,9 @@ IpIoCloseProtocolDestroyIpChild ( **/ EFI_STATUS IpIoIcmpv4Handler ( - IN IP_IO *IpIo, - IN OUT NET_BUF *Pkt, - IN EFI_NET_SESSION_DATA *Session + IN IP_IO *IpIo, + IN OUT NET_BUF *Pkt, + IN EFI_NET_SESSION_DATA *Session ) { IP4_ICMP_ERROR_HEAD *IcmpHdr; @@ -291,10 +294,9 @@ IpIoIcmpv4Handler ( } IcmpHdr = NET_PROTO_HDR (Pkt, IP4_ICMP_ERROR_HEAD); - IpHdr = (EFI_IP4_HEADER *) (&IcmpHdr->IpHead); + IpHdr = (EFI_IP4_HEADER *)(&IcmpHdr->IpHead); if (Pkt->TotalSize < ICMP_ERRLEN (IpHdr)) { - return EFI_ABORTED; } @@ -305,80 +307,80 @@ IpIoIcmpv4Handler ( // Analyze the ICMP Error in this ICMP pkt // switch (Type) { - case ICMP_TYPE_UNREACH: - switch (Code) { - case ICMP_CODE_UNREACH_NET: - case ICMP_CODE_UNREACH_HOST: - case ICMP_CODE_UNREACH_PROTOCOL: - case ICMP_CODE_UNREACH_PORT: - case ICMP_CODE_UNREACH_SRCFAIL: - IcmpErr = (UINT8) (ICMP_ERR_UNREACH_NET + Code); + case ICMP_TYPE_UNREACH: + switch (Code) { + case ICMP_CODE_UNREACH_NET: + case ICMP_CODE_UNREACH_HOST: + case ICMP_CODE_UNREACH_PROTOCOL: + case ICMP_CODE_UNREACH_PORT: + case ICMP_CODE_UNREACH_SRCFAIL: + IcmpErr = (UINT8)(ICMP_ERR_UNREACH_NET + Code); - break; + break; - case ICMP_CODE_UNREACH_NEEDFRAG: - IcmpErr = ICMP_ERR_MSGSIZE; + case ICMP_CODE_UNREACH_NEEDFRAG: + IcmpErr = ICMP_ERR_MSGSIZE; - break; + break; - case ICMP_CODE_UNREACH_NET_UNKNOWN: - case ICMP_CODE_UNREACH_NET_PROHIB: - case ICMP_CODE_UNREACH_TOSNET: - IcmpErr = ICMP_ERR_UNREACH_NET; + case ICMP_CODE_UNREACH_NET_UNKNOWN: + case ICMP_CODE_UNREACH_NET_PROHIB: + case ICMP_CODE_UNREACH_TOSNET: + IcmpErr = ICMP_ERR_UNREACH_NET; - break; + break; - case ICMP_CODE_UNREACH_HOST_UNKNOWN: - case ICMP_CODE_UNREACH_ISOLATED: - case ICMP_CODE_UNREACH_HOST_PROHIB: - case ICMP_CODE_UNREACH_TOSHOST: - IcmpErr = ICMP_ERR_UNREACH_HOST; + case ICMP_CODE_UNREACH_HOST_UNKNOWN: + case ICMP_CODE_UNREACH_ISOLATED: + case ICMP_CODE_UNREACH_HOST_PROHIB: + case ICMP_CODE_UNREACH_TOSHOST: + IcmpErr = ICMP_ERR_UNREACH_HOST; - break; + break; - default: - return EFI_ABORTED; - } + default: + return EFI_ABORTED; + } - break; + break; - case ICMP_TYPE_TIMXCEED: - if (Code > 1) { - return EFI_ABORTED; - } + case ICMP_TYPE_TIMXCEED: + if (Code > 1) { + return EFI_ABORTED; + } - IcmpErr = (UINT8) (Code + ICMP_ERR_TIMXCEED_INTRANS); + IcmpErr = (UINT8)(Code + ICMP_ERR_TIMXCEED_INTRANS); - break; + break; - case ICMP_TYPE_PARAMPROB: - if (Code > 1) { - return EFI_ABORTED; - } + case ICMP_TYPE_PARAMPROB: + if (Code > 1) { + return EFI_ABORTED; + } - IcmpErr = ICMP_ERR_PARAMPROB; + IcmpErr = ICMP_ERR_PARAMPROB; - break; + break; - case ICMP_TYPE_SOURCEQUENCH: - if (Code != 0) { - return EFI_ABORTED; - } + case ICMP_TYPE_SOURCEQUENCH: + if (Code != 0) { + return EFI_ABORTED; + } - IcmpErr = ICMP_ERR_QUENCH; + IcmpErr = ICMP_ERR_QUENCH; - break; + break; - default: - return EFI_ABORTED; + default: + return EFI_ABORTED; } // // Notify user the ICMP pkt only containing payload except // IP and ICMP header // - PayLoadHdr = (UINT8 *) ((UINT8 *) IpHdr + EFI_IP4_HEADER_LEN (IpHdr)); - TrimBytes = (UINT32) (PayLoadHdr - (UINT8 *) IcmpHdr); + PayLoadHdr = (UINT8 *)((UINT8 *)IpHdr + EFI_IP4_HEADER_LEN (IpHdr)); + TrimBytes = (UINT32)(PayLoadHdr - (UINT8 *)IcmpHdr); NetbufTrim (Pkt, TrimBytes, TRUE); @@ -407,9 +409,9 @@ IpIoIcmpv4Handler ( **/ EFI_STATUS IpIoIcmpv6Handler ( - IN IP_IO *IpIo, - IN OUT NET_BUF *Pkt, - IN EFI_NET_SESSION_DATA *Session + IN IP_IO *IpIo, + IN OUT NET_BUF *Pkt, + IN EFI_NET_SESSION_DATA *Session ) { IP6_ICMP_ERROR_HEAD *IcmpHdr; @@ -431,7 +433,6 @@ IpIoIcmpv6Handler ( // Check the ICMPv6 packet length. // if (Pkt->TotalSize < sizeof (IP6_ICMP_ERROR_HEAD)) { - return EFI_ABORTED; } @@ -443,112 +444,112 @@ IpIoIcmpv6Handler ( // Analyze the ICMPv6 Error in this ICMPv6 packet // switch (Type) { - case ICMP_V6_DEST_UNREACHABLE: - switch (Code) { - case ICMP_V6_NO_ROUTE_TO_DEST: - case ICMP_V6_BEYOND_SCOPE: - case ICMP_V6_ROUTE_REJECTED: - IcmpErr = ICMP6_ERR_UNREACH_NET; + case ICMP_V6_DEST_UNREACHABLE: + switch (Code) { + case ICMP_V6_NO_ROUTE_TO_DEST: + case ICMP_V6_BEYOND_SCOPE: + case ICMP_V6_ROUTE_REJECTED: + IcmpErr = ICMP6_ERR_UNREACH_NET; - break; + break; - case ICMP_V6_COMM_PROHIBITED: - case ICMP_V6_ADDR_UNREACHABLE: - case ICMP_V6_SOURCE_ADDR_FAILED: - IcmpErr = ICMP6_ERR_UNREACH_HOST; + case ICMP_V6_COMM_PROHIBITED: + case ICMP_V6_ADDR_UNREACHABLE: + case ICMP_V6_SOURCE_ADDR_FAILED: + IcmpErr = ICMP6_ERR_UNREACH_HOST; - break; + break; - case ICMP_V6_PORT_UNREACHABLE: - IcmpErr = ICMP6_ERR_UNREACH_PORT; + case ICMP_V6_PORT_UNREACHABLE: + IcmpErr = ICMP6_ERR_UNREACH_PORT; - break; + break; - default: - return EFI_ABORTED; - } + default: + return EFI_ABORTED; + } - break; + break; - case ICMP_V6_PACKET_TOO_BIG: - if (Code >= 1) { - return EFI_ABORTED; - } + case ICMP_V6_PACKET_TOO_BIG: + if (Code >= 1) { + return EFI_ABORTED; + } - IcmpErr = ICMP6_ERR_PACKAGE_TOOBIG; + IcmpErr = ICMP6_ERR_PACKAGE_TOOBIG; - break; + break; - case ICMP_V6_TIME_EXCEEDED: - if (Code > 1) { - return EFI_ABORTED; - } + case ICMP_V6_TIME_EXCEEDED: + if (Code > 1) { + return EFI_ABORTED; + } - IcmpErr = (UINT8) (ICMP6_ERR_TIMXCEED_HOPLIMIT + Code); + IcmpErr = (UINT8)(ICMP6_ERR_TIMXCEED_HOPLIMIT + Code); - break; + break; - case ICMP_V6_PARAMETER_PROBLEM: - if (Code > 3) { - return EFI_ABORTED; - } + case ICMP_V6_PARAMETER_PROBLEM: + if (Code > 3) { + return EFI_ABORTED; + } - IcmpErr = (UINT8) (ICMP6_ERR_PARAMPROB_HEADER + Code); + IcmpErr = (UINT8)(ICMP6_ERR_PARAMPROB_HEADER + Code); - break; + break; - default: + default: - return EFI_ABORTED; - } + return EFI_ABORTED; + } // // Notify user the ICMPv6 packet only containing payload except // IPv6 basic header, extension header and ICMP header // - IpHdr = (EFI_IP6_HEADER *) (&IcmpHdr->IpHead); + IpHdr = (EFI_IP6_HEADER *)(&IcmpHdr->IpHead); NextHeader = IpHdr->NextHeader; - PayLoadHdr = (UINT8 *) ((UINT8 *) IcmpHdr + sizeof (IP6_ICMP_ERROR_HEAD)); + PayLoadHdr = (UINT8 *)((UINT8 *)IcmpHdr + sizeof (IP6_ICMP_ERROR_HEAD)); Flag = TRUE; do { switch (NextHeader) { - case EFI_IP_PROTO_UDP: - case EFI_IP_PROTO_TCP: - case EFI_IP_PROTO_ICMP: - case IP6_NO_NEXT_HEADER: - Flag = FALSE; + case EFI_IP_PROTO_UDP: + case EFI_IP_PROTO_TCP: + case EFI_IP_PROTO_ICMP: + case IP6_NO_NEXT_HEADER: + Flag = FALSE; - break; + break; - case IP6_HOP_BY_HOP: - case IP6_DESTINATION: - // - // The Hdr Ext Len is 8-bit unsigned integer in 8-octet units, not including - // the first 8 octets. - // - NextHeader = *(PayLoadHdr); - PayLoadHdr = (UINT8 *) (PayLoadHdr + (*(PayLoadHdr + 1) + 1) * 8); + case IP6_HOP_BY_HOP: + case IP6_DESTINATION: + // + // The Hdr Ext Len is 8-bit unsigned integer in 8-octet units, not including + // the first 8 octets. + // + NextHeader = *(PayLoadHdr); + PayLoadHdr = (UINT8 *)(PayLoadHdr + (*(PayLoadHdr + 1) + 1) * 8); - break; + break; - case IP6_FRAGMENT: - // - // The Fragment Header Length is 8 octets. - // - NextHeader = *(PayLoadHdr); - PayLoadHdr = (UINT8 *) (PayLoadHdr + 8); + case IP6_FRAGMENT: + // + // The Fragment Header Length is 8 octets. + // + NextHeader = *(PayLoadHdr); + PayLoadHdr = (UINT8 *)(PayLoadHdr + 8); - break; + break; - default: + default: - return EFI_ABORTED; + return EFI_ABORTED; } } while (Flag); - TrimBytes = (UINT32) (PayLoadHdr - (UINT8 *) IcmpHdr); + TrimBytes = (UINT32)(PayLoadHdr - (UINT8 *)IcmpHdr); NetbufTrim (Pkt, TrimBytes, TRUE); @@ -577,27 +578,20 @@ IpIoIcmpv6Handler ( **/ EFI_STATUS IpIoIcmpHandler ( - IN IP_IO *IpIo, - IN OUT NET_BUF *Pkt, - IN EFI_NET_SESSION_DATA *Session + IN IP_IO *IpIo, + IN OUT NET_BUF *Pkt, + IN EFI_NET_SESSION_DATA *Session ) { - if (IpIo->IpVersion == IP_VERSION_4) { - return IpIoIcmpv4Handler (IpIo, Pkt, Session); - } else if (IpIo->IpVersion == IP_VERSION_6) { - return IpIoIcmpv6Handler (IpIo, Pkt, Session); - } else { - return EFI_UNSUPPORTED; } } - /** Free function for receive token of IP_IO. It is used to signal the recycle event to notify IP to recycle the @@ -612,10 +606,9 @@ IpIoExtFree ( IN VOID *Event ) { - gBS->SignalEvent ((EFI_EVENT) Event); + gBS->SignalEvent ((EFI_EVENT)Event); } - /** Create a send entry to wrap a packet before sending out it through IP. @@ -634,24 +627,24 @@ IpIoExtFree ( **/ IP_IO_SEND_ENTRY * IpIoCreateSndEntry ( - IN OUT IP_IO *IpIo, - IN OUT NET_BUF *Pkt, - IN IP_IO_IP_PROTOCOL Sender, - IN VOID *Context OPTIONAL, - IN VOID *NotifyData OPTIONAL, - IN EFI_IP_ADDRESS *Dest OPTIONAL, - IN IP_IO_OVERRIDE *Override + IN OUT IP_IO *IpIo, + IN OUT NET_BUF *Pkt, + IN IP_IO_IP_PROTOCOL Sender, + IN VOID *Context OPTIONAL, + IN VOID *NotifyData OPTIONAL, + IN EFI_IP_ADDRESS *Dest OPTIONAL, + IN IP_IO_OVERRIDE *Override ) { - IP_IO_SEND_ENTRY *SndEntry; - EFI_EVENT Event; - EFI_STATUS Status; - NET_FRAGMENT *ExtFragment; - UINT32 FragmentCount; - IP_IO_OVERRIDE *OverrideData; - IP_IO_IP_TX_DATA *TxData; - EFI_IP4_TRANSMIT_DATA *Ip4TxData; - EFI_IP6_TRANSMIT_DATA *Ip6TxData; + IP_IO_SEND_ENTRY *SndEntry; + EFI_EVENT Event; + EFI_STATUS Status; + NET_FRAGMENT *ExtFragment; + UINT32 FragmentCount; + IP_IO_OVERRIDE *OverrideData; + IP_IO_IP_TX_DATA *TxData; + EFI_IP4_TRANSMIT_DATA *Ip4TxData; + EFI_IP6_TRANSMIT_DATA *Ip6TxData; if ((IpIo->IpVersion != IP_VERSION_4) && (IpIo->IpVersion != IP_VERSION_6)) { return NULL; @@ -685,9 +678,9 @@ IpIoCreateSndEntry ( // // Allocate resource for TxData // - TxData = (IP_IO_IP_TX_DATA *) AllocatePool ( - sizeof (IP_IO_IP_TX_DATA) + sizeof (NET_FRAGMENT) * (FragmentCount - 1) - ); + TxData = (IP_IO_IP_TX_DATA *)AllocatePool ( + sizeof (IP_IO_IP_TX_DATA) + sizeof (NET_FRAGMENT) * (FragmentCount - 1) + ); if (NULL == TxData) { goto ON_ERROR; @@ -697,19 +690,17 @@ IpIoCreateSndEntry ( // Build a fragment table to contain the fragments in the packet. // if (IpIo->IpVersion == IP_VERSION_4) { - ExtFragment = (NET_FRAGMENT *) TxData->Ip4TxData.FragmentTable; + ExtFragment = (NET_FRAGMENT *)TxData->Ip4TxData.FragmentTable; } else { - ExtFragment = (NET_FRAGMENT *) TxData->Ip6TxData.FragmentTable; + ExtFragment = (NET_FRAGMENT *)TxData->Ip6TxData.FragmentTable; } NetbufBuildExt (Pkt, ExtFragment, &FragmentCount); - // // Allocate resource for OverrideData if needed // if (NULL != Override) { - OverrideData = AllocateCopyPool (sizeof (IP_IO_OVERRIDE), Override); if (NULL == OverrideData) { goto ON_ERROR; @@ -720,7 +711,6 @@ IpIoCreateSndEntry ( // Set other fields of TxData except the fragment table // if (IpIo->IpVersion == IP_VERSION_4) { - Ip4TxData = &TxData->Ip4TxData; IP4_COPY_ADDRESS (&Ip4TxData->DestinationAddress, Dest); @@ -737,7 +727,6 @@ IpIoCreateSndEntry ( SndEntry->SndToken.Ip4Token.Event = Event; SndEntry->SndToken.Ip4Token.Packet.TxData = Ip4TxData; } else { - Ip6TxData = &TxData->Ip6TxData; if (Dest != NULL) { @@ -762,12 +751,12 @@ IpIoCreateSndEntry ( // // Set the fields of SndEntry // - SndEntry->IpIo = IpIo; - SndEntry->Ip = Sender; - SndEntry->Context = Context; - SndEntry->NotifyData = NotifyData; + SndEntry->IpIo = IpIo; + SndEntry->Ip = Sender; + SndEntry->Context = Context; + SndEntry->NotifyData = NotifyData; - SndEntry->Pkt = Pkt; + SndEntry->Pkt = Pkt; NET_GET_REF (Pkt); InsertTailList (&IpIo->PendingSndList, &SndEntry->Entry); @@ -795,7 +784,6 @@ ON_ERROR: return NULL; } - /** Destroy the SndEntry. @@ -814,15 +802,15 @@ IpIoDestroySndEntry ( IP_IO_OVERRIDE *Override; if (SndEntry->IpIo->IpVersion == IP_VERSION_4) { - Event = SndEntry->SndToken.Ip4Token.Event; - TxData = (IP_IO_IP_TX_DATA *) SndEntry->SndToken.Ip4Token.Packet.TxData; - Override = (IP_IO_OVERRIDE *) TxData->Ip4TxData.OverrideData; + Event = SndEntry->SndToken.Ip4Token.Event; + TxData = (IP_IO_IP_TX_DATA *)SndEntry->SndToken.Ip4Token.Packet.TxData; + Override = (IP_IO_OVERRIDE *)TxData->Ip4TxData.OverrideData; } else if (SndEntry->IpIo->IpVersion == IP_VERSION_6) { - Event = SndEntry->SndToken.Ip6Token.Event; - TxData = (IP_IO_IP_TX_DATA *) SndEntry->SndToken.Ip6Token.Packet.TxData; - Override = (IP_IO_OVERRIDE *) TxData->Ip6TxData.OverrideData; + Event = SndEntry->SndToken.Ip6Token.Event; + TxData = (IP_IO_IP_TX_DATA *)SndEntry->SndToken.Ip6Token.Packet.TxData; + Override = (IP_IO_OVERRIDE *)TxData->Ip6TxData.OverrideData; } else { - return ; + return; } gBS->CloseEvent (Event); @@ -840,7 +828,6 @@ IpIoDestroySndEntry ( FreePool (SndEntry); } - /** Notify function for IP transmit token. @@ -850,23 +837,23 @@ IpIoDestroySndEntry ( VOID EFIAPI IpIoTransmitHandlerDpc ( - IN VOID *Context + IN VOID *Context ) { IP_IO *IpIo; IP_IO_SEND_ENTRY *SndEntry; EFI_STATUS Status; - SndEntry = (IP_IO_SEND_ENTRY *) Context; + SndEntry = (IP_IO_SEND_ENTRY *)Context; - IpIo = SndEntry->IpIo; + IpIo = SndEntry->IpIo; if (IpIo->IpVersion == IP_VERSION_4) { Status = SndEntry->SndToken.Ip4Token.Status; - } else if (IpIo->IpVersion == IP_VERSION_6){ + } else if (IpIo->IpVersion == IP_VERSION_6) { Status = SndEntry->SndToken.Ip6Token.Status; } else { - return ; + return; } if ((IpIo->PktSentNotify != NULL) && (SndEntry->NotifyData != NULL)) { @@ -881,7 +868,6 @@ IpIoTransmitHandlerDpc ( IpIoDestroySndEntry (SndEntry); } - /** Notify function for IP transmit token. @@ -892,8 +878,8 @@ IpIoTransmitHandlerDpc ( VOID EFIAPI IpIoTransmitHandler ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -902,7 +888,6 @@ IpIoTransmitHandler ( QueueDpc (TPL_CALLBACK, IpIoTransmitHandlerDpc, Context); } - /** The dummy handler for the dummy IP receive token. @@ -912,17 +897,17 @@ IpIoTransmitHandler ( VOID EFIAPI IpIoDummyHandlerDpc ( - IN VOID *Context + IN VOID *Context ) { - IP_IO_IP_INFO *IpInfo; - EFI_STATUS Status; - EFI_EVENT RecycleEvent; + IP_IO_IP_INFO *IpInfo; + EFI_STATUS Status; + EFI_EVENT RecycleEvent; - IpInfo = (IP_IO_IP_INFO *) Context; + IpInfo = (IP_IO_IP_INFO *)Context; if ((IpInfo->IpVersion != IP_VERSION_4) && (IpInfo->IpVersion != IP_VERSION_6)) { - return ; + return; } RecycleEvent = NULL; @@ -941,8 +926,6 @@ IpIoDummyHandlerDpc ( } } - - if (EFI_ABORTED == Status) { // // The reception is actively aborted by the consumer, directly return. @@ -973,7 +956,6 @@ IpIoDummyHandlerDpc ( } } - /** This function add IpIoDummyHandlerDpc to the end of the DPC queue. @@ -984,8 +966,8 @@ IpIoDummyHandlerDpc ( VOID EFIAPI IpIoDummyHandler ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -994,7 +976,6 @@ IpIoDummyHandler ( QueueDpc (TPL_CALLBACK, IpIoDummyHandlerDpc, Context); } - /** Notify function for the IP receive token, used to process the received IP packets. @@ -1005,7 +986,7 @@ IpIoDummyHandler ( VOID EFIAPI IpIoListenHandlerDpc ( - IN VOID *Context + IN VOID *Context ) { IP_IO *IpIo; @@ -1014,14 +995,14 @@ IpIoListenHandlerDpc ( EFI_NET_SESSION_DATA Session; NET_BUF *Pkt; - IpIo = (IP_IO *) Context; + IpIo = (IP_IO *)Context; if (IpIo->IpVersion == IP_VERSION_4) { Status = IpIo->RcvToken.Ip4Token.Status; - RxData = (IP_IO_IP_RX_DATA *) IpIo->RcvToken.Ip4Token.Packet.RxData; + RxData = (IP_IO_IP_RX_DATA *)IpIo->RcvToken.Ip4Token.Packet.RxData; } else if (IpIo->IpVersion == IP_VERSION_6) { Status = IpIo->RcvToken.Ip6Token.Status; - RxData = (IP_IO_IP_RX_DATA *) IpIo->RcvToken.Ip6Token.Packet.RxData; + RxData = (IP_IO_IP_RX_DATA *)IpIo->RcvToken.Ip6Token.Packet.RxData; } else { return; } @@ -1064,10 +1045,12 @@ IpIoListenHandlerDpc ( // goto CleanUp; } + if ((EFI_IP4 (RxData->Ip4RxData.Header->SourceAddress) != 0) && (IpIo->SubnetMask != 0) && - IP4_NET_EQUAL (IpIo->StationIp, EFI_NTOHL (((EFI_IP4_RECEIVE_DATA *) RxData)->Header->SourceAddress), IpIo->SubnetMask) && - !NetIp4IsUnicast (EFI_NTOHL (((EFI_IP4_RECEIVE_DATA *) RxData)->Header->SourceAddress), IpIo->SubnetMask)) { + IP4_NET_EQUAL (IpIo->StationIp, EFI_NTOHL (((EFI_IP4_RECEIVE_DATA *)RxData)->Header->SourceAddress), IpIo->SubnetMask) && + !NetIp4IsUnicast (EFI_NTOHL (((EFI_IP4_RECEIVE_DATA *)RxData)->Header->SourceAddress), IpIo->SubnetMask)) + { // // The source address doesn't match StationIp and it's not a unicast IP address, discard it. // @@ -1090,7 +1073,7 @@ IpIoListenHandlerDpc ( // Create a netbuffer representing IPv4 packet // Pkt = NetbufFromExt ( - (NET_FRAGMENT *) RxData->Ip4RxData.FragmentTable, + (NET_FRAGMENT *)RxData->Ip4RxData.FragmentTable, RxData->Ip4RxData.FragmentCount, 0, 0, @@ -1111,7 +1094,7 @@ IpIoListenHandlerDpc ( Session.IpVersion = IP_VERSION_4; } else { ASSERT (RxData->Ip6RxData.Header != NULL); - if (!NetIp6IsValidUnicast(&RxData->Ip6RxData.Header->SourceAddress)) { + if (!NetIp6IsValidUnicast (&RxData->Ip6RxData.Header->SourceAddress)) { goto CleanUp; } @@ -1131,7 +1114,7 @@ IpIoListenHandlerDpc ( // Create a netbuffer representing IPv6 packet // Pkt = NetbufFromExt ( - (NET_FRAGMENT *) RxData->Ip6RxData.FragmentTable, + (NET_FRAGMENT *)RxData->Ip6RxData.FragmentTable, RxData->Ip6RxData.FragmentCount, 0, 0, @@ -1148,12 +1131,12 @@ IpIoListenHandlerDpc ( CopyMem ( &Session.Source, &RxData->Ip6RxData.Header->SourceAddress, - sizeof(EFI_IPv6_ADDRESS) + sizeof (EFI_IPv6_ADDRESS) ); CopyMem ( &Session.Dest, &RxData->Ip6RxData.Header->DestinationAddress, - sizeof(EFI_IPv6_ADDRESS) + sizeof (EFI_IPv6_ADDRESS) ); Session.IpHdr.Ip6Hdr = RxData->Ip6RxData.Header; Session.IpHdrLen = RxData->Ip6RxData.HeaderLength; @@ -1161,7 +1144,6 @@ IpIoListenHandlerDpc ( } if (EFI_SUCCESS == Status) { - IpIo->PktRcvdNotify (EFI_SUCCESS, 0, &Session, Pkt, IpIo->RcvdContext); } else { // @@ -1177,7 +1159,7 @@ IpIoListenHandlerDpc ( CleanUp: - if (IpIo->IpVersion == IP_VERSION_4){ + if (IpIo->IpVersion == IP_VERSION_4) { gBS->SignalEvent (RxData->Ip4RxData.RecycleSignal); } else { gBS->SignalEvent (RxData->Ip6RxData.RecycleSignal); @@ -1185,7 +1167,7 @@ CleanUp: Resume: - if (IpIo->IpVersion == IP_VERSION_4){ + if (IpIo->IpVersion == IP_VERSION_4) { IpIo->Ip.Ip4->Receive (IpIo->Ip.Ip4, &(IpIo->RcvToken.Ip4Token)); } else { IpIo->Ip.Ip6->Receive (IpIo->Ip.Ip6, &(IpIo->RcvToken.Ip6Token)); @@ -1202,8 +1184,8 @@ Resume: VOID EFIAPI IpIoListenHandler ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -1212,7 +1194,6 @@ IpIoListenHandler ( QueueDpc (TPL_CALLBACK, IpIoListenHandlerDpc, Context); } - /** Create a new IP_IO instance. @@ -1234,9 +1215,9 @@ IpIoListenHandler ( IP_IO * EFIAPI IpIoCreate ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN UINT8 IpVersion + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN UINT8 IpVersion ) { EFI_STATUS Status; @@ -1252,10 +1233,10 @@ IpIoCreate ( InitializeListHead (&(IpIo->PendingSndList)); InitializeListHead (&(IpIo->IpList)); - IpIo->Controller = Controller; - IpIo->Image = Image; - IpIo->IpVersion = IpVersion; - Event = NULL; + IpIo->Controller = Controller; + IpIo->Image = Image; + IpIo->IpVersion = IpVersion; + Event = NULL; Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, @@ -1282,7 +1263,7 @@ IpIoCreate ( Image, &IpIo->ChildHandle, IpVersion, - (VOID **) & (IpIo->Ip) + (VOID **)&(IpIo->Ip) ); if (EFI_ERROR (Status)) { goto ReleaseIpIo; @@ -1301,7 +1282,6 @@ ReleaseIpIo: return NULL; } - /** Open an IP_IO instance for use. @@ -1328,14 +1308,14 @@ ReleaseIpIo: EFI_STATUS EFIAPI IpIoOpen ( - IN OUT IP_IO *IpIo, - IN IP_IO_OPEN_DATA *OpenData + IN OUT IP_IO *IpIo, + IN IP_IO_OPEN_DATA *OpenData ) { - EFI_STATUS Status; - UINT8 IpVersion; + EFI_STATUS Status; + UINT8 IpVersion; - if (IpIo == NULL || OpenData == NULL) { + if ((IpIo == NULL) || (OpenData == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1350,7 +1330,7 @@ IpIoOpen ( // // configure ip // - if (IpVersion == IP_VERSION_4){ + if (IpVersion == IP_VERSION_4) { // // RawData mode is no supported. // @@ -1360,7 +1340,7 @@ IpIoOpen ( } if (!OpenData->IpConfigData.Ip4CfgData.UseDefaultAddress) { - IpIo->StationIp = EFI_NTOHL (OpenData->IpConfigData.Ip4CfgData.StationAddress); + IpIo->StationIp = EFI_NTOHL (OpenData->IpConfigData.Ip4CfgData.StationAddress); IpIo->SubnetMask = EFI_NTOHL (OpenData->IpConfigData.Ip4CfgData.SubnetMask); } @@ -1369,7 +1349,6 @@ IpIoOpen ( &OpenData->IpConfigData.Ip4CfgData ); } else { - Status = IpIo->Ip.Ip6->Configure ( IpIo->Ip.Ip6, &OpenData->IpConfigData.Ip6CfgData @@ -1385,7 +1364,7 @@ IpIoOpen ( // @bug (0.0.0.0, 0.0.0.0, 0.0.0.0). Delete this statement if Ip modified // @bug its code // - if (IpVersion == IP_VERSION_4){ + if (IpVersion == IP_VERSION_4) { Status = IpIo->Ip.Ip4->Routes ( IpIo->Ip.Ip4, TRUE, @@ -1402,10 +1381,10 @@ IpIoOpen ( IpIo->PktRcvdNotify = OpenData->PktRcvdNotify; IpIo->PktSentNotify = OpenData->PktSentNotify; - IpIo->RcvdContext = OpenData->RcvdContext; - IpIo->SndContext = OpenData->SndContext; + IpIo->RcvdContext = OpenData->RcvdContext; + IpIo->SndContext = OpenData->SndContext; - if (IpVersion == IP_VERSION_4){ + if (IpVersion == IP_VERSION_4) { IpIo->Protocol = OpenData->IpConfigData.Ip4CfgData.DefaultProtocol; // @@ -1419,14 +1398,12 @@ IpIoOpen ( IpIo->Ip.Ip4->Configure (IpIo->Ip.Ip4, NULL); return Status; } - } else { - IpIo->Protocol = OpenData->IpConfigData.Ip6CfgData.DefaultProtocol; - Status = IpIo->Ip.Ip6->Receive ( - IpIo->Ip.Ip6, - &(IpIo->RcvToken.Ip6Token) - ); + Status = IpIo->Ip.Ip6->Receive ( + IpIo->Ip.Ip6, + &(IpIo->RcvToken.Ip6Token) + ); if (EFI_ERROR (Status)) { IpIo->Ip.Ip6->Configure (IpIo->Ip.Ip6, NULL); return Status; @@ -1439,7 +1416,6 @@ IpIoOpen ( return Status; } - /** Stop an IP_IO instance. @@ -1458,12 +1434,12 @@ IpIoOpen ( EFI_STATUS EFIAPI IpIoStop ( - IN OUT IP_IO *IpIo + IN OUT IP_IO *IpIo ) { - EFI_STATUS Status; - IP_IO_IP_INFO *IpInfo; - UINT8 IpVersion; + EFI_STATUS Status; + IP_IO_IP_INFO *IpInfo; + UINT8 IpVersion; if (IpIo == NULL) { return EFI_INVALID_PARAMETER; @@ -1490,6 +1466,7 @@ IpIoStop ( } else { Status = IpIo->Ip.Ip6->Configure (IpIo->Ip.Ip6, NULL); } + if (EFI_ERROR (Status)) { return Status; } @@ -1514,7 +1491,7 @@ IpIoStop ( // // Close the receive event. // - if (IpVersion == IP_VERSION_4){ + if (IpVersion == IP_VERSION_4) { gBS->CloseEvent (IpIo->RcvToken.Ip4Token.Event); } else { gBS->CloseEvent (IpIo->RcvToken.Ip6Token.Event); @@ -1523,7 +1500,6 @@ IpIoStop ( return EFI_SUCCESS; } - /** Destroy an IP_IO instance. @@ -1540,10 +1516,10 @@ IpIoStop ( EFI_STATUS EFIAPI IpIoDestroy ( - IN OUT IP_IO *IpIo + IN OUT IP_IO *IpIo ) { - EFI_STATUS Status; + EFI_STATUS Status; // // Stop the IpIo. @@ -1571,7 +1547,6 @@ IpIoDestroy ( return EFI_SUCCESS; } - /** Send out an IP packet. @@ -1601,18 +1576,18 @@ IpIoDestroy ( EFI_STATUS EFIAPI IpIoSend ( - IN OUT IP_IO *IpIo, - IN OUT NET_BUF *Pkt, - IN IP_IO_IP_INFO *Sender OPTIONAL, - IN VOID *Context OPTIONAL, - IN VOID *NotifyData OPTIONAL, - IN EFI_IP_ADDRESS *Dest OPTIONAL, - IN IP_IO_OVERRIDE *OverrideData OPTIONAL + IN OUT IP_IO *IpIo, + IN OUT NET_BUF *Pkt, + IN IP_IO_IP_INFO *Sender OPTIONAL, + IN VOID *Context OPTIONAL, + IN VOID *NotifyData OPTIONAL, + IN EFI_IP_ADDRESS *Dest OPTIONAL, + IN IP_IO_OVERRIDE *OverrideData OPTIONAL ) { - EFI_STATUS Status; - IP_IO_IP_PROTOCOL Ip; - IP_IO_SEND_ENTRY *SndEntry; + EFI_STATUS Status; + IP_IO_IP_PROTOCOL Ip; + IP_IO_SEND_ENTRY *SndEntry; if ((IpIo == NULL) || (Pkt == NULL)) { return EFI_INVALID_PARAMETER; @@ -1639,7 +1614,7 @@ IpIoSend ( // // Send this Packet // - if (IpIo->IpVersion == IP_VERSION_4){ + if (IpIo->IpVersion == IP_VERSION_4) { Status = Ip.Ip4->Transmit ( Ip.Ip4, &SndEntry->SndToken.Ip4Token @@ -1658,7 +1633,6 @@ IpIoSend ( return Status; } - /** Cancel the IP transmit token which wraps this Packet. @@ -1676,18 +1650,16 @@ IpIoCancelTxToken ( IN VOID *Packet ) { - LIST_ENTRY *Node; - IP_IO_SEND_ENTRY *SndEntry; - IP_IO_IP_PROTOCOL Ip; + LIST_ENTRY *Node; + IP_IO_SEND_ENTRY *SndEntry; + IP_IO_IP_PROTOCOL Ip; ASSERT ((IpIo != NULL) && (Packet != NULL)); NET_LIST_FOR_EACH (Node, &IpIo->PendingSndList) { - SndEntry = NET_LIST_USER_STRUCT (Node, IP_IO_SEND_ENTRY, Entry); if (SndEntry->Pkt == Packet) { - Ip = SndEntry->Ip; if (IpIo->IpVersion == IP_VERSION_4) { @@ -1705,10 +1677,8 @@ IpIoCancelTxToken ( break; } } - } - /** Add a new IP instance for sending data. @@ -1763,7 +1733,7 @@ IpIoAddIp ( IpIo->Image, &IpInfo->ChildHandle, IpInfo->IpVersion, - (VOID **) &IpInfo->Ip + (VOID **)&IpInfo->Ip ); if (EFI_ERROR (Status)) { goto ReleaseIpInfo; @@ -1812,7 +1782,6 @@ ReleaseIpInfo: return NULL; } - /** Configure the IP instance of this IpInfo and start the receiving if IpConfigData is not NULL. @@ -1835,8 +1804,8 @@ ReleaseIpInfo: EFI_STATUS EFIAPI IpIoConfigIp ( - IN OUT IP_IO_IP_INFO *IpInfo, - IN OUT VOID *IpConfigData OPTIONAL + IN OUT IP_IO_IP_INFO *IpInfo, + IN OUT VOID *IpConfigData OPTIONAL ) { EFI_STATUS Status; @@ -1874,8 +1843,7 @@ IpIoConfigIp ( if (IpConfigData != NULL) { if (IpInfo->IpVersion == IP_VERSION_4) { - - if (((EFI_IP4_CONFIG_DATA *) IpConfigData)->UseDefaultAddress) { + if (((EFI_IP4_CONFIG_DATA *)IpConfigData)->UseDefaultAddress) { Status = Ip.Ip4->GetModeData ( Ip.Ip4, &Ip4ModeData, @@ -1887,18 +1855,18 @@ IpIoConfigIp ( return Status; } - IP4_COPY_ADDRESS (&((EFI_IP4_CONFIG_DATA*) IpConfigData)->StationAddress, &Ip4ModeData.ConfigData.StationAddress); - IP4_COPY_ADDRESS (&((EFI_IP4_CONFIG_DATA*) IpConfigData)->SubnetMask, &Ip4ModeData.ConfigData.SubnetMask); + IP4_COPY_ADDRESS (&((EFI_IP4_CONFIG_DATA *)IpConfigData)->StationAddress, &Ip4ModeData.ConfigData.StationAddress); + IP4_COPY_ADDRESS (&((EFI_IP4_CONFIG_DATA *)IpConfigData)->SubnetMask, &Ip4ModeData.ConfigData.SubnetMask); } CopyMem ( &IpInfo->Addr.Addr, - &((EFI_IP4_CONFIG_DATA *) IpConfigData)->StationAddress, + &((EFI_IP4_CONFIG_DATA *)IpConfigData)->StationAddress, sizeof (IP4_ADDR) ); CopyMem ( &IpInfo->PreMask.SubnetMask, - &((EFI_IP4_CONFIG_DATA *) IpConfigData)->SubnetMask, + &((EFI_IP4_CONFIG_DATA *)IpConfigData)->SubnetMask, sizeof (IP4_ADDR) ); @@ -1923,7 +1891,7 @@ IpIoConfigIp ( if (Ip6ModeData.IsConfigured) { CopyMem ( - &((EFI_IP6_CONFIG_DATA *) IpConfigData)->StationAddress, + &((EFI_IP6_CONFIG_DATA *)IpConfigData)->StationAddress, &Ip6ModeData.ConfigData.StationAddress, sizeof (EFI_IPv6_ADDRESS) ); @@ -1951,7 +1919,6 @@ IpIoConfigIp ( if (Ip6ModeData.IcmpTypeList != NULL) { FreePool (Ip6ModeData.IcmpTypeList); } - } else { Status = EFI_NO_MAPPING; return Status; @@ -1982,7 +1949,6 @@ IpIoConfigIp ( return Status; } - /** Destroy an IP instance maintained in IpIo->IpList for sending purpose. @@ -2000,14 +1966,13 @@ IpIoConfigIp ( VOID EFIAPI IpIoRemoveIp ( - IN IP_IO *IpIo, - IN IP_IO_IP_INFO *IpInfo + IN IP_IO *IpIo, + IN IP_IO_IP_INFO *IpInfo ) { + UINT8 IpVersion; - UINT8 IpVersion; - - if (IpIo == NULL || IpInfo == NULL) { + if ((IpIo == NULL) || (IpInfo == NULL)) { return; } @@ -2016,7 +1981,6 @@ IpIoRemoveIp ( NET_PUT_REF (IpInfo); if (IpInfo->RefCnt > 0) { - return; } @@ -2026,7 +1990,7 @@ IpIoRemoveIp ( RemoveEntryList (&IpInfo->Entry); - if (IpVersion == IP_VERSION_4){ + if (IpVersion == IP_VERSION_4) { IpInfo->Ip.Ip4->Configure ( IpInfo->Ip.Ip4, NULL @@ -2039,9 +2003,7 @@ IpIoRemoveIp ( ); gBS->CloseEvent (IpInfo->DummyRcvToken.Ip4Token.Event); - } else { - IpInfo->Ip.Ip6->Configure ( IpInfo->Ip.Ip6, NULL @@ -2060,7 +2022,6 @@ IpIoRemoveIp ( FreePool (IpInfo); } - /** Find the first IP protocol maintained in IpIo whose local address is the same as Src. @@ -2085,12 +2046,12 @@ IpIoFindSender ( IN EFI_IP_ADDRESS *Src ) { - LIST_ENTRY *IpIoEntry; - IP_IO *IpIoPtr; - LIST_ENTRY *IpInfoEntry; - IP_IO_IP_INFO *IpInfo; + LIST_ENTRY *IpIoEntry; + IP_IO *IpIoPtr; + LIST_ENTRY *IpInfoEntry; + IP_IO_IP_INFO *IpInfo; - if (IpIo == NULL || Src == NULL) { + if ((IpIo == NULL) || (Src == NULL)) { return NULL; } @@ -2107,15 +2068,12 @@ IpIoFindSender ( NET_LIST_FOR_EACH (IpInfoEntry, &IpIoPtr->IpList) { IpInfo = NET_LIST_USER_STRUCT (IpInfoEntry, IP_IO_IP_INFO, Entry); - if (IpInfo->IpVersion == IP_VERSION_4){ - + if (IpInfo->IpVersion == IP_VERSION_4) { if (EFI_IP4_EQUAL (&IpInfo->Addr.v4, &Src->v4)) { *IpIo = IpIoPtr; return IpInfo; } - } else { - if (EFI_IP6_EQUAL (&IpInfo->Addr.v6, &Src->v6)) { *IpIo = IpIoPtr; return IpInfo; @@ -2130,7 +2088,6 @@ IpIoFindSender ( return NULL; } - /** Get the ICMP error map information. @@ -2150,10 +2107,10 @@ IpIoFindSender ( EFI_STATUS EFIAPI IpIoGetIcmpErrStatus ( - IN UINT8 IcmpError, - IN UINT8 IpVersion, - OUT BOOLEAN *IsHard OPTIONAL, - OUT BOOLEAN *Notify OPTIONAL + IN UINT8 IcmpError, + IN UINT8 IpVersion, + OUT BOOLEAN *IsHard OPTIONAL, + OUT BOOLEAN *Notify OPTIONAL ) { if (IpVersion == IP_VERSION_4 ) { @@ -2168,33 +2125,31 @@ IpIoGetIcmpErrStatus ( } switch (IcmpError) { - case ICMP_ERR_UNREACH_NET: - return EFI_NETWORK_UNREACHABLE; + case ICMP_ERR_UNREACH_NET: + return EFI_NETWORK_UNREACHABLE; - case ICMP_ERR_TIMXCEED_INTRANS: - case ICMP_ERR_TIMXCEED_REASS: - case ICMP_ERR_UNREACH_HOST: - return EFI_HOST_UNREACHABLE; + case ICMP_ERR_TIMXCEED_INTRANS: + case ICMP_ERR_TIMXCEED_REASS: + case ICMP_ERR_UNREACH_HOST: + return EFI_HOST_UNREACHABLE; - case ICMP_ERR_UNREACH_PROTOCOL: - return EFI_PROTOCOL_UNREACHABLE; + case ICMP_ERR_UNREACH_PROTOCOL: + return EFI_PROTOCOL_UNREACHABLE; - case ICMP_ERR_UNREACH_PORT: - return EFI_PORT_UNREACHABLE; + case ICMP_ERR_UNREACH_PORT: + return EFI_PORT_UNREACHABLE; - case ICMP_ERR_MSGSIZE: - case ICMP_ERR_UNREACH_SRCFAIL: - case ICMP_ERR_QUENCH: - case ICMP_ERR_PARAMPROB: - return EFI_ICMP_ERROR; + case ICMP_ERR_MSGSIZE: + case ICMP_ERR_UNREACH_SRCFAIL: + case ICMP_ERR_QUENCH: + case ICMP_ERR_PARAMPROB: + return EFI_ICMP_ERROR; - default: - ASSERT (FALSE); - return EFI_UNSUPPORTED; + default: + ASSERT (FALSE); + return EFI_UNSUPPORTED; } - } else if (IpVersion == IP_VERSION_6) { - ASSERT (IcmpError <= ICMP6_ERR_PARAMPROB_IPV6OPTION); if (IsHard != NULL) { @@ -2206,31 +2161,30 @@ IpIoGetIcmpErrStatus ( } switch (IcmpError) { - case ICMP6_ERR_UNREACH_NET: - return EFI_NETWORK_UNREACHABLE; + case ICMP6_ERR_UNREACH_NET: + return EFI_NETWORK_UNREACHABLE; - case ICMP6_ERR_UNREACH_HOST: - case ICMP6_ERR_TIMXCEED_HOPLIMIT: - case ICMP6_ERR_TIMXCEED_REASS: - return EFI_HOST_UNREACHABLE; + case ICMP6_ERR_UNREACH_HOST: + case ICMP6_ERR_TIMXCEED_HOPLIMIT: + case ICMP6_ERR_TIMXCEED_REASS: + return EFI_HOST_UNREACHABLE; - case ICMP6_ERR_UNREACH_PROTOCOL: - return EFI_PROTOCOL_UNREACHABLE; + case ICMP6_ERR_UNREACH_PROTOCOL: + return EFI_PROTOCOL_UNREACHABLE; - case ICMP6_ERR_UNREACH_PORT: - return EFI_PORT_UNREACHABLE; + case ICMP6_ERR_UNREACH_PORT: + return EFI_PORT_UNREACHABLE; - case ICMP6_ERR_PACKAGE_TOOBIG: - case ICMP6_ERR_PARAMPROB_HEADER: - case ICMP6_ERR_PARAMPROB_NEXHEADER: - case ICMP6_ERR_PARAMPROB_IPV6OPTION: - return EFI_ICMP_ERROR; + case ICMP6_ERR_PACKAGE_TOOBIG: + case ICMP6_ERR_PARAMPROB_HEADER: + case ICMP6_ERR_PARAMPROB_NEXHEADER: + case ICMP6_ERR_PARAMPROB_IPV6OPTION: + return EFI_ICMP_ERROR; - default: - ASSERT (FALSE); - return EFI_UNSUPPORTED; + default: + ASSERT (FALSE); + return EFI_UNSUPPORTED; } - } else { // // Should never be here @@ -2240,7 +2194,6 @@ IpIoGetIcmpErrStatus ( } } - /** Refresh the remote peer's Neighbor Cache entries. @@ -2288,4 +2241,3 @@ IpIoRefreshNeighbor ( return Ip->Neighbors (Ip, FALSE, &Neighbor->v6, NULL, Timeout, TRUE); } - diff --git a/NetworkPkg/Library/DxeNetLib/DxeNetLib.c b/NetworkPkg/Library/DxeNetLib/DxeNetLib.c index 41e8b30e36..fd4a9e15a8 100644 --- a/NetworkPkg/Library/DxeNetLib/DxeNetLib.c +++ b/NetworkPkg/Library/DxeNetLib/DxeNetLib.c @@ -32,8 +32,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include -#define NIC_ITEM_CONFIG_SIZE (sizeof (NIC_IP4_CONFIG_INFO) + sizeof (EFI_IP4_ROUTE_TABLE) * MAX_IP4_CONFIG_IN_VARIABLE) -#define DEFAULT_ZERO_START ((UINTN) ~0) +#define NIC_ITEM_CONFIG_SIZE (sizeof (NIC_IP4_CONFIG_INFO) + sizeof (EFI_IP4_ROUTE_TABLE) * MAX_IP4_CONFIG_IN_VARIABLE) +#define DEFAULT_ZERO_START ((UINTN) ~0) // // All the supported IP4 masks in host byte order. @@ -77,25 +77,27 @@ GLOBAL_REMOVE_IF_UNREFERENCED IP4_ADDR gIp4AllMasks[IP4_MASK_NUM] = { 0xFFFFFFFF, }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_IPv4_ADDRESS mZeroIp4Addr = {{0, 0, 0, 0}}; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_IPv4_ADDRESS mZeroIp4Addr = { + { 0, 0, 0, 0 } +}; // // Any error level digitally larger than mNetDebugLevelMax // will be silently discarded. // -GLOBAL_REMOVE_IF_UNREFERENCED UINTN mNetDebugLevelMax = NETDEBUG_LEVEL_ERROR; -GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogPacketSeq = 0xDEADBEEF; +GLOBAL_REMOVE_IF_UNREFERENCED UINTN mNetDebugLevelMax = NETDEBUG_LEVEL_ERROR; +GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogPacketSeq = 0xDEADBEEF; // // You can change mSyslogDstMac mSyslogDstIp and mSyslogSrcIp // here to direct the syslog packets to the syslog deamon. The // default is broadcast to both the ethernet and IP. // -GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mSyslogDstMac[NET_ETHER_ADDR_LEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; -GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogDstIp = 0xffffffff; -GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogSrcIp = 0; +GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mSyslogDstMac[NET_ETHER_ADDR_LEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogDstIp = 0xffffffff; +GLOBAL_REMOVE_IF_UNREFERENCED UINT32 mSyslogSrcIp = 0; -GLOBAL_REMOVE_IF_UNREFERENCED CHAR8 *mMonthName[] = { +GLOBAL_REMOVE_IF_UNREFERENCED CHAR8 *mMonthName[] = { "Jan", "Feb", "Mar", @@ -113,13 +115,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED CHAR8 *mMonthName[] = { // // VLAN device path node template // -GLOBAL_REMOVE_IF_UNREFERENCED VLAN_DEVICE_PATH mNetVlanDevicePathTemplate = { +GLOBAL_REMOVE_IF_UNREFERENCED VLAN_DEVICE_PATH mNetVlanDevicePathTemplate = { { MESSAGING_DEVICE_PATH, MSG_VLAN_DP, { - (UINT8) (sizeof (VLAN_DEVICE_PATH)), - (UINT8) ((sizeof (VLAN_DEVICE_PATH)) >> 8) + (UINT8)(sizeof (VLAN_DEVICE_PATH)), + (UINT8)((sizeof (VLAN_DEVICE_PATH)) >> 8) } }, 0 @@ -138,11 +140,11 @@ SyslogLocateSnp ( VOID ) { - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - EFI_STATUS Status; - EFI_HANDLE *Handles; - UINTN HandleCount; - UINTN Index; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_STATUS Status; + EFI_HANDLE *Handles; + UINTN HandleCount; + UINTN Index; // // Locate the handles which has SNP installed. @@ -169,13 +171,13 @@ SyslogLocateSnp ( Status = gBS->HandleProtocol ( Handles[Index], &gEfiSimpleNetworkProtocolGuid, - (VOID **) &Snp + (VOID **)&Snp ); if ((Status == EFI_SUCCESS) && (Snp != NULL) && (Snp->Mode->IfType == NET_IFTYPE_ETHERNET) && - (Snp->Mode->MaxPacketSize >= NET_SYSLOG_PACKET_LEN)) { - + (Snp->Mode->MaxPacketSize >= NET_SYSLOG_PACKET_LEN)) + { break; } @@ -204,15 +206,15 @@ SyslogLocateSnp ( **/ EFI_STATUS SyslogSendPacket ( - IN CHAR8 *Packet, - IN UINT32 Length + IN CHAR8 *Packet, + IN UINT32 Length ) { - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - ETHER_HEAD *Ether; - EFI_STATUS Status; - EFI_EVENT TimeoutEvent; - UINT8 *TxBuf; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + ETHER_HEAD *Ether; + EFI_STATUS Status; + EFI_EVENT TimeoutEvent; + UINT8 *TxBuf; ASSERT (Packet != NULL); @@ -222,7 +224,7 @@ SyslogSendPacket ( return EFI_DEVICE_ERROR; } - Ether = (ETHER_HEAD *) Packet; + Ether = (ETHER_HEAD *)Packet; CopyMem (Ether->SrcMac, Snp->Mode->CurrentAddress.Addr, NET_ETHER_ADDR_LEN); // @@ -246,7 +248,7 @@ SyslogSendPacket ( goto ON_EXIT; } - for (;;) { + for ( ; ;) { // // Transmit the packet through SNP. // @@ -268,13 +270,12 @@ SyslogSendPacket ( // // Get the recycled transmit buffer status. // - Snp->GetStatus (Snp, NULL, (VOID **) &TxBuf); + Snp->GetStatus (Snp, NULL, (VOID **)&TxBuf); if (!EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) { Status = EFI_TIMEOUT; break; } - } while (TxBuf == NULL); if ((Status == EFI_SUCCESS) || (Status == EFI_TIMEOUT)) { @@ -312,71 +313,71 @@ ON_EXIT: **/ UINT32 SyslogBuildPacket ( - IN UINT32 Level, - IN UINT8 *Module, - IN UINT8 *File, - IN UINT32 Line, - IN UINT8 *Message, - IN UINT32 BufLen, - OUT CHAR8 *Buf + IN UINT32 Level, + IN UINT8 *Module, + IN UINT8 *File, + IN UINT32 Line, + IN UINT8 *Message, + IN UINT32 BufLen, + OUT CHAR8 *Buf ) { - EFI_STATUS Status; - ETHER_HEAD *Ether; - IP4_HEAD *Ip4; - EFI_UDP_HEADER *Udp4; - EFI_TIME Time; - UINT32 Pri; - UINT32 Len; + EFI_STATUS Status; + ETHER_HEAD *Ether; + IP4_HEAD *Ip4; + EFI_UDP_HEADER *Udp4; + EFI_TIME Time; + UINT32 Pri; + UINT32 Len; // // Fill in the Ethernet header. Leave alone the source MAC. // SyslogSendPacket will fill in the address for us. // - Ether = (ETHER_HEAD *) Buf; + Ether = (ETHER_HEAD *)Buf; CopyMem (Ether->DstMac, mSyslogDstMac, NET_ETHER_ADDR_LEN); ZeroMem (Ether->SrcMac, NET_ETHER_ADDR_LEN); Ether->EtherType = HTONS (0x0800); // IPv4 protocol - Buf += sizeof (ETHER_HEAD); - BufLen -= sizeof (ETHER_HEAD); + Buf += sizeof (ETHER_HEAD); + BufLen -= sizeof (ETHER_HEAD); // // Fill in the IP header // - Ip4 = (IP4_HEAD *) Buf; - Ip4->HeadLen = 5; - Ip4->Ver = 4; - Ip4->Tos = 0; - Ip4->TotalLen = 0; - Ip4->Id = (UINT16) mSyslogPacketSeq; - Ip4->Fragment = 0; - Ip4->Ttl = 16; - Ip4->Protocol = 0x11; - Ip4->Checksum = 0; - Ip4->Src = mSyslogSrcIp; - Ip4->Dst = mSyslogDstIp; + Ip4 = (IP4_HEAD *)Buf; + Ip4->HeadLen = 5; + Ip4->Ver = 4; + Ip4->Tos = 0; + Ip4->TotalLen = 0; + Ip4->Id = (UINT16)mSyslogPacketSeq; + Ip4->Fragment = 0; + Ip4->Ttl = 16; + Ip4->Protocol = 0x11; + Ip4->Checksum = 0; + Ip4->Src = mSyslogSrcIp; + Ip4->Dst = mSyslogDstIp; - Buf += sizeof (IP4_HEAD); - BufLen -= sizeof (IP4_HEAD); + Buf += sizeof (IP4_HEAD); + BufLen -= sizeof (IP4_HEAD); // // Fill in the UDP header, Udp checksum is optional. Leave it zero. // - Udp4 = (EFI_UDP_HEADER *) Buf; - Udp4->SrcPort = HTONS (514); - Udp4->DstPort = HTONS (514); - Udp4->Length = 0; - Udp4->Checksum = 0; + Udp4 = (EFI_UDP_HEADER *)Buf; + Udp4->SrcPort = HTONS (514); + Udp4->DstPort = HTONS (514); + Udp4->Length = 0; + Udp4->Checksum = 0; - Buf += sizeof (EFI_UDP_HEADER); - BufLen -= sizeof (EFI_UDP_HEADER); + Buf += sizeof (EFI_UDP_HEADER); + BufLen -= sizeof (EFI_UDP_HEADER); // // Build the syslog message body with Timestamp machine module Message // - Pri = ((NET_SYSLOG_FACILITY & 31) << 3) | (Level & 7); + Pri = ((NET_SYSLOG_FACILITY & 31) << 3) | (Level & 7); Status = gRT->GetTime (&Time, NULL); if (EFI_ERROR (Status)) { return 0; @@ -386,38 +387,38 @@ SyslogBuildPacket ( // Use %a to format the ASCII strings, %s to format UNICODE strings // Len = 0; - Len += (UINT32) AsciiSPrint ( - Buf, - BufLen, - "<%d> %a %d %d:%d:%d ", - Pri, - mMonthName [Time.Month-1], - Time.Day, - Time.Hour, - Time.Minute, - Time.Second - ); + Len += (UINT32)AsciiSPrint ( + Buf, + BufLen, + "<%d> %a %d %d:%d:%d ", + Pri, + mMonthName[Time.Month-1], + Time.Day, + Time.Hour, + Time.Minute, + Time.Second + ); - Len += (UINT32) AsciiSPrint ( - Buf + Len, - BufLen - Len, - "Tiano %a: %a (Line: %d File: %a)", - Module, - Message, - Line, - File - ); - Len ++; + Len += (UINT32)AsciiSPrint ( + Buf + Len, + BufLen - Len, + "Tiano %a: %a (Line: %d File: %a)", + Module, + Message, + Line, + File + ); + Len++; // // OK, patch the IP length/checksum and UDP length fields. // - Len += sizeof (EFI_UDP_HEADER); - Udp4->Length = HTONS ((UINT16) Len); + Len += sizeof (EFI_UDP_HEADER); + Udp4->Length = HTONS ((UINT16)Len); - Len += sizeof (IP4_HEAD); - Ip4->TotalLen = HTONS ((UINT16) Len); - Ip4->Checksum = (UINT16) (~NetblockChecksum ((UINT8 *) Ip4, sizeof (IP4_HEAD))); + Len += sizeof (IP4_HEAD); + Ip4->TotalLen = HTONS ((UINT16)Len); + Ip4->Checksum = (UINT16)(~NetblockChecksum ((UINT8 *)Ip4, sizeof (IP4_HEAD))); return Len + sizeof (ETHER_HEAD); } @@ -451,16 +452,16 @@ SyslogBuildPacket ( CHAR8 * EFIAPI NetDebugASPrint ( - IN CHAR8 *Format, + IN CHAR8 *Format, ... ) { - VA_LIST Marker; - CHAR8 *Buf; + VA_LIST Marker; + CHAR8 *Buf; ASSERT (Format != NULL); - Buf = (CHAR8 *) AllocatePool (NET_DEBUG_MSG_LEN); + Buf = (CHAR8 *)AllocatePool (NET_DEBUG_MSG_LEN); if (Buf == NULL) { return NULL; @@ -494,21 +495,21 @@ NetDebugASPrint ( EFI_STATUS EFIAPI NetDebugOutput ( - IN UINT32 Level, - IN UINT8 *Module, - IN UINT8 *File, - IN UINT32 Line, - IN UINT8 *Message + IN UINT32 Level, + IN UINT8 *Module, + IN UINT8 *File, + IN UINT32 Line, + IN UINT8 *Message ) { - CHAR8 *Packet; - UINT32 Len; - EFI_STATUS Status; + CHAR8 *Packet; + UINT32 Len; + EFI_STATUS Status; // // Check whether the message should be sent out // - if (Message == NULL || File == NULL || Module == NULL) { + if ((Message == NULL) || (File == NULL) || (Module == NULL)) { return EFI_INVALID_PARAMETER; } @@ -522,7 +523,7 @@ NetDebugOutput ( // that the message plus the ethernet/ip/udp header is shorter // than this // - Packet = (CHAR8 *) AllocatePool (NET_SYSLOG_PACKET_LEN); + Packet = (CHAR8 *)AllocatePool (NET_SYSLOG_PACKET_LEN); if (Packet == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -554,6 +555,7 @@ ON_EXIT: FreePool (Message); return Status; } + /** Return the length of the mask. @@ -569,10 +571,10 @@ ON_EXIT: INTN EFIAPI NetGetMaskLength ( - IN IP4_ADDR NetMask + IN IP4_ADDR NetMask ) { - INTN Index; + INTN Index; for (Index = 0; Index <= IP4_MASK_MAX; Index++) { if (NetMask == gIp4AllMasks[Index]) { @@ -583,8 +585,6 @@ NetGetMaskLength ( return Index; } - - /** Return the class of the IP address, such as class A, B, C. Addr is in host byte order. @@ -614,32 +614,26 @@ NetGetMaskLength ( INTN EFIAPI NetGetIpClass ( - IN IP4_ADDR Addr + IN IP4_ADDR Addr ) { - UINT8 ByteOne; + UINT8 ByteOne; - ByteOne = (UINT8) (Addr >> 24); + ByteOne = (UINT8)(Addr >> 24); if ((ByteOne & 0x80) == 0) { return IP4_ADDR_CLASSA; - } else if ((ByteOne & 0xC0) == 0x80) { return IP4_ADDR_CLASSB; - } else if ((ByteOne & 0xE0) == 0xC0) { return IP4_ADDR_CLASSC; - } else if ((ByteOne & 0xF0) == 0xE0) { return IP4_ADDR_CLASSD; - } else { return IP4_ADDR_CLASSE; - } } - /** Check whether the IP is a valid unicast address according to the netmask. @@ -660,15 +654,15 @@ NetGetIpClass ( BOOLEAN EFIAPI NetIp4IsUnicast ( - IN IP4_ADDR Ip, - IN IP4_ADDR NetMask + IN IP4_ADDR Ip, + IN IP4_ADDR NetMask ) { - INTN MaskLength; + INTN MaskLength; ASSERT (NetMask != 0); - if (Ip == 0 || IP4_IS_LOCAL_BROADCAST (Ip)) { + if ((Ip == 0) || IP4_IS_LOCAL_BROADCAST (Ip)) { return FALSE; } @@ -702,11 +696,11 @@ NetIp4IsUnicast ( BOOLEAN EFIAPI NetIp6IsValidUnicast ( - IN EFI_IPv6_ADDRESS *Ip6 + IN EFI_IPv6_ADDRESS *Ip6 ) { - UINT8 Byte; - UINT8 Index; + UINT8 Byte; + UINT8 Index; ASSERT (Ip6 != NULL); @@ -722,7 +716,7 @@ NetIp6IsValidUnicast ( Byte = Ip6->Addr[Index]; - if (Byte == 0x0 || Byte == 0x1) { + if ((Byte == 0x0) || (Byte == 0x1)) { return FALSE; } @@ -743,10 +737,10 @@ NetIp6IsValidUnicast ( BOOLEAN EFIAPI NetIp6IsUnspecifiedAddr ( - IN EFI_IPv6_ADDRESS *Ip6 + IN EFI_IPv6_ADDRESS *Ip6 ) { - UINT8 Index; + UINT8 Index; ASSERT (Ip6 != NULL); @@ -773,10 +767,10 @@ NetIp6IsUnspecifiedAddr ( BOOLEAN EFIAPI NetIp6IsLinkLocalAddr ( - IN EFI_IPv6_ADDRESS *Ip6 + IN EFI_IPv6_ADDRESS *Ip6 ) { - UINT8 Index; + UINT8 Index; ASSERT (Ip6 != NULL); @@ -814,14 +808,14 @@ NetIp6IsLinkLocalAddr ( BOOLEAN EFIAPI NetIp6IsNetEqual ( - EFI_IPv6_ADDRESS *Ip1, - EFI_IPv6_ADDRESS *Ip2, - UINT8 PrefixLength + EFI_IPv6_ADDRESS *Ip1, + EFI_IPv6_ADDRESS *Ip2, + UINT8 PrefixLength ) { - UINT8 Byte; - UINT8 Bit; - UINT8 Mask; + UINT8 Byte; + UINT8 Bit; + UINT8 Mask; ASSERT ((Ip1 != NULL) && (Ip2 != NULL) && (PrefixLength < IP6_PREFIX_MAX)); @@ -829,20 +823,21 @@ NetIp6IsNetEqual ( return TRUE; } - Byte = (UINT8) (PrefixLength / 8); - Bit = (UINT8) (PrefixLength % 8); + Byte = (UINT8)(PrefixLength / 8); + Bit = (UINT8)(PrefixLength % 8); if (CompareMem (Ip1, Ip2, Byte) != 0) { return FALSE; } if (Bit > 0) { - Mask = (UINT8) (0xFF << (8 - Bit)); + Mask = (UINT8)(0xFF << (8 - Bit)); ASSERT (Byte < 16); if (Byte >= 16) { return FALSE; } + if ((Ip1->Addr[Byte] & Mask) != (Ip2->Addr[Byte] & Mask)) { return FALSE; } @@ -851,7 +846,6 @@ NetIp6IsNetEqual ( return TRUE; } - /** Switches the endianess of an IPv6 address @@ -869,11 +863,11 @@ NetIp6IsNetEqual ( EFI_IPv6_ADDRESS * EFIAPI Ip6Swap128 ( - EFI_IPv6_ADDRESS *Ip6 + EFI_IPv6_ADDRESS *Ip6 ) { - UINT64 High; - UINT64 Low; + UINT64 High; + UINT64 Low; ASSERT (Ip6 != NULL); @@ -905,22 +899,21 @@ NetRandomInitSeed ( VOID ) { - EFI_TIME Time; - UINT32 Seed; - UINT64 MonotonicCount; + EFI_TIME Time; + UINT32 Seed; + UINT64 MonotonicCount; gRT->GetTime (&Time, NULL); - Seed = (Time.Hour << 24 | Time.Day << 16 | Time.Minute << 8 | Time.Second); + Seed = (Time.Hour << 24 | Time.Day << 16 | Time.Minute << 8 | Time.Second); Seed ^= Time.Nanosecond; Seed ^= Time.Year << 7; gBS->GetNextMonotonicCount (&MonotonicCount); - Seed += (UINT32) MonotonicCount; + Seed += (UINT32)MonotonicCount; return Seed; } - /** Extract a UINT32 from a byte stream. @@ -937,10 +930,10 @@ NetRandomInitSeed ( UINT32 EFIAPI NetGetUint32 ( - IN UINT8 *Buf + IN UINT8 *Buf ) { - UINT32 Value; + UINT32 Value; ASSERT (Buf != NULL); @@ -948,7 +941,6 @@ NetGetUint32 ( return NTOHL (Value); } - /** Put a UINT32 to the byte stream in network byte order. @@ -964,8 +956,8 @@ NetGetUint32 ( VOID EFIAPI NetPutUint32 ( - IN OUT UINT8 *Buf, - IN UINT32 Data + IN OUT UINT8 *Buf, + IN UINT32 Data ) { ASSERT (Buf != NULL); @@ -974,7 +966,6 @@ NetPutUint32 ( CopyMem (Buf, &Data, sizeof (UINT32)); } - /** Remove the first node entry on the list, and return the removed node entry. @@ -996,10 +987,10 @@ NetPutUint32 ( LIST_ENTRY * EFIAPI NetListRemoveHead ( - IN OUT LIST_ENTRY *Head + IN OUT LIST_ENTRY *Head ) { - LIST_ENTRY *First; + LIST_ENTRY *First; ASSERT (Head != NULL); @@ -1007,19 +998,18 @@ NetListRemoveHead ( return NULL; } - First = Head->ForwardLink; - Head->ForwardLink = First->ForwardLink; - First->ForwardLink->BackLink = Head; + First = Head->ForwardLink; + Head->ForwardLink = First->ForwardLink; + First->ForwardLink->BackLink = Head; DEBUG_CODE ( - First->ForwardLink = (LIST_ENTRY *) NULL; - First->BackLink = (LIST_ENTRY *) NULL; - ); + First->ForwardLink = (LIST_ENTRY *)NULL; + First->BackLink = (LIST_ENTRY *)NULL; + ); return First; } - /** Remove the last node entry on the list and and return the removed node entry. @@ -1041,10 +1031,10 @@ NetListRemoveHead ( LIST_ENTRY * EFIAPI NetListRemoveTail ( - IN OUT LIST_ENTRY *Head + IN OUT LIST_ENTRY *Head ) { - LIST_ENTRY *Last; + LIST_ENTRY *Last; ASSERT (Head != NULL); @@ -1057,14 +1047,13 @@ NetListRemoveTail ( Last->BackLink->ForwardLink = Head; DEBUG_CODE ( - Last->ForwardLink = (LIST_ENTRY *) NULL; - Last->BackLink = (LIST_ENTRY *) NULL; - ); + Last->ForwardLink = (LIST_ENTRY *)NULL; + Last->BackLink = (LIST_ENTRY *)NULL; + ); return Last; } - /** Insert a new node entry after a designated node entry of a doubly linked list. @@ -1080,19 +1069,18 @@ NetListRemoveTail ( VOID EFIAPI NetListInsertAfter ( - IN OUT LIST_ENTRY *PrevEntry, - IN OUT LIST_ENTRY *NewEntry + IN OUT LIST_ENTRY *PrevEntry, + IN OUT LIST_ENTRY *NewEntry ) { ASSERT (PrevEntry != NULL && NewEntry != NULL); - NewEntry->BackLink = PrevEntry; - NewEntry->ForwardLink = PrevEntry->ForwardLink; - PrevEntry->ForwardLink->BackLink = NewEntry; - PrevEntry->ForwardLink = NewEntry; + NewEntry->BackLink = PrevEntry; + NewEntry->ForwardLink = PrevEntry->ForwardLink; + PrevEntry->ForwardLink->BackLink = NewEntry; + PrevEntry->ForwardLink = NewEntry; } - /** Insert a new node entry before a designated node entry of a doubly linked list. @@ -1108,16 +1096,16 @@ NetListInsertAfter ( VOID EFIAPI NetListInsertBefore ( - IN OUT LIST_ENTRY *PostEntry, - IN OUT LIST_ENTRY *NewEntry + IN OUT LIST_ENTRY *PostEntry, + IN OUT LIST_ENTRY *NewEntry ) { ASSERT (PostEntry != NULL && NewEntry != NULL); - NewEntry->ForwardLink = PostEntry; - NewEntry->BackLink = PostEntry->BackLink; - PostEntry->BackLink->ForwardLink = NewEntry; - PostEntry->BackLink = NewEntry; + NewEntry->ForwardLink = PostEntry; + NewEntry->BackLink = PostEntry->BackLink; + PostEntry->BackLink->ForwardLink = NewEntry; + PostEntry->BackLink = NewEntry; } /** @@ -1145,31 +1133,32 @@ NetListInsertBefore ( EFI_STATUS EFIAPI NetDestroyLinkList ( - IN LIST_ENTRY *List, - IN NET_DESTROY_LINK_LIST_CALLBACK CallBack, - IN VOID *Context OPTIONAL, - OUT UINTN *ListLength OPTIONAL + IN LIST_ENTRY *List, + IN NET_DESTROY_LINK_LIST_CALLBACK CallBack, + IN VOID *Context OPTIONAL, + OUT UINTN *ListLength OPTIONAL ) { - UINTN PreviousLength; - LIST_ENTRY *Entry; - LIST_ENTRY *Ptr; - UINTN Length; - EFI_STATUS Status; + UINTN PreviousLength; + LIST_ENTRY *Entry; + LIST_ENTRY *Ptr; + UINTN Length; + EFI_STATUS Status; - if (List == NULL || CallBack == NULL) { + if ((List == NULL) || (CallBack == NULL)) { return EFI_INVALID_PARAMETER; } Length = 0; do { PreviousLength = Length; - Entry = GetFirstNode (List); + Entry = GetFirstNode (List); while (!IsNull (List, Entry)) { Status = CallBack (Entry, Context); if (EFI_ERROR (Status)) { return Status; } + // // Walk through the list to see whether the Entry has been removed or not. // If the Entry still exists, just try to destroy the next one. @@ -1180,18 +1169,22 @@ NetDestroyLinkList ( break; } } + if (Ptr == Entry) { Entry = GetNextNode (List, Entry); } else { Entry = GetFirstNode (List); } } - for (Length = 0, Ptr = List->ForwardLink; Ptr != List; Length++, Ptr = Ptr->ForwardLink); + + for (Length = 0, Ptr = List->ForwardLink; Ptr != List; Length++, Ptr = Ptr->ForwardLink) { + } } while (Length != PreviousLength); if (ListLength != NULL) { *ListLength = Length; } + return EFI_SUCCESS; } @@ -1210,14 +1203,14 @@ NetDestroyLinkList ( BOOLEAN EFIAPI NetIsInHandleBuffer ( - IN EFI_HANDLE Handle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer OPTIONAL + IN EFI_HANDLE Handle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ) { - UINTN Index; + UINTN Index; - if (NumberOfChildren == 0 || ChildHandleBuffer == NULL) { + if ((NumberOfChildren == 0) || (ChildHandleBuffer == NULL)) { return FALSE; } @@ -1230,7 +1223,6 @@ NetIsInHandleBuffer ( return FALSE; } - /** Initialize the netmap. Netmap is a reposity to keep the pairs. @@ -1248,7 +1240,7 @@ NetIsInHandleBuffer ( VOID EFIAPI NetMapInit ( - IN OUT NET_MAP *Map + IN OUT NET_MAP *Map ) { ASSERT (Map != NULL); @@ -1258,7 +1250,6 @@ NetMapInit ( Map->Count = 0; } - /** To clean up the netmap, that is, release allocated memories. @@ -1274,12 +1265,12 @@ NetMapInit ( VOID EFIAPI NetMapClean ( - IN OUT NET_MAP *Map + IN OUT NET_MAP *Map ) { - NET_MAP_ITEM *Item; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; + NET_MAP_ITEM *Item; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; ASSERT (Map != NULL); @@ -1304,7 +1295,6 @@ NetMapClean ( ASSERT (IsListEmpty (&Map->Recycled)); } - /** Test whether the netmap is empty and return true if it is. @@ -1320,14 +1310,13 @@ NetMapClean ( BOOLEAN EFIAPI NetMapIsEmpty ( - IN NET_MAP *Map + IN NET_MAP *Map ) { ASSERT (Map != NULL); - return (BOOLEAN) (Map->Count == 0); + return (BOOLEAN)(Map->Count == 0); } - /** Return the number of the pairs in the netmap. @@ -1341,14 +1330,13 @@ NetMapIsEmpty ( UINTN EFIAPI NetMapGetCount ( - IN NET_MAP *Map + IN NET_MAP *Map ) { ASSERT (Map != NULL); return Map->Count; } - /** Return one allocated item. @@ -1367,12 +1355,12 @@ NetMapGetCount ( **/ NET_MAP_ITEM * NetMapAllocItem ( - IN OUT NET_MAP *Map + IN OUT NET_MAP *Map ) { - NET_MAP_ITEM *Item; - LIST_ENTRY *Head; - UINTN Index; + NET_MAP_ITEM *Item; + LIST_ENTRY *Head; + UINTN Index; ASSERT (Map != NULL); @@ -1400,7 +1388,6 @@ NetMapAllocItem ( return Item; } - /** Allocate an item to save the pair to the head of the netmap. @@ -1422,12 +1409,12 @@ NetMapAllocItem ( EFI_STATUS EFIAPI NetMapInsertHead ( - IN OUT NET_MAP *Map, - IN VOID *Key, - IN VOID *Value OPTIONAL + IN OUT NET_MAP *Map, + IN VOID *Key, + IN VOID *Value OPTIONAL ) { - NET_MAP_ITEM *Item; + NET_MAP_ITEM *Item; ASSERT (Map != NULL && Key != NULL); @@ -1445,7 +1432,6 @@ NetMapInsertHead ( return EFI_SUCCESS; } - /** Allocate an item to save the pair to the tail of the netmap. @@ -1467,12 +1453,12 @@ NetMapInsertHead ( EFI_STATUS EFIAPI NetMapInsertTail ( - IN OUT NET_MAP *Map, - IN VOID *Key, - IN VOID *Value OPTIONAL + IN OUT NET_MAP *Map, + IN VOID *Key, + IN VOID *Value OPTIONAL ) { - NET_MAP_ITEM *Item; + NET_MAP_ITEM *Item; ASSERT (Map != NULL && Key != NULL); @@ -1491,7 +1477,6 @@ NetMapInsertTail ( return EFI_SUCCESS; } - /** Check whether the item is in the Map and return TRUE if it is. @@ -1506,11 +1491,11 @@ NetMapInsertTail ( **/ BOOLEAN NetItemInMap ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item ) { - LIST_ENTRY *ListEntry; + LIST_ENTRY *ListEntry; ASSERT (Map != NULL && Item != NULL); @@ -1523,7 +1508,6 @@ NetItemInMap ( return FALSE; } - /** Find the key in the netmap and returns the point to the item contains the Key. @@ -1542,12 +1526,12 @@ NetItemInMap ( NET_MAP_ITEM * EFIAPI NetMapFindKey ( - IN NET_MAP *Map, - IN VOID *Key + IN NET_MAP *Map, + IN VOID *Key ) { - LIST_ENTRY *Entry; - NET_MAP_ITEM *Item; + LIST_ENTRY *Entry; + NET_MAP_ITEM *Item; ASSERT (Map != NULL && Key != NULL); @@ -1562,7 +1546,6 @@ NetMapFindKey ( return NULL; } - /** Remove the node entry of the item from the netmap and return the key of the removed item. @@ -1585,9 +1568,9 @@ NetMapFindKey ( VOID * EFIAPI NetMapRemoveItem ( - IN OUT NET_MAP *Map, - IN OUT NET_MAP_ITEM *Item, - OUT VOID **Value OPTIONAL + IN OUT NET_MAP *Map, + IN OUT NET_MAP_ITEM *Item, + OUT VOID **Value OPTIONAL ) { ASSERT ((Map != NULL) && (Item != NULL)); @@ -1604,7 +1587,6 @@ NetMapRemoveItem ( return Item->Key; } - /** Remove the first node entry on the netmap and return the key of the removed item. @@ -1625,8 +1607,8 @@ NetMapRemoveItem ( VOID * EFIAPI NetMapRemoveHead ( - IN OUT NET_MAP *Map, - OUT VOID **Value OPTIONAL + IN OUT NET_MAP *Map, + OUT VOID **Value OPTIONAL ) { NET_MAP_ITEM *Item; @@ -1649,7 +1631,6 @@ NetMapRemoveHead ( return Item->Key; } - /** Remove the last node entry on the netmap and return the key of the removed item. @@ -1670,11 +1651,11 @@ NetMapRemoveHead ( VOID * EFIAPI NetMapRemoveTail ( - IN OUT NET_MAP *Map, - OUT VOID **Value OPTIONAL + IN OUT NET_MAP *Map, + OUT VOID **Value OPTIONAL ) { - NET_MAP_ITEM *Item; + NET_MAP_ITEM *Item; // // Often, it indicates a programming error to remove @@ -1694,7 +1675,6 @@ NetMapRemoveTail ( return Item->Key; } - /** Iterate through the netmap and call CallBack for each item. @@ -1717,17 +1697,16 @@ NetMapRemoveTail ( EFI_STATUS EFIAPI NetMapIterate ( - IN NET_MAP *Map, - IN NET_MAP_CALLBACK CallBack, - IN VOID *Arg OPTIONAL + IN NET_MAP *Map, + IN NET_MAP_CALLBACK CallBack, + IN VOID *Arg OPTIONAL ) { - - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - LIST_ENTRY *Head; - NET_MAP_ITEM *Item; - EFI_STATUS Result; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + LIST_ENTRY *Head; + NET_MAP_ITEM *Item; + EFI_STATUS Result; ASSERT ((Map != NULL) && (CallBack != NULL)); @@ -1749,7 +1728,6 @@ NetMapIterate ( return EFI_SUCCESS; } - /** This is the default unload handle for all the network drivers. @@ -1765,17 +1743,17 @@ NetMapIterate ( EFI_STATUS EFIAPI NetLibDefaultUnload ( - IN EFI_HANDLE ImageHandle + IN EFI_HANDLE ImageHandle ) { - EFI_STATUS Status; - EFI_HANDLE *DeviceHandleBuffer; - UINTN DeviceHandleCount; - UINTN Index; - UINTN Index2; - EFI_DRIVER_BINDING_PROTOCOL *DriverBinding; - EFI_COMPONENT_NAME_PROTOCOL *ComponentName; - EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2; + EFI_STATUS Status; + EFI_HANDLE *DeviceHandleBuffer; + UINTN DeviceHandleCount; + UINTN Index; + UINTN Index2; + EFI_DRIVER_BINDING_PROTOCOL *DriverBinding; + EFI_COMPONENT_NAME_PROTOCOL *ComponentName; + EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2; // // Get the list of all the handles in the handle database. @@ -1798,7 +1776,7 @@ NetLibDefaultUnload ( Status = gBS->HandleProtocol ( DeviceHandleBuffer[Index], &gEfiDriverBindingProtocolGuid, - (VOID **) &DriverBinding + (VOID **)&DriverBinding ); if (EFI_ERROR (Status)) { continue; @@ -1824,15 +1802,15 @@ NetLibDefaultUnload ( // Uninstall all the protocols installed in the driver entry point // gBS->UninstallProtocolInterface ( - DriverBinding->DriverBindingHandle, - &gEfiDriverBindingProtocolGuid, - DriverBinding - ); + DriverBinding->DriverBindingHandle, + &gEfiDriverBindingProtocolGuid, + DriverBinding + ); Status = gBS->HandleProtocol ( DeviceHandleBuffer[Index], &gEfiComponentNameProtocolGuid, - (VOID **) &ComponentName + (VOID **)&ComponentName ); if (!EFI_ERROR (Status)) { gBS->UninstallProtocolInterface ( @@ -1845,7 +1823,7 @@ NetLibDefaultUnload ( Status = gBS->HandleProtocol ( DeviceHandleBuffer[Index], &gEfiComponentName2ProtocolGuid, - (VOID **) &ComponentName2 + (VOID **)&ComponentName2 ); if (!EFI_ERROR (Status)) { gBS->UninstallProtocolInterface ( @@ -1866,8 +1844,6 @@ NetLibDefaultUnload ( return EFI_SUCCESS; } - - /** Create a child of the service that is identified by ServiceBindingGuid. @@ -1888,16 +1864,15 @@ NetLibDefaultUnload ( EFI_STATUS EFIAPI NetLibCreateServiceChild ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE Image, - IN EFI_GUID *ServiceBindingGuid, - IN OUT EFI_HANDLE *ChildHandle + IN EFI_HANDLE Controller, + IN EFI_HANDLE Image, + IN EFI_GUID *ServiceBindingGuid, + IN OUT EFI_HANDLE *ChildHandle ) { EFI_STATUS Status; EFI_SERVICE_BINDING_PROTOCOL *Service; - ASSERT ((ServiceBindingGuid != NULL) && (ChildHandle != NULL)); // @@ -1906,7 +1881,7 @@ NetLibCreateServiceChild ( Status = gBS->OpenProtocol ( Controller, ServiceBindingGuid, - (VOID **) &Service, + (VOID **)&Service, Image, Controller, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1923,7 +1898,6 @@ NetLibCreateServiceChild ( return Status; } - /** Destroy a child of the service that is identified by ServiceBindingGuid. @@ -1943,10 +1917,10 @@ NetLibCreateServiceChild ( EFI_STATUS EFIAPI NetLibDestroyServiceChild ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE Image, - IN EFI_GUID *ServiceBindingGuid, - IN EFI_HANDLE ChildHandle + IN EFI_HANDLE Controller, + IN EFI_HANDLE Image, + IN EFI_GUID *ServiceBindingGuid, + IN EFI_HANDLE ChildHandle ) { EFI_STATUS Status; @@ -1960,7 +1934,7 @@ NetLibDestroyServiceChild ( Status = gBS->OpenProtocol ( Controller, ServiceBindingGuid, - (VOID **) &Service, + (VOID **)&Service, Image, Controller, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1996,8 +1970,8 @@ NetLibDestroyServiceChild ( EFI_HANDLE EFIAPI NetLibGetSnpHandle ( - IN EFI_HANDLE ServiceHandle, - OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL + IN EFI_HANDLE ServiceHandle, + OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL ) { EFI_STATUS Status; @@ -2009,11 +1983,12 @@ NetLibGetSnpHandle ( // Try to open SNP from ServiceHandle // SnpInstance = NULL; - Status = gBS->HandleProtocol (ServiceHandle, &gEfiSimpleNetworkProtocolGuid, (VOID **) &SnpInstance); + Status = gBS->HandleProtocol (ServiceHandle, &gEfiSimpleNetworkProtocolGuid, (VOID **)&SnpInstance); if (!EFI_ERROR (Status)) { if (Snp != NULL) { *Snp = SnpInstance; } + return ServiceHandle; } @@ -2026,7 +2001,7 @@ NetLibGetSnpHandle ( } SnpHandle = NULL; - Status = gBS->LocateDevicePath (&gEfiSimpleNetworkProtocolGuid, &DevicePath, &SnpHandle); + Status = gBS->LocateDevicePath (&gEfiSimpleNetworkProtocolGuid, &DevicePath, &SnpHandle); if (EFI_ERROR (Status)) { // // Failed to find SNP handle @@ -2034,11 +2009,12 @@ NetLibGetSnpHandle ( return NULL; } - Status = gBS->HandleProtocol (SnpHandle, &gEfiSimpleNetworkProtocolGuid, (VOID **) &SnpInstance); + Status = gBS->HandleProtocol (SnpHandle, &gEfiSimpleNetworkProtocolGuid, (VOID **)&SnpInstance); if (!EFI_ERROR (Status)) { if (Snp != NULL) { *Snp = SnpInstance; } + return SnpHandle; } @@ -2061,7 +2037,7 @@ NetLibGetSnpHandle ( UINT16 EFIAPI NetLibGetVlanId ( - IN EFI_HANDLE ServiceHandle + IN EFI_HANDLE ServiceHandle ) { EFI_DEVICE_PATH_PROTOCOL *DevicePath; @@ -2074,9 +2050,10 @@ NetLibGetVlanId ( Node = DevicePath; while (!IsDevicePathEnd (Node)) { - if (Node->Type == MESSAGING_DEVICE_PATH && Node->SubType == MSG_VLAN_DP) { - return ((VLAN_DEVICE_PATH *) Node)->VlanId; + if ((Node->Type == MESSAGING_DEVICE_PATH) && (Node->SubType == MSG_VLAN_DP)) { + return ((VLAN_DEVICE_PATH *)Node)->VlanId; } + Node = NextDevicePathNode (Node); } @@ -2100,8 +2077,8 @@ NetLibGetVlanId ( EFI_HANDLE EFIAPI NetLibGetVlanHandle ( - IN EFI_HANDLE ControllerHandle, - IN UINT16 VlanId + IN EFI_HANDLE ControllerHandle, + IN UINT16 VlanId ) { EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; @@ -2120,10 +2097,10 @@ NetLibGetVlanHandle ( // CopyMem (&VlanNode, &mNetVlanDevicePathTemplate, sizeof (VLAN_DEVICE_PATH)); VlanNode.VlanId = VlanId; - VlanDevicePath = AppendDevicePathNode ( - ParentDevicePath, - (EFI_DEVICE_PATH_PROTOCOL *) &VlanNode - ); + VlanDevicePath = AppendDevicePathNode ( + ParentDevicePath, + (EFI_DEVICE_PATH_PROTOCOL *)&VlanNode + ); if (VlanDevicePath == NULL) { return NULL; } @@ -2131,7 +2108,7 @@ NetLibGetVlanHandle ( // // Find VLAN device handle // - Handle = NULL; + Handle = NULL; DevicePath = VlanDevicePath; gBS->LocateDevicePath ( &gEfiDevicePathProtocolGuid, @@ -2171,19 +2148,19 @@ NetLibGetVlanHandle ( EFI_STATUS EFIAPI NetLibGetMacAddress ( - IN EFI_HANDLE ServiceHandle, - OUT EFI_MAC_ADDRESS *MacAddress, - OUT UINTN *AddressSize + IN EFI_HANDLE ServiceHandle, + OUT EFI_MAC_ADDRESS *MacAddress, + OUT UINTN *AddressSize ) { - EFI_STATUS Status; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - EFI_SIMPLE_NETWORK_MODE *SnpMode; - EFI_SIMPLE_NETWORK_MODE SnpModeData; - EFI_MANAGED_NETWORK_PROTOCOL *Mnp; - EFI_SERVICE_BINDING_PROTOCOL *MnpSb; - EFI_HANDLE SnpHandle; - EFI_HANDLE MnpChildHandle; + EFI_STATUS Status; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_SIMPLE_NETWORK_MODE *SnpMode; + EFI_SIMPLE_NETWORK_MODE SnpModeData; + EFI_MANAGED_NETWORK_PROTOCOL *Mnp; + EFI_SERVICE_BINDING_PROTOCOL *MnpSb; + EFI_HANDLE SnpHandle; + EFI_HANDLE MnpChildHandle; ASSERT (MacAddress != NULL); ASSERT (AddressSize != NULL); @@ -2191,7 +2168,7 @@ NetLibGetMacAddress ( // // Try to get SNP handle // - Snp = NULL; + Snp = NULL; SnpHandle = NetLibGetSnpHandle (ServiceHandle, &Snp); if (SnpHandle != NULL) { // @@ -2203,11 +2180,11 @@ NetLibGetMacAddress ( // Failed to get SNP handle, try to get MAC address from MNP // MnpChildHandle = NULL; - Status = gBS->HandleProtocol ( - ServiceHandle, - &gEfiManagedNetworkServiceBindingProtocolGuid, - (VOID **) &MnpSb - ); + Status = gBS->HandleProtocol ( + ServiceHandle, + &gEfiManagedNetworkServiceBindingProtocolGuid, + (VOID **)&MnpSb + ); if (EFI_ERROR (Status)) { return Status; } @@ -2226,7 +2203,7 @@ NetLibGetMacAddress ( Status = gBS->HandleProtocol ( MnpChildHandle, &gEfiManagedNetworkProtocolGuid, - (VOID **) &Mnp + (VOID **)&Mnp ); if (EFI_ERROR (Status)) { MnpSb->DestroyChild (MnpSb, MnpChildHandle); @@ -2241,6 +2218,7 @@ NetLibGetMacAddress ( MnpSb->DestroyChild (MnpSb, MnpChildHandle); return Status; } + SnpMode = &SnpModeData; // @@ -2282,19 +2260,19 @@ NetLibGetMacAddress ( EFI_STATUS EFIAPI NetLibGetMacString ( - IN EFI_HANDLE ServiceHandle, - IN EFI_HANDLE ImageHandle OPTIONAL, - OUT CHAR16 **MacString + IN EFI_HANDLE ServiceHandle, + IN EFI_HANDLE ImageHandle OPTIONAL, + OUT CHAR16 **MacString ) { - EFI_STATUS Status; - EFI_MAC_ADDRESS MacAddress; - UINT8 *HwAddress; - UINTN HwAddressSize; - UINT16 VlanId; - CHAR16 *String; - UINTN Index; - UINTN BufferSize; + EFI_STATUS Status; + EFI_MAC_ADDRESS MacAddress; + UINT8 *HwAddress; + UINTN HwAddressSize; + UINT16 VlanId; + CHAR16 *String; + UINTN Index; + UINTN BufferSize; ASSERT (MacString != NULL); @@ -2312,10 +2290,11 @@ NetLibGetMacString ( // Plus one unicode character for the null-terminator. // BufferSize = (2 * HwAddressSize + 5 + 1) * sizeof (CHAR16); - String = AllocateZeroPool (BufferSize); + String = AllocateZeroPool (BufferSize); if (String == NULL) { return EFI_OUT_OF_RESOURCES; } + *MacString = String; // @@ -2390,8 +2369,8 @@ NetLibGetMacString ( EFI_STATUS EFIAPI NetLibDetectMedia ( - IN EFI_HANDLE ServiceHandle, - OUT BOOLEAN *MediaPresent + IN EFI_HANDLE ServiceHandle, + OUT BOOLEAN *MediaPresent ) { EFI_STATUS Status; @@ -2410,7 +2389,7 @@ NetLibDetectMedia ( // // Get SNP handle // - Snp = NULL; + Snp = NULL; SnpHandle = NetLibGetSnpHandle (ServiceHandle, &Snp); if (SnpHandle == NULL) { return EFI_INVALID_PARAMETER; @@ -2485,6 +2464,7 @@ NetLibDetectMedia ( if (!EFI_ERROR (Status)) { Status = Snp->Stop (Snp); } + if (EFI_ERROR (Status)) { goto Exit; } @@ -2496,6 +2476,7 @@ NetLibDetectMedia ( if (!EFI_ERROR (Status)) { Status = Snp->Initialize (Snp, 0, 0); } + if (EFI_ERROR (Status)) { goto Exit; } @@ -2599,9 +2580,9 @@ Exit: EFI_STATUS EFIAPI NetLibDetectMediaWaitTimeout ( - IN EFI_HANDLE ServiceHandle, - IN UINT64 Timeout, - OUT EFI_STATUS *MediaState + IN EFI_HANDLE ServiceHandle, + IN UINT64 Timeout, + OUT EFI_STATUS *MediaState ) { EFI_STATUS Status; @@ -2618,13 +2599,14 @@ NetLibDetectMediaWaitTimeout ( if (MediaState == NULL) { return EFI_INVALID_PARAMETER; } + *MediaState = EFI_SUCCESS; MediaInfo = NULL; // // Get SNP handle // - Snp = NULL; + Snp = NULL; SnpHandle = NetLibGetSnpHandle (ServiceHandle, &Snp); if (SnpHandle == NULL) { return EFI_INVALID_PARAMETER; @@ -2633,12 +2615,11 @@ NetLibDetectMediaWaitTimeout ( Status = gBS->HandleProtocol ( SnpHandle, &gEfiAdapterInformationProtocolGuid, - (VOID *) &Aip + (VOID *)&Aip ); if (EFI_ERROR (Status)) { - MediaPresent = TRUE; - Status = NetLibDetectMedia (ServiceHandle, &MediaPresent); + Status = NetLibDetectMedia (ServiceHandle, &MediaPresent); if (!EFI_ERROR (Status)) { if (MediaPresent) { *MediaState = EFI_SUCCESS; @@ -2656,30 +2637,26 @@ NetLibDetectMediaWaitTimeout ( Status = Aip->GetInformation ( Aip, &gEfiAdapterInfoMediaStateGuid, - (VOID **) &MediaInfo, + (VOID **)&MediaInfo, &DataSize ); if (!EFI_ERROR (Status)) { - *MediaState = MediaInfo->MediaState; FreePool (MediaInfo); - if (*MediaState != EFI_NOT_READY || Timeout < MEDIA_STATE_DETECT_TIME_INTERVAL) { - + if ((*MediaState != EFI_NOT_READY) || (Timeout < MEDIA_STATE_DETECT_TIME_INTERVAL)) { return EFI_SUCCESS; } } else { - if (MediaInfo != NULL) { FreePool (MediaInfo); } if (Status == EFI_UNSUPPORTED) { - // // If gEfiAdapterInfoMediaStateGuid is not supported, call NetLibDetectMedia to get media state! // MediaPresent = TRUE; - Status = NetLibDetectMedia (ServiceHandle, &MediaPresent); + Status = NetLibDetectMedia (ServiceHandle, &MediaPresent); if (!EFI_ERROR (Status)) { if (MediaPresent) { *MediaState = EFI_SUCCESS; @@ -2687,6 +2664,7 @@ NetLibDetectMediaWaitTimeout ( *MediaState = EFI_NO_MEDIA; } } + return Status; } @@ -2699,7 +2677,7 @@ NetLibDetectMediaWaitTimeout ( Timer = NULL; TimeRemained = Timeout; - Status = gBS->CreateEvent (EVT_TIMER, TPL_CALLBACK, NULL, NULL, &Timer); + Status = gBS->CreateEvent (EVT_TIMER, TPL_CALLBACK, NULL, NULL, &Timer); if (EFI_ERROR (Status)) { return EFI_DEVICE_ERROR; } @@ -2711,39 +2689,37 @@ NetLibDetectMediaWaitTimeout ( MEDIA_STATE_DETECT_TIME_INTERVAL ); if (EFI_ERROR (Status)) { - gBS->CloseEvent(Timer); + gBS->CloseEvent (Timer); return EFI_DEVICE_ERROR; } do { TimerStatus = gBS->CheckEvent (Timer); if (!EFI_ERROR (TimerStatus)) { - TimeRemained -= MEDIA_STATE_DETECT_TIME_INTERVAL; - Status = Aip->GetInformation ( - Aip, - &gEfiAdapterInfoMediaStateGuid, - (VOID **) &MediaInfo, - &DataSize - ); + Status = Aip->GetInformation ( + Aip, + &gEfiAdapterInfoMediaStateGuid, + (VOID **)&MediaInfo, + &DataSize + ); if (!EFI_ERROR (Status)) { - *MediaState = MediaInfo->MediaState; FreePool (MediaInfo); } else { - if (MediaInfo != NULL) { FreePool (MediaInfo); } - gBS->CloseEvent(Timer); + + gBS->CloseEvent (Timer); return Status; } } } while (TimerStatus == EFI_NOT_READY); } while (*MediaState == EFI_NOT_READY && TimeRemained >= MEDIA_STATE_DETECT_TIME_INTERVAL); - gBS->CloseEvent(Timer); - if (*MediaState == EFI_NOT_READY && TimeRemained < MEDIA_STATE_DETECT_TIME_INTERVAL) { + gBS->CloseEvent (Timer); + if ((*MediaState == EFI_NOT_READY) && (TimeRemained < MEDIA_STATE_DETECT_TIME_INTERVAL)) { return EFI_TIMEOUT; } else { return EFI_SUCCESS; @@ -2770,22 +2746,22 @@ NetLibDefaultAddressIsStatic ( IN EFI_HANDLE Controller ) { - EFI_STATUS Status; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; - UINTN DataSize; - EFI_IP4_CONFIG2_POLICY Policy; - BOOLEAN IsStatic; + EFI_STATUS Status; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + UINTN DataSize; + EFI_IP4_CONFIG2_POLICY Policy; + BOOLEAN IsStatic; Ip4Config2 = NULL; DataSize = sizeof (EFI_IP4_CONFIG2_POLICY); - IsStatic = TRUE; + IsStatic = TRUE; // // Get Ip4Config2 policy. // - Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **) &Ip4Config2); + Status = gBS->HandleProtocol (Controller, &gEfiIp4Config2ProtocolGuid, (VOID **)&Ip4Config2); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -2795,7 +2771,7 @@ NetLibDefaultAddressIsStatic ( goto ON_EXIT; } - IsStatic = (BOOLEAN) (Policy == Ip4Config2PolicyStatic); + IsStatic = (BOOLEAN)(Policy == Ip4Config2PolicyStatic); ON_EXIT: @@ -2907,7 +2883,7 @@ NetLibCreateIPv6DPathNode ( Node->LocalPort = LocalPort; Node->RemotePort = RemotePort; - Node->Protocol = Protocol; + Node->Protocol = Protocol; // // Set default value to IPAddressOrigin, PrefixLength. @@ -2940,15 +2916,15 @@ NetLibCreateIPv6DPathNode ( EFI_HANDLE EFIAPI NetLibGetNicHandle ( - IN EFI_HANDLE Controller, - IN EFI_GUID *ProtocolGuid + IN EFI_HANDLE Controller, + IN EFI_GUID *ProtocolGuid ) { - EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenBuffer; - EFI_HANDLE Handle; - EFI_STATUS Status; - UINTN OpenCount; - UINTN Index; + EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenBuffer; + EFI_HANDLE Handle; + EFI_STATUS Status; + UINTN OpenCount; + UINTN Index; ASSERT (ProtocolGuid != NULL); @@ -2989,12 +2965,12 @@ NetLibGetNicHandle ( EFI_STATUS EFIAPI NetLibAsciiStrToIp4 ( - IN CONST CHAR8 *String, - OUT EFI_IPv4_ADDRESS *Ip4Address + IN CONST CHAR8 *String, + OUT EFI_IPv4_ADDRESS *Ip4Address ) { - RETURN_STATUS Status; - CHAR8 *EndPointer; + RETURN_STATUS Status; + CHAR8 *EndPointer; Status = AsciiStrToIpv4Address (String, &EndPointer, Ip4Address, NULL); if (RETURN_ERROR (Status) || (*EndPointer != '\0')) { @@ -3004,7 +2980,6 @@ NetLibAsciiStrToIp4 ( } } - /** Convert one Null-terminated ASCII string to EFI_IPv6_ADDRESS. The format of the string is defined in RFC 4291 - Text Representation of Addresses. @@ -3019,12 +2994,12 @@ NetLibAsciiStrToIp4 ( EFI_STATUS EFIAPI NetLibAsciiStrToIp6 ( - IN CONST CHAR8 *String, - OUT EFI_IPv6_ADDRESS *Ip6Address + IN CONST CHAR8 *String, + OUT EFI_IPv6_ADDRESS *Ip6Address ) { - RETURN_STATUS Status; - CHAR8 *EndPointer; + RETURN_STATUS Status; + CHAR8 *EndPointer; Status = AsciiStrToIpv6Address (String, &EndPointer, Ip6Address, NULL); if (RETURN_ERROR (Status) || (*EndPointer != '\0')) { @@ -3034,7 +3009,6 @@ NetLibAsciiStrToIp6 ( } } - /** Convert one Null-terminated Unicode string (decimal dotted) to EFI_IPv4_ADDRESS. @@ -3048,12 +3022,12 @@ NetLibAsciiStrToIp6 ( EFI_STATUS EFIAPI NetLibStrToIp4 ( - IN CONST CHAR16 *String, - OUT EFI_IPv4_ADDRESS *Ip4Address + IN CONST CHAR16 *String, + OUT EFI_IPv4_ADDRESS *Ip4Address ) { - RETURN_STATUS Status; - CHAR16 *EndPointer; + RETURN_STATUS Status; + CHAR16 *EndPointer; Status = StrToIpv4Address (String, &EndPointer, Ip4Address, NULL); if (RETURN_ERROR (Status) || (*EndPointer != L'\0')) { @@ -3063,7 +3037,6 @@ NetLibStrToIp4 ( } } - /** Convert one Null-terminated Unicode string to EFI_IPv6_ADDRESS. The format of the string is defined in RFC 4291 - Text Representation of Addresses. @@ -3078,12 +3051,12 @@ NetLibStrToIp4 ( EFI_STATUS EFIAPI NetLibStrToIp6 ( - IN CONST CHAR16 *String, - OUT EFI_IPv6_ADDRESS *Ip6Address + IN CONST CHAR16 *String, + OUT EFI_IPv6_ADDRESS *Ip6Address ) { - RETURN_STATUS Status; - CHAR16 *EndPointer; + RETURN_STATUS Status; + CHAR16 *EndPointer; Status = StrToIpv6Address (String, &EndPointer, Ip6Address, NULL); if (RETURN_ERROR (Status) || (*EndPointer != L'\0')) { @@ -3109,13 +3082,13 @@ NetLibStrToIp6 ( EFI_STATUS EFIAPI NetLibStrToIp6andPrefix ( - IN CONST CHAR16 *String, - OUT EFI_IPv6_ADDRESS *Ip6Address, - OUT UINT8 *PrefixLength + IN CONST CHAR16 *String, + OUT EFI_IPv6_ADDRESS *Ip6Address, + OUT UINT8 *PrefixLength ) { - RETURN_STATUS Status; - CHAR16 *EndPointer; + RETURN_STATUS Status; + CHAR16 *EndPointer; Status = StrToIpv6Address (String, &EndPointer, Ip6Address, PrefixLength); if (RETURN_ERROR (Status) || (*EndPointer != L'\0')) { @@ -3142,21 +3115,21 @@ NetLibStrToIp6andPrefix ( EFI_STATUS EFIAPI NetLibIp6ToStr ( - IN EFI_IPv6_ADDRESS *Ip6Address, - OUT CHAR16 *String, - IN UINTN StringSize + IN EFI_IPv6_ADDRESS *Ip6Address, + OUT CHAR16 *String, + IN UINTN StringSize ) { - UINT16 Ip6Addr[8]; - UINTN Index; - UINTN LongestZerosStart; - UINTN LongestZerosLength; - UINTN CurrentZerosStart; - UINTN CurrentZerosLength; - CHAR16 Buffer[sizeof"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"]; - CHAR16 *Ptr; - - if (Ip6Address == NULL || String == NULL || StringSize == 0) { + UINT16 Ip6Addr[8]; + UINTN Index; + UINTN LongestZerosStart; + UINTN LongestZerosLength; + UINTN CurrentZerosStart; + UINTN CurrentZerosLength; + CHAR16 Buffer[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"]; + CHAR16 *Ptr; + + if ((Ip6Address == NULL) || (String == NULL) || (StringSize == 0)) { return EFI_INVALID_PARAMETER; } @@ -3178,25 +3151,26 @@ NetLibIp6ToStr ( for (Index = 0; Index < 8; Index++) { if (Ip6Addr[Index] == 0) { if (CurrentZerosStart == DEFAULT_ZERO_START) { - CurrentZerosStart = Index; + CurrentZerosStart = Index; CurrentZerosLength = 1; } else { CurrentZerosLength++; } } else { if (CurrentZerosStart != DEFAULT_ZERO_START) { - if (CurrentZerosLength > 2 && (LongestZerosStart == (DEFAULT_ZERO_START) || CurrentZerosLength > LongestZerosLength)) { + if ((CurrentZerosLength > 2) && ((LongestZerosStart == (DEFAULT_ZERO_START)) || (CurrentZerosLength > LongestZerosLength))) { LongestZerosStart = CurrentZerosStart; LongestZerosLength = CurrentZerosLength; } + CurrentZerosStart = DEFAULT_ZERO_START; CurrentZerosLength = 0; } } } - if (CurrentZerosStart != DEFAULT_ZERO_START && CurrentZerosLength > 2) { - if (LongestZerosStart == DEFAULT_ZERO_START || LongestZerosLength < CurrentZerosLength) { + if ((CurrentZerosStart != DEFAULT_ZERO_START) && (CurrentZerosLength > 2)) { + if ((LongestZerosStart == DEFAULT_ZERO_START) || (LongestZerosLength < CurrentZerosLength)) { LongestZerosStart = CurrentZerosStart; LongestZerosLength = CurrentZerosLength; } @@ -3204,21 +3178,25 @@ NetLibIp6ToStr ( Ptr = Buffer; for (Index = 0; Index < 8; Index++) { - if (LongestZerosStart != DEFAULT_ZERO_START && Index >= LongestZerosStart && Index < LongestZerosStart + LongestZerosLength) { + if ((LongestZerosStart != DEFAULT_ZERO_START) && (Index >= LongestZerosStart) && (Index < LongestZerosStart + LongestZerosLength)) { if (Index == LongestZerosStart) { *Ptr++ = L':'; } + continue; } + if (Index != 0) { *Ptr++ = L':'; } - Ptr += UnicodeSPrint(Ptr, 10, L"%x", Ip6Addr[Index]); + + Ptr += UnicodeSPrint (Ptr, 10, L"%x", Ip6Addr[Index]); } - if (LongestZerosStart != DEFAULT_ZERO_START && LongestZerosStart + LongestZerosLength == 8) { + if ((LongestZerosStart != DEFAULT_ZERO_START) && (LongestZerosStart + LongestZerosLength == 8)) { *Ptr++ = L':'; } + *Ptr = L'\0'; if ((UINTN)Ptr - (UINTN)Buffer > StringSize) { @@ -3244,7 +3222,7 @@ NetLibIp6ToStr ( EFI_STATUS EFIAPI NetLibGetSystemGuid ( - OUT EFI_GUID *SystemGuid + OUT EFI_GUID *SystemGuid ) { EFI_STATUS Status; @@ -3257,17 +3235,18 @@ NetLibGetSystemGuid ( ASSERT (SystemGuid != NULL); SmbiosTable = NULL; - Status = EfiGetSystemConfigurationTable (&gEfiSmbios3TableGuid, (VOID **) &Smbios30Table); - if (!(EFI_ERROR (Status) || Smbios30Table == NULL)) { - Smbios.Hdr = (SMBIOS_STRUCTURE *) (UINTN) Smbios30Table->TableAddress; - SmbiosEnd.Raw = (UINT8 *) (UINTN) (Smbios30Table->TableAddress + Smbios30Table->TableMaximumSize); + Status = EfiGetSystemConfigurationTable (&gEfiSmbios3TableGuid, (VOID **)&Smbios30Table); + if (!(EFI_ERROR (Status) || (Smbios30Table == NULL))) { + Smbios.Hdr = (SMBIOS_STRUCTURE *)(UINTN)Smbios30Table->TableAddress; + SmbiosEnd.Raw = (UINT8 *)(UINTN)(Smbios30Table->TableAddress + Smbios30Table->TableMaximumSize); } else { - Status = EfiGetSystemConfigurationTable (&gEfiSmbiosTableGuid, (VOID **) &SmbiosTable); - if (EFI_ERROR (Status) || SmbiosTable == NULL) { + Status = EfiGetSystemConfigurationTable (&gEfiSmbiosTableGuid, (VOID **)&SmbiosTable); + if (EFI_ERROR (Status) || (SmbiosTable == NULL)) { return EFI_NOT_FOUND; } - Smbios.Hdr = (SMBIOS_STRUCTURE *) (UINTN) SmbiosTable->TableAddress; - SmbiosEnd.Raw = (UINT8 *) ((UINTN) SmbiosTable->TableAddress + SmbiosTable->TableLength); + + Smbios.Hdr = (SMBIOS_STRUCTURE *)(UINTN)SmbiosTable->TableAddress; + SmbiosEnd.Raw = (UINT8 *)((UINTN)SmbiosTable->TableAddress + SmbiosTable->TableLength); } do { @@ -3296,7 +3275,7 @@ NetLibGetSystemGuid ( // // Step 1: Skip over formatted section. // - String = (CHAR8 *) (Smbios.Raw + Smbios.Hdr->Length); + String = (CHAR8 *)(Smbios.Raw + Smbios.Hdr->Length); // // Step 2: Skip over unformatted string section. @@ -3309,7 +3288,7 @@ NetLibGetSystemGuid ( for ( ; *String != 0; String++) { } - if (*(UINT8*)++String == 0) { + if (*(UINT8 *)++String == 0) { // // Pointer to the next SMBIOS structure. // @@ -3318,6 +3297,7 @@ NetLibGetSystemGuid ( } } while (TRUE); } while (Smbios.Raw < SmbiosEnd.Raw); + return EFI_NOT_FOUND; } @@ -3341,15 +3321,15 @@ NetLibGetSystemGuid ( CHAR8 * EFIAPI NetLibCreateDnsQName ( - IN CHAR16 *DomainName + IN CHAR16 *DomainName ) { - CHAR8 *QueryName; - UINTN QueryNameSize; - CHAR8 *Header; - CHAR8 *Tail; - UINTN Len; - UINTN Index; + CHAR8 *QueryName; + UINTN QueryNameSize; + CHAR8 *Header; + CHAR8 *Tail; + UINTN Len; + UINTN Index; ASSERT (DomainName != NULL); @@ -3373,22 +3353,23 @@ NetLibCreateDnsQName ( } Header = QueryName; - Tail = Header + 1; - Len = 0; + Tail = Header + 1; + Len = 0; for (Index = 0; DomainName[Index] != 0; Index++) { - *Tail = (CHAR8) DomainName[Index]; + *Tail = (CHAR8)DomainName[Index]; if (*Tail == '.') { - *Header = (CHAR8) Len; - Header = Tail; - Tail ++; + *Header = (CHAR8)Len; + Header = Tail; + Tail++; Len = 0; } else { Tail++; Len++; } } - *Header = (CHAR8) Len; - *Tail = 0; + + *Header = (CHAR8)Len; + *Tail = 0; return QueryName; } diff --git a/NetworkPkg/Library/DxeNetLib/NetBuffer.c b/NetworkPkg/Library/DxeNetLib/NetBuffer.c index 329a17623d..4721fbd270 100644 --- a/NetworkPkg/Library/DxeNetLib/NetBuffer.c +++ b/NetworkPkg/Library/DxeNetLib/NetBuffer.c @@ -14,7 +14,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - /** Allocate and build up the sketch for a NET_BUF. @@ -31,12 +30,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ NET_BUF * NetbufAllocStruct ( - IN UINT32 BlockNum, - IN UINT32 BlockOpNum + IN UINT32 BlockNum, + IN UINT32 BlockOpNum ) { - NET_BUF *Nbuf; - NET_VECTOR *Vector; + NET_BUF *Nbuf; + NET_VECTOR *Vector; ASSERT (BlockOpNum >= 1); @@ -49,9 +48,9 @@ NetbufAllocStruct ( return NULL; } - Nbuf->Signature = NET_BUF_SIGNATURE; - Nbuf->RefCnt = 1; - Nbuf->BlockOpNum = BlockOpNum; + Nbuf->Signature = NET_BUF_SIGNATURE; + Nbuf->RefCnt = 1; + Nbuf->BlockOpNum = BlockOpNum; InitializeListHead (&Nbuf->List); if (BlockNum != 0) { @@ -75,7 +74,6 @@ FreeNbuf: return NULL; } - /** Allocate a single block NET_BUF. Upon allocation, all the free space is in the tail room. @@ -89,12 +87,12 @@ FreeNbuf: NET_BUF * EFIAPI NetbufAlloc ( - IN UINT32 Len + IN UINT32 Len ) { - NET_BUF *Nbuf; - NET_VECTOR *Vector; - UINT8 *Bulk; + NET_BUF *Nbuf; + NET_VECTOR *Vector; + UINT8 *Bulk; ASSERT (Len > 0); @@ -110,18 +108,18 @@ NetbufAlloc ( goto FreeNBuf; } - Vector = Nbuf->Vector; - Vector->Len = Len; + Vector = Nbuf->Vector; + Vector->Len = Len; - Vector->Block[0].Bulk = Bulk; - Vector->Block[0].Len = Len; + Vector->Block[0].Bulk = Bulk; + Vector->Block[0].Len = Len; - Nbuf->BlockOp[0].BlockHead = Bulk; - Nbuf->BlockOp[0].BlockTail = Bulk + Len; + Nbuf->BlockOp[0].BlockHead = Bulk; + Nbuf->BlockOp[0].BlockTail = Bulk + Len; - Nbuf->BlockOp[0].Head = Bulk; - Nbuf->BlockOp[0].Tail = Bulk; - Nbuf->BlockOp[0].Size = 0; + Nbuf->BlockOp[0].Head = Bulk; + Nbuf->BlockOp[0].Tail = Bulk; + Nbuf->BlockOp[0].Size = 0; return Nbuf; @@ -142,10 +140,10 @@ FreeNBuf: **/ VOID NetbufFreeVector ( - IN NET_VECTOR *Vector + IN NET_VECTOR *Vector ) { - UINT32 Index; + UINT32 Index; ASSERT (Vector != NULL); NET_CHECK_SIGNATURE (Vector, NET_VECTOR_SIGNATURE); @@ -168,7 +166,6 @@ NetbufFreeVector ( } Vector->Free (Vector->Arg); - } else { // // Free each memory block associated with the Vector @@ -181,7 +178,6 @@ NetbufFreeVector ( FreePool (Vector); } - /** Free the net buffer and its associated NET_VECTOR. @@ -197,7 +193,7 @@ NetbufFreeVector ( VOID EFIAPI NetbufFree ( - IN NET_BUF *Nbuf + IN NET_BUF *Nbuf ) { ASSERT (Nbuf != NULL); @@ -216,7 +212,6 @@ NetbufFree ( } } - /** Create a copy of the net buffer that shares the associated net vector. @@ -232,10 +227,10 @@ NetbufFree ( NET_BUF * EFIAPI NetbufClone ( - IN NET_BUF *Nbuf + IN NET_BUF *Nbuf ) { - NET_BUF *Clone; + NET_BUF *Clone; NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); @@ -245,12 +240,12 @@ NetbufClone ( return NULL; } - Clone->Signature = NET_BUF_SIGNATURE; - Clone->RefCnt = 1; + Clone->Signature = NET_BUF_SIGNATURE; + Clone->RefCnt = 1; InitializeListHead (&Clone->List); - Clone->Ip = Nbuf->Ip; - Clone->Tcp = Nbuf->Tcp; + Clone->Ip = Nbuf->Ip; + Clone->Tcp = Nbuf->Tcp; CopyMem (Clone->ProtoData, Nbuf->ProtoData, NET_PROTO_DATA); @@ -264,7 +259,6 @@ NetbufClone ( return Clone; } - /** Create a duplicated copy of the net buffer with data copied and HeadSpace bytes of head space reserved. @@ -284,12 +278,12 @@ NetbufClone ( NET_BUF * EFIAPI NetbufDuplicate ( - IN NET_BUF *Nbuf, - IN OUT NET_BUF *Duplicate OPTIONAL, - IN UINT32 HeadSpace + IN NET_BUF *Nbuf, + IN OUT NET_BUF *Duplicate OPTIONAL, + IN UINT32 HeadSpace ) { - UINT8 *Dst; + UINT8 *Dst; NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); @@ -314,7 +308,6 @@ NetbufDuplicate ( return Duplicate; } - /** Free a list of net buffers. @@ -324,12 +317,12 @@ NetbufDuplicate ( VOID EFIAPI NetbufFreeList ( - IN OUT LIST_ENTRY *Head + IN OUT LIST_ENTRY *Head ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - NET_BUF *Nbuf; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + NET_BUF *Nbuf; Entry = Head->ForwardLink; @@ -344,7 +337,6 @@ NetbufFreeList ( ASSERT (IsListEmpty (Head)); } - /** Get the index of NET_BLOCK_OP that contains the byte at Offset in the net buffer. @@ -365,14 +357,14 @@ NetbufFreeList ( UINT8 * EFIAPI NetbufGetByte ( - IN NET_BUF *Nbuf, - IN UINT32 Offset, - OUT UINT32 *Index OPTIONAL + IN NET_BUF *Nbuf, + IN UINT32 Offset, + OUT UINT32 *Index OPTIONAL ) { - NET_BLOCK_OP *BlockOp; - UINT32 Loop; - UINT32 Len; + NET_BLOCK_OP *BlockOp; + UINT32 Loop; + UINT32 Len; NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); @@ -384,7 +376,6 @@ NetbufGetByte ( Len = 0; for (Loop = 0; Loop < Nbuf->BlockOpNum; Loop++) { - if (Len + BlockOp[Loop].Size <= Offset) { Len += BlockOp[Loop].Size; continue; @@ -400,8 +391,6 @@ NetbufGetByte ( return NULL; } - - /** Set the NET_BLOCK and corresponding NET_BLOCK_OP in the net buffer and corresponding net vector according to the bulk pointer and bulk length. @@ -419,32 +408,30 @@ NetbufGetByte ( **/ VOID NetbufSetBlock ( - IN OUT NET_BUF *Nbuf, - IN UINT8 *Bulk, - IN UINT32 Len, - IN UINT32 Index + IN OUT NET_BUF *Nbuf, + IN UINT8 *Bulk, + IN UINT32 Len, + IN UINT32 Index ) { - NET_BLOCK_OP *BlockOp; - NET_BLOCK *Block; + NET_BLOCK_OP *BlockOp; + NET_BLOCK *Block; NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); NET_CHECK_SIGNATURE (Nbuf->Vector, NET_VECTOR_SIGNATURE); ASSERT (Index < Nbuf->BlockOpNum); - Block = &(Nbuf->Vector->Block[Index]); - BlockOp = &(Nbuf->BlockOp[Index]); - Block->Len = Len; - Block->Bulk = Bulk; - BlockOp->BlockHead = Bulk; - BlockOp->BlockTail = Bulk + Len; - BlockOp->Head = Bulk; - BlockOp->Tail = Bulk + Len; - BlockOp->Size = Len; + Block = &(Nbuf->Vector->Block[Index]); + BlockOp = &(Nbuf->BlockOp[Index]); + Block->Len = Len; + Block->Bulk = Bulk; + BlockOp->BlockHead = Bulk; + BlockOp->BlockTail = Bulk + Len; + BlockOp->Head = Bulk; + BlockOp->Tail = Bulk + Len; + BlockOp->Size = Len; } - - /** Set the NET_BLOCK_OP in the net buffer. The corresponding NET_BLOCK structure is left untouched. @@ -461,26 +448,25 @@ NetbufSetBlock ( **/ VOID NetbufSetBlockOp ( - IN OUT NET_BUF *Nbuf, - IN UINT8 *Bulk, - IN UINT32 Len, - IN UINT32 Index + IN OUT NET_BUF *Nbuf, + IN UINT8 *Bulk, + IN UINT32 Len, + IN UINT32 Index ) { - NET_BLOCK_OP *BlockOp; + NET_BLOCK_OP *BlockOp; NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); ASSERT (Index < Nbuf->BlockOpNum); - BlockOp = &(Nbuf->BlockOp[Index]); - BlockOp->BlockHead = Bulk; - BlockOp->BlockTail = Bulk + Len; - BlockOp->Head = Bulk; - BlockOp->Tail = Bulk + Len; - BlockOp->Size = Len; + BlockOp = &(Nbuf->BlockOp[Index]); + BlockOp->BlockHead = Bulk; + BlockOp->BlockTail = Bulk + Len; + BlockOp->Head = Bulk; + BlockOp->Tail = Bulk + Len; + BlockOp->Size = Len; } - /** Helper function for NetbufGetFragment. NetbufGetFragment may allocate the first block to reserve HeadSpace bytes header space. So it needs to create a @@ -493,16 +479,15 @@ NetbufSetBlockOp ( VOID EFIAPI NetbufGetFragmentFree ( - IN VOID *Arg + IN VOID *Arg ) { - NET_VECTOR *Vector; + NET_VECTOR *Vector; Vector = (NET_VECTOR *)Arg; NetbufFreeVector (Vector); } - /** Create a NET_BUF structure which contains Len byte data of Nbuf starting from Offset. @@ -523,25 +508,25 @@ NetbufGetFragmentFree ( NET_BUF * EFIAPI NetbufGetFragment ( - IN NET_BUF *Nbuf, - IN UINT32 Offset, - IN UINT32 Len, - IN UINT32 HeadSpace + IN NET_BUF *Nbuf, + IN UINT32 Offset, + IN UINT32 Len, + IN UINT32 HeadSpace ) { - NET_BUF *Child; - NET_VECTOR *Vector; - NET_BLOCK_OP *BlockOp; - UINT32 CurBlockOp; - UINT32 BlockOpNum; - UINT8 *FirstBulk; - UINT32 Index; - UINT32 First; - UINT32 Last; - UINT32 FirstSkip; - UINT32 FirstLen; - UINT32 LastLen; - UINT32 Cur; + NET_BUF *Child; + NET_VECTOR *Vector; + NET_BLOCK_OP *BlockOp; + UINT32 CurBlockOp; + UINT32 BlockOpNum; + UINT8 *FirstBulk; + UINT32 Index; + UINT32 First; + UINT32 Last; + UINT32 FirstSkip; + UINT32 FirstLen; + UINT32 LastLen; + UINT32 Cur; NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); @@ -573,14 +558,14 @@ NetbufGetFragment ( FirstSkip = Offset - Cur; FirstLen = BlockOp[Index].Size - FirstSkip; - Last = 0; - LastLen = 0; + Last = 0; + LastLen = 0; if (Len > FirstLen) { Cur += BlockOp[Index].Size; Index++; - for (; Index < Nbuf->BlockOpNum; Index++) { + for ( ; Index < Nbuf->BlockOpNum; Index++) { if (Offset + Len <= Cur + BlockOp[Index].Size) { Last = Index; LastLen = Offset + Len - Cur; @@ -589,7 +574,6 @@ NetbufGetFragment ( Cur += BlockOp[Index].Size; } - } else { Last = First; LastLen = Len; @@ -618,20 +602,19 @@ NetbufGetFragment ( goto FreeChild; } - Vector = Child->Vector; - Vector->Free = NetbufGetFragmentFree; - Vector->Arg = Nbuf->Vector; - Vector->Flag = NET_VECTOR_OWN_FIRST; - Vector->Len = HeadSpace; + Vector = Child->Vector; + Vector->Free = NetbufGetFragmentFree; + Vector->Arg = Nbuf->Vector; + Vector->Flag = NET_VECTOR_OWN_FIRST; + Vector->Len = HeadSpace; // // Reserve the head space in the first block // NetbufSetBlock (Child, FirstBulk, HeadSpace, 0); Child->BlockOp[0].Head += HeadSpace; - Child->BlockOp[0].Size = 0; + Child->BlockOp[0].Size = 0; CurBlockOp++; - } else { Child = NetbufAllocStruct (0, BlockOpNum); @@ -683,8 +666,6 @@ FreeChild: return NULL; } - - /** Build a NET_BUF from external blocks. @@ -710,41 +691,41 @@ FreeChild: NET_BUF * EFIAPI NetbufFromExt ( - IN NET_FRAGMENT *ExtFragment, - IN UINT32 ExtNum, - IN UINT32 HeadSpace, - IN UINT32 HeadLen, - IN NET_VECTOR_EXT_FREE ExtFree, - IN VOID *Arg OPTIONAL + IN NET_FRAGMENT *ExtFragment, + IN UINT32 ExtNum, + IN UINT32 HeadSpace, + IN UINT32 HeadLen, + IN NET_VECTOR_EXT_FREE ExtFree, + IN VOID *Arg OPTIONAL ) { - NET_BUF *Nbuf; - NET_VECTOR *Vector; - NET_FRAGMENT SavedFragment; - UINT32 SavedIndex; - UINT32 TotalLen; - UINT32 BlockNum; - UINT8 *FirstBlock; - UINT32 FirstBlockLen; - UINT8 *Header; - UINT32 CurBlock; - UINT32 Index; - UINT32 Len; - UINT32 Copied; + NET_BUF *Nbuf; + NET_VECTOR *Vector; + NET_FRAGMENT SavedFragment; + UINT32 SavedIndex; + UINT32 TotalLen; + UINT32 BlockNum; + UINT8 *FirstBlock; + UINT32 FirstBlockLen; + UINT8 *Header; + UINT32 CurBlock; + UINT32 Index; + UINT32 Len; + UINT32 Copied; ASSERT ((ExtFragment != NULL) && (ExtNum > 0) && (ExtFree != NULL)); SavedFragment.Bulk = NULL; SavedFragment.Len = 0; - FirstBlockLen = 0; - FirstBlock = NULL; - BlockNum = ExtNum; - Index = 0; - TotalLen = 0; - SavedIndex = 0; - Len = 0; - Copied = 0; + FirstBlockLen = 0; + FirstBlock = NULL; + BlockNum = ExtNum; + Index = 0; + TotalLen = 0; + SavedIndex = 0; + Len = 0; + Copied = 0; // // No need to consolidate the header if the first block is @@ -783,10 +764,10 @@ NetbufFromExt ( if (Len >= ExtFragment[Index].Len) { CopyMem (Header, ExtFragment[Index].Bulk, ExtFragment[Index].Len); - Copied += ExtFragment[Index].Len; - Len -= ExtFragment[Index].Len; - Header += ExtFragment[Index].Len; - TotalLen += ExtFragment[Index].Len; + Copied += ExtFragment[Index].Len; + Len -= ExtFragment[Index].Len; + Header += ExtFragment[Index].Len; + TotalLen += ExtFragment[Index].Len; BlockNum--; if (Len == 0) { @@ -797,12 +778,11 @@ NetbufFromExt ( Index++; break; } - } else { CopyMem (Header, ExtFragment[Index].Bulk, Len); - Copied += Len; - TotalLen += Len; + Copied += Len; + TotalLen += Len; // // Adjust the block structure to exclude the data copied, @@ -811,8 +791,8 @@ NetbufFromExt ( // holds since we don't aggreate the header if the first block // is bigger enough that the header is continuous // - SavedIndex = Index; - SavedFragment = ExtFragment[Index]; + SavedIndex = Index; + SavedFragment = ExtFragment[Index]; ExtFragment[Index].Bulk += Len; ExtFragment[Index].Len -= Len; break; @@ -840,12 +820,12 @@ NetbufFromExt ( if (FirstBlockLen != 0) { NetbufSetBlock (Nbuf, FirstBlock, HeadSpace + Copied, 0); Nbuf->BlockOp[0].Head += HeadSpace; - Nbuf->BlockOp[0].Size = Copied; + Nbuf->BlockOp[0].Size = Copied; CurBlock++; } - for (; Index < ExtNum; Index++) { + for ( ; Index < ExtNum; Index++) { NetbufSetBlock (Nbuf, ExtFragment[Index].Bulk, ExtFragment[Index].Len, CurBlock); TotalLen += ExtFragment[Index].Len; CurBlock++; @@ -864,10 +844,10 @@ FreeFirstBlock: if (FirstBlock != NULL) { FreePool (FirstBlock); } + return NULL; } - /** Build a fragment table to contain the fragments in the net buffer. This is the opposite operation of the NetbufFromExt. @@ -884,13 +864,13 @@ FreeFirstBlock: EFI_STATUS EFIAPI NetbufBuildExt ( - IN NET_BUF *Nbuf, - IN OUT NET_FRAGMENT *ExtFragment, - IN OUT UINT32 *ExtNum + IN NET_BUF *Nbuf, + IN OUT NET_FRAGMENT *ExtFragment, + IN OUT UINT32 *ExtNum ) { - UINT32 Index; - UINT32 Current; + UINT32 Index; + UINT32 Current; Current = 0; @@ -912,7 +892,6 @@ NetbufBuildExt ( return EFI_SUCCESS; } - /** Build a net buffer from a list of net buffers. @@ -933,22 +912,22 @@ NetbufBuildExt ( NET_BUF * EFIAPI NetbufFromBufList ( - IN LIST_ENTRY *BufList, - IN UINT32 HeadSpace, - IN UINT32 HeaderLen, - IN NET_VECTOR_EXT_FREE ExtFree, - IN VOID *Arg OPTIONAL + IN LIST_ENTRY *BufList, + IN UINT32 HeadSpace, + IN UINT32 HeaderLen, + IN NET_VECTOR_EXT_FREE ExtFree, + IN VOID *Arg OPTIONAL ) { - NET_FRAGMENT *Fragment; - UINT32 FragmentNum; - LIST_ENTRY *Entry; - NET_BUF *Nbuf; - UINT32 Index; - UINT32 Current; + NET_FRAGMENT *Fragment; + UINT32 FragmentNum; + LIST_ENTRY *Entry; + NET_BUF *Nbuf; + UINT32 Index; + UINT32 Current; // - //Compute how many blocks are there + // Compute how many blocks are there // FragmentNum = 0; @@ -959,7 +938,7 @@ NetbufFromBufList ( } // - //Allocate and copy block points + // Allocate and copy block points // Fragment = AllocatePool (sizeof (NET_FRAGMENT) * FragmentNum); @@ -988,7 +967,6 @@ NetbufFromBufList ( return Nbuf; } - /** Reserve some space in the header room of the net buffer. @@ -1004,8 +982,8 @@ NetbufFromBufList ( VOID EFIAPI NetbufReserve ( - IN OUT NET_BUF *Nbuf, - IN UINT32 Len + IN OUT NET_BUF *Nbuf, + IN UINT32 Len ) { NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); @@ -1020,7 +998,6 @@ NetbufReserve ( ASSERT (Nbuf->BlockOp[0].Tail <= Nbuf->BlockOp[0].BlockTail); } - /** Allocate Len bytes of space from the header or tail of the buffer. @@ -1033,17 +1010,17 @@ NetbufReserve ( or NULL if there is no sufficient space. **/ -UINT8* +UINT8 * EFIAPI NetbufAllocSpace ( - IN OUT NET_BUF *Nbuf, - IN UINT32 Len, - IN BOOLEAN FromHead + IN OUT NET_BUF *Nbuf, + IN UINT32 Len, + IN BOOLEAN FromHead ) { - NET_BLOCK_OP *BlockOp; - UINT32 Index; - UINT8 *SavedTail; + NET_BLOCK_OP *BlockOp; + UINT32 Index; + UINT8 *SavedTail; Index = 0; @@ -1063,7 +1040,7 @@ NetbufAllocSpace ( } else { NetbufGetByte (Nbuf, 0, &Index); - if ((Index != 0) && (NET_HEADSPACE(&(Nbuf->BlockOp[Index])) < Len)) { + if ((Index != 0) && (NET_HEADSPACE (&(Nbuf->BlockOp[Index])) < Len)) { Index--; } } @@ -1079,7 +1056,6 @@ NetbufAllocSpace ( Nbuf->TotalSize += Len; return BlockOp->Head; - } else { // // Allocate some space from the tail. If the buffer is empty, @@ -1091,9 +1067,9 @@ NetbufAllocSpace ( } else { NetbufGetByte (Nbuf, Nbuf->TotalSize - 1, &Index); - if ((NET_TAILSPACE(&(Nbuf->BlockOp[Index])) < Len) && - (Index < Nbuf->BlockOpNum - 1)) { - + if ((NET_TAILSPACE (&(Nbuf->BlockOp[Index])) < Len) && + (Index < Nbuf->BlockOpNum - 1)) + { Index++; } } @@ -1104,7 +1080,7 @@ NetbufAllocSpace ( return NULL; } - SavedTail = BlockOp->Tail; + SavedTail = BlockOp->Tail; BlockOp->Tail += Len; BlockOp->Size += Len; @@ -1114,7 +1090,6 @@ NetbufAllocSpace ( } } - /** Trim a single NET_BLOCK by Len bytes from the header or tail. @@ -1126,9 +1101,9 @@ NetbufAllocSpace ( **/ VOID NetblockTrim ( - IN OUT NET_BLOCK_OP *BlockOp, - IN UINT32 Len, - IN BOOLEAN FromHead + IN OUT NET_BLOCK_OP *BlockOp, + IN UINT32 Len, + IN BOOLEAN FromHead ) { ASSERT ((BlockOp != NULL) && (BlockOp->Size >= Len)); @@ -1142,7 +1117,6 @@ NetblockTrim ( } } - /** Trim Len bytes from the header or tail of the net buffer. @@ -1158,18 +1132,18 @@ NetblockTrim ( UINT32 EFIAPI NetbufTrim ( - IN OUT NET_BUF *Nbuf, - IN UINT32 Len, - IN BOOLEAN FromHead + IN OUT NET_BUF *Nbuf, + IN UINT32 Len, + IN BOOLEAN FromHead ) { - NET_BLOCK_OP *BlockOp; - UINT32 Index; - UINT32 Trimmed; + NET_BLOCK_OP *BlockOp; + UINT32 Index; + UINT32 Trimmed; NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); - if (Len == 0 || Nbuf->TotalSize == 0) { + if ((Len == 0) || (Nbuf->TotalSize == 0)) { return 0; } @@ -1190,7 +1164,7 @@ NetbufTrim ( Index = (FromHead ? 0 : Nbuf->BlockOpNum - 1); BlockOp = Nbuf->BlockOp; - for (;;) { + for ( ; ;) { if (BlockOp[Index].Size == 0) { Index += (FromHead ? 1 : -1); continue; @@ -1212,7 +1186,6 @@ NetbufTrim ( return Trimmed; } - /** Copy Len bytes of data from the specific offset of the net buffer to the destination memory. @@ -1231,18 +1204,18 @@ NetbufTrim ( UINT32 EFIAPI NetbufCopy ( - IN NET_BUF *Nbuf, - IN UINT32 Offset, - IN UINT32 Len, - IN UINT8 *Dest + IN NET_BUF *Nbuf, + IN UINT32 Offset, + IN UINT32 Len, + IN UINT8 *Dest ) { - NET_BLOCK_OP *BlockOp; - UINT32 Skip; - UINT32 Left; - UINT32 Copied; - UINT32 Index; - UINT32 Cur; + NET_BLOCK_OP *BlockOp; + UINT32 Skip; + UINT32 Left; + UINT32 Copied; + UINT32 Index; + UINT32 Cur; NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); ASSERT (Dest); @@ -1283,8 +1256,8 @@ NetbufCopy ( // Offset - Cur is the number of bytes before first byte to // to copy in the current block. // - Skip = Offset - Cur; - Left = BlockOp[Index].Size - Skip; + Skip = Offset - Cur; + Left = BlockOp[Index].Size - Skip; if (Len <= Left) { CopyMem (Dest, BlockOp[Index].Head + Skip, Len); @@ -1299,13 +1272,13 @@ NetbufCopy ( Index++; - for (; Index < Nbuf->BlockOpNum; Index++) { + for ( ; Index < Nbuf->BlockOpNum; Index++) { if (Len > BlockOp[Index].Size) { Len -= BlockOp[Index].Size; Copied += BlockOp[Index].Size; CopyMem (Dest, BlockOp[Index].Head, BlockOp[Index].Size); - Dest += BlockOp[Index].Size; + Dest += BlockOp[Index].Size; } else { Copied += Len; CopyMem (Dest, BlockOp[Index].Head, Len); @@ -1316,7 +1289,6 @@ NetbufCopy ( return Copied; } - /** Initiate the net buffer queue. @@ -1326,19 +1298,18 @@ NetbufCopy ( VOID EFIAPI NetbufQueInit ( - IN OUT NET_BUF_QUEUE *NbufQue + IN OUT NET_BUF_QUEUE *NbufQue ) { - NbufQue->Signature = NET_QUE_SIGNATURE; - NbufQue->RefCnt = 1; + NbufQue->Signature = NET_QUE_SIGNATURE; + NbufQue->RefCnt = 1; InitializeListHead (&NbufQue->List); InitializeListHead (&NbufQue->BufList); - NbufQue->BufSize = 0; - NbufQue->BufNum = 0; + NbufQue->BufSize = 0; + NbufQue->BufNum = 0; } - /** Allocate and initialize a net buffer queue. @@ -1352,7 +1323,7 @@ NetbufQueAlloc ( VOID ) { - NET_BUF_QUEUE *NbufQue; + NET_BUF_QUEUE *NbufQue; NbufQue = AllocatePool (sizeof (NET_BUF_QUEUE)); if (NbufQue == NULL) { @@ -1364,7 +1335,6 @@ NetbufQueAlloc ( return NbufQue; } - /** Free a net buffer queue. @@ -1378,7 +1348,7 @@ NetbufQueAlloc ( VOID EFIAPI NetbufQueFree ( - IN NET_BUF_QUEUE *NbufQue + IN NET_BUF_QUEUE *NbufQue ) { ASSERT (NbufQue != NULL); @@ -1392,7 +1362,6 @@ NetbufQueFree ( } } - /** Append a net buffer to the net buffer queue. @@ -1403,8 +1372,8 @@ NetbufQueFree ( VOID EFIAPI NetbufQueAppend ( - IN OUT NET_BUF_QUEUE *NbufQue, - IN OUT NET_BUF *Nbuf + IN OUT NET_BUF_QUEUE *NbufQue, + IN OUT NET_BUF *Nbuf ) { NET_CHECK_SIGNATURE (NbufQue, NET_QUE_SIGNATURE); @@ -1416,7 +1385,6 @@ NetbufQueAppend ( NbufQue->BufNum++; } - /** Remove a net buffer from the head in the specific queue and return it. @@ -1429,10 +1397,10 @@ NetbufQueAppend ( NET_BUF * EFIAPI NetbufQueRemove ( - IN OUT NET_BUF_QUEUE *NbufQue + IN OUT NET_BUF_QUEUE *NbufQue ) { - NET_BUF *First; + NET_BUF *First; NET_CHECK_SIGNATURE (NbufQue, NET_QUE_SIGNATURE); @@ -1449,7 +1417,6 @@ NetbufQueRemove ( return First; } - /** Copy Len bytes of data from the net buffer queue at the specific offset to the destination memory. @@ -1469,18 +1436,18 @@ NetbufQueRemove ( UINT32 EFIAPI NetbufQueCopy ( - IN NET_BUF_QUEUE *NbufQue, - IN UINT32 Offset, - IN UINT32 Len, - OUT UINT8 *Dest + IN NET_BUF_QUEUE *NbufQue, + IN UINT32 Offset, + IN UINT32 Len, + OUT UINT8 *Dest ) { - LIST_ENTRY *Entry; - NET_BUF *Nbuf; - UINT32 Skip; - UINT32 Left; - UINT32 Cur; - UINT32 Copied; + LIST_ENTRY *Entry; + NET_BUF *Nbuf; + UINT32 Skip; + UINT32 Left; + UINT32 Cur; + UINT32 Copied; NET_CHECK_SIGNATURE (NbufQue, NET_QUE_SIGNATURE); ASSERT (Dest != NULL); @@ -1496,8 +1463,8 @@ NetbufQueCopy ( // // skip to the Offset // - Cur = 0; - Nbuf = NULL; + Cur = 0; + Nbuf = NULL; NET_LIST_FOR_EACH (Entry, &NbufQue->BufList) { Nbuf = NET_LIST_USER_STRUCT (Entry, NET_BUF, List); @@ -1514,8 +1481,8 @@ NetbufQueCopy ( // // Copy the data in the first buffer. // - Skip = Offset - Cur; - Left = Nbuf->TotalSize - Skip; + Skip = Offset - Cur; + Left = Nbuf->TotalSize - Skip; if (Len < Left) { return NetbufCopy (Nbuf, Skip, Len, Dest); @@ -1535,12 +1502,11 @@ NetbufQueCopy ( Nbuf = NET_LIST_USER_STRUCT (Entry, NET_BUF, List); if (Len > Nbuf->TotalSize) { - Len -= Nbuf->TotalSize; + Len -= Nbuf->TotalSize; Copied += Nbuf->TotalSize; NetbufCopy (Nbuf, 0, Nbuf->TotalSize, Dest); Dest += Nbuf->TotalSize; - } else { NetbufCopy (Nbuf, 0, Len, Dest); Copied += Len; @@ -1553,7 +1519,6 @@ NetbufQueCopy ( return Copied; } - /** Trim Len bytes of data from the buffer queue and free any net buffer that is completely trimmed. @@ -1570,14 +1535,14 @@ NetbufQueCopy ( UINT32 EFIAPI NetbufQueTrim ( - IN OUT NET_BUF_QUEUE *NbufQue, - IN UINT32 Len + IN OUT NET_BUF_QUEUE *NbufQue, + IN UINT32 Len ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - NET_BUF *Nbuf; - UINT32 Trimmed; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + NET_BUF *Nbuf; + UINT32 Trimmed; NET_CHECK_SIGNATURE (NbufQue, NET_QUE_SIGNATURE); @@ -1590,14 +1555,14 @@ NetbufQueTrim ( } NbufQue->BufSize -= Len; - Trimmed = 0; + Trimmed = 0; NET_LIST_FOR_EACH_SAFE (Entry, Next, &NbufQue->BufList) { Nbuf = NET_LIST_USER_STRUCT (Entry, NET_BUF, List); if (Len >= Nbuf->TotalSize) { Trimmed += Nbuf->TotalSize; - Len -= Nbuf->TotalSize; + Len -= Nbuf->TotalSize; RemoveEntryList (Entry); NetbufFree (Nbuf); @@ -1607,7 +1572,6 @@ NetbufQueTrim ( if (Len == 0) { break; } - } else { Trimmed += NetbufTrim (Nbuf, Len, NET_BUF_HEAD); break; @@ -1617,7 +1581,6 @@ NetbufQueTrim ( return Trimmed; } - /** Flush the net buffer queue. @@ -1627,18 +1590,17 @@ NetbufQueTrim ( VOID EFIAPI NetbufQueFlush ( - IN OUT NET_BUF_QUEUE *NbufQue + IN OUT NET_BUF_QUEUE *NbufQue ) { NET_CHECK_SIGNATURE (NbufQue, NET_QUE_SIGNATURE); NetbufFreeList (&NbufQue->BufList); - NbufQue->BufNum = 0; - NbufQue->BufSize = 0; + NbufQue->BufNum = 0; + NbufQue->BufSize = 0; } - /** Compute the checksum for a bulk of data. @@ -1651,11 +1613,11 @@ NetbufQueFlush ( UINT16 EFIAPI NetblockChecksum ( - IN UINT8 *Bulk, - IN UINT32 Len + IN UINT8 *Bulk, + IN UINT32 Len ) { - register UINT32 Sum; + register UINT32 Sum; Sum = 0; @@ -1667,9 +1629,9 @@ NetblockChecksum ( } while (Len > 1) { - Sum += *(UINT16 *) Bulk; + Sum += *(UINT16 *)Bulk; Bulk += 2; - Len -= 2; + Len -= 2; } // @@ -1677,13 +1639,11 @@ NetblockChecksum ( // while ((Sum >> 16) != 0) { Sum = (Sum & 0xffff) + (Sum >> 16); - } - return (UINT16) Sum; + return (UINT16)Sum; } - /** Add two checksums. @@ -1696,11 +1656,11 @@ NetblockChecksum ( UINT16 EFIAPI NetAddChecksum ( - IN UINT16 Checksum1, - IN UINT16 Checksum2 + IN UINT16 Checksum1, + IN UINT16 Checksum2 ) { - UINT32 Sum; + UINT32 Sum; Sum = Checksum1 + Checksum2; @@ -1709,13 +1669,11 @@ NetAddChecksum ( // if ((Sum >> 16) != 0) { Sum = (Sum & 0xffff) + 1; - } - return (UINT16) Sum; + return (UINT16)Sum; } - /** Compute the checksum for a NET_BUF. @@ -1727,20 +1685,20 @@ NetAddChecksum ( UINT16 EFIAPI NetbufChecksum ( - IN NET_BUF *Nbuf + IN NET_BUF *Nbuf ) { - NET_BLOCK_OP *BlockOp; - UINT32 Offset; - UINT16 TotalSum; - UINT16 BlockSum; - UINT32 Index; + NET_BLOCK_OP *BlockOp; + UINT32 Offset; + UINT16 TotalSum; + UINT16 BlockSum; + UINT32 Index; NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); - TotalSum = 0; - Offset = 0; - BlockOp = Nbuf->BlockOp; + TotalSum = 0; + Offset = 0; + BlockOp = Nbuf->BlockOp; for (Index = 0; Index < Nbuf->BlockOpNum; Index++) { if (BlockOp[Index].Size == 0) { @@ -1764,7 +1722,6 @@ NetbufChecksum ( return TotalSum; } - /** Compute the checksum for TCP/UDP pseudo header. @@ -1781,25 +1738,25 @@ NetbufChecksum ( UINT16 EFIAPI NetPseudoHeadChecksum ( - IN IP4_ADDR Src, - IN IP4_ADDR Dst, - IN UINT8 Proto, - IN UINT16 Len + IN IP4_ADDR Src, + IN IP4_ADDR Dst, + IN UINT8 Proto, + IN UINT16 Len ) { - NET_PSEUDO_HDR Hdr; + NET_PSEUDO_HDR Hdr; // // Zero the memory to relieve align problems // ZeroMem (&Hdr, sizeof (Hdr)); - Hdr.SrcIp = Src; - Hdr.DstIp = Dst; - Hdr.Protocol = Proto; - Hdr.Len = HTONS (Len); + Hdr.SrcIp = Src; + Hdr.DstIp = Dst; + Hdr.Protocol = Proto; + Hdr.Len = HTONS (Len); - return NetblockChecksum ((UINT8 *) &Hdr, sizeof (Hdr)); + return NetblockChecksum ((UINT8 *)&Hdr, sizeof (Hdr)); } /** @@ -1818,13 +1775,13 @@ NetPseudoHeadChecksum ( UINT16 EFIAPI NetIp6PseudoHeadChecksum ( - IN EFI_IPv6_ADDRESS *Src, - IN EFI_IPv6_ADDRESS *Dst, - IN UINT8 NextHeader, - IN UINT32 Len + IN EFI_IPv6_ADDRESS *Src, + IN EFI_IPv6_ADDRESS *Dst, + IN UINT8 NextHeader, + IN UINT32 Len ) { - NET_IP6_PSEUDO_HDR Hdr; + NET_IP6_PSEUDO_HDR Hdr; // // Zero the memory to relieve align problems @@ -1837,7 +1794,7 @@ NetIp6PseudoHeadChecksum ( Hdr.NextHeader = NextHeader; Hdr.Len = HTONL (Len); - return NetblockChecksum ((UINT8 *) &Hdr, sizeof (Hdr)); + return NetblockChecksum ((UINT8 *)&Hdr, sizeof (Hdr)); } /** @@ -1853,7 +1810,7 @@ NetIp6PseudoHeadChecksum ( **/ VOID NetIpSecNetbufFree ( - NET_BUF *Nbuf + NET_BUF *Nbuf ) { NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); @@ -1862,7 +1819,6 @@ NetIpSecNetbufFree ( Nbuf->RefCnt--; if (Nbuf->RefCnt == 0) { - // // Update Vector only when NBuf is to be released. That is, // all the sharing of Nbuf increse Vector's RefCnt by one @@ -1883,8 +1839,8 @@ NetIpSecNetbufFree ( if ((Nbuf->Vector->Flag & NET_VECTOR_OWN_FIRST) != 0) { FreePool (Nbuf->Vector->Block[0].Bulk); } + FreePool (Nbuf->Vector); FreePool (Nbuf); } } - diff --git a/NetworkPkg/Library/DxeTcpIoLib/DxeTcpIoLib.c b/NetworkPkg/Library/DxeTcpIoLib/DxeTcpIoLib.c index 6f87a0eada..f378c00f49 100644 --- a/NetworkPkg/Library/DxeTcpIoLib/DxeTcpIoLib.c +++ b/NetworkPkg/Library/DxeTcpIoLib/DxeTcpIoLib.c @@ -31,10 +31,10 @@ TcpIoCommonNotify ( ) { if ((Event == NULL) || (Context == NULL)) { - return ; + return; } - *((BOOLEAN *) Context) = TRUE; + *((BOOLEAN *)Context) = TRUE; } /** @@ -51,12 +51,12 @@ TcpIoCommonNotify ( **/ EFI_STATUS TcpIoGetMapping ( - IN EFI_TCP6_PROTOCOL *Tcp6, - IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData + IN EFI_TCP6_PROTOCOL *Tcp6, + IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData ) { - EFI_STATUS Status; - EFI_EVENT Event; + EFI_STATUS Status; + EFI_EVENT Event; if ((Tcp6 == NULL) || (Tcp6ConfigData == NULL)) { return EFI_INVALID_PARAMETER; @@ -85,7 +85,6 @@ TcpIoGetMapping ( } while (EFI_ERROR (gBS->CheckEvent (Event))) { - Tcp6->Poll (Tcp6); Status = Tcp6->Configure (Tcp6, Tcp6ConfigData); @@ -124,26 +123,26 @@ ON_EXIT: EFI_STATUS EFIAPI TcpIoCreateSocket ( - IN EFI_HANDLE Image, - IN EFI_HANDLE Controller, - IN UINT8 TcpVersion, - IN TCP_IO_CONFIG_DATA *ConfigData, - OUT TCP_IO *TcpIo + IN EFI_HANDLE Image, + IN EFI_HANDLE Controller, + IN UINT8 TcpVersion, + IN TCP_IO_CONFIG_DATA *ConfigData, + OUT TCP_IO *TcpIo ) { - EFI_STATUS Status; - EFI_EVENT Event; - EFI_GUID *ServiceBindingGuid; - EFI_GUID *ProtocolGuid; - VOID **Interface; - EFI_TCP4_OPTION ControlOption; - EFI_TCP4_CONFIG_DATA Tcp4ConfigData; - EFI_TCP4_ACCESS_POINT *AccessPoint4; - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_CONFIG_DATA Tcp6ConfigData; - EFI_TCP6_ACCESS_POINT *AccessPoint6; - EFI_TCP6_PROTOCOL *Tcp6; - EFI_TCP4_RECEIVE_DATA *RxData; + EFI_STATUS Status; + EFI_EVENT Event; + EFI_GUID *ServiceBindingGuid; + EFI_GUID *ProtocolGuid; + VOID **Interface; + EFI_TCP4_OPTION ControlOption; + EFI_TCP4_CONFIG_DATA Tcp4ConfigData; + EFI_TCP4_ACCESS_POINT *AccessPoint4; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_CONFIG_DATA Tcp6ConfigData; + EFI_TCP6_ACCESS_POINT *AccessPoint6; + EFI_TCP6_PROTOCOL *Tcp6; + EFI_TCP4_RECEIVE_DATA *RxData; if ((Image == NULL) || (Controller == NULL) || (ConfigData == NULL) || (TcpIo == NULL)) { return EFI_INVALID_PARAMETER; @@ -157,11 +156,11 @@ TcpIoCreateSocket ( if (TcpVersion == TCP_VERSION_4) { ServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid; ProtocolGuid = &gEfiTcp4ProtocolGuid; - Interface = (VOID **) (&TcpIo->Tcp.Tcp4); + Interface = (VOID **)(&TcpIo->Tcp.Tcp4); } else if (TcpVersion == TCP_VERSION_6) { ServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid; ProtocolGuid = &gEfiTcp6ProtocolGuid; - Interface = (VOID **) (&TcpIo->Tcp.Tcp6); + Interface = (VOID **)(&TcpIo->Tcp.Tcp6); } else { return EFI_UNSUPPORTED; } @@ -194,44 +193,44 @@ TcpIoCreateSocket ( } if (TcpVersion == TCP_VERSION_4) { - Tcp4 = TcpIo->Tcp.Tcp4; + Tcp4 = TcpIo->Tcp.Tcp4; } else { - Tcp6 = TcpIo->Tcp.Tcp6; + Tcp6 = TcpIo->Tcp.Tcp6; } - TcpIo->Image = Image; - TcpIo->Controller = Controller; + TcpIo->Image = Image; + TcpIo->Controller = Controller; // // Set the configuration parameters. // - ControlOption.ReceiveBufferSize = 0x200000; - ControlOption.SendBufferSize = 0x200000; - ControlOption.MaxSynBackLog = 0; - ControlOption.ConnectionTimeout = 0; - ControlOption.DataRetries = 6; - ControlOption.FinTimeout = 0; - ControlOption.TimeWaitTimeout = 0; - ControlOption.KeepAliveProbes = 4; - ControlOption.KeepAliveTime = 0; - ControlOption.KeepAliveInterval = 0; - ControlOption.EnableNagle = FALSE; - ControlOption.EnableTimeStamp = FALSE; - ControlOption.EnableWindowScaling = TRUE; - ControlOption.EnableSelectiveAck = FALSE; - ControlOption.EnablePathMtuDiscovery = FALSE; + ControlOption.ReceiveBufferSize = 0x200000; + ControlOption.SendBufferSize = 0x200000; + ControlOption.MaxSynBackLog = 0; + ControlOption.ConnectionTimeout = 0; + ControlOption.DataRetries = 6; + ControlOption.FinTimeout = 0; + ControlOption.TimeWaitTimeout = 0; + ControlOption.KeepAliveProbes = 4; + ControlOption.KeepAliveTime = 0; + ControlOption.KeepAliveInterval = 0; + ControlOption.EnableNagle = FALSE; + ControlOption.EnableTimeStamp = FALSE; + ControlOption.EnableWindowScaling = TRUE; + ControlOption.EnableSelectiveAck = FALSE; + ControlOption.EnablePathMtuDiscovery = FALSE; if (TcpVersion == TCP_VERSION_4) { - Tcp4ConfigData.TypeOfService = 8; - Tcp4ConfigData.TimeToLive = 255; - Tcp4ConfigData.ControlOption = &ControlOption; + Tcp4ConfigData.TypeOfService = 8; + Tcp4ConfigData.TimeToLive = 255; + Tcp4ConfigData.ControlOption = &ControlOption; - AccessPoint4 = &Tcp4ConfigData.AccessPoint; + AccessPoint4 = &Tcp4ConfigData.AccessPoint; ZeroMem (AccessPoint4, sizeof (EFI_TCP4_ACCESS_POINT)); - AccessPoint4->StationPort = ConfigData->Tcp4IoConfigData.StationPort; - AccessPoint4->RemotePort = ConfigData->Tcp4IoConfigData.RemotePort; - AccessPoint4->ActiveFlag = ConfigData->Tcp4IoConfigData.ActiveFlag; + AccessPoint4->StationPort = ConfigData->Tcp4IoConfigData.StationPort; + AccessPoint4->RemotePort = ConfigData->Tcp4IoConfigData.RemotePort; + AccessPoint4->ActiveFlag = ConfigData->Tcp4IoConfigData.ActiveFlag; CopyMem ( &AccessPoint4->StationAddress, @@ -275,20 +274,19 @@ TcpIoCreateSocket ( } } } else { - Tcp6ConfigData.TrafficClass = 0; - Tcp6ConfigData.HopLimit = 255; - Tcp6ConfigData.ControlOption = (EFI_TCP6_OPTION *) &ControlOption; + Tcp6ConfigData.TrafficClass = 0; + Tcp6ConfigData.HopLimit = 255; + Tcp6ConfigData.ControlOption = (EFI_TCP6_OPTION *)&ControlOption; - AccessPoint6 = &Tcp6ConfigData.AccessPoint; + AccessPoint6 = &Tcp6ConfigData.AccessPoint; ZeroMem (AccessPoint6, sizeof (EFI_TCP6_ACCESS_POINT)); - AccessPoint6->StationPort = ConfigData->Tcp6IoConfigData.StationPort; - AccessPoint6->RemotePort = ConfigData->Tcp6IoConfigData.RemotePort; - AccessPoint6->ActiveFlag = ConfigData->Tcp6IoConfigData.ActiveFlag; + AccessPoint6->StationPort = ConfigData->Tcp6IoConfigData.StationPort; + AccessPoint6->RemotePort = ConfigData->Tcp6IoConfigData.RemotePort; + AccessPoint6->ActiveFlag = ConfigData->Tcp6IoConfigData.ActiveFlag; IP6_COPY_ADDRESS (&AccessPoint6->RemoteAddress, &ConfigData->Tcp6IoConfigData.RemoteIp); - ASSERT (Tcp6 != NULL); // // Configure the TCP6 protocol. @@ -345,7 +343,6 @@ TcpIoCreateSocket ( TcpIo->TxToken.Tcp4Token.CompletionToken.Event = Event; - Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, TPL_NOTIFY, @@ -359,7 +356,7 @@ TcpIoCreateSocket ( TcpIo->RxToken.Tcp4Token.CompletionToken.Event = Event; - RxData = (EFI_TCP4_RECEIVE_DATA *) AllocateZeroPool (sizeof (EFI_TCP4_RECEIVE_DATA)); + RxData = (EFI_TCP4_RECEIVE_DATA *)AllocateZeroPool (sizeof (EFI_TCP4_RECEIVE_DATA)); if (RxData == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_ERROR; @@ -380,7 +377,6 @@ TcpIoCreateSocket ( TcpIo->CloseToken.Tcp4Token.CompletionToken.Event = Event; - return EFI_SUCCESS; ON_ERROR: @@ -399,25 +395,25 @@ ON_ERROR: VOID EFIAPI TcpIoDestroySocket ( - IN TCP_IO *TcpIo + IN TCP_IO *TcpIo ) { - EFI_EVENT Event; - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_PROTOCOL *Tcp6; - UINT8 TcpVersion; - EFI_GUID *ServiceBindingGuid; - EFI_GUID *ProtocolGuid; - EFI_HANDLE ChildHandle; + EFI_EVENT Event; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_PROTOCOL *Tcp6; + UINT8 TcpVersion; + EFI_GUID *ServiceBindingGuid; + EFI_GUID *ProtocolGuid; + EFI_HANDLE ChildHandle; if (TcpIo == NULL) { - return ; + return; } TcpVersion = TcpIo->TcpVersion; if ((TcpVersion != TCP_VERSION_4) && (TcpVersion != TCP_VERSION_6)) { - return ; + return; } Event = TcpIo->ConnToken.Tcp4Token.CompletionToken.Event; @@ -457,25 +453,23 @@ TcpIoDestroySocket ( Tcp4 = NULL; Tcp6 = NULL; - if (TcpVersion == TCP_VERSION_4) { ServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid; ProtocolGuid = &gEfiTcp4ProtocolGuid; - Tcp4 = TcpIo->Tcp.Tcp4; + Tcp4 = TcpIo->Tcp.Tcp4; if (Tcp4 != NULL) { Tcp4->Configure (Tcp4, NULL); } } else { ServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid; ProtocolGuid = &gEfiTcp6ProtocolGuid; - Tcp6 = TcpIo->Tcp.Tcp6; + Tcp6 = TcpIo->Tcp.Tcp6; if (Tcp6 != NULL) { Tcp6->Configure (Tcp6, NULL); } } if ((Tcp4 != NULL) || (Tcp6 != NULL)) { - gBS->CloseProtocol ( TcpIo->Handle, ProtocolGuid, @@ -502,7 +496,6 @@ TcpIoDestroySocket ( } if (ChildHandle != NULL) { - gBS->CloseProtocol ( ChildHandle, ProtocolGuid, @@ -539,13 +532,13 @@ TcpIoDestroySocket ( EFI_STATUS EFIAPI TcpIoConnect ( - IN OUT TCP_IO *TcpIo, - IN EFI_EVENT Timeout OPTIONAL + IN OUT TCP_IO *TcpIo, + IN EFI_EVENT Timeout OPTIONAL ) { - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_PROTOCOL *Tcp6; - EFI_STATUS Status; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_PROTOCOL *Tcp6; + EFI_STATUS Status; if ((TcpIo == NULL) || (TcpIo->Tcp.Tcp4 == NULL)) { return EFI_INVALID_PARAMETER; @@ -584,6 +577,7 @@ TcpIoConnect ( } else { Tcp6->Cancel (Tcp6, &TcpIo->ConnToken.Tcp6Token.CompletionToken); } + Status = EFI_TIMEOUT; } else { Status = TcpIo->ConnToken.Tcp4Token.CompletionToken.Status; @@ -613,14 +607,14 @@ TcpIoConnect ( EFI_STATUS EFIAPI TcpIoAccept ( - IN OUT TCP_IO *TcpIo, - IN EFI_EVENT Timeout OPTIONAL + IN OUT TCP_IO *TcpIo, + IN EFI_EVENT Timeout OPTIONAL ) { - EFI_STATUS Status; - EFI_GUID *ProtocolGuid; - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_PROTOCOL *Tcp6; + EFI_STATUS Status; + EFI_GUID *ProtocolGuid; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_PROTOCOL *Tcp6; if ((TcpIo == NULL) || (TcpIo->Tcp.Tcp4 == NULL)) { return EFI_INVALID_PARAMETER; @@ -659,6 +653,7 @@ TcpIoAccept ( } else { Tcp6->Cancel (Tcp6, &TcpIo->ListenToken.Tcp6Token.CompletionToken); } + Status = EFI_TIMEOUT; } else { Status = TcpIo->ListenToken.Tcp4Token.CompletionToken.Status; @@ -678,12 +673,11 @@ TcpIoAccept ( Status = gBS->OpenProtocol ( TcpIo->ListenToken.Tcp4Token.NewChildHandle, ProtocolGuid, - (VOID **) (&TcpIo->NewTcp.Tcp4), + (VOID **)(&TcpIo->NewTcp.Tcp4), TcpIo->Image, TcpIo->Controller, EFI_OPEN_PROTOCOL_BY_DRIVER ); - } return Status; @@ -698,15 +692,15 @@ TcpIoAccept ( VOID EFIAPI TcpIoReset ( - IN OUT TCP_IO *TcpIo + IN OUT TCP_IO *TcpIo ) { - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_PROTOCOL *Tcp6; - EFI_STATUS Status; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_PROTOCOL *Tcp6; + EFI_STATUS Status; if ((TcpIo == NULL) || (TcpIo->Tcp.Tcp4 == NULL)) { - return ; + return; } TcpIo->IsCloseDone = FALSE; @@ -715,18 +709,18 @@ TcpIoReset ( if (TcpIo->TcpVersion == TCP_VERSION_4) { TcpIo->CloseToken.Tcp4Token.AbortOnClose = TRUE; - Tcp4 = TcpIo->Tcp.Tcp4; - Status = Tcp4->Close (Tcp4, &TcpIo->CloseToken.Tcp4Token); + Tcp4 = TcpIo->Tcp.Tcp4; + Status = Tcp4->Close (Tcp4, &TcpIo->CloseToken.Tcp4Token); } else if (TcpIo->TcpVersion == TCP_VERSION_6) { TcpIo->CloseToken.Tcp6Token.AbortOnClose = TRUE; - Tcp6 = TcpIo->Tcp.Tcp6; - Status = Tcp6->Close (Tcp6, &TcpIo->CloseToken.Tcp6Token); + Tcp6 = TcpIo->Tcp.Tcp6; + Status = Tcp6->Close (Tcp6, &TcpIo->CloseToken.Tcp6Token); } else { - return ; + return; } if (EFI_ERROR (Status)) { - return ; + return; } while (!TcpIo->IsCloseDone) { @@ -738,7 +732,6 @@ TcpIoReset ( } } - /** Transmit the Packet to the other endpoint of the socket. @@ -757,22 +750,21 @@ TcpIoReset ( EFI_STATUS EFIAPI TcpIoTransmit ( - IN TCP_IO *TcpIo, - IN NET_BUF *Packet + IN TCP_IO *TcpIo, + IN NET_BUF *Packet ) { - EFI_STATUS Status; - VOID *Data; - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_PROTOCOL *Tcp6; - UINTN Size; + EFI_STATUS Status; + VOID *Data; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_PROTOCOL *Tcp6; + UINTN Size; - if ((TcpIo == NULL) || (TcpIo->Tcp.Tcp4 == NULL)|| (Packet == NULL)) { + if ((TcpIo == NULL) || (TcpIo->Tcp.Tcp4 == NULL) || (Packet == NULL)) { return EFI_INVALID_PARAMETER; } if (TcpIo->TcpVersion == TCP_VERSION_4) { - Size = sizeof (EFI_TCP4_TRANSMIT_DATA) + (Packet->BlockOpNum - 1) * sizeof (EFI_TCP4_FRAGMENT_DATA); } else if (TcpIo->TcpVersion == TCP_VERSION_6) { @@ -787,19 +779,19 @@ TcpIoTransmit ( return EFI_OUT_OF_RESOURCES; } - ((EFI_TCP4_TRANSMIT_DATA *) Data)->Push = TRUE; - ((EFI_TCP4_TRANSMIT_DATA *) Data)->Urgent = FALSE; - ((EFI_TCP4_TRANSMIT_DATA *) Data)->DataLength = Packet->TotalSize; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->Push = TRUE; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->Urgent = FALSE; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->DataLength = Packet->TotalSize; // // Build the fragment table. // - ((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentCount = Packet->BlockOpNum; + ((EFI_TCP4_TRANSMIT_DATA *)Data)->FragmentCount = Packet->BlockOpNum; NetbufBuildExt ( Packet, - (NET_FRAGMENT *) &((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentTable[0], - &((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentCount + (NET_FRAGMENT *)&((EFI_TCP4_TRANSMIT_DATA *)Data)->FragmentTable[0], + &((EFI_TCP4_TRANSMIT_DATA *)Data)->FragmentCount ); Tcp4 = NULL; @@ -810,8 +802,8 @@ TcpIoTransmit ( // Transmit the packet. // if (TcpIo->TcpVersion == TCP_VERSION_4) { - TcpIo->TxToken.Tcp4Token.Packet.TxData = (EFI_TCP4_TRANSMIT_DATA *) Data; - Tcp4 = TcpIo->Tcp.Tcp4; + TcpIo->TxToken.Tcp4Token.Packet.TxData = (EFI_TCP4_TRANSMIT_DATA *)Data; + Tcp4 = TcpIo->Tcp.Tcp4; if (TcpIo->IsListenDone) { Tcp4 = TcpIo->NewTcp.Tcp4; } @@ -820,10 +812,10 @@ TcpIoTransmit ( goto ON_EXIT; } - Status = Tcp4->Transmit (Tcp4, &TcpIo->TxToken.Tcp4Token); + Status = Tcp4->Transmit (Tcp4, &TcpIo->TxToken.Tcp4Token); } else { - TcpIo->TxToken.Tcp6Token.Packet.TxData = (EFI_TCP6_TRANSMIT_DATA *) Data; - Tcp6 = TcpIo->Tcp.Tcp6; + TcpIo->TxToken.Tcp6Token.Packet.TxData = (EFI_TCP6_TRANSMIT_DATA *)Data; + Tcp6 = TcpIo->Tcp.Tcp6; if (TcpIo->IsListenDone) { Tcp6 = TcpIo->NewTcp.Tcp6; } @@ -832,7 +824,7 @@ TcpIoTransmit ( goto ON_EXIT; } - Status = Tcp6->Transmit (Tcp6, &TcpIo->TxToken.Tcp6Token); + Status = Tcp6->Transmit (Tcp6, &TcpIo->TxToken.Tcp6Token); } if (EFI_ERROR (Status)) { @@ -847,8 +839,8 @@ TcpIoTransmit ( } } - TcpIo->IsTxDone = FALSE; - Status = TcpIo->TxToken.Tcp4Token.CompletionToken.Status; + TcpIo->IsTxDone = FALSE; + Status = TcpIo->TxToken.Tcp4Token.CompletionToken.Status; ON_EXIT: @@ -878,21 +870,21 @@ ON_EXIT: EFI_STATUS EFIAPI TcpIoReceive ( - IN OUT TCP_IO *TcpIo, - IN NET_BUF *Packet, - IN BOOLEAN AsyncMode, - IN EFI_EVENT Timeout OPTIONAL + IN OUT TCP_IO *TcpIo, + IN NET_BUF *Packet, + IN BOOLEAN AsyncMode, + IN EFI_EVENT Timeout OPTIONAL ) { - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_PROTOCOL *Tcp6; - EFI_TCP4_RECEIVE_DATA *RxData; - EFI_STATUS Status; - NET_FRAGMENT *Fragment; - UINT32 FragmentCount; - UINT32 CurrentFragment; - - if ((TcpIo == NULL) || (TcpIo->Tcp.Tcp4 == NULL)|| (Packet == NULL)) { + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_PROTOCOL *Tcp6; + EFI_TCP4_RECEIVE_DATA *RxData; + EFI_STATUS Status; + NET_FRAGMENT *Fragment; + UINT32 FragmentCount; + UINT32 CurrentFragment; + + if ((TcpIo == NULL) || (TcpIo->Tcp.Tcp4 == NULL) || (Packet == NULL)) { return EFI_INVALID_PARAMETER; } @@ -914,7 +906,6 @@ TcpIoReceive ( if (Tcp4 == NULL) { return EFI_DEVICE_ERROR; } - } else if (TcpIo->TcpVersion == TCP_VERSION_6) { Tcp6 = TcpIo->Tcp.Tcp6; @@ -925,7 +916,6 @@ TcpIoReceive ( if (Tcp6 == NULL) { return EFI_DEVICE_ERROR; } - } else { return EFI_UNSUPPORTED; } @@ -936,19 +926,20 @@ TcpIoReceive ( Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } + // // Build the fragment table. // NetbufBuildExt (Packet, Fragment, &FragmentCount); - RxData->FragmentCount = 1; - CurrentFragment = 0; - Status = EFI_SUCCESS; + RxData->FragmentCount = 1; + CurrentFragment = 0; + Status = EFI_SUCCESS; while (CurrentFragment < FragmentCount) { - RxData->DataLength = Fragment[CurrentFragment].Len; - RxData->FragmentTable[0].FragmentLength = Fragment[CurrentFragment].Len; - RxData->FragmentTable[0].FragmentBuffer = Fragment[CurrentFragment].Bulk; + RxData->DataLength = Fragment[CurrentFragment].Len; + RxData->FragmentTable[0].FragmentLength = Fragment[CurrentFragment].Len; + RxData->FragmentTable[0].FragmentBuffer = Fragment[CurrentFragment].Bulk; if (TcpIo->TcpVersion == TCP_VERSION_4) { Status = Tcp4->Receive (Tcp4, &TcpIo->RxToken.Tcp4Token); diff --git a/NetworkPkg/Library/DxeUdpIoLib/DxeUdpIoLib.c b/NetworkPkg/Library/DxeUdpIoLib/DxeUdpIoLib.c index 6777fd79a5..610ea786eb 100644 --- a/NetworkPkg/Library/DxeUdpIoLib/DxeUdpIoLib.c +++ b/NetworkPkg/Library/DxeUdpIoLib/DxeUdpIoLib.c @@ -18,7 +18,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - /** Free a UDP_TX_TOKEN. The TX event is closed. @@ -27,10 +26,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ VOID UdpIoFreeTxToken ( - IN UDP_TX_TOKEN *TxToken + IN UDP_TX_TOKEN *TxToken ) { - if (TxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { gBS->CloseEvent (TxToken->Token.Udp4.Event); } else if (TxToken->UdpIo->UdpVersion == UDP_IO_UDP6_VERSION) { @@ -50,7 +48,7 @@ UdpIoFreeTxToken ( **/ VOID UdpIoFreeRxToken ( - IN UDP_RX_TOKEN *RxToken + IN UDP_RX_TOKEN *RxToken ) { if (RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { @@ -76,15 +74,17 @@ UdpIoFreeRxToken ( VOID EFIAPI UdpIoOnDgramSentDpc ( - IN VOID *Context + IN VOID *Context ) { - UDP_TX_TOKEN *TxToken; + UDP_TX_TOKEN *TxToken; - TxToken = (UDP_TX_TOKEN *) Context; + TxToken = (UDP_TX_TOKEN *)Context; ASSERT (TxToken->Signature == UDP_IO_TX_SIGNATURE); - ASSERT ((TxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || - (TxToken->UdpIo->UdpVersion == UDP_IO_UDP6_VERSION)); + ASSERT ( + (TxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || + (TxToken->UdpIo->UdpVersion == UDP_IO_UDP6_VERSION) + ); RemoveEntryList (&TxToken->Link); @@ -107,8 +107,8 @@ UdpIoOnDgramSentDpc ( VOID EFIAPI UdpIoOnDgramSent ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -126,12 +126,12 @@ UdpIoOnDgramSent ( VOID EFIAPI UdpIoRecycleDgram ( - IN VOID *Context + IN VOID *Context ) { - UDP_RX_TOKEN *RxToken; + UDP_RX_TOKEN *RxToken; - RxToken = (UDP_RX_TOKEN *) Context; + RxToken = (UDP_RX_TOKEN *)Context; if (RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { gBS->SignalEvent (RxToken->Token.Udp4.Packet.RxData->RecycleSignal); @@ -156,26 +156,30 @@ UdpIoRecycleDgram ( VOID EFIAPI UdpIoOnDgramRcvdDpc ( - IN VOID *Context + IN VOID *Context ) { - EFI_STATUS Status; - VOID *Token; - VOID *RxData; - VOID *Session; - UDP_RX_TOKEN *RxToken; - UDP_END_POINT EndPoint; - NET_BUF *Netbuf; + EFI_STATUS Status; + VOID *Token; + VOID *RxData; + VOID *Session; + UDP_RX_TOKEN *RxToken; + UDP_END_POINT EndPoint; + NET_BUF *Netbuf; - RxToken = (UDP_RX_TOKEN *) Context; + RxToken = (UDP_RX_TOKEN *)Context; - ZeroMem (&EndPoint, sizeof(UDP_END_POINT)); + ZeroMem (&EndPoint, sizeof (UDP_END_POINT)); - ASSERT ((RxToken->Signature == UDP_IO_RX_SIGNATURE) && - (RxToken == RxToken->UdpIo->RecvRequest)); + ASSERT ( + (RxToken->Signature == UDP_IO_RX_SIGNATURE) && + (RxToken == RxToken->UdpIo->RecvRequest) + ); - ASSERT ((RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || - (RxToken->UdpIo->UdpVersion == UDP_IO_UDP6_VERSION)); + ASSERT ( + (RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || + (RxToken->UdpIo->UdpVersion == UDP_IO_UDP6_VERSION) + ); // // Clear the receive request first in case that the caller @@ -185,15 +189,15 @@ UdpIoOnDgramRcvdDpc ( if (RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { Token = &RxToken->Token.Udp4; - RxData = ((EFI_UDP4_COMPLETION_TOKEN *) Token)->Packet.RxData; - Status = ((EFI_UDP4_COMPLETION_TOKEN *) Token)->Status; + RxData = ((EFI_UDP4_COMPLETION_TOKEN *)Token)->Packet.RxData; + Status = ((EFI_UDP4_COMPLETION_TOKEN *)Token)->Status; } else { Token = &RxToken->Token.Udp6; - RxData = ((EFI_UDP6_COMPLETION_TOKEN *) Token)->Packet.RxData; - Status = ((EFI_UDP6_COMPLETION_TOKEN *) Token)->Status; + RxData = ((EFI_UDP6_COMPLETION_TOKEN *)Token)->Packet.RxData; + Status = ((EFI_UDP6_COMPLETION_TOKEN *)Token)->Status; } - if (EFI_ERROR (Status) || RxData == NULL) { + if (EFI_ERROR (Status) || (RxData == NULL)) { if (Status != EFI_ABORTED) { // // Invoke the CallBack only if the reception is not actively aborted. @@ -209,7 +213,7 @@ UdpIoOnDgramRcvdDpc ( // Build a NET_BUF from the UDP receive data, then deliver it up. // if (RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { - if (((EFI_UDP4_RECEIVE_DATA *) RxData)->DataLength == 0) { + if (((EFI_UDP4_RECEIVE_DATA *)RxData)->DataLength == 0) { // // Discard zero length data payload packet. // @@ -217,42 +221,42 @@ UdpIoOnDgramRcvdDpc ( } Netbuf = NetbufFromExt ( - (NET_FRAGMENT *)((EFI_UDP4_RECEIVE_DATA *) RxData)->FragmentTable, - ((EFI_UDP4_RECEIVE_DATA *) RxData)->FragmentCount, + (NET_FRAGMENT *)((EFI_UDP4_RECEIVE_DATA *)RxData)->FragmentTable, + ((EFI_UDP4_RECEIVE_DATA *)RxData)->FragmentCount, 0, - (UINT32) RxToken->HeadLen, + (UINT32)RxToken->HeadLen, UdpIoRecycleDgram, RxToken ); if (Netbuf == NULL) { - gBS->SignalEvent (((EFI_UDP4_RECEIVE_DATA *) RxData)->RecycleSignal); + gBS->SignalEvent (((EFI_UDP4_RECEIVE_DATA *)RxData)->RecycleSignal); RxToken->CallBack (NULL, NULL, EFI_OUT_OF_RESOURCES, RxToken->Context); UdpIoFreeRxToken (RxToken); return; } - Session = &((EFI_UDP4_RECEIVE_DATA *) RxData)->UdpSession; - EndPoint.LocalPort = ((EFI_UDP4_SESSION_DATA *) Session)->DestinationPort; - EndPoint.RemotePort = ((EFI_UDP4_SESSION_DATA *) Session)->SourcePort; + Session = &((EFI_UDP4_RECEIVE_DATA *)RxData)->UdpSession; + EndPoint.LocalPort = ((EFI_UDP4_SESSION_DATA *)Session)->DestinationPort; + EndPoint.RemotePort = ((EFI_UDP4_SESSION_DATA *)Session)->SourcePort; CopyMem ( &EndPoint.LocalAddr, - &((EFI_UDP4_SESSION_DATA *) Session)->DestinationAddress, + &((EFI_UDP4_SESSION_DATA *)Session)->DestinationAddress, sizeof (EFI_IPv4_ADDRESS) ); CopyMem ( &EndPoint.RemoteAddr, - &((EFI_UDP4_SESSION_DATA *) Session)->SourceAddress, + &((EFI_UDP4_SESSION_DATA *)Session)->SourceAddress, sizeof (EFI_IPv4_ADDRESS) ); EndPoint.LocalAddr.Addr[0] = NTOHL (EndPoint.LocalAddr.Addr[0]); EndPoint.RemoteAddr.Addr[0] = NTOHL (EndPoint.RemoteAddr.Addr[0]); } else { - if (((EFI_UDP6_RECEIVE_DATA *) RxData)->DataLength == 0) { + if (((EFI_UDP6_RECEIVE_DATA *)RxData)->DataLength == 0) { // // Discard zero length data payload packet. // @@ -260,35 +264,35 @@ UdpIoOnDgramRcvdDpc ( } Netbuf = NetbufFromExt ( - (NET_FRAGMENT *)((EFI_UDP6_RECEIVE_DATA *) RxData)->FragmentTable, - ((EFI_UDP6_RECEIVE_DATA *) RxData)->FragmentCount, + (NET_FRAGMENT *)((EFI_UDP6_RECEIVE_DATA *)RxData)->FragmentTable, + ((EFI_UDP6_RECEIVE_DATA *)RxData)->FragmentCount, 0, - (UINT32) RxToken->HeadLen, + (UINT32)RxToken->HeadLen, UdpIoRecycleDgram, RxToken ); if (Netbuf == NULL) { - gBS->SignalEvent (((EFI_UDP6_RECEIVE_DATA *) RxData)->RecycleSignal); + gBS->SignalEvent (((EFI_UDP6_RECEIVE_DATA *)RxData)->RecycleSignal); RxToken->CallBack (NULL, NULL, EFI_OUT_OF_RESOURCES, RxToken->Context); UdpIoFreeRxToken (RxToken); return; } - Session = &((EFI_UDP6_RECEIVE_DATA *) RxData)->UdpSession; - EndPoint.LocalPort = ((EFI_UDP6_SESSION_DATA *) Session)->DestinationPort; - EndPoint.RemotePort = ((EFI_UDP6_SESSION_DATA *) Session)->SourcePort; + Session = &((EFI_UDP6_RECEIVE_DATA *)RxData)->UdpSession; + EndPoint.LocalPort = ((EFI_UDP6_SESSION_DATA *)Session)->DestinationPort; + EndPoint.RemotePort = ((EFI_UDP6_SESSION_DATA *)Session)->SourcePort; CopyMem ( &EndPoint.LocalAddr, - &((EFI_UDP6_SESSION_DATA *) Session)->DestinationAddress, + &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress, sizeof (EFI_IPv6_ADDRESS) ); CopyMem ( &EndPoint.RemoteAddr, - &((EFI_UDP6_SESSION_DATA *) Session)->SourceAddress, + &((EFI_UDP6_SESSION_DATA *)Session)->SourceAddress, sizeof (EFI_IPv6_ADDRESS) ); @@ -301,10 +305,10 @@ UdpIoOnDgramRcvdDpc ( Resume: if (RxToken->UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { - gBS->SignalEvent (((EFI_UDP4_RECEIVE_DATA *) RxData)->RecycleSignal); + gBS->SignalEvent (((EFI_UDP4_RECEIVE_DATA *)RxData)->RecycleSignal); RxToken->UdpIo->Protocol.Udp4->Receive (RxToken->UdpIo->Protocol.Udp4, &RxToken->Token.Udp4); } else { - gBS->SignalEvent (((EFI_UDP6_RECEIVE_DATA *) RxData)->RecycleSignal); + gBS->SignalEvent (((EFI_UDP6_RECEIVE_DATA *)RxData)->RecycleSignal); RxToken->UdpIo->Protocol.Udp6->Receive (RxToken->UdpIo->Protocol.Udp6, &RxToken->Token.Udp6); } } @@ -319,8 +323,8 @@ Resume: VOID EFIAPI UdpIoOnDgramRcvd ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { // @@ -342,17 +346,19 @@ UdpIoOnDgramRcvd ( **/ UDP_RX_TOKEN * UdpIoCreateRxToken ( - IN UDP_IO *UdpIo, - IN UDP_IO_CALLBACK CallBack, - IN VOID *Context, - IN UINT32 HeadLen + IN UDP_IO *UdpIo, + IN UDP_IO_CALLBACK CallBack, + IN VOID *Context, + IN UINT32 HeadLen ) { - UDP_RX_TOKEN *Token; - EFI_STATUS Status; + UDP_RX_TOKEN *Token; + EFI_STATUS Status; - ASSERT ((UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || - (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION)); + ASSERT ( + (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || + (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION) + ); Token = AllocatePool (sizeof (UDP_RX_TOKEN)); @@ -360,14 +366,13 @@ UdpIoCreateRxToken ( return NULL; } - Token->Signature = UDP_IO_RX_SIGNATURE; - Token->UdpIo = UdpIo; - Token->CallBack = CallBack; - Token->Context = Context; - Token->HeadLen = HeadLen; + Token->Signature = UDP_IO_RX_SIGNATURE; + Token->UdpIo = UdpIo; + Token->CallBack = CallBack; + Token->Context = Context; + Token->HeadLen = HeadLen; if (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { - Token->Token.Udp4.Status = EFI_NOT_READY; Token->Token.Udp4.Packet.RxData = NULL; @@ -378,8 +383,7 @@ UdpIoCreateRxToken ( Token, &Token->Token.Udp4.Event ); - } else { - + } else { Token->Token.Udp6.Status = EFI_NOT_READY; Token->Token.Udp6.Packet.RxData = NULL; @@ -392,7 +396,6 @@ UdpIoCreateRxToken ( ); } - if (EFI_ERROR (Status)) { FreePool (Token); return NULL; @@ -420,25 +423,27 @@ UdpIoCreateRxToken ( **/ UDP_TX_TOKEN * UdpIoCreateTxToken ( - IN UDP_IO *UdpIo, - IN NET_BUF *Packet, - IN UDP_END_POINT *EndPoint OPTIONAL, - IN EFI_IP_ADDRESS *Gateway OPTIONAL, - IN UDP_IO_CALLBACK CallBack, - IN VOID *Context + IN UDP_IO *UdpIo, + IN NET_BUF *Packet, + IN UDP_END_POINT *EndPoint OPTIONAL, + IN EFI_IP_ADDRESS *Gateway OPTIONAL, + IN UDP_IO_CALLBACK CallBack, + IN VOID *Context ) { - UDP_TX_TOKEN *TxToken; - VOID *Token; - VOID *Data; - EFI_STATUS Status; - UINT32 Count; - UINTN Size; - IP4_ADDR Ip; + UDP_TX_TOKEN *TxToken; + VOID *Token; + VOID *Data; + EFI_STATUS Status; + UINT32 Count; + UINTN Size; + IP4_ADDR Ip; ASSERT (Packet != NULL); - ASSERT ((UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || - (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION)); + ASSERT ( + (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || + (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION) + ); if (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { Size = sizeof (UDP_TX_TOKEN) + sizeof (EFI_UDP4_FRAGMENT_DATA) * (Packet->BlockOpNum - 1); @@ -455,24 +460,23 @@ UdpIoCreateTxToken ( TxToken->Signature = UDP_IO_TX_SIGNATURE; InitializeListHead (&TxToken->Link); - TxToken->UdpIo = UdpIo; - TxToken->CallBack = CallBack; - TxToken->Packet = Packet; - TxToken->Context = Context; + TxToken->UdpIo = UdpIo; + TxToken->CallBack = CallBack; + TxToken->Packet = Packet; + TxToken->Context = Context; - Token = &(TxToken->Token); - Count = Packet->BlockOpNum; + Token = &(TxToken->Token); + Count = Packet->BlockOpNum; if (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { - - ((EFI_UDP4_COMPLETION_TOKEN *) Token)->Status = EFI_NOT_READY; + ((EFI_UDP4_COMPLETION_TOKEN *)Token)->Status = EFI_NOT_READY; Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, TPL_NOTIFY, UdpIoOnDgramSent, TxToken, - &((EFI_UDP4_COMPLETION_TOKEN *) Token)->Event + &((EFI_UDP4_COMPLETION_TOKEN *)Token)->Event ); if (EFI_ERROR (Status)) { @@ -480,20 +484,20 @@ UdpIoCreateTxToken ( return NULL; } - Data = &(TxToken->Data.Udp4); - ((EFI_UDP4_COMPLETION_TOKEN *) Token)->Packet.TxData = Data; + Data = &(TxToken->Data.Udp4); + ((EFI_UDP4_COMPLETION_TOKEN *)Token)->Packet.TxData = Data; - ((EFI_UDP4_TRANSMIT_DATA *) Data)->UdpSessionData = NULL; - ((EFI_UDP4_TRANSMIT_DATA *) Data)->GatewayAddress = NULL; - ((EFI_UDP4_TRANSMIT_DATA *) Data)->DataLength = Packet->TotalSize; + ((EFI_UDP4_TRANSMIT_DATA *)Data)->UdpSessionData = NULL; + ((EFI_UDP4_TRANSMIT_DATA *)Data)->GatewayAddress = NULL; + ((EFI_UDP4_TRANSMIT_DATA *)Data)->DataLength = Packet->TotalSize; NetbufBuildExt ( Packet, - (NET_FRAGMENT *)((EFI_UDP4_TRANSMIT_DATA *) Data)->FragmentTable, + (NET_FRAGMENT *)((EFI_UDP4_TRANSMIT_DATA *)Data)->FragmentTable, &Count ); - ((EFI_UDP4_TRANSMIT_DATA *) Data)->FragmentCount = Count; + ((EFI_UDP4_TRANSMIT_DATA *)Data)->FragmentCount = Count; if (EndPoint != NULL) { Ip = HTONL (EndPoint->LocalAddr.Addr[0]); @@ -510,27 +514,25 @@ UdpIoCreateTxToken ( sizeof (EFI_IPv4_ADDRESS) ); - TxToken->Session.Udp4.SourcePort = EndPoint->LocalPort; - TxToken->Session.Udp4.DestinationPort = EndPoint->RemotePort; - ((EFI_UDP4_TRANSMIT_DATA *) Data)->UdpSessionData = &(TxToken->Session.Udp4); + TxToken->Session.Udp4.SourcePort = EndPoint->LocalPort; + TxToken->Session.Udp4.DestinationPort = EndPoint->RemotePort; + ((EFI_UDP4_TRANSMIT_DATA *)Data)->UdpSessionData = &(TxToken->Session.Udp4); } - if (Gateway != NULL && (Gateway->Addr[0] != 0)) { + if ((Gateway != NULL) && (Gateway->Addr[0] != 0)) { Ip = HTONL (Gateway->Addr[0]); CopyMem (&TxToken->Gateway, &Ip, sizeof (EFI_IPv4_ADDRESS)); - ((EFI_UDP4_TRANSMIT_DATA *) Data)->GatewayAddress = &TxToken->Gateway; + ((EFI_UDP4_TRANSMIT_DATA *)Data)->GatewayAddress = &TxToken->Gateway; } - } else { - - ((EFI_UDP6_COMPLETION_TOKEN *) Token)->Status = EFI_NOT_READY; + ((EFI_UDP6_COMPLETION_TOKEN *)Token)->Status = EFI_NOT_READY; Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, TPL_NOTIFY, UdpIoOnDgramSent, TxToken, - &((EFI_UDP6_COMPLETION_TOKEN *) Token)->Event + &((EFI_UDP6_COMPLETION_TOKEN *)Token)->Event ); if (EFI_ERROR (Status)) { @@ -538,35 +540,35 @@ UdpIoCreateTxToken ( return NULL; } - Data = &(TxToken->Data.Udp6); - ((EFI_UDP6_COMPLETION_TOKEN *) Token)->Packet.TxData = Data; - ((EFI_UDP6_TRANSMIT_DATA *) Data)->UdpSessionData = NULL; - ((EFI_UDP6_TRANSMIT_DATA *) Data)->DataLength = Packet->TotalSize; + Data = &(TxToken->Data.Udp6); + ((EFI_UDP6_COMPLETION_TOKEN *)Token)->Packet.TxData = Data; + ((EFI_UDP6_TRANSMIT_DATA *)Data)->UdpSessionData = NULL; + ((EFI_UDP6_TRANSMIT_DATA *)Data)->DataLength = Packet->TotalSize; NetbufBuildExt ( Packet, - (NET_FRAGMENT *)((EFI_UDP6_TRANSMIT_DATA *) Data)->FragmentTable, + (NET_FRAGMENT *)((EFI_UDP6_TRANSMIT_DATA *)Data)->FragmentTable, &Count ); - ((EFI_UDP6_TRANSMIT_DATA *) Data)->FragmentCount = Count; + ((EFI_UDP6_TRANSMIT_DATA *)Data)->FragmentCount = Count; if (EndPoint != NULL) { CopyMem ( &TxToken->Session.Udp6.SourceAddress, &EndPoint->LocalAddr.v6, - sizeof(EFI_IPv6_ADDRESS) + sizeof (EFI_IPv6_ADDRESS) ); CopyMem ( &TxToken->Session.Udp6.DestinationAddress, &EndPoint->RemoteAddr.v6, - sizeof(EFI_IPv6_ADDRESS) + sizeof (EFI_IPv6_ADDRESS) ); - TxToken->Session.Udp6.SourcePort = EndPoint->LocalPort; - TxToken->Session.Udp6.DestinationPort = EndPoint->RemotePort; - ((EFI_UDP6_TRANSMIT_DATA *) Data)->UdpSessionData = &(TxToken->Session.Udp6); + TxToken->Session.Udp6.SourcePort = EndPoint->LocalPort; + TxToken->Session.Udp6.DestinationPort = EndPoint->RemotePort; + ((EFI_UDP6_TRANSMIT_DATA *)Data)->UdpSessionData = &(TxToken->Session.Udp6); } } @@ -598,15 +600,15 @@ UdpIoCreateTxToken ( UDP_IO * EFIAPI UdpIoCreateIo ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE ImageHandle, - IN UDP_IO_CONFIG Configure, - IN UINT8 UdpVersion, - IN VOID *Context + IN EFI_HANDLE Controller, + IN EFI_HANDLE ImageHandle, + IN UDP_IO_CONFIG Configure, + IN UINT8 UdpVersion, + IN VOID *Context ) { - UDP_IO *UdpIo; - EFI_STATUS Status; + UDP_IO *UdpIo; + EFI_STATUS Status; ASSERT (Configure != NULL); ASSERT ((UdpVersion == UDP_IO_UDP4_VERSION) || (UdpVersion == UDP_IO_UDP6_VERSION)); @@ -617,17 +619,17 @@ UdpIoCreateIo ( return NULL; } - UdpIo->UdpVersion = UdpVersion; - UdpIo->Signature = UDP_IO_SIGNATURE; + UdpIo->UdpVersion = UdpVersion; + UdpIo->Signature = UDP_IO_SIGNATURE; InitializeListHead (&UdpIo->Link); - UdpIo->RefCnt = 1; + UdpIo->RefCnt = 1; - UdpIo->Controller = Controller; - UdpIo->Image = ImageHandle; + UdpIo->Controller = Controller; + UdpIo->Image = ImageHandle; InitializeListHead (&UdpIo->SentDatagram); - UdpIo->RecvRequest = NULL; - UdpIo->UdpHandle = NULL; + UdpIo->RecvRequest = NULL; + UdpIo->UdpHandle = NULL; if (UdpVersion == UDP_IO_UDP4_VERSION) { // @@ -647,7 +649,7 @@ UdpIoCreateIo ( Status = gBS->OpenProtocol ( UdpIo->UdpHandle, &gEfiUdp4ProtocolGuid, - (VOID **) &UdpIo->Protocol.Udp4, + (VOID **)&UdpIo->Protocol.Udp4, ImageHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -672,9 +674,7 @@ UdpIoCreateIo ( if (EFI_ERROR (Status)) { goto CLOSE_PROTOCOL; } - } else { - Status = NetLibCreateServiceChild ( Controller, ImageHandle, @@ -689,7 +689,7 @@ UdpIoCreateIo ( Status = gBS->OpenProtocol ( UdpIo->UdpHandle, &gEfiUdp6ProtocolGuid, - (VOID **) &UdpIo->Protocol.Udp6, + (VOID **)&UdpIo->Protocol.Udp6, ImageHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -763,24 +763,25 @@ FREE_MEM: VOID EFIAPI UdpIoCancelDgrams ( - IN UDP_IO *UdpIo, - IN EFI_STATUS IoStatus, - IN UDP_IO_TO_CANCEL ToCancel OPTIONAL, - IN VOID *Context OPTIONAL + IN UDP_IO *UdpIo, + IN EFI_STATUS IoStatus, + IN UDP_IO_TO_CANCEL ToCancel OPTIONAL, + IN VOID *Context OPTIONAL ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - UDP_TX_TOKEN *TxToken; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + UDP_TX_TOKEN *TxToken; - ASSERT ((UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || - (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION)); + ASSERT ( + (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || + (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION) + ); NET_LIST_FOR_EACH_SAFE (Entry, Next, &UdpIo->SentDatagram) { TxToken = NET_LIST_USER_STRUCT (Entry, UDP_TX_TOKEN, Link); if ((ToCancel == NULL) || (ToCancel (TxToken, Context))) { - if (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { UdpIo->Protocol.Udp4->Cancel (UdpIo->Protocol.Udp4, &TxToken->Token.Udp4); } else { @@ -806,14 +807,16 @@ UdpIoCancelDgrams ( EFI_STATUS EFIAPI UdpIoFreeIo ( - IN UDP_IO *UdpIo + IN UDP_IO *UdpIo ) { - EFI_STATUS Status; - UDP_RX_TOKEN *RxToken; + EFI_STATUS Status; + UDP_RX_TOKEN *RxToken; - ASSERT ((UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || - (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION)); + ASSERT ( + (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || + (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION) + ); // // Cancel all the sent datagram and receive requests. The @@ -826,7 +829,6 @@ UdpIoFreeIo ( UdpIoCancelDgrams (UdpIo, EFI_ABORTED, NULL, NULL); if (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) { - if ((RxToken = UdpIo->RecvRequest) != NULL) { Status = UdpIo->Protocol.Udp4->Cancel (UdpIo->Protocol.Udp4, &RxToken->Token.Udp4); if (EFI_ERROR (Status)) { @@ -856,9 +858,7 @@ UdpIoFreeIo ( if (EFI_ERROR (Status)) { return Status; } - } else { - if ((RxToken = UdpIo->RecvRequest) != NULL) { Status = UdpIo->Protocol.Udp6->Cancel (UdpIo->Protocol.Udp6, &RxToken->Token.Udp6); if (EFI_ERROR (Status)) { @@ -870,11 +870,11 @@ UdpIoFreeIo ( // Close then destroy the Udp6 child // Status = gBS->CloseProtocol ( - UdpIo->UdpHandle, - &gEfiUdp6ProtocolGuid, - UdpIo->Image, - UdpIo->Controller - ); + UdpIo->UdpHandle, + &gEfiUdp6ProtocolGuid, + UdpIo->Image, + UdpIo->Controller + ); if (EFI_ERROR (Status)) { return Status; } @@ -890,7 +890,7 @@ UdpIoFreeIo ( } } - if (!IsListEmpty(&UdpIo->Link)) { + if (!IsListEmpty (&UdpIo->Link)) { RemoveEntryList (&UdpIo->Link); } @@ -898,7 +898,6 @@ UdpIoFreeIo ( return EFI_SUCCESS; } - /** Clean up the UDP_IO without freeing it. The function is called when user wants to re-use the UDP_IO later. @@ -914,13 +913,15 @@ UdpIoFreeIo ( VOID EFIAPI UdpIoCleanIo ( - IN UDP_IO *UdpIo + IN UDP_IO *UdpIo ) { - UDP_RX_TOKEN *RxToken; + UDP_RX_TOKEN *RxToken; - ASSERT ((UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || - (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION)); + ASSERT ( + (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || + (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION) + ); // // Cancel all the sent datagram and receive requests. @@ -933,7 +934,6 @@ UdpIoCleanIo ( } UdpIo->Protocol.Udp4->Configure (UdpIo->Protocol.Udp4, NULL); - } else { if ((RxToken = UdpIo->RecvRequest) != NULL) { UdpIo->Protocol.Udp6->Cancel (UdpIo->Protocol.Udp6, &RxToken->Token.Udp6); @@ -969,19 +969,21 @@ UdpIoCleanIo ( EFI_STATUS EFIAPI UdpIoSendDatagram ( - IN UDP_IO *UdpIo, - IN NET_BUF *Packet, - IN UDP_END_POINT *EndPoint OPTIONAL, - IN EFI_IP_ADDRESS *Gateway OPTIONAL, - IN UDP_IO_CALLBACK CallBack, - IN VOID *Context + IN UDP_IO *UdpIo, + IN NET_BUF *Packet, + IN UDP_END_POINT *EndPoint OPTIONAL, + IN EFI_IP_ADDRESS *Gateway OPTIONAL, + IN UDP_IO_CALLBACK CallBack, + IN VOID *Context ) { - UDP_TX_TOKEN *TxToken; - EFI_STATUS Status; + UDP_TX_TOKEN *TxToken; + EFI_STATUS Status; - ASSERT ((UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || - (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION)); + ASSERT ( + (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || + (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION) + ); TxToken = UdpIoCreateTxToken (UdpIo, Packet, EndPoint, Gateway, CallBack, Context); @@ -1010,7 +1012,6 @@ UdpIoSendDatagram ( return EFI_SUCCESS; } - /** The select function to cancel a single sent datagram. @@ -1023,13 +1024,13 @@ UdpIoSendDatagram ( BOOLEAN EFIAPI UdpIoCancelSingleDgram ( - IN UDP_TX_TOKEN *Token, - IN VOID *Context + IN UDP_TX_TOKEN *Token, + IN VOID *Context ) { - NET_BUF *Packet; + NET_BUF *Packet; - Packet = (NET_BUF *) Context; + Packet = (NET_BUF *)Context; if (Token->Packet == Packet) { return TRUE; @@ -1048,8 +1049,8 @@ UdpIoCancelSingleDgram ( VOID EFIAPI UdpIoCancelSentDatagram ( - IN UDP_IO *UdpIo, - IN NET_BUF *Packet + IN UDP_IO *UdpIo, + IN NET_BUF *Packet ) { UdpIoCancelDgrams (UdpIo, EFI_ABORTED, UdpIoCancelSingleDgram, Packet); @@ -1081,17 +1082,19 @@ UdpIoCancelSentDatagram ( EFI_STATUS EFIAPI UdpIoRecvDatagram ( - IN UDP_IO *UdpIo, - IN UDP_IO_CALLBACK CallBack, - IN VOID *Context, - IN UINT32 HeadLen + IN UDP_IO *UdpIo, + IN UDP_IO_CALLBACK CallBack, + IN VOID *Context, + IN UINT32 HeadLen ) { - UDP_RX_TOKEN *RxToken; - EFI_STATUS Status; + UDP_RX_TOKEN *RxToken; + EFI_STATUS Status; - ASSERT ((UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || - (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION)); + ASSERT ( + (UdpIo->UdpVersion == UDP_IO_UDP4_VERSION) || + (UdpIo->UdpVersion == UDP_IO_UDP6_VERSION) + ); if (UdpIo->RecvRequest != NULL) { return EFI_ALREADY_STARTED; diff --git a/NetworkPkg/MnpDxe/ComponentName.c b/NetworkPkg/MnpDxe/ComponentName.c index fe85c3bc23..190d5b5c65 100644 --- a/NetworkPkg/MnpDxe/ComponentName.c +++ b/NetworkPkg/MnpDxe/ComponentName.c @@ -11,7 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // EFI Component Name Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gMnpComponentName = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gMnpComponentName = { MnpComponentNameGetDriverName, MnpComponentNameGetControllerName, "eng" @@ -21,12 +21,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gMnpComponentName = // EFI Component Name 2 Protocol // GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gMnpComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) MnpComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) MnpComponentNameGetControllerName, + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)MnpComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)MnpComponentNameGetControllerName, "en" }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mMnpDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mMnpDriverNameTable[] = { { "eng;en", L"MNP Network Service Driver" @@ -37,7 +37,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mMnpDriverNameTable[ } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gMnpControllerNameTable = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gMnpControllerNameTable = NULL; /** Retrieves a Unicode string that is the user readable name of the driver. @@ -81,9 +81,9 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gMnpControllerNameTab EFI_STATUS EFIAPI MnpComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName ) { return LookupUnicodeString2 ( @@ -91,7 +91,7 @@ MnpComponentNameGetDriverName ( This->SupportedLanguages, mMnpDriverNameTable, DriverName, - (BOOLEAN) (This == &gMnpComponentName) + (BOOLEAN)(This == &gMnpComponentName) ); } @@ -107,7 +107,7 @@ MnpComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp + IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp ) { EFI_STATUS Status; @@ -146,6 +146,7 @@ UpdateName ( SnpModeData.CurrentAddress.Addr[Index] ); } + ASSERT (OffSet > 0); // // Remove the last '-' @@ -267,11 +268,11 @@ UpdateName ( EFI_STATUS EFIAPI MnpComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { EFI_STATUS Status; diff --git a/NetworkPkg/MnpDxe/ComponentName.h b/NetworkPkg/MnpDxe/ComponentName.h index 201c6da11a..9718b60a8f 100644 --- a/NetworkPkg/MnpDxe/ComponentName.h +++ b/NetworkPkg/MnpDxe/ComponentName.h @@ -12,9 +12,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include -extern EFI_COMPONENT_NAME2_PROTOCOL gMnpComponentName2; -extern EFI_COMPONENT_NAME_PROTOCOL gMnpComponentName; -extern EFI_UNICODE_STRING_TABLE *gMnpControllerNameTable; +extern EFI_COMPONENT_NAME2_PROTOCOL gMnpComponentName2; +extern EFI_COMPONENT_NAME_PROTOCOL gMnpComponentName; +extern EFI_UNICODE_STRING_TABLE *gMnpControllerNameTable; /** Retrieves a Unicode string that is the user readable name of the driver. @@ -58,9 +58,9 @@ extern EFI_UNICODE_STRING_TABLE *gMnpControllerNameTable; EFI_STATUS EFIAPI MnpComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName ); /** @@ -134,11 +134,11 @@ MnpComponentNameGetDriverName ( EFI_STATUS EFIAPI MnpComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); #endif diff --git a/NetworkPkg/MnpDxe/MnpConfig.c b/NetworkPkg/MnpDxe/MnpConfig.c index 1e9b390586..93587d53aa 100644 --- a/NetworkPkg/MnpDxe/MnpConfig.c +++ b/NetworkPkg/MnpDxe/MnpConfig.c @@ -9,12 +9,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "MnpImpl.h" #include "MnpVlan.h" -EFI_SERVICE_BINDING_PROTOCOL mMnpServiceBindingProtocol = { +EFI_SERVICE_BINDING_PROTOCOL mMnpServiceBindingProtocol = { MnpServiceBindingCreateChild, MnpServiceBindingDestroyChild }; -EFI_MANAGED_NETWORK_PROTOCOL mMnpProtocolTemplate = { +EFI_MANAGED_NETWORK_PROTOCOL mMnpProtocolTemplate = { MnpGetModeData, MnpConfigure, MnpMcastIpToMac, @@ -25,7 +25,7 @@ EFI_MANAGED_NETWORK_PROTOCOL mMnpProtocolTemplate = { MnpPoll }; -EFI_MANAGED_NETWORK_CONFIG_DATA mMnpDefaultConfigData = { +EFI_MANAGED_NETWORK_CONFIG_DATA mMnpDefaultConfigData = { 10000000, 10000000, 0, @@ -52,8 +52,8 @@ EFI_MANAGED_NETWORK_CONFIG_DATA mMnpDefaultConfigData = { **/ EFI_STATUS MnpAddFreeNbuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN UINTN Count + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN UINTN Count ) { EFI_STATUS Status; @@ -88,7 +88,6 @@ MnpAddFreeNbuf ( return Status; } - /** Allocate a free NET_BUF from MnpDeviceData->FreeNbufQue. If there is none in the queue, first try to allocate some and add them into the queue, then @@ -102,13 +101,13 @@ MnpAddFreeNbuf ( **/ NET_BUF * MnpAllocNbuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData + IN OUT MNP_DEVICE_DATA *MnpDeviceData ) { - EFI_STATUS Status; - NET_BUF_QUEUE *FreeNbufQue; - NET_BUF *Nbuf; - EFI_TPL OldTpl; + EFI_STATUS Status; + NET_BUF_QUEUE *FreeNbufQue; + NET_BUF *Nbuf; + EFI_TPL OldTpl; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); @@ -122,8 +121,8 @@ MnpAllocNbuf ( if ((MnpDeviceData->NbufCnt + MNP_NET_BUFFER_INCREASEMENT) > MNP_MAX_NET_BUFFER_NUM) { DEBUG ( (DEBUG_ERROR, - "MnpAllocNbuf: The maximum NET_BUF size is reached for MNP driver instance %p.\n", - MnpDeviceData) + "MnpAllocNbuf: The maximum NET_BUF size is reached for MNP driver instance %p.\n", + MnpDeviceData) ); Nbuf = NULL; @@ -134,8 +133,8 @@ MnpAllocNbuf ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "MnpAllocNbuf: Failed to add NET_BUFs into the FreeNbufQue, %r.\n", - Status) + "MnpAllocNbuf: Failed to add NET_BUFs into the FreeNbufQue, %r.\n", + Status) ); // @@ -160,7 +159,6 @@ ON_EXIT: return Nbuf; } - /** Try to reclaim the Nbuf into the buffer pool. @@ -170,8 +168,8 @@ ON_EXIT: **/ VOID MnpFreeNbuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN OUT NET_BUF *Nbuf + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN OUT NET_BUF *Nbuf ) { EFI_TPL OldTpl; @@ -215,26 +213,27 @@ MnpFreeNbuf ( **/ EFI_STATUS MnpAddFreeTxBuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN UINTN Count + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN UINTN Count ) { - EFI_STATUS Status; - UINT32 Index; - MNP_TX_BUF_WRAP *TxBufWrap; + EFI_STATUS Status; + UINT32 Index; + MNP_TX_BUF_WRAP *TxBufWrap; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); ASSERT ((Count > 0) && (MnpDeviceData->BufferLength > 0)); Status = EFI_SUCCESS; for (Index = 0; Index < Count; Index++) { - TxBufWrap = (MNP_TX_BUF_WRAP*) AllocatePool (OFFSET_OF (MNP_TX_BUF_WRAP, TxBuf) + MnpDeviceData->BufferLength ); + TxBufWrap = (MNP_TX_BUF_WRAP *)AllocatePool (OFFSET_OF (MNP_TX_BUF_WRAP, TxBuf) + MnpDeviceData->BufferLength); if (TxBufWrap == NULL) { DEBUG ((DEBUG_ERROR, "MnpAddFreeTxBuf: TxBuf Alloc failed.\n")); Status = EFI_OUT_OF_RESOURCES; break; } + DEBUG ((DEBUG_INFO, "MnpAddFreeTxBuf: Add TxBufWrap %p, TxBuf %p\n", TxBufWrap, TxBufWrap->TxBuf)); TxBufWrap->Signature = MNP_TX_BUF_WRAP_SIGNATURE; TxBufWrap->InUse = FALSE; @@ -259,14 +258,14 @@ MnpAddFreeTxBuf ( **/ UINT8 * MnpAllocTxBuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData + IN OUT MNP_DEVICE_DATA *MnpDeviceData ) { - EFI_TPL OldTpl; - UINT8 *TxBuf; - EFI_STATUS Status; - LIST_ENTRY *Entry; - MNP_TX_BUF_WRAP *TxBufWrap; + EFI_TPL OldTpl; + UINT8 *TxBuf; + EFI_STATUS Status; + LIST_ENTRY *Entry; + MNP_TX_BUF_WRAP *TxBufWrap; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); @@ -289,8 +288,8 @@ MnpAllocTxBuf ( if ((MnpDeviceData->TxBufCount + MNP_TX_BUFFER_INCREASEMENT) > MNP_MAX_TX_BUFFER_NUM) { DEBUG ( (DEBUG_ERROR, - "MnpAllocTxBuf: The maximum TxBuf size is reached for MNP driver instance %p.\n", - MnpDeviceData) + "MnpAllocTxBuf: The maximum TxBuf size is reached for MNP driver instance %p.\n", + MnpDeviceData) ); TxBuf = NULL; @@ -301,8 +300,8 @@ MnpAllocTxBuf ( if (IsListEmpty (&MnpDeviceData->FreeTxBufList)) { DEBUG ( (DEBUG_ERROR, - "MnpAllocNbuf: Failed to add TxBuf into the FreeTxBufList, %r.\n", - Status) + "MnpAllocNbuf: Failed to add TxBuf into the FreeTxBufList, %r.\n", + Status) ); TxBuf = NULL; @@ -314,9 +313,9 @@ MnpAllocTxBuf ( ASSERT (!IsListEmpty (&MnpDeviceData->FreeTxBufList)); Entry = MnpDeviceData->FreeTxBufList.ForwardLink; RemoveEntryList (MnpDeviceData->FreeTxBufList.ForwardLink); - TxBufWrap = NET_LIST_USER_STRUCT_S (Entry, MNP_TX_BUF_WRAP, WrapEntry, MNP_TX_BUF_WRAP_SIGNATURE); + TxBufWrap = NET_LIST_USER_STRUCT_S (Entry, MNP_TX_BUF_WRAP, WrapEntry, MNP_TX_BUF_WRAP_SIGNATURE); TxBufWrap->InUse = TRUE; - TxBuf = TxBufWrap->TxBuf; + TxBuf = TxBufWrap->TxBuf; ON_EXIT: gBS->RestoreTPL (OldTpl); @@ -333,12 +332,12 @@ ON_EXIT: **/ VOID MnpFreeTxBuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN OUT UINT8 *TxBuf + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN OUT UINT8 *TxBuf ) { - MNP_TX_BUF_WRAP *TxBufWrap; - EFI_TPL OldTpl; + MNP_TX_BUF_WRAP *TxBufWrap; + EFI_TPL OldTpl; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); @@ -350,7 +349,7 @@ MnpFreeTxBuf ( if (TxBufWrap->Signature != MNP_TX_BUF_WRAP_SIGNATURE) { DEBUG ( (DEBUG_ERROR, - "MnpFreeTxBuf: Signature check failed in MnpFreeTxBuf.\n") + "MnpFreeTxBuf: Signature check failed in MnpFreeTxBuf.\n") ); return; } @@ -358,7 +357,7 @@ MnpFreeTxBuf ( if (!TxBufWrap->InUse) { DEBUG ( (DEBUG_WARN, - "MnpFreeTxBuf: Duplicated recycle report from SNP.\n") + "MnpFreeTxBuf: Duplicated recycle report from SNP.\n") ); return; } @@ -380,19 +379,19 @@ MnpFreeTxBuf ( **/ EFI_STATUS MnpRecycleTxBuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData + IN OUT MNP_DEVICE_DATA *MnpDeviceData ) { - UINT8 *TxBuf; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - EFI_STATUS Status; + UINT8 *TxBuf; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_STATUS Status; Snp = MnpDeviceData->Snp; ASSERT (Snp != NULL); do { - TxBuf = NULL; - Status = Snp->GetStatus (Snp, NULL, (VOID **) &TxBuf); + TxBuf = NULL; + Status = Snp->GetStatus (Snp, NULL, (VOID **)&TxBuf); if (EFI_ERROR (Status)) { return Status; } @@ -419,14 +418,14 @@ MnpRecycleTxBuf ( **/ EFI_STATUS MnpInitializeDeviceData ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN EFI_HANDLE ImageHandle, - IN EFI_HANDLE ControllerHandle + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE ControllerHandle ) { - EFI_STATUS Status; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - EFI_SIMPLE_NETWORK_MODE *SnpMode; + EFI_STATUS Status; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_SIMPLE_NETWORK_MODE *SnpMode; MnpDeviceData->Signature = MNP_DEVICE_DATA_SIGNATURE; MnpDeviceData->ImageHandle = ImageHandle; @@ -443,7 +442,7 @@ MnpInitializeDeviceData ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiSimpleNetworkProtocolGuid, - (VOID **) &Snp, + (VOID **)&Snp, ImageHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -594,17 +593,16 @@ ERROR: // Close the Simple Network Protocol. // gBS->CloseProtocol ( - ControllerHandle, - &gEfiSimpleNetworkProtocolGuid, - ImageHandle, - ControllerHandle - ); + ControllerHandle, + &gEfiSimpleNetworkProtocolGuid, + ImageHandle, + ControllerHandle + ); } return Status; } - /** Destroy the MNP device context data. @@ -614,13 +612,13 @@ ERROR: **/ VOID MnpDestroyDeviceData ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN EFI_HANDLE ImageHandle + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN EFI_HANDLE ImageHandle ) { - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - MNP_TX_BUF_WRAP *TxBufWrap; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + MNP_TX_BUF_WRAP *TxBufWrap; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); @@ -646,7 +644,7 @@ MnpDestroyDeviceData ( // // Free the Tx buffer pool. // - NET_LIST_FOR_EACH_SAFE(Entry, NextEntry, &MnpDeviceData->AllTxBufList) { + NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &MnpDeviceData->AllTxBufList) { TxBufWrap = NET_LIST_USER_STRUCT (Entry, MNP_TX_BUF_WRAP, AllEntry); RemoveEntryList (Entry); FreePool (TxBufWrap); @@ -677,7 +675,6 @@ MnpDestroyDeviceData ( ); } - /** Create mnp service context data. @@ -691,9 +688,9 @@ MnpDestroyDeviceData ( **/ MNP_SERVICE_DATA * MnpCreateServiceData ( - IN MNP_DEVICE_DATA *MnpDeviceData, - IN UINT16 VlanId, - IN UINT8 Priority OPTIONAL + IN MNP_DEVICE_DATA *MnpDeviceData, + IN UINT16 VlanId, + IN UINT8 Priority OPTIONAL ) { EFI_HANDLE MnpServiceHandle; @@ -753,7 +750,7 @@ MnpCreateServiceData ( Status = gBS->OpenProtocol ( MnpDeviceData->ControllerHandle, &gEfiVlanConfigProtocolGuid, - (VOID **) &VlanConfig, + (VOID **)&VlanConfig, MnpDeviceData->ImageHandle, MnpServiceHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -808,7 +805,7 @@ Exit: **/ EFI_STATUS MnpDestroyServiceData ( - IN OUT MNP_SERVICE_DATA *MnpServiceData + IN OUT MNP_SERVICE_DATA *MnpServiceData ) { EFI_STATUS Status; @@ -881,15 +878,15 @@ MnpDestroyServiceData ( EFI_STATUS EFIAPI MnpDestoryChildEntry ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { MNP_INSTANCE_DATA *Instance; EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *) Context; - Instance = CR (Entry, MNP_INSTANCE_DATA, InstEntry, MNP_INSTANCE_DATA_SIGNATURE); + ServiceBinding = (EFI_SERVICE_BINDING_PROTOCOL *)Context; + Instance = CR (Entry, MNP_INSTANCE_DATA, InstEntry, MNP_INSTANCE_DATA_SIGNATURE); return ServiceBinding->DestroyChild (ServiceBinding, Instance->Handle); } @@ -904,12 +901,12 @@ MnpDestoryChildEntry ( **/ EFI_STATUS MnpDestroyServiceChild ( - IN OUT MNP_SERVICE_DATA *MnpServiceData + IN OUT MNP_SERVICE_DATA *MnpServiceData ) { - LIST_ENTRY *List; - EFI_STATUS Status; - UINTN ListLength; + LIST_ENTRY *List; + EFI_STATUS Status; + UINTN ListLength; List = &MnpServiceData->ChildrenList; @@ -919,7 +916,7 @@ MnpDestroyServiceChild ( &MnpServiceData->ServiceBinding, &ListLength ); - if (EFI_ERROR (Status) || ListLength != 0) { + if (EFI_ERROR (Status) || (ListLength != 0)) { return EFI_DEVICE_ERROR; } @@ -937,8 +934,8 @@ MnpDestroyServiceChild ( **/ MNP_SERVICE_DATA * MnpFindServiceData ( - IN MNP_DEVICE_DATA *MnpDeviceData, - IN UINT16 VlanId + IN MNP_DEVICE_DATA *MnpDeviceData, + IN UINT16 VlanId ) { LIST_ENTRY *Entry; @@ -967,8 +964,8 @@ MnpFindServiceData ( **/ VOID MnpInitializeInstanceData ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN OUT MNP_INSTANCE_DATA *Instance + IN MNP_SERVICE_DATA *MnpServiceData, + IN OUT MNP_INSTANCE_DATA *Instance ) { NET_CHECK_SIGNATURE (MnpServiceData, MNP_SERVICE_DATA_SIGNATURE); @@ -1007,7 +1004,6 @@ MnpInitializeInstanceData ( Instance->MnpServiceData = MnpServiceData; } - /** Check whether the token specified by Arg matches the token in Item. @@ -1025,16 +1021,16 @@ MnpInitializeInstanceData ( EFI_STATUS EFIAPI MnpTokenExist ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Arg + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Arg ) { EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token; EFI_MANAGED_NETWORK_COMPLETION_TOKEN *TokenInItem; - Token = (EFI_MANAGED_NETWORK_COMPLETION_TOKEN *) Arg; - TokenInItem = (EFI_MANAGED_NETWORK_COMPLETION_TOKEN *) Item->Key; + Token = (EFI_MANAGED_NETWORK_COMPLETION_TOKEN *)Arg; + TokenInItem = (EFI_MANAGED_NETWORK_COMPLETION_TOKEN *)Item->Key; if ((Token == TokenInItem) || (Token->Event == TokenInItem->Event)) { // @@ -1065,9 +1061,9 @@ MnpTokenExist ( EFI_STATUS EFIAPI MnpCancelTokens ( - IN OUT NET_MAP *Map, - IN OUT NET_MAP_ITEM *Item, - IN VOID *Arg + IN OUT NET_MAP *Map, + IN OUT NET_MAP_ITEM *Item, + IN VOID *Arg ) { EFI_MANAGED_NETWORK_COMPLETION_TOKEN *TokenToCancel; @@ -1079,7 +1075,7 @@ MnpCancelTokens ( return EFI_SUCCESS; } - TokenToCancel = (EFI_MANAGED_NETWORK_COMPLETION_TOKEN *) Item->Key; + TokenToCancel = (EFI_MANAGED_NETWORK_COMPLETION_TOKEN *)Item->Key; // // Remove the item from the map. @@ -1102,7 +1098,6 @@ MnpCancelTokens ( return EFI_SUCCESS; } - /** Start and initialize the simple network. @@ -1114,7 +1109,7 @@ MnpCancelTokens ( **/ EFI_STATUS MnpStartSnp ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *Snp + IN EFI_SIMPLE_NETWORK_PROTOCOL *Snp ) { EFI_STATUS Status; @@ -1136,7 +1131,6 @@ MnpStartSnp ( return Status; } - /** Stop the simple network. @@ -1148,11 +1142,11 @@ MnpStartSnp ( **/ EFI_STATUS MnpStopSnp ( - IN MNP_DEVICE_DATA *MnpDeviceData + IN MNP_DEVICE_DATA *MnpDeviceData ) { - EFI_STATUS Status; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_STATUS Status; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; Snp = MnpDeviceData->Snp; ASSERT (Snp != NULL); @@ -1168,7 +1162,7 @@ MnpStopSnp ( // // Shut down the simple network. // - Status = Snp->Shutdown (Snp); + Status = Snp->Shutdown (Snp); if (!EFI_ERROR (Status)) { // // Stop the simple network. @@ -1179,7 +1173,6 @@ MnpStopSnp ( return Status; } - /** Start the managed network, this function is called when one instance is configured or reconfigured. @@ -1196,14 +1189,14 @@ MnpStopSnp ( **/ EFI_STATUS MnpStart ( - IN OUT MNP_SERVICE_DATA *MnpServiceData, - IN BOOLEAN IsConfigUpdate, - IN BOOLEAN EnableSystemPoll + IN OUT MNP_SERVICE_DATA *MnpServiceData, + IN BOOLEAN IsConfigUpdate, + IN BOOLEAN EnableSystemPoll ) { - EFI_STATUS Status; - EFI_TIMER_DELAY TimerOpType; - MNP_DEVICE_DATA *MnpDeviceData; + EFI_STATUS Status; + EFI_TIMER_DELAY TimerOpType; + MNP_DEVICE_DATA *MnpDeviceData; NET_CHECK_SIGNATURE (MnpServiceData, MNP_SERVICE_DATA_SIGNATURE); @@ -1238,8 +1231,8 @@ MnpStart ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "MnpStart, gBS->SetTimer for TimeoutCheckTimer %r.\n", - Status) + "MnpStart, gBS->SetTimer for TimeoutCheckTimer %r.\n", + Status) ); goto ErrorExit; @@ -1256,8 +1249,8 @@ MnpStart ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "MnpStart, gBS->SetTimer for MediaDetectTimer %r.\n", - Status) + "MnpStart, gBS->SetTimer for MediaDetectTimer %r.\n", + Status) ); goto ErrorExit; @@ -1272,7 +1265,7 @@ MnpStart ( // TimerOpType = EnableSystemPoll ? TimerPeriodic : TimerCancel; - Status = gBS->SetTimer (MnpDeviceData->PollTimer, TimerOpType, MNP_SYS_POLL_INTERVAL); + Status = gBS->SetTimer (MnpDeviceData->PollTimer, TimerOpType, MNP_SYS_POLL_INTERVAL); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "MnpStart: gBS->SetTimer for PollTimer failed, %r.\n", Status)); @@ -1291,7 +1284,6 @@ ErrorExit: return Status; } - /** Stop the managed network. @@ -1303,11 +1295,11 @@ ErrorExit: **/ EFI_STATUS MnpStop ( - IN OUT MNP_SERVICE_DATA *MnpServiceData + IN OUT MNP_SERVICE_DATA *MnpServiceData ) { - EFI_STATUS Status; - MNP_DEVICE_DATA *MnpDeviceData; + EFI_STATUS Status; + MNP_DEVICE_DATA *MnpDeviceData; NET_CHECK_SIGNATURE (MnpServiceData, MNP_SERVICE_DATA_SIGNATURE); MnpDeviceData = MnpServiceData->MnpDeviceData; @@ -1338,7 +1330,7 @@ MnpStop ( // // The system poll in on, cancel the poll timer. // - Status = gBS->SetTimer (MnpDeviceData->PollTimer, TimerCancel, 0); + Status = gBS->SetTimer (MnpDeviceData->PollTimer, TimerCancel, 0); MnpDeviceData->EnableSystemPoll = FALSE; } @@ -1359,7 +1351,6 @@ MnpStop ( return Status; } - /** Flush the instance's received data. @@ -1368,11 +1359,11 @@ MnpStop ( **/ VOID MnpFlushRcvdDataQueue ( - IN OUT MNP_INSTANCE_DATA *Instance + IN OUT MNP_INSTANCE_DATA *Instance ) { - EFI_TPL OldTpl; - MNP_RXDATA_WRAP *RxDataWrap; + EFI_TPL OldTpl; + MNP_RXDATA_WRAP *RxDataWrap; NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE); @@ -1387,7 +1378,7 @@ MnpFlushRcvdDataQueue ( // // Recycle the RxDataWrap. // - MnpRecycleRxData (NULL, (VOID *) RxDataWrap); + MnpRecycleRxData (NULL, (VOID *)RxDataWrap); Instance->RcvdPacketQueueSize--; } @@ -1396,7 +1387,6 @@ MnpFlushRcvdDataQueue ( gBS->RestoreTPL (OldTpl); } - /** Configure the Instance using ConfigData. @@ -1412,16 +1402,16 @@ MnpFlushRcvdDataQueue ( **/ EFI_STATUS MnpConfigureInstance ( - IN OUT MNP_INSTANCE_DATA *Instance, - IN EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData OPTIONAL + IN OUT MNP_INSTANCE_DATA *Instance, + IN EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData OPTIONAL ) { - EFI_STATUS Status; - MNP_SERVICE_DATA *MnpServiceData; - MNP_DEVICE_DATA *MnpDeviceData; - EFI_MANAGED_NETWORK_CONFIG_DATA *OldConfigData; - EFI_MANAGED_NETWORK_CONFIG_DATA *NewConfigData; - BOOLEAN IsConfigUpdate; + EFI_STATUS Status; + MNP_SERVICE_DATA *MnpServiceData; + MNP_DEVICE_DATA *MnpDeviceData; + EFI_MANAGED_NETWORK_CONFIG_DATA *OldConfigData; + EFI_MANAGED_NETWORK_CONFIG_DATA *NewConfigData; + BOOLEAN IsConfigUpdate; NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE); @@ -1432,16 +1422,16 @@ MnpConfigureInstance ( return EFI_UNSUPPORTED; } - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; - MnpServiceData = Instance->MnpServiceData; - MnpDeviceData = MnpServiceData->MnpDeviceData; + MnpServiceData = Instance->MnpServiceData; + MnpDeviceData = MnpServiceData->MnpDeviceData; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); - IsConfigUpdate = (BOOLEAN) ((Instance->Configured) && (ConfigData != NULL)); + IsConfigUpdate = (BOOLEAN)((Instance->Configured) && (ConfigData != NULL)); - OldConfigData = &Instance->ConfigData; - NewConfigData = ConfigData; + OldConfigData = &Instance->ConfigData; + NewConfigData = ConfigData; if (NewConfigData == NULL) { // // Restore back the default config data if a reset of this instance @@ -1513,16 +1503,16 @@ MnpConfigureInstance ( // CopyMem (OldConfigData, NewConfigData, sizeof (*OldConfigData)); - Instance->Configured = (BOOLEAN) (ConfigData != NULL); + Instance->Configured = (BOOLEAN)(ConfigData != NULL); if (Instance->Configured) { // // The instance is configured, start the Mnp. // Status = MnpStart ( - MnpServiceData, - IsConfigUpdate, - (BOOLEAN) !NewConfigData->DisableBackgroundPolling - ); + MnpServiceData, + IsConfigUpdate, + (BOOLEAN) !NewConfigData->DisableBackgroundPolling + ); } else { // // The instance is changed to the unconfigured state, stop the Mnp. @@ -1546,19 +1536,19 @@ MnpConfigureInstance ( **/ EFI_STATUS MnpConfigReceiveFilters ( - IN MNP_DEVICE_DATA *MnpDeviceData + IN MNP_DEVICE_DATA *MnpDeviceData ) { - EFI_STATUS Status; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - EFI_MAC_ADDRESS *MCastFilter; - UINT32 MCastFilterCnt; - UINT32 EnableFilterBits; - UINT32 DisableFilterBits; - BOOLEAN ResetMCastFilters; - LIST_ENTRY *Entry; - UINT32 Index; - MNP_GROUP_ADDRESS *GroupAddress; + EFI_STATUS Status; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_MAC_ADDRESS *MCastFilter; + UINT32 MCastFilterCnt; + UINT32 EnableFilterBits; + UINT32 DisableFilterBits; + BOOLEAN ResetMCastFilters; + LIST_ENTRY *Entry; + UINT32 Index; + MNP_GROUP_ADDRESS *GroupAddress; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); @@ -1607,8 +1597,8 @@ MnpConfigReceiveFilters ( // // Allocate pool for the multicast addresses. // - MCastFilterCnt = MnpDeviceData->GroupAddressCount; - MCastFilter = AllocatePool (sizeof (EFI_MAC_ADDRESS) * MCastFilterCnt); + MCastFilterCnt = MnpDeviceData->GroupAddressCount; + MCastFilter = AllocatePool (sizeof (EFI_MAC_ADDRESS) * MCastFilterCnt); if (MCastFilter == NULL) { DEBUG ((DEBUG_ERROR, "MnpConfigReceiveFilters: Failed to allocate memory resource for MCastFilter.\n")); @@ -1620,7 +1610,6 @@ MnpConfigReceiveFilters ( // Index = 0; NET_LIST_FOR_EACH (Entry, &MnpDeviceData->GroupAddressList) { - GroupAddress = NET_LIST_USER_STRUCT (Entry, MNP_GROUP_ADDRESS, AddrEntry); CopyMem (MCastFilter + Index, &GroupAddress->Address, sizeof (*(MCastFilter + Index))); Index++; @@ -1670,13 +1659,14 @@ MnpConfigReceiveFilters ( MCastFilter ); DEBUG_CODE_BEGIN (); - if (EFI_ERROR (Status)) { - DEBUG ( - (DEBUG_ERROR, - "MnpConfigReceiveFilters: Snp->ReceiveFilters failed, %r.\n", - Status) - ); - } + if (EFI_ERROR (Status)) { + DEBUG ( + (DEBUG_ERROR, + "MnpConfigReceiveFilters: Snp->ReceiveFilters failed, %r.\n", + Status) + ); + } + DEBUG_CODE_END (); if (MCastFilter != NULL) { @@ -1689,7 +1679,6 @@ MnpConfigReceiveFilters ( return Status; } - /** Add a group address control block which controls the MacAddress for this instance. @@ -1706,11 +1695,11 @@ MnpConfigReceiveFilters ( **/ EFI_STATUS MnpGroupOpAddCtrlBlk ( - IN OUT MNP_INSTANCE_DATA *Instance, - IN OUT MNP_GROUP_CONTROL_BLOCK *CtrlBlk, - IN OUT MNP_GROUP_ADDRESS *GroupAddress OPTIONAL, - IN EFI_MAC_ADDRESS *MacAddress, - IN UINT32 HwAddressSize + IN OUT MNP_INSTANCE_DATA *Instance, + IN OUT MNP_GROUP_CONTROL_BLOCK *CtrlBlk, + IN OUT MNP_GROUP_ADDRESS *GroupAddress OPTIONAL, + IN EFI_MAC_ADDRESS *MacAddress, + IN UINT32 HwAddressSize ) { MNP_DEVICE_DATA *MnpDeviceData; @@ -1728,7 +1717,6 @@ MnpGroupOpAddCtrlBlk ( // GroupAddress = AllocatePool (sizeof (MNP_GROUP_ADDRESS)); if (GroupAddress == NULL) { - DEBUG ((DEBUG_ERROR, "MnpGroupOpFormCtrlBlk: Failed to allocate memory resource.\n")); return EFI_OUT_OF_RESOURCES; @@ -1757,7 +1745,6 @@ MnpGroupOpAddCtrlBlk ( return EFI_SUCCESS; } - /** Delete a group control block from the instance. If the controlled group address's reference count reaches zero, the group address is removed too. @@ -1770,12 +1757,12 @@ MnpGroupOpAddCtrlBlk ( **/ BOOLEAN MnpGroupOpDelCtrlBlk ( - IN MNP_INSTANCE_DATA *Instance, - IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk + IN MNP_INSTANCE_DATA *Instance, + IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk ) { - MNP_DEVICE_DATA *MnpDeviceData; - MNP_GROUP_ADDRESS *GroupAddress; + MNP_DEVICE_DATA *MnpDeviceData; + MNP_GROUP_ADDRESS *GroupAddress; NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE); @@ -1810,7 +1797,6 @@ MnpGroupOpDelCtrlBlk ( return FALSE; } - /** Do the group operations for this instance. @@ -1828,21 +1814,21 @@ MnpGroupOpDelCtrlBlk ( **/ EFI_STATUS MnpGroupOp ( - IN OUT MNP_INSTANCE_DATA *Instance, - IN BOOLEAN JoinFlag, - IN EFI_MAC_ADDRESS *MacAddress OPTIONAL, - IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk OPTIONAL + IN OUT MNP_INSTANCE_DATA *Instance, + IN BOOLEAN JoinFlag, + IN EFI_MAC_ADDRESS *MacAddress OPTIONAL, + IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk OPTIONAL ) { - MNP_DEVICE_DATA *MnpDeviceData; - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; - MNP_GROUP_ADDRESS *GroupAddress; - EFI_SIMPLE_NETWORK_MODE *SnpMode; - MNP_GROUP_CONTROL_BLOCK *NewCtrlBlk; - EFI_STATUS Status; - BOOLEAN AddressExist; - BOOLEAN NeedUpdate; + MNP_DEVICE_DATA *MnpDeviceData; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; + MNP_GROUP_ADDRESS *GroupAddress; + EFI_SIMPLE_NETWORK_MODE *SnpMode; + MNP_GROUP_CONTROL_BLOCK *NewCtrlBlk; + EFI_STATUS Status; + BOOLEAN AddressExist; + BOOLEAN NeedUpdate; NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE); @@ -1853,8 +1839,8 @@ MnpGroupOp ( // // A new group address is to be added. // - GroupAddress = NULL; - AddressExist = FALSE; + GroupAddress = NULL; + AddressExist = FALSE; // // Allocate memory for the control block. @@ -1885,12 +1871,12 @@ MnpGroupOp ( // Add the GroupAddress for this instance. // Status = MnpGroupOpAddCtrlBlk ( - Instance, - NewCtrlBlk, - GroupAddress, - MacAddress, - SnpMode->HwAddressSize - ); + Instance, + NewCtrlBlk, + GroupAddress, + MacAddress, + SnpMode->HwAddressSize + ); if (EFI_ERROR (Status)) { return Status; } @@ -1911,12 +1897,11 @@ MnpGroupOp ( NeedUpdate = FALSE; NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &Instance->GroupCtrlBlkList) { - NewCtrlBlk = NET_LIST_USER_STRUCT ( - Entry, - MNP_GROUP_CONTROL_BLOCK, - CtrlBlkEntry - ); + Entry, + MNP_GROUP_CONTROL_BLOCK, + CtrlBlkEntry + ); // // Update is required if the group address left is no longer used // by other instances. diff --git a/NetworkPkg/MnpDxe/MnpDriver.c b/NetworkPkg/MnpDxe/MnpDriver.c index 4c906eae39..a3bac07d63 100644 --- a/NetworkPkg/MnpDxe/MnpDriver.c +++ b/NetworkPkg/MnpDxe/MnpDriver.c @@ -10,7 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "MnpImpl.h" #include "MnpVlan.h" -EFI_DRIVER_BINDING_PROTOCOL gMnpDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gMnpDriverBinding = { MnpDriverBindingSupported, MnpDriverBindingStart, MnpDriverBindingStop, @@ -32,11 +32,11 @@ EFI_DRIVER_BINDING_PROTOCOL gMnpDriverBinding = { EFI_STATUS EFIAPI MnpDestroyServiceDataEntry ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { - MNP_SERVICE_DATA *MnpServiceData; + MNP_SERVICE_DATA *MnpServiceData; MnpServiceData = MNP_SERVICE_DATA_FROM_LINK (Entry); return MnpDestroyServiceData (MnpServiceData); @@ -55,11 +55,11 @@ MnpDestroyServiceDataEntry ( EFI_STATUS EFIAPI MnpDestroyServiceChildEntry ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { - MNP_SERVICE_DATA *MnpServiceData; + MNP_SERVICE_DATA *MnpServiceData; MnpServiceData = MNP_SERVICE_DATA_FROM_LINK (Entry); return MnpDestroyServiceChild (MnpServiceData); @@ -86,9 +86,9 @@ MnpDestroyServiceChildEntry ( EFI_STATUS EFIAPI MnpDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { EFI_STATUS Status; @@ -100,7 +100,7 @@ MnpDriverBindingSupported ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiSimpleNetworkProtocolGuid, - (VOID **) &Snp, + (VOID **)&Snp, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -122,7 +122,6 @@ MnpDriverBindingSupported ( return EFI_SUCCESS; } - /** Start this driver on ControllerHandle. This service is called by the EFI boot service ConnectController(). In order to make drivers as small @@ -144,9 +143,9 @@ MnpDriverBindingSupported ( EFI_STATUS EFIAPI MnpDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { EFI_STATUS Status; @@ -196,7 +195,7 @@ MnpDriverBindingStart ( MnpDeviceData->NumberOfVlan = 0; ZeroMem (&MnpDeviceData->VlanConfig, sizeof (EFI_VLAN_CONFIG_PROTOCOL)); MnpServiceData = MnpCreateServiceData (MnpDeviceData, 0, 0); - Status = (MnpServiceData != NULL) ? EFI_SUCCESS : EFI_OUT_OF_RESOURCES; + Status = (MnpServiceData != NULL) ? EFI_SUCCESS : EFI_OUT_OF_RESOURCES; goto Exit; } @@ -217,14 +216,14 @@ MnpDriverBindingStart ( // Get current VLAN configuration from EFI Variable // NumberOfVlan = 0; - Status = MnpGetVlanVariable (MnpDeviceData, &NumberOfVlan, &VlanVariable); + Status = MnpGetVlanVariable (MnpDeviceData, &NumberOfVlan, &VlanVariable); if (EFI_ERROR (Status)) { // // No VLAN is set, create a default MNP service data for untagged frame // MnpDeviceData->NumberOfVlan = 0; - MnpServiceData = MnpCreateServiceData (MnpDeviceData, 0, 0); - Status = (MnpServiceData != NULL) ? EFI_SUCCESS : EFI_OUT_OF_RESOURCES; + MnpServiceData = MnpCreateServiceData (MnpDeviceData, 0, 0); + Status = (MnpServiceData != NULL) ? EFI_SUCCESS : EFI_OUT_OF_RESOURCES; goto Exit; } @@ -236,7 +235,7 @@ MnpDriverBindingStart ( MnpServiceData = MnpCreateServiceData ( MnpDeviceData, VlanVariable[Index].Bits.Vid, - (UINT8) VlanVariable[Index].Bits.Priority + (UINT8)VlanVariable[Index].Bits.Priority ); if (MnpServiceData == NULL) { @@ -256,7 +255,7 @@ Exit: // Destroy all MNP service data // while (!IsListEmpty (&MnpDeviceData->ServiceList)) { - Entry = GetFirstNode (&MnpDeviceData->ServiceList); + Entry = GetFirstNode (&MnpDeviceData->ServiceList); MnpServiceData = MNP_SERVICE_DATA_FROM_LINK (Entry); MnpDestroyServiceData (MnpServiceData); } @@ -304,10 +303,10 @@ Exit: EFI_STATUS EFIAPI MnpDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ) { EFI_STATUS Status; @@ -324,7 +323,7 @@ MnpDriverBindingStop ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiManagedNetworkServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -336,7 +335,7 @@ MnpDriverBindingStop ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiVlanConfigProtocolGuid, - (VOID **) &VlanConfig, + (VOID **)&VlanConfig, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -349,21 +348,21 @@ MnpDriverBindingStop ( MnpDeviceData = MNP_DEVICE_DATA_FROM_THIS (VlanConfig); } else { MnpServiceData = MNP_SERVICE_DATA_FROM_THIS (ServiceBinding); - MnpDeviceData = MnpServiceData->MnpDeviceData; + MnpDeviceData = MnpServiceData->MnpDeviceData; } if (NumberOfChildren == 0) { // // Destroy all MNP service data // - List = &MnpDeviceData->ServiceList; + List = &MnpDeviceData->ServiceList; Status = NetDestroyLinkList ( List, MnpDestroyServiceDataEntry, NULL, &ListLength ); - if (EFI_ERROR (Status) || ListLength !=0) { + if (EFI_ERROR (Status) || (ListLength != 0)) { return EFI_DEVICE_ERROR; } @@ -389,13 +388,14 @@ MnpDriverBindingStop ( FreeUnicodeStringTable (gMnpControllerNameTable); gMnpControllerNameTable = NULL; } + return EFI_SUCCESS; } // // Stop all MNP child // - List = &MnpDeviceData->ServiceList; + List = &MnpDeviceData->ServiceList; Status = NetDestroyLinkList ( List, MnpDestroyServiceChildEntry, @@ -409,7 +409,6 @@ MnpDriverBindingStop ( return EFI_SUCCESS; } - /** Creates a child handle with a set of I/O services. @@ -429,8 +428,8 @@ MnpDriverBindingStop ( EFI_STATUS EFIAPI MnpServiceBindingCreateChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN OUT EFI_HANDLE *ChildHandle + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN OUT EFI_HANDLE *ChildHandle ) { EFI_STATUS Status; @@ -469,8 +468,8 @@ MnpServiceBindingCreateChild ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "MnpServiceBindingCreateChild: Failed to install the MNP protocol, %r.\n", - Status) + "MnpServiceBindingCreateChild: Failed to install the MNP protocol, %r.\n", + Status) ); goto ErrorExit; @@ -484,7 +483,7 @@ MnpServiceBindingCreateChild ( Status = gBS->OpenProtocol ( MnpServiceData->ServiceHandle, &gEfiManagedNetworkServiceBindingProtocolGuid, - (VOID **) &MnpSb, + (VOID **)&MnpSb, gMnpDriverBinding.DriverBindingHandle, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -506,15 +505,13 @@ MnpServiceBindingCreateChild ( ErrorExit: if (EFI_ERROR (Status)) { - if (Instance->Handle != NULL) { - gBS->UninstallMultipleProtocolInterfaces ( - Instance->Handle, - &gEfiManagedNetworkProtocolGuid, - &Instance->ManagedNetwork, - NULL - ); + Instance->Handle, + &gEfiManagedNetworkProtocolGuid, + &Instance->ManagedNetwork, + NULL + ); } FreePool (Instance); @@ -523,7 +520,6 @@ ErrorExit: return Status; } - /** Destroys a child handle with a set of I/O services. @@ -548,8 +544,8 @@ ErrorExit: EFI_STATUS EFIAPI MnpServiceBindingDestroyChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE ChildHandle + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN EFI_HANDLE ChildHandle ) { EFI_STATUS Status; @@ -570,7 +566,7 @@ MnpServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiManagedNetworkProtocolGuid, - (VOID **) &ManagedNetwork, + (VOID **)&ManagedNetwork, gMnpDriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -615,8 +611,8 @@ MnpServiceBindingDestroyChild ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "MnpServiceBindingDestroyChild: Failed to uninstall the ManagedNetwork protocol, %r.\n", - Status) + "MnpServiceBindingDestroyChild: Failed to uninstall the ManagedNetwork protocol, %r.\n", + Status) ); Instance->Destroyed = FALSE; @@ -668,8 +664,8 @@ MnpServiceBindingDestroyChild ( EFI_STATUS EFIAPI MnpDriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { return EfiLibInstallDriverBindingComponentName2 ( diff --git a/NetworkPkg/MnpDxe/MnpDriver.h b/NetworkPkg/MnpDxe/MnpDriver.h index 4837cd0534..3115c94dff 100644 --- a/NetworkPkg/MnpDxe/MnpDriver.h +++ b/NetworkPkg/MnpDxe/MnpDriver.h @@ -35,56 +35,56 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // Global Variables // -extern EFI_DRIVER_BINDING_PROTOCOL gMnpDriverBinding; +extern EFI_DRIVER_BINDING_PROTOCOL gMnpDriverBinding; typedef struct { - UINT32 Signature; + UINT32 Signature; - EFI_HANDLE ControllerHandle; - EFI_HANDLE ImageHandle; + EFI_HANDLE ControllerHandle; + EFI_HANDLE ImageHandle; - EFI_VLAN_CONFIG_PROTOCOL VlanConfig; - UINTN NumberOfVlan; - CHAR16 *MacString; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_VLAN_CONFIG_PROTOCOL VlanConfig; + UINTN NumberOfVlan; + CHAR16 *MacString; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; // // List of MNP_SERVICE_DATA // - LIST_ENTRY ServiceList; + LIST_ENTRY ServiceList; // // Number of configured MNP Service Binding child // - UINTN ConfiguredChildrenNumber; + UINTN ConfiguredChildrenNumber; - LIST_ENTRY GroupAddressList; - UINT32 GroupAddressCount; + LIST_ENTRY GroupAddressList; + UINT32 GroupAddressCount; - LIST_ENTRY FreeTxBufList; - LIST_ENTRY AllTxBufList; - UINT32 TxBufCount; + LIST_ENTRY FreeTxBufList; + LIST_ENTRY AllTxBufList; + UINT32 TxBufCount; - NET_BUF_QUEUE FreeNbufQue; - INTN NbufCnt; + NET_BUF_QUEUE FreeNbufQue; + INTN NbufCnt; - EFI_EVENT PollTimer; - BOOLEAN EnableSystemPoll; + EFI_EVENT PollTimer; + BOOLEAN EnableSystemPoll; - EFI_EVENT TimeoutCheckTimer; - EFI_EVENT MediaDetectTimer; + EFI_EVENT TimeoutCheckTimer; + EFI_EVENT MediaDetectTimer; - UINT32 UnicastCount; - UINT32 BroadcastCount; - UINT32 MulticastCount; - UINT32 PromiscuousCount; + UINT32 UnicastCount; + UINT32 BroadcastCount; + UINT32 MulticastCount; + UINT32 PromiscuousCount; // // The size of the data buffer in the MNP_PACKET_BUFFER used to // store a packet. // - UINT32 BufferLength; - UINT32 PaddingSize; - NET_BUF *RxNbufCache; + UINT32 BufferLength; + UINT32 PaddingSize; + NET_BUF *RxNbufCache; } MNP_DEVICE_DATA; #define MNP_DEVICE_DATA_FROM_THIS(a) \ @@ -98,25 +98,24 @@ typedef struct { #define MNP_SERVICE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'S') typedef struct { - UINT32 Signature; + UINT32 Signature; - LIST_ENTRY Link; + LIST_ENTRY Link; - MNP_DEVICE_DATA *MnpDeviceData; - EFI_HANDLE ServiceHandle; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; + MNP_DEVICE_DATA *MnpDeviceData; + EFI_HANDLE ServiceHandle; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; - LIST_ENTRY ChildrenList; - UINTN ChildrenNumber; + LIST_ENTRY ChildrenList; + UINTN ChildrenNumber; - UINT32 Mtu; + UINT32 Mtu; - UINT16 VlanId; - UINT8 Priority; + UINT16 VlanId; + UINT8 Priority; } MNP_SERVICE_DATA; - #define MNP_SERVICE_DATA_FROM_THIS(a) \ CR ( \ (a), \ @@ -133,7 +132,6 @@ typedef struct { MNP_SERVICE_DATA_SIGNATURE \ ) - /** Test to see if this driver supports ControllerHandle. This service is called by the EFI boot service ConnectController(). In @@ -155,9 +153,9 @@ typedef struct { EFI_STATUS EFIAPI MnpDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ); /** @@ -181,12 +179,11 @@ MnpDriverBindingSupported ( EFI_STATUS EFIAPI MnpDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ); - /** Stop this driver on ControllerHandle. This service is called by the EFI boot service DisconnectController(). In order to make drivers as @@ -208,10 +205,10 @@ MnpDriverBindingStart ( EFI_STATUS EFIAPI MnpDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ); /** @@ -233,8 +230,8 @@ MnpDriverBindingStop ( EFI_STATUS EFIAPI MnpServiceBindingCreateChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN OUT EFI_HANDLE *ChildHandle + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN OUT EFI_HANDLE *ChildHandle ); /** @@ -261,8 +258,8 @@ MnpServiceBindingCreateChild ( EFI_STATUS EFIAPI MnpServiceBindingDestroyChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE ChildHandle + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN EFI_HANDLE ChildHandle ); #endif diff --git a/NetworkPkg/MnpDxe/MnpImpl.h b/NetworkPkg/MnpDxe/MnpImpl.h index e91408c6c9..9d3816b42c 100644 --- a/NetworkPkg/MnpDxe/MnpImpl.h +++ b/NetworkPkg/MnpDxe/MnpImpl.h @@ -11,27 +11,27 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "MnpDriver.h" -#define NET_ETHER_FCS_SIZE 4 - -#define MNP_SYS_POLL_INTERVAL (10 * TICKS_PER_MS) // 10 milliseconds -#define MNP_TIMEOUT_CHECK_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds -#define MNP_MEDIA_DETECT_INTERVAL (500 * TICKS_PER_MS) // 500 milliseconds -#define MNP_TX_TIMEOUT_TIME (500 * TICKS_PER_MS) // 500 milliseconds -#define MNP_INIT_NET_BUFFER_NUM 512 -#define MNP_NET_BUFFER_INCREASEMENT 64 -#define MNP_MAX_NET_BUFFER_NUM 65536 -#define MNP_TX_BUFFER_INCREASEMENT 32 // Same as the recycling Q length for xmit_done in UNDI command. -#define MNP_MAX_TX_BUFFER_NUM 65536 +#define NET_ETHER_FCS_SIZE 4 + +#define MNP_SYS_POLL_INTERVAL (10 * TICKS_PER_MS) // 10 milliseconds +#define MNP_TIMEOUT_CHECK_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds +#define MNP_MEDIA_DETECT_INTERVAL (500 * TICKS_PER_MS) // 500 milliseconds +#define MNP_TX_TIMEOUT_TIME (500 * TICKS_PER_MS) // 500 milliseconds +#define MNP_INIT_NET_BUFFER_NUM 512 +#define MNP_NET_BUFFER_INCREASEMENT 64 +#define MNP_MAX_NET_BUFFER_NUM 65536 +#define MNP_TX_BUFFER_INCREASEMENT 32 // Same as the recycling Q length for xmit_done in UNDI command. +#define MNP_MAX_TX_BUFFER_NUM 65536 #define MNP_MAX_RCVD_PACKET_QUE_SIZE 256 -#define MNP_RECEIVE_UNICAST 0x01 -#define MNP_RECEIVE_BROADCAST 0x02 +#define MNP_RECEIVE_UNICAST 0x01 +#define MNP_RECEIVE_BROADCAST 0x02 -#define UNICAST_PACKET MNP_RECEIVE_UNICAST -#define BROADCAST_PACKET MNP_RECEIVE_BROADCAST +#define UNICAST_PACKET MNP_RECEIVE_UNICAST +#define BROADCAST_PACKET MNP_RECEIVE_BROADCAST -#define MNP_INSTANCE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'I') +#define MNP_INSTANCE_DATA_SIGNATURE SIGNATURE_32 ('M', 'n', 'p', 'I') #define MNP_INSTANCE_DATA_FROM_THIS(a) \ CR ( \ @@ -42,59 +42,59 @@ SPDX-License-Identifier: BSD-2-Clause-Patent ) typedef struct { - UINT32 Signature; + UINT32 Signature; - MNP_SERVICE_DATA *MnpServiceData; + MNP_SERVICE_DATA *MnpServiceData; - EFI_HANDLE Handle; + EFI_HANDLE Handle; - LIST_ENTRY InstEntry; + LIST_ENTRY InstEntry; - EFI_MANAGED_NETWORK_PROTOCOL ManagedNetwork; + EFI_MANAGED_NETWORK_PROTOCOL ManagedNetwork; - BOOLEAN Configured; - BOOLEAN Destroyed; + BOOLEAN Configured; + BOOLEAN Destroyed; - LIST_ENTRY GroupCtrlBlkList; + LIST_ENTRY GroupCtrlBlkList; - NET_MAP RxTokenMap; + NET_MAP RxTokenMap; - LIST_ENTRY RxDeliveredPacketQueue; - LIST_ENTRY RcvdPacketQueue; - UINTN RcvdPacketQueueSize; + LIST_ENTRY RxDeliveredPacketQueue; + LIST_ENTRY RcvdPacketQueue; + UINTN RcvdPacketQueueSize; - EFI_MANAGED_NETWORK_CONFIG_DATA ConfigData; + EFI_MANAGED_NETWORK_CONFIG_DATA ConfigData; - UINT8 ReceiveFilter; + UINT8 ReceiveFilter; } MNP_INSTANCE_DATA; typedef struct { - LIST_ENTRY AddrEntry; - EFI_MAC_ADDRESS Address; - INTN RefCnt; + LIST_ENTRY AddrEntry; + EFI_MAC_ADDRESS Address; + INTN RefCnt; } MNP_GROUP_ADDRESS; typedef struct { - LIST_ENTRY CtrlBlkEntry; - MNP_GROUP_ADDRESS *GroupAddress; + LIST_ENTRY CtrlBlkEntry; + MNP_GROUP_ADDRESS *GroupAddress; } MNP_GROUP_CONTROL_BLOCK; typedef struct { - LIST_ENTRY WrapEntry; - MNP_INSTANCE_DATA *Instance; - EFI_MANAGED_NETWORK_RECEIVE_DATA RxData; - NET_BUF *Nbuf; - UINT64 TimeoutTick; + LIST_ENTRY WrapEntry; + MNP_INSTANCE_DATA *Instance; + EFI_MANAGED_NETWORK_RECEIVE_DATA RxData; + NET_BUF *Nbuf; + UINT64 TimeoutTick; } MNP_RXDATA_WRAP; -#define MNP_TX_BUF_WRAP_SIGNATURE SIGNATURE_32 ('M', 'T', 'B', 'W') +#define MNP_TX_BUF_WRAP_SIGNATURE SIGNATURE_32 ('M', 'T', 'B', 'W') typedef struct { - UINT32 Signature; - LIST_ENTRY WrapEntry; // Link to FreeTxBufList - LIST_ENTRY AllEntry; // Link to AllTxBufList - BOOLEAN InUse; - UINT8 TxBuf[1]; + UINT32 Signature; + LIST_ENTRY WrapEntry; // Link to FreeTxBufList + LIST_ENTRY AllEntry; // Link to AllTxBufList + BOOLEAN InUse; + UINT8 TxBuf[1]; } MNP_TX_BUF_WRAP; /** @@ -111,9 +111,9 @@ typedef struct { **/ EFI_STATUS MnpInitializeDeviceData ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN EFI_HANDLE ImageHandle, - IN EFI_HANDLE ControllerHandle + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE ControllerHandle ); /** @@ -125,8 +125,8 @@ MnpInitializeDeviceData ( **/ VOID MnpDestroyDeviceData ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN EFI_HANDLE ImageHandle + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN EFI_HANDLE ImageHandle ); /** @@ -142,9 +142,9 @@ MnpDestroyDeviceData ( **/ MNP_SERVICE_DATA * MnpCreateServiceData ( - IN MNP_DEVICE_DATA *MnpDeviceData, - IN UINT16 VlanId, - IN UINT8 Priority OPTIONAL + IN MNP_DEVICE_DATA *MnpDeviceData, + IN UINT16 VlanId, + IN UINT8 Priority OPTIONAL ); /** @@ -161,9 +161,9 @@ MnpCreateServiceData ( **/ EFI_STATUS MnpInitializeServiceData ( - IN OUT MNP_SERVICE_DATA *MnpServiceData, - IN EFI_HANDLE ImageHandle, - IN EFI_HANDLE ControllerHandle + IN OUT MNP_SERVICE_DATA *MnpServiceData, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE ControllerHandle ); /** @@ -177,7 +177,7 @@ MnpInitializeServiceData ( **/ EFI_STATUS MnpDestroyServiceData ( - IN OUT MNP_SERVICE_DATA *MnpServiceData + IN OUT MNP_SERVICE_DATA *MnpServiceData ); /** @@ -191,7 +191,7 @@ MnpDestroyServiceData ( **/ EFI_STATUS MnpDestroyServiceChild ( - IN OUT MNP_SERVICE_DATA *MnpServiceData + IN OUT MNP_SERVICE_DATA *MnpServiceData ); /** @@ -205,8 +205,8 @@ MnpDestroyServiceChild ( **/ MNP_SERVICE_DATA * MnpFindServiceData ( - IN MNP_DEVICE_DATA *MnpDeviceData, - IN UINT16 VlanId + IN MNP_DEVICE_DATA *MnpDeviceData, + IN UINT16 VlanId ); /** @@ -219,8 +219,8 @@ MnpFindServiceData ( **/ VOID MnpInitializeInstanceData ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN OUT MNP_INSTANCE_DATA *Instance + IN MNP_SERVICE_DATA *MnpServiceData, + IN OUT MNP_INSTANCE_DATA *Instance ); /** @@ -240,9 +240,9 @@ MnpInitializeInstanceData ( EFI_STATUS EFIAPI MnpTokenExist ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Arg + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Arg ); /** @@ -263,9 +263,9 @@ MnpTokenExist ( EFI_STATUS EFIAPI MnpCancelTokens ( - IN OUT NET_MAP *Map, - IN OUT NET_MAP_ITEM *Item, - IN VOID *Arg + IN OUT NET_MAP *Map, + IN OUT NET_MAP_ITEM *Item, + IN VOID *Arg ); /** @@ -276,7 +276,7 @@ MnpCancelTokens ( **/ VOID MnpFlushRcvdDataQueue ( - IN OUT MNP_INSTANCE_DATA *Instance + IN OUT MNP_INSTANCE_DATA *Instance ); /** @@ -294,8 +294,8 @@ MnpFlushRcvdDataQueue ( **/ EFI_STATUS MnpConfigureInstance ( - IN OUT MNP_INSTANCE_DATA *Instance, - IN EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData OPTIONAL + IN OUT MNP_INSTANCE_DATA *Instance, + IN EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData OPTIONAL ); /** @@ -315,10 +315,10 @@ MnpConfigureInstance ( **/ EFI_STATUS MnpGroupOp ( - IN OUT MNP_INSTANCE_DATA *Instance, - IN BOOLEAN JoinFlag, - IN EFI_MAC_ADDRESS *MacAddress OPTIONAL, - IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk OPTIONAL + IN OUT MNP_INSTANCE_DATA *Instance, + IN BOOLEAN JoinFlag, + IN EFI_MAC_ADDRESS *MacAddress OPTIONAL, + IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk OPTIONAL ); /** @@ -332,8 +332,8 @@ MnpGroupOp ( **/ BOOLEAN MnpIsValidTxToken ( - IN MNP_INSTANCE_DATA *Instance, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + IN MNP_INSTANCE_DATA *Instance, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token ); /** @@ -352,10 +352,10 @@ MnpIsValidTxToken ( **/ EFI_STATUS MnpBuildTxPacket ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, - OUT UINT8 **PktBuf, - OUT UINT32 *PktLen + IN MNP_SERVICE_DATA *MnpServiceData, + IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, + OUT UINT8 **PktBuf, + OUT UINT32 *PktLen ); /** @@ -377,10 +377,10 @@ MnpBuildTxPacket ( **/ EFI_STATUS MnpSyncSendPacket ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN UINT8 *Packet, - IN UINT32 Length, - IN OUT EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + IN MNP_SERVICE_DATA *MnpServiceData, + IN UINT8 *Packet, + IN UINT32 Length, + IN OUT EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token ); /** @@ -396,7 +396,7 @@ MnpSyncSendPacket ( **/ EFI_STATUS MnpInstanceDeliverPacket ( - IN OUT MNP_INSTANCE_DATA *Instance + IN OUT MNP_INSTANCE_DATA *Instance ); /** @@ -410,8 +410,8 @@ MnpInstanceDeliverPacket ( VOID EFIAPI MnpRecycleRxData ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -427,7 +427,7 @@ MnpRecycleRxData ( **/ EFI_STATUS MnpReceivePacket ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData + IN OUT MNP_DEVICE_DATA *MnpDeviceData ); /** @@ -443,7 +443,7 @@ MnpReceivePacket ( **/ NET_BUF * MnpAllocNbuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData + IN OUT MNP_DEVICE_DATA *MnpDeviceData ); /** @@ -455,8 +455,8 @@ MnpAllocNbuf ( **/ VOID MnpFreeNbuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN OUT NET_BUF *Nbuf + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN OUT NET_BUF *Nbuf ); /** @@ -472,7 +472,7 @@ MnpFreeNbuf ( **/ UINT8 * MnpAllocTxBuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData + IN OUT MNP_DEVICE_DATA *MnpDeviceData ); /** @@ -486,7 +486,7 @@ MnpAllocTxBuf ( **/ EFI_STATUS MnpRecycleTxBuf ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData + IN OUT MNP_DEVICE_DATA *MnpDeviceData ); /** @@ -499,8 +499,8 @@ MnpRecycleTxBuf ( VOID EFIAPI MnpCheckPacketTimeout ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -513,8 +513,8 @@ MnpCheckPacketTimeout ( VOID EFIAPI MnpCheckMediaStatus ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -528,8 +528,8 @@ MnpCheckMediaStatus ( VOID EFIAPI MnpSystemPoll ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -560,9 +560,9 @@ MnpSystemPoll ( EFI_STATUS EFIAPI MnpGetModeData ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, + OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL ); /** @@ -620,8 +620,8 @@ MnpGetModeData ( EFI_STATUS EFIAPI MnpConfigure ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL ); /** @@ -657,10 +657,10 @@ MnpConfigure ( EFI_STATUS EFIAPI MnpMcastIpToMac ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN BOOLEAN Ipv6Flag, - IN EFI_IP_ADDRESS *IpAddress, - OUT EFI_MAC_ADDRESS *MacAddress + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN BOOLEAN Ipv6Flag, + IN EFI_IP_ADDRESS *IpAddress, + OUT EFI_MAC_ADDRESS *MacAddress ); /** @@ -702,9 +702,9 @@ MnpMcastIpToMac ( EFI_STATUS EFIAPI MnpGroups ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN BOOLEAN JoinFlag, - IN EFI_MAC_ADDRESS *MacAddress OPTIONAL + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN BOOLEAN JoinFlag, + IN EFI_MAC_ADDRESS *MacAddress OPTIONAL ); /** @@ -765,8 +765,8 @@ MnpGroups ( EFI_STATUS EFIAPI MnpTransmit ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token ); /** @@ -801,8 +801,8 @@ MnpTransmit ( EFI_STATUS EFIAPI MnpCancel ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL ); /** @@ -843,8 +843,8 @@ MnpCancel ( EFI_STATUS EFIAPI MnpReceive ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token ); /** @@ -876,7 +876,7 @@ MnpReceive ( EFI_STATUS EFIAPI MnpPoll ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This + IN EFI_MANAGED_NETWORK_PROTOCOL *This ); /** @@ -892,7 +892,7 @@ MnpPoll ( **/ EFI_STATUS MnpConfigReceiveFilters ( - IN MNP_DEVICE_DATA *MnpDeviceData + IN MNP_DEVICE_DATA *MnpDeviceData ); #endif diff --git a/NetworkPkg/MnpDxe/MnpIo.c b/NetworkPkg/MnpDxe/MnpIo.c index d5707ae26a..087c879c46 100644 --- a/NetworkPkg/MnpDxe/MnpIo.c +++ b/NetworkPkg/MnpDxe/MnpIo.c @@ -20,15 +20,15 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ BOOLEAN MnpIsValidTxToken ( - IN MNP_INSTANCE_DATA *Instance, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + IN MNP_INSTANCE_DATA *Instance, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token ) { - MNP_SERVICE_DATA *MnpServiceData; - EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData; - UINT32 Index; - UINT32 TotalLength; - EFI_MANAGED_NETWORK_FRAGMENT_DATA *FragmentTable; + MNP_SERVICE_DATA *MnpServiceData; + EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData; + UINT32 Index; + UINT32 TotalLength; + EFI_MANAGED_NETWORK_FRAGMENT_DATA *FragmentTable; MnpServiceData = Instance->MnpServiceData; NET_CHECK_SIGNATURE (MnpServiceData, MNP_SERVICE_DATA_SIGNATURE); @@ -56,7 +56,6 @@ MnpIsValidTxToken ( TotalLength = 0; FragmentTable = TxData->FragmentTable; for (Index = 0; Index < TxData->FragmentCount; Index++) { - if ((FragmentTable[Index].FragmentLength == 0) || (FragmentTable[Index].FragmentBuffer == NULL)) { // // The token is invalid if any FragmentLength is zero or any FragmentBuffer is NULL. @@ -111,17 +110,17 @@ MnpIsValidTxToken ( **/ EFI_STATUS MnpBuildTxPacket ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, - OUT UINT8 **PktBuf, - OUT UINT32 *PktLen + IN MNP_SERVICE_DATA *MnpServiceData, + IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, + OUT UINT8 **PktBuf, + OUT UINT32 *PktLen ) { - EFI_SIMPLE_NETWORK_MODE *SnpMode; - UINT8 *DstPos; - UINT16 Index; - MNP_DEVICE_DATA *MnpDeviceData; - UINT8 *TxBuf; + EFI_SIMPLE_NETWORK_MODE *SnpMode; + UINT8 *DstPos; + UINT16 Index; + MNP_DEVICE_DATA *MnpDeviceData; + UINT8 *TxBuf; MnpDeviceData = MnpServiceData->MnpDeviceData; @@ -141,10 +140,10 @@ MnpBuildTxPacket ( if ((TxData->DestinationAddress == NULL) && (TxData->FragmentCount == 1)) { CopyMem ( - *PktBuf, - TxData->FragmentTable[0].FragmentBuffer, - TxData->FragmentTable[0].FragmentLength - ); + *PktBuf, + TxData->FragmentTable[0].FragmentBuffer, + TxData->FragmentTable[0].FragmentLength + ); *PktLen = TxData->FragmentTable[0].FragmentLength; } else { @@ -161,7 +160,7 @@ MnpBuildTxPacket ( // If dest address is not NULL, move DstPos to reserve space for the // media header. Add the media header length to buflen. // - DstPos += SnpMode->MediaHeaderSize; + DstPos += SnpMode->MediaHeaderSize; *PktLen += SnpMode->MediaHeaderSize; } @@ -186,7 +185,6 @@ MnpBuildTxPacket ( return EFI_SUCCESS; } - /** Synchronously send out the packet. @@ -206,18 +204,18 @@ MnpBuildTxPacket ( **/ EFI_STATUS MnpSyncSendPacket ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN UINT8 *Packet, - IN UINT32 Length, - IN OUT EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + IN MNP_SERVICE_DATA *MnpServiceData, + IN UINT8 *Packet, + IN UINT32 Length, + IN OUT EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token ) { - EFI_STATUS Status; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData; - UINT32 HeaderSize; - MNP_DEVICE_DATA *MnpDeviceData; - UINT16 ProtocolType; + EFI_STATUS Status; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData; + UINT32 HeaderSize; + MNP_DEVICE_DATA *MnpDeviceData; + UINT16 ProtocolType; MnpDeviceData = MnpServiceData->MnpDeviceData; Snp = MnpDeviceData->Snp; @@ -238,7 +236,6 @@ MnpSyncSendPacket ( goto SIGNAL_TOKEN; } - if (MnpServiceData->VlanId != 0) { // // Insert VLAN tag @@ -294,7 +291,6 @@ SIGNAL_TOKEN: return EFI_SUCCESS; } - /** Try to deliver the received packet to the instance. @@ -308,7 +304,7 @@ SIGNAL_TOKEN: **/ EFI_STATUS MnpInstanceDeliverPacket ( - IN OUT MNP_INSTANCE_DATA *Instance + IN OUT MNP_INSTANCE_DATA *Instance ) { MNP_DEVICE_DATA *MnpDeviceData; @@ -363,10 +359,10 @@ MnpInstanceDeliverPacket ( // // Set all the buffer pointers. // - RxData->MediaHeader = NetbufGetByte (RxDataWrap->Nbuf, 0, NULL); - RxData->DestinationAddress = RxData->MediaHeader; - RxData->SourceAddress = (UINT8 *) RxData->MediaHeader + SnpMode->HwAddressSize; - RxData->PacketData = (UINT8 *) RxData->MediaHeader + SnpMode->MediaHeaderSize; + RxData->MediaHeader = NetbufGetByte (RxDataWrap->Nbuf, 0, NULL); + RxData->DestinationAddress = RxData->MediaHeader; + RxData->SourceAddress = (UINT8 *)RxData->MediaHeader + SnpMode->HwAddressSize; + RxData->PacketData = (UINT8 *)RxData->MediaHeader + SnpMode->MediaHeaderSize; // // Insert this RxDataWrap into the delivered queue. @@ -381,14 +377,13 @@ MnpInstanceDeliverPacket ( // // Signal this token's event. // - RxToken->Packet.RxData = &RxDataWrap->RxData; - RxToken->Status = EFI_SUCCESS; + RxToken->Packet.RxData = &RxDataWrap->RxData; + RxToken->Status = EFI_SUCCESS; gBS->SignalEvent (RxToken->Event); return EFI_SUCCESS; } - /** Deliver the received packet for the instances belonging to the MnpServiceData. @@ -397,11 +392,11 @@ MnpInstanceDeliverPacket ( **/ VOID MnpDeliverPacket ( - IN MNP_SERVICE_DATA *MnpServiceData + IN MNP_SERVICE_DATA *MnpServiceData ) { - LIST_ENTRY *Entry; - MNP_INSTANCE_DATA *Instance; + LIST_ENTRY *Entry; + MNP_INSTANCE_DATA *Instance; NET_CHECK_SIGNATURE (MnpServiceData, MNP_SERVICE_DATA_SIGNATURE); @@ -416,7 +411,6 @@ MnpDeliverPacket ( } } - /** Recycle the RxData and other resources used to hold and deliver the received packet. @@ -428,16 +422,16 @@ MnpDeliverPacket ( VOID EFIAPI MnpRecycleRxData ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - MNP_RXDATA_WRAP *RxDataWrap; - MNP_DEVICE_DATA *MnpDeviceData; + MNP_RXDATA_WRAP *RxDataWrap; + MNP_DEVICE_DATA *MnpDeviceData; ASSERT (Context != NULL); - RxDataWrap = (MNP_RXDATA_WRAP *) Context; + RxDataWrap = (MNP_RXDATA_WRAP *)Context; NET_CHECK_SIGNATURE (RxDataWrap->Instance, MNP_INSTANCE_DATA_SIGNATURE); ASSERT (RxDataWrap->Nbuf != NULL); @@ -464,7 +458,6 @@ MnpRecycleRxData ( FreePool (RxDataWrap); } - /** Queue the received packet into instance's receive queue. @@ -474,11 +467,11 @@ MnpRecycleRxData ( **/ VOID MnpQueueRcvdPacket ( - IN OUT MNP_INSTANCE_DATA *Instance, - IN OUT MNP_RXDATA_WRAP *RxDataWrap + IN OUT MNP_INSTANCE_DATA *Instance, + IN OUT MNP_RXDATA_WRAP *RxDataWrap ) { - MNP_RXDATA_WRAP *OldRxDataWrap; + MNP_RXDATA_WRAP *OldRxDataWrap; NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE); @@ -487,7 +480,6 @@ MnpQueueRcvdPacket ( // from the head. // if (Instance->RcvdPacketQueueSize == MNP_MAX_RCVD_PACKET_QUE_SIZE) { - DEBUG ((DEBUG_WARN, "MnpQueueRcvdPacket: Drop one packet bcz queue size limit reached.\n")); // @@ -502,7 +494,7 @@ MnpQueueRcvdPacket ( // // Recycle this OldRxDataWrap, this entry will be removed by the callee. // - MnpRecycleRxData (NULL, (VOID *) OldRxDataWrap); + MnpRecycleRxData (NULL, (VOID *)OldRxDataWrap); Instance->RcvdPacketQueueSize--; } @@ -518,7 +510,6 @@ MnpQueueRcvdPacket ( Instance->RcvdPacketQueueSize++; } - /** Match the received packet with the instance receive filters. @@ -535,15 +526,15 @@ MnpQueueRcvdPacket ( **/ BOOLEAN MnpMatchPacket ( - IN MNP_INSTANCE_DATA *Instance, - IN EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData, - IN MNP_GROUP_ADDRESS *GroupAddress OPTIONAL, - IN UINT8 PktAttr + IN MNP_INSTANCE_DATA *Instance, + IN EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData, + IN MNP_GROUP_ADDRESS *GroupAddress OPTIONAL, + IN UINT8 PktAttr ) { - EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData; - LIST_ENTRY *Entry; - MNP_GROUP_CONTROL_BLOCK *GroupCtrlBlk; + EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData; + LIST_ENTRY *Entry; + MNP_GROUP_CONTROL_BLOCK *GroupCtrlBlk; NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE); @@ -574,11 +565,9 @@ MnpMatchPacket ( // Check multicast addresses. // if (ConfigData->EnableMulticastReceive && RxData->MulticastFlag) { - ASSERT (GroupAddress != NULL); NET_LIST_FOR_EACH (Entry, &Instance->GroupCtrlBlkList) { - GroupCtrlBlk = NET_LIST_USER_STRUCT (Entry, MNP_GROUP_CONTROL_BLOCK, CtrlBlkEntry); if (GroupCtrlBlk->GroupAddress == GroupAddress) { // @@ -596,7 +585,6 @@ MnpMatchPacket ( return FALSE; } - /** Analyse the received packets. @@ -614,17 +602,17 @@ MnpMatchPacket ( **/ VOID MnpAnalysePacket ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN NET_BUF *Nbuf, - IN OUT EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData, - OUT MNP_GROUP_ADDRESS **GroupAddress, - OUT UINT8 *PktAttr + IN MNP_SERVICE_DATA *MnpServiceData, + IN NET_BUF *Nbuf, + IN OUT EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData, + OUT MNP_GROUP_ADDRESS **GroupAddress, + OUT UINT8 *PktAttr ) { - EFI_SIMPLE_NETWORK_MODE *SnpMode; - MNP_DEVICE_DATA *MnpDeviceData; - UINT8 *BufPtr; - LIST_ENTRY *Entry; + EFI_SIMPLE_NETWORK_MODE *SnpMode; + MNP_DEVICE_DATA *MnpDeviceData; + UINT8 *BufPtr; + LIST_ENTRY *Entry; MnpDeviceData = MnpServiceData->MnpDeviceData; SnpMode = MnpDeviceData->Snp->Mode; @@ -660,7 +648,6 @@ MnpAnalysePacket ( // It's multicast, try to match the multicast filters. // NET_LIST_FOR_EACH (Entry, &MnpDeviceData->GroupAddressList) { - *GroupAddress = NET_LIST_USER_STRUCT (Entry, MNP_GROUP_ADDRESS, AddrEntry); if (NET_MAC_EQUAL (BufPtr, &((*GroupAddress)->Address), SnpMode->HwAddressSize)) { RxData->MulticastFlag = TRUE; @@ -680,7 +667,7 @@ MnpAnalysePacket ( // // Skip the below code, there is no receiver of this packet. // - return ; + return; } } } else { @@ -697,10 +684,9 @@ MnpAnalysePacket ( RxData->HeaderLength = SnpMode->MediaHeaderSize; RxData->AddressLength = SnpMode->HwAddressSize; RxData->DataLength = RxData->PacketLength - RxData->HeaderLength; - RxData->ProtocolType = NTOHS (*(UINT16 *) (BufPtr + 2 * SnpMode->HwAddressSize)); + RxData->ProtocolType = NTOHS (*(UINT16 *)(BufPtr + 2 * SnpMode->HwAddressSize)); } - /** Wrap the RxData. @@ -712,12 +698,12 @@ MnpAnalysePacket ( **/ MNP_RXDATA_WRAP * MnpWrapRxData ( - IN MNP_INSTANCE_DATA *Instance, - IN EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData + IN MNP_INSTANCE_DATA *Instance, + IN EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData ) { - EFI_STATUS Status; - MNP_RXDATA_WRAP *RxDataWrap; + EFI_STATUS Status; + MNP_RXDATA_WRAP *RxDataWrap; // // Allocate memory. @@ -755,7 +741,6 @@ MnpWrapRxData ( return RxDataWrap; } - /** Enqueue the received the packets to the instances belonging to the MnpServiceData. @@ -767,8 +752,8 @@ MnpWrapRxData ( **/ VOID MnpEnqueuePacket ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN NET_BUF *Nbuf + IN MNP_SERVICE_DATA *MnpServiceData, + IN NET_BUF *Nbuf ) { LIST_ENTRY *Entry; @@ -778,7 +763,6 @@ MnpEnqueuePacket ( MNP_GROUP_ADDRESS *GroupAddress; MNP_RXDATA_WRAP *RxDataWrap; - GroupAddress = NULL; // // First, analyse the packet header. @@ -789,14 +773,13 @@ MnpEnqueuePacket ( // // No receivers, no more action need. // - return ; + return; } // // Iterate the children to find match. // NET_LIST_FOR_EACH (Entry, &MnpServiceData->ChildrenList) { - Instance = NET_LIST_USER_STRUCT (Entry, MNP_INSTANCE_DATA, InstEntry); NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE); @@ -830,7 +813,6 @@ MnpEnqueuePacket ( } } - /** Try to receive a packet and deliver it. @@ -844,19 +826,19 @@ MnpEnqueuePacket ( **/ EFI_STATUS MnpReceivePacket ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData + IN OUT MNP_DEVICE_DATA *MnpDeviceData ) { - EFI_STATUS Status; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - NET_BUF *Nbuf; - UINT8 *BufPtr; - UINTN BufLen; - UINTN HeaderSize; - UINT32 Trimmed; - MNP_SERVICE_DATA *MnpServiceData; - UINT16 VlanId; - BOOLEAN IsVlanPacket; + EFI_STATUS Status; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + NET_BUF *Nbuf; + UINT8 *BufPtr; + UINTN BufLen; + UINTN HeaderSize; + UINT32 Trimmed; + MNP_SERVICE_DATA *MnpServiceData; + UINT16 VlanId; + BOOLEAN IsVlanPacket; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); @@ -888,9 +870,9 @@ MnpReceivePacket ( ); } - Nbuf = MnpDeviceData->RxNbufCache; - BufLen = Nbuf->TotalSize; - BufPtr = NetbufGetByte (Nbuf, 0, NULL); + Nbuf = MnpDeviceData->RxNbufCache; + BufLen = Nbuf->TotalSize; + BufPtr = NetbufGetByte (Nbuf, 0, NULL); ASSERT (BufPtr != NULL); // @@ -899,9 +881,10 @@ MnpReceivePacket ( Status = Snp->Receive (Snp, &HeaderSize, &BufLen, BufPtr, NULL, NULL, NULL); if (EFI_ERROR (Status)) { DEBUG_CODE_BEGIN (); - if (Status != EFI_NOT_READY) { - DEBUG ((DEBUG_WARN, "MnpReceivePacket: Snp->Receive() = %r.\n", Status)); - } + if (Status != EFI_NOT_READY) { + DEBUG ((DEBUG_WARN, "MnpReceivePacket: Snp->Receive() = %r.\n", Status)); + } + DEBUG_CODE_END (); return Status; @@ -913,9 +896,9 @@ MnpReceivePacket ( if ((HeaderSize != Snp->Mode->MediaHeaderSize) || (BufLen < HeaderSize)) { DEBUG ( (DEBUG_WARN, - "MnpReceivePacket: Size error, HL:TL = %d:%d.\n", - HeaderSize, - BufLen) + "MnpReceivePacket: Size error, HL:TL = %d:%d.\n", + HeaderSize, + BufLen) ); return EFI_DEVICE_ERROR; } @@ -925,7 +908,7 @@ MnpReceivePacket ( // // Trim the packet from tail. // - Trimmed = NetbufTrim (Nbuf, Nbuf->TotalSize - (UINT32) BufLen, NET_BUF_TAIL); + Trimmed = NetbufTrim (Nbuf, Nbuf->TotalSize - (UINT32)BufLen, NET_BUF_TAIL); ASSERT (Nbuf->TotalSize == BufLen); } @@ -982,12 +965,14 @@ MnpReceivePacket ( if (Trimmed > 0) { NetbufAllocSpace (Nbuf, Trimmed, NET_BUF_TAIL); } + if (IsVlanPacket) { NetbufAllocSpace (Nbuf, NET_VLAN_TAG_LEN, NET_BUF_HEAD); } goto EXIT; } + // // Deliver the queued packets. // @@ -1000,7 +985,6 @@ EXIT: return Status; } - /** Remove the received packets if timeout occurs. @@ -1011,28 +995,27 @@ EXIT: VOID EFIAPI MnpCheckPacketTimeout ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - MNP_DEVICE_DATA *MnpDeviceData; - MNP_SERVICE_DATA *MnpServiceData; - LIST_ENTRY *Entry; - LIST_ENTRY *ServiceEntry; - LIST_ENTRY *RxEntry; - LIST_ENTRY *NextEntry; - MNP_INSTANCE_DATA *Instance; - MNP_RXDATA_WRAP *RxDataWrap; - EFI_TPL OldTpl; - - MnpDeviceData = (MNP_DEVICE_DATA *) Context; + MNP_DEVICE_DATA *MnpDeviceData; + MNP_SERVICE_DATA *MnpServiceData; + LIST_ENTRY *Entry; + LIST_ENTRY *ServiceEntry; + LIST_ENTRY *RxEntry; + LIST_ENTRY *NextEntry; + MNP_INSTANCE_DATA *Instance; + MNP_RXDATA_WRAP *RxDataWrap; + EFI_TPL OldTpl; + + MnpDeviceData = (MNP_DEVICE_DATA *)Context; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); NET_LIST_FOR_EACH (ServiceEntry, &MnpDeviceData->ServiceList) { MnpServiceData = MNP_SERVICE_DATA_FROM_LINK (ServiceEntry); NET_LIST_FOR_EACH (Entry, &MnpServiceData->ChildrenList) { - Instance = NET_LIST_USER_STRUCT (Entry, MNP_INSTANCE_DATA, InstEntry); NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE); @@ -1047,7 +1030,6 @@ MnpCheckPacketTimeout ( OldTpl = gBS->RaiseTPL (TPL_NOTIFY); NET_LIST_FOR_EACH_SAFE (RxEntry, NextEntry, &Instance->RcvdPacketQueue) { - RxDataWrap = NET_LIST_USER_STRUCT (RxEntry, MNP_RXDATA_WRAP, WrapEntry); // @@ -1080,15 +1062,15 @@ MnpCheckPacketTimeout ( VOID EFIAPI MnpCheckMediaStatus ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - MNP_DEVICE_DATA *MnpDeviceData; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - UINT32 InterruptStatus; + MNP_DEVICE_DATA *MnpDeviceData; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + UINT32 InterruptStatus; - MnpDeviceData = (MNP_DEVICE_DATA *) Context; + MnpDeviceData = (MNP_DEVICE_DATA *)Context; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); Snp = MnpDeviceData->Snp; @@ -1112,13 +1094,13 @@ MnpCheckMediaStatus ( VOID EFIAPI MnpSystemPoll ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { MNP_DEVICE_DATA *MnpDeviceData; - MnpDeviceData = (MNP_DEVICE_DATA *) Context; + MnpDeviceData = (MNP_DEVICE_DATA *)Context; NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE); // diff --git a/NetworkPkg/MnpDxe/MnpMain.c b/NetworkPkg/MnpDxe/MnpMain.c index ff7e89de10..a1f82a9307 100644 --- a/NetworkPkg/MnpDxe/MnpMain.c +++ b/NetworkPkg/MnpDxe/MnpMain.c @@ -36,16 +36,16 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI MnpGetModeData ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, + OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL ) { - MNP_INSTANCE_DATA *Instance; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - EFI_TPL OldTpl; - EFI_STATUS Status; - UINT32 InterruptStatus; + MNP_INSTANCE_DATA *Instance; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_TPL OldTpl; + EFI_STATUS Status; + UINT32 InterruptStatus; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -87,7 +87,6 @@ MnpGetModeData ( return Status; } - /** Sets or clears the operational parameters for the MNP child driver. @@ -143,8 +142,8 @@ MnpGetModeData ( EFI_STATUS EFIAPI MnpConfigure ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL ) { MNP_INSTANCE_DATA *Instance; @@ -155,7 +154,8 @@ MnpConfigure ( ((MnpConfigData != NULL) && (MnpConfigData->ProtocolTypeFilter > 0) && (MnpConfigData->ProtocolTypeFilter <= 1500)) - ) { + ) + { return EFI_INVALID_PARAMETER; } @@ -182,7 +182,6 @@ ON_EXIT: return Status; } - /** Translates an IP multicast address to a hardware (MAC) multicast address. This function may be unsupported in some MNP implementations. @@ -216,17 +215,17 @@ ON_EXIT: EFI_STATUS EFIAPI MnpMcastIpToMac ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN BOOLEAN Ipv6Flag, - IN EFI_IP_ADDRESS *IpAddress, - OUT EFI_MAC_ADDRESS *MacAddress + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN BOOLEAN Ipv6Flag, + IN EFI_IP_ADDRESS *IpAddress, + OUT EFI_MAC_ADDRESS *MacAddress ) { - EFI_STATUS Status; - MNP_INSTANCE_DATA *Instance; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - EFI_TPL OldTpl; - EFI_IPv6_ADDRESS *Ip6Address; + EFI_STATUS Status; + MNP_INSTANCE_DATA *Instance; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_TPL OldTpl; + EFI_IPv6_ADDRESS *Ip6Address; if ((This == NULL) || (IpAddress == NULL) || (MacAddress == NULL)) { return EFI_INVALID_PARAMETER; @@ -236,7 +235,8 @@ MnpMcastIpToMac ( if ((Ipv6Flag && !IP6_IS_MULTICAST (Ip6Address)) || (!Ipv6Flag && !IP4_IS_MULTICAST (EFI_NTOHL (*IpAddress))) - ) { + ) + { // // The IP address passed in is not a multicast address. // @@ -248,7 +248,6 @@ MnpMcastIpToMac ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); if (!Instance->Configured) { - Status = EFI_NOT_STARTED; goto ON_EXIT; } @@ -267,7 +266,7 @@ MnpMcastIpToMac ( MacAddress->Addr[0] = 0x01; MacAddress->Addr[1] = 0x00; MacAddress->Addr[2] = 0x5E; - MacAddress->Addr[3] = (UINT8) (IpAddress->v4.Addr[1] & 0x7F); + MacAddress->Addr[3] = (UINT8)(IpAddress->v4.Addr[1] & 0x7F); MacAddress->Addr[4] = IpAddress->v4.Addr[2]; MacAddress->Addr[5] = IpAddress->v4.Addr[3]; } else { @@ -342,29 +341,29 @@ ON_EXIT: EFI_STATUS EFIAPI MnpGroups ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN BOOLEAN JoinFlag, - IN EFI_MAC_ADDRESS *MacAddress OPTIONAL + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN BOOLEAN JoinFlag, + IN EFI_MAC_ADDRESS *MacAddress OPTIONAL ) { - MNP_INSTANCE_DATA *Instance; - EFI_SIMPLE_NETWORK_MODE *SnpMode; - MNP_GROUP_CONTROL_BLOCK *GroupCtrlBlk; - MNP_GROUP_ADDRESS *GroupAddress; - LIST_ENTRY *ListEntry; - BOOLEAN AddressExist; - EFI_TPL OldTpl; - EFI_STATUS Status; - - if (This == NULL || (JoinFlag && (MacAddress == NULL))) { + MNP_INSTANCE_DATA *Instance; + EFI_SIMPLE_NETWORK_MODE *SnpMode; + MNP_GROUP_CONTROL_BLOCK *GroupCtrlBlk; + MNP_GROUP_ADDRESS *GroupAddress; + LIST_ENTRY *ListEntry; + BOOLEAN AddressExist; + EFI_TPL OldTpl; + EFI_STATUS Status; + + if ((This == NULL) || (JoinFlag && (MacAddress == NULL))) { // // This is NULL, or it's a join operation but MacAddress is NULL. // return EFI_INVALID_PARAMETER; } - Instance = MNP_INSTANCE_DATA_FROM_THIS (This); - SnpMode = Instance->MnpServiceData->MnpDeviceData->Snp->Mode; + Instance = MNP_INSTANCE_DATA_FROM_THIS (This); + SnpMode = Instance->MnpServiceData->MnpDeviceData->Snp->Mode; OldTpl = gBS->RaiseTPL (TPL_CALLBACK); @@ -374,7 +373,8 @@ MnpGroups ( } if ((!Instance->ConfigData.EnableMulticastReceive) || - ((MacAddress != NULL) && !NET_MAC_IS_MULTICAST (MacAddress, &SnpMode->BroadcastAddress, SnpMode->HwAddressSize))) { + ((MacAddress != NULL) && !NET_MAC_IS_MULTICAST (MacAddress, &SnpMode->BroadcastAddress, SnpMode->HwAddressSize))) + { // // The instance isn't configured to do multicast receive. OR // the passed in MacAddress is not a multicast mac address. @@ -392,18 +392,18 @@ MnpGroups ( // Search the instance's GroupCtrlBlkList to find the specific address. // NET_LIST_FOR_EACH (ListEntry, &Instance->GroupCtrlBlkList) { - GroupCtrlBlk = NET_LIST_USER_STRUCT ( - ListEntry, - MNP_GROUP_CONTROL_BLOCK, - CtrlBlkEntry - ); + ListEntry, + MNP_GROUP_CONTROL_BLOCK, + CtrlBlkEntry + ); GroupAddress = GroupCtrlBlk->GroupAddress; if (0 == CompareMem ( - MacAddress, - &GroupAddress->Address, - SnpMode->HwAddressSize - )) { + MacAddress, + &GroupAddress->Address, + SnpMode->HwAddressSize + )) + { // // There is already the same multicast mac address configured. // @@ -506,16 +506,16 @@ ON_EXIT: EFI_STATUS EFIAPI MnpTransmit ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token ) { - EFI_STATUS Status; - MNP_INSTANCE_DATA *Instance; - MNP_SERVICE_DATA *MnpServiceData; - UINT8 *PktBuf; - UINT32 PktLen; - EFI_TPL OldTpl; + EFI_STATUS Status; + MNP_INSTANCE_DATA *Instance; + MNP_SERVICE_DATA *MnpServiceData; + UINT8 *PktBuf; + UINT32 PktLen; + EFI_TPL OldTpl; if ((This == NULL) || (Token == NULL)) { return EFI_INVALID_PARAMETER; @@ -526,7 +526,6 @@ MnpTransmit ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); if (!Instance->Configured) { - Status = EFI_NOT_STARTED; goto ON_EXIT; } @@ -561,7 +560,6 @@ ON_EXIT: return Status; } - /** Places an asynchronous receiving request into the receiving queue. @@ -600,8 +598,8 @@ ON_EXIT: EFI_STATUS EFIAPI MnpReceive ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token ) { EFI_STATUS Status; @@ -624,7 +622,7 @@ MnpReceive ( // // Check whether this token(event) is already in the rx token queue. // - Status = NetMapIterate (&Instance->RxTokenMap, MnpTokenExist, (VOID *) Token); + Status = NetMapIterate (&Instance->RxTokenMap, MnpTokenExist, (VOID *)Token); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -632,7 +630,7 @@ MnpReceive ( // // Insert the Token into the RxTokenMap. // - Status = NetMapInsertTail (&Instance->RxTokenMap, (VOID *) Token, NULL); + Status = NetMapInsertTail (&Instance->RxTokenMap, (VOID *)Token, NULL); if (!EFI_ERROR (Status)) { // // Try to deliver any buffered packets. @@ -683,8 +681,8 @@ ON_EXIT: EFI_STATUS EFIAPI MnpCancel ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL ) { EFI_STATUS Status; @@ -707,7 +705,7 @@ MnpCancel ( // // Iterate the RxTokenMap to cancel the specified Token. // - Status = NetMapIterate (&Instance->RxTokenMap, MnpCancelTokens, (VOID *) Token); + Status = NetMapIterate (&Instance->RxTokenMap, MnpCancelTokens, (VOID *)Token); if (Token != NULL) { Status = (Status == EFI_ABORTED) ? EFI_SUCCESS : EFI_NOT_FOUND; } @@ -752,7 +750,7 @@ ON_EXIT: EFI_STATUS EFIAPI MnpPoll ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This + IN EFI_MANAGED_NETWORK_PROTOCOL *This ) { EFI_STATUS Status; diff --git a/NetworkPkg/MnpDxe/MnpVlan.c b/NetworkPkg/MnpDxe/MnpVlan.c index 54fb189502..cc3637a6ed 100644 --- a/NetworkPkg/MnpDxe/MnpVlan.c +++ b/NetworkPkg/MnpDxe/MnpVlan.c @@ -9,13 +9,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "MnpImpl.h" #include "MnpVlan.h" -VLAN_DEVICE_PATH mVlanDevicePathTemplate = { +VLAN_DEVICE_PATH mVlanDevicePathTemplate = { { MESSAGING_DEVICE_PATH, MSG_VLAN_DP, { - (UINT8) (sizeof (VLAN_DEVICE_PATH)), - (UINT8) ((sizeof (VLAN_DEVICE_PATH)) >> 8) + (UINT8)(sizeof (VLAN_DEVICE_PATH)), + (UINT8)((sizeof (VLAN_DEVICE_PATH)) >> 8) } }, 0 @@ -27,7 +27,6 @@ EFI_VLAN_CONFIG_PROTOCOL mVlanConfigProtocolTemplate = { VlanConfigRemove }; - /** Create a child handle for the VLAN ID. @@ -41,10 +40,10 @@ EFI_VLAN_CONFIG_PROTOCOL mVlanConfigProtocolTemplate = { **/ EFI_HANDLE MnpCreateVlanChild ( - IN EFI_HANDLE ImageHandle, - IN EFI_HANDLE ControllerHandle, - IN UINT16 VlanId, - OUT EFI_DEVICE_PATH_PROTOCOL **Devicepath OPTIONAL + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE ControllerHandle, + IN UINT16 VlanId, + OUT EFI_DEVICE_PATH_PROTOCOL **Devicepath OPTIONAL ) { EFI_HANDLE ChildHandle; @@ -59,7 +58,7 @@ MnpCreateVlanChild ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiDevicePathProtocolGuid, - (VOID **) &ParentDevicePath, + (VOID **)&ParentDevicePath, ImageHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -73,10 +72,10 @@ MnpCreateVlanChild ( // CopyMem (&VlanNode, &mVlanDevicePathTemplate, sizeof (VLAN_DEVICE_PATH)); VlanNode.VlanId = VlanId; - VlanDevicePath = AppendDevicePathNode ( - ParentDevicePath, - (EFI_DEVICE_PATH_PROTOCOL *) &VlanNode - ); + VlanDevicePath = AppendDevicePathNode ( + ParentDevicePath, + (EFI_DEVICE_PATH_PROTOCOL *)&VlanNode + ); if (VlanDevicePath == NULL) { return NULL; } @@ -85,12 +84,12 @@ MnpCreateVlanChild ( // Create child VLAN handle by installing DevicePath protocol // ChildHandle = NULL; - Status = gBS->InstallMultipleProtocolInterfaces ( - &ChildHandle, - &gEfiDevicePathProtocolGuid, - VlanDevicePath, - NULL - ); + Status = gBS->InstallMultipleProtocolInterfaces ( + &ChildHandle, + &gEfiDevicePathProtocolGuid, + VlanDevicePath, + NULL + ); if (EFI_ERROR (Status)) { FreePool (VlanDevicePath); return NULL; @@ -116,9 +115,9 @@ MnpCreateVlanChild ( **/ BOOLEAN MnpRemoveVlanTag ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN OUT NET_BUF *Nbuf, - OUT UINT16 *VlanId + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN OUT NET_BUF *Nbuf, + OUT UINT16 *VlanId ) { UINT8 *Packet; @@ -138,7 +137,7 @@ MnpRemoveVlanTag ( // Check whether this is VLAN tagged frame by Ether Type // *VlanId = 0; - ProtocolType = NTOHS (*(UINT16 *) (Packet + ProtocolOffset)); + ProtocolType = NTOHS (*(UINT16 *)(Packet + ProtocolOffset)); if (ProtocolType != ETHER_TYPE_VLAN) { // // Not a VLAN tagged frame @@ -146,8 +145,8 @@ MnpRemoveVlanTag ( return FALSE; } - VlanTag.Uint16 = NTOHS (*(UINT16 *) (Packet + ProtocolOffset + sizeof (ProtocolType))); - *VlanId = VlanTag.Bits.Vid; + VlanTag.Uint16 = NTOHS (*(UINT16 *)(Packet + ProtocolOffset + sizeof (ProtocolType))); + *VlanId = VlanTag.Bits.Vid; // // Move hardware address (DA + SA) 4 bytes right to override VLAN tag @@ -162,7 +161,6 @@ MnpRemoveVlanTag ( return TRUE; } - /** Build the vlan packet to transmit from the TxData passed in. @@ -177,28 +175,28 @@ MnpRemoveVlanTag ( **/ VOID MnpInsertVlanTag ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, - OUT UINT16 *ProtocolType, - IN OUT UINT8 **Packet, - IN OUT UINT32 *Length + IN MNP_SERVICE_DATA *MnpServiceData, + IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, + OUT UINT16 *ProtocolType, + IN OUT UINT8 **Packet, + IN OUT UINT32 *Length ) { - VLAN_TCI *VlanTci; - UINT16 *Tpid; - UINT16 *EtherType; - MNP_DEVICE_DATA *MnpDeviceData; - EFI_SIMPLE_NETWORK_MODE *SnpMode; + VLAN_TCI *VlanTci; + UINT16 *Tpid; + UINT16 *EtherType; + MNP_DEVICE_DATA *MnpDeviceData; + EFI_SIMPLE_NETWORK_MODE *SnpMode; MnpDeviceData = MnpServiceData->MnpDeviceData; SnpMode = MnpDeviceData->Snp->Mode; *ProtocolType = ETHER_TYPE_VLAN; - *Length = *Length + NET_VLAN_TAG_LEN; - *Packet = *Packet - NET_VLAN_TAG_LEN; + *Length = *Length + NET_VLAN_TAG_LEN; + *Packet = *Packet - NET_VLAN_TAG_LEN; - Tpid = (UINT16 *) (*Packet + SnpMode->MediaHeaderSize - sizeof (*ProtocolType)); - VlanTci = (VLAN_TCI *) (UINTN) (Tpid + 1); + Tpid = (UINT16 *)(*Packet + SnpMode->MediaHeaderSize - sizeof (*ProtocolType)); + VlanTci = (VLAN_TCI *)(UINTN)(Tpid + 1); if (TxData->HeaderLength != 0) { // // Media header is in packet, move DA+SA 4 bytes left @@ -213,7 +211,7 @@ MnpInsertVlanTag ( // // Media header not in packet, VLAN TCI and original protocol type becomes payload // - EtherType = (UINT16 *) (UINTN) (VlanTci + 1); + EtherType = (UINT16 *)(UINTN)(VlanTci + 1); *EtherType = HTONS (TxData->ProtocolType); } @@ -237,36 +235,38 @@ MnpInsertVlanTag ( **/ EFI_STATUS MnpCheckVlanVariable ( - IN MNP_DEVICE_DATA *MnpDeviceData, - IN VLAN_TCI *Buffer, - IN UINTN NumberOfVlan, - OUT UINTN *NewNumberOfVlan + IN MNP_DEVICE_DATA *MnpDeviceData, + IN VLAN_TCI *Buffer, + IN UINTN NumberOfVlan, + OUT UINTN *NewNumberOfVlan ) { - UINTN Index; - UINTN Index2; - UINTN Count; - BOOLEAN FoundDuplicateItem; - EFI_STATUS Status; + UINTN Index; + UINTN Index2; + UINTN Count; + BOOLEAN FoundDuplicateItem; + EFI_STATUS Status; - Count = 0; - FoundDuplicateItem = FALSE; - Status = EFI_SUCCESS; + Count = 0; + FoundDuplicateItem = FALSE; + Status = EFI_SUCCESS; for (Index = 0; Index < NumberOfVlan; Index++) { - for (Index2 = Index + 1; Index2 < NumberOfVlan; Index2++) { - if (Buffer[Index].Bits.Vid == Buffer[Index2].Bits.Vid) { - FoundDuplicateItem = TRUE; - Count++; - break; - } - } - if (FoundDuplicateItem) { - for (Index2 = Index +1; Index2 < NumberOfVlan; Index++, Index2++) { - CopyMem (Buffer + Index, Buffer + Index2, sizeof (VLAN_TCI)); + for (Index2 = Index + 1; Index2 < NumberOfVlan; Index2++) { + if (Buffer[Index].Bits.Vid == Buffer[Index2].Bits.Vid) { + FoundDuplicateItem = TRUE; + Count++; + break; + } + } + + if (FoundDuplicateItem) { + for (Index2 = Index +1; Index2 < NumberOfVlan; Index++, Index2++) { + CopyMem (Buffer + Index, Buffer + Index2, sizeof (VLAN_TCI)); + } } - } - FoundDuplicateItem = FALSE; + + FoundDuplicateItem = FALSE; } *NewNumberOfVlan = NumberOfVlan - Count; @@ -293,9 +293,9 @@ MnpCheckVlanVariable ( **/ EFI_STATUS MnpGetVlanVariable ( - IN MNP_DEVICE_DATA *MnpDeviceData, - OUT UINTN *NumberOfVlan, - OUT VLAN_TCI **VlanVariable + IN MNP_DEVICE_DATA *MnpDeviceData, + OUT UINTN *NumberOfVlan, + OUT VLAN_TCI **VlanVariable ) { UINTN BufferSize; @@ -306,15 +306,15 @@ MnpGetVlanVariable ( // // Get VLAN configuration from EFI Variable // - Buffer = NULL; + Buffer = NULL; BufferSize = 0; - Status = gRT->GetVariable ( - MnpDeviceData->MacString, - &gEfiVlanConfigProtocolGuid, - NULL, - &BufferSize, - NULL - ); + Status = gRT->GetVariable ( + MnpDeviceData->MacString, + &gEfiVlanConfigProtocolGuid, + NULL, + &BufferSize, + NULL + ); if (Status != EFI_BUFFER_TOO_SMALL) { return EFI_NOT_FOUND; } @@ -361,9 +361,9 @@ MnpGetVlanVariable ( **/ EFI_STATUS MnpSetVlanVariable ( - IN MNP_DEVICE_DATA *MnpDeviceData, - IN UINTN NumberOfVlan, - IN VLAN_TCI *VlanVariable + IN MNP_DEVICE_DATA *MnpDeviceData, + IN UINTN NumberOfVlan, + IN VLAN_TCI *VlanVariable ) { return gRT->SetVariable ( @@ -375,7 +375,6 @@ MnpSetVlanVariable ( ); } - /** Create a VLAN device or modify the configuration parameter of an already-configured VLAN. @@ -410,9 +409,9 @@ MnpSetVlanVariable ( EFI_STATUS EFIAPI VlanConfigSet ( - IN EFI_VLAN_CONFIG_PROTOCOL *This, - IN UINT16 VlanId, - IN UINT8 Priority + IN EFI_VLAN_CONFIG_PROTOCOL *This, + IN UINT16 VlanId, + IN UINT8 Priority ) { EFI_STATUS Status; @@ -429,14 +428,14 @@ VlanConfigSet ( return EFI_INVALID_PARAMETER; } - IsAdd = FALSE; + IsAdd = FALSE; MnpDeviceData = MNP_DEVICE_DATA_FROM_THIS (This); if (MnpDeviceData->NumberOfVlan == 0) { // // No existing VLAN, this is the first VLAN to add // - IsAdd = TRUE; - Entry = GetFirstNode (&MnpDeviceData->ServiceList); + IsAdd = TRUE; + Entry = GetFirstNode (&MnpDeviceData->ServiceList); MnpServiceData = MNP_SERVICE_DATA_FROM_LINK (Entry); if (VlanId != 0) { @@ -470,7 +469,7 @@ VlanConfigSet ( // // VlanId not found, create a new MNP service data // - IsAdd = TRUE; + IsAdd = TRUE; MnpServiceData = MnpCreateServiceData (MnpDeviceData, VlanId, Priority); if (MnpServiceData == NULL) { return EFI_OUT_OF_RESOURCES; @@ -478,7 +477,7 @@ VlanConfigSet ( } } - MnpServiceData->VlanId = VlanId; + MnpServiceData->VlanId = VlanId; MnpServiceData->Priority = Priority; if (IsAdd) { MnpDeviceData->NumberOfVlan++; @@ -516,6 +515,7 @@ VlanConfigSet ( break; } } + ASSERT (Index < NumberOfVlan); NewVariable = OldVariable; @@ -536,7 +536,6 @@ Exit: return Status; } - /** Find configuration information for specified VLAN or all configured VLANs. @@ -559,10 +558,10 @@ Exit: EFI_STATUS EFIAPI VlanConfigFind ( - IN EFI_VLAN_CONFIG_PROTOCOL *This, - IN UINT16 *VlanId OPTIONAL, - OUT UINT16 *NumberOfVlan, - OUT EFI_VLAN_FIND_DATA **Entries + IN EFI_VLAN_CONFIG_PROTOCOL *This, + IN UINT16 *VlanId OPTIONAL, + OUT UINT16 *NumberOfVlan, + OUT EFI_VLAN_FIND_DATA **Entries ) { MNP_DEVICE_DATA *MnpDeviceData; @@ -570,7 +569,7 @@ VlanConfigFind ( LIST_ENTRY *Entry; EFI_VLAN_FIND_DATA *VlanData; - if ((This == NULL) || (VlanId != NULL && *VlanId > 4094) || (NumberOfVlan == NULL) || (Entries == NULL)) { + if ((This == NULL) || ((VlanId != NULL) && (*VlanId > 4094)) || (NumberOfVlan == NULL) || (Entries == NULL)) { return EFI_INVALID_PARAMETER; } @@ -586,8 +585,8 @@ VlanConfigFind ( // // Return all current VLAN configuration // - *NumberOfVlan = (UINT16) MnpDeviceData->NumberOfVlan; - VlanData = AllocateZeroPool (*NumberOfVlan * sizeof (EFI_VLAN_FIND_DATA)); + *NumberOfVlan = (UINT16)MnpDeviceData->NumberOfVlan; + VlanData = AllocateZeroPool (*NumberOfVlan * sizeof (EFI_VLAN_FIND_DATA)); if (VlanData == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -596,7 +595,7 @@ VlanConfigFind ( NET_LIST_FOR_EACH (Entry, &MnpDeviceData->ServiceList) { MnpServiceData = MNP_SERVICE_DATA_FROM_LINK (Entry); - VlanData->VlanId = MnpServiceData->VlanId; + VlanData->VlanId = MnpServiceData->VlanId; VlanData->Priority = MnpServiceData->Priority; VlanData++; } @@ -616,16 +615,16 @@ VlanConfigFind ( if (VlanData == NULL) { return EFI_OUT_OF_RESOURCES; } - VlanData->VlanId = MnpServiceData->VlanId; + + VlanData->VlanId = MnpServiceData->VlanId; VlanData->Priority = MnpServiceData->Priority; *NumberOfVlan = 1; - *Entries = VlanData; + *Entries = VlanData; return EFI_SUCCESS; } - /** Remove the configured VLAN device. @@ -646,8 +645,8 @@ VlanConfigFind ( EFI_STATUS EFIAPI VlanConfigRemove ( - IN EFI_VLAN_CONFIG_PROTOCOL *This, - IN UINT16 VlanId + IN EFI_VLAN_CONFIG_PROTOCOL *This, + IN UINT16 VlanId ) { EFI_STATUS Status; diff --git a/NetworkPkg/MnpDxe/MnpVlan.h b/NetworkPkg/MnpDxe/MnpVlan.h index 4e0ddef2df..03dc1cac38 100644 --- a/NetworkPkg/MnpDxe/MnpVlan.h +++ b/NetworkPkg/MnpDxe/MnpVlan.h @@ -11,8 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "MnpDriver.h" -extern EFI_VLAN_CONFIG_PROTOCOL mVlanConfigProtocolTemplate; - +extern EFI_VLAN_CONFIG_PROTOCOL mVlanConfigProtocolTemplate; /** Create a child handle for the VLAN ID. @@ -27,10 +26,10 @@ extern EFI_VLAN_CONFIG_PROTOCOL mVlanConfigProtocolTemplate; **/ EFI_HANDLE MnpCreateVlanChild ( - IN EFI_HANDLE ImageHandle, - IN EFI_HANDLE ControllerHandle, - IN UINT16 VlanId, - OUT EFI_DEVICE_PATH_PROTOCOL **Devicepath OPTIONAL + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE ControllerHandle, + IN UINT16 VlanId, + OUT EFI_DEVICE_PATH_PROTOCOL **Devicepath OPTIONAL ); /** @@ -46,9 +45,9 @@ MnpCreateVlanChild ( **/ BOOLEAN MnpRemoveVlanTag ( - IN OUT MNP_DEVICE_DATA *MnpDeviceData, - IN OUT NET_BUF *Nbuf, - OUT UINT16 *VlanId + IN OUT MNP_DEVICE_DATA *MnpDeviceData, + IN OUT NET_BUF *Nbuf, + OUT UINT16 *VlanId ); /** @@ -65,11 +64,11 @@ MnpRemoveVlanTag ( **/ VOID MnpInsertVlanTag ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, - OUT UINT16 *ProtocolType, - IN OUT UINT8 **Packet, - IN OUT UINT32 *Length + IN MNP_SERVICE_DATA *MnpServiceData, + IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, + OUT UINT16 *ProtocolType, + IN OUT UINT8 **Packet, + IN OUT UINT32 *Length ); /** @@ -88,9 +87,9 @@ MnpInsertVlanTag ( **/ EFI_STATUS MnpGetVlanVariable ( - IN MNP_DEVICE_DATA *MnpDeviceData, - OUT UINTN *NumberOfVlan, - OUT VLAN_TCI **VlanVariable + IN MNP_DEVICE_DATA *MnpDeviceData, + OUT UINTN *NumberOfVlan, + OUT VLAN_TCI **VlanVariable ); /** @@ -106,9 +105,9 @@ MnpGetVlanVariable ( **/ EFI_STATUS MnpSetVlanVariable ( - IN MNP_DEVICE_DATA *MnpDeviceData, - IN UINTN NumberOfVlan, - IN VLAN_TCI *VlanVariable + IN MNP_DEVICE_DATA *MnpDeviceData, + IN UINTN NumberOfVlan, + IN VLAN_TCI *VlanVariable ); /** @@ -145,9 +144,9 @@ MnpSetVlanVariable ( EFI_STATUS EFIAPI VlanConfigSet ( - IN EFI_VLAN_CONFIG_PROTOCOL *This, - IN UINT16 VlanId, - IN UINT8 Priority + IN EFI_VLAN_CONFIG_PROTOCOL *This, + IN UINT16 VlanId, + IN UINT8 Priority ); /** @@ -172,10 +171,10 @@ VlanConfigSet ( EFI_STATUS EFIAPI VlanConfigFind ( - IN EFI_VLAN_CONFIG_PROTOCOL *This, - IN UINT16 *VlanId OPTIONAL, - OUT UINT16 *NumberOfVlan, - OUT EFI_VLAN_FIND_DATA **Entries + IN EFI_VLAN_CONFIG_PROTOCOL *This, + IN UINT16 *VlanId OPTIONAL, + OUT UINT16 *NumberOfVlan, + OUT EFI_VLAN_FIND_DATA **Entries ); /** @@ -198,8 +197,8 @@ VlanConfigFind ( EFI_STATUS EFIAPI VlanConfigRemove ( - IN EFI_VLAN_CONFIG_PROTOCOL *This, - IN UINT16 VlanId + IN EFI_VLAN_CONFIG_PROTOCOL *This, + IN UINT16 VlanId ); #endif diff --git a/NetworkPkg/Mtftp4Dxe/ComponentName.c b/NetworkPkg/Mtftp4Dxe/ComponentName.c index 8b84caf113..2455a28d27 100644 --- a/NetworkPkg/Mtftp4Dxe/ComponentName.c +++ b/NetworkPkg/Mtftp4Dxe/ComponentName.c @@ -11,6 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user readable name of the driver. @@ -55,10 +56,9 @@ EFIAPI Mtftp4ComponentNameGetDriverName ( IN EFI_COMPONENT_NAME_PROTOCOL *This, IN CHAR8 *Language, - OUT CHAR16 **DriverName + OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -130,14 +130,13 @@ Mtftp4ComponentNameGetDriverName ( EFI_STATUS EFIAPI Mtftp4ComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); - /// /// EFI Component Name Protocol /// @@ -150,14 +149,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gMtftp4ComponentName /// /// EFI Component Name 2 Protocol /// -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gMtftp4ComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) Mtftp4ComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) Mtftp4ComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gMtftp4ComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)Mtftp4ComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)Mtftp4ComponentNameGetControllerName, "en" }; - -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mMtftp4DriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mMtftp4DriverNameTable[] = { { "eng;en", L"MTFTP4 Network Service" @@ -168,7 +166,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mMtftp4DriverNameTable[] } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gMtftp4ControllerNameTable = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gMtftp4ControllerNameTable = NULL; /** Retrieves a Unicode string that is the user readable name of the driver. @@ -214,7 +212,7 @@ EFIAPI Mtftp4ComponentNameGetDriverName ( IN EFI_COMPONENT_NAME_PROTOCOL *This, IN CHAR8 *Language, - OUT CHAR16 **DriverName + OUT CHAR16 **DriverName ) { return LookupUnicodeString2 ( @@ -238,12 +236,12 @@ Mtftp4ComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - IN EFI_MTFTP4_PROTOCOL *Mtftp4 + IN EFI_MTFTP4_PROTOCOL *Mtftp4 ) { - EFI_STATUS Status; - CHAR16 HandleName[80]; - EFI_MTFTP4_MODE_DATA ModeData; + EFI_STATUS Status; + CHAR16 HandleName[80]; + EFI_MTFTP4_MODE_DATA ModeData; if (Mtftp4 == NULL) { return EFI_INVALID_PARAMETER; @@ -258,7 +256,9 @@ UpdateName ( return Status; } - UnicodeSPrint (HandleName, sizeof (HandleName), + UnicodeSPrint ( + HandleName, + sizeof (HandleName), L"MTFTPv4 (ServerIp=%d.%d.%d.%d, ServerPort=%d)", ModeData.ConfigData.ServerIp.Addr[0], ModeData.ConfigData.ServerIp.Addr[1], @@ -363,15 +363,15 @@ UpdateName ( EFI_STATUS EFIAPI Mtftp4ComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_MTFTP4_PROTOCOL *Mtftp4; + EFI_STATUS Status; + EFI_MTFTP4_PROTOCOL *Mtftp4; // // Only provide names for child handles. diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c b/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c index a795d26247..b19192bfc2 100644 --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.c @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Mtftp4Impl.h" -EFI_DRIVER_BINDING_PROTOCOL gMtftp4DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gMtftp4DriverBinding = { Mtftp4DriverBindingSupported, Mtftp4DriverBindingStart, Mtftp4DriverBindingStop, @@ -22,7 +22,6 @@ EFI_SERVICE_BINDING_PROTOCOL gMtftp4ServiceBindingTemplete = { Mtftp4ServiceBindingDestroyChild }; - /** The driver entry point which installs multiple protocols to the ImageHandle. @@ -36,8 +35,8 @@ EFI_SERVICE_BINDING_PROTOCOL gMtftp4ServiceBindingTemplete = { EFI_STATUS EFIAPI Mtftp4DriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { return EfiLibInstallDriverBindingComponentName2 ( @@ -50,7 +49,6 @@ Mtftp4DriverEntryPoint ( ); } - /** Test whether MTFTP driver support this controller. @@ -75,9 +73,9 @@ Mtftp4DriverEntryPoint ( EFI_STATUS EFIAPI Mtftp4DriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { EFI_STATUS Status; @@ -94,7 +92,6 @@ Mtftp4DriverBindingSupported ( return Status; } - /** Config a NULL UDP that is used to keep the connection between UDP and MTFTP. @@ -110,14 +107,13 @@ Mtftp4DriverBindingSupported ( EFI_STATUS EFIAPI Mtftp4ConfigNullUdp ( - IN UDP_IO *UdpIo, - IN VOID *Context + IN UDP_IO *UdpIo, + IN VOID *Context ) { return EFI_SUCCESS; } - /** Create then initialize a MTFTP service binding instance. @@ -136,16 +132,16 @@ Mtftp4ConfigNullUdp ( **/ EFI_STATUS Mtftp4CreateService ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE Image, - OUT MTFTP4_SERVICE **Service + IN EFI_HANDLE Controller, + IN EFI_HANDLE Image, + OUT MTFTP4_SERVICE **Service ) { - MTFTP4_SERVICE *MtftpSb; - EFI_STATUS Status; + MTFTP4_SERVICE *MtftpSb; + EFI_STATUS Status; - *Service = NULL; - MtftpSb = AllocatePool (sizeof (MTFTP4_SERVICE)); + *Service = NULL; + MtftpSb = AllocatePool (sizeof (MTFTP4_SERVICE)); if (MtftpSb == NULL) { return EFI_OUT_OF_RESOURCES; @@ -229,7 +225,6 @@ Mtftp4CreateService ( return EFI_SUCCESS; } - /** Release all the resource used the MTFTP service binding instance. @@ -238,7 +233,7 @@ Mtftp4CreateService ( **/ VOID Mtftp4CleanService ( - IN MTFTP4_SERVICE *MtftpSb + IN MTFTP4_SERVICE *MtftpSb ) { UdpIoFreeIo (MtftpSb->ConnectUdp); @@ -247,7 +242,6 @@ Mtftp4CleanService ( gBS->CloseEvent (MtftpSb->Timer); } - /** Start the MTFTP driver on this controller. @@ -272,8 +266,8 @@ Mtftp4DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - MTFTP4_SERVICE *MtftpSb; - EFI_STATUS Status; + MTFTP4_SERVICE *MtftpSb; + EFI_STATUS Status; // // Directly return if driver is already running. @@ -296,6 +290,7 @@ Mtftp4DriverBindingStart ( if (EFI_ERROR (Status)) { return Status; } + ASSERT (MtftpSb != NULL); Status = gBS->SetTimer (MtftpSb->Timer, TimerPeriodic, TICKS_PER_SECOND); @@ -346,8 +341,8 @@ ON_ERROR: EFI_STATUS EFIAPI Mtftp4DestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { MTFTP4_PROTOCOL *Instance; @@ -355,14 +350,14 @@ Mtftp4DestroyChildEntryInHandleBuffer ( UINTN NumberOfChildren; EFI_HANDLE *ChildHandleBuffer; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - Instance = NET_LIST_USER_STRUCT_S (Entry, MTFTP4_PROTOCOL, Link, MTFTP4_PROTOCOL_SIGNATURE); - ServiceBinding = ((MTFTP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; - NumberOfChildren = ((MTFTP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; - ChildHandleBuffer = ((MTFTP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; + Instance = NET_LIST_USER_STRUCT_S (Entry, MTFTP4_PROTOCOL, Link, MTFTP4_PROTOCOL_SIGNATURE); + ServiceBinding = ((MTFTP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; + NumberOfChildren = ((MTFTP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; + ChildHandleBuffer = ((MTFTP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; if (!NetIsInHandleBuffer (Instance->Handle, NumberOfChildren, ChildHandleBuffer)) { return EFI_SUCCESS; @@ -387,18 +382,18 @@ Mtftp4DestroyChildEntryInHandleBuffer ( EFI_STATUS EFIAPI Mtftp4DriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer ) { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - MTFTP4_SERVICE *MtftpSb; - EFI_HANDLE NicHandle; - EFI_STATUS Status; - LIST_ENTRY *List; - MTFTP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + MTFTP4_SERVICE *MtftpSb; + EFI_HANDLE NicHandle; + EFI_STATUS Status; + LIST_ENTRY *List; + MTFTP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; // // MTFTP driver opens UDP child, So, Controller is a UDP @@ -414,7 +409,7 @@ Mtftp4DriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiMtftp4ServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -430,19 +425,19 @@ Mtftp4DriverBindingStop ( // // Destroy the Mtftp4 child instance in ChildHandleBuffer. // - List = &MtftpSb->Children; + List = &MtftpSb->Children; Context.ServiceBinding = ServiceBinding; Context.NumberOfChildren = NumberOfChildren; Context.ChildHandleBuffer = ChildHandleBuffer; - Status = NetDestroyLinkList ( - List, - Mtftp4DestroyChildEntryInHandleBuffer, - &Context, - NULL - ); + Status = NetDestroyLinkList ( + List, + Mtftp4DestroyChildEntryInHandleBuffer, + &Context, + NULL + ); } - if (NumberOfChildren == 0 && IsListEmpty (&MtftpSb->Children)) { + if ((NumberOfChildren == 0) && IsListEmpty (&MtftpSb->Children)) { gBS->UninstallProtocolInterface ( NicHandle, &gEfiMtftp4ServiceBindingProtocolGuid, @@ -454,6 +449,7 @@ Mtftp4DriverBindingStop ( FreeUnicodeStringTable (gMtftp4ControllerNameTable); gMtftp4ControllerNameTable = NULL; } + FreePool (MtftpSb); Status = EFI_SUCCESS; @@ -462,7 +458,6 @@ Mtftp4DriverBindingStop ( return Status; } - /** Initialize a MTFTP protocol instance which is the child of MtftpSb. @@ -472,8 +467,8 @@ Mtftp4DriverBindingStop ( **/ VOID Mtftp4InitProtocol ( - IN MTFTP4_SERVICE *MtftpSb, - OUT MTFTP4_PROTOCOL *Instance + IN MTFTP4_SERVICE *MtftpSb, + OUT MTFTP4_PROTOCOL *Instance ) { ZeroMem (Instance, sizeof (MTFTP4_PROTOCOL)); @@ -481,13 +476,12 @@ Mtftp4InitProtocol ( Instance->Signature = MTFTP4_PROTOCOL_SIGNATURE; InitializeListHead (&Instance->Link); CopyMem (&Instance->Mtftp4, &gMtftp4ProtocolTemplate, sizeof (Instance->Mtftp4)); - Instance->State = MTFTP4_STATE_UNCONFIGED; - Instance->Service = MtftpSb; + Instance->State = MTFTP4_STATE_UNCONFIGED; + Instance->Service = MtftpSb; InitializeListHead (&Instance->Blocks); } - /** Create a MTFTP child for the service binding instance, then install the MTFTP protocol to the ChildHandle. @@ -504,14 +498,14 @@ EFI_STATUS EFIAPI Mtftp4ServiceBindingCreateChild ( IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE *ChildHandle + IN EFI_HANDLE *ChildHandle ) { - MTFTP4_SERVICE *MtftpSb; - MTFTP4_PROTOCOL *Instance; - EFI_STATUS Status; - EFI_TPL OldTpl; - VOID *Udp4; + MTFTP4_SERVICE *MtftpSb; + MTFTP4_PROTOCOL *Instance; + EFI_STATUS Status; + EFI_TPL OldTpl; + VOID *Udp4; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -556,7 +550,7 @@ Mtftp4ServiceBindingCreateChild ( return Status; } - Instance->Handle = *ChildHandle; + Instance->Handle = *ChildHandle; // // Open the Udp4 protocol BY_CHILD. @@ -564,7 +558,7 @@ Mtftp4ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( MtftpSb->ConnectUdp->UdpHandle, &gEfiUdp4ProtocolGuid, - (VOID **) &Udp4, + (VOID **)&Udp4, gMtftp4DriverBinding.DriverBindingHandle, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -579,7 +573,7 @@ Mtftp4ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( Instance->UnicastPort->UdpHandle, &gEfiUdp4ProtocolGuid, - (VOID **) &Udp4, + (VOID **)&Udp4, gMtftp4DriverBinding.DriverBindingHandle, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -625,7 +619,6 @@ ON_ERROR: return Status; } - /** Destroy one of the service binding's child. @@ -641,15 +634,15 @@ ON_ERROR: EFI_STATUS EFIAPI Mtftp4ServiceBindingDestroyChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE ChildHandle + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN EFI_HANDLE ChildHandle ) { - MTFTP4_SERVICE *MtftpSb; - MTFTP4_PROTOCOL *Instance; - EFI_MTFTP4_PROTOCOL *Mtftp4; - EFI_STATUS Status; - EFI_TPL OldTpl; + MTFTP4_SERVICE *MtftpSb; + MTFTP4_PROTOCOL *Instance; + EFI_MTFTP4_PROTOCOL *Mtftp4; + EFI_STATUS Status; + EFI_TPL OldTpl; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -661,7 +654,7 @@ Mtftp4ServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiMtftp4ProtocolGuid, - (VOID **) &Mtftp4, + (VOID **)&Mtftp4, gMtftp4DriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -671,8 +664,8 @@ Mtftp4ServiceBindingDestroyChild ( return EFI_UNSUPPORTED; } - Instance = MTFTP4_PROTOCOL_FROM_THIS (Mtftp4); - MtftpSb = MTFTP4_SERVICE_FROM_THIS (This); + Instance = MTFTP4_PROTOCOL_FROM_THIS (Mtftp4); + MtftpSb = MTFTP4_SERVICE_FROM_THIS (This); if (Instance->Service != MtftpSb) { return EFI_INVALID_PARAMETER; diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.h b/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.h index 6637c5a93e..82761876d1 100644 --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.h +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Driver.h @@ -37,9 +37,9 @@ extern EFI_UNICODE_STRING_TABLE *gMtftp4ControllerNameTable; EFI_STATUS EFIAPI Mtftp4DriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ); /** @@ -82,10 +82,10 @@ Mtftp4DriverBindingStart ( EFI_STATUS EFIAPI Mtftp4DriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer ); /** @@ -104,7 +104,7 @@ EFI_STATUS EFIAPI Mtftp4ServiceBindingCreateChild ( IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE *ChildHandle + IN EFI_HANDLE *ChildHandle ); /** @@ -122,10 +122,8 @@ Mtftp4ServiceBindingCreateChild ( EFI_STATUS EFIAPI Mtftp4ServiceBindingDestroyChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE ChildHandle + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN EFI_HANDLE ChildHandle ); - - #endif diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Impl.c b/NetworkPkg/Mtftp4Dxe/Mtftp4Impl.c index 4bb37224cd..211ddbcdcc 100644 --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Impl.c +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Impl.c @@ -7,10 +7,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Mtftp4Impl.h" - /** Clean up the MTFTP session to get ready for new operation. @@ -20,14 +18,14 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ VOID Mtftp4CleanOperation ( - IN OUT MTFTP4_PROTOCOL *Instance, - IN EFI_STATUS Result + IN OUT MTFTP4_PROTOCOL *Instance, + IN EFI_STATUS Result ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - MTFTP4_BLOCK_RANGE *Block; - EFI_MTFTP4_TOKEN *Token; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + MTFTP4_BLOCK_RANGE *Block; + EFI_MTFTP4_TOKEN *Token; // // Free various resources. @@ -71,7 +69,7 @@ Mtftp4CleanOperation ( ZeroMem (&Instance->RequestOption, sizeof (MTFTP4_OPTION)); - Instance->Operation = 0; + Instance->Operation = 0; Instance->BlkSize = MTFTP4_DEFAULT_BLKSIZE; Instance->WindowSize = 1; @@ -91,7 +89,6 @@ Mtftp4CleanOperation ( Instance->Master = TRUE; } - /** Check packet for GetInfo. @@ -109,47 +106,48 @@ Mtftp4CleanOperation ( EFI_STATUS EFIAPI Mtftp4GetInfoCheckPacket ( - IN EFI_MTFTP4_PROTOCOL *This, - IN EFI_MTFTP4_TOKEN *Token, - IN UINT16 PacketLen, - IN EFI_MTFTP4_PACKET *Packet + IN EFI_MTFTP4_PROTOCOL *This, + IN EFI_MTFTP4_TOKEN *Token, + IN UINT16 PacketLen, + IN EFI_MTFTP4_PACKET *Packet ) { - MTFTP4_GETINFO_STATE *State; - EFI_STATUS Status; - UINT16 OpCode; + MTFTP4_GETINFO_STATE *State; + EFI_STATUS Status; + UINT16 OpCode; EFI_MTFTP4_ERROR_HEADER *ErrorHeader; - State = (MTFTP4_GETINFO_STATE *) Token->Context; - OpCode = NTOHS (Packet->OpCode); + State = (MTFTP4_GETINFO_STATE *)Token->Context; + OpCode = NTOHS (Packet->OpCode); // // Set the GetInfo's return status according to the OpCode. // switch (OpCode) { - case EFI_MTFTP4_OPCODE_ERROR: - ErrorHeader = (EFI_MTFTP4_ERROR_HEADER *) Packet; - if (ErrorHeader->ErrorCode == EFI_MTFTP4_ERRORCODE_FILE_NOT_FOUND) { - DEBUG ((DEBUG_ERROR, "TFTP error code 1 (File Not Found)\n")); - } else { - DEBUG ((DEBUG_ERROR, "TFTP error code %d\n", ErrorHeader->ErrorCode)); - } - State->Status = EFI_TFTP_ERROR; - break; - - case EFI_MTFTP4_OPCODE_OACK: - State->Status = EFI_SUCCESS; - break; - - default: - State->Status = EFI_PROTOCOL_ERROR; + case EFI_MTFTP4_OPCODE_ERROR: + ErrorHeader = (EFI_MTFTP4_ERROR_HEADER *)Packet; + if (ErrorHeader->ErrorCode == EFI_MTFTP4_ERRORCODE_FILE_NOT_FOUND) { + DEBUG ((DEBUG_ERROR, "TFTP error code 1 (File Not Found)\n")); + } else { + DEBUG ((DEBUG_ERROR, "TFTP error code %d\n", ErrorHeader->ErrorCode)); + } + + State->Status = EFI_TFTP_ERROR; + break; + + case EFI_MTFTP4_OPCODE_OACK: + State->Status = EFI_SUCCESS; + break; + + default: + State->Status = EFI_PROTOCOL_ERROR; } // // Allocate buffer then copy the packet over. Use gBS->AllocatePool // in case AllocatePool will implements something tricky. // - Status = gBS->AllocatePool (EfiBootServicesData, PacketLen, (VOID **) State->Packet); + Status = gBS->AllocatePool (EfiBootServicesData, PacketLen, (VOID **)State->Packet); if (EFI_ERROR (Status)) { State->Status = EFI_OUT_OF_RESOURCES; @@ -162,7 +160,6 @@ Mtftp4GetInfoCheckPacket ( return EFI_ABORTED; } - /** Check whether the override data is valid. @@ -179,14 +176,14 @@ Mtftp4GetInfoCheckPacket ( **/ BOOLEAN Mtftp4OverrideValid ( - IN MTFTP4_PROTOCOL *Instance, - IN EFI_MTFTP4_OVERRIDE_DATA *Override + IN MTFTP4_PROTOCOL *Instance, + IN EFI_MTFTP4_OVERRIDE_DATA *Override ) { - EFI_MTFTP4_CONFIG_DATA *Config; - IP4_ADDR Ip; - IP4_ADDR Netmask; - IP4_ADDR Gateway; + EFI_MTFTP4_CONFIG_DATA *Config; + IP4_ADDR Ip; + IP4_ADDR Netmask; + IP4_ADDR Gateway; CopyMem (&Ip, &Override->ServerIp, sizeof (IP4_ADDR)); if (IP4_IS_UNSPECIFIED (NTOHL (Ip)) || IP4_IS_LOCAL_BROADCAST (NTOHL (Ip))) { @@ -205,7 +202,7 @@ Mtftp4OverrideValid ( Netmask = NTOHL (Netmask); Ip = NTOHL (Ip); - if ((Netmask != 0 && !NetIp4IsUnicast (Gateway, Netmask)) || !IP4_NET_EQUAL (Gateway, Ip, Netmask)) { + if (((Netmask != 0) && !NetIp4IsUnicast (Gateway, Netmask)) || !IP4_NET_EQUAL (Gateway, Ip, Netmask)) { return FALSE; } } @@ -213,7 +210,6 @@ Mtftp4OverrideValid ( return TRUE; } - /** Poll the UDP to get the IP4 default address, which may be retrieved by DHCP. @@ -231,15 +227,15 @@ Mtftp4OverrideValid ( **/ BOOLEAN Mtftp4GetMapping ( - IN MTFTP4_PROTOCOL *Instance, - IN UDP_IO *UdpIo, - IN EFI_UDP4_CONFIG_DATA *UdpCfgData + IN MTFTP4_PROTOCOL *Instance, + IN UDP_IO *UdpIo, + IN EFI_UDP4_CONFIG_DATA *UdpCfgData ) { - MTFTP4_SERVICE *Service; - EFI_IP4_MODE_DATA Ip4Mode; - EFI_UDP4_PROTOCOL *Udp; - EFI_STATUS Status; + MTFTP4_SERVICE *Service; + EFI_IP4_MODE_DATA Ip4Mode; + EFI_UDP4_PROTOCOL *Udp; + EFI_STATUS Status; ASSERT (Instance->Config.UseDefaultSetting); @@ -259,17 +255,16 @@ Mtftp4GetMapping ( Udp->Poll (Udp); if (!EFI_ERROR (Udp->GetModeData (Udp, NULL, &Ip4Mode, NULL, NULL)) && - Ip4Mode.IsConfigured) { - + Ip4Mode.IsConfigured) + { Udp->Configure (Udp, NULL); - return (BOOLEAN) (Udp->Configure (Udp, UdpCfgData) == EFI_SUCCESS); + return (BOOLEAN)(Udp->Configure (Udp, UdpCfgData) == EFI_SUCCESS); } } return FALSE; } - /** Configure the UDP port for unicast receiving. @@ -282,14 +277,14 @@ Mtftp4GetMapping ( **/ EFI_STATUS Mtftp4ConfigUnicastPort ( - IN UDP_IO *UdpIo, - IN MTFTP4_PROTOCOL *Instance + IN UDP_IO *UdpIo, + IN MTFTP4_PROTOCOL *Instance ) { - EFI_MTFTP4_CONFIG_DATA *Config; - EFI_UDP4_CONFIG_DATA UdpConfig; - EFI_STATUS Status; - IP4_ADDR Ip; + EFI_MTFTP4_CONFIG_DATA *Config; + EFI_UDP4_CONFIG_DATA UdpConfig; + EFI_STATUS Status; + IP4_ADDR Ip; Config = &Instance->Config; @@ -305,8 +300,8 @@ Mtftp4ConfigUnicastPort ( UdpConfig.UseDefaultAddress = Config->UseDefaultSetting; IP4_COPY_ADDRESS (&UdpConfig.StationAddress, &Config->StationIp); IP4_COPY_ADDRESS (&UdpConfig.SubnetMask, &Config->SubnetMask); - UdpConfig.StationPort = Config->LocalPort; - UdpConfig.RemotePort = 0; + UdpConfig.StationPort = Config->LocalPort; + UdpConfig.RemotePort = 0; Ip = HTONL (Instance->ServerIp); IP4_COPY_ADDRESS (&UdpConfig.RemoteAddress, &Ip); @@ -333,10 +328,10 @@ Mtftp4ConfigUnicastPort ( UdpIo->Protocol.Udp4->Configure (UdpIo->Protocol.Udp4, NULL); } } + return Status; } - /** Start the MTFTP session to do the operation, such as read file, write file, and read directory. @@ -353,9 +348,9 @@ Mtftp4ConfigUnicastPort ( **/ EFI_STATUS Mtftp4Start ( - IN EFI_MTFTP4_PROTOCOL *This, - IN EFI_MTFTP4_TOKEN *Token, - IN UINT16 Operation + IN EFI_MTFTP4_PROTOCOL *This, + IN EFI_MTFTP4_TOKEN *Token, + IN UINT16 Operation ) { MTFTP4_PROTOCOL *Instance; @@ -369,7 +364,8 @@ Mtftp4Start ( // Validate the parameters // if ((This == NULL) || (Token == NULL) || (Token->Filename == NULL) || - ((Token->OptionCount != 0) && (Token->OptionList == NULL))) { + ((Token->OptionCount != 0) && (Token->OptionList == NULL))) + { return EFI_INVALID_PARAMETER; } @@ -377,7 +373,8 @@ Mtftp4Start ( // User must provide at least one method to collect the data for download. // if (((Operation == EFI_MTFTP4_OPCODE_RRQ) || (Operation == EFI_MTFTP4_OPCODE_DIR)) && - ((Token->Buffer == NULL) && (Token->CheckPacket == NULL))) { + ((Token->Buffer == NULL) && (Token->CheckPacket == NULL))) + { return EFI_INVALID_PARAMETER; } @@ -385,7 +382,8 @@ Mtftp4Start ( // User must provide at least one method to provide the data for upload. // if ((Operation == EFI_MTFTP4_OPCODE_WRQ) && - ((Token->Buffer == NULL) && (Token->PacketNeeded == NULL))) { + ((Token->Buffer == NULL) && (Token->PacketNeeded == NULL))) + { return EFI_INVALID_PARAMETER; } @@ -438,30 +436,30 @@ Mtftp4Start ( // // Set the operation parameters from the configuration or override data. // - Config = &Instance->Config; - Instance->Token = Token; - Instance->BlkSize = MTFTP4_DEFAULT_BLKSIZE; - Instance->WindowSize = MTFTP4_DEFAULT_WINDOWSIZE; + Config = &Instance->Config; + Instance->Token = Token; + Instance->BlkSize = MTFTP4_DEFAULT_BLKSIZE; + Instance->WindowSize = MTFTP4_DEFAULT_WINDOWSIZE; CopyMem (&Instance->ServerIp, &Config->ServerIp, sizeof (IP4_ADDR)); - Instance->ServerIp = NTOHL (Instance->ServerIp); + Instance->ServerIp = NTOHL (Instance->ServerIp); Instance->ListeningPort = Config->InitialServerPort; Instance->ConnectedPort = 0; CopyMem (&Instance->Gateway, &Config->GatewayIp, sizeof (IP4_ADDR)); - Instance->Gateway = NTOHL (Instance->Gateway); + Instance->Gateway = NTOHL (Instance->Gateway); - Instance->MaxRetry = Config->TryCount; - Instance->Timeout = Config->TimeoutValue; - Instance->Master = TRUE; + Instance->MaxRetry = Config->TryCount; + Instance->Timeout = Config->TimeoutValue; + Instance->Master = TRUE; if (Override != NULL) { CopyMem (&Instance->ServerIp, &Override->ServerIp, sizeof (IP4_ADDR)); CopyMem (&Instance->Gateway, &Override->GatewayIp, sizeof (IP4_ADDR)); - Instance->ServerIp = NTOHL (Instance->ServerIp); - Instance->Gateway = NTOHL (Instance->Gateway); + Instance->ServerIp = NTOHL (Instance->ServerIp); + Instance->Gateway = NTOHL (Instance->Gateway); Instance->ListeningPort = Override->ServerPort; Instance->MaxRetry = Override->TryCount; @@ -508,7 +506,7 @@ Mtftp4Start ( goto ON_ERROR; } - gBS->RestoreTPL(OldTpl); + gBS->RestoreTPL (OldTpl); if (Token->Event != NULL) { return EFI_SUCCESS; @@ -531,7 +529,6 @@ ON_ERROR: return Status; } - /** Reads the current operational settings. @@ -550,8 +547,8 @@ ON_ERROR: EFI_STATUS EFIAPI EfiMtftp4GetModeData ( - IN EFI_MTFTP4_PROTOCOL *This, - OUT EFI_MTFTP4_MODE_DATA *ModeData + IN EFI_MTFTP4_PROTOCOL *This, + OUT EFI_MTFTP4_MODE_DATA *ModeData ) { MTFTP4_PROTOCOL *Instance; @@ -563,10 +560,10 @@ EfiMtftp4GetModeData ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - Instance = MTFTP4_PROTOCOL_FROM_THIS (This); - CopyMem(&ModeData->ConfigData, &Instance->Config, sizeof (Instance->Config)); + Instance = MTFTP4_PROTOCOL_FROM_THIS (This); + CopyMem (&ModeData->ConfigData, &Instance->Config, sizeof (Instance->Config)); ModeData->SupportedOptionCount = MTFTP4_SUPPORTED_OPTIONS; - ModeData->SupportedOptoins = (UINT8 **) mMtftp4SupportedOptions; + ModeData->SupportedOptoins = (UINT8 **)mMtftp4SupportedOptions; ModeData->UnsupportedOptionCount = 0; ModeData->UnsupportedOptoins = NULL; @@ -575,8 +572,6 @@ EfiMtftp4GetModeData ( return EFI_SUCCESS; } - - /** Initializes, changes, or resets the default operational setting for this EFI MTFTPv4 Protocol driver instance. @@ -627,16 +622,16 @@ EfiMtftp4GetModeData ( EFI_STATUS EFIAPI EfiMtftp4Configure ( - IN EFI_MTFTP4_PROTOCOL *This, - IN EFI_MTFTP4_CONFIG_DATA *ConfigData + IN EFI_MTFTP4_PROTOCOL *This, + IN EFI_MTFTP4_CONFIG_DATA *ConfigData ) { - MTFTP4_PROTOCOL *Instance; - EFI_TPL OldTpl; - IP4_ADDR Ip; - IP4_ADDR Netmask; - IP4_ADDR Gateway; - IP4_ADDR ServerIp; + MTFTP4_PROTOCOL *Instance; + EFI_TPL OldTpl; + IP4_ADDR Ip; + IP4_ADDR Netmask; + IP4_ADDR Gateway; + IP4_ADDR ServerIp; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -655,7 +650,6 @@ EfiMtftp4Configure ( Instance->State = MTFTP4_STATE_UNCONFIGED; gBS->RestoreTPL (OldTpl); - } else { // // Configure the parameters for new operation. @@ -670,19 +664,19 @@ EfiMtftp4Configure ( Gateway = NTOHL (Gateway); ServerIp = NTOHL (ServerIp); - if (ServerIp == 0 || IP4_IS_LOCAL_BROADCAST (ServerIp)) { + if ((ServerIp == 0) || IP4_IS_LOCAL_BROADCAST (ServerIp)) { return EFI_INVALID_PARAMETER; } if (!ConfigData->UseDefaultSetting && - ((!IP4_IS_VALID_NETMASK (Netmask) || (Netmask != 0 && !NetIp4IsUnicast (Ip, Netmask))))) { - + ((!IP4_IS_VALID_NETMASK (Netmask) || ((Netmask != 0) && !NetIp4IsUnicast (Ip, Netmask))))) + { return EFI_INVALID_PARAMETER; } if ((Gateway != 0) && - ((Netmask != 0xFFFFFFFF && !IP4_NET_EQUAL (Gateway, Ip, Netmask)) || (Netmask != 0 && !NetIp4IsUnicast (Gateway, Netmask)))) { - + (((Netmask != 0xFFFFFFFF) && !IP4_NET_EQUAL (Gateway, Ip, Netmask)) || ((Netmask != 0) && !NetIp4IsUnicast (Gateway, Netmask)))) + { return EFI_INVALID_PARAMETER; } @@ -693,7 +687,7 @@ EfiMtftp4Configure ( return EFI_ACCESS_DENIED; } - CopyMem(&Instance->Config, ConfigData, sizeof (*ConfigData));; + CopyMem (&Instance->Config, ConfigData, sizeof (*ConfigData)); Instance->State = MTFTP4_STATE_CONFIGED; gBS->RestoreTPL (OldTpl); @@ -702,8 +696,6 @@ EfiMtftp4Configure ( return EFI_SUCCESS; } - - /** Parses the options in an MTFTPv4 OACK packet. @@ -737,18 +729,18 @@ EfiMtftp4Configure ( EFI_STATUS EFIAPI EfiMtftp4ParseOptions ( - IN EFI_MTFTP4_PROTOCOL *This, - IN UINT32 PacketLen, - IN EFI_MTFTP4_PACKET *Packet, - OUT UINT32 *OptionCount, - OUT EFI_MTFTP4_OPTION **OptionList OPTIONAL + IN EFI_MTFTP4_PROTOCOL *This, + IN UINT32 PacketLen, + IN EFI_MTFTP4_PACKET *Packet, + OUT UINT32 *OptionCount, + OUT EFI_MTFTP4_OPTION **OptionList OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; if ((This == NULL) || (PacketLen < MTFTP4_OPCODE_LEN) || - (Packet == NULL) || (OptionCount == NULL)) { - + (Packet == NULL) || (OptionCount == NULL)) + { return EFI_INVALID_PARAMETER; } @@ -765,7 +757,6 @@ EfiMtftp4ParseOptions ( return EFI_SUCCESS; } - /** Downloads a file from an MTFTPv4 server. @@ -799,14 +790,13 @@ EfiMtftp4ParseOptions ( EFI_STATUS EFIAPI EfiMtftp4ReadFile ( - IN EFI_MTFTP4_PROTOCOL *This, - IN EFI_MTFTP4_TOKEN *Token + IN EFI_MTFTP4_PROTOCOL *This, + IN EFI_MTFTP4_TOKEN *Token ) { return Mtftp4Start (This, Token, EFI_MTFTP4_OPCODE_RRQ); } - /** Sends a data file to an MTFTPv4 server. May be unsupported in some EFI implementations @@ -860,14 +850,13 @@ EfiMtftp4ReadFile ( EFI_STATUS EFIAPI EfiMtftp4WriteFile ( - IN EFI_MTFTP4_PROTOCOL *This, - IN EFI_MTFTP4_TOKEN *Token + IN EFI_MTFTP4_PROTOCOL *This, + IN EFI_MTFTP4_TOKEN *Token ) { return Mtftp4Start (This, Token, EFI_MTFTP4_OPCODE_WRQ); } - /** Downloads a data file "directory" from an MTFTPv4 server. May be unsupported in some EFI implementations @@ -930,14 +919,13 @@ EfiMtftp4WriteFile ( EFI_STATUS EFIAPI EfiMtftp4ReadDirectory ( - IN EFI_MTFTP4_PROTOCOL *This, - IN EFI_MTFTP4_TOKEN *Token + IN EFI_MTFTP4_PROTOCOL *This, + IN EFI_MTFTP4_TOKEN *Token ) { return Mtftp4Start (This, Token, EFI_MTFTP4_OPCODE_DIR); } - /** Gets information about a file from an MTFTPv4 server. @@ -995,22 +983,23 @@ EfiMtftp4ReadDirectory ( EFI_STATUS EFIAPI EfiMtftp4GetInfo ( - IN EFI_MTFTP4_PROTOCOL *This, - IN EFI_MTFTP4_OVERRIDE_DATA *OverrideData OPTIONAL, - IN UINT8 *Filename, - IN UINT8 *ModeStr OPTIONAL, - IN UINT8 OptionCount, - IN EFI_MTFTP4_OPTION *OptionList OPTIONAL, - OUT UINT32 *PacketLength, - OUT EFI_MTFTP4_PACKET **Packet OPTIONAL + IN EFI_MTFTP4_PROTOCOL *This, + IN EFI_MTFTP4_OVERRIDE_DATA *OverrideData OPTIONAL, + IN UINT8 *Filename, + IN UINT8 *ModeStr OPTIONAL, + IN UINT8 OptionCount, + IN EFI_MTFTP4_OPTION *OptionList OPTIONAL, + OUT UINT32 *PacketLength, + OUT EFI_MTFTP4_PACKET **Packet OPTIONAL ) { - EFI_MTFTP4_TOKEN Token; - MTFTP4_GETINFO_STATE State; - EFI_STATUS Status; + EFI_MTFTP4_TOKEN Token; + MTFTP4_GETINFO_STATE State; + EFI_STATUS Status; if ((This == NULL) || (Filename == NULL) || (PacketLength == NULL) || - ((OptionCount != 0) && (OptionList == NULL))) { + ((OptionCount != 0) && (OptionList == NULL))) + { return EFI_INVALID_PARAMETER; } @@ -1018,10 +1007,10 @@ EfiMtftp4GetInfo ( *Packet = NULL; } - *PacketLength = 0; - State.Packet = Packet; - State.PacketLen = PacketLength; - State.Status = EFI_SUCCESS; + *PacketLength = 0; + State.Packet = Packet; + State.PacketLen = PacketLength; + State.Status = EFI_SUCCESS; // // Fill in the Token to issue an synchronous ReadFile operation @@ -1040,7 +1029,7 @@ EfiMtftp4GetInfo ( Token.TimeoutCallback = NULL; Token.PacketNeeded = NULL; - Status = EfiMtftp4ReadFile (This, &Token); + Status = EfiMtftp4ReadFile (This, &Token); if (EFI_ABORTED == Status) { return State.Status; @@ -1076,12 +1065,12 @@ EfiMtftp4GetInfo ( EFI_STATUS EFIAPI EfiMtftp4Poll ( - IN EFI_MTFTP4_PROTOCOL *This + IN EFI_MTFTP4_PROTOCOL *This ) { - MTFTP4_PROTOCOL *Instance; - EFI_UDP4_PROTOCOL *Udp; - EFI_STATUS Status; + MTFTP4_PROTOCOL *Instance; + EFI_UDP4_PROTOCOL *Udp; + EFI_STATUS Status; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -1095,13 +1084,13 @@ EfiMtftp4Poll ( return EFI_DEVICE_ERROR; } - Udp = Instance->UnicastPort->Protocol.Udp4; + Udp = Instance->UnicastPort->Protocol.Udp4; Status = Udp->Poll (Udp); Mtftp4OnTimerTick (NULL, Instance->Service); return Status; } -EFI_MTFTP4_PROTOCOL gMtftp4ProtocolTemplate = { +EFI_MTFTP4_PROTOCOL gMtftp4ProtocolTemplate = { EfiMtftp4GetModeData, EfiMtftp4Configure, EfiMtftp4GetInfo, diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Impl.h b/NetworkPkg/Mtftp4Dxe/Mtftp4Impl.h index b16ac0a4a4..7789755fe8 100644 --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Impl.h +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Impl.h @@ -15,7 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #ifndef __EFI_MTFTP4_IMPL_H__ #define __EFI_MTFTP4_IMPL_H__ @@ -33,19 +32,18 @@ SPDX-License-Identifier: BSD-2-Clause-Patent extern EFI_MTFTP4_PROTOCOL gMtftp4ProtocolTemplate; -typedef struct _MTFTP4_SERVICE MTFTP4_SERVICE; -typedef struct _MTFTP4_PROTOCOL MTFTP4_PROTOCOL; +typedef struct _MTFTP4_SERVICE MTFTP4_SERVICE; +typedef struct _MTFTP4_PROTOCOL MTFTP4_PROTOCOL; #include "Mtftp4Driver.h" #include "Mtftp4Option.h" #include "Mtftp4Support.h" - /// /// Some constant value of Mtftp service. /// -#define MTFTP4_SERVICE_SIGNATURE SIGNATURE_32 ('T', 'F', 'T', 'P') -#define MTFTP4_PROTOCOL_SIGNATURE SIGNATURE_32 ('t', 'f', 't', 'p') +#define MTFTP4_SERVICE_SIGNATURE SIGNATURE_32 ('T', 'F', 'T', 'P') +#define MTFTP4_PROTOCOL_SIGNATURE SIGNATURE_32 ('t', 'f', 't', 'p') #define MTFTP4_DEFAULT_SERVER_PORT 69 #define MTFTP4_DEFAULT_TIMEOUT 3 @@ -54,114 +52,113 @@ typedef struct _MTFTP4_PROTOCOL MTFTP4_PROTOCOL; #define MTFTP4_DEFAULT_WINDOWSIZE 1 #define MTFTP4_TIME_TO_GETMAP 5 -#define MTFTP4_STATE_UNCONFIGED 0 -#define MTFTP4_STATE_CONFIGED 1 -#define MTFTP4_STATE_DESTROY 2 +#define MTFTP4_STATE_UNCONFIGED 0 +#define MTFTP4_STATE_CONFIGED 1 +#define MTFTP4_STATE_DESTROY 2 /// /// Mtftp service block /// struct _MTFTP4_SERVICE { - UINT32 Signature; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + UINT32 Signature; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - UINT16 ChildrenNum; - LIST_ENTRY Children; + UINT16 ChildrenNum; + LIST_ENTRY Children; - EFI_EVENT Timer; ///< Ticking timer for all the MTFTP clients to handle the packet timeout case. - EFI_EVENT TimerNotifyLevel; ///< Ticking timer for all the MTFTP clients to calculate the packet live time. - EFI_EVENT TimerToGetMap; + EFI_EVENT Timer; ///< Ticking timer for all the MTFTP clients to handle the packet timeout case. + EFI_EVENT TimerNotifyLevel; ///< Ticking timer for all the MTFTP clients to calculate the packet live time. + EFI_EVENT TimerToGetMap; - EFI_HANDLE Controller; - EFI_HANDLE Image; + EFI_HANDLE Controller; + EFI_HANDLE Image; // // This UDP child is used to keep the connection between the UDP // and MTFTP, so MTFTP will be notified when UDP is uninstalled. // - UDP_IO *ConnectUdp; + UDP_IO *ConnectUdp; }; - typedef struct { - EFI_MTFTP4_PACKET **Packet; - UINT32 *PacketLen; - EFI_STATUS Status; + EFI_MTFTP4_PACKET **Packet; + UINT32 *PacketLen; + EFI_STATUS Status; } MTFTP4_GETINFO_STATE; struct _MTFTP4_PROTOCOL { - UINT32 Signature; - LIST_ENTRY Link; - EFI_MTFTP4_PROTOCOL Mtftp4; + UINT32 Signature; + LIST_ENTRY Link; + EFI_MTFTP4_PROTOCOL Mtftp4; - INTN State; - BOOLEAN InDestroy; + INTN State; + BOOLEAN InDestroy; - MTFTP4_SERVICE *Service; - EFI_HANDLE Handle; + MTFTP4_SERVICE *Service; + EFI_HANDLE Handle; - EFI_MTFTP4_CONFIG_DATA Config; + EFI_MTFTP4_CONFIG_DATA Config; // // Operation parameters: token and requested options. // - EFI_MTFTP4_TOKEN *Token; - MTFTP4_OPTION RequestOption; - UINT16 Operation; + EFI_MTFTP4_TOKEN *Token; + MTFTP4_OPTION RequestOption; + UINT16 Operation; // // Blocks is a list of MTFTP4_BLOCK_RANGE which contains // holes in the file // - UINT16 BlkSize; - UINT16 LastBlock; - LIST_ENTRY Blocks; + UINT16 BlkSize; + UINT16 LastBlock; + LIST_ENTRY Blocks; - UINT16 WindowSize; + UINT16 WindowSize; // // Record the total received and saved block number. // - UINT64 TotalBlock; + UINT64 TotalBlock; // // Record the acked block number. // - UINT64 AckedBlock; + UINT64 AckedBlock; // // The server's communication end point: IP and two ports. one for // initial request, one for its selected port. // - IP4_ADDR ServerIp; - UINT16 ListeningPort; - UINT16 ConnectedPort; - IP4_ADDR Gateway; - UDP_IO *UnicastPort; + IP4_ADDR ServerIp; + UINT16 ListeningPort; + UINT16 ConnectedPort; + IP4_ADDR Gateway; + UDP_IO *UnicastPort; // // Timeout and retransmit status // - NET_BUF *LastPacket; - UINT32 PacketToLive; - BOOLEAN HasTimeout; - UINT32 CurRetry; - UINT32 MaxRetry; - UINT32 Timeout; + NET_BUF *LastPacket; + UINT32 PacketToLive; + BOOLEAN HasTimeout; + UINT32 CurRetry; + UINT32 MaxRetry; + UINT32 Timeout; // // Parameter used by RRQ's multicast download. // - IP4_ADDR McastIp; - UINT16 McastPort; - BOOLEAN Master; - UDP_IO *McastUdpPort; + IP4_ADDR McastIp; + UINT16 McastPort; + BOOLEAN Master; + UDP_IO *McastUdpPort; }; typedef struct { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - UINTN NumberOfChildren; - EFI_HANDLE *ChildHandleBuffer; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; } MTFTP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; /** @@ -173,8 +170,8 @@ typedef struct { **/ VOID Mtftp4CleanOperation ( - IN OUT MTFTP4_PROTOCOL *Instance, - IN EFI_STATUS Result + IN OUT MTFTP4_PROTOCOL *Instance, + IN EFI_STATUS Result ); /** @@ -193,8 +190,8 @@ Mtftp4CleanOperation ( **/ EFI_STATUS Mtftp4WrqStart ( - IN MTFTP4_PROTOCOL *Instance, - IN UINT16 Operation + IN MTFTP4_PROTOCOL *Instance, + IN UINT16 Operation ); /** @@ -213,8 +210,8 @@ Mtftp4WrqStart ( **/ EFI_STATUS Mtftp4RrqStart ( - IN MTFTP4_PROTOCOL *Instance, - IN UINT16 Operation + IN MTFTP4_PROTOCOL *Instance, + IN UINT16 Operation ); #define MTFTP4_SERVICE_FROM_THIS(a) \ diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Option.c b/NetworkPkg/Mtftp4Dxe/Mtftp4Option.c index 21c1e42139..feb8b82fbc 100644 --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Option.c +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Option.c @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Mtftp4Impl.h" -CHAR8 *mMtftp4SupportedOptions[MTFTP4_SUPPORTED_OPTIONS] = { +CHAR8 *mMtftp4SupportedOptions[MTFTP4_SUPPORTED_OPTIONS] = { "blksize", "windowsize", "timeout", @@ -16,7 +16,6 @@ CHAR8 *mMtftp4SupportedOptions[MTFTP4_SUPPORTED_OPTIONS] = { "multicast" }; - /** Check whether two ascii strings are equal, ignore the case. @@ -29,16 +28,16 @@ CHAR8 *mMtftp4SupportedOptions[MTFTP4_SUPPORTED_OPTIONS] = { **/ BOOLEAN NetStringEqualNoCase ( - IN UINT8 *Str1, - IN UINT8 *Str2 + IN UINT8 *Str1, + IN UINT8 *Str2 ) { - UINT8 Ch1; - UINT8 Ch2; + UINT8 Ch1; + UINT8 Ch2; ASSERT ((Str1 != NULL) && (Str2 != NULL)); - for (; (*Str1 != '\0') && (*Str2 != '\0'); Str1++, Str2++) { + for ( ; (*Str1 != '\0') && (*Str2 != '\0'); Str1++, Str2++) { Ch1 = *Str1; Ch2 = *Str2; @@ -58,10 +57,9 @@ NetStringEqualNoCase ( } } - return (BOOLEAN) (*Str1 == *Str2); + return (BOOLEAN)(*Str1 == *Str2); } - /** Convert a string to a UINT32 number. @@ -72,23 +70,22 @@ NetStringEqualNoCase ( **/ UINT32 NetStringToU32 ( - IN UINT8 *Str + IN UINT8 *Str ) { - UINT32 Num; + UINT32 Num; ASSERT (Str != NULL); Num = 0; - for (; NET_IS_DIGIT (*Str); Str++) { + for ( ; NET_IS_DIGIT (*Str); Str++) { Num = Num * 10 + (*Str - '0'); } return Num; } - /** Convert a string of the format "192.168.0.1" to an IP address. @@ -101,13 +98,13 @@ NetStringToU32 ( **/ EFI_STATUS NetStringToIp ( - IN UINT8 *Str, - OUT IP4_ADDR *Ip + IN UINT8 *Str, + OUT IP4_ADDR *Ip ) { - UINT32 Byte; - UINT32 Addr; - UINTN Index; + UINT32 Byte; + UINT32 Addr; + UINTN Index; *Ip = 0; Addr = 0; @@ -144,7 +141,6 @@ NetStringToIp ( return EFI_SUCCESS; } - /** Go through the packet to fill the Options array with the start addresses of each MTFTP option name/value pair. @@ -162,21 +158,21 @@ NetStringToIp ( **/ EFI_STATUS Mtftp4FillOptions ( - IN EFI_MTFTP4_PACKET *Packet, - IN UINT32 PacketLen, - IN OUT UINT32 *Count, - OUT EFI_MTFTP4_OPTION *Options OPTIONAL + IN EFI_MTFTP4_PACKET *Packet, + IN UINT32 PacketLen, + IN OUT UINT32 *Count, + OUT EFI_MTFTP4_OPTION *Options OPTIONAL ) { - UINT8 *Cur; - UINT8 *Last; - UINT8 Num; - UINT8 *Name; - UINT8 *Value; + UINT8 *Cur; + UINT8 *Last; + UINT8 Num; + UINT8 *Name; + UINT8 *Value; - Num = 0; - Cur = (UINT8 *) Packet + MTFTP4_OPCODE_LEN; - Last = (UINT8 *) Packet + PacketLen - 1; + Num = 0; + Cur = (UINT8 *)Packet + MTFTP4_OPCODE_LEN; + Last = (UINT8 *)Packet + PacketLen - 1; // // process option name and value pairs. The last byte is always zero @@ -201,8 +197,8 @@ Mtftp4FillOptions ( Num++; if ((Options != NULL) && (Num <= *Count)) { - Options[Num - 1].OptionStr = Name; - Options[Num - 1].ValueStr = Value; + Options[Num - 1].OptionStr = Name; + Options[Num - 1].ValueStr = Value; } Cur++; @@ -217,7 +213,6 @@ Mtftp4FillOptions ( return EFI_SUCCESS; } - /** Allocate and fill in a array of Mtftp options from the Packet. @@ -237,13 +232,13 @@ Mtftp4FillOptions ( **/ EFI_STATUS Mtftp4ExtractOptions ( - IN EFI_MTFTP4_PACKET *Packet, - IN UINT32 PacketLen, - OUT UINT32 *OptionCount, - OUT EFI_MTFTP4_OPTION **OptionList OPTIONAL + IN EFI_MTFTP4_PACKET *Packet, + IN UINT32 PacketLen, + OUT UINT32 *OptionCount, + OUT EFI_MTFTP4_OPTION **OptionList OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; *OptionCount = 0; @@ -262,7 +257,7 @@ Mtftp4ExtractOptions ( // // The last byte must be zero to terminate the options // - if (*((UINT8 *) Packet + PacketLen - 1) != 0) { + if (*((UINT8 *)Packet + PacketLen - 1) != 0) { return EFI_INVALID_PARAMETER; } @@ -293,7 +288,6 @@ Mtftp4ExtractOptions ( return EFI_SUCCESS; } - /** Parse the MTFTP multicast option. @@ -306,19 +300,19 @@ Mtftp4ExtractOptions ( **/ EFI_STATUS Mtftp4ExtractMcast ( - IN UINT8 *Value, - IN OUT MTFTP4_OPTION *Option + IN UINT8 *Value, + IN OUT MTFTP4_OPTION *Option ) { - EFI_STATUS Status; - UINT32 Num; + EFI_STATUS Status; + UINT32 Num; // // The multicast option is formatted like "204.0.0.1,1857,1" // The server can also omit the ip and port, use ",,1" // if (*Value == ',') { - Option->McastIp = 0; + Option->McastIp = 0; } else { Status = NetStringToIp (Value, &Option->McastIp); @@ -350,7 +344,7 @@ Mtftp4ExtractMcast ( return EFI_INVALID_PARAMETER; } - Option->McastPort = (UINT16) Num; + Option->McastPort = (UINT16)Num; while (NET_IS_DIGIT (*Value)) { Value++; @@ -372,7 +366,7 @@ Mtftp4ExtractMcast ( return EFI_INVALID_PARAMETER; } - Option->Master = (BOOLEAN) (Num == 1); + Option->Master = (BOOLEAN)(Num == 1); while (NET_IS_DIGIT (*Value)) { Value++; @@ -385,7 +379,6 @@ Mtftp4ExtractMcast ( return EFI_SUCCESS; } - /** Parse the option in Options array to MTFTP4_OPTION which program can access directly. @@ -405,17 +398,17 @@ Mtftp4ExtractMcast ( **/ EFI_STATUS Mtftp4ParseOption ( - IN EFI_MTFTP4_OPTION *Options, - IN UINT32 Count, - IN BOOLEAN Request, - IN UINT16 Operation, - OUT MTFTP4_OPTION *MtftpOption + IN EFI_MTFTP4_OPTION *Options, + IN UINT32 Count, + IN BOOLEAN Request, + IN UINT16 Operation, + OUT MTFTP4_OPTION *MtftpOption ) { - EFI_STATUS Status; - UINT32 Index; - UINT32 Value; - EFI_MTFTP4_OPTION *This; + EFI_STATUS Status; + UINT32 Index; + UINT32 Value; + EFI_MTFTP4_OPTION *This; MtftpOption->Exist = 0; @@ -426,7 +419,7 @@ Mtftp4ParseOption ( return EFI_INVALID_PARAMETER; } - if (NetStringEqualNoCase (This->OptionStr, (UINT8 *) "blksize")) { + if (NetStringEqualNoCase (This->OptionStr, (UINT8 *)"blksize")) { // // block size option, valid value is between [8, 65464] // @@ -436,10 +429,9 @@ Mtftp4ParseOption ( return EFI_INVALID_PARAMETER; } - MtftpOption->BlkSize = (UINT16) Value; - MtftpOption->Exist |= MTFTP4_BLKSIZE_EXIST; - - } else if (NetStringEqualNoCase (This->OptionStr, (UINT8 *) "timeout")) { + MtftpOption->BlkSize = (UINT16)Value; + MtftpOption->Exist |= MTFTP4_BLKSIZE_EXIST; + } else if (NetStringEqualNoCase (This->OptionStr, (UINT8 *)"timeout")) { // // timeout option, valid value is between [1, 255] // @@ -449,16 +441,14 @@ Mtftp4ParseOption ( return EFI_INVALID_PARAMETER; } - MtftpOption->Timeout = (UINT8) Value; - - } else if (NetStringEqualNoCase (This->OptionStr, (UINT8 *) "tsize")) { + MtftpOption->Timeout = (UINT8)Value; + } else if (NetStringEqualNoCase (This->OptionStr, (UINT8 *)"tsize")) { // // tsize option, the biggest transfer supported is 4GB with block size option // - MtftpOption->Tsize = NetStringToU32 (This->ValueStr); + MtftpOption->Tsize = NetStringToU32 (This->ValueStr); MtftpOption->Exist |= MTFTP4_TSIZE_EXIST; - - } else if (NetStringEqualNoCase (This->OptionStr, (UINT8 *) "multicast")) { + } else if (NetStringEqualNoCase (This->OptionStr, (UINT8 *)"multicast")) { // // Multicast option, if it is a request, the value must be a zero // length string, otherwise, it is formatted like "204.0.0.1,1857,1\0" @@ -467,7 +457,6 @@ Mtftp4ParseOption ( if (*(This->ValueStr) != '\0') { return EFI_INVALID_PARAMETER; } - } else { Status = Mtftp4ExtractMcast (This->ValueStr, MtftpOption); @@ -477,8 +466,7 @@ Mtftp4ParseOption ( } MtftpOption->Exist |= MTFTP4_MCAST_EXIST; - - } else if (NetStringEqualNoCase (This->OptionStr, (UINT8 *) "windowsize")) { + } else if (NetStringEqualNoCase (This->OptionStr, (UINT8 *)"windowsize")) { if (Operation == EFI_MTFTP4_OPCODE_WRQ) { // // Currently, windowsize is not supported in the write operation. @@ -492,8 +480,8 @@ Mtftp4ParseOption ( return EFI_INVALID_PARAMETER; } - MtftpOption->WindowSize = (UINT16) Value; - MtftpOption->Exist |= MTFTP4_WINDOWSIZE_EXIST; + MtftpOption->WindowSize = (UINT16)Value; + MtftpOption->Exist |= MTFTP4_WINDOWSIZE_EXIST; } else if (Request) { // // Ignore the unsupported option if it is a reply, and return @@ -506,7 +494,6 @@ Mtftp4ParseOption ( return EFI_SUCCESS; } - /** Parse the options in the OACK packet to MTFTP4_OPTION which program can access directly. @@ -523,15 +510,15 @@ Mtftp4ParseOption ( **/ EFI_STATUS Mtftp4ParseOptionOack ( - IN EFI_MTFTP4_PACKET *Packet, - IN UINT32 PacketLen, - IN UINT16 Operation, - OUT MTFTP4_OPTION *MtftpOption + IN EFI_MTFTP4_PACKET *Packet, + IN UINT32 PacketLen, + IN UINT16 Operation, + OUT MTFTP4_OPTION *MtftpOption ) { - EFI_MTFTP4_OPTION *OptionList; - EFI_STATUS Status; - UINT32 Count; + EFI_MTFTP4_OPTION *OptionList; + EFI_STATUS Status; + UINT32 Count; MtftpOption->Exist = 0; @@ -540,6 +527,7 @@ Mtftp4ParseOptionOack ( if (EFI_ERROR (Status) || (Count == 0)) { return Status; } + ASSERT (OptionList != NULL); Status = Mtftp4ParseOption (OptionList, Count, FALSE, Operation, MtftpOption); diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Option.h b/NetworkPkg/Mtftp4Dxe/Mtftp4Option.h index 5f37b0f7b9..9ef6fff1b6 100644 --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Option.h +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Option.h @@ -6,7 +6,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #ifndef __EFI_MTFTP4_OPTION_H__ #define __EFI_MTFTP4_OPTION_H__ @@ -16,21 +15,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define MTFTP4_BLKNO_LEN 2 #define MTFTP4_DATA_HEAD_LEN 4 -#define MTFTP4_BLKSIZE_EXIST 0x01 -#define MTFTP4_TIMEOUT_EXIST 0x02 -#define MTFTP4_TSIZE_EXIST 0x04 -#define MTFTP4_MCAST_EXIST 0x08 -#define MTFTP4_WINDOWSIZE_EXIST 0x10 +#define MTFTP4_BLKSIZE_EXIST 0x01 +#define MTFTP4_TIMEOUT_EXIST 0x02 +#define MTFTP4_TSIZE_EXIST 0x04 +#define MTFTP4_MCAST_EXIST 0x08 +#define MTFTP4_WINDOWSIZE_EXIST 0x10 typedef struct { - UINT16 BlkSize; - UINT16 WindowSize; - UINT8 Timeout; - UINT32 Tsize; - IP4_ADDR McastIp; - UINT16 McastPort; - BOOLEAN Master; - UINT32 Exist; + UINT16 BlkSize; + UINT16 WindowSize; + UINT8 Timeout; + UINT32 Tsize; + IP4_ADDR McastIp; + UINT16 McastPort; + BOOLEAN Master; + UINT32 Exist; } MTFTP4_OPTION; /** @@ -52,10 +51,10 @@ typedef struct { **/ EFI_STATUS Mtftp4ExtractOptions ( - IN EFI_MTFTP4_PACKET *Packet, - IN UINT32 PacketLen, - OUT UINT32 *OptionCount, - OUT EFI_MTFTP4_OPTION **OptionList OPTIONAL + IN EFI_MTFTP4_PACKET *Packet, + IN UINT32 PacketLen, + OUT UINT32 *OptionCount, + OUT EFI_MTFTP4_OPTION **OptionList OPTIONAL ); /** @@ -77,11 +76,11 @@ Mtftp4ExtractOptions ( **/ EFI_STATUS Mtftp4ParseOption ( - IN EFI_MTFTP4_OPTION *Options, - IN UINT32 Count, - IN BOOLEAN Request, - IN UINT16 Operation, - OUT MTFTP4_OPTION *MtftpOption + IN EFI_MTFTP4_OPTION *Options, + IN UINT32 Count, + IN BOOLEAN Request, + IN UINT16 Operation, + OUT MTFTP4_OPTION *MtftpOption ); /** @@ -100,10 +99,10 @@ Mtftp4ParseOption ( **/ EFI_STATUS Mtftp4ParseOptionOack ( - IN EFI_MTFTP4_PACKET *Packet, - IN UINT32 PacketLen, - IN UINT16 Operation, - OUT MTFTP4_OPTION *MtftpOption + IN EFI_MTFTP4_PACKET *Packet, + IN UINT32 PacketLen, + IN UINT16 Operation, + OUT MTFTP4_OPTION *MtftpOption ); extern CHAR8 *mMtftp4SupportedOptions[MTFTP4_SUPPORTED_OPTIONS]; diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Rrq.c b/NetworkPkg/Mtftp4Dxe/Mtftp4Rrq.c index f1d456a612..75aaa80617 100644 --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Rrq.c +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Rrq.c @@ -7,10 +7,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Mtftp4Impl.h" - /** The packet process callback for MTFTP download. @@ -23,13 +21,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent VOID EFIAPI Mtftp4RrqInput ( - IN NET_BUF *UdpPacket, - IN UDP_END_POINT *EndPoint, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *UdpPacket, + IN UDP_END_POINT *EndPoint, + IN EFI_STATUS IoStatus, + IN VOID *Context ); - /** Start the MTFTP session to download. @@ -46,11 +43,11 @@ Mtftp4RrqInput ( **/ EFI_STATUS Mtftp4RrqStart ( - IN MTFTP4_PROTOCOL *Instance, - IN UINT16 Operation + IN MTFTP4_PROTOCOL *Instance, + IN UINT16 Operation ) { - EFI_STATUS Status; + EFI_STATUS Status; // // The valid block number range are [1, 0xffff]. For example: @@ -73,7 +70,6 @@ Mtftp4RrqStart ( return UdpIoRecvDatagram (Instance->UnicastPort, Mtftp4RrqInput, Instance, 0); } - /** Build and send a ACK packet for the download session. @@ -87,13 +83,13 @@ Mtftp4RrqStart ( **/ EFI_STATUS Mtftp4RrqSendAck ( - IN MTFTP4_PROTOCOL *Instance, - IN UINT16 BlkNo + IN MTFTP4_PROTOCOL *Instance, + IN UINT16 BlkNo ) { - EFI_MTFTP4_PACKET *Ack; - NET_BUF *Packet; - EFI_STATUS Status; + EFI_MTFTP4_PACKET *Ack; + NET_BUF *Packet; + EFI_STATUS Status; Status = EFI_SUCCESS; @@ -102,11 +98,11 @@ Mtftp4RrqSendAck ( return EFI_OUT_OF_RESOURCES; } - Ack = (EFI_MTFTP4_PACKET *) NetbufAllocSpace ( - Packet, - sizeof (EFI_MTFTP4_ACK_HEADER), - FALSE - ); + Ack = (EFI_MTFTP4_PACKET *)NetbufAllocSpace ( + Packet, + sizeof (EFI_MTFTP4_ACK_HEADER), + FALSE + ); ASSERT (Ack != NULL); Ack->Ack.OpCode = HTONS (EFI_MTFTP4_OPCODE_ACK); @@ -120,7 +116,6 @@ Mtftp4RrqSendAck ( return Status; } - /** Deliver the received data block to the user, which can be saved in the user provide buffer or through the CheckPacket callback. @@ -138,18 +133,18 @@ Mtftp4RrqSendAck ( **/ EFI_STATUS Mtftp4RrqSaveBlock ( - IN OUT MTFTP4_PROTOCOL *Instance, - IN EFI_MTFTP4_PACKET *Packet, - IN UINT32 Len + IN OUT MTFTP4_PROTOCOL *Instance, + IN EFI_MTFTP4_PACKET *Packet, + IN UINT32 Len ) { - EFI_MTFTP4_TOKEN *Token; - EFI_STATUS Status; - UINT16 Block; - UINT64 Start; - UINT32 DataLen; - UINT64 BlockCounter; - BOOLEAN Completed; + EFI_MTFTP4_TOKEN *Token; + EFI_STATUS Status; + UINT16 Block; + UINT64 Start; + UINT32 DataLen; + UINT64 BlockCounter; + BOOLEAN Completed; Completed = FALSE; Token = Instance->Token; @@ -160,7 +155,7 @@ Mtftp4RrqSaveBlock ( // This is the last block, save the block no // if (DataLen < Instance->BlkSize) { - Completed = TRUE; + Completed = TRUE; Instance->LastBlock = Block; Mtftp4SetLastBlockNum (&Instance->Blocks, Block); } @@ -181,13 +176,13 @@ Mtftp4RrqSaveBlock ( } if (Token->CheckPacket != NULL) { - Status = Token->CheckPacket (&Instance->Mtftp4, Token, (UINT16) Len, Packet); + Status = Token->CheckPacket (&Instance->Mtftp4, Token, (UINT16)Len, Packet); if (EFI_ERROR (Status)) { Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION, - (UINT8 *) "User aborted download" + (UINT8 *)"User aborted download" ); return EFI_ABORTED; @@ -195,10 +190,10 @@ Mtftp4RrqSaveBlock ( } if (Token->Buffer != NULL) { - Start = MultU64x32 (BlockCounter - 1, Instance->BlkSize); + Start = MultU64x32 (BlockCounter - 1, Instance->BlkSize); if (Start + DataLen <= Token->BufferSize) { - CopyMem ((UINT8 *) Token->Buffer + Start, Packet->Data.Data, DataLen); + CopyMem ((UINT8 *)Token->Buffer + Start, Packet->Data.Data, DataLen); // // Update the file size when received the last block @@ -206,7 +201,6 @@ Mtftp4RrqSaveBlock ( if ((Instance->LastBlock == Block) && Completed) { Token->BufferSize = Start + DataLen; } - } else if (Instance->LastBlock != 0) { // // Don't save the data if the buffer is too small, return @@ -218,7 +212,7 @@ Mtftp4RrqSaveBlock ( Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_DISK_FULL, - (UINT8 *) "User provided memory block is too small" + (UINT8 *)"User provided memory block is too small" ); return EFI_BUFFER_TOO_SMALL; @@ -228,7 +222,6 @@ Mtftp4RrqSaveBlock ( return EFI_SUCCESS; } - /** Function to process the received data packets. @@ -247,21 +240,21 @@ Mtftp4RrqSaveBlock ( **/ EFI_STATUS Mtftp4RrqHandleData ( - IN MTFTP4_PROTOCOL *Instance, - IN EFI_MTFTP4_PACKET *Packet, - IN UINT32 Len, - IN BOOLEAN Multicast, - OUT BOOLEAN *Completed + IN MTFTP4_PROTOCOL *Instance, + IN EFI_MTFTP4_PACKET *Packet, + IN UINT32 Len, + IN BOOLEAN Multicast, + OUT BOOLEAN *Completed ) { - EFI_STATUS Status; - UINT16 BlockNum; - INTN Expected; + EFI_STATUS Status; + UINT16 BlockNum; + INTN Expected; - *Completed = FALSE; - Status = EFI_SUCCESS; - BlockNum = NTOHS (Packet->Data.Block); - Expected = Mtftp4GetNextBlockNum (&Instance->Blocks); + *Completed = FALSE; + Status = EFI_SUCCESS; + BlockNum = NTOHS (Packet->Data.Block); + Expected = Mtftp4GetNextBlockNum (&Instance->Blocks); ASSERT (Expected >= 0); @@ -274,7 +267,7 @@ Mtftp4RrqHandleData ( // // If Expected is 0, (UINT16) (Expected - 1) is also the expected Ack number (65535). // - return Mtftp4RrqSendAck (Instance, (UINT16) (Expected - 1)); + return Mtftp4RrqSendAck (Instance, (UINT16)(Expected - 1)); } Status = Mtftp4RrqSaveBlock (Instance, Packet, Len); @@ -286,7 +279,7 @@ Mtftp4RrqHandleData ( // // Record the total received and saved block number. // - Instance->TotalBlock ++; + Instance->TotalBlock++; // // Reset the passive client's timer whenever it received a @@ -314,21 +307,18 @@ Mtftp4RrqHandleData ( // BlockNum = Instance->LastBlock; *Completed = TRUE; - } else { - BlockNum = (UINT16) (Expected - 1); + BlockNum = (UINT16)(Expected - 1); } - if (Instance->WindowSize == (Instance->TotalBlock - Instance->AckedBlock) || Expected < 0) { + if ((Instance->WindowSize == (Instance->TotalBlock - Instance->AckedBlock)) || (Expected < 0)) { Status = Mtftp4RrqSendAck (Instance, BlockNum); } - } return Status; } - /** Validate whether the options received in the server's OACK packet is valid. @@ -348,12 +338,11 @@ Mtftp4RrqHandleData ( **/ BOOLEAN Mtftp4RrqOackValid ( - IN MTFTP4_PROTOCOL *This, - IN MTFTP4_OPTION *Reply, - IN MTFTP4_OPTION *Request + IN MTFTP4_PROTOCOL *This, + IN MTFTP4_OPTION *Reply, + IN MTFTP4_OPTION *Request ) { - // // It is invalid for server to return options we don't request // @@ -365,10 +354,11 @@ Mtftp4RrqOackValid ( // Server can only specify a smaller block size and window size to be used and // return the timeout matches that requested. // - if ((((Reply->Exist & MTFTP4_BLKSIZE_EXIST) != 0)&& (Reply->BlkSize > Request->BlkSize)) || - (((Reply->Exist & MTFTP4_WINDOWSIZE_EXIST) != 0)&& (Reply->WindowSize > Request->WindowSize)) || + if ((((Reply->Exist & MTFTP4_BLKSIZE_EXIST) != 0) && (Reply->BlkSize > Request->BlkSize)) || + (((Reply->Exist & MTFTP4_WINDOWSIZE_EXIST) != 0) && (Reply->WindowSize > Request->WindowSize)) || (((Reply->Exist & MTFTP4_TIMEOUT_EXIST) != 0) && (Reply->Timeout != Request->Timeout)) - ) { + ) + { return FALSE; } @@ -390,7 +380,6 @@ Mtftp4RrqOackValid ( return TRUE; } - /** Configure a UDP IO port to receive the multicast. @@ -405,19 +394,19 @@ Mtftp4RrqOackValid ( EFI_STATUS EFIAPI Mtftp4RrqConfigMcastPort ( - IN UDP_IO *McastIo, - IN VOID *Context + IN UDP_IO *McastIo, + IN VOID *Context ) { - MTFTP4_PROTOCOL *Instance; - EFI_MTFTP4_CONFIG_DATA *Config; - EFI_UDP4_CONFIG_DATA UdpConfig; - EFI_IPv4_ADDRESS Group; - EFI_STATUS Status; - IP4_ADDR Ip; + MTFTP4_PROTOCOL *Instance; + EFI_MTFTP4_CONFIG_DATA *Config; + EFI_UDP4_CONFIG_DATA UdpConfig; + EFI_IPv4_ADDRESS Group; + EFI_STATUS Status; + IP4_ADDR Ip; - Instance = (MTFTP4_PROTOCOL *) Context; - Config = &Instance->Config; + Instance = (MTFTP4_PROTOCOL *)Context; + Config = &Instance->Config; UdpConfig.AcceptBroadcast = FALSE; UdpConfig.AcceptPromiscuous = FALSE; @@ -431,8 +420,8 @@ Mtftp4RrqConfigMcastPort ( UdpConfig.UseDefaultAddress = Config->UseDefaultSetting; IP4_COPY_ADDRESS (&UdpConfig.StationAddress, &Config->StationIp); IP4_COPY_ADDRESS (&UdpConfig.SubnetMask, &Config->SubnetMask); - UdpConfig.StationPort = Instance->McastPort; - UdpConfig.RemotePort = 0; + UdpConfig.StationPort = Instance->McastPort; + UdpConfig.RemotePort = 0; Ip = HTONL (Instance->ServerIp); IP4_COPY_ADDRESS (&UdpConfig.RemoteAddress, &Ip); @@ -444,7 +433,8 @@ Mtftp4RrqConfigMcastPort ( } if (!Config->UseDefaultSetting && - !EFI_IP4_EQUAL (&mZeroIp4Addr, &Config->GatewayIp)) { + !EFI_IP4_EQUAL (&mZeroIp4Addr, &Config->GatewayIp)) + { // // The station IP address is manually configured and the Gateway IP is not 0. // Add the default route for this UDP instance. @@ -472,7 +462,6 @@ Mtftp4RrqConfigMcastPort ( return McastIo->Protocol.Udp4->Groups (McastIo->Protocol.Udp4, TRUE, &Group); } - /** Function to process the OACK. @@ -492,17 +481,17 @@ Mtftp4RrqConfigMcastPort ( **/ EFI_STATUS Mtftp4RrqHandleOack ( - IN OUT MTFTP4_PROTOCOL *Instance, - IN EFI_MTFTP4_PACKET *Packet, - IN UINT32 Len, - IN BOOLEAN Multicast, - OUT BOOLEAN *Completed + IN OUT MTFTP4_PROTOCOL *Instance, + IN EFI_MTFTP4_PACKET *Packet, + IN UINT32 Len, + IN BOOLEAN Multicast, + OUT BOOLEAN *Completed ) { - MTFTP4_OPTION Reply; - EFI_STATUS Status; - INTN Expected; - EFI_UDP4_PROTOCOL *Udp4; + MTFTP4_OPTION Reply; + EFI_STATUS Status; + INTN Expected; + EFI_UDP4_PROTOCOL *Udp4; *Completed = FALSE; @@ -525,7 +514,8 @@ Mtftp4RrqHandleOack ( Status = Mtftp4ParseOptionOack (Packet, Len, Instance->Operation, &Reply); if (EFI_ERROR (Status) || - !Mtftp4RrqOackValid (Instance, &Reply, &Instance->RequestOption)) { + !Mtftp4RrqOackValid (Instance, &Reply, &Instance->RequestOption)) + { // // Don't send an ERROR packet if the error is EFI_OUT_OF_RESOURCES. // @@ -533,7 +523,7 @@ Mtftp4RrqHandleOack ( Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION, - (UINT8 *) "Malformatted OACK packet" + (UINT8 *)"Malformatted OACK packet" ); } @@ -541,7 +531,6 @@ Mtftp4RrqHandleOack ( } if ((Reply.Exist & MTFTP4_MCAST_EXIST) != 0) { - // // Save the multicast info. Always update the Master, only update the // multicast IP address, block size, window size, timeout at the first time. @@ -554,7 +543,7 @@ Mtftp4RrqHandleOack ( Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION, - (UINT8 *) "Illegal multicast setting" + (UINT8 *)"Illegal multicast setting" ); return EFI_TFTP_ERROR; @@ -563,8 +552,8 @@ Mtftp4RrqHandleOack ( // // Create a UDP child then start receive the multicast from it. // - Instance->McastIp = Reply.McastIp; - Instance->McastPort = Reply.McastPort; + Instance->McastIp = Reply.McastIp; + Instance->McastPort = Reply.McastPort; if (Instance->McastUdpPort == NULL) { Instance->McastUdpPort = UdpIoCreateIo ( Instance->Service->Controller, @@ -577,7 +566,7 @@ Mtftp4RrqHandleOack ( Status = gBS->OpenProtocol ( Instance->McastUdpPort->UdpHandle, &gEfiUdp4ProtocolGuid, - (VOID **) &Udp4, + (VOID **)&Udp4, Instance->Service->Image, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -590,7 +579,6 @@ Mtftp4RrqHandleOack ( } } - if (Instance->McastUdpPort == NULL) { return EFI_DEVICE_ERROR; } @@ -601,7 +589,7 @@ Mtftp4RrqHandleOack ( Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_ACCESS_VIOLATION, - (UINT8 *) "Failed to create socket to receive multicast packet" + (UINT8 *)"Failed to create socket to receive multicast packet" ); return Status; @@ -622,7 +610,6 @@ Mtftp4RrqHandleOack ( Instance->Timeout = Reply.Timeout; } } - } else { Instance->Master = TRUE; @@ -643,10 +630,9 @@ Mtftp4RrqHandleOack ( // Send an ACK to (Expected - 1) which is 0 for unicast download, // or tell the server we want to receive the Expected block. // - return Mtftp4RrqSendAck (Instance, (UINT16) (Expected - 1)); + return Mtftp4RrqSendAck (Instance, (UINT16)(Expected - 1)); } - /** The packet process callback for MTFTP download. @@ -659,21 +645,21 @@ Mtftp4RrqHandleOack ( VOID EFIAPI Mtftp4RrqInput ( - IN NET_BUF *UdpPacket, - IN UDP_END_POINT *EndPoint, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *UdpPacket, + IN UDP_END_POINT *EndPoint, + IN EFI_STATUS IoStatus, + IN VOID *Context ) { - MTFTP4_PROTOCOL *Instance; - EFI_MTFTP4_PACKET *Packet; - BOOLEAN Completed; - BOOLEAN Multicast; - EFI_STATUS Status; - UINT16 Opcode; - UINT32 Len; - - Instance = (MTFTP4_PROTOCOL *) Context; + MTFTP4_PROTOCOL *Instance; + EFI_MTFTP4_PACKET *Packet; + BOOLEAN Completed; + BOOLEAN Multicast; + EFI_STATUS Status; + UINT16 Opcode; + UINT32 Len; + + Instance = (MTFTP4_PROTOCOL *)Context; NET_CHECK_SIGNATURE (Instance, MTFTP4_PROTOCOL_SIGNATURE); Status = EFI_SUCCESS; @@ -691,7 +677,7 @@ Mtftp4RrqInput ( // // Find the port this packet is from to restart receive correctly. // - Multicast = (BOOLEAN) (EndPoint->LocalAddr.Addr[0] == Instance->McastIp); + Multicast = (BOOLEAN)(EndPoint->LocalAddr.Addr[0] == Instance->McastIp); if (UdpPacket->TotalSize < MTFTP4_OPCODE_LEN) { goto ON_EXIT; @@ -724,10 +710,9 @@ Mtftp4RrqInput ( goto ON_EXIT; } - NetbufCopy (UdpPacket, 0, Len, (UINT8 *) Packet); - + NetbufCopy (UdpPacket, 0, Len, (UINT8 *)Packet); } else { - Packet = (EFI_MTFTP4_PACKET *) NetbufGetByte (UdpPacket, 0, NULL); + Packet = (EFI_MTFTP4_PACKET *)NetbufGetByte (UdpPacket, 0, NULL); ASSERT (Packet != NULL); } @@ -738,12 +723,12 @@ Mtftp4RrqInput ( // if CheckPacket returns an EFI_ERROR code. // if ((Instance->Token->CheckPacket != NULL) && - ((Opcode == EFI_MTFTP4_OPCODE_OACK) || (Opcode == EFI_MTFTP4_OPCODE_ERROR))) { - + ((Opcode == EFI_MTFTP4_OPCODE_OACK) || (Opcode == EFI_MTFTP4_OPCODE_ERROR))) + { Status = Instance->Token->CheckPacket ( &Instance->Mtftp4, Instance->Token, - (UINT16) Len, + (UINT16)Len, Packet ); @@ -755,7 +740,7 @@ Mtftp4RrqInput ( Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_REQUEST_DENIED, - (UINT8 *) "User aborted the transfer" + (UINT8 *)"User aborted the transfer" ); } @@ -765,29 +750,30 @@ Mtftp4RrqInput ( } switch (Opcode) { - case EFI_MTFTP4_OPCODE_DATA: - if ((Len > (UINT32) (MTFTP4_DATA_HEAD_LEN + Instance->BlkSize)) || - (Len < (UINT32) MTFTP4_DATA_HEAD_LEN)) { - goto ON_EXIT; - } + case EFI_MTFTP4_OPCODE_DATA: + if ((Len > (UINT32)(MTFTP4_DATA_HEAD_LEN + Instance->BlkSize)) || + (Len < (UINT32)MTFTP4_DATA_HEAD_LEN)) + { + goto ON_EXIT; + } - Status = Mtftp4RrqHandleData (Instance, Packet, Len, Multicast, &Completed); - break; + Status = Mtftp4RrqHandleData (Instance, Packet, Len, Multicast, &Completed); + break; - case EFI_MTFTP4_OPCODE_OACK: - if (Multicast || (Len <= MTFTP4_OPCODE_LEN)) { - goto ON_EXIT; - } + case EFI_MTFTP4_OPCODE_OACK: + if (Multicast || (Len <= MTFTP4_OPCODE_LEN)) { + goto ON_EXIT; + } - Status = Mtftp4RrqHandleOack (Instance, Packet, Len, Multicast, &Completed); - break; + Status = Mtftp4RrqHandleOack (Instance, Packet, Len, Multicast, &Completed); + break; - case EFI_MTFTP4_OPCODE_ERROR: - Status = EFI_TFTP_ERROR; - break; + case EFI_MTFTP4_OPCODE_ERROR: + Status = EFI_TFTP_ERROR; + break; - default: - break; + default: + break; } ON_EXIT: diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Support.c b/NetworkPkg/Mtftp4Dxe/Mtftp4Support.c index 6ca4842107..d303083977 100644 --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Support.c +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Support.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Mtftp4Impl.h" - /** Allocate a MTFTP4 block range, then init it to the range of [Start, End] @@ -20,11 +19,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ MTFTP4_BLOCK_RANGE * Mtftp4AllocateRange ( - IN UINT16 Start, - IN UINT16 End + IN UINT16 Start, + IN UINT16 End ) { - MTFTP4_BLOCK_RANGE *Range; + MTFTP4_BLOCK_RANGE *Range; Range = AllocateZeroPool (sizeof (MTFTP4_BLOCK_RANGE)); @@ -33,14 +32,13 @@ Mtftp4AllocateRange ( } InitializeListHead (&Range->Link); - Range->Start = Start; - Range->End = End; - Range->Bound = End; + Range->Start = Start; + Range->End = End; + Range->Bound = End; return Range; } - /** Initialize the block range for either RRQ or WRQ. @@ -64,12 +62,12 @@ Mtftp4AllocateRange ( **/ EFI_STATUS Mtftp4InitBlockRange ( - IN LIST_ENTRY *Head, - IN UINT16 Start, - IN UINT16 End + IN LIST_ENTRY *Head, + IN UINT16 Start, + IN UINT16 End ) { - MTFTP4_BLOCK_RANGE *Range; + MTFTP4_BLOCK_RANGE *Range; Range = Mtftp4AllocateRange (Start, End); @@ -81,7 +79,6 @@ Mtftp4InitBlockRange ( return EFI_SUCCESS; } - /** Get the first valid block number on the range list. @@ -92,7 +89,7 @@ Mtftp4InitBlockRange ( **/ INTN Mtftp4GetNextBlockNum ( - IN LIST_ENTRY *Head + IN LIST_ENTRY *Head ) { MTFTP4_BLOCK_RANGE *Range; @@ -105,7 +102,6 @@ Mtftp4GetNextBlockNum ( return Range->Start; } - /** Set the last block number of the block range list. @@ -119,11 +115,11 @@ Mtftp4GetNextBlockNum ( **/ VOID Mtftp4SetLastBlockNum ( - IN LIST_ENTRY *Head, - IN UINT16 Last + IN LIST_ENTRY *Head, + IN UINT16 Last ) { - MTFTP4_BLOCK_RANGE *Range; + MTFTP4_BLOCK_RANGE *Range; // // Iterate from the tail to head to remove the block number @@ -142,11 +138,10 @@ Mtftp4SetLastBlockNum ( Range->End = Last; } - return ; + return; } } - /** Remove the block number from the block range list. @@ -162,18 +157,17 @@ Mtftp4SetLastBlockNum ( **/ EFI_STATUS Mtftp4RemoveBlockNum ( - IN LIST_ENTRY *Head, - IN UINT16 Num, - IN BOOLEAN Completed, - OUT UINT64 *BlockCounter + IN LIST_ENTRY *Head, + IN UINT16 Num, + IN BOOLEAN Completed, + OUT UINT64 *BlockCounter ) { - MTFTP4_BLOCK_RANGE *Range; - MTFTP4_BLOCK_RANGE *NewRange; - LIST_ENTRY *Entry; + MTFTP4_BLOCK_RANGE *Range; + MTFTP4_BLOCK_RANGE *NewRange; + LIST_ENTRY *Entry; NET_LIST_FOR_EACH (Entry, Head) { - // // Each block represents a hole [Start, End] in the file, // skip to the first range with End >= Num @@ -202,7 +196,6 @@ Mtftp4RemoveBlockNum ( // if (Range->Start > Num) { return EFI_NOT_FOUND; - } else if (Range->Start == Num) { Range->Start++; @@ -214,15 +207,15 @@ Mtftp4RemoveBlockNum ( // wrap to zero, because this is the simplest to implement. Here we choose // this solution. // - *BlockCounter = Num; + *BlockCounter = Num; if (Range->Round > 0) { - *BlockCounter += Range->Bound + MultU64x32 ((UINTN) (Range->Round -1), (UINT32) (Range->Bound + 1)) + 1; + *BlockCounter += Range->Bound + MultU64x32 ((UINTN)(Range->Round -1), (UINT32)(Range->Bound + 1)) + 1; } if (Range->Start > Range->Bound) { Range->Start = 0; - Range->Round ++; + Range->Round++; } if ((Range->Start > Range->End) || Completed) { @@ -231,12 +224,11 @@ Mtftp4RemoveBlockNum ( } return EFI_SUCCESS; - } else { if (Range->End == Num) { Range->End--; } else { - NewRange = Mtftp4AllocateRange ((UINT16) (Num + 1), (UINT16) Range->End); + NewRange = Mtftp4AllocateRange ((UINT16)(Num + 1), (UINT16)Range->End); if (NewRange == NULL) { return EFI_OUT_OF_RESOURCES; @@ -253,7 +245,6 @@ Mtftp4RemoveBlockNum ( return EFI_NOT_FOUND; } - /** Build then transmit the request packet for the MTFTP session. @@ -266,43 +257,44 @@ Mtftp4RemoveBlockNum ( **/ EFI_STATUS Mtftp4SendRequest ( - IN MTFTP4_PROTOCOL *Instance + IN MTFTP4_PROTOCOL *Instance ) { - EFI_MTFTP4_PACKET *Packet; - EFI_MTFTP4_OPTION *Options; - EFI_MTFTP4_TOKEN *Token; - RETURN_STATUS Status; - NET_BUF *Nbuf; - UINT8 *Mode; - UINT8 *Cur; - UINTN Index; - UINT32 BufferLength; - UINTN FileNameLength; - UINTN ModeLength; - UINTN OptionStrLength; - UINTN ValueStrLength; + EFI_MTFTP4_PACKET *Packet; + EFI_MTFTP4_OPTION *Options; + EFI_MTFTP4_TOKEN *Token; + RETURN_STATUS Status; + NET_BUF *Nbuf; + UINT8 *Mode; + UINT8 *Cur; + UINTN Index; + UINT32 BufferLength; + UINTN FileNameLength; + UINTN ModeLength; + UINTN OptionStrLength; + UINTN ValueStrLength; Token = Instance->Token; Options = Token->OptionList; Mode = Instance->Token->ModeStr; if (Mode == NULL) { - Mode = (UINT8 *) "octet"; + Mode = (UINT8 *)"octet"; } // // Compute the packet length // - FileNameLength = AsciiStrLen ((CHAR8 *) Token->Filename); - ModeLength = AsciiStrLen ((CHAR8 *) Mode); - BufferLength = (UINT32) FileNameLength + (UINT32) ModeLength + 4; + FileNameLength = AsciiStrLen ((CHAR8 *)Token->Filename); + ModeLength = AsciiStrLen ((CHAR8 *)Mode); + BufferLength = (UINT32)FileNameLength + (UINT32)ModeLength + 4; for (Index = 0; Index < Token->OptionCount; Index++) { - OptionStrLength = AsciiStrLen ((CHAR8 *) Options[Index].OptionStr); - ValueStrLength = AsciiStrLen ((CHAR8 *) Options[Index].ValueStr); - BufferLength += (UINT32) OptionStrLength + (UINT32) ValueStrLength + 2; + OptionStrLength = AsciiStrLen ((CHAR8 *)Options[Index].OptionStr); + ValueStrLength = AsciiStrLen ((CHAR8 *)Options[Index].ValueStr); + BufferLength += (UINT32)OptionStrLength + (UINT32)ValueStrLength + 2; } + // // Allocate a packet then copy the data over // @@ -310,42 +302,40 @@ Mtftp4SendRequest ( return EFI_OUT_OF_RESOURCES; } - Packet = (EFI_MTFTP4_PACKET *) NetbufAllocSpace (Nbuf, BufferLength, FALSE); + Packet = (EFI_MTFTP4_PACKET *)NetbufAllocSpace (Nbuf, BufferLength, FALSE); ASSERT (Packet != NULL); Packet->OpCode = HTONS (Instance->Operation); BufferLength -= sizeof (Packet->OpCode); - Cur = Packet->Rrq.Filename; - Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Token->Filename); + Cur = Packet->Rrq.Filename; + Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Token->Filename); ASSERT_EFI_ERROR (Status); - BufferLength -= (UINT32) (FileNameLength + 1); - Cur += FileNameLength + 1; - Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Mode); + BufferLength -= (UINT32)(FileNameLength + 1); + Cur += FileNameLength + 1; + Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Mode); ASSERT_EFI_ERROR (Status); - BufferLength -= (UINT32) (ModeLength + 1); - Cur += ModeLength + 1; + BufferLength -= (UINT32)(ModeLength + 1); + Cur += ModeLength + 1; for (Index = 0; Index < Token->OptionCount; ++Index) { - OptionStrLength = AsciiStrLen ((CHAR8 *) Options[Index].OptionStr); - ValueStrLength = AsciiStrLen ((CHAR8 *) Options[Index].ValueStr); + OptionStrLength = AsciiStrLen ((CHAR8 *)Options[Index].OptionStr); + ValueStrLength = AsciiStrLen ((CHAR8 *)Options[Index].ValueStr); - Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Options[Index].OptionStr); + Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Options[Index].OptionStr); ASSERT_EFI_ERROR (Status); - BufferLength -= (UINT32) (OptionStrLength + 1); - Cur += OptionStrLength + 1; + BufferLength -= (UINT32)(OptionStrLength + 1); + Cur += OptionStrLength + 1; - Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Options[Index].ValueStr); + Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Options[Index].ValueStr); ASSERT_EFI_ERROR (Status); - BufferLength -= (UINT32) (ValueStrLength + 1); - Cur += ValueStrLength + 1; - + BufferLength -= (UINT32)(ValueStrLength + 1); + Cur += ValueStrLength + 1; } return Mtftp4SendPacket (Instance, Nbuf); } - /** Build then send an error message. @@ -360,33 +350,32 @@ Mtftp4SendRequest ( **/ EFI_STATUS Mtftp4SendError ( - IN MTFTP4_PROTOCOL *Instance, - IN UINT16 ErrCode, - IN UINT8 *ErrInfo + IN MTFTP4_PROTOCOL *Instance, + IN UINT16 ErrCode, + IN UINT8 *ErrInfo ) { - NET_BUF *Packet; - EFI_MTFTP4_PACKET *TftpError; - UINT32 Len; + NET_BUF *Packet; + EFI_MTFTP4_PACKET *TftpError; + UINT32 Len; - Len = (UINT32) (AsciiStrLen ((CHAR8 *) ErrInfo) + sizeof (EFI_MTFTP4_ERROR_HEADER)); - Packet = NetbufAlloc (Len); + Len = (UINT32)(AsciiStrLen ((CHAR8 *)ErrInfo) + sizeof (EFI_MTFTP4_ERROR_HEADER)); + Packet = NetbufAlloc (Len); if (Packet == NULL) { return EFI_OUT_OF_RESOURCES; } - TftpError = (EFI_MTFTP4_PACKET *) NetbufAllocSpace (Packet, Len, FALSE); + TftpError = (EFI_MTFTP4_PACKET *)NetbufAllocSpace (Packet, Len, FALSE); ASSERT (TftpError != NULL); - TftpError->OpCode = HTONS (EFI_MTFTP4_OPCODE_ERROR); + TftpError->OpCode = HTONS (EFI_MTFTP4_OPCODE_ERROR); TftpError->Error.ErrorCode = HTONS (ErrCode); - AsciiStrCpyS ((CHAR8 *) TftpError->Error.ErrorMessage, Len, (CHAR8 *) ErrInfo); + AsciiStrCpyS ((CHAR8 *)TftpError->Error.ErrorMessage, Len, (CHAR8 *)ErrInfo); return Mtftp4SendPacket (Instance, Packet); } - /** The callback function called when the packet is transmitted. @@ -401,16 +390,15 @@ Mtftp4SendError ( VOID EFIAPI Mtftp4OnPacketSent ( - IN NET_BUF *Packet, - IN UDP_END_POINT *EndPoint, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *Packet, + IN UDP_END_POINT *EndPoint, + IN EFI_STATUS IoStatus, + IN VOID *Context ) { NetbufFree (Packet); } - /** Set the timeout for the instance. User a longer time for passive instances. @@ -419,7 +407,7 @@ Mtftp4OnPacketSent ( **/ VOID Mtftp4SetTimeout ( - IN OUT MTFTP4_PROTOCOL *Instance + IN OUT MTFTP4_PROTOCOL *Instance ) { if (Instance->Master) { @@ -429,7 +417,6 @@ Mtftp4SetTimeout ( } } - /** Send the packet for the instance. @@ -446,14 +433,14 @@ Mtftp4SetTimeout ( **/ EFI_STATUS Mtftp4SendPacket ( - IN OUT MTFTP4_PROTOCOL *Instance, - IN OUT NET_BUF *Packet + IN OUT MTFTP4_PROTOCOL *Instance, + IN OUT NET_BUF *Packet ) { - UDP_END_POINT UdpPoint; - EFI_STATUS Status; - UINT16 OpCode; - UINT8 *Buffer; + UDP_END_POINT UdpPoint; + EFI_STATUS Status; + UINT16 OpCode; + UINT8 *Buffer; // // Save the packet for retransmission @@ -462,9 +449,9 @@ Mtftp4SendPacket ( NetbufFree (Instance->LastPacket); } - Instance->LastPacket = Packet; + Instance->LastPacket = Packet; - Instance->CurRetry = 0; + Instance->CurRetry = 0; Mtftp4SetTimeout (Instance); ZeroMem (&UdpPoint, sizeof (UdpPoint)); @@ -480,7 +467,8 @@ Mtftp4SendPacket ( if ((OpCode == EFI_MTFTP4_OPCODE_RRQ) || (OpCode == EFI_MTFTP4_OPCODE_DIR) || - (OpCode == EFI_MTFTP4_OPCODE_WRQ)) { + (OpCode == EFI_MTFTP4_OPCODE_WRQ)) + { UdpPoint.RemotePort = Instance->ListeningPort; } else { UdpPoint.RemotePort = Instance->ConnectedPort; @@ -504,7 +492,6 @@ Mtftp4SendPacket ( return Status; } - /** Retransmit the last packet for the instance. @@ -516,13 +503,13 @@ Mtftp4SendPacket ( **/ EFI_STATUS Mtftp4Retransmit ( - IN MTFTP4_PROTOCOL *Instance + IN MTFTP4_PROTOCOL *Instance ) { - UDP_END_POINT UdpPoint; - EFI_STATUS Status; - UINT16 OpCode; - UINT8 *Buffer; + UDP_END_POINT UdpPoint; + EFI_STATUS Status; + UINT16 OpCode; + UINT8 *Buffer; ASSERT (Instance->LastPacket != NULL); @@ -534,10 +521,11 @@ Mtftp4Retransmit ( // Buffer = NetbufGetByte (Instance->LastPacket, 0, NULL); ASSERT (Buffer != NULL); - OpCode = NTOHS (*(UINT16 *) Buffer); + OpCode = NTOHS (*(UINT16 *)Buffer); if ((OpCode == EFI_MTFTP4_OPCODE_RRQ) || (OpCode == EFI_MTFTP4_OPCODE_DIR) || - (OpCode == EFI_MTFTP4_OPCODE_WRQ)) { + (OpCode == EFI_MTFTP4_OPCODE_WRQ)) + { UdpPoint.RemotePort = Instance->ListeningPort; } else { UdpPoint.RemotePort = Instance->ConnectedPort; @@ -561,7 +549,6 @@ Mtftp4Retransmit ( return Status; } - /** The timer ticking function in TPL_NOTIFY level for the Mtftp service instance. @@ -572,16 +559,16 @@ Mtftp4Retransmit ( VOID EFIAPI Mtftp4OnTimerTickNotifyLevel ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - MTFTP4_SERVICE *MtftpSb; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - MTFTP4_PROTOCOL *Instance; + MTFTP4_SERVICE *MtftpSb; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + MTFTP4_PROTOCOL *Instance; - MtftpSb = (MTFTP4_SERVICE *) Context; + MtftpSb = (MTFTP4_SERVICE *)Context; // // Iterate through all the children of the Mtftp service instance. Time @@ -597,7 +584,6 @@ Mtftp4OnTimerTickNotifyLevel ( } } - /** The timer ticking function for the Mtftp service instance. @@ -608,17 +594,17 @@ Mtftp4OnTimerTickNotifyLevel ( VOID EFIAPI Mtftp4OnTimerTick ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - MTFTP4_SERVICE *MtftpSb; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - MTFTP4_PROTOCOL *Instance; - EFI_MTFTP4_TOKEN *Token; + MTFTP4_SERVICE *MtftpSb; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + MTFTP4_PROTOCOL *Instance; + EFI_MTFTP4_TOKEN *Token; - MtftpSb = (MTFTP4_SERVICE *) Context; + MtftpSb = (MTFTP4_SERVICE *)Context; // // Iterate through all the children of the Mtftp service instance. @@ -636,12 +622,13 @@ Mtftp4OnTimerTick ( // Token = Instance->Token; - if (Token != NULL && Token->TimeoutCallback != NULL && - EFI_ERROR (Token->TimeoutCallback (&Instance->Mtftp4, Token))) { + if ((Token != NULL) && (Token->TimeoutCallback != NULL) && + EFI_ERROR (Token->TimeoutCallback (&Instance->Mtftp4, Token))) + { Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_REQUEST_DENIED, - (UINT8 *) "User aborted the transfer in time out" + (UINT8 *)"User aborted the transfer in time out" ); Mtftp4CleanOperation (Instance, EFI_ABORTED); diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Support.h b/NetworkPkg/Mtftp4Dxe/Mtftp4Support.h index 95e9bad43e..6267017782 100644 --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Support.h +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Support.h @@ -15,14 +15,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // the holes are filled in, then the download or upload has completed. // typedef struct { - LIST_ENTRY Link; - INTN Start; - INTN End; - INTN Round; - INTN Bound; + LIST_ENTRY Link; + INTN Start; + INTN End; + INTN Round; + INTN Bound; } MTFTP4_BLOCK_RANGE; - /** Initialize the block range for either RRQ or WRQ. @@ -46,9 +45,9 @@ typedef struct { **/ EFI_STATUS Mtftp4InitBlockRange ( - IN LIST_ENTRY *Head, - IN UINT16 Start, - IN UINT16 End + IN LIST_ENTRY *Head, + IN UINT16 Start, + IN UINT16 End ); /** @@ -61,7 +60,7 @@ Mtftp4InitBlockRange ( **/ INTN Mtftp4GetNextBlockNum ( - IN LIST_ENTRY *Head + IN LIST_ENTRY *Head ); /** @@ -77,8 +76,8 @@ Mtftp4GetNextBlockNum ( **/ VOID Mtftp4SetLastBlockNum ( - IN LIST_ENTRY *Head, - IN UINT16 Last + IN LIST_ENTRY *Head, + IN UINT16 Last ); /** @@ -96,10 +95,10 @@ Mtftp4SetLastBlockNum ( **/ EFI_STATUS Mtftp4RemoveBlockNum ( - IN LIST_ENTRY *Head, - IN UINT16 Num, - IN BOOLEAN Completed, - OUT UINT64 *BlockCounter + IN LIST_ENTRY *Head, + IN UINT16 Num, + IN BOOLEAN Completed, + OUT UINT64 *BlockCounter ); /** @@ -110,7 +109,7 @@ Mtftp4RemoveBlockNum ( **/ VOID Mtftp4SetTimeout ( - IN OUT MTFTP4_PROTOCOL *Instance + IN OUT MTFTP4_PROTOCOL *Instance ); /** @@ -129,8 +128,8 @@ Mtftp4SetTimeout ( **/ EFI_STATUS Mtftp4SendPacket ( - IN OUT MTFTP4_PROTOCOL *Instance, - IN OUT NET_BUF *Packet + IN OUT MTFTP4_PROTOCOL *Instance, + IN OUT NET_BUF *Packet ); /** @@ -145,7 +144,7 @@ Mtftp4SendPacket ( **/ EFI_STATUS Mtftp4SendRequest ( - IN MTFTP4_PROTOCOL *Instance + IN MTFTP4_PROTOCOL *Instance ); /** @@ -162,12 +161,11 @@ Mtftp4SendRequest ( **/ EFI_STATUS Mtftp4SendError ( - IN MTFTP4_PROTOCOL *Instance, - IN UINT16 ErrCode, - IN UINT8 *ErrInfo + IN MTFTP4_PROTOCOL *Instance, + IN UINT16 ErrCode, + IN UINT8 *ErrInfo ); - /** The timer ticking function in TPL_NOTIFY level for the Mtftp service instance. @@ -178,8 +176,8 @@ Mtftp4SendError ( VOID EFIAPI Mtftp4OnTimerTickNotifyLevel ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -192,7 +190,8 @@ Mtftp4OnTimerTickNotifyLevel ( VOID EFIAPI Mtftp4OnTimerTick ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); + #endif diff --git a/NetworkPkg/Mtftp4Dxe/Mtftp4Wrq.c b/NetworkPkg/Mtftp4Dxe/Mtftp4Wrq.c index 5d479fad4e..9ebefc74ec 100644 --- a/NetworkPkg/Mtftp4Dxe/Mtftp4Wrq.c +++ b/NetworkPkg/Mtftp4Dxe/Mtftp4Wrq.c @@ -8,8 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Mtftp4Impl.h" - - /** Build then send a MTFTP data packet for the MTFTP upload session. @@ -24,17 +22,17 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS Mtftp4WrqSendBlock ( - IN OUT MTFTP4_PROTOCOL *Instance, - IN UINT16 BlockNum + IN OUT MTFTP4_PROTOCOL *Instance, + IN UINT16 BlockNum ) { - EFI_MTFTP4_PACKET *Packet; - EFI_MTFTP4_TOKEN *Token; - NET_BUF *UdpPacket; - EFI_STATUS Status; - UINT16 DataLen; - UINT8 *DataBuf; - UINT64 Start; + EFI_MTFTP4_PACKET *Packet; + EFI_MTFTP4_TOKEN *Token; + NET_BUF *UdpPacket; + EFI_STATUS Status; + UINT16 DataLen; + UINT8 *DataBuf; + UINT64 Start; // // Allocate a buffer to hold the user data @@ -45,7 +43,7 @@ Mtftp4WrqSendBlock ( return EFI_OUT_OF_RESOURCES; } - Packet = (EFI_MTFTP4_PACKET *) NetbufAllocSpace (UdpPacket, MTFTP4_DATA_HEAD_LEN, FALSE); + Packet = (EFI_MTFTP4_PACKET *)NetbufAllocSpace (UdpPacket, MTFTP4_DATA_HEAD_LEN, FALSE); ASSERT (Packet != NULL); Packet->Data.OpCode = HTONS (EFI_MTFTP4_OPCODE_DATA); @@ -61,16 +59,15 @@ Mtftp4WrqSendBlock ( Start = MultU64x32 (BlockNum - 1, Instance->BlkSize); if (Token->BufferSize < Start + Instance->BlkSize) { - DataLen = (UINT16) (Token->BufferSize - Start); + DataLen = (UINT16)(Token->BufferSize - Start); Instance->LastBlock = BlockNum; Mtftp4SetLastBlockNum (&Instance->Blocks, BlockNum); } if (DataLen > 0) { NetbufAllocSpace (UdpPacket, DataLen, FALSE); - CopyMem (Packet->Data.Data, (UINT8 *) Token->Buffer + Start, DataLen); + CopyMem (Packet->Data.Data, (UINT8 *)Token->Buffer + Start, DataLen); } - } else { // // Get data from PacketNeeded @@ -80,7 +77,7 @@ Mtftp4WrqSendBlock ( &Instance->Mtftp4, Token, &DataLen, - (VOID **) &DataBuf + (VOID **)&DataBuf ); if (EFI_ERROR (Status) || (DataLen > Instance->BlkSize)) { @@ -95,7 +92,7 @@ Mtftp4WrqSendBlock ( Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_REQUEST_DENIED, - (UINT8 *) "User aborted the transfer" + (UINT8 *)"User aborted the transfer" ); return EFI_ABORTED; @@ -116,7 +113,6 @@ Mtftp4WrqSendBlock ( return Mtftp4SendPacket (Instance, UdpPacket); } - /** Function to handle received ACK packet. @@ -135,19 +131,19 @@ Mtftp4WrqSendBlock ( **/ EFI_STATUS Mtftp4WrqHandleAck ( - IN MTFTP4_PROTOCOL *Instance, - IN EFI_MTFTP4_PACKET *Packet, - IN UINT32 Len, - OUT BOOLEAN *Completed + IN MTFTP4_PROTOCOL *Instance, + IN EFI_MTFTP4_PACKET *Packet, + IN UINT32 Len, + OUT BOOLEAN *Completed ) { - UINT16 AckNum; - INTN Expected; - UINT64 BlockCounter; + UINT16 AckNum; + INTN Expected; + UINT64 BlockCounter; - *Completed = FALSE; - AckNum = NTOHS (Packet->Ack.Block[0]); - Expected = Mtftp4GetNextBlockNum (&Instance->Blocks); + *Completed = FALSE; + AckNum = NTOHS (Packet->Ack.Block[0]); + Expected = Mtftp4GetNextBlockNum (&Instance->Blocks); ASSERT (Expected >= 0); @@ -169,7 +165,6 @@ Mtftp4WrqHandleAck ( Expected = Mtftp4GetNextBlockNum (&Instance->Blocks); if (Expected < 0) { - // // The block range is empty. It may either because the last // block has been ACKed, or the sequence number just looped back, @@ -179,22 +174,20 @@ Mtftp4WrqHandleAck ( ASSERT (Instance->LastBlock >= 1); *Completed = TRUE; return EFI_SUCCESS; - } else { Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_REQUEST_DENIED, - (UINT8 *) "Block number rolls back, not supported, try blksize option" + (UINT8 *)"Block number rolls back, not supported, try blksize option" ); return EFI_TFTP_ERROR; } } - return Mtftp4WrqSendBlock (Instance, (UINT16) Expected); + return Mtftp4WrqSendBlock (Instance, (UINT16)Expected); } - /** Check whether the received OACK is valid. @@ -213,8 +206,8 @@ Mtftp4WrqHandleAck ( **/ BOOLEAN Mtftp4WrqOackValid ( - IN MTFTP4_OPTION *Reply, - IN MTFTP4_OPTION *Request + IN MTFTP4_OPTION *Reply, + IN MTFTP4_OPTION *Request ) { // @@ -229,14 +222,14 @@ Mtftp4WrqOackValid ( // return the timeout matches that requested. // if ((((Reply->Exist & MTFTP4_BLKSIZE_EXIST) != 0) && (Reply->BlkSize > Request->BlkSize)) || - (((Reply->Exist & MTFTP4_TIMEOUT_EXIST) != 0) && (Reply->Timeout != Request->Timeout))) { + (((Reply->Exist & MTFTP4_TIMEOUT_EXIST) != 0) && (Reply->Timeout != Request->Timeout))) + { return FALSE; } return TRUE; } - /** Function to handle the MTFTP OACK packet. @@ -254,16 +247,16 @@ Mtftp4WrqOackValid ( **/ EFI_STATUS Mtftp4WrqHandleOack ( - IN OUT MTFTP4_PROTOCOL *Instance, - IN EFI_MTFTP4_PACKET *Packet, - IN UINT32 Len, - OUT BOOLEAN *Completed + IN OUT MTFTP4_PROTOCOL *Instance, + IN EFI_MTFTP4_PACKET *Packet, + IN UINT32 Len, + OUT BOOLEAN *Completed ) { - MTFTP4_OPTION Reply; - EFI_MTFTP4_PACKET Bogus; - EFI_STATUS Status; - INTN Expected; + MTFTP4_OPTION Reply; + EFI_MTFTP4_PACKET Bogus; + EFI_STATUS Status; + INTN Expected; *Completed = FALSE; @@ -291,7 +284,7 @@ Mtftp4WrqHandleOack ( Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION, - (UINT8 *) "Malformatted OACK packet" + (UINT8 *)"Malformatted OACK packet" ); } @@ -310,8 +303,8 @@ Mtftp4WrqHandleOack ( // Build a bogus ACK0 packet then pass it to the Mtftp4WrqHandleAck, // which will start the transmission of the first data block. // - Bogus.Ack.OpCode = HTONS (EFI_MTFTP4_OPCODE_ACK); - Bogus.Ack.Block[0] = 0; + Bogus.Ack.OpCode = HTONS (EFI_MTFTP4_OPCODE_ACK); + Bogus.Ack.Block[0] = 0; Status = Mtftp4WrqHandleAck ( Instance, @@ -323,7 +316,6 @@ Mtftp4WrqHandleOack ( return Status; } - /** The input process routine for MTFTP upload. @@ -336,20 +328,20 @@ Mtftp4WrqHandleOack ( VOID EFIAPI Mtftp4WrqInput ( - IN NET_BUF *UdpPacket, - IN UDP_END_POINT *EndPoint, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *UdpPacket, + IN UDP_END_POINT *EndPoint, + IN EFI_STATUS IoStatus, + IN VOID *Context ) { - MTFTP4_PROTOCOL *Instance; - EFI_MTFTP4_PACKET *Packet; - BOOLEAN Completed; - EFI_STATUS Status; - UINT32 Len; - UINT16 Opcode; - - Instance = (MTFTP4_PROTOCOL *) Context; + MTFTP4_PROTOCOL *Instance; + EFI_MTFTP4_PACKET *Packet; + BOOLEAN Completed; + EFI_STATUS Status; + UINT32 Len; + UINT16 Opcode; + + Instance = (MTFTP4_PROTOCOL *)Context; NET_CHECK_SIGNATURE (Instance, MTFTP4_PROTOCOL_SIGNATURE); Completed = FALSE; @@ -392,10 +384,9 @@ Mtftp4WrqInput ( goto ON_EXIT; } - NetbufCopy (UdpPacket, 0, Len, (UINT8 *) Packet); - + NetbufCopy (UdpPacket, 0, Len, (UINT8 *)Packet); } else { - Packet = (EFI_MTFTP4_PACKET *) NetbufGetByte (UdpPacket, 0, NULL); + Packet = (EFI_MTFTP4_PACKET *)NetbufGetByte (UdpPacket, 0, NULL); ASSERT (Packet != NULL); } @@ -406,12 +397,12 @@ Mtftp4WrqInput ( // if CheckPacket returns an EFI_ERROR code. // if ((Instance->Token->CheckPacket != NULL) && - ((Opcode == EFI_MTFTP4_OPCODE_OACK) || (Opcode == EFI_MTFTP4_OPCODE_ERROR))) { - + ((Opcode == EFI_MTFTP4_OPCODE_OACK) || (Opcode == EFI_MTFTP4_OPCODE_ERROR))) + { Status = Instance->Token->CheckPacket ( &Instance->Mtftp4, Instance->Token, - (UINT16) Len, + (UINT16)Len, Packet ); @@ -423,7 +414,7 @@ Mtftp4WrqInput ( Mtftp4SendError ( Instance, EFI_MTFTP4_ERRORCODE_REQUEST_DENIED, - (UINT8 *) "User aborted the transfer" + (UINT8 *)"User aborted the transfer" ); } @@ -433,28 +424,28 @@ Mtftp4WrqInput ( } switch (Opcode) { - case EFI_MTFTP4_OPCODE_ACK: - if (Len != MTFTP4_OPCODE_LEN + MTFTP4_BLKNO_LEN) { - goto ON_EXIT; - } + case EFI_MTFTP4_OPCODE_ACK: + if (Len != MTFTP4_OPCODE_LEN + MTFTP4_BLKNO_LEN) { + goto ON_EXIT; + } - Status = Mtftp4WrqHandleAck (Instance, Packet, Len, &Completed); - break; + Status = Mtftp4WrqHandleAck (Instance, Packet, Len, &Completed); + break; - case EFI_MTFTP4_OPCODE_OACK: - if (Len <= MTFTP4_OPCODE_LEN) { - goto ON_EXIT; - } + case EFI_MTFTP4_OPCODE_OACK: + if (Len <= MTFTP4_OPCODE_LEN) { + goto ON_EXIT; + } - Status = Mtftp4WrqHandleOack (Instance, Packet, Len, &Completed); - break; + Status = Mtftp4WrqHandleOack (Instance, Packet, Len, &Completed); + break; - case EFI_MTFTP4_OPCODE_ERROR: - Status = EFI_TFTP_ERROR; - break; + case EFI_MTFTP4_OPCODE_ERROR: + Status = EFI_TFTP_ERROR; + break; - default: - break; + default: + break; } ON_EXIT: @@ -482,8 +473,6 @@ ON_EXIT: } } - - /** Start the MTFTP session for upload. @@ -500,11 +489,11 @@ ON_EXIT: **/ EFI_STATUS Mtftp4WrqStart ( - IN MTFTP4_PROTOCOL *Instance, - IN UINT16 Operation + IN MTFTP4_PROTOCOL *Instance, + IN UINT16 Operation ) { - EFI_STATUS Status; + EFI_STATUS Status; // // The valid block number range are [0, 0xffff]. For example: @@ -526,4 +515,3 @@ Mtftp4WrqStart ( return UdpIoRecvDatagram (Instance->UnicastPort, Mtftp4WrqInput, Instance, 0); } - diff --git a/NetworkPkg/Mtftp6Dxe/ComponentName.c b/NetworkPkg/Mtftp6Dxe/ComponentName.c index 296be48ec6..48e85e6ff7 100644 --- a/NetworkPkg/Mtftp6Dxe/ComponentName.c +++ b/NetworkPkg/Mtftp6Dxe/ComponentName.c @@ -9,7 +9,6 @@ #include "Mtftp6Impl.h" - /** Retrieves a Unicode string that is the user-readable name of the driver. @@ -128,17 +127,17 @@ Mtftp6ComponentNameGetDriverName ( EFI_STATUS EFIAPI Mtftp6ComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); // // EFI Component Name Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gMtftp6ComponentName = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gMtftp6ComponentName = { Mtftp6ComponentNameGetDriverName, Mtftp6ComponentNameGetControllerName, "eng" @@ -147,13 +146,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gMtftp6ComponentNa // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gMtftp6ComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) Mtftp6ComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) Mtftp6ComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gMtftp6ComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)Mtftp6ComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)Mtftp6ComponentNameGetControllerName, "en" }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mMtftp6DriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mMtftp6DriverNameTable[] = { { "eng;en", L"MTFTP6 Network Service Driver" @@ -164,7 +163,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mMtftp6DriverNameT } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gMtftp6ControllerNameTable = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gMtftp6ControllerNameTable = NULL; /** Retrieves a Unicode string that is the user-readable name of the driver. @@ -214,12 +213,12 @@ Mtftp6ComponentNameGetDriverName ( ) { return LookupUnicodeString2 ( - Language, - This->SupportedLanguages, - mMtftp6DriverNameTable, - DriverName, - (BOOLEAN)(This == &gMtftp6ComponentName) - ); + Language, + This->SupportedLanguages, + mMtftp6DriverNameTable, + DriverName, + (BOOLEAN)(This == &gMtftp6ComponentName) + ); } /** @@ -234,13 +233,13 @@ Mtftp6ComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - IN EFI_MTFTP6_PROTOCOL *Mtftp6 + IN EFI_MTFTP6_PROTOCOL *Mtftp6 ) { - EFI_STATUS Status; - CHAR16 HandleName[128]; - EFI_MTFTP6_MODE_DATA Mtftp6ModeData; - CHAR16 Address[sizeof"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"]; + EFI_STATUS Status; + CHAR16 HandleName[128]; + EFI_MTFTP6_MODE_DATA Mtftp6ModeData; + CHAR16 Address[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"]; if (Mtftp6 == NULL) { return EFI_INVALID_PARAMETER; @@ -251,11 +250,14 @@ UpdateName ( // Status = Mtftp6->GetModeData (Mtftp6, &Mtftp6ModeData); if (!EFI_ERROR (Status)) { - Status = NetLibIp6ToStr (&Mtftp6ModeData.ConfigData.ServerIp, Address, sizeof(Address)); + Status = NetLibIp6ToStr (&Mtftp6ModeData.ConfigData.ServerIp, Address, sizeof (Address)); if (EFI_ERROR (Status)) { return Status; } - UnicodeSPrint (HandleName, sizeof (HandleName), + + UnicodeSPrint ( + HandleName, + sizeof (HandleName), L"MTFTPv6(ServerIp=%s, InitialServerPort=%d)", Address, Mtftp6ModeData.ConfigData.InitialServerPort @@ -289,7 +291,6 @@ UpdateName ( ); } - /** Retrieves a Unicode string that is the user-readable name of the controller that is being managed by a driver. @@ -361,15 +362,15 @@ UpdateName ( EFI_STATUS EFIAPI Mtftp6ComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_MTFTP6_PROTOCOL *Mtftp6; + EFI_STATUS Status; + EFI_MTFTP6_PROTOCOL *Mtftp6; // // Only provide names for child handles. @@ -421,4 +422,3 @@ Mtftp6ComponentNameGetControllerName ( (BOOLEAN)(This == &gMtftp6ComponentName) ); } - diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c b/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c index a19a67a1ce..236b8c2155 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c @@ -10,8 +10,7 @@ #include "Mtftp6Impl.h" - -EFI_DRIVER_BINDING_PROTOCOL gMtftp6DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gMtftp6DriverBinding = { Mtftp6DriverBindingSupported, Mtftp6DriverBindingStart, Mtftp6DriverBindingStop, @@ -25,7 +24,6 @@ EFI_SERVICE_BINDING_PROTOCOL gMtftp6ServiceBindingTemplate = { Mtftp6ServiceBindingDestroyChild }; - /** Destroy the MTFTP6 service. The MTFTP6 service may be partly initialized, or partly destroyed. If a resource is destroyed, it is marked as such in @@ -36,7 +34,7 @@ EFI_SERVICE_BINDING_PROTOCOL gMtftp6ServiceBindingTemplate = { **/ VOID Mtftp6DestroyService ( - IN MTFTP6_SERVICE *Service + IN MTFTP6_SERVICE *Service ) { // @@ -55,7 +53,6 @@ Mtftp6DestroyService ( FreePool (Service); } - /** Create then initialize a MTFTP6 service binding instance. @@ -72,13 +69,13 @@ Mtftp6DestroyService ( **/ EFI_STATUS Mtftp6CreateService ( - IN EFI_HANDLE Controller, - IN EFI_HANDLE Image, - OUT MTFTP6_SERVICE **Service + IN EFI_HANDLE Controller, + IN EFI_HANDLE Image, + OUT MTFTP6_SERVICE **Service ) { - MTFTP6_SERVICE *Mtftp6Srv; - EFI_STATUS Status; + MTFTP6_SERVICE *Mtftp6Srv; + EFI_STATUS Status; ASSERT (Service != NULL); @@ -89,10 +86,10 @@ Mtftp6CreateService ( return EFI_OUT_OF_RESOURCES; } - Mtftp6Srv->Signature = MTFTP6_SERVICE_SIGNATURE; - Mtftp6Srv->Controller = Controller; - Mtftp6Srv->Image = Image; - Mtftp6Srv->ChildrenNum = 0; + Mtftp6Srv->Signature = MTFTP6_SERVICE_SIGNATURE; + Mtftp6Srv->Controller = Controller; + Mtftp6Srv->Image = Image; + Mtftp6Srv->ChildrenNum = 0; CopyMem ( &Mtftp6Srv->ServiceBinding, @@ -140,7 +137,6 @@ Mtftp6CreateService ( return EFI_SUCCESS; } - /** Destroy the MTFTP6 instance and recycle the resources. @@ -149,18 +145,18 @@ Mtftp6CreateService ( **/ VOID Mtftp6DestroyInstance ( - IN MTFTP6_INSTANCE *Instance + IN MTFTP6_INSTANCE *Instance ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - MTFTP6_BLOCK_RANGE *Block; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + MTFTP6_BLOCK_RANGE *Block; if (Instance->Config != NULL) { FreePool (Instance->Config); } - if (Instance->Token != NULL && Instance->Token->Event != NULL) { + if ((Instance->Token != NULL) && (Instance->Token->Event != NULL)) { gBS->SignalEvent (Instance->Token->Event); } @@ -168,7 +164,7 @@ Mtftp6DestroyInstance ( NetbufFree (Instance->LastPacket); } - if (Instance->UdpIo!= NULL) { + if (Instance->UdpIo != NULL) { UdpIoFreeIo (Instance->UdpIo); } @@ -185,7 +181,6 @@ Mtftp6DestroyInstance ( FreePool (Instance); } - /** Create the MTFTP6 instance and initialize it. @@ -198,11 +193,11 @@ Mtftp6DestroyInstance ( **/ EFI_STATUS Mtftp6CreateInstance ( - IN MTFTP6_SERVICE *Service, - OUT MTFTP6_INSTANCE **Instance + IN MTFTP6_SERVICE *Service, + OUT MTFTP6_INSTANCE **Instance ) { - MTFTP6_INSTANCE *Mtftp6Ins; + MTFTP6_INSTANCE *Mtftp6Ins; *Instance = NULL; Mtftp6Ins = AllocateZeroPool (sizeof (MTFTP6_INSTANCE)); @@ -229,7 +224,6 @@ Mtftp6CreateInstance ( return EFI_SUCCESS; } - /** Callback function which provided by user to remove one node in NetDestroyLinkList process. @@ -243,8 +237,8 @@ Mtftp6CreateInstance ( EFI_STATUS EFIAPI Mtftp6DestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { MTFTP6_INSTANCE *Instance; @@ -252,14 +246,14 @@ Mtftp6DestroyChildEntryInHandleBuffer ( UINTN NumberOfChildren; EFI_HANDLE *ChildHandleBuffer; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - Instance = NET_LIST_USER_STRUCT_S (Entry, MTFTP6_INSTANCE, Link, MTFTP6_INSTANCE_SIGNATURE); - ServiceBinding = ((MTFTP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; - NumberOfChildren = ((MTFTP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; - ChildHandleBuffer = ((MTFTP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; + Instance = NET_LIST_USER_STRUCT_S (Entry, MTFTP6_INSTANCE, Link, MTFTP6_INSTANCE_SIGNATURE); + ServiceBinding = ((MTFTP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; + NumberOfChildren = ((MTFTP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; + ChildHandleBuffer = ((MTFTP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; if (!NetIsInHandleBuffer (Instance->Handle, NumberOfChildren, ChildHandleBuffer)) { return EFI_SUCCESS; @@ -268,7 +262,6 @@ Mtftp6DestroyChildEntryInHandleBuffer ( return ServiceBinding->DestroyChild (ServiceBinding, Instance->Handle); } - /** This is the declaration of an EFI image entry point. This entry point is the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers, including @@ -286,8 +279,8 @@ Mtftp6DestroyChildEntryInHandleBuffer ( EFI_STATUS EFIAPI Mtftp6DriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { return EfiLibInstallDriverBindingComponentName2 ( @@ -300,7 +293,6 @@ Mtftp6DriverEntryPoint ( ); } - /** Test to see if this driver supports Controller. This service is called by the EFI boot service ConnectController(). In @@ -321,9 +313,9 @@ Mtftp6DriverEntryPoint ( EFI_STATUS EFIAPI Mtftp6DriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { return gBS->OpenProtocol ( @@ -336,7 +328,6 @@ Mtftp6DriverBindingSupported ( ); } - /** Start this driver on Controller. This service is called by the EFI boot service ConnectController(). In order to make @@ -363,8 +354,8 @@ Mtftp6DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - MTFTP6_SERVICE *Service; - EFI_STATUS Status; + MTFTP6_SERVICE *Service; + EFI_STATUS Status; // // Directly return if driver is already running on this Nic handle. @@ -432,7 +423,6 @@ ON_ERROR: return Status; } - /** Stop this driver on Controller. This service is called by the EFI boot service DisconnectController(). In order to @@ -455,18 +445,18 @@ ON_ERROR: EFI_STATUS EFIAPI Mtftp6DriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer ) { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - MTFTP6_SERVICE *Service; - EFI_HANDLE NicHandle; - EFI_STATUS Status; - LIST_ENTRY *List; - MTFTP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + MTFTP6_SERVICE *Service; + EFI_HANDLE NicHandle; + EFI_STATUS Status; + LIST_ENTRY *List; + MTFTP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; // // Locate the Nic handle to retrieve the Mtftp6 private data. @@ -480,7 +470,7 @@ Mtftp6DriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiMtftp6ServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -496,19 +486,19 @@ Mtftp6DriverBindingStop ( // // Destroy the Mtftp6 child instance in ChildHandleBuffer. // - List = &Service->Children; + List = &Service->Children; Context.ServiceBinding = ServiceBinding; Context.NumberOfChildren = NumberOfChildren; Context.ChildHandleBuffer = ChildHandleBuffer; - Status = NetDestroyLinkList ( - List, - Mtftp6DestroyChildEntryInHandleBuffer, - &Context, - NULL - ); + Status = NetDestroyLinkList ( + List, + Mtftp6DestroyChildEntryInHandleBuffer, + &Context, + NULL + ); } - if (NumberOfChildren == 0 && IsListEmpty (&Service->Children)) { + if ((NumberOfChildren == 0) && IsListEmpty (&Service->Children)) { // // Destroy the Mtftp6 service if there is no Mtftp6 child instance left. // @@ -525,7 +515,6 @@ Mtftp6DriverBindingStop ( return Status; } - /** Creates a child handle and installs a protocol. @@ -550,13 +539,13 @@ Mtftp6ServiceBindingCreateChild ( IN OUT EFI_HANDLE *ChildHandle ) { - MTFTP6_SERVICE *Service; - MTFTP6_INSTANCE *Instance; - EFI_STATUS Status; - EFI_TPL OldTpl; - VOID *Udp6; + MTFTP6_SERVICE *Service; + MTFTP6_INSTANCE *Instance; + EFI_STATUS Status; + EFI_TPL OldTpl; + VOID *Udp6; - if (This == NULL || ChildHandle == NULL) { + if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; } @@ -592,7 +581,7 @@ Mtftp6ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( Service->DummyUdpIo->UdpHandle, &gEfiUdp6ProtocolGuid, - (VOID **) &Udp6, + (VOID **)&Udp6, gMtftp6DriverBinding.DriverBindingHandle, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -626,7 +615,6 @@ ON_ERROR: return Status; } - /** Destroys a child handle with a protocol installed on it. @@ -646,17 +634,17 @@ ON_ERROR: EFI_STATUS EFIAPI Mtftp6ServiceBindingDestroyChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE ChildHandle + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN EFI_HANDLE ChildHandle ) { - MTFTP6_SERVICE *Service; - MTFTP6_INSTANCE *Instance; - EFI_MTFTP6_PROTOCOL *Mtftp6; - EFI_STATUS Status; - EFI_TPL OldTpl; + MTFTP6_SERVICE *Service; + MTFTP6_INSTANCE *Instance; + EFI_MTFTP6_PROTOCOL *Mtftp6; + EFI_STATUS Status; + EFI_TPL OldTpl; - if (This == NULL || ChildHandle == NULL) { + if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; } @@ -666,7 +654,7 @@ Mtftp6ServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiMtftp6ProtocolGuid, - (VOID **) &Mtftp6, + (VOID **)&Mtftp6, gMtftp6DriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -703,11 +691,11 @@ Mtftp6ServiceBindingDestroyChild ( if (Instance->UdpIo != NULL) { gBS->CloseProtocol ( - Instance->UdpIo->UdpHandle, - &gEfiUdp6ProtocolGuid, - gMtftp6DriverBinding.DriverBindingHandle, - Instance->Handle - ); + Instance->UdpIo->UdpHandle, + &gEfiUdp6ProtocolGuid, + gMtftp6DriverBinding.DriverBindingHandle, + Instance->Handle + ); } if (Instance->McastUdpIo != NULL) { @@ -739,7 +727,7 @@ Mtftp6ServiceBindingDestroyChild ( // Remove the Mtftp6 instance from the children list of Mtftp6 service. // RemoveEntryList (&Instance->Link); - Service->ChildrenNum --; + Service->ChildrenNum--; gBS->RestoreTPL (OldTpl); diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.h b/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.h index 86e8c6a771..fba48eecc5 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.h +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.h @@ -13,9 +13,9 @@ #include -extern EFI_COMPONENT_NAME_PROTOCOL gMtftp6ComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gMtftp6ComponentName2; -extern EFI_UNICODE_STRING_TABLE *gMtftp6ControllerNameTable; +extern EFI_COMPONENT_NAME_PROTOCOL gMtftp6ComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gMtftp6ComponentName2; +extern EFI_UNICODE_STRING_TABLE *gMtftp6ControllerNameTable; /** Test to see if this driver supports Controller. This service @@ -90,10 +90,10 @@ Mtftp6DriverBindingStart ( EFI_STATUS EFIAPI Mtftp6DriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer ); /** @@ -116,8 +116,8 @@ Mtftp6DriverBindingStop ( EFI_STATUS EFIAPI Mtftp6ServiceBindingCreateChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN OUT EFI_HANDLE *ChildHandle + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN OUT EFI_HANDLE *ChildHandle ); /** @@ -139,8 +139,8 @@ Mtftp6ServiceBindingCreateChild ( EFI_STATUS EFIAPI Mtftp6ServiceBindingDestroyChild ( - IN EFI_SERVICE_BINDING_PROTOCOL *This, - IN EFI_HANDLE ChildHandle + IN EFI_SERVICE_BINDING_PROTOCOL *This, + IN EFI_HANDLE ChildHandle ); #endif diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c b/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c index 067b1f53ba..387ae3d8af 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c @@ -16,7 +16,7 @@ #include "Mtftp6Impl.h" -EFI_MTFTP6_PROTOCOL gMtftp6ProtocolTemplate = { +EFI_MTFTP6_PROTOCOL gMtftp6ProtocolTemplate = { EfiMtftp6GetModeData, EfiMtftp6Configure, EfiMtftp6GetInfo, @@ -25,7 +25,7 @@ EFI_MTFTP6_PROTOCOL gMtftp6ProtocolTemplate = { EfiMtftp6WriteFile, EfiMtftp6ReadDirectory, EfiMtftp6Poll - }; +}; /** Returns the current operating mode data for the MTFTP6 instance. @@ -45,14 +45,14 @@ EFI_MTFTP6_PROTOCOL gMtftp6ProtocolTemplate = { EFI_STATUS EFIAPI EfiMtftp6GetModeData ( - IN EFI_MTFTP6_PROTOCOL *This, - OUT EFI_MTFTP6_MODE_DATA *ModeData + IN EFI_MTFTP6_PROTOCOL *This, + OUT EFI_MTFTP6_MODE_DATA *ModeData ) { MTFTP6_INSTANCE *Instance; EFI_TPL OldTpl; - if (This == NULL || ModeData == NULL) { + if ((This == NULL) || (ModeData == NULL)) { return EFI_INVALID_PARAMETER; } @@ -79,14 +79,13 @@ EfiMtftp6GetModeData ( // Set the current support options in mode data. // ModeData->SupportedOptionCount = MTFTP6_SUPPORTED_OPTIONS_NUM; - ModeData->SupportedOptions = (UINT8 **) mMtftp6SupportedOptions; + ModeData->SupportedOptions = (UINT8 **)mMtftp6SupportedOptions; gBS->RestoreTPL (OldTpl); return EFI_SUCCESS; } - /** Initializes, changes, or resets the default operational setting for this EFI MTFTPv6 Protocol driver instance. @@ -128,22 +127,22 @@ EfiMtftp6GetModeData ( EFI_STATUS EFIAPI EfiMtftp6Configure ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_CONFIG_DATA *MtftpConfigData OPTIONAL + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_CONFIG_DATA *MtftpConfigData OPTIONAL ) { - MTFTP6_SERVICE *Service; - MTFTP6_INSTANCE *Instance; - EFI_UDP6_PROTOCOL *Udp6; - EFI_UDP6_CONFIG_DATA Udp6Cfg; - EFI_STATUS Status; - EFI_TPL OldTpl; + MTFTP6_SERVICE *Service; + MTFTP6_INSTANCE *Instance; + EFI_UDP6_PROTOCOL *Udp6; + EFI_UDP6_CONFIG_DATA Udp6Cfg; + EFI_STATUS Status; + EFI_TPL OldTpl; if (This == NULL) { return EFI_INVALID_PARAMETER; } - if (MtftpConfigData != NULL && !NetIp6IsValidUnicast (&MtftpConfigData->ServerIp)) { + if ((MtftpConfigData != NULL) && !NetIp6IsValidUnicast (&MtftpConfigData->ServerIp)) { return EFI_INVALID_PARAMETER; } @@ -167,6 +166,7 @@ EfiMtftp6Configure ( Status = EFI_ACCESS_DENIED; goto ON_EXIT; } + // // Allocate the configure buffer of the instance and store the user's data. // @@ -195,7 +195,7 @@ EfiMtftp6Configure ( Status = gBS->OpenProtocol ( Instance->UdpIo->UdpHandle, &gEfiUdp6ProtocolGuid, - (VOID **) &Udp6, + (VOID **)&Udp6, Service->Image, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -229,7 +229,7 @@ EfiMtftp6Configure ( CopyMem ( &Udp6Cfg.StationAddress, &Instance->Config->StationIp, - sizeof(EFI_IPv6_ADDRESS) + sizeof (EFI_IPv6_ADDRESS) ); CopyMem ( @@ -252,16 +252,17 @@ ON_EXIT: FreePool (Instance->Config); Instance->Config = NULL; } + if (Instance->UdpIo != NULL) { UdpIoFreeIo (Instance->UdpIo); Instance->UdpIo = NULL; } } + gBS->RestoreTPL (OldTpl); return Status; } - /** Get the information of the download from the server. @@ -319,26 +320,27 @@ ON_EXIT: EFI_STATUS EFIAPI EfiMtftp6GetInfo ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_OVERRIDE_DATA *OverrideData OPTIONAL, - IN UINT8 *Filename, - IN UINT8 *ModeStr OPTIONAL, - IN UINT8 OptionCount, - IN EFI_MTFTP6_OPTION *OptionList OPTIONAL, - OUT UINT32 *PacketLength, - OUT EFI_MTFTP6_PACKET **Packet OPTIONAL + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_OVERRIDE_DATA *OverrideData OPTIONAL, + IN UINT8 *Filename, + IN UINT8 *ModeStr OPTIONAL, + IN UINT8 OptionCount, + IN EFI_MTFTP6_OPTION *OptionList OPTIONAL, + OUT UINT32 *PacketLength, + OUT EFI_MTFTP6_PACKET **Packet OPTIONAL ) { - EFI_STATUS Status; - EFI_MTFTP6_TOKEN Token; - MTFTP6_GETINFO_CONTEXT Context; - - if (This == NULL || - Filename == NULL || - PacketLength == NULL || - (OptionCount != 0 && OptionList == NULL) || - (OverrideData != NULL && !NetIp6IsValidUnicast (&OverrideData->ServerIp)) - ) { + EFI_STATUS Status; + EFI_MTFTP6_TOKEN Token; + MTFTP6_GETINFO_CONTEXT Context; + + if ((This == NULL) || + (Filename == NULL) || + (PacketLength == NULL) || + ((OptionCount != 0) && (OptionList == NULL)) || + ((OverrideData != NULL) && !NetIp6IsValidUnicast (&OverrideData->ServerIp)) + ) + { return EFI_INVALID_PARAMETER; } @@ -346,11 +348,11 @@ EfiMtftp6GetInfo ( *Packet = NULL; } - *PacketLength = 0; + *PacketLength = 0; - Context.Packet = Packet; - Context.PacketLen = PacketLength; - Context.Status = EFI_SUCCESS; + Context.Packet = Packet; + Context.PacketLen = PacketLength; + Context.Status = EFI_SUCCESS; // // Fill fields of the Token for GetInfo operation. @@ -384,7 +386,6 @@ EfiMtftp6GetInfo ( return Status; } - /** Parse the options in an MTFTPv6 OACK packet. @@ -418,11 +419,11 @@ EfiMtftp6GetInfo ( EFI_STATUS EFIAPI EfiMtftp6ParseOptions ( - IN EFI_MTFTP6_PROTOCOL *This, - IN UINT32 PacketLen, - IN EFI_MTFTP6_PACKET *Packet, - OUT UINT32 *OptionCount, - OUT EFI_MTFTP6_OPTION **OptionList OPTIONAL + IN EFI_MTFTP6_PROTOCOL *This, + IN UINT32 PacketLen, + IN EFI_MTFTP6_PACKET *Packet, + OUT UINT32 *OptionCount, + OUT EFI_MTFTP6_OPTION **OptionList OPTIONAL ) { if (This == NULL) { @@ -432,7 +433,6 @@ EfiMtftp6ParseOptions ( return Mtftp6ParseStart (Packet, PacketLen, OptionCount, OptionList); } - /** Download a file from an MTFTPv6 server. @@ -477,14 +477,13 @@ EfiMtftp6ParseOptions ( EFI_STATUS EFIAPI EfiMtftp6ReadFile ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token ) { return Mtftp6OperationStart (This, Token, EFI_MTFTP6_OPCODE_RRQ); } - /** Send a file to an MTFTPv6 server. @@ -530,14 +529,13 @@ EfiMtftp6ReadFile ( EFI_STATUS EFIAPI EfiMtftp6WriteFile ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token ) { return Mtftp6OperationStart (This, Token, EFI_MTFTP6_OPCODE_WRQ); } - /** Download a data file directory from an MTFTPv6 server. @@ -581,14 +579,13 @@ EfiMtftp6WriteFile ( EFI_STATUS EFIAPI EfiMtftp6ReadDirectory ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token ) { return Mtftp6OperationStart (This, Token, EFI_MTFTP6_OPCODE_DIR); } - /** Polls for incoming data packets and processes outgoing data packets. @@ -616,11 +613,11 @@ EfiMtftp6ReadDirectory ( EFI_STATUS EFIAPI EfiMtftp6Poll ( - IN EFI_MTFTP6_PROTOCOL *This + IN EFI_MTFTP6_PROTOCOL *This ) { - MTFTP6_INSTANCE *Instance; - EFI_UDP6_PROTOCOL *Udp6; + MTFTP6_INSTANCE *Instance; + EFI_UDP6_PROTOCOL *Udp6; if (This == NULL) { return EFI_INVALID_PARAMETER; diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h b/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h index 321fbc1d52..792160ea37 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h @@ -25,114 +25,114 @@ #include #include -typedef struct _MTFTP6_SERVICE MTFTP6_SERVICE; -typedef struct _MTFTP6_INSTANCE MTFTP6_INSTANCE; +typedef struct _MTFTP6_SERVICE MTFTP6_SERVICE; +typedef struct _MTFTP6_INSTANCE MTFTP6_INSTANCE; #include "Mtftp6Driver.h" #include "Mtftp6Option.h" #include "Mtftp6Support.h" -#define MTFTP6_SERVICE_SIGNATURE SIGNATURE_32 ('M', 'F', '6', 'S') -#define MTFTP6_INSTANCE_SIGNATURE SIGNATURE_32 ('M', 'F', '6', 'I') +#define MTFTP6_SERVICE_SIGNATURE SIGNATURE_32 ('M', 'F', '6', 'S') +#define MTFTP6_INSTANCE_SIGNATURE SIGNATURE_32 ('M', 'F', '6', 'I') -#define MTFTP6_DEFAULT_SERVER_CMD_PORT 69 -#define MTFTP6_DEFAULT_TIMEOUT 3 -#define MTFTP6_GET_MAPPING_TIMEOUT 3 -#define MTFTP6_DEFAULT_MAX_RETRY 5 -#define MTFTP6_DEFAULT_BLK_SIZE 512 -#define MTFTP6_DEFAULT_WINDOWSIZE 1 -#define MTFTP6_TICK_PER_SECOND 10000000U +#define MTFTP6_DEFAULT_SERVER_CMD_PORT 69 +#define MTFTP6_DEFAULT_TIMEOUT 3 +#define MTFTP6_GET_MAPPING_TIMEOUT 3 +#define MTFTP6_DEFAULT_MAX_RETRY 5 +#define MTFTP6_DEFAULT_BLK_SIZE 512 +#define MTFTP6_DEFAULT_WINDOWSIZE 1 +#define MTFTP6_TICK_PER_SECOND 10000000U -#define MTFTP6_SERVICE_FROM_THIS(a) CR (a, MTFTP6_SERVICE, ServiceBinding, MTFTP6_SERVICE_SIGNATURE) -#define MTFTP6_INSTANCE_FROM_THIS(a) CR (a, MTFTP6_INSTANCE, Mtftp6, MTFTP6_INSTANCE_SIGNATURE) +#define MTFTP6_SERVICE_FROM_THIS(a) CR (a, MTFTP6_SERVICE, ServiceBinding, MTFTP6_SERVICE_SIGNATURE) +#define MTFTP6_INSTANCE_FROM_THIS(a) CR (a, MTFTP6_INSTANCE, Mtftp6, MTFTP6_INSTANCE_SIGNATURE) -extern EFI_MTFTP6_PROTOCOL gMtftp6ProtocolTemplate; +extern EFI_MTFTP6_PROTOCOL gMtftp6ProtocolTemplate; -typedef struct _MTFTP6_GETINFO_CONTEXT{ - EFI_MTFTP6_PACKET **Packet; - UINT32 *PacketLen; - EFI_STATUS Status; +typedef struct _MTFTP6_GETINFO_CONTEXT { + EFI_MTFTP6_PACKET **Packet; + UINT32 *PacketLen; + EFI_STATUS Status; } MTFTP6_GETINFO_CONTEXT; // // Control block for MTFTP6 instance, it's per configuration data. // struct _MTFTP6_INSTANCE { - UINT32 Signature; - EFI_HANDLE Handle; - LIST_ENTRY Link; - EFI_MTFTP6_PROTOCOL Mtftp6; - MTFTP6_SERVICE *Service; - EFI_MTFTP6_CONFIG_DATA *Config; + UINT32 Signature; + EFI_HANDLE Handle; + LIST_ENTRY Link; + EFI_MTFTP6_PROTOCOL Mtftp6; + MTFTP6_SERVICE *Service; + EFI_MTFTP6_CONFIG_DATA *Config; - EFI_MTFTP6_TOKEN *Token; - MTFTP6_EXT_OPTION_INFO ExtInfo; + EFI_MTFTP6_TOKEN *Token; + MTFTP6_EXT_OPTION_INFO ExtInfo; - UINT16 BlkSize; - UINT16 LastBlk; - LIST_ENTRY BlkList; + UINT16 BlkSize; + UINT16 LastBlk; + LIST_ENTRY BlkList; - UINT16 Operation; + UINT16 Operation; - UINT16 WindowSize; + UINT16 WindowSize; // // Record the total received and saved block number. // - UINT64 TotalBlock; + UINT64 TotalBlock; // // Record the acked block number. // - UINT64 AckedBlock; - - EFI_IPv6_ADDRESS ServerIp; - UINT16 ServerCmdPort; - UINT16 ServerDataPort; - UDP_IO *UdpIo; - - EFI_IPv6_ADDRESS McastIp; - UINT16 McastPort; - UDP_IO *McastUdpIo; - - NET_BUF *LastPacket; - UINT32 CurRetry; - UINT32 MaxRetry; - UINT32 PacketToLive; - UINT32 Timeout; - - EFI_TPL OldTpl; - BOOLEAN IsTransmitted; - BOOLEAN IsMaster; - BOOLEAN InDestroy; + UINT64 AckedBlock; + + EFI_IPv6_ADDRESS ServerIp; + UINT16 ServerCmdPort; + UINT16 ServerDataPort; + UDP_IO *UdpIo; + + EFI_IPv6_ADDRESS McastIp; + UINT16 McastPort; + UDP_IO *McastUdpIo; + + NET_BUF *LastPacket; + UINT32 CurRetry; + UINT32 MaxRetry; + UINT32 PacketToLive; + UINT32 Timeout; + + EFI_TPL OldTpl; + BOOLEAN IsTransmitted; + BOOLEAN IsMaster; + BOOLEAN InDestroy; }; // // Control block for MTFTP6 service, it's per Nic handle. // struct _MTFTP6_SERVICE { - UINT32 Signature; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - EFI_HANDLE Controller; - EFI_HANDLE Image; + UINT32 Signature; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + EFI_HANDLE Controller; + EFI_HANDLE Image; - UINT16 ChildrenNum; - LIST_ENTRY Children; + UINT16 ChildrenNum; + LIST_ENTRY Children; // // It is used to be as internal calculagraph for all instances. // - EFI_EVENT Timer; + EFI_EVENT Timer; // // It is used to maintain the parent-child relationship between // mtftp driver and udp driver. // - UDP_IO *DummyUdpIo; + UDP_IO *DummyUdpIo; }; typedef struct { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - UINTN NumberOfChildren; - EFI_HANDLE *ChildHandleBuffer; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; } MTFTP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; /** @@ -153,8 +153,8 @@ typedef struct { EFI_STATUS EFIAPI EfiMtftp6GetModeData ( - IN EFI_MTFTP6_PROTOCOL *This, - OUT EFI_MTFTP6_MODE_DATA *ModeData + IN EFI_MTFTP6_PROTOCOL *This, + OUT EFI_MTFTP6_MODE_DATA *ModeData ); /** @@ -198,8 +198,8 @@ EfiMtftp6GetModeData ( EFI_STATUS EFIAPI EfiMtftp6Configure ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_CONFIG_DATA *MtftpConfigData OPTIONAL + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_CONFIG_DATA *MtftpConfigData OPTIONAL ); /** @@ -258,14 +258,14 @@ EfiMtftp6Configure ( EFI_STATUS EFIAPI EfiMtftp6GetInfo ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_OVERRIDE_DATA *OverrideData OPTIONAL, - IN UINT8 *Filename, - IN UINT8 *ModeStr OPTIONAL, - IN UINT8 OptionCount, - IN EFI_MTFTP6_OPTION *OptionList OPTIONAL, - OUT UINT32 *PacketLength, - OUT EFI_MTFTP6_PACKET **Packet OPTIONAL + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_OVERRIDE_DATA *OverrideData OPTIONAL, + IN UINT8 *Filename, + IN UINT8 *ModeStr OPTIONAL, + IN UINT8 OptionCount, + IN EFI_MTFTP6_OPTION *OptionList OPTIONAL, + OUT UINT32 *PacketLength, + OUT EFI_MTFTP6_PACKET **Packet OPTIONAL ); /** @@ -301,11 +301,11 @@ EfiMtftp6GetInfo ( EFI_STATUS EFIAPI EfiMtftp6ParseOptions ( - IN EFI_MTFTP6_PROTOCOL *This, - IN UINT32 PacketLen, - IN EFI_MTFTP6_PACKET *Packet, - OUT UINT32 *OptionCount, - OUT EFI_MTFTP6_OPTION **OptionList OPTIONAL + IN EFI_MTFTP6_PROTOCOL *This, + IN UINT32 PacketLen, + IN EFI_MTFTP6_PACKET *Packet, + OUT UINT32 *OptionCount, + OUT EFI_MTFTP6_OPTION **OptionList OPTIONAL ); /** @@ -351,8 +351,8 @@ EfiMtftp6ParseOptions ( EFI_STATUS EFIAPI EfiMtftp6ReadFile ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token ); /** @@ -400,8 +400,8 @@ EfiMtftp6ReadFile ( EFI_STATUS EFIAPI EfiMtftp6WriteFile ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token ); /** @@ -447,8 +447,8 @@ EfiMtftp6WriteFile ( EFI_STATUS EFIAPI EfiMtftp6ReadDirectory ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token ); /** @@ -478,7 +478,7 @@ EfiMtftp6ReadDirectory ( EFI_STATUS EFIAPI EfiMtftp6Poll ( - IN EFI_MTFTP6_PROTOCOL *This + IN EFI_MTFTP6_PROTOCOL *This ); #endif diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Option.c b/NetworkPkg/Mtftp6Dxe/Mtftp6Option.c index 16e622c65a..398514dd66 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Option.c +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Option.c @@ -9,7 +9,7 @@ #include "Mtftp6Impl.h" -CHAR8 *mMtftp6SupportedOptions[MTFTP6_SUPPORTED_OPTIONS_NUM] = { +CHAR8 *mMtftp6SupportedOptions[MTFTP6_SUPPORTED_OPTIONS_NUM] = { "blksize", "windowsize", "timeout", @@ -17,7 +17,6 @@ CHAR8 *mMtftp6SupportedOptions[MTFTP6_SUPPORTED_OPTIONS_NUM] = { "multicast" }; - /** Parse the NULL terminated ASCII string of multicast option. @@ -32,25 +31,23 @@ CHAR8 *mMtftp6SupportedOptions[MTFTP6_SUPPORTED_OPTIONS_NUM] = { **/ EFI_STATUS Mtftp6ParseMcastOption ( - IN UINT8 *Str, - IN MTFTP6_EXT_OPTION_INFO *ExtInfo + IN UINT8 *Str, + IN MTFTP6_EXT_OPTION_INFO *ExtInfo ) { - EFI_STATUS Status; - UINT32 Num; - CHAR8 *Ip6Str; - CHAR8 *TempStr; + EFI_STATUS Status; + UINT32 Num; + CHAR8 *Ip6Str; + CHAR8 *TempStr; // // The multicast option is formatted like "addr,port,mc" // The server can also omit the ip and port, use ",,1" // if (*Str == ',') { - ZeroMem (&ExtInfo->McastIp, sizeof (EFI_IPv6_ADDRESS)); } else { - - Ip6Str = (CHAR8 *) AllocateCopyPool (AsciiStrSize ((CHAR8 *) Str), Str); + Ip6Str = (CHAR8 *)AllocateCopyPool (AsciiStrSize ((CHAR8 *)Str), Str); if (Ip6Str == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -88,17 +85,15 @@ Mtftp6ParseMcastOption ( // empty string. such as the port in ",,1" // if (*Str == ',') { - ExtInfo->McastPort = 0; } else { - - Num = (UINT32) AsciiStrDecimalToUintn ((CHAR8 *) Str); + Num = (UINT32)AsciiStrDecimalToUintn ((CHAR8 *)Str); if (Num > 65535) { return EFI_INVALID_PARAMETER; } - ExtInfo->McastPort = (UINT16) Num; + ExtInfo->McastPort = (UINT16)Num; while (NET_IS_DIGIT (*Str)) { Str++; @@ -114,13 +109,13 @@ Mtftp6ParseMcastOption ( // // Check the master/slave setting, 1 for master, 0 for slave. // - Num = (UINT32) AsciiStrDecimalToUintn ((CHAR8 *) Str); + Num = (UINT32)AsciiStrDecimalToUintn ((CHAR8 *)Str); - if (Num != 0 && Num != 1) { + if ((Num != 0) && (Num != 1)) { return EFI_INVALID_PARAMETER; } - ExtInfo->IsMaster = (BOOLEAN) (Num == 1); + ExtInfo->IsMaster = (BOOLEAN)(Num == 1); while (NET_IS_DIGIT (*Str)) { Str++; @@ -133,7 +128,6 @@ Mtftp6ParseMcastOption ( return EFI_SUCCESS; } - /** Parse the MTFTP6 extension options. @@ -151,81 +145,74 @@ Mtftp6ParseMcastOption ( **/ EFI_STATUS Mtftp6ParseExtensionOption ( - IN EFI_MTFTP6_OPTION *Options, - IN UINT32 Count, - IN BOOLEAN IsRequest, - IN UINT16 Operation, - IN MTFTP6_EXT_OPTION_INFO *ExtInfo + IN EFI_MTFTP6_OPTION *Options, + IN UINT32 Count, + IN BOOLEAN IsRequest, + IN UINT16 Operation, + IN MTFTP6_EXT_OPTION_INFO *ExtInfo ) { - EFI_STATUS Status; - EFI_MTFTP6_OPTION *Opt; - UINT32 Index; - UINT32 Value; + EFI_STATUS Status; + EFI_MTFTP6_OPTION *Opt; + UINT32 Index; + UINT32 Value; ExtInfo->BitMap = 0; for (Index = 0; Index < Count; Index++) { - Opt = Options + Index; - if (Opt->OptionStr == NULL || Opt->ValueStr == NULL) { + if ((Opt->OptionStr == NULL) || (Opt->ValueStr == NULL)) { return EFI_INVALID_PARAMETER; } - if (AsciiStriCmp ((CHAR8 *) Opt->OptionStr, "blksize") == 0) { + if (AsciiStriCmp ((CHAR8 *)Opt->OptionStr, "blksize") == 0) { // // block size option, valid value is between [8, 65464] // - Value = (UINT32) AsciiStrDecimalToUintn ((CHAR8 *) Opt->ValueStr); + Value = (UINT32)AsciiStrDecimalToUintn ((CHAR8 *)Opt->ValueStr); if ((Value < 8) || (Value > 65464)) { return EFI_INVALID_PARAMETER; } - ExtInfo->BlkSize = (UINT16) Value; + ExtInfo->BlkSize = (UINT16)Value; ExtInfo->BitMap |= MTFTP6_OPT_BLKSIZE_BIT; - - } else if (AsciiStriCmp ((CHAR8 *) Opt->OptionStr, "timeout") == 0) { + } else if (AsciiStriCmp ((CHAR8 *)Opt->OptionStr, "timeout") == 0) { // // timeout option, valid value is between [1, 255] // - Value = (UINT32) AsciiStrDecimalToUintn ((CHAR8 *) Opt->ValueStr); + Value = (UINT32)AsciiStrDecimalToUintn ((CHAR8 *)Opt->ValueStr); - if (Value < 1 || Value > 255) { + if ((Value < 1) || (Value > 255)) { return EFI_INVALID_PARAMETER; } - ExtInfo->Timeout = (UINT8) Value; + ExtInfo->Timeout = (UINT8)Value; ExtInfo->BitMap |= MTFTP6_OPT_TIMEOUT_BIT; - - } else if (AsciiStriCmp ((CHAR8 *) Opt->OptionStr, "tsize") == 0) { + } else if (AsciiStriCmp ((CHAR8 *)Opt->OptionStr, "tsize") == 0) { // // tsize option, the biggest transfer supported is 4GB with block size option // - ExtInfo->Tsize = (UINT32) AsciiStrDecimalToUintn ((CHAR8 *) Opt->ValueStr); + ExtInfo->Tsize = (UINT32)AsciiStrDecimalToUintn ((CHAR8 *)Opt->ValueStr); ExtInfo->BitMap |= MTFTP6_OPT_TSIZE_BIT; - - } else if (AsciiStriCmp ((CHAR8 *) Opt->OptionStr, "multicast") == 0) { + } else if (AsciiStriCmp ((CHAR8 *)Opt->OptionStr, "multicast") == 0) { // // Multicast option, if it is a request, the value must be a zero string, // otherwise, it must be like "addr,port,mc" string, mc indicates master. // if (!IsRequest) { - Status = Mtftp6ParseMcastOption (Opt->ValueStr, ExtInfo); if (EFI_ERROR (Status)) { return Status; } } else if (*(Opt->ValueStr) != '\0') { - return EFI_INVALID_PARAMETER; } ExtInfo->BitMap |= MTFTP6_OPT_MCAST_BIT; - - } else if (AsciiStriCmp ((CHAR8 *) Opt->OptionStr, "windowsize") == 0) { + } else if (AsciiStriCmp ((CHAR8 *)Opt->OptionStr, "windowsize") == 0) { if (Operation == EFI_MTFTP6_OPCODE_WRQ) { // // Currently, windowsize is not supported in the write operation. @@ -233,15 +220,14 @@ Mtftp6ParseExtensionOption ( return EFI_UNSUPPORTED; } - Value = (UINT32) AsciiStrDecimalToUintn ((CHAR8 *) Opt->ValueStr); + Value = (UINT32)AsciiStrDecimalToUintn ((CHAR8 *)Opt->ValueStr); if ((Value < 1)) { return EFI_INVALID_PARAMETER; } - ExtInfo->WindowSize = (UINT16) Value; - ExtInfo->BitMap |= MTFTP6_OPT_WINDOWSIZE_BIT; - + ExtInfo->WindowSize = (UINT16)Value; + ExtInfo->BitMap |= MTFTP6_OPT_WINDOWSIZE_BIT; } else if (IsRequest) { // // If it's a request, unsupported; else if it's a reply, ignore. @@ -253,7 +239,6 @@ Mtftp6ParseExtensionOption ( return EFI_SUCCESS; } - /** Go through the packet to fill the options array with the start addresses of each MTFTP option name/value pair. @@ -273,21 +258,21 @@ Mtftp6ParseExtensionOption ( **/ EFI_STATUS Mtftp6ParsePacketOption ( - IN EFI_MTFTP6_PACKET *Packet, - IN UINT32 PacketLen, - IN OUT UINT32 *Count, - IN EFI_MTFTP6_OPTION *Options OPTIONAL + IN EFI_MTFTP6_PACKET *Packet, + IN UINT32 PacketLen, + IN OUT UINT32 *Count, + IN EFI_MTFTP6_OPTION *Options OPTIONAL ) { - UINT8 *Cur; - UINT8 *Last; - UINT8 Num; - UINT8 *Name; - UINT8 *Value; + UINT8 *Cur; + UINT8 *Last; + UINT8 Num; + UINT8 *Name; + UINT8 *Value; - Num = 0; - Cur = (UINT8 *) Packet + MTFTP6_OPCODE_LEN; - Last = (UINT8 *) Packet + PacketLen - 1; + Num = 0; + Cur = (UINT8 *)Packet + MTFTP6_OPCODE_LEN; + Last = (UINT8 *)Packet + PacketLen - 1; // // process option name and value pairs. @@ -312,9 +297,9 @@ Mtftp6ParsePacketOption ( Num++; - if (Options != NULL && Num <= *Count) { - Options[Num - 1].OptionStr = Name; - Options[Num - 1].ValueStr = Value; + if ((Options != NULL) && (Num <= *Count)) { + Options[Num - 1].OptionStr = Name; + Options[Num - 1].ValueStr = Value; } Cur++; @@ -323,7 +308,7 @@ Mtftp6ParsePacketOption ( // // Return buffer too small if the buffer passed-in isn't enough. // - if (*Count < Num || Options == NULL) { + if ((*Count < Num) || (Options == NULL)) { *Count = Num; return EFI_BUFFER_TOO_SMALL; } @@ -332,7 +317,6 @@ Mtftp6ParsePacketOption ( return EFI_SUCCESS; } - /** Go through the packet, generate option list array and fill it by the result of parse options. @@ -354,15 +338,15 @@ Mtftp6ParsePacketOption ( **/ EFI_STATUS Mtftp6ParseStart ( - IN EFI_MTFTP6_PACKET *Packet, - IN UINT32 PacketLen, - IN OUT UINT32 *OptionCount, - OUT EFI_MTFTP6_OPTION **OptionList OPTIONAL + IN EFI_MTFTP6_PACKET *Packet, + IN UINT32 PacketLen, + IN OUT UINT32 *OptionCount, + OUT EFI_MTFTP6_OPTION **OptionList OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; - if (PacketLen == 0 || Packet == NULL || OptionCount == NULL) { + if ((PacketLen == 0) || (Packet == NULL) || (OptionCount == NULL)) { return EFI_INVALID_PARAMETER; } @@ -379,7 +363,7 @@ Mtftp6ParseStart ( // // The last byte must be zero to terminate the options. // - if (*((UINT8 *) Packet + PacketLen - 1) != 0) { + if (*((UINT8 *)Packet + PacketLen - 1) != 0) { return EFI_PROTOCOL_ERROR; } diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Option.h b/NetworkPkg/Mtftp6Dxe/Mtftp6Option.h index ad12a7e4d0..fda9554dcd 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Option.h +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Option.h @@ -29,23 +29,23 @@ // // The bit map definition for Mtftp6 extension options. // -#define MTFTP6_OPT_BLKSIZE_BIT 0x01 -#define MTFTP6_OPT_TIMEOUT_BIT 0x02 -#define MTFTP6_OPT_TSIZE_BIT 0x04 -#define MTFTP6_OPT_MCAST_BIT 0x08 -#define MTFTP6_OPT_WINDOWSIZE_BIT 0X10 +#define MTFTP6_OPT_BLKSIZE_BIT 0x01 +#define MTFTP6_OPT_TIMEOUT_BIT 0x02 +#define MTFTP6_OPT_TSIZE_BIT 0x04 +#define MTFTP6_OPT_MCAST_BIT 0x08 +#define MTFTP6_OPT_WINDOWSIZE_BIT 0X10 -extern CHAR8 *mMtftp6SupportedOptions[MTFTP6_SUPPORTED_OPTIONS_NUM]; +extern CHAR8 *mMtftp6SupportedOptions[MTFTP6_SUPPORTED_OPTIONS_NUM]; typedef struct { - UINT16 BlkSize; - UINT16 WindowSize; - UINT8 Timeout; - UINT32 Tsize; - EFI_IPv6_ADDRESS McastIp; - UINT16 McastPort; - BOOLEAN IsMaster; - UINT32 BitMap; + UINT16 BlkSize; + UINT16 WindowSize; + UINT8 Timeout; + UINT32 Tsize; + EFI_IPv6_ADDRESS McastIp; + UINT16 McastPort; + BOOLEAN IsMaster; + UINT32 BitMap; } MTFTP6_EXT_OPTION_INFO; /** @@ -60,11 +60,10 @@ typedef struct { **/ EFI_STATUS Mtftp6ParseMcastOption ( - IN UINT8 *Str, - IN MTFTP6_EXT_OPTION_INFO *ExtInfo + IN UINT8 *Str, + IN MTFTP6_EXT_OPTION_INFO *ExtInfo ); - /** Parse the MTFTP6 extension options. @@ -82,14 +81,13 @@ Mtftp6ParseMcastOption ( **/ EFI_STATUS Mtftp6ParseExtensionOption ( - IN EFI_MTFTP6_OPTION *Options, - IN UINT32 Count, - IN BOOLEAN IsRequest, - IN UINT16 Operation, - IN MTFTP6_EXT_OPTION_INFO *ExtInfo + IN EFI_MTFTP6_OPTION *Options, + IN UINT32 Count, + IN BOOLEAN IsRequest, + IN UINT16 Operation, + IN MTFTP6_EXT_OPTION_INFO *ExtInfo ); - /** Go through the packet to fill the options array with the start addresses of each MTFTP option name/value pair. @@ -109,13 +107,12 @@ Mtftp6ParseExtensionOption ( **/ EFI_STATUS Mtftp6ParsePacketOption ( - IN EFI_MTFTP6_PACKET *Packet, - IN UINT32 PacketLen, - IN OUT UINT32 *Count, - IN EFI_MTFTP6_OPTION *Options OPTIONAL + IN EFI_MTFTP6_PACKET *Packet, + IN UINT32 PacketLen, + IN OUT UINT32 *Count, + IN EFI_MTFTP6_OPTION *Options OPTIONAL ); - /** Go through the packet, generate option list array and fill it by the result of parse options. @@ -137,10 +134,10 @@ Mtftp6ParsePacketOption ( **/ EFI_STATUS Mtftp6ParseStart ( - IN EFI_MTFTP6_PACKET *Packet, - IN UINT32 PacketLen, - IN OUT UINT32 *OptionCount, - OUT EFI_MTFTP6_OPTION **OptionList OPTIONAL + IN EFI_MTFTP6_PACKET *Packet, + IN UINT32 PacketLen, + IN OUT UINT32 *OptionCount, + OUT EFI_MTFTP6_OPTION **OptionList OPTIONAL ); #endif diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c b/NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c index 4935933f23..32327de69e 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c @@ -9,7 +9,6 @@ #include "Mtftp6Impl.h" - /** Build and send a ACK packet for download. @@ -23,13 +22,13 @@ **/ EFI_STATUS Mtftp6RrqSendAck ( - IN MTFTP6_INSTANCE *Instance, - IN UINT16 BlockNum + IN MTFTP6_INSTANCE *Instance, + IN UINT16 BlockNum ) { - EFI_MTFTP6_PACKET *Ack; - NET_BUF *Packet; - EFI_STATUS Status; + EFI_MTFTP6_PACKET *Ack; + NET_BUF *Packet; + EFI_STATUS Status; Status = EFI_SUCCESS; @@ -42,20 +41,20 @@ Mtftp6RrqSendAck ( return EFI_OUT_OF_RESOURCES; } - Ack = (EFI_MTFTP6_PACKET *) NetbufAllocSpace ( - Packet, - sizeof (EFI_MTFTP6_ACK_HEADER), - FALSE - ); + Ack = (EFI_MTFTP6_PACKET *)NetbufAllocSpace ( + Packet, + sizeof (EFI_MTFTP6_ACK_HEADER), + FALSE + ); ASSERT (Ack != NULL); - Ack->Ack.OpCode = HTONS (EFI_MTFTP6_OPCODE_ACK); - Ack->Ack.Block[0] = HTONS (BlockNum); + Ack->Ack.OpCode = HTONS (EFI_MTFTP6_OPCODE_ACK); + Ack->Ack.Block[0] = HTONS (BlockNum); // // Reset current retry count of the instance. // - Instance->CurRetry = 0; + Instance->CurRetry = 0; Instance->LastPacket = Packet; Status = Mtftp6TransmitPacket (Instance, Packet); @@ -66,7 +65,6 @@ Mtftp6RrqSendAck ( return Status; } - /** Deliver the received data block to the user, which can be saved in the user provide buffer or through the CheckPacket callback. @@ -85,19 +83,19 @@ Mtftp6RrqSendAck ( **/ EFI_STATUS Mtftp6RrqSaveBlock ( - IN MTFTP6_INSTANCE *Instance, - IN EFI_MTFTP6_PACKET *Packet, - IN UINT32 Len, - OUT NET_BUF **UdpPacket + IN MTFTP6_INSTANCE *Instance, + IN EFI_MTFTP6_PACKET *Packet, + IN UINT32 Len, + OUT NET_BUF **UdpPacket ) { - EFI_MTFTP6_TOKEN *Token; - EFI_STATUS Status; - UINT16 Block; - UINT64 Start; - UINT32 DataLen; - UINT64 BlockCounter; - BOOLEAN Completed; + EFI_MTFTP6_TOKEN *Token; + EFI_STATUS Status; + UINT16 Block; + UINT64 Start; + UINT32 DataLen; + UINT64 BlockCounter; + BOOLEAN Completed; Completed = FALSE; Token = Instance->Token; @@ -108,7 +106,7 @@ Mtftp6RrqSaveBlock ( // This is the last block, save the block num // if (DataLen < Instance->BlkSize) { - Completed = TRUE; + Completed = TRUE; Instance->LastBlk = Block; Mtftp6SetLastBlockNum (&Instance->BlkList, Block); } @@ -132,7 +130,7 @@ Mtftp6RrqSaveBlock ( // // Callback to the check packet routine with the received packet. // - Status = Token->CheckPacket (&Instance->Mtftp6, Token, (UINT16) Len, Packet); + Status = Token->CheckPacket (&Instance->Mtftp6, Token, (UINT16)Len, Packet); if (EFI_ERROR (Status)) { // @@ -147,7 +145,7 @@ Mtftp6RrqSaveBlock ( Mtftp6SendError ( Instance, EFI_MTFTP6_ERRORCODE_ILLEGAL_OPERATION, - (UINT8 *) "User aborted download" + (UINT8 *)"User aborted download" ); return EFI_ABORTED; @@ -155,10 +153,9 @@ Mtftp6RrqSaveBlock ( } if (Token->Buffer != NULL) { - Start = MultU64x32 (BlockCounter - 1, Instance->BlkSize); if (Start + DataLen <= Token->BufferSize) { - CopyMem ((UINT8 *) Token->Buffer + Start, Packet->Data.Data, DataLen); + CopyMem ((UINT8 *)Token->Buffer + Start, Packet->Data.Data, DataLen); // // Update the file size when received the last block // @@ -185,7 +182,7 @@ Mtftp6RrqSaveBlock ( Mtftp6SendError ( Instance, EFI_MTFTP6_ERRORCODE_DISK_FULL, - (UINT8 *) "User provided memory block is too small" + (UINT8 *)"User provided memory block is too small" ); return EFI_BUFFER_TOO_SMALL; @@ -195,7 +192,6 @@ Mtftp6RrqSaveBlock ( return EFI_SUCCESS; } - /** Process the received data packets. It will save the block then send back an ACK if it is active. @@ -214,16 +210,16 @@ Mtftp6RrqSaveBlock ( **/ EFI_STATUS Mtftp6RrqHandleData ( - IN MTFTP6_INSTANCE *Instance, - IN EFI_MTFTP6_PACKET *Packet, - IN UINT32 Len, - OUT NET_BUF **UdpPacket, - OUT BOOLEAN *IsCompleted + IN MTFTP6_INSTANCE *Instance, + IN EFI_MTFTP6_PACKET *Packet, + IN UINT32 Len, + OUT NET_BUF **UdpPacket, + OUT BOOLEAN *IsCompleted ) { - EFI_STATUS Status; - UINT16 BlockNum; - INTN Expected; + EFI_STATUS Status; + UINT16 BlockNum; + INTN Expected; *IsCompleted = FALSE; Status = EFI_SUCCESS; @@ -248,7 +244,7 @@ Mtftp6RrqHandleData ( // // If Expected is 0, (UINT16) (Expected - 1) is also the expected Ack number (65535). // - return Mtftp6RrqSendAck (Instance, (UINT16) (Expected - 1)); + return Mtftp6RrqSendAck (Instance, (UINT16)(Expected - 1)); } Status = Mtftp6RrqSaveBlock (Instance, Packet, Len, UdpPacket); @@ -260,7 +256,7 @@ Mtftp6RrqHandleData ( // // Record the total received and saved block number. // - Instance->TotalBlock ++; + Instance->TotalBlock++; // // Reset the passive client's timer whenever it received a valid data packet. @@ -277,7 +273,7 @@ Mtftp6RrqHandleData ( // Expected = Mtftp6GetNextBlockNum (&Instance->BlkList); - if (Instance->IsMaster || Expected < 0) { + if (Instance->IsMaster || (Expected < 0)) { if (Expected < 0) { // // If we are passive client, then the just received Block maybe @@ -287,10 +283,10 @@ Mtftp6RrqHandleData ( // BlockNum = Instance->LastBlk; *IsCompleted = TRUE; - } else { - BlockNum = (UINT16) (Expected - 1); + BlockNum = (UINT16)(Expected - 1); } + // // Free the received packet before send new packet in ReceiveNotify, // since the udpio might need to be reconfigured. @@ -298,7 +294,7 @@ Mtftp6RrqHandleData ( NetbufFree (*UdpPacket); *UdpPacket = NULL; - if (Instance->WindowSize == (Instance->TotalBlock - Instance->AckedBlock) || Expected < 0) { + if ((Instance->WindowSize == (Instance->TotalBlock - Instance->AckedBlock)) || (Expected < 0)) { Status = Mtftp6RrqSendAck (Instance, BlockNum); } } @@ -306,7 +302,6 @@ Mtftp6RrqHandleData ( return Status; } - /** Validate whether the options received in the server's OACK packet is valid. The options are valid only if: @@ -325,9 +320,9 @@ Mtftp6RrqHandleData ( **/ BOOLEAN Mtftp6RrqOackValid ( - IN MTFTP6_INSTANCE *Instance, - IN MTFTP6_EXT_OPTION_INFO *ReplyInfo, - IN MTFTP6_EXT_OPTION_INFO *RequestInfo + IN MTFTP6_INSTANCE *Instance, + IN MTFTP6_EXT_OPTION_INFO *ReplyInfo, + IN MTFTP6_EXT_OPTION_INFO *RequestInfo ) { // @@ -344,7 +339,8 @@ Mtftp6RrqOackValid ( if ((((ReplyInfo->BitMap & MTFTP6_OPT_BLKSIZE_BIT) != 0) && (ReplyInfo->BlkSize > RequestInfo->BlkSize)) || (((ReplyInfo->BitMap & MTFTP6_OPT_WINDOWSIZE_BIT) != 0) && (ReplyInfo->BlkSize > RequestInfo->BlkSize)) || (((ReplyInfo->BitMap & MTFTP6_OPT_TIMEOUT_BIT) != 0) && (ReplyInfo->Timeout != RequestInfo->Timeout)) - ) { + ) + { return FALSE; } @@ -354,12 +350,12 @@ Mtftp6RrqOackValid ( // change the setting. // if (((ReplyInfo->BitMap & MTFTP6_OPT_MCAST_BIT) != 0) && !NetIp6IsUnspecifiedAddr (&Instance->McastIp)) { - - if (!NetIp6IsUnspecifiedAddr (&ReplyInfo->McastIp) && CompareMem ( - &ReplyInfo->McastIp, - &Instance->McastIp, - sizeof (EFI_IPv6_ADDRESS) - ) != 0) { + if (!NetIp6IsUnspecifiedAddr (&ReplyInfo->McastIp) && (CompareMem ( + &ReplyInfo->McastIp, + &Instance->McastIp, + sizeof (EFI_IPv6_ADDRESS) + ) != 0)) + { return FALSE; } @@ -371,7 +367,6 @@ Mtftp6RrqOackValid ( return TRUE; } - /** Configure Udp6Io to receive a packet from a multicast address. @@ -385,19 +380,19 @@ Mtftp6RrqOackValid ( EFI_STATUS EFIAPI Mtftp6RrqConfigMcastUdpIo ( - IN UDP_IO *McastIo, - IN VOID *Context + IN UDP_IO *McastIo, + IN VOID *Context ) { - EFI_STATUS Status; - EFI_UDP6_PROTOCOL *Udp6; - EFI_UDP6_CONFIG_DATA *Udp6Cfg; - EFI_IPv6_ADDRESS Group; - MTFTP6_INSTANCE *Instance; + EFI_STATUS Status; + EFI_UDP6_PROTOCOL *Udp6; + EFI_UDP6_CONFIG_DATA *Udp6Cfg; + EFI_IPv6_ADDRESS Group; + MTFTP6_INSTANCE *Instance; Udp6 = McastIo->Protocol.Udp6; Udp6Cfg = &(McastIo->Config.Udp6); - Instance = (MTFTP6_INSTANCE *) Context; + Instance = (MTFTP6_INSTANCE *)Context; // // Set the configure data for the mcast Udp6Io. @@ -437,7 +432,6 @@ Mtftp6RrqConfigMcastUdpIo ( return Udp6->Groups (Udp6, TRUE, &Group); } - /** Process the OACK packet for Rrq. @@ -455,22 +449,22 @@ Mtftp6RrqConfigMcastUdpIo ( **/ EFI_STATUS Mtftp6RrqHandleOack ( - IN MTFTP6_INSTANCE *Instance, - IN EFI_MTFTP6_PACKET *Packet, - IN UINT32 Len, - OUT NET_BUF **UdpPacket, - OUT BOOLEAN *IsCompleted + IN MTFTP6_INSTANCE *Instance, + IN EFI_MTFTP6_PACKET *Packet, + IN UINT32 Len, + OUT NET_BUF **UdpPacket, + OUT BOOLEAN *IsCompleted ) { - EFI_MTFTP6_OPTION *Options; - UINT32 Count; - MTFTP6_EXT_OPTION_INFO ExtInfo; - EFI_STATUS Status; - INTN Expected; - EFI_UDP6_PROTOCOL *Udp6; + EFI_MTFTP6_OPTION *Options; + UINT32 Count; + MTFTP6_EXT_OPTION_INFO ExtInfo; + EFI_STATUS Status; + INTN Expected; + EFI_UDP6_PROTOCOL *Udp6; *IsCompleted = FALSE; - Options = NULL; + Options = NULL; // // If already started the master download, don't change the @@ -479,7 +473,7 @@ Mtftp6RrqHandleOack ( Expected = Mtftp6GetNextBlockNum (&Instance->BlkList); ASSERT (Expected != -1); - if (Instance->IsMaster && Expected != 1) { + if (Instance->IsMaster && (Expected != 1)) { return EFI_SUCCESS; } @@ -493,6 +487,7 @@ Mtftp6RrqHandleOack ( if (EFI_ERROR (Status)) { return Status; } + ASSERT (Options != NULL); // @@ -517,7 +512,7 @@ Mtftp6RrqHandleOack ( Mtftp6SendError ( Instance, EFI_MTFTP6_ERRORCODE_ILLEGAL_OPERATION, - (UINT8 *) "Malformatted OACK packet" + (UINT8 *)"Malformatted OACK packet" ); } @@ -525,7 +520,6 @@ Mtftp6RrqHandleOack ( } if ((ExtInfo.BitMap & MTFTP6_OPT_MCAST_BIT) != 0) { - // // Save the multicast info. Always update the Master, only update the // multicast IP address, block size, window size, timeoute at the first time. If IP @@ -534,7 +528,7 @@ Mtftp6RrqHandleOack ( Instance->IsMaster = ExtInfo.IsMaster; if (NetIp6IsUnspecifiedAddr (&Instance->McastIp)) { - if (NetIp6IsUnspecifiedAddr (&ExtInfo.McastIp) || ExtInfo.McastPort == 0) { + if (NetIp6IsUnspecifiedAddr (&ExtInfo.McastIp) || (ExtInfo.McastPort == 0)) { // // Free the received packet before send new packet in ReceiveNotify, // since the udpio might need to be reconfigured. @@ -547,7 +541,7 @@ Mtftp6RrqHandleOack ( Mtftp6SendError ( Instance, EFI_MTFTP6_ERRORCODE_ILLEGAL_OPERATION, - (UINT8 *) "Illegal multicast setting" + (UINT8 *)"Illegal multicast setting" ); return EFI_TFTP_ERROR; @@ -562,7 +556,7 @@ Mtftp6RrqHandleOack ( sizeof (EFI_IP_ADDRESS) ); - Instance->McastPort = ExtInfo.McastPort; + Instance->McastPort = ExtInfo.McastPort; if (Instance->McastUdpIo == NULL) { Instance->McastUdpIo = UdpIoCreateIo ( Instance->Service->Controller, @@ -575,7 +569,7 @@ Mtftp6RrqHandleOack ( Status = gBS->OpenProtocol ( Instance->McastUdpIo->UdpHandle, &gEfiUdp6ProtocolGuid, - (VOID **) &Udp6, + (VOID **)&Udp6, Instance->Service->Image, Instance->Handle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -612,7 +606,7 @@ Mtftp6RrqHandleOack ( Mtftp6SendError ( Instance, EFI_MTFTP6_ERRORCODE_ACCESS_VIOLATION, - (UINT8 *) "Failed to create socket to receive multicast packet" + (UINT8 *)"Failed to create socket to receive multicast packet" ); return Status; @@ -633,9 +627,7 @@ Mtftp6RrqHandleOack ( Instance->Timeout = ExtInfo.Timeout; } } - } else { - Instance->IsMaster = TRUE; if (ExtInfo.BlkSize != 0) { @@ -661,10 +653,9 @@ Mtftp6RrqHandleOack ( // Send an ACK to (Expected - 1) which is 0 for unicast download, // or tell the server we want to receive the Expected block. // - return Mtftp6RrqSendAck (Instance, (UINT16) (Expected - 1)); + return Mtftp6RrqSendAck (Instance, (UINT16)(Expected - 1)); } - /** The packet process callback for Mtftp6 download. @@ -677,22 +668,22 @@ Mtftp6RrqHandleOack ( VOID EFIAPI Mtftp6RrqInput ( - IN NET_BUF *UdpPacket, - IN UDP_END_POINT *UdpEpt, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *UdpPacket, + IN UDP_END_POINT *UdpEpt, + IN EFI_STATUS IoStatus, + IN VOID *Context ) { - MTFTP6_INSTANCE *Instance; - EFI_MTFTP6_PACKET *Packet; - BOOLEAN IsCompleted; - BOOLEAN IsMcast; - EFI_STATUS Status; - UINT16 Opcode; - UINT32 TotalNum; - UINT32 Len; + MTFTP6_INSTANCE *Instance; + EFI_MTFTP6_PACKET *Packet; + BOOLEAN IsCompleted; + BOOLEAN IsMcast; + EFI_STATUS Status; + UINT16 Opcode; + UINT32 TotalNum; + UINT32 Len; - Instance = (MTFTP6_INSTANCE *) Context; + Instance = (MTFTP6_INSTANCE *)Context; NET_CHECK_SIGNATURE (Instance, MTFTP6_INSTANCE_SIGNATURE); @@ -723,7 +714,8 @@ Mtftp6RrqInput ( Ip6Swap128 (&UdpEpt->LocalAddr.v6), &Instance->McastIp, sizeof (EFI_IPv6_ADDRESS) - ) == 0) { + ) == 0) + { IsMcast = TRUE; } else { IsMcast = FALSE; @@ -763,10 +755,9 @@ Mtftp6RrqInput ( goto ON_EXIT; } - NetbufCopy (UdpPacket, 0, Len, (UINT8 *) Packet); - + NetbufCopy (UdpPacket, 0, Len, (UINT8 *)Packet); } else { - Packet = (EFI_MTFTP6_PACKET *) NetbufGetByte (UdpPacket, 0, NULL); + Packet = (EFI_MTFTP6_PACKET *)NetbufGetByte (UdpPacket, 0, NULL); ASSERT (Packet != NULL); } @@ -777,13 +768,13 @@ Mtftp6RrqInput ( // if CheckPacket returns an EFI_ERROR code. // if ((Instance->Token->CheckPacket != NULL) && - (Opcode == EFI_MTFTP6_OPCODE_OACK || Opcode == EFI_MTFTP6_OPCODE_ERROR) - ) { - + ((Opcode == EFI_MTFTP6_OPCODE_OACK) || (Opcode == EFI_MTFTP6_OPCODE_ERROR)) + ) + { Status = Instance->Token->CheckPacket ( &Instance->Mtftp6, Instance->Token, - (UINT16) Len, + (UINT16)Len, Packet ); @@ -804,7 +795,7 @@ Mtftp6RrqInput ( Mtftp6SendError ( Instance, EFI_MTFTP6_ERRORCODE_REQUEST_DENIED, - (UINT8 *) "User aborted the transfer" + (UINT8 *)"User aborted the transfer" ); } @@ -817,44 +808,46 @@ Mtftp6RrqInput ( // Switch the process routines by the operation code. // switch (Opcode) { - case EFI_MTFTP6_OPCODE_DATA: - if ((Len > (UINT32) (MTFTP6_DATA_HEAD_LEN + Instance->BlkSize)) || (Len < (UINT32) MTFTP6_DATA_HEAD_LEN)) { - goto ON_EXIT; - } - // - // Handle the data packet of Rrq. - // - Status = Mtftp6RrqHandleData ( - Instance, - Packet, - Len, - &UdpPacket, - &IsCompleted - ); - break; - - case EFI_MTFTP6_OPCODE_OACK: - if (IsMcast || Len <= MTFTP6_OPCODE_LEN) { - goto ON_EXIT; - } - // - // Handle the Oack packet of Rrq. - // - Status = Mtftp6RrqHandleOack ( - Instance, - Packet, - Len, - &UdpPacket, - &IsCompleted - ); - break; - - default: - // - // Drop and return error if received error message. - // - Status = EFI_TFTP_ERROR; - break; + case EFI_MTFTP6_OPCODE_DATA: + if ((Len > (UINT32)(MTFTP6_DATA_HEAD_LEN + Instance->BlkSize)) || (Len < (UINT32)MTFTP6_DATA_HEAD_LEN)) { + goto ON_EXIT; + } + + // + // Handle the data packet of Rrq. + // + Status = Mtftp6RrqHandleData ( + Instance, + Packet, + Len, + &UdpPacket, + &IsCompleted + ); + break; + + case EFI_MTFTP6_OPCODE_OACK: + if (IsMcast || (Len <= MTFTP6_OPCODE_LEN)) { + goto ON_EXIT; + } + + // + // Handle the Oack packet of Rrq. + // + Status = Mtftp6RrqHandleOack ( + Instance, + Packet, + Len, + &UdpPacket, + &IsCompleted + ); + break; + + default: + // + // Drop and return error if received error message. + // + Status = EFI_TFTP_ERROR; + break; } ON_EXIT: @@ -862,12 +855,14 @@ ON_EXIT: // Free the resources, then if !EFI_ERROR (Status), restart the // receive, otherwise end the session. // - if (Packet != NULL && TotalNum > 1) { + if ((Packet != NULL) && (TotalNum > 1)) { FreePool (Packet); } + if (UdpPacket != NULL) { NetbufFree (UdpPacket); } + if (!EFI_ERROR (Status) && !IsCompleted) { if (IsMcast) { Status = UdpIoRecvDatagram ( @@ -885,6 +880,7 @@ ON_EXIT: ); } } + // // Clean up the current session if failed to continue. // @@ -893,7 +889,6 @@ ON_EXIT: } } - /** Start the Mtftp6 instance to download. It first initializes some of the internal states, then builds and sends an RRQ request packet. @@ -908,11 +903,11 @@ ON_EXIT: **/ EFI_STATUS Mtftp6RrqStart ( - IN MTFTP6_INSTANCE *Instance, - IN UINT16 Operation + IN MTFTP6_INSTANCE *Instance, + IN UINT16 Operation ) { - EFI_STATUS Status; + EFI_STATUS Status; // // The valid block number range are [1, 0xffff]. For example: @@ -939,4 +934,3 @@ Mtftp6RrqStart ( 0 ); } - diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Support.c b/NetworkPkg/Mtftp6Dxe/Mtftp6Support.c index 1157a6065c..582634fb2d 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Support.c +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Support.c @@ -9,7 +9,6 @@ #include "Mtftp6Impl.h" - /** Allocate a MTFTP block range, then init it to the range of [Start, End]. @@ -21,11 +20,11 @@ **/ MTFTP6_BLOCK_RANGE * Mtftp6AllocateRange ( - IN UINT16 Start, - IN UINT16 End + IN UINT16 Start, + IN UINT16 End ) { - MTFTP6_BLOCK_RANGE *Range; + MTFTP6_BLOCK_RANGE *Range; Range = AllocateZeroPool (sizeof (MTFTP6_BLOCK_RANGE)); @@ -34,14 +33,13 @@ Mtftp6AllocateRange ( } InitializeListHead (&Range->Link); - Range->Start = Start; - Range->End = End; - Range->Bound = End; + Range->Start = Start; + Range->End = End; + Range->Bound = End; return Range; } - /** Initialize the block range for either RRQ or WRQ. RRQ and WRQ have different requirements for Start and End. For example, during startup, @@ -64,12 +62,12 @@ Mtftp6AllocateRange ( **/ EFI_STATUS Mtftp6InitBlockRange ( - IN LIST_ENTRY *Head, - IN UINT16 Start, - IN UINT16 End + IN LIST_ENTRY *Head, + IN UINT16 Start, + IN UINT16 End ) { - MTFTP6_BLOCK_RANGE *Range; + MTFTP6_BLOCK_RANGE *Range; Range = Mtftp6AllocateRange (Start, End); @@ -81,7 +79,6 @@ Mtftp6InitBlockRange ( return EFI_SUCCESS; } - /** Get the first valid block number on the range list. @@ -93,7 +90,7 @@ Mtftp6InitBlockRange ( **/ INTN Mtftp6GetNextBlockNum ( - IN LIST_ENTRY *Head + IN LIST_ENTRY *Head ) { MTFTP6_BLOCK_RANGE *Range; @@ -106,7 +103,6 @@ Mtftp6GetNextBlockNum ( return Range->Start; } - /** Set the last block number of the block range list. It removes all the blocks after the Last. MTFTP initialize the @@ -120,11 +116,11 @@ Mtftp6GetNextBlockNum ( **/ VOID Mtftp6SetLastBlockNum ( - IN LIST_ENTRY *Head, - IN UINT16 Last + IN LIST_ENTRY *Head, + IN UINT16 Last ) { - MTFTP6_BLOCK_RANGE *Range; + MTFTP6_BLOCK_RANGE *Range; // // Iterate from the tail to head to remove the block number @@ -142,11 +138,11 @@ Mtftp6SetLastBlockNum ( if (Range->End > Last) { Range->End = Last; } - return ; + + return; } } - /** Remove the block number from the block range list. @@ -162,18 +158,17 @@ Mtftp6SetLastBlockNum ( **/ EFI_STATUS Mtftp6RemoveBlockNum ( - IN LIST_ENTRY *Head, - IN UINT16 Num, - IN BOOLEAN Completed, - OUT UINT64 *BlockCounter + IN LIST_ENTRY *Head, + IN UINT16 Num, + IN BOOLEAN Completed, + OUT UINT64 *BlockCounter ) { - MTFTP6_BLOCK_RANGE *Range; - MTFTP6_BLOCK_RANGE *NewRange; - LIST_ENTRY *Entry; + MTFTP6_BLOCK_RANGE *Range; + MTFTP6_BLOCK_RANGE *NewRange; + LIST_ENTRY *Entry; NET_LIST_FOR_EACH (Entry, Head) { - // // Each block represents a hole [Start, End] in the file, // skip to the first range with End >= Num @@ -202,7 +197,6 @@ Mtftp6RemoveBlockNum ( // if (Range->Start > Num) { return EFI_NOT_FOUND; - } else if (Range->Start == Num) { Range->Start++; @@ -214,7 +208,7 @@ Mtftp6RemoveBlockNum ( // wrap to zero, because this is the simplest to implement. Here we choose // this solution. // - *BlockCounter = Num; + *BlockCounter = Num; if (Range->Round > 0) { *BlockCounter += Range->Bound + MultU64x32 (Range->Round - 1, (UINT32)(Range->Bound + 1)) + 1; @@ -222,7 +216,7 @@ Mtftp6RemoveBlockNum ( if (Range->Start > Range->Bound) { Range->Start = 0; - Range->Round ++; + Range->Round++; } if ((Range->Start > Range->End) || Completed) { @@ -231,12 +225,11 @@ Mtftp6RemoveBlockNum ( } return EFI_SUCCESS; - } else { if (Range->End == Num) { Range->End--; } else { - NewRange = Mtftp6AllocateRange ((UINT16) (Num + 1), (UINT16) Range->End); + NewRange = Mtftp6AllocateRange ((UINT16)(Num + 1), (UINT16)Range->End); if (NewRange == NULL) { return EFI_OUT_OF_RESOURCES; @@ -253,7 +246,6 @@ Mtftp6RemoveBlockNum ( return EFI_NOT_FOUND; } - /** Configure the opened Udp6 instance until the corresponding Ip6 instance has been configured. @@ -268,17 +260,17 @@ Mtftp6RemoveBlockNum ( **/ EFI_STATUS Mtftp6GetMapping ( - IN UDP_IO *UdpIo, - IN EFI_UDP6_CONFIG_DATA *UdpCfgData + IN UDP_IO *UdpIo, + IN EFI_UDP6_CONFIG_DATA *UdpCfgData ) { - EFI_IP6_MODE_DATA Ip6Mode; - EFI_UDP6_PROTOCOL *Udp6; - EFI_STATUS Status; - EFI_EVENT Event; + EFI_IP6_MODE_DATA Ip6Mode; + EFI_UDP6_PROTOCOL *Udp6; + EFI_STATUS Status; + EFI_EVENT Event; - Event = NULL; - Udp6 = UdpIo->Protocol.Udp6; + Event = NULL; + Udp6 = UdpIo->Protocol.Udp6; // // Create a timer to check whether the Ip6 instance configured or not. @@ -307,7 +299,6 @@ Mtftp6GetMapping ( // Check the Ip6 mode data till timeout. // while (EFI_ERROR (gBS->CheckEvent (Event))) { - Udp6->Poll (Udp6); Status = Udp6->GetModeData (Udp6, NULL, &Ip6Mode, NULL, NULL); @@ -337,7 +328,7 @@ Mtftp6GetMapping ( FreePool (Ip6Mode.IcmpTypeList); } - if (Ip6Mode.IsConfigured) { + if (Ip6Mode.IsConfigured) { // // Continue to configure the Udp6 instance. // @@ -357,7 +348,6 @@ ON_EXIT: return Status; } - /** The dummy configure routine for create a new Udp6 Io. @@ -370,14 +360,13 @@ ON_EXIT: EFI_STATUS EFIAPI Mtftp6ConfigDummyUdpIo ( - IN UDP_IO *UdpIo, - IN VOID *Context + IN UDP_IO *UdpIo, + IN VOID *Context ) { return EFI_SUCCESS; } - /** The configure routine for Mtftp6 instance to transmit/receive. @@ -394,16 +383,16 @@ Mtftp6ConfigDummyUdpIo ( **/ EFI_STATUS Mtftp6ConfigUdpIo ( - IN UDP_IO *UdpIo, - IN EFI_IPv6_ADDRESS *ServerIp, - IN UINT16 ServerPort, - IN EFI_IPv6_ADDRESS *LocalIp, - IN UINT16 LocalPort + IN UDP_IO *UdpIo, + IN EFI_IPv6_ADDRESS *ServerIp, + IN UINT16 ServerPort, + IN EFI_IPv6_ADDRESS *LocalIp, + IN UINT16 LocalPort ) { - EFI_STATUS Status; - EFI_UDP6_PROTOCOL *Udp6; - EFI_UDP6_CONFIG_DATA *Udp6Cfg; + EFI_STATUS Status; + EFI_UDP6_PROTOCOL *Udp6; + EFI_UDP6_CONFIG_DATA *Udp6Cfg; Udp6 = UdpIo->Protocol.Udp6; Udp6Cfg = &(UdpIo->Config.Udp6); @@ -441,14 +430,12 @@ Mtftp6ConfigUdpIo ( Status = Udp6->Configure (Udp6, Udp6Cfg); if (Status == EFI_NO_MAPPING) { - return Mtftp6GetMapping (UdpIo, Udp6Cfg); } return Status; } - /** Build and transmit the request packet for the Mtftp6 instance. @@ -462,30 +449,30 @@ Mtftp6ConfigUdpIo ( **/ EFI_STATUS Mtftp6SendRequest ( - IN MTFTP6_INSTANCE *Instance, - IN UINT16 Operation + IN MTFTP6_INSTANCE *Instance, + IN UINT16 Operation ) { - EFI_MTFTP6_PACKET *Packet; - EFI_MTFTP6_OPTION *Options; - EFI_MTFTP6_TOKEN *Token; - RETURN_STATUS Status; - NET_BUF *Nbuf; - UINT8 *Mode; - UINT8 *Cur; - UINTN Index; - UINT32 BufferLength; - UINTN FileNameLength; - UINTN ModeLength; - UINTN OptionStrLength; - UINTN ValueStrLength; + EFI_MTFTP6_PACKET *Packet; + EFI_MTFTP6_OPTION *Options; + EFI_MTFTP6_TOKEN *Token; + RETURN_STATUS Status; + NET_BUF *Nbuf; + UINT8 *Mode; + UINT8 *Cur; + UINTN Index; + UINT32 BufferLength; + UINTN FileNameLength; + UINTN ModeLength; + UINTN OptionStrLength; + UINTN ValueStrLength; Token = Instance->Token; Options = Token->OptionList; Mode = Token->ModeStr; if (Mode == NULL) { - Mode = (UINT8 *) "octet"; + Mode = (UINT8 *)"octet"; } // @@ -507,14 +494,14 @@ Mtftp6SendRequest ( // // Compute the size of new Mtftp6 packet. // - FileNameLength = AsciiStrLen ((CHAR8 *) Token->Filename); - ModeLength = AsciiStrLen ((CHAR8 *) Mode); - BufferLength = (UINT32) FileNameLength + (UINT32) ModeLength + 4; + FileNameLength = AsciiStrLen ((CHAR8 *)Token->Filename); + ModeLength = AsciiStrLen ((CHAR8 *)Mode); + BufferLength = (UINT32)FileNameLength + (UINT32)ModeLength + 4; for (Index = 0; Index < Token->OptionCount; Index++) { - OptionStrLength = AsciiStrLen ((CHAR8 *) Options[Index].OptionStr); - ValueStrLength = AsciiStrLen ((CHAR8 *) Options[Index].ValueStr); - BufferLength += (UINT32) OptionStrLength + (UINT32) ValueStrLength + 2; + OptionStrLength = AsciiStrLen ((CHAR8 *)Options[Index].OptionStr); + ValueStrLength = AsciiStrLen ((CHAR8 *)Options[Index].ValueStr); + BufferLength += (UINT32)OptionStrLength + (UINT32)ValueStrLength + 2; } // @@ -527,39 +514,38 @@ Mtftp6SendRequest ( // // Copy the opcode, filename and mode into packet. // - Packet = (EFI_MTFTP6_PACKET *) NetbufAllocSpace (Nbuf, BufferLength, FALSE); + Packet = (EFI_MTFTP6_PACKET *)NetbufAllocSpace (Nbuf, BufferLength, FALSE); ASSERT (Packet != NULL); Packet->OpCode = HTONS (Operation); BufferLength -= sizeof (Packet->OpCode); - Cur = Packet->Rrq.Filename; - Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Token->Filename); + Cur = Packet->Rrq.Filename; + Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Token->Filename); ASSERT_EFI_ERROR (Status); - BufferLength -= (UINT32) (FileNameLength + 1); - Cur += FileNameLength + 1; - Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Mode); + BufferLength -= (UINT32)(FileNameLength + 1); + Cur += FileNameLength + 1; + Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Mode); ASSERT_EFI_ERROR (Status); - BufferLength -= (UINT32) (ModeLength + 1); - Cur += ModeLength + 1; + BufferLength -= (UINT32)(ModeLength + 1); + Cur += ModeLength + 1; // // Copy all the extension options into the packet. // for (Index = 0; Index < Token->OptionCount; ++Index) { - OptionStrLength = AsciiStrLen ((CHAR8 *) Options[Index].OptionStr); - ValueStrLength = AsciiStrLen ((CHAR8 *) Options[Index].ValueStr); + OptionStrLength = AsciiStrLen ((CHAR8 *)Options[Index].OptionStr); + ValueStrLength = AsciiStrLen ((CHAR8 *)Options[Index].ValueStr); - Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Options[Index].OptionStr); + Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Options[Index].OptionStr); ASSERT_EFI_ERROR (Status); - BufferLength -= (UINT32) (OptionStrLength + 1); - Cur += OptionStrLength + 1; + BufferLength -= (UINT32)(OptionStrLength + 1); + Cur += OptionStrLength + 1; - Status = AsciiStrCpyS ((CHAR8 *) Cur, BufferLength, (CHAR8 *) Options[Index].ValueStr); + Status = AsciiStrCpyS ((CHAR8 *)Cur, BufferLength, (CHAR8 *)Options[Index].ValueStr); ASSERT_EFI_ERROR (Status); - BufferLength -= (UINT32) (ValueStrLength + 1); - Cur += ValueStrLength + 1; - + BufferLength -= (UINT32)(ValueStrLength + 1); + Cur += ValueStrLength + 1; } // @@ -575,7 +561,6 @@ Mtftp6SendRequest ( return Mtftp6TransmitPacket (Instance, Nbuf); } - /** Build and send an error packet. @@ -590,26 +575,26 @@ Mtftp6SendRequest ( **/ EFI_STATUS Mtftp6SendError ( - IN MTFTP6_INSTANCE *Instance, - IN UINT16 ErrCode, - IN UINT8* ErrInfo + IN MTFTP6_INSTANCE *Instance, + IN UINT16 ErrCode, + IN UINT8 *ErrInfo ) { - NET_BUF *Nbuf; - EFI_MTFTP6_PACKET *TftpError; - UINT32 Len; + NET_BUF *Nbuf; + EFI_MTFTP6_PACKET *TftpError; + UINT32 Len; // // Allocate a packet then copy the data. // - Len = (UINT32) (AsciiStrLen ((CHAR8 *) ErrInfo) + sizeof (EFI_MTFTP6_ERROR_HEADER)); + Len = (UINT32)(AsciiStrLen ((CHAR8 *)ErrInfo) + sizeof (EFI_MTFTP6_ERROR_HEADER)); Nbuf = NetbufAlloc (Len); if (Nbuf == NULL) { return EFI_OUT_OF_RESOURCES; } - TftpError = (EFI_MTFTP6_PACKET *) NetbufAllocSpace (Nbuf, Len, FALSE); + TftpError = (EFI_MTFTP6_PACKET *)NetbufAllocSpace (Nbuf, Len, FALSE); if (TftpError == NULL) { NetbufFree (Nbuf); @@ -619,7 +604,7 @@ Mtftp6SendError ( TftpError->OpCode = HTONS (EFI_MTFTP6_OPCODE_ERROR); TftpError->Error.ErrorCode = HTONS (ErrCode); - AsciiStrCpyS ((CHAR8 *) TftpError->Error.ErrorMessage, AsciiStrLen ((CHAR8 *) ErrInfo) + 1 , (CHAR8 *) ErrInfo); + AsciiStrCpyS ((CHAR8 *)TftpError->Error.ErrorMessage, AsciiStrLen ((CHAR8 *)ErrInfo) + 1, (CHAR8 *)ErrInfo); // // Save the packet buf for retransmit @@ -634,7 +619,6 @@ Mtftp6SendError ( return Mtftp6TransmitPacket (Instance, Nbuf); } - /** The callback function called when the packet is transmitted. @@ -647,17 +631,16 @@ Mtftp6SendError ( VOID EFIAPI Mtftp6OnPacketSent ( - IN NET_BUF *Packet, - IN UDP_END_POINT *UdpEpt, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *Packet, + IN UDP_END_POINT *UdpEpt, + IN EFI_STATUS IoStatus, + IN VOID *Context ) { NetbufFree (Packet); - *(BOOLEAN *) Context = TRUE; + *(BOOLEAN *)Context = TRUE; } - /** Send the packet for the Mtftp6 instance. @@ -670,18 +653,18 @@ Mtftp6OnPacketSent ( **/ EFI_STATUS Mtftp6TransmitPacket ( - IN MTFTP6_INSTANCE *Instance, - IN NET_BUF *Packet + IN MTFTP6_INSTANCE *Instance, + IN NET_BUF *Packet ) { - EFI_UDP6_PROTOCOL *Udp6; - EFI_UDP6_CONFIG_DATA Udp6CfgData; - EFI_STATUS Status; - UINT16 *Temp; - UINT16 Value; - UINT16 OpCode; - - ZeroMem (&Udp6CfgData, sizeof(EFI_UDP6_CONFIG_DATA)); + EFI_UDP6_PROTOCOL *Udp6; + EFI_UDP6_CONFIG_DATA Udp6CfgData; + EFI_STATUS Status; + UINT16 *Temp; + UINT16 Value; + UINT16 OpCode; + + ZeroMem (&Udp6CfgData, sizeof (EFI_UDP6_CONFIG_DATA)); Udp6 = Instance->UdpIo->Protocol.Udp6; // @@ -689,13 +672,13 @@ Mtftp6TransmitPacket ( // Instance->PacketToLive = Instance->IsMaster ? Instance->Timeout : (Instance->Timeout * 2); - Temp = (UINT16 *) NetbufGetByte (Packet, 0, NULL); + Temp = (UINT16 *)NetbufGetByte (Packet, 0, NULL); ASSERT (Temp != NULL); Value = *Temp; OpCode = NTOHS (Value); - if (OpCode == EFI_MTFTP6_OPCODE_RRQ || OpCode == EFI_MTFTP6_OPCODE_DIR || OpCode == EFI_MTFTP6_OPCODE_WRQ) { + if ((OpCode == EFI_MTFTP6_OPCODE_RRQ) || (OpCode == EFI_MTFTP6_OPCODE_DIR) || (OpCode == EFI_MTFTP6_OPCODE_WRQ)) { // // For the Rrq, Dir, Wrq requests of the operation, configure the Udp6Io as // (serverip, 69, localip, localport) to send. @@ -786,7 +769,6 @@ Mtftp6TransmitPacket ( } if (Udp6CfgData.RemotePort != Instance->ServerDataPort) { - Status = Udp6->Configure (Udp6, NULL); if (EFI_ERROR (Status)) { @@ -838,7 +820,6 @@ Mtftp6TransmitPacket ( return Status; } - /** Check packet for GetInfo callback routine. @@ -856,32 +837,32 @@ Mtftp6TransmitPacket ( EFI_STATUS EFIAPI Mtftp6CheckPacket ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token, - IN UINT16 PacketLen, - IN EFI_MTFTP6_PACKET *Packet + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token, + IN UINT16 PacketLen, + IN EFI_MTFTP6_PACKET *Packet ) { - MTFTP6_GETINFO_CONTEXT *Context; - UINT16 OpCode; + MTFTP6_GETINFO_CONTEXT *Context; + UINT16 OpCode; - Context = (MTFTP6_GETINFO_CONTEXT *) Token->Context; + Context = (MTFTP6_GETINFO_CONTEXT *)Token->Context; OpCode = NTOHS (Packet->OpCode); // // Set the GetInfo's return status according to the OpCode. // switch (OpCode) { - case EFI_MTFTP6_OPCODE_ERROR: - Context->Status = EFI_TFTP_ERROR; - break; + case EFI_MTFTP6_OPCODE_ERROR: + Context->Status = EFI_TFTP_ERROR; + break; - case EFI_MTFTP6_OPCODE_OACK: - Context->Status = EFI_SUCCESS; - break; + case EFI_MTFTP6_OPCODE_OACK: + Context->Status = EFI_SUCCESS; + break; - default: - Context->Status = EFI_PROTOCOL_ERROR; + default: + Context->Status = EFI_PROTOCOL_ERROR; } // @@ -901,7 +882,6 @@ Mtftp6CheckPacket ( return EFI_ABORTED; } - /** Clean up the current Mtftp6 operation. @@ -911,13 +891,13 @@ Mtftp6CheckPacket ( **/ VOID Mtftp6OperationClean ( - IN MTFTP6_INSTANCE *Instance, - IN EFI_STATUS Result + IN MTFTP6_INSTANCE *Instance, + IN EFI_STATUS Result ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - MTFTP6_BLOCK_RANGE *Block; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + MTFTP6_BLOCK_RANGE *Block; // // Clean up the current token and event. @@ -927,6 +907,7 @@ Mtftp6OperationClean ( if (Instance->Token->Event != NULL) { gBS->SignalEvent (Instance->Token->Event); } + Instance->Token = NULL; } @@ -985,7 +966,6 @@ Mtftp6OperationClean ( Instance->IsMaster = TRUE; } - /** Start the Mtftp6 instance to perform the operation, such as read file, write file, and read directory. @@ -1002,37 +982,39 @@ Mtftp6OperationClean ( **/ EFI_STATUS Mtftp6OperationStart ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token, - IN UINT16 OpCode + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token, + IN UINT16 OpCode ) { - MTFTP6_INSTANCE *Instance; - EFI_STATUS Status; - - if (This == NULL || - Token == NULL || - Token->Filename == NULL || - (Token->OptionCount != 0 && Token->OptionList == NULL) || - (Token->OverrideData != NULL && !NetIp6IsValidUnicast (&Token->OverrideData->ServerIp)) - ) { + MTFTP6_INSTANCE *Instance; + EFI_STATUS Status; + + if ((This == NULL) || + (Token == NULL) || + (Token->Filename == NULL) || + ((Token->OptionCount != 0) && (Token->OptionList == NULL)) || + ((Token->OverrideData != NULL) && !NetIp6IsValidUnicast (&Token->OverrideData->ServerIp)) + ) + { return EFI_INVALID_PARAMETER; } // // At least define one method to collect the data for download. // - if ((OpCode == EFI_MTFTP6_OPCODE_RRQ || OpCode == EFI_MTFTP6_OPCODE_DIR) && - Token->Buffer == NULL && - Token->CheckPacket == NULL - ) { + if (((OpCode == EFI_MTFTP6_OPCODE_RRQ) || (OpCode == EFI_MTFTP6_OPCODE_DIR)) && + (Token->Buffer == NULL) && + (Token->CheckPacket == NULL) + ) + { return EFI_INVALID_PARAMETER; } // // At least define one method to provide the data for upload. // - if (OpCode == EFI_MTFTP6_OPCODE_WRQ && Token->Buffer == NULL && Token->PacketNeeded == NULL) { + if ((OpCode == EFI_MTFTP6_OPCODE_WRQ) && (Token->Buffer == NULL) && (Token->PacketNeeded == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1055,7 +1037,6 @@ Mtftp6OperationStart ( // Parse the extension options in the request packet. // if (Token->OptionCount != 0) { - Status = Mtftp6ParseExtensionOption ( Token->OptionList, Token->OptionCount, @@ -1072,12 +1053,12 @@ Mtftp6OperationStart ( // // Initialize runtime data from config data or override data. // - Instance->Token = Token; - Instance->ServerCmdPort = Instance->Config->InitialServerPort; - Instance->ServerDataPort = 0; - Instance->MaxRetry = Instance->Config->TryCount; - Instance->Timeout = Instance->Config->TimeoutValue; - Instance->IsMaster = TRUE; + Instance->Token = Token; + Instance->ServerCmdPort = Instance->Config->InitialServerPort; + Instance->ServerDataPort = 0; + Instance->MaxRetry = Instance->Config->TryCount; + Instance->Timeout = Instance->Config->TimeoutValue; + Instance->IsMaster = TRUE; CopyMem ( &Instance->ServerIp, @@ -1103,15 +1084,19 @@ Mtftp6OperationStart ( if (Instance->ServerCmdPort == 0) { Instance->ServerCmdPort = MTFTP6_DEFAULT_SERVER_CMD_PORT; } + if (Instance->BlkSize == 0) { Instance->BlkSize = MTFTP6_DEFAULT_BLK_SIZE; } + if (Instance->WindowSize == 0) { Instance->WindowSize = MTFTP6_DEFAULT_WINDOWSIZE; } + if (Instance->MaxRetry == 0) { Instance->MaxRetry = MTFTP6_DEFAULT_MAX_RETRY; } + if (Instance->Timeout == 0) { Instance->Timeout = MTFTP6_DEFAULT_TIMEOUT; } @@ -1122,21 +1107,21 @@ Mtftp6OperationStart ( // Switch the routines by the operation code. // switch (OpCode) { - case EFI_MTFTP6_OPCODE_RRQ: - Status = Mtftp6RrqStart (Instance, OpCode); - break; + case EFI_MTFTP6_OPCODE_RRQ: + Status = Mtftp6RrqStart (Instance, OpCode); + break; - case EFI_MTFTP6_OPCODE_DIR: - Status = Mtftp6RrqStart (Instance, OpCode); - break; + case EFI_MTFTP6_OPCODE_DIR: + Status = Mtftp6RrqStart (Instance, OpCode); + break; - case EFI_MTFTP6_OPCODE_WRQ: - Status = Mtftp6WrqStart (Instance, OpCode); - break; + case EFI_MTFTP6_OPCODE_WRQ: + Status = Mtftp6WrqStart (Instance, OpCode); + break; - default: - Status = EFI_DEVICE_ERROR; - goto ON_ERROR; + default: + Status = EFI_DEVICE_ERROR; + goto ON_ERROR; } if (EFI_ERROR (Status)) { @@ -1152,6 +1137,7 @@ Mtftp6OperationStart ( while (Token->Status == EFI_NOT_READY) { This->Poll (This); } + return Token->Status; } @@ -1165,7 +1151,6 @@ ON_ERROR: return Status; } - /** The timer ticking routine for the Mtftp6 instance. @@ -1176,25 +1161,24 @@ ON_ERROR: VOID EFIAPI Mtftp6OnTimerTick ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - MTFTP6_SERVICE *Service; - MTFTP6_INSTANCE *Instance; - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - EFI_MTFTP6_TOKEN *Token; - EFI_STATUS Status; + MTFTP6_SERVICE *Service; + MTFTP6_INSTANCE *Instance; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + EFI_MTFTP6_TOKEN *Token; + EFI_STATUS Status; - Service = (MTFTP6_SERVICE *) Context; + Service = (MTFTP6_SERVICE *)Context; // // Iterate through all the children of the Mtftp service instance. Time // out the packet. If maximum retries reached, clean the session up. // NET_LIST_FOR_EACH_SAFE (Entry, Next, &Service->Children) { - Instance = NET_LIST_USER_STRUCT (Entry, MTFTP6_INSTANCE, Link); if (Instance->Token == NULL) { @@ -1217,10 +1201,10 @@ Mtftp6OnTimerTick ( if (EFI_ERROR (Status)) { Mtftp6SendError ( - Instance, - EFI_MTFTP6_ERRORCODE_REQUEST_DENIED, - (UINT8 *) "User aborted the transfer in time out" - ); + Instance, + EFI_MTFTP6_ERRORCODE_REQUEST_DENIED, + (UINT8 *)"User aborted the transfer in time out" + ); Mtftp6OperationClean (Instance, EFI_ABORTED); continue; } diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Support.h b/NetworkPkg/Mtftp6Dxe/Mtftp6Support.h index 2b8a58f9de..33ab51a266 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Support.h +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Support.h @@ -16,14 +16,13 @@ // the holes are filled in, then the download or upload has completed. // typedef struct { - LIST_ENTRY Link; - INTN Start; - INTN End; - INTN Round; - INTN Bound; + LIST_ENTRY Link; + INTN Start; + INTN End; + INTN Round; + INTN Bound; } MTFTP6_BLOCK_RANGE; - /** Initialize the block range for either RRQ or WRQ. RRQ and WRQ have different requirements for Start and End. For example, during startup, @@ -46,12 +45,11 @@ typedef struct { **/ EFI_STATUS Mtftp6InitBlockRange ( - IN LIST_ENTRY *Head, - IN UINT16 Start, - IN UINT16 End + IN LIST_ENTRY *Head, + IN UINT16 Start, + IN UINT16 End ); - /** Get the first valid block number on the range list. @@ -63,10 +61,9 @@ Mtftp6InitBlockRange ( **/ INTN Mtftp6GetNextBlockNum ( - IN LIST_ENTRY *Head + IN LIST_ENTRY *Head ); - /** Set the last block number of the block range list. It removes all the blocks after the Last. MTFTP initialize the @@ -80,11 +77,10 @@ Mtftp6GetNextBlockNum ( **/ VOID Mtftp6SetLastBlockNum ( - IN LIST_ENTRY *Head, - IN UINT16 Last + IN LIST_ENTRY *Head, + IN UINT16 Last ); - /** Remove the block number from the block range list. @@ -100,13 +96,12 @@ Mtftp6SetLastBlockNum ( **/ EFI_STATUS Mtftp6RemoveBlockNum ( - IN LIST_ENTRY *Head, - IN UINT16 Num, - IN BOOLEAN Completed, - OUT UINT64 *BlockCounter + IN LIST_ENTRY *Head, + IN UINT16 Num, + IN BOOLEAN Completed, + OUT UINT64 *BlockCounter ); - /** Build and transmit the request packet for the Mtftp6 instance. @@ -120,11 +115,10 @@ Mtftp6RemoveBlockNum ( **/ EFI_STATUS Mtftp6SendRequest ( - IN MTFTP6_INSTANCE *Instance, - IN UINT16 Operation + IN MTFTP6_INSTANCE *Instance, + IN UINT16 Operation ); - /** Build and send an error packet. @@ -139,12 +133,11 @@ Mtftp6SendRequest ( **/ EFI_STATUS Mtftp6SendError ( - IN MTFTP6_INSTANCE *Instance, - IN UINT16 ErrCode, - IN UINT8* ErrInfo + IN MTFTP6_INSTANCE *Instance, + IN UINT16 ErrCode, + IN UINT8 *ErrInfo ); - /** Send the packet for the Mtftp6 instance. @@ -157,11 +150,10 @@ Mtftp6SendError ( **/ EFI_STATUS Mtftp6TransmitPacket ( - IN MTFTP6_INSTANCE *Instance, - IN NET_BUF *Packet + IN MTFTP6_INSTANCE *Instance, + IN NET_BUF *Packet ); - /** Check packet for GetInfo callback routine. @@ -177,13 +169,12 @@ Mtftp6TransmitPacket ( EFI_STATUS EFIAPI Mtftp6CheckPacket ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token, - IN UINT16 PacketLen, - IN EFI_MTFTP6_PACKET *Packet + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token, + IN UINT16 PacketLen, + IN EFI_MTFTP6_PACKET *Packet ); - /** The dummy configure routine for create a new Udp6 Io. @@ -196,11 +187,10 @@ Mtftp6CheckPacket ( EFI_STATUS EFIAPI Mtftp6ConfigDummyUdpIo ( - IN UDP_IO *UdpIo, - IN VOID *Context + IN UDP_IO *UdpIo, + IN VOID *Context ); - /** The configure routine for the Mtftp6 instance to transmit/receive. @@ -217,14 +207,13 @@ Mtftp6ConfigDummyUdpIo ( **/ EFI_STATUS Mtftp6ConfigUdpIo ( - IN UDP_IO *UdpIo, - IN EFI_IPv6_ADDRESS *ServerIp, - IN UINT16 ServerPort, - IN EFI_IPv6_ADDRESS *LocalIp, - IN UINT16 LocalPort + IN UDP_IO *UdpIo, + IN EFI_IPv6_ADDRESS *ServerIp, + IN UINT16 ServerPort, + IN EFI_IPv6_ADDRESS *LocalIp, + IN UINT16 LocalPort ); - /** Clean up the current Mtftp6 operation. @@ -234,11 +223,10 @@ Mtftp6ConfigUdpIo ( **/ VOID Mtftp6OperationClean ( - IN MTFTP6_INSTANCE *Instance, - IN EFI_STATUS Result + IN MTFTP6_INSTANCE *Instance, + IN EFI_STATUS Result ); - /** Start the Mtftp6 instance to perform the operation, such as read file, write file, and read directory. @@ -255,12 +243,11 @@ Mtftp6OperationClean ( **/ EFI_STATUS Mtftp6OperationStart ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token, - IN UINT16 OpCode + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token, + IN UINT16 OpCode ); - /** The timer ticking routine for the Mtftp6 instance. @@ -271,11 +258,10 @@ Mtftp6OperationStart ( VOID EFIAPI Mtftp6OnTimerTick ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); - /** The packet process callback for Mtftp6 upload. @@ -288,13 +274,12 @@ Mtftp6OnTimerTick ( VOID EFIAPI Mtftp6WrqInput ( - IN NET_BUF *UdpPacket, - IN UDP_END_POINT *UdpEpt, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *UdpPacket, + IN UDP_END_POINT *UdpEpt, + IN EFI_STATUS IoStatus, + IN VOID *Context ); - /** Start the Mtftp6 instance to upload. It will first init some states, then send the WRQ request packet, and start to receive the packet. @@ -308,11 +293,10 @@ Mtftp6WrqInput ( **/ EFI_STATUS Mtftp6WrqStart ( - IN MTFTP6_INSTANCE *Instance, - IN UINT16 Operation + IN MTFTP6_INSTANCE *Instance, + IN UINT16 Operation ); - /** The packet process callback for Mtftp6 download. @@ -325,13 +309,12 @@ Mtftp6WrqStart ( VOID EFIAPI Mtftp6RrqInput ( - IN NET_BUF *UdpPacket, - IN UDP_END_POINT *UdpEpt, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *UdpPacket, + IN UDP_END_POINT *UdpEpt, + IN EFI_STATUS IoStatus, + IN VOID *Context ); - /** Start the Mtftp6 instance to download. It first initializes some of the internal states then builds and sends an RRQ request packet. @@ -346,8 +329,8 @@ Mtftp6RrqInput ( **/ EFI_STATUS Mtftp6RrqStart ( - IN MTFTP6_INSTANCE *Instance, - IN UINT16 Operation + IN MTFTP6_INSTANCE *Instance, + IN UINT16 Operation ); #endif diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Wrq.c b/NetworkPkg/Mtftp6Dxe/Mtftp6Wrq.c index 1ccdc6e32b..cf1e909d3f 100644 --- a/NetworkPkg/Mtftp6Dxe/Mtftp6Wrq.c +++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Wrq.c @@ -9,8 +9,6 @@ #include "Mtftp6Impl.h" - - /** Build and send a Mtftp6 data packet for upload. @@ -24,17 +22,17 @@ **/ EFI_STATUS Mtftp6WrqSendBlock ( - IN MTFTP6_INSTANCE *Instance, - IN UINT16 BlockNum + IN MTFTP6_INSTANCE *Instance, + IN UINT16 BlockNum ) { - EFI_MTFTP6_PACKET *Packet; - EFI_MTFTP6_TOKEN *Token; - NET_BUF *UdpPacket; - EFI_STATUS Status; - UINT16 DataLen; - UINT8 *DataBuf; - UINT64 Start; + EFI_MTFTP6_PACKET *Packet; + EFI_MTFTP6_TOKEN *Token; + NET_BUF *UdpPacket; + EFI_STATUS Status; + UINT16 DataLen; + UINT8 *DataBuf; + UINT64 Start; // // Allocate net buffer to create data packet. @@ -45,11 +43,11 @@ Mtftp6WrqSendBlock ( return EFI_OUT_OF_RESOURCES; } - Packet = (EFI_MTFTP6_PACKET *) NetbufAllocSpace ( - UdpPacket, - MTFTP6_DATA_HEAD_LEN, - FALSE - ); + Packet = (EFI_MTFTP6_PACKET *)NetbufAllocSpace ( + UdpPacket, + MTFTP6_DATA_HEAD_LEN, + FALSE + ); ASSERT (Packet != NULL); Packet->Data.OpCode = HTONS (EFI_MTFTP6_OPCODE_DATA); @@ -65,34 +63,34 @@ Mtftp6WrqSendBlock ( Start = MultU64x32 (BlockNum - 1, Instance->BlkSize); if (Token->BufferSize < Start + Instance->BlkSize) { - DataLen = (UINT16) (Token->BufferSize - Start); + DataLen = (UINT16)(Token->BufferSize - Start); Instance->LastBlk = BlockNum; Mtftp6SetLastBlockNum (&Instance->BlkList, BlockNum); } if (DataLen > 0) { NetbufAllocSpace (UdpPacket, DataLen, FALSE); - CopyMem (Packet->Data.Data, (UINT8 *) Token->Buffer + Start, DataLen); + CopyMem (Packet->Data.Data, (UINT8 *)Token->Buffer + Start, DataLen); } - } else { // // Get data from PacketNeeded // DataBuf = NULL; - Status = Token->PacketNeeded (&Instance->Mtftp6, Token, &DataLen, (VOID*) &DataBuf); + Status = Token->PacketNeeded (&Instance->Mtftp6, Token, &DataLen, (VOID *)&DataBuf); if (EFI_ERROR (Status) || (DataLen > Instance->BlkSize)) { if (DataBuf != NULL) { gBS->FreePool (DataBuf); } + // // The received packet has already been freed. // Mtftp6SendError ( Instance, EFI_MTFTP6_ERRORCODE_REQUEST_DENIED, - (UINT8 *) "User aborted the transfer" + (UINT8 *)"User aborted the transfer" ); return EFI_ABORTED; @@ -118,7 +116,6 @@ Mtftp6WrqSendBlock ( return Mtftp6TransmitPacket (Instance, UdpPacket); } - /** Function to handle received ACK packet. If the ACK number matches the expected block number, with more data pending, send the next @@ -138,16 +135,16 @@ Mtftp6WrqSendBlock ( **/ EFI_STATUS Mtftp6WrqHandleAck ( - IN MTFTP6_INSTANCE *Instance, - IN EFI_MTFTP6_PACKET *Packet, - IN UINT32 Len, - OUT NET_BUF **UdpPacket, - OUT BOOLEAN *IsCompleted + IN MTFTP6_INSTANCE *Instance, + IN EFI_MTFTP6_PACKET *Packet, + IN UINT32 Len, + OUT NET_BUF **UdpPacket, + OUT BOOLEAN *IsCompleted ) { - UINT16 AckNum; - INTN Expected; - UINT64 BlockCounter; + UINT16 AckNum; + INTN Expected; + UINT64 BlockCounter; *IsCompleted = FALSE; AckNum = NTOHS (Packet->Ack.Block[0]); @@ -182,7 +179,6 @@ Mtftp6WrqHandleAck ( ASSERT (Instance->LastBlk >= 1); *IsCompleted = TRUE; return EFI_SUCCESS; - } else { // // Free the received packet before send new packet in ReceiveNotify, @@ -196,7 +192,7 @@ Mtftp6WrqHandleAck ( Mtftp6SendError ( Instance, EFI_MTFTP6_ERRORCODE_REQUEST_DENIED, - (UINT8 *) "Block number rolls back, not supported, try blksize option" + (UINT8 *)"Block number rolls back, not supported, try blksize option" ); return EFI_TFTP_ERROR; @@ -210,10 +206,9 @@ Mtftp6WrqHandleAck ( NetbufFree (*UdpPacket); *UdpPacket = NULL; - return Mtftp6WrqSendBlock (Instance, (UINT16) Expected); + return Mtftp6WrqSendBlock (Instance, (UINT16)Expected); } - /** Check whether the received OACK is valid. The OACK is valid only if: @@ -231,8 +226,8 @@ Mtftp6WrqHandleAck ( **/ BOOLEAN Mtftp6WrqOackValid ( - IN MTFTP6_EXT_OPTION_INFO *ReplyInfo, - IN MTFTP6_EXT_OPTION_INFO *RequestInfo + IN MTFTP6_EXT_OPTION_INFO *ReplyInfo, + IN MTFTP6_EXT_OPTION_INFO *RequestInfo ) { // @@ -248,15 +243,14 @@ Mtftp6WrqOackValid ( // if ((((ReplyInfo->BitMap & MTFTP6_OPT_BLKSIZE_BIT) != 0) && (ReplyInfo->BlkSize > RequestInfo->BlkSize)) || (((ReplyInfo->BitMap & MTFTP6_OPT_TIMEOUT_BIT) != 0) && (ReplyInfo->Timeout != RequestInfo->Timeout)) - ) { - + ) + { return FALSE; } return TRUE; } - /** Process the OACK packet for Wrq. @@ -274,22 +268,22 @@ Mtftp6WrqOackValid ( **/ EFI_STATUS Mtftp6WrqHandleOack ( - IN MTFTP6_INSTANCE *Instance, - IN EFI_MTFTP6_PACKET *Packet, - IN UINT32 Len, - OUT NET_BUF **UdpPacket, - OUT BOOLEAN *IsCompleted + IN MTFTP6_INSTANCE *Instance, + IN EFI_MTFTP6_PACKET *Packet, + IN UINT32 Len, + OUT NET_BUF **UdpPacket, + OUT BOOLEAN *IsCompleted ) { - EFI_MTFTP6_OPTION *Options; - UINT32 Count; - MTFTP6_EXT_OPTION_INFO ExtInfo; - EFI_MTFTP6_PACKET Dummy; - EFI_STATUS Status; - INTN Expected; + EFI_MTFTP6_OPTION *Options; + UINT32 Count; + MTFTP6_EXT_OPTION_INFO ExtInfo; + EFI_MTFTP6_PACKET Dummy; + EFI_STATUS Status; + INTN Expected; *IsCompleted = FALSE; - Options = NULL; + Options = NULL; // // Ignore the OACK if already started the upload @@ -310,11 +304,12 @@ Mtftp6WrqHandleOack ( if (EFI_ERROR (Status)) { return Status; } + ASSERT (Options != NULL); Status = Mtftp6ParseExtensionOption (Options, Count, FALSE, Instance->Operation, &ExtInfo); - if (EFI_ERROR(Status) || !Mtftp6WrqOackValid (&ExtInfo, &Instance->ExtInfo)) { + if (EFI_ERROR (Status) || !Mtftp6WrqOackValid (&ExtInfo, &Instance->ExtInfo)) { // // Don't send a MTFTP error packet when out of resource, it can // only make it worse. @@ -332,7 +327,7 @@ Mtftp6WrqHandleOack ( Mtftp6SendError ( Instance, EFI_MTFTP6_ERRORCODE_ILLEGAL_OPERATION, - (UINT8 *) "Malformatted OACK packet" + (UINT8 *)"Malformatted OACK packet" ); } @@ -363,7 +358,6 @@ Mtftp6WrqHandleOack ( ); } - /** The packet process callback for Mtftp6 upload. @@ -376,21 +370,21 @@ Mtftp6WrqHandleOack ( VOID EFIAPI Mtftp6WrqInput ( - IN NET_BUF *UdpPacket, - IN UDP_END_POINT *UdpEpt, - IN EFI_STATUS IoStatus, - IN VOID *Context + IN NET_BUF *UdpPacket, + IN UDP_END_POINT *UdpEpt, + IN EFI_STATUS IoStatus, + IN VOID *Context ) { - MTFTP6_INSTANCE *Instance; - EFI_MTFTP6_PACKET *Packet; - BOOLEAN IsCompleted; - EFI_STATUS Status; - UINT32 TotalNum; - UINT32 Len; - UINT16 Opcode; + MTFTP6_INSTANCE *Instance; + EFI_MTFTP6_PACKET *Packet; + BOOLEAN IsCompleted; + EFI_STATUS Status; + UINT32 TotalNum; + UINT32 Len; + UINT16 Opcode; - Instance = (MTFTP6_INSTANCE *) Context; + Instance = (MTFTP6_INSTANCE *)Context; NET_CHECK_SIGNATURE (Instance, MTFTP6_INSTANCE_SIGNATURE); @@ -439,10 +433,9 @@ Mtftp6WrqInput ( goto ON_EXIT; } - NetbufCopy (UdpPacket, 0, Len, (UINT8 *) Packet); - + NetbufCopy (UdpPacket, 0, Len, (UINT8 *)Packet); } else { - Packet = (EFI_MTFTP6_PACKET *) NetbufGetByte (UdpPacket, 0, NULL); + Packet = (EFI_MTFTP6_PACKET *)NetbufGetByte (UdpPacket, 0, NULL); ASSERT (Packet != NULL); } @@ -452,14 +445,14 @@ Mtftp6WrqInput ( // Callback to the user's CheckPacket if provided. Abort the transmission // if CheckPacket returns an EFI_ERROR code. // - if (Instance->Token->CheckPacket != NULL && - (Opcode == EFI_MTFTP6_OPCODE_OACK || Opcode == EFI_MTFTP6_OPCODE_ERROR) - ) { - + if ((Instance->Token->CheckPacket != NULL) && + ((Opcode == EFI_MTFTP6_OPCODE_OACK) || (Opcode == EFI_MTFTP6_OPCODE_ERROR)) + ) + { Status = Instance->Token->CheckPacket ( &Instance->Mtftp6, Instance->Token, - (UINT16) Len, + (UINT16)Len, Packet ); @@ -480,7 +473,7 @@ Mtftp6WrqInput ( Mtftp6SendError ( Instance, EFI_MTFTP6_ERRORCODE_REQUEST_DENIED, - (UINT8 *) "User aborted the transfer" + (UINT8 *)"User aborted the transfer" ); } @@ -493,32 +486,34 @@ Mtftp6WrqInput ( // Switch the process routines by the operation code. // switch (Opcode) { - case EFI_MTFTP6_OPCODE_ACK: - if (Len != MTFTP6_OPCODE_LEN + MTFTP6_BLKNO_LEN) { - goto ON_EXIT; - } - // - // Handle the Ack packet of Wrq. - // - Status = Mtftp6WrqHandleAck (Instance, Packet, Len, &UdpPacket, &IsCompleted); - break; + case EFI_MTFTP6_OPCODE_ACK: + if (Len != MTFTP6_OPCODE_LEN + MTFTP6_BLKNO_LEN) { + goto ON_EXIT; + } - case EFI_MTFTP6_OPCODE_OACK: - if (Len <= MTFTP6_OPCODE_LEN) { - goto ON_EXIT; - } - // - // Handle the Oack packet of Wrq. - // - Status = Mtftp6WrqHandleOack (Instance, Packet, Len, &UdpPacket, &IsCompleted); - break; + // + // Handle the Ack packet of Wrq. + // + Status = Mtftp6WrqHandleAck (Instance, Packet, Len, &UdpPacket, &IsCompleted); + break; - default: - // - // Drop and return eror if received error message. - // - Status = EFI_TFTP_ERROR; - break; + case EFI_MTFTP6_OPCODE_OACK: + if (Len <= MTFTP6_OPCODE_LEN) { + goto ON_EXIT; + } + + // + // Handle the Oack packet of Wrq. + // + Status = Mtftp6WrqHandleOack (Instance, Packet, Len, &UdpPacket, &IsCompleted); + break; + + default: + // + // Drop and return eror if received error message. + // + Status = EFI_TFTP_ERROR; + break; } ON_EXIT: @@ -526,7 +521,7 @@ ON_EXIT: // Free the resources, then if !EFI_ERROR (Status) and not completed, // restart the receive, otherwise end the session. // - if (Packet != NULL && TotalNum > 1) { + if ((Packet != NULL) && (TotalNum > 1)) { FreePool (Packet); } @@ -542,6 +537,7 @@ ON_EXIT: 0 ); } + // // Clean up the current session if failed to continue. // @@ -550,7 +546,6 @@ ON_EXIT: } } - /** Start the Mtftp6 instance to upload. It will first init some states, then send the WRQ request packet, and start to receive the packet. @@ -564,11 +559,11 @@ ON_EXIT: **/ EFI_STATUS Mtftp6WrqStart ( - IN MTFTP6_INSTANCE *Instance, - IN UINT16 Operation + IN MTFTP6_INSTANCE *Instance, + IN UINT16 Operation ) { - EFI_STATUS Status; + EFI_STATUS Status; // // The valid block number range are [0, 0xffff]. For example: @@ -595,4 +590,3 @@ Mtftp6WrqStart ( 0 ); } - diff --git a/NetworkPkg/SnpDxe/Callback.c b/NetworkPkg/SnpDxe/Callback.c index 1b70b935d0..4b1f85cdee 100644 --- a/NetworkPkg/SnpDxe/Callback.c +++ b/NetworkPkg/SnpDxe/Callback.c @@ -28,13 +28,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent VOID EFIAPI SnpUndi32CallbackBlock ( - IN UINT64 UniqueId, - IN UINT32 Enable + IN UINT64 UniqueId, + IN UINT32 Enable ) { SNP_DRIVER *Snp; - Snp = (SNP_DRIVER *) (UINTN) UniqueId; + Snp = (SNP_DRIVER *)(UINTN)UniqueId; // // tcpip was calling snp at tpl_notify and when we acquire a lock that was // created at a lower level (TPL_CALLBACK) it gives an assert! @@ -60,12 +60,12 @@ SnpUndi32CallbackBlock ( VOID EFIAPI SnpUndi32CallbackDelay ( - IN UINT64 UniqueId, - IN UINT64 MicroSeconds + IN UINT64 UniqueId, + IN UINT64 MicroSeconds ) { if (MicroSeconds != 0) { - gBS->Stall ((UINTN) MicroSeconds); + gBS->Stall ((UINTN)MicroSeconds); } } @@ -87,92 +87,96 @@ SnpUndi32CallbackDelay ( VOID EFIAPI SnpUndi32CallbackMemio ( - IN UINT64 UniqueId, - IN UINT8 ReadOrWrite, - IN UINT8 NumBytes, - IN UINT64 MemOrPortAddr, - IN OUT UINT64 BufferPtr + IN UINT64 UniqueId, + IN UINT8 ReadOrWrite, + IN UINT8 NumBytes, + IN UINT64 MemOrPortAddr, + IN OUT UINT64 BufferPtr ) { - SNP_DRIVER *Snp; - EFI_PCI_IO_PROTOCOL_WIDTH Width; + SNP_DRIVER *Snp; + EFI_PCI_IO_PROTOCOL_WIDTH Width; - Snp = (SNP_DRIVER *) (UINTN) UniqueId; + Snp = (SNP_DRIVER *)(UINTN)UniqueId; - Width = (EFI_PCI_IO_PROTOCOL_WIDTH) 0; + Width = (EFI_PCI_IO_PROTOCOL_WIDTH)0; switch (NumBytes) { - case 2: - Width = (EFI_PCI_IO_PROTOCOL_WIDTH) 1; - break; + case 2: + Width = (EFI_PCI_IO_PROTOCOL_WIDTH)1; + break; - case 4: - Width = (EFI_PCI_IO_PROTOCOL_WIDTH) 2; - break; + case 4: + Width = (EFI_PCI_IO_PROTOCOL_WIDTH)2; + break; - case 8: - Width = (EFI_PCI_IO_PROTOCOL_WIDTH) 3; - break; + case 8: + Width = (EFI_PCI_IO_PROTOCOL_WIDTH)3; + break; } switch (ReadOrWrite) { - case PXE_IO_READ: - ASSERT (Snp->IoBarIndex < PCI_MAX_BAR); - if (Snp->IoBarIndex < PCI_MAX_BAR) { - Snp->PciIo->Io.Read ( - Snp->PciIo, - Width, - Snp->IoBarIndex, // BAR 1 (for 32bit regs), IO base address - MemOrPortAddr, - 1, // count - (VOID *) (UINTN) BufferPtr - ); - } - break; - - case PXE_IO_WRITE: - ASSERT (Snp->IoBarIndex < PCI_MAX_BAR); - if (Snp->IoBarIndex < PCI_MAX_BAR) { - Snp->PciIo->Io.Write ( - Snp->PciIo, - Width, - Snp->IoBarIndex, // BAR 1 (for 32bit regs), IO base address - MemOrPortAddr, - 1, // count - (VOID *) (UINTN) BufferPtr - ); - } - break; - - case PXE_MEM_READ: - ASSERT (Snp->MemoryBarIndex < PCI_MAX_BAR); - if (Snp->MemoryBarIndex < PCI_MAX_BAR) { - Snp->PciIo->Mem.Read ( - Snp->PciIo, - Width, - Snp->MemoryBarIndex, // BAR 0, Memory base address - MemOrPortAddr, - 1, // count - (VOID *) (UINTN) BufferPtr - ); - } - break; - - case PXE_MEM_WRITE: - ASSERT (Snp->MemoryBarIndex < PCI_MAX_BAR); - if (Snp->MemoryBarIndex < PCI_MAX_BAR) { - Snp->PciIo->Mem.Write ( - Snp->PciIo, - Width, - Snp->MemoryBarIndex, // BAR 0, Memory base address - MemOrPortAddr, - 1, // count - (VOID *) (UINTN) BufferPtr - ); - } - break; + case PXE_IO_READ: + ASSERT (Snp->IoBarIndex < PCI_MAX_BAR); + if (Snp->IoBarIndex < PCI_MAX_BAR) { + Snp->PciIo->Io.Read ( + Snp->PciIo, + Width, + Snp->IoBarIndex, // BAR 1 (for 32bit regs), IO base address + MemOrPortAddr, + 1, // count + (VOID *)(UINTN)BufferPtr + ); + } + + break; + + case PXE_IO_WRITE: + ASSERT (Snp->IoBarIndex < PCI_MAX_BAR); + if (Snp->IoBarIndex < PCI_MAX_BAR) { + Snp->PciIo->Io.Write ( + Snp->PciIo, + Width, + Snp->IoBarIndex, // BAR 1 (for 32bit regs), IO base address + MemOrPortAddr, + 1, // count + (VOID *)(UINTN)BufferPtr + ); + } + + break; + + case PXE_MEM_READ: + ASSERT (Snp->MemoryBarIndex < PCI_MAX_BAR); + if (Snp->MemoryBarIndex < PCI_MAX_BAR) { + Snp->PciIo->Mem.Read ( + Snp->PciIo, + Width, + Snp->MemoryBarIndex, // BAR 0, Memory base address + MemOrPortAddr, + 1, // count + (VOID *)(UINTN)BufferPtr + ); + } + + break; + + case PXE_MEM_WRITE: + ASSERT (Snp->MemoryBarIndex < PCI_MAX_BAR); + if (Snp->MemoryBarIndex < PCI_MAX_BAR) { + Snp->PciIo->Mem.Write ( + Snp->PciIo, + Width, + Snp->MemoryBarIndex, // BAR 0, Memory base address + MemOrPortAddr, + 1, // count + (VOID *)(UINTN)BufferPtr + ); + } + + break; } - return ; + return; } /** @@ -193,49 +197,50 @@ SnpUndi32CallbackMemio ( VOID EFIAPI SnpUndi32CallbackMap ( - IN UINT64 UniqueId, - IN UINT64 CpuAddr, - IN UINT32 NumBytes, - IN UINT32 Direction, - IN OUT UINT64 DeviceAddrPtr + IN UINT64 UniqueId, + IN UINT64 CpuAddr, + IN UINT32 NumBytes, + IN UINT32 Direction, + IN OUT UINT64 DeviceAddrPtr ) { - EFI_PHYSICAL_ADDRESS *DevAddrPtr; - EFI_PCI_IO_PROTOCOL_OPERATION DirectionFlag; - UINTN BuffSize; - SNP_DRIVER *Snp; - UINTN Index; - EFI_STATUS Status; + EFI_PHYSICAL_ADDRESS *DevAddrPtr; + EFI_PCI_IO_PROTOCOL_OPERATION DirectionFlag; + UINTN BuffSize; + SNP_DRIVER *Snp; + UINTN Index; + EFI_STATUS Status; - BuffSize = (UINTN) NumBytes; - Snp = (SNP_DRIVER *) (UINTN) UniqueId; - DevAddrPtr = (EFI_PHYSICAL_ADDRESS *) (UINTN) DeviceAddrPtr; + BuffSize = (UINTN)NumBytes; + Snp = (SNP_DRIVER *)(UINTN)UniqueId; + DevAddrPtr = (EFI_PHYSICAL_ADDRESS *)(UINTN)DeviceAddrPtr; if (CpuAddr == 0) { *DevAddrPtr = 0; - return ; + return; } switch (Direction) { - case TO_AND_FROM_DEVICE: - DirectionFlag = EfiPciIoOperationBusMasterCommonBuffer; - break; + case TO_AND_FROM_DEVICE: + DirectionFlag = EfiPciIoOperationBusMasterCommonBuffer; + break; - case FROM_DEVICE: - DirectionFlag = EfiPciIoOperationBusMasterWrite; - break; + case FROM_DEVICE: + DirectionFlag = EfiPciIoOperationBusMasterWrite; + break; - case TO_DEVICE: - DirectionFlag = EfiPciIoOperationBusMasterRead; - break; + case TO_DEVICE: + DirectionFlag = EfiPciIoOperationBusMasterRead; + break; - default: - *DevAddrPtr = 0; - // - // any non zero indicates error! - // - return ; + default: + *DevAddrPtr = 0; + // + // any non zero indicates error! + // + return; } + // // find an unused map_list entry // @@ -248,15 +253,15 @@ SnpUndi32CallbackMap ( if (Index >= MAX_MAP_LENGTH) { DEBUG ((DEBUG_INFO, "SNP maplist is FULL\n")); *DevAddrPtr = 0; - return ; + return; } - Snp->MapList[Index].VirtualAddress = (EFI_PHYSICAL_ADDRESS) CpuAddr; + Snp->MapList[Index].VirtualAddress = (EFI_PHYSICAL_ADDRESS)CpuAddr; Status = Snp->PciIo->Map ( Snp->PciIo, DirectionFlag, - (VOID *) (UINTN) CpuAddr, + (VOID *)(UINTN)CpuAddr, &BuffSize, DevAddrPtr, &(Snp->MapList[Index].MapCookie) @@ -266,7 +271,7 @@ SnpUndi32CallbackMap ( Snp->MapList[Index].VirtualAddress = 0; } - return ; + return; } /** @@ -287,17 +292,17 @@ SnpUndi32CallbackMap ( VOID EFIAPI SnpUndi32CallbackUnmap ( - IN UINT64 UniqueId, - IN UINT64 CpuAddr, - IN UINT32 NumBytes, - IN UINT32 Direction, - IN UINT64 DeviceAddr + IN UINT64 UniqueId, + IN UINT64 CpuAddr, + IN UINT32 NumBytes, + IN UINT32 Direction, + IN UINT64 DeviceAddr ) { SNP_DRIVER *Snp; UINT16 Index; - Snp = (SNP_DRIVER *) (UINTN) UniqueId; + Snp = (SNP_DRIVER *)(UINTN)UniqueId; for (Index = 0; Index < MAX_MAP_LENGTH; Index++) { if (Snp->MapList[Index].VirtualAddress == CpuAddr) { @@ -307,13 +312,13 @@ SnpUndi32CallbackUnmap ( if (Index >= MAX_MAP_LENGTH) { DEBUG ((DEBUG_ERROR, "SNP could not find a mapping, failed to unmap.\n")); - return ; + return; } Snp->PciIo->Unmap (Snp->PciIo, Snp->MapList[Index].MapCookie); Snp->MapList[Index].VirtualAddress = 0; Snp->MapList[Index].MapCookie = NULL; - return ; + return; } /** @@ -341,27 +346,26 @@ SnpUndi32CallbackUnmap ( VOID EFIAPI SnpUndi32CallbackSync ( - IN UINT64 UniqueId, - IN UINT64 CpuAddr, - IN UINT32 NumBytes, - IN UINT32 Direction, - IN UINT64 DeviceAddr + IN UINT64 UniqueId, + IN UINT64 CpuAddr, + IN UINT32 NumBytes, + IN UINT32 Direction, + IN UINT64 DeviceAddr ) { if ((CpuAddr == 0) || (DeviceAddr == 0) || (NumBytes == 0)) { - return ; - + return; } switch (Direction) { - case FROM_DEVICE: - CopyMem ((UINT8 *) (UINTN) CpuAddr, (UINT8 *) (UINTN) DeviceAddr, NumBytes); - break; + case FROM_DEVICE: + CopyMem ((UINT8 *)(UINTN)CpuAddr, (UINT8 *)(UINTN)DeviceAddr, NumBytes); + break; - case TO_DEVICE: - CopyMem ((UINT8 *) (UINTN) DeviceAddr, (UINT8 *) (UINTN) CpuAddr, NumBytes); - break; + case TO_DEVICE: + CopyMem ((UINT8 *)(UINTN)DeviceAddr, (UINT8 *)(UINTN)CpuAddr, NumBytes); + break; } - return ; + return; } diff --git a/NetworkPkg/SnpDxe/ComponentName.c b/NetworkPkg/SnpDxe/ComponentName.c index 2139e2a47f..cc4cc5bddb 100644 --- a/NetworkPkg/SnpDxe/ComponentName.c +++ b/NetworkPkg/SnpDxe/ComponentName.c @@ -6,12 +6,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Snp.h" // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user readable name of the driver. @@ -59,7 +59,6 @@ SimpleNetworkComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -131,14 +130,13 @@ SimpleNetworkComponentNameGetDriverName ( EFI_STATUS EFIAPI SimpleNetworkComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); - // // EFI Component Name Protocol // @@ -151,14 +149,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gSimpleNetworkCompone // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gSimpleNetworkComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) SimpleNetworkComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) SimpleNetworkComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gSimpleNetworkComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)SimpleNetworkComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)SimpleNetworkComponentNameGetControllerName, "en" }; - -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mSimpleNetworkDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mSimpleNetworkDriverNameTable[] = { { "eng;en", L"Simple Network Protocol Driver" @@ -169,7 +166,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mSimpleNetworkDriverNameT } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gSimpleNetworkControllerNameTable = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gSimpleNetworkControllerNameTable = NULL; /** Retrieves a Unicode string that is the user readable name of the driver. @@ -239,19 +236,19 @@ SimpleNetworkComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *Snp + IN EFI_SIMPLE_NETWORK_PROTOCOL *Snp ) { - EFI_STATUS Status; - CHAR16 HandleName[80]; - UINTN OffSet; - UINTN Index; + EFI_STATUS Status; + CHAR16 HandleName[80]; + UINTN OffSet; + UINTN Index; if (Snp == NULL) { return EFI_INVALID_PARAMETER; } - OffSet = 0; + OffSet = 0; OffSet += UnicodeSPrint ( HandleName, sizeof (HandleName), @@ -265,6 +262,7 @@ UpdateName ( Snp->Mode->CurrentAddress.Addr[Index] ); } + ASSERT (OffSet > 0); // // Remove the last '-' @@ -372,15 +370,15 @@ UpdateName ( EFI_STATUS EFIAPI SimpleNetworkComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_STATUS Status; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; if (ChildHandle != NULL) { return EFI_UNSUPPORTED; @@ -412,6 +410,7 @@ SimpleNetworkComponentNameGetControllerName ( if (EFI_ERROR (Status)) { return Status; } + // // Update the component name for this child handle. // diff --git a/NetworkPkg/SnpDxe/Get_status.c b/NetworkPkg/SnpDxe/Get_status.c index 616eb4aa6a..14b678fd36 100644 --- a/NetworkPkg/SnpDxe/Get_status.c +++ b/NetworkPkg/SnpDxe/Get_status.c @@ -28,21 +28,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeGetStatus ( - IN SNP_DRIVER *Snp, - OUT UINT32 *InterruptStatusPtr, - IN BOOLEAN GetTransmittedBuf + IN SNP_DRIVER *Snp, + OUT UINT32 *InterruptStatusPtr, + IN BOOLEAN GetTransmittedBuf ) { - PXE_DB_GET_STATUS *Db; - UINT16 InterruptFlags; - UINT32 Index; - UINT64 *Tmp; + PXE_DB_GET_STATUS *Db; + UINT16 InterruptFlags; + UINT32 Index; + UINT64 *Tmp; - Tmp = NULL; - Db = Snp->Db; - Snp->Cdb.OpCode = PXE_OPCODE_GET_STATUS; + Tmp = NULL; + Db = Snp->Db; + Snp->Cdb.OpCode = PXE_OPCODE_GET_STATUS; - Snp->Cdb.OpFlags = 0; + Snp->Cdb.OpFlags = 0; if (GetTransmittedBuf) { Snp->Cdb.OpFlags |= PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS; @@ -57,39 +57,40 @@ PxeGetStatus ( Snp->Cdb.OpFlags |= PXE_OPFLAGS_GET_MEDIA_STATUS; } - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - Snp->Cdb.DBsize = (UINT16) sizeof (PXE_DB_GET_STATUS); - Snp->Cdb.DBaddr = (UINT64)(UINTN) Db; + Snp->Cdb.DBsize = (UINT16)sizeof (PXE_DB_GET_STATUS); + Snp->Cdb.DBaddr = (UINT64)(UINTN)Db; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nSnp->undi.get_status() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); if (Snp->Cdb.StatCode != PXE_STATCODE_SUCCESS) { DEBUG ( (DEBUG_NET, - "\nSnp->undi.get_status() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) + "\nSnp->undi.get_status() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) ); return EFI_DEVICE_ERROR; } + // // report the values back.. // if (InterruptStatusPtr != NULL) { - InterruptFlags = (UINT16) (Snp->Cdb.StatFlags & PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK); + InterruptFlags = (UINT16)(Snp->Cdb.StatFlags & PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK); *InterruptStatusPtr = 0; @@ -108,7 +109,6 @@ PxeGetStatus ( if ((InterruptFlags & PXE_STATFLAGS_GET_STATUS_SOFTWARE) == PXE_STATFLAGS_GET_STATUS_SOFTWARE) { *InterruptStatusPtr |= EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT; } - } if (GetTransmittedBuf) { @@ -125,15 +125,18 @@ PxeGetStatus ( if ((Snp->MaxRecycledTxBuf + SNP_TX_BUFFER_INCREASEMENT) >= SNP_MAX_TX_BUFFER_NUM) { return EFI_DEVICE_ERROR; } + Tmp = AllocatePool (sizeof (UINT64) * (Snp->MaxRecycledTxBuf + SNP_TX_BUFFER_INCREASEMENT)); if (Tmp == NULL) { return EFI_DEVICE_ERROR; } + CopyMem (Tmp, Snp->RecycledTxBuf, sizeof (UINT64) * Snp->RecycledTxBufCount); FreePool (Snp->RecycledTxBuf); - Snp->RecycledTxBuf = Tmp; + Snp->RecycledTxBuf = Tmp; Snp->MaxRecycledTxBuf += SNP_TX_BUFFER_INCREASEMENT; } + Snp->RecycledTxBuf[Snp->RecycledTxBufCount] = Db->TxBuffer[Index]; Snp->RecycledTxBufCount++; } @@ -147,7 +150,7 @@ PxeGetStatus ( // if (Snp->MediaStatusSupported) { Snp->Snp.Mode->MediaPresent = - (BOOLEAN) (((Snp->Cdb.StatFlags & PXE_STATFLAGS_GET_STATUS_NO_MEDIA) != 0) ? FALSE : TRUE); + (BOOLEAN)(((Snp->Cdb.StatFlags & PXE_STATFLAGS_GET_STATUS_NO_MEDIA) != 0) ? FALSE : TRUE); } return EFI_SUCCESS; @@ -194,9 +197,9 @@ PxeGetStatus ( EFI_STATUS EFIAPI SnpUndi32GetStatus ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - OUT UINT32 *InterruptStatus OPTIONAL, - OUT VOID **TxBuf OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + OUT UINT32 *InterruptStatus OPTIONAL, + OUT VOID **TxBuf OPTIONAL ) { SNP_DRIVER *Snp; @@ -207,7 +210,7 @@ SnpUndi32GetStatus ( return EFI_INVALID_PARAMETER; } - if (InterruptStatus == NULL && TxBuf == NULL) { + if ((InterruptStatus == NULL) && (TxBuf == NULL)) { return EFI_INVALID_PARAMETER; } @@ -220,19 +223,19 @@ SnpUndi32GetStatus ( } switch (Snp->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } - if (Snp->RecycledTxBufCount == 0 && TxBuf != NULL) { + if ((Snp->RecycledTxBufCount == 0) && (TxBuf != NULL)) { Status = PxeGetStatus (Snp, InterruptStatus, TRUE); } else { Status = PxeGetStatus (Snp, InterruptStatus, FALSE); @@ -246,7 +249,7 @@ SnpUndi32GetStatus ( *TxBuf = NULL; } else { Snp->RecycledTxBufCount--; - *TxBuf = (VOID *) (UINTN) Snp->RecycledTxBuf[Snp->RecycledTxBufCount]; + *TxBuf = (VOID *)(UINTN)Snp->RecycledTxBuf[Snp->RecycledTxBufCount]; } } diff --git a/NetworkPkg/SnpDxe/Initialize.c b/NetworkPkg/SnpDxe/Initialize.c index 5ff9d72f1d..c219a1cb20 100644 --- a/NetworkPkg/SnpDxe/Initialize.c +++ b/NetworkPkg/SnpDxe/Initialize.c @@ -6,7 +6,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Snp.h" /** @@ -23,8 +22,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeInit ( - SNP_DRIVER *Snp, - UINT16 CableDetectFlag + SNP_DRIVER *Snp, + UINT16 CableDetectFlag ) { PXE_CPB_INITIALIZE *Cpb; @@ -47,9 +46,9 @@ PxeInit ( if (Status != EFI_SUCCESS) { DEBUG ( (DEBUG_ERROR, - "\nSnp->PxeInit() AllocateBuffer %xh (%r)\n", - Status, - Status) + "\nSnp->PxeInit() AllocateBuffer %xh (%r)\n", + Status, + Status) ); return Status; @@ -60,40 +59,40 @@ PxeInit ( Snp->TxRxBuffer = Addr; } - Cpb->MemoryAddr = (UINT64)(UINTN) Snp->TxRxBuffer; + Cpb->MemoryAddr = (UINT64)(UINTN)Snp->TxRxBuffer; Cpb->MemoryLength = Snp->TxRxBufferSize; // // let UNDI decide/detect these values // - Cpb->LinkSpeed = 0; - Cpb->TxBufCnt = 0; - Cpb->TxBufSize = 0; - Cpb->RxBufCnt = 0; - Cpb->RxBufSize = 0; + Cpb->LinkSpeed = 0; + Cpb->TxBufCnt = 0; + Cpb->TxBufSize = 0; + Cpb->RxBufCnt = 0; + Cpb->RxBufSize = 0; - Cpb->DuplexMode = PXE_DUPLEX_DEFAULT; + Cpb->DuplexMode = PXE_DUPLEX_DEFAULT; - Cpb->LoopBackMode = LOOPBACK_NORMAL; + Cpb->LoopBackMode = LOOPBACK_NORMAL; - Snp->Cdb.OpCode = PXE_OPCODE_INITIALIZE; - Snp->Cdb.OpFlags = CableDetectFlag; + Snp->Cdb.OpCode = PXE_OPCODE_INITIALIZE; + Snp->Cdb.OpFlags = CableDetectFlag; - Snp->Cdb.CPBsize = (UINT16) sizeof (PXE_CPB_INITIALIZE); - Snp->Cdb.DBsize = (UINT16) sizeof (PXE_DB_INITIALIZE); + Snp->Cdb.CPBsize = (UINT16)sizeof (PXE_CPB_INITIALIZE); + Snp->Cdb.DBsize = (UINT16)sizeof (PXE_DB_INITIALIZE); - Snp->Cdb.CPBaddr = (UINT64)(UINTN) Snp->Cpb; - Snp->Cdb.DBaddr = (UINT64)(UINTN) Snp->Db; + Snp->Cdb.CPBaddr = (UINT64)(UINTN)Snp->Cpb; + Snp->Cdb.DBaddr = (UINT64)(UINTN)Snp->Db; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; DEBUG ((DEBUG_NET, "\nSnp->undi.initialize() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); // // There are two fields need to be checked here: @@ -103,47 +102,47 @@ PxeInit ( // the CDB.StatCode field contains the result of the command execution. // if ((((Snp->Cdb.StatFlags) & PXE_STATFLAGS_STATUS_MASK) == PXE_STATFLAGS_COMMAND_COMPLETE) && - (Snp->Cdb.StatCode == PXE_STATCODE_SUCCESS)) { + (Snp->Cdb.StatCode == PXE_STATCODE_SUCCESS)) + { // // If cable detect feature is enabled in CDB.OpFlags, check the CDB.StatFlags to see if there is an // active connection to this network device. If the no media StatFlag is set, the UNDI and network // device are still initialized. // if (CableDetectFlag == PXE_OPFLAGS_INITIALIZE_DETECT_CABLE) { - if(((Snp->Cdb.StatFlags) & PXE_STATFLAGS_INITIALIZED_NO_MEDIA) != PXE_STATFLAGS_INITIALIZED_NO_MEDIA) { + if (((Snp->Cdb.StatFlags) & PXE_STATFLAGS_INITIALIZED_NO_MEDIA) != PXE_STATFLAGS_INITIALIZED_NO_MEDIA) { Snp->Mode.MediaPresent = TRUE; } else { Snp->Mode.MediaPresent = FALSE; } } - Snp->Mode.State = EfiSimpleNetworkInitialized; - Status = EFI_SUCCESS; + Snp->Mode.State = EfiSimpleNetworkInitialized; + Status = EFI_SUCCESS; } else { DEBUG ( (DEBUG_WARN, - "\nSnp->undi.initialize() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) + "\nSnp->undi.initialize() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) ); if (Snp->TxRxBuffer != NULL) { Snp->PciIo->FreeBuffer ( Snp->PciIo, SNP_MEM_PAGES (Snp->TxRxBufferSize), - (VOID *) Snp->TxRxBuffer + (VOID *)Snp->TxRxBuffer ); } Snp->TxRxBuffer = NULL; - Status = EFI_DEVICE_ERROR; + Status = EFI_DEVICE_ERROR; } return Status; } - /** Resets a network adapter and allocates the transmit and receive buffers required by the network interface; optionally, also requests allocation of @@ -180,9 +179,9 @@ PxeInit ( EFI_STATUS EFIAPI SnpUndi32Initialize ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN UINTN ExtraRxBufferSize OPTIONAL, - IN UINTN ExtraTxBufferSize OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINTN ExtraRxBufferSize OPTIONAL, + IN UINTN ExtraTxBufferSize OPTIONAL ) { EFI_STATUS EfiStatus; @@ -203,36 +202,37 @@ SnpUndi32Initialize ( } switch (Snp->Mode.State) { - case EfiSimpleNetworkStarted: - break; + case EfiSimpleNetworkStarted: + break; - case EfiSimpleNetworkStopped: - EfiStatus = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + EfiStatus = EFI_NOT_STARTED; + goto ON_EXIT; - default: - EfiStatus = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + EfiStatus = EFI_DEVICE_ERROR; + goto ON_EXIT; } EfiStatus = gBS->CreateEvent ( - EVT_NOTIFY_WAIT, - TPL_NOTIFY, - &SnpWaitForPacketNotify, - Snp, - &Snp->Snp.WaitForPacket - ); + EVT_NOTIFY_WAIT, + TPL_NOTIFY, + &SnpWaitForPacketNotify, + Snp, + &Snp->Snp.WaitForPacket + ); if (EFI_ERROR (EfiStatus)) { Snp->Snp.WaitForPacket = NULL; - EfiStatus = EFI_DEVICE_ERROR; + EfiStatus = EFI_DEVICE_ERROR; goto ON_EXIT; } + // // // - Snp->Mode.MCastFilterCount = 0; - Snp->Mode.ReceiveFilterSetting = 0; + Snp->Mode.MCastFilterCount = 0; + Snp->Mode.ReceiveFilterSetting = 0; ZeroMem (Snp->Mode.MCastFilter, sizeof Snp->Mode.MCastFilter); CopyMem ( &Snp->Mode.CurrentAddress, @@ -243,7 +243,7 @@ SnpUndi32Initialize ( // // Compute tx/rx buffer sizes based on UNDI init info and parameters. // - Snp->TxRxBufferSize = (UINT32) (Snp->InitInfo.MemoryRequired + ExtraRxBufferSize + ExtraTxBufferSize); + Snp->TxRxBufferSize = (UINT32)(Snp->InitInfo.MemoryRequired + ExtraRxBufferSize + ExtraTxBufferSize); // // If UNDI support cable detect for INITIALIZE command, try it first. @@ -254,9 +254,9 @@ SnpUndi32Initialize ( } } - Snp->Mode.MediaPresent = FALSE; + Snp->Mode.MediaPresent = FALSE; - EfiStatus = PxeInit (Snp, PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE); + EfiStatus = PxeInit (Snp, PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE); if (EFI_ERROR (EfiStatus)) { gBS->CloseEvent (Snp->Snp.WaitForPacket); diff --git a/NetworkPkg/SnpDxe/Mcast_ip_to_mac.c b/NetworkPkg/SnpDxe/Mcast_ip_to_mac.c index e8fa077ee9..2b42e20aaf 100644 --- a/NetworkPkg/SnpDxe/Mcast_ip_to_mac.c +++ b/NetworkPkg/SnpDxe/Mcast_ip_to_mac.c @@ -26,29 +26,29 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeIp2Mac ( - IN SNP_DRIVER *Snp, - IN BOOLEAN IPv6, - IN EFI_IP_ADDRESS *IP, - IN OUT EFI_MAC_ADDRESS *MAC + IN SNP_DRIVER *Snp, + IN BOOLEAN IPv6, + IN EFI_IP_ADDRESS *IP, + IN OUT EFI_MAC_ADDRESS *MAC ) { - PXE_CPB_MCAST_IP_TO_MAC *Cpb; - PXE_DB_MCAST_IP_TO_MAC *Db; + PXE_CPB_MCAST_IP_TO_MAC *Cpb; + PXE_DB_MCAST_IP_TO_MAC *Db; - Cpb = Snp->Cpb; - Db = Snp->Db; - Snp->Cdb.OpCode = PXE_OPCODE_MCAST_IP_TO_MAC; - Snp->Cdb.OpFlags = (UINT16) (IPv6 ? PXE_OPFLAGS_MCAST_IPV6_TO_MAC : PXE_OPFLAGS_MCAST_IPV4_TO_MAC); - Snp->Cdb.CPBsize = (UINT16) sizeof (PXE_CPB_MCAST_IP_TO_MAC); - Snp->Cdb.DBsize = (UINT16) sizeof (PXE_DB_MCAST_IP_TO_MAC); + Cpb = Snp->Cpb; + Db = Snp->Db; + Snp->Cdb.OpCode = PXE_OPCODE_MCAST_IP_TO_MAC; + Snp->Cdb.OpFlags = (UINT16)(IPv6 ? PXE_OPFLAGS_MCAST_IPV6_TO_MAC : PXE_OPFLAGS_MCAST_IPV4_TO_MAC); + Snp->Cdb.CPBsize = (UINT16)sizeof (PXE_CPB_MCAST_IP_TO_MAC); + Snp->Cdb.DBsize = (UINT16)sizeof (PXE_DB_MCAST_IP_TO_MAC); - Snp->Cdb.CPBaddr = (UINT64)(UINTN) Cpb; - Snp->Cdb.DBaddr = (UINT64)(UINTN) Db; + Snp->Cdb.CPBaddr = (UINT64)(UINTN)Cpb; + Snp->Cdb.DBaddr = (UINT64)(UINTN)Db; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; CopyMem (&Cpb->IP, IP, sizeof (PXE_IP_ADDR)); @@ -57,44 +57,43 @@ PxeIp2Mac ( // DEBUG ((DEBUG_NET, "\nSnp->undi.mcast_ip_to_mac() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); switch (Snp->Cdb.StatCode) { - case PXE_STATCODE_SUCCESS: - break; - - case PXE_STATCODE_INVALID_CPB: - return EFI_INVALID_PARAMETER; - - case PXE_STATCODE_UNSUPPORTED: - DEBUG ( - (DEBUG_NET, - "\nSnp->undi.mcast_ip_to_mac() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - return EFI_UNSUPPORTED; - - default: - // - // UNDI command failed. Return EFI_DEVICE_ERROR - // to caller. - // - DEBUG ( - (DEBUG_NET, - "\nSnp->undi.mcast_ip_to_mac() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - - return EFI_DEVICE_ERROR; + case PXE_STATCODE_SUCCESS: + break; + + case PXE_STATCODE_INVALID_CPB: + return EFI_INVALID_PARAMETER; + + case PXE_STATCODE_UNSUPPORTED: + DEBUG ( + (DEBUG_NET, + "\nSnp->undi.mcast_ip_to_mac() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + return EFI_UNSUPPORTED; + + default: + // + // UNDI command failed. Return EFI_DEVICE_ERROR + // to caller. + // + DEBUG ( + (DEBUG_NET, + "\nSnp->undi.mcast_ip_to_mac() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + + return EFI_DEVICE_ERROR; } CopyMem (MAC, &Db->MAC, sizeof (PXE_MAC_ADDR)); return EFI_SUCCESS; } - /** Converts a multicast IP address to a multicast HW MAC address. @@ -126,10 +125,10 @@ PxeIp2Mac ( EFI_STATUS EFIAPI SnpUndi32McastIpToMac ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN IPv6, - IN EFI_IP_ADDRESS *IP, - OUT EFI_MAC_ADDRESS *MAC + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN IPv6, + IN EFI_IP_ADDRESS *IP, + OUT EFI_MAC_ADDRESS *MAC ) { SNP_DRIVER *Snp; @@ -143,7 +142,7 @@ SnpUndi32McastIpToMac ( return EFI_INVALID_PARAMETER; } - if (IP == NULL || MAC == NULL) { + if ((IP == NULL) || (MAC == NULL)) { return EFI_INVALID_PARAMETER; } @@ -152,16 +151,16 @@ SnpUndi32McastIpToMac ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); switch (Snp->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } Status = PxeIp2Mac (Snp, IPv6, IP, MAC); diff --git a/NetworkPkg/SnpDxe/Nvdata.c b/NetworkPkg/SnpDxe/Nvdata.c index 2ffe1c75a2..54bcec125b 100644 --- a/NetworkPkg/SnpDxe/Nvdata.c +++ b/NetworkPkg/SnpDxe/Nvdata.c @@ -9,7 +9,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Snp.h" - /** This routine calls Undi to read the desired number of eeprom bytes. @@ -26,60 +25,60 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeNvDataRead ( - IN SNP_DRIVER *Snp, - IN UINTN Offset, - IN UINTN BufferSize, - IN OUT VOID *Buffer + IN SNP_DRIVER *Snp, + IN UINTN Offset, + IN UINTN BufferSize, + IN OUT VOID *Buffer ) { - PXE_DB_NVDATA *Db; + PXE_DB_NVDATA *Db; - Db = Snp->Db; - Snp->Cdb.OpCode = PXE_OPCODE_NVDATA; + Db = Snp->Db; + Snp->Cdb.OpCode = PXE_OPCODE_NVDATA; - Snp->Cdb.OpFlags = PXE_OPFLAGS_NVDATA_READ; + Snp->Cdb.OpFlags = PXE_OPFLAGS_NVDATA_READ; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - Snp->Cdb.DBsize = (UINT16) sizeof (PXE_DB_NVDATA); - Snp->Cdb.DBaddr = (UINT64)(UINTN) Db; + Snp->Cdb.DBsize = (UINT16)sizeof (PXE_DB_NVDATA); + Snp->Cdb.DBaddr = (UINT64)(UINTN)Db; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nsnp->undi.nvdata () ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); switch (Snp->Cdb.StatCode) { - case PXE_STATCODE_SUCCESS: - break; - - case PXE_STATCODE_UNSUPPORTED: - DEBUG ( - (DEBUG_NET, - "\nsnp->undi.nvdata() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - - return EFI_UNSUPPORTED; - - default: - DEBUG ( - (DEBUG_NET, - "\nsnp->undi.nvdata() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - - return EFI_DEVICE_ERROR; + case PXE_STATCODE_SUCCESS: + break; + + case PXE_STATCODE_UNSUPPORTED: + DEBUG ( + (DEBUG_NET, + "\nsnp->undi.nvdata() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + + return EFI_UNSUPPORTED; + + default: + DEBUG ( + (DEBUG_NET, + "\nsnp->undi.nvdata() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + + return EFI_DEVICE_ERROR; } ASSERT (Offset < sizeof (Db->Data)); @@ -89,7 +88,6 @@ PxeNvDataRead ( return EFI_SUCCESS; } - /** Performs read and write operations on the NVRAM device attached to a network interface. @@ -144,11 +142,11 @@ PxeNvDataRead ( EFI_STATUS EFIAPI SnpUndi32NvData ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN ReadWrite, - IN UINTN Offset, - IN UINTN BufferSize, - IN OUT VOID *Buffer + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN ReadWrite, + IN UINTN Offset, + IN UINTN BufferSize, + IN OUT VOID *Buffer ) { SNP_DRIVER *Snp; @@ -170,24 +168,26 @@ SnpUndi32NvData ( // Return error if the SNP is not initialized. // switch (Snp->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } + // // Return error if non-volatile memory variables are not valid. // - if (Snp->Mode.NvRamSize == 0 || Snp->Mode.NvRamAccessSize == 0) { + if ((Snp->Mode.NvRamSize == 0) || (Snp->Mode.NvRamAccessSize == 0)) { Status = EFI_UNSUPPORTED; goto ON_EXIT; } + // // Check for invalid parameter combinations. // @@ -197,10 +197,12 @@ SnpUndi32NvData ( (Offset + BufferSize > Snp->Mode.NvRamSize) || (BufferSize % Snp->Mode.NvRamAccessSize != 0) || (Offset % Snp->Mode.NvRamAccessSize != 0) - ) { + ) + { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } + // // check the implementation flags of undi if we can write the nvdata! // diff --git a/NetworkPkg/SnpDxe/Receive.c b/NetworkPkg/SnpDxe/Receive.c index 1efb2ad8db..41601980f2 100644 --- a/NetworkPkg/SnpDxe/Receive.c +++ b/NetworkPkg/SnpDxe/Receive.c @@ -6,7 +6,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Snp.h" /** @@ -37,72 +36,72 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeReceive ( - SNP_DRIVER *Snp, - VOID *Buffer, - UINTN *BufferSize, - UINTN *HeaderSize, - EFI_MAC_ADDRESS *SrcAddr, - EFI_MAC_ADDRESS *DestAddr, - UINT16 *Protocol + SNP_DRIVER *Snp, + VOID *Buffer, + UINTN *BufferSize, + UINTN *HeaderSize, + EFI_MAC_ADDRESS *SrcAddr, + EFI_MAC_ADDRESS *DestAddr, + UINT16 *Protocol ) { - PXE_CPB_RECEIVE *Cpb; - PXE_DB_RECEIVE *Db; - UINTN BuffSize; + PXE_CPB_RECEIVE *Cpb; + PXE_DB_RECEIVE *Db; + UINTN BuffSize; - Cpb = Snp->Cpb; - Db = Snp->Db; - BuffSize = *BufferSize; + Cpb = Snp->Cpb; + Db = Snp->Db; + BuffSize = *BufferSize; - Cpb->BufferAddr = (UINT64)(UINTN) Buffer; - Cpb->BufferLen = (UINT32) *BufferSize; + Cpb->BufferAddr = (UINT64)(UINTN)Buffer; + Cpb->BufferLen = (UINT32)*BufferSize; - Cpb->reserved = 0; + Cpb->reserved = 0; - Snp->Cdb.OpCode = PXE_OPCODE_RECEIVE; - Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; + Snp->Cdb.OpCode = PXE_OPCODE_RECEIVE; + Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; - Snp->Cdb.CPBsize = (UINT16) sizeof (PXE_CPB_RECEIVE); - Snp->Cdb.CPBaddr = (UINT64)(UINTN) Cpb; + Snp->Cdb.CPBsize = (UINT16)sizeof (PXE_CPB_RECEIVE); + Snp->Cdb.CPBaddr = (UINT64)(UINTN)Cpb; - Snp->Cdb.DBsize = (UINT16) sizeof (PXE_DB_RECEIVE); - Snp->Cdb.DBaddr = (UINT64)(UINTN) Db; + Snp->Cdb.DBsize = (UINT16)sizeof (PXE_DB_RECEIVE); + Snp->Cdb.DBaddr = (UINT64)(UINTN)Db; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nsnp->undi.receive () ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); switch (Snp->Cdb.StatCode) { - case PXE_STATCODE_SUCCESS: - break; - - case PXE_STATCODE_NO_DATA: - DEBUG ( - (DEBUG_NET, - "\nsnp->undi.receive () %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - - return EFI_NOT_READY; - - default: - DEBUG ( - (DEBUG_ERROR, - "\nsnp->undi.receive() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - - return EFI_DEVICE_ERROR; + case PXE_STATCODE_SUCCESS: + break; + + case PXE_STATCODE_NO_DATA: + DEBUG ( + (DEBUG_NET, + "\nsnp->undi.receive () %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + + return EFI_NOT_READY; + + default: + DEBUG ( + (DEBUG_ERROR, + "\nsnp->undi.receive() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + + return EFI_DEVICE_ERROR; } *BufferSize = Db->FrameLen; @@ -123,7 +122,7 @@ PxeReceive ( // // We need to do the byte swapping // - *Protocol = (UINT16) PXE_SWAP_UINT16 (Db->Protocol); + *Protocol = (UINT16)PXE_SWAP_UINT16 (Db->Protocol); } // @@ -190,13 +189,13 @@ PxeReceive ( EFI_STATUS EFIAPI SnpUndi32Receive ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - OUT UINTN *HeaderSize OPTIONAL, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer, - OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, - OUT UINT16 *Protocol OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + OUT UINTN *HeaderSize OPTIONAL, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer, + OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, + OUT UINT16 *Protocol OPTIONAL ) { SNP_DRIVER *Snp; @@ -212,16 +211,16 @@ SnpUndi32Receive ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); switch (Snp->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } if ((BufferSize == NULL) || (Buffer == NULL)) { diff --git a/NetworkPkg/SnpDxe/Receive_filters.c b/NetworkPkg/SnpDxe/Receive_filters.c index 4666772a2d..4a21165567 100644 --- a/NetworkPkg/SnpDxe/Receive_filters.c +++ b/NetworkPkg/SnpDxe/Receive_filters.c @@ -7,8 +7,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - - #include "Snp.h" /** @@ -28,22 +26,22 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeRecvFilterEnable ( - SNP_DRIVER *Snp, - UINT32 EnableFlags, - UINTN MCastAddressCount, - EFI_MAC_ADDRESS *MCastAddressList + SNP_DRIVER *Snp, + UINT32 EnableFlags, + UINTN MCastAddressCount, + EFI_MAC_ADDRESS *MCastAddressList ) { - Snp->Cdb.OpCode = PXE_OPCODE_RECEIVE_FILTERS; - Snp->Cdb.OpFlags = PXE_OPFLAGS_RECEIVE_FILTER_ENABLE; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.OpCode = PXE_OPCODE_RECEIVE_FILTERS; + Snp->Cdb.OpFlags = PXE_OPFLAGS_RECEIVE_FILTER_ENABLE; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; if ((EnableFlags & EFI_SIMPLE_NETWORK_RECEIVE_UNICAST) != 0) { Snp->Cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_UNICAST; @@ -66,16 +64,17 @@ PxeRecvFilterEnable ( } if (MCastAddressCount != 0) { - Snp->Cdb.CPBsize = (UINT16) (MCastAddressCount * sizeof (EFI_MAC_ADDRESS)); - Snp->Cdb.CPBaddr = (UINT64)(UINTN)Snp->Cpb; + Snp->Cdb.CPBsize = (UINT16)(MCastAddressCount * sizeof (EFI_MAC_ADDRESS)); + Snp->Cdb.CPBaddr = (UINT64)(UINTN)Snp->Cpb; CopyMem (Snp->Cpb, MCastAddressList, Snp->Cdb.CPBsize); } + // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nsnp->undi.receive_filters() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); if (Snp->Cdb.StatCode != PXE_STATCODE_SUCCESS) { // @@ -83,19 +82,19 @@ PxeRecvFilterEnable ( // DEBUG ( (DEBUG_ERROR, - "\nsnp->undi.receive_filters() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) + "\nsnp->undi.receive_filters() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) ); switch (Snp->Cdb.StatCode) { - case PXE_STATCODE_INVALID_CDB: - case PXE_STATCODE_INVALID_CPB: - case PXE_STATCODE_INVALID_PARAMETER: - return EFI_INVALID_PARAMETER; + case PXE_STATCODE_INVALID_CDB: + case PXE_STATCODE_INVALID_CPB: + case PXE_STATCODE_INVALID_PARAMETER: + return EFI_INVALID_PARAMETER; - case PXE_STATCODE_UNSUPPORTED: - return EFI_UNSUPPORTED; + case PXE_STATCODE_UNSUPPORTED: + return EFI_UNSUPPORTED; } return EFI_DEVICE_ERROR; @@ -118,22 +117,22 @@ PxeRecvFilterEnable ( **/ EFI_STATUS PxeRecvFilterDisable ( - SNP_DRIVER *Snp, - UINT32 DisableFlags, - BOOLEAN ResetMCastList + SNP_DRIVER *Snp, + UINT32 DisableFlags, + BOOLEAN ResetMCastList ) { - Snp->Cdb.OpCode = PXE_OPCODE_RECEIVE_FILTERS; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; - - Snp->Cdb.OpFlags = (UINT16) ((DisableFlags != 0) ? PXE_OPFLAGS_RECEIVE_FILTER_DISABLE : PXE_OPFLAGS_NOT_USED); + Snp->Cdb.OpCode = PXE_OPCODE_RECEIVE_FILTERS; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + + Snp->Cdb.OpFlags = (UINT16)((DisableFlags != 0) ? PXE_OPFLAGS_RECEIVE_FILTER_DISABLE : PXE_OPFLAGS_NOT_USED); if (ResetMCastList) { Snp->Cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST; @@ -158,12 +157,13 @@ PxeRecvFilterDisable ( if ((DisableFlags & EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST) != 0) { Snp->Cdb.OpFlags |= PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST; } + // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nsnp->undi.receive_filters() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); if (Snp->Cdb.StatCode != PXE_STATCODE_SUCCESS) { // @@ -171,9 +171,9 @@ PxeRecvFilterDisable ( // DEBUG ( (DEBUG_ERROR, - "\nsnp->undi.receive_filters() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) + "\nsnp->undi.receive_filters() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) ); return EFI_DEVICE_ERROR; @@ -193,29 +193,29 @@ PxeRecvFilterDisable ( **/ EFI_STATUS PxeRecvFilterRead ( - SNP_DRIVER *Snp + SNP_DRIVER *Snp ) { - Snp->Cdb.OpCode = PXE_OPCODE_RECEIVE_FILTERS; - Snp->Cdb.OpFlags = PXE_OPFLAGS_RECEIVE_FILTER_READ; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.DBsize = (UINT16) (Snp->Mode.MaxMCastFilterCount * sizeof (EFI_MAC_ADDRESS)); - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.OpCode = PXE_OPCODE_RECEIVE_FILTERS; + Snp->Cdb.OpFlags = PXE_OPFLAGS_RECEIVE_FILTER_READ; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.DBsize = (UINT16)(Snp->Mode.MaxMCastFilterCount * sizeof (EFI_MAC_ADDRESS)); + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; if (Snp->Cdb.DBsize == 0) { - Snp->Cdb.DBaddr = (UINT64)(UINTN) NULL; + Snp->Cdb.DBaddr = (UINT64)(UINTN)NULL; } else { - Snp->Cdb.DBaddr = (UINT64)(UINTN) Snp->Db; + Snp->Cdb.DBaddr = (UINT64)(UINTN)Snp->Db; ZeroMem (Snp->Db, Snp->Cdb.DBsize); } - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; DEBUG ((DEBUG_NET, "\nsnp->undi.receive_filters() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); if (Snp->Cdb.StatCode != PXE_STATCODE_SUCCESS) { // @@ -223,13 +223,14 @@ PxeRecvFilterRead ( // DEBUG ( (DEBUG_ERROR, - "\nsnp->undi.receive_filters() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) + "\nsnp->undi.receive_filters() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) ); return EFI_DEVICE_ERROR; } + // // Convert UNDI32 StatFlags to EFI SNP filter flags. // @@ -261,19 +262,21 @@ PxeRecvFilterRead ( // Count number of active entries in multicast filter list. // { - EFI_MAC_ADDRESS ZeroMacAddr; + EFI_MAC_ADDRESS ZeroMacAddr; SetMem (&ZeroMacAddr, sizeof ZeroMacAddr, 0); for (Snp->Mode.MCastFilterCount = 0; Snp->Mode.MCastFilterCount < Snp->Mode.MaxMCastFilterCount; Snp->Mode.MCastFilterCount++ - ) { + ) + { if (CompareMem ( &Snp->Mode.MCastFilter[Snp->Mode.MCastFilterCount], &ZeroMacAddr, sizeof ZeroMacAddr - ) == 0) { + ) == 0) + { break; } } @@ -282,7 +285,6 @@ PxeRecvFilterRead ( return EFI_SUCCESS; } - /** Manages the multicast receive filters of a network interface. @@ -380,12 +382,12 @@ PxeRecvFilterRead ( EFI_STATUS EFIAPI SnpUndi32ReceiveFilters ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN UINT32 Enable, - IN UINT32 Disable, - IN BOOLEAN ResetMCastFilter, - IN UINTN MCastFilterCnt OPTIONAL, - IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINT32 Enable, + IN UINT32 Disable, + IN BOOLEAN ResetMCastFilter, + IN UINTN MCastFilterCnt OPTIONAL, + IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL ) { SNP_DRIVER *Snp; @@ -401,49 +403,50 @@ SnpUndi32ReceiveFilters ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); switch (Snp->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } + // // check if we are asked to enable or disable something that the UNDI // does not even support! // if (((Enable &~Snp->Mode.ReceiveFilterMask) != 0) || - ((Disable &~Snp->Mode.ReceiveFilterMask) != 0)) { + ((Disable &~Snp->Mode.ReceiveFilterMask) != 0)) + { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } if (ResetMCastFilter) { - - Disable |= EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST & Snp->Mode.ReceiveFilterMask; + Disable |= EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST & Snp->Mode.ReceiveFilterMask; MCastFilterCnt = 0; MCastFilter = NULL; } else { if (MCastFilterCnt != 0) { if ((MCastFilterCnt > Snp->Mode.MaxMCastFilterCount) || - (MCastFilter == NULL)) { - + (MCastFilter == NULL)) + { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } } } - if (Enable == 0 && Disable == 0 && !ResetMCastFilter && MCastFilterCnt == 0) { + if ((Enable == 0) && (Disable == 0) && !ResetMCastFilter && (MCastFilterCnt == 0)) { Status = EFI_SUCCESS; goto ON_EXIT; } - if ((Enable & EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST) != 0 && MCastFilterCnt == 0) { + if (((Enable & EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST) != 0) && (MCastFilterCnt == 0)) { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } diff --git a/NetworkPkg/SnpDxe/Reset.c b/NetworkPkg/SnpDxe/Reset.c index 40069c8722..2ff685376d 100644 --- a/NetworkPkg/SnpDxe/Reset.c +++ b/NetworkPkg/SnpDxe/Reset.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Snp.h" - /** Call UNDI to reset the NIC. @@ -20,33 +19,33 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeReset ( - SNP_DRIVER *Snp + SNP_DRIVER *Snp ) { - Snp->Cdb.OpCode = PXE_OPCODE_RESET; - Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.OpCode = PXE_OPCODE_RESET; + Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nsnp->undi.reset() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); if (Snp->Cdb.StatCode != PXE_STATCODE_SUCCESS) { DEBUG ( (DEBUG_WARN, - "\nsnp->undi32.reset() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) + "\nsnp->undi32.reset() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) ); // @@ -58,7 +57,6 @@ PxeReset ( return EFI_SUCCESS; } - /** Resets a network adapter and reinitializes it with the parameters that were provided in the previous call to Initialize(). @@ -86,8 +84,8 @@ PxeReset ( EFI_STATUS EFIAPI SnpUndi32Reset ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN ExtendedVerification + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN ExtendedVerification ) { SNP_DRIVER *Snp; @@ -109,16 +107,16 @@ SnpUndi32Reset ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); switch (Snp->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } Status = PxeReset (Snp); diff --git a/NetworkPkg/SnpDxe/Shutdown.c b/NetworkPkg/SnpDxe/Shutdown.c index ae6c93a00b..33fa7cb033 100644 --- a/NetworkPkg/SnpDxe/Shutdown.c +++ b/NetworkPkg/SnpDxe/Shutdown.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Snp.h" - /** Call UNDI to shut down the interface. @@ -20,26 +19,26 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeShutdown ( - IN SNP_DRIVER *Snp + IN SNP_DRIVER *Snp ) { - Snp->Cdb.OpCode = PXE_OPCODE_SHUTDOWN; - Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.OpCode = PXE_OPCODE_SHUTDOWN; + Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nsnp->undi.shutdown() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); if (Snp->Cdb.StatCode != PXE_STATCODE_SUCCESS) { // @@ -49,6 +48,7 @@ PxeShutdown ( return EFI_DEVICE_ERROR; } + // // Free allocated memory. // @@ -56,17 +56,16 @@ PxeShutdown ( Snp->PciIo->FreeBuffer ( Snp->PciIo, SNP_MEM_PAGES (Snp->TxRxBufferSize), - (VOID *) Snp->TxRxBuffer + (VOID *)Snp->TxRxBuffer ); } - Snp->TxRxBuffer = NULL; - Snp->TxRxBufferSize = 0; + Snp->TxRxBuffer = NULL; + Snp->TxRxBufferSize = 0; return EFI_SUCCESS; } - /** Resets a network adapter and leaves it in a state that is safe for another driver to initialize. @@ -89,7 +88,7 @@ PxeShutdown ( EFI_STATUS EFIAPI SnpUndi32Shutdown ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ) { SNP_DRIVER *Snp; @@ -111,25 +110,25 @@ SnpUndi32Shutdown ( // Return error if the SNP is not initialized. // switch (Snp->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } - Status = PxeShutdown (Snp); + Status = PxeShutdown (Snp); - Snp->Mode.State = EfiSimpleNetworkStarted; - Snp->Mode.ReceiveFilterSetting = 0; + Snp->Mode.State = EfiSimpleNetworkStarted; + Snp->Mode.ReceiveFilterSetting = 0; - Snp->Mode.MCastFilterCount = 0; - Snp->Mode.ReceiveFilterSetting = 0; + Snp->Mode.MCastFilterCount = 0; + Snp->Mode.ReceiveFilterSetting = 0; ZeroMem (Snp->Mode.MCastFilter, sizeof Snp->Mode.MCastFilter); CopyMem ( &Snp->Mode.CurrentAddress, diff --git a/NetworkPkg/SnpDxe/Snp.c b/NetworkPkg/SnpDxe/Snp.c index d0d086e578..95361c3cd3 100644 --- a/NetworkPkg/SnpDxe/Snp.c +++ b/NetworkPkg/SnpDxe/Snp.c @@ -19,13 +19,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent VOID EFIAPI SnpNotifyExitBootServices ( - EFI_EVENT Event, - VOID *Context + EFI_EVENT Event, + VOID *Context ) { - SNP_DRIVER *Snp; + SNP_DRIVER *Snp; - Snp = (SNP_DRIVER *)Context; + Snp = (SNP_DRIVER *)Context; // // Shutdown and stop UNDI driver @@ -47,22 +47,21 @@ SnpNotifyExitBootServices ( EFI_STATUS EFIAPI IssueHwUndiCommand ( - UINT64 Cdb + UINT64 Cdb ) { DEBUG ((DEBUG_ERROR, "\nIssueHwUndiCommand() - This should not be called!")); if (Cdb == 0) { return EFI_INVALID_PARAMETER; - } + // // %%TBD - For now, nothing is done. // return EFI_UNSUPPORTED; } - /** Compute 8-bit checksum of a buffer. @@ -75,22 +74,22 @@ IssueHwUndiCommand ( **/ UINT8 Calc8BitCksum ( - VOID *Buffer, - UINTN Length + VOID *Buffer, + UINTN Length ) { - UINT8 *Ptr; - UINT8 Cksum; + UINT8 *Ptr; + UINT8 Cksum; Ptr = Buffer; Cksum = 0; - if (Ptr == NULL || Length == 0) { + if ((Ptr == NULL) || (Length == 0)) { return 0; } while (Length-- != 0) { - Cksum = (UINT8) (Cksum + *Ptr++); + Cksum = (UINT8)(Cksum + *Ptr++); } return Cksum; @@ -117,14 +116,14 @@ Calc8BitCksum ( EFI_STATUS EFIAPI SimpleNetworkDriverSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_STATUS Status; - EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *NiiProtocol; - PXE_UNDI *Pxe; + EFI_STATUS Status; + EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *NiiProtocol; + PXE_UNDI *Pxe; Status = gBS->OpenProtocol ( Controller, @@ -141,7 +140,7 @@ SimpleNetworkDriverSupported ( Status = gBS->OpenProtocol ( Controller, &gEfiNetworkInterfaceIdentifierProtocolGuid_31, - (VOID **) &NiiProtocol, + (VOID **)&NiiProtocol, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -151,6 +150,7 @@ SimpleNetworkDriverSupported ( if (Status == EFI_ALREADY_STARTED) { DEBUG ((DEBUG_INFO, "Support(): Already Started. on handle %p\n", Controller)); } + return Status; } @@ -163,6 +163,7 @@ SimpleNetworkDriverSupported ( Status = EFI_UNSUPPORTED; goto Done; } + // // Check to see if !PXE structure is valid. Paragraph alignment of !PXE structure is required. // @@ -172,7 +173,7 @@ SimpleNetworkDriverSupported ( goto Done; } - Pxe = (PXE_UNDI *) (UINTN) (NiiProtocol->Id); + Pxe = (PXE_UNDI *)(UINTN)(NiiProtocol->Id); // // Verify !PXE revisions. @@ -190,16 +191,15 @@ SimpleNetworkDriverSupported ( } if (Pxe->hw.MajorVer < PXE_ROMID_MAJORVER) { - DEBUG ((DEBUG_NET, "\n!PXE.MajorVer is not supported.\n")); Status = EFI_UNSUPPORTED; goto Done; - - } else if (Pxe->hw.MajorVer == PXE_ROMID_MAJORVER && Pxe->hw.MinorVer < PXE_ROMID_MINORVER) { + } else if ((Pxe->hw.MajorVer == PXE_ROMID_MAJORVER) && (Pxe->hw.MinorVer < PXE_ROMID_MINORVER)) { DEBUG ((DEBUG_NET, "\n!PXE.MinorVer is not supported.")); Status = EFI_UNSUPPORTED; goto Done; } + // // Do S/W UNDI specific checks. // @@ -222,11 +222,11 @@ SimpleNetworkDriverSupported ( Done: gBS->CloseProtocol ( - Controller, - &gEfiNetworkInterfaceIdentifierProtocolGuid_31, - This->DriverBindingHandle, - Controller - ); + Controller, + &gEfiNetworkInterfaceIdentifierProtocolGuid_31, + This->DriverBindingHandle, + Controller + ); return Status; } @@ -252,31 +252,31 @@ Done: EFI_STATUS EFIAPI SimpleNetworkDriverStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ) { - EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii; - EFI_DEVICE_PATH_PROTOCOL *NiiDevicePath; - EFI_STATUS Status; - PXE_UNDI *Pxe; - SNP_DRIVER *Snp; - VOID *Address; - EFI_HANDLE Handle; - UINT8 BarIndex; - PXE_STATFLAGS InitStatFlags; - EFI_PCI_IO_PROTOCOL *PciIo; - EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *BarDesc; - BOOLEAN FoundIoBar; - BOOLEAN FoundMemoryBar; + EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii; + EFI_DEVICE_PATH_PROTOCOL *NiiDevicePath; + EFI_STATUS Status; + PXE_UNDI *Pxe; + SNP_DRIVER *Snp; + VOID *Address; + EFI_HANDLE Handle; + UINT8 BarIndex; + PXE_STATFLAGS InitStatFlags; + EFI_PCI_IO_PROTOCOL *PciIo; + EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *BarDesc; + BOOLEAN FoundIoBar; + BOOLEAN FoundMemoryBar; DEBUG ((DEBUG_NET, "\nSnpNotifyNetworkInterfaceIdentifier() ")); Status = gBS->OpenProtocol ( Controller, &gEfiDevicePathProtocolGuid, - (VOID **) &NiiDevicePath, + (VOID **)&NiiDevicePath, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -299,7 +299,7 @@ SimpleNetworkDriverStart ( Status = gBS->OpenProtocol ( Handle, &gEfiPciIoProtocolGuid, - (VOID **) &PciIo, + (VOID **)&PciIo, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -307,30 +307,31 @@ SimpleNetworkDriverStart ( if (EFI_ERROR (Status)) { return Status; } + // // Get the NII interface. // Status = gBS->OpenProtocol ( Controller, &gEfiNetworkInterfaceIdentifierProtocolGuid_31, - (VOID **) &Nii, + (VOID **)&Nii, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_BY_DRIVER ); if (EFI_ERROR (Status)) { gBS->CloseProtocol ( - Controller, - &gEfiDevicePathProtocolGuid, - This->DriverBindingHandle, - Controller - ); + Controller, + &gEfiDevicePathProtocolGuid, + This->DriverBindingHandle, + Controller + ); return Status; } DEBUG ((DEBUG_INFO, "Start(): UNDI3.1 found\n")); - Pxe = (PXE_UNDI *) (UINTN) (Nii->Id); + Pxe = (PXE_UNDI *)(UINTN)(Nii->Id); if (Calc8BitCksum (Pxe, Pxe->hw.Len) != 0) { DEBUG ((DEBUG_NET, "\n!PXE checksum is not correct.\n")); @@ -351,6 +352,7 @@ SimpleNetworkDriverStart ( DEBUG ((DEBUG_NET, "\nUNDI does not have promiscuous or broadcast support.")); goto NiiError; } + // // OK, we like this UNDI, and we know snp is not already there on this handle // Allocate and initialize a new simple network protocol structure. @@ -369,12 +371,12 @@ SimpleNetworkDriverStart ( goto NiiError; } - Snp = (SNP_DRIVER *) (UINTN) Address; + Snp = (SNP_DRIVER *)(UINTN)Address; ZeroMem (Snp, sizeof (SNP_DRIVER)); - Snp->PciIo = PciIo; - Snp->Signature = SNP_DRIVER_SIGNATURE; + Snp->PciIo = PciIo; + Snp->Signature = SNP_DRIVER_SIGNATURE; EfiInitializeLock (&Snp->Lock, TPL_NOTIFY); @@ -394,38 +396,39 @@ SimpleNetworkDriverStart ( Snp->Snp.Receive = SnpUndi32Receive; Snp->Snp.WaitForPacket = NULL; - Snp->Snp.Mode = &Snp->Mode; + Snp->Snp.Mode = &Snp->Mode; - Snp->TxRxBufferSize = 0; - Snp->TxRxBuffer = NULL; + Snp->TxRxBufferSize = 0; + Snp->TxRxBuffer = NULL; Snp->RecycledTxBuf = AllocatePool (sizeof (UINT64) * SNP_TX_BUFFER_INCREASEMENT); if (Snp->RecycledTxBuf == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Error_DeleteSNP; } - Snp->MaxRecycledTxBuf = SNP_TX_BUFFER_INCREASEMENT; - Snp->RecycledTxBufCount = 0; + + Snp->MaxRecycledTxBuf = SNP_TX_BUFFER_INCREASEMENT; + Snp->RecycledTxBufCount = 0; if (Nii->Revision >= EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL_REVISION) { Snp->IfNum = Nii->IfNum; - } else { - Snp->IfNum = (UINT8) (Nii->IfNum & 0xFF); + Snp->IfNum = (UINT8)(Nii->IfNum & 0xFF); } if ((Pxe->hw.Implementation & PXE_ROMID_IMP_HW_UNDI) != 0) { - Snp->IsSwUndi = FALSE; - Snp->IssueUndi32Command = &IssueHwUndiCommand; + Snp->IsSwUndi = FALSE; + Snp->IssueUndi32Command = &IssueHwUndiCommand; } else { Snp->IsSwUndi = TRUE; if ((Pxe->sw.Implementation & PXE_ROMID_IMP_SW_VIRT_ADDR) != 0) { - Snp->IssueUndi32Command = (ISSUE_UNDI32_COMMAND) (UINTN) Pxe->sw.EntryPoint; + Snp->IssueUndi32Command = (ISSUE_UNDI32_COMMAND)(UINTN)Pxe->sw.EntryPoint; } else { - Snp->IssueUndi32Command = (ISSUE_UNDI32_COMMAND) (UINTN) ((UINT8) (UINTN) Pxe + Pxe->sw.EntryPoint); + Snp->IssueUndi32Command = (ISSUE_UNDI32_COMMAND)(UINTN)((UINT8)(UINTN)Pxe + Pxe->sw.EntryPoint); } } + // // Allocate a global CPB and DB buffer for this UNDI interface. // we do this because: @@ -456,8 +459,8 @@ SimpleNetworkDriverStart ( goto Error_DeleteSNP; } - Snp->Cpb = (VOID *) (UINTN) Address; - Snp->Db = (VOID *) ((UINTN) Address + 2048); + Snp->Cpb = (VOID *)(UINTN)Address; + Snp->Db = (VOID *)((UINTN)Address + 2048); // // Find the correct BAR to do IO. @@ -475,7 +478,7 @@ SimpleNetworkDriverStart ( PciIo, BarIndex, NULL, - (VOID**) &BarDesc + (VOID **)&BarDesc ); if (Status == EFI_UNSUPPORTED) { continue; @@ -504,24 +507,24 @@ SimpleNetworkDriverStart ( goto Error_DeleteSNP; } - Snp->Cdb.OpCode = PXE_OPCODE_GET_INIT_INFO; - Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; + Snp->Cdb.OpCode = PXE_OPCODE_GET_INIT_INFO; + Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_DBADDR_NOT_USED; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_DBADDR_NOT_USED; - Snp->Cdb.DBsize = (UINT16) sizeof (Snp->InitInfo); - Snp->Cdb.DBaddr = (UINT64)(UINTN) (&Snp->InitInfo); + Snp->Cdb.DBsize = (UINT16)sizeof (Snp->InitInfo); + Snp->Cdb.DBaddr = (UINT64)(UINTN)(&Snp->InitInfo); - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; DEBUG ((DEBUG_NET, "\nSnp->undi.get_init_info() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); // // Save the INIT Stat Code... @@ -548,23 +551,23 @@ SimpleNetworkDriverStart ( Snp->Mode.MCastFilterCount = 0; switch (InitStatFlags & PXE_STATFLAGS_CABLE_DETECT_MASK) { - case PXE_STATFLAGS_CABLE_DETECT_SUPPORTED: - Snp->CableDetectSupported = TRUE; - break; + case PXE_STATFLAGS_CABLE_DETECT_SUPPORTED: + Snp->CableDetectSupported = TRUE; + break; - case PXE_STATFLAGS_CABLE_DETECT_NOT_SUPPORTED: - default: - Snp->CableDetectSupported = FALSE; + case PXE_STATFLAGS_CABLE_DETECT_NOT_SUPPORTED: + default: + Snp->CableDetectSupported = FALSE; } switch (InitStatFlags & PXE_STATFLAGS_GET_STATUS_NO_MEDIA_MASK) { - case PXE_STATFLAGS_GET_STATUS_NO_MEDIA_SUPPORTED: - Snp->MediaStatusSupported = TRUE; - break; + case PXE_STATFLAGS_GET_STATUS_NO_MEDIA_SUPPORTED: + Snp->MediaStatusSupported = TRUE; + break; - case PXE_STATFLAGS_GET_STATUS_NO_MEDIA_NOT_SUPPORTED: - default: - Snp->MediaStatusSupported = FALSE; + case PXE_STATFLAGS_GET_STATUS_NO_MEDIA_NOT_SUPPORTED: + default: + Snp->MediaStatusSupported = FALSE; } if (Snp->CableDetectSupported || Snp->MediaStatusSupported) { @@ -587,27 +590,22 @@ SimpleNetworkDriverStart ( if ((Pxe->hw.Implementation & PXE_ROMID_IMP_PROMISCUOUS_MULTICAST_RX_SUPPORTED) != 0) { Snp->Mode.ReceiveFilterMask |= EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST; - } if ((Pxe->hw.Implementation & PXE_ROMID_IMP_PROMISCUOUS_RX_SUPPORTED) != 0) { Snp->Mode.ReceiveFilterMask |= EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS; - } if ((Pxe->hw.Implementation & PXE_ROMID_IMP_BROADCAST_RX_SUPPORTED) != 0) { Snp->Mode.ReceiveFilterMask |= EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST; - } if ((Pxe->hw.Implementation & PXE_ROMID_IMP_FILTERED_MULTICAST_RX_SUPPORTED) != 0) { Snp->Mode.ReceiveFilterMask |= EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST; - } if ((Pxe->hw.Implementation & PXE_ROMID_IMP_PROMISCUOUS_MULTICAST_RX_SUPPORTED) != 0) { Snp->Mode.ReceiveFilterMask |= EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST; - } Snp->Mode.ReceiveFilterSetting = 0; @@ -698,18 +696,18 @@ Error_DeleteSNP: ); NiiError: gBS->CloseProtocol ( - Controller, - &gEfiNetworkInterfaceIdentifierProtocolGuid_31, - This->DriverBindingHandle, - Controller - ); + Controller, + &gEfiNetworkInterfaceIdentifierProtocolGuid_31, + This->DriverBindingHandle, + Controller + ); gBS->CloseProtocol ( - Controller, - &gEfiDevicePathProtocolGuid, - This->DriverBindingHandle, - Controller - ); + Controller, + &gEfiDevicePathProtocolGuid, + This->DriverBindingHandle, + Controller + ); // // If we got here that means we are in error state. @@ -742,16 +740,16 @@ NiiError: EFI_STATUS EFIAPI SimpleNetworkDriverStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE Controller, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer ) { - EFI_STATUS Status; - EFI_SIMPLE_NETWORK_PROTOCOL *SnpProtocol; - SNP_DRIVER *Snp; - EFI_PCI_IO_PROTOCOL *PciIo; + EFI_STATUS Status; + EFI_SIMPLE_NETWORK_PROTOCOL *SnpProtocol; + SNP_DRIVER *Snp; + EFI_PCI_IO_PROTOCOL *PciIo; // // Get our context back. @@ -759,7 +757,7 @@ SimpleNetworkDriverStop ( Status = gBS->OpenProtocol ( Controller, &gEfiSimpleNetworkProtocolGuid, - (VOID **) &SnpProtocol, + (VOID **)&SnpProtocol, This->DriverBindingHandle, Controller, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -826,7 +824,7 @@ SimpleNetworkDriverStop ( // // Simple Network Protocol Driver Global Variables // -EFI_DRIVER_BINDING_PROTOCOL gSimpleNetworkDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gSimpleNetworkDriverBinding = { SimpleNetworkDriverSupported, SimpleNetworkDriverStart, SimpleNetworkDriverStop, @@ -852,8 +850,8 @@ EFI_DRIVER_BINDING_PROTOCOL gSimpleNetworkDriverBinding = { EFI_STATUS EFIAPI InitializeSnpNiiDriver ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { return EfiLibInstallDriverBindingComponentName2 ( diff --git a/NetworkPkg/SnpDxe/Snp.h b/NetworkPkg/SnpDxe/Snp.h index 30dd8d5f26..d57804ca28 100644 --- a/NetworkPkg/SnpDxe/Snp.h +++ b/NetworkPkg/SnpDxe/Snp.h @@ -5,10 +5,10 @@ Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ + #ifndef _SNP_H_ #define _SNP_H_ - #include #include @@ -33,35 +33,34 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define FOUR_GIGABYTES (UINT64) 0x100000000ULL - #define SNP_DRIVER_SIGNATURE SIGNATURE_32 ('s', 'n', 'd', 's') #define MAX_MAP_LENGTH 100 -#define PCI_BAR_IO_MASK 0x00000003 -#define PCI_BAR_IO_MODE 0x00000001 +#define PCI_BAR_IO_MASK 0x00000003 +#define PCI_BAR_IO_MODE 0x00000001 -#define PCI_BAR_MEM_MASK 0x0000000F -#define PCI_BAR_MEM_MODE 0x00000000 -#define PCI_BAR_MEM_64BIT 0x00000004 +#define PCI_BAR_MEM_MASK 0x0000000F +#define PCI_BAR_MEM_MODE 0x00000000 +#define PCI_BAR_MEM_64BIT 0x00000004 -#define SNP_TX_BUFFER_INCREASEMENT MAX_XMIT_BUFFERS -#define SNP_MAX_TX_BUFFER_NUM 65536 +#define SNP_TX_BUFFER_INCREASEMENT MAX_XMIT_BUFFERS +#define SNP_MAX_TX_BUFFER_NUM 65536 typedef EFI_STATUS -(EFIAPI *ISSUE_UNDI32_COMMAND) ( +(EFIAPI *ISSUE_UNDI32_COMMAND)( UINT64 Cdb ); typedef struct { - UINT32 Signature; - EFI_LOCK Lock; + UINT32 Signature; + EFI_LOCK Lock; - EFI_SIMPLE_NETWORK_PROTOCOL Snp; - EFI_SIMPLE_NETWORK_MODE Mode; + EFI_SIMPLE_NETWORK_PROTOCOL Snp; + EFI_SIMPLE_NETWORK_MODE Mode; - EFI_HANDLE DeviceHandle; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; + EFI_HANDLE DeviceHandle; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; // // Local instance data needed by SNP driver @@ -69,96 +68,96 @@ typedef struct { // Pointer to S/W UNDI API entry point // This will be NULL for H/W UNDI // - ISSUE_UNDI32_COMMAND IssueUndi32Command; + ISSUE_UNDI32_COMMAND IssueUndi32Command; - BOOLEAN IsSwUndi; + BOOLEAN IsSwUndi; // // undi interface number, if one undi manages more nics // - PXE_IFNUM IfNum; + PXE_IFNUM IfNum; // // Allocated tx/rx buffer that was passed to UNDI Initialize. // - UINT32 TxRxBufferSize; - VOID *TxRxBuffer; + UINT32 TxRxBufferSize; + VOID *TxRxBuffer; // // mappable buffers for receive and fill header for undi3.0 // these will be used if the user buffers are above 4GB limit (instead of // mapping the user buffers) // - UINT8 *ReceiveBufffer; - VOID *ReceiveBufferUnmap; - UINT8 *FillHeaderBuffer; - VOID *FillHeaderBufferUnmap; + UINT8 *ReceiveBufffer; + VOID *ReceiveBufferUnmap; + UINT8 *FillHeaderBuffer; + VOID *FillHeaderBufferUnmap; - EFI_PCI_IO_PROTOCOL *PciIo; - UINT8 IoBarIndex; - UINT8 MemoryBarIndex; + EFI_PCI_IO_PROTOCOL *PciIo; + UINT8 IoBarIndex; + UINT8 MemoryBarIndex; // // Buffers for command descriptor block, command parameter block // and data block. // - PXE_CDB Cdb; - VOID *Cpb; - VOID *CpbUnmap; - VOID *Db; + PXE_CDB Cdb; + VOID *Cpb; + VOID *CpbUnmap; + VOID *Db; // // UNDI structure, we need to remember the init info for a long time! // - PXE_DB_GET_INIT_INFO InitInfo; + PXE_DB_GET_INIT_INFO InitInfo; - VOID *SnpDriverUnmap; + VOID *SnpDriverUnmap; // // when ever we map an address, we must remember it's address and the un-map // cookie so that we can unmap later // struct MAP_LIST { - EFI_PHYSICAL_ADDRESS VirtualAddress; - VOID *MapCookie; + EFI_PHYSICAL_ADDRESS VirtualAddress; + VOID *MapCookie; } MapList[MAX_MAP_LENGTH]; - EFI_EVENT ExitBootServicesEvent; + EFI_EVENT ExitBootServicesEvent; // // Whether UNDI support reporting media status from GET_STATUS command, // i.e. PXE_STATFLAGS_GET_STATUS_NO_MEDIA_SUPPORTED or // PXE_STATFLAGS_GET_STATUS_NO_MEDIA_NOT_SUPPORTED // - BOOLEAN MediaStatusSupported; + BOOLEAN MediaStatusSupported; // // Whether UNDI support cable detect for INITIALIZE command, // i.e. PXE_STATFLAGS_CABLE_DETECT_SUPPORTED or // PXE_STATFLAGS_CABLE_DETECT_NOT_SUPPORTED // - BOOLEAN CableDetectSupported; + BOOLEAN CableDetectSupported; // // Array of the recycled transmit buffer address from UNDI. // - UINT64 *RecycledTxBuf; + UINT64 *RecycledTxBuf; // // The maximum number of recycled buffer pointers in RecycledTxBuf. // - UINT32 MaxRecycledTxBuf; + UINT32 MaxRecycledTxBuf; // // Current number of recycled buffer pointers in RecycledTxBuf. // - UINT32 RecycledTxBufCount; + UINT32 RecycledTxBufCount; } SNP_DRIVER; -#define EFI_SIMPLE_NETWORK_DEV_FROM_THIS(a) CR (a, SNP_DRIVER, Snp, SNP_DRIVER_SIGNATURE) +#define EFI_SIMPLE_NETWORK_DEV_FROM_THIS(a) CR (a, SNP_DRIVER, Snp, SNP_DRIVER_SIGNATURE) // // Global Variables // -extern EFI_DRIVER_BINDING_PROTOCOL gSimpleNetworkDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gSimpleNetworkComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gSimpleNetworkComponentName2; +extern EFI_DRIVER_BINDING_PROTOCOL gSimpleNetworkDriverBinding; +extern EFI_COMPONENT_NAME_PROTOCOL gSimpleNetworkComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gSimpleNetworkComponentName2; /** this routine calls undi to start the interface and changes the snp state. @@ -171,7 +170,7 @@ extern EFI_COMPONENT_NAME2_PROTOCOL gSimpleNetworkComponentName2; **/ EFI_STATUS PxeStart ( - IN SNP_DRIVER *Snp + IN SNP_DRIVER *Snp ); /** @@ -187,7 +186,7 @@ PxeStart ( **/ EFI_STATUS PxeStop ( - SNP_DRIVER *Snp + SNP_DRIVER *Snp ); /** @@ -203,8 +202,8 @@ PxeStop ( **/ EFI_STATUS PxeInit ( - SNP_DRIVER *Snp, - UINT16 CableDetectFlag + SNP_DRIVER *Snp, + UINT16 CableDetectFlag ); /** @@ -218,7 +217,7 @@ PxeInit ( **/ EFI_STATUS PxeShutdown ( - IN SNP_DRIVER *Snp + IN SNP_DRIVER *Snp ); /** @@ -233,7 +232,7 @@ PxeShutdown ( **/ EFI_STATUS PxeGetStnAddr ( - SNP_DRIVER *Snp + SNP_DRIVER *Snp ); /** @@ -255,9 +254,9 @@ PxeGetStnAddr ( **/ EFI_STATUS PxeGetStatus ( - IN SNP_DRIVER *Snp, - OUT UINT32 *InterruptStatusPtr, - IN BOOLEAN GetTransmittedBuf + IN SNP_DRIVER *Snp, + OUT UINT32 *InterruptStatusPtr, + IN BOOLEAN GetTransmittedBuf ); /** @@ -277,8 +276,8 @@ PxeGetStatus ( VOID EFIAPI SnpUndi32CallbackBlock ( - IN UINT64 UniqueId, - IN UINT32 Enable + IN UINT64 UniqueId, + IN UINT32 Enable ); /** @@ -294,8 +293,8 @@ SnpUndi32CallbackBlock ( VOID EFIAPI SnpUndi32CallbackDelay ( - IN UINT64 UniqueId, - IN UINT64 MicroSeconds + IN UINT64 UniqueId, + IN UINT64 MicroSeconds ); /** @@ -314,11 +313,11 @@ SnpUndi32CallbackDelay ( VOID EFIAPI SnpUndi32CallbackMemio ( - IN UINT64 UniqueId, - IN UINT8 ReadOrWrite, - IN UINT8 NumBytes, - IN UINT64 MemOrPortAddr, - IN OUT UINT64 BufferPtr + IN UINT64 UniqueId, + IN UINT8 ReadOrWrite, + IN UINT8 NumBytes, + IN UINT64 MemOrPortAddr, + IN OUT UINT64 BufferPtr ); /** @@ -338,11 +337,11 @@ SnpUndi32CallbackMemio ( VOID EFIAPI SnpUndi32CallbackMap ( - IN UINT64 UniqueId, - IN UINT64 CpuAddr, - IN UINT32 NumBytes, - IN UINT32 Direction, - IN OUT UINT64 DeviceAddrPtr + IN UINT64 UniqueId, + IN UINT64 CpuAddr, + IN UINT32 NumBytes, + IN UINT32 Direction, + IN OUT UINT64 DeviceAddrPtr ); /** @@ -362,11 +361,11 @@ SnpUndi32CallbackMap ( VOID EFIAPI SnpUndi32CallbackUnmap ( - IN UINT64 UniqueId, - IN UINT64 CpuAddr, - IN UINT32 NumBytes, - IN UINT32 Direction, - IN UINT64 DeviceAddr + IN UINT64 UniqueId, + IN UINT64 CpuAddr, + IN UINT32 NumBytes, + IN UINT32 Direction, + IN UINT64 DeviceAddr ); /** @@ -393,11 +392,11 @@ SnpUndi32CallbackUnmap ( VOID EFIAPI SnpUndi32CallbackSync ( - IN UINT64 UniqueId, - IN UINT64 CpuAddr, - IN UINT32 NumBytes, - IN UINT32 Direction, - IN UINT64 DeviceAddr + IN UINT64 UniqueId, + IN UINT64 CpuAddr, + IN UINT32 NumBytes, + IN UINT32 Direction, + IN UINT64 DeviceAddr ); /** @@ -419,7 +418,7 @@ SnpUndi32CallbackSync ( EFI_STATUS EFIAPI SnpUndi32Start ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ); /** @@ -443,7 +442,7 @@ SnpUndi32Start ( EFI_STATUS EFIAPI SnpUndi32Stop ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ); /** @@ -482,9 +481,9 @@ SnpUndi32Stop ( EFI_STATUS EFIAPI SnpUndi32Initialize ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN UINTN ExtraRxBufferSize OPTIONAL, - IN UINTN ExtraTxBufferSize OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINTN ExtraRxBufferSize OPTIONAL, + IN UINTN ExtraTxBufferSize OPTIONAL ); /** @@ -540,7 +539,7 @@ SnpUndi32Reset ( EFI_STATUS EFIAPI SnpUndi32Shutdown ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ); /** @@ -640,12 +639,12 @@ SnpUndi32Shutdown ( EFI_STATUS EFIAPI SnpUndi32ReceiveFilters ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN UINT32 Enable, - IN UINT32 Disable, - IN BOOLEAN ResetMCastFilter, - IN UINTN MCastFilterCnt OPTIONAL, - IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINT32 Enable, + IN UINT32 Disable, + IN BOOLEAN ResetMCastFilter, + IN UINTN MCastFilterCnt OPTIONAL, + IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL ); /** @@ -683,9 +682,9 @@ SnpUndi32ReceiveFilters ( EFI_STATUS EFIAPI SnpUndi32StationAddress ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN Reset, - IN EFI_MAC_ADDRESS *New OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN Reset, + IN EFI_MAC_ADDRESS *New OPTIONAL ); /** @@ -738,10 +737,10 @@ SnpUndi32StationAddress ( EFI_STATUS EFIAPI SnpUndi32Statistics ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN Reset, - IN OUT UINTN *StatisticsSize OPTIONAL, - IN OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN Reset, + IN OUT UINTN *StatisticsSize OPTIONAL, + IN OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL ); /** @@ -775,10 +774,10 @@ SnpUndi32Statistics ( EFI_STATUS EFIAPI SnpUndi32McastIpToMac ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN IPv6, - IN EFI_IP_ADDRESS *IP, - OUT EFI_MAC_ADDRESS *MAC + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN IPv6, + IN EFI_IP_ADDRESS *IP, + OUT EFI_MAC_ADDRESS *MAC ); /** @@ -835,11 +834,11 @@ SnpUndi32McastIpToMac ( EFI_STATUS EFIAPI SnpUndi32NvData ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN ReadWrite, - IN UINTN Offset, - IN UINTN BufferSize, - IN OUT VOID *Buffer + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN ReadWrite, + IN UINTN Offset, + IN UINTN BufferSize, + IN OUT VOID *Buffer ); /** @@ -883,9 +882,9 @@ SnpUndi32NvData ( EFI_STATUS EFIAPI SnpUndi32GetStatus ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - OUT UINT32 *InterruptStatus OPTIONAL, - OUT VOID **TxBuf OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + OUT UINT32 *InterruptStatus OPTIONAL, + OUT VOID **TxBuf OPTIONAL ); /** @@ -945,13 +944,13 @@ SnpUndi32GetStatus ( EFI_STATUS EFIAPI SnpUndi32Transmit ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN UINTN HeaderSize, - IN UINTN BufferSize, - IN VOID *Buffer, - IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, - IN UINT16 *Protocol OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINTN HeaderSize, + IN UINTN BufferSize, + IN VOID *Buffer, + IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, + IN UINT16 *Protocol OPTIONAL ); /** @@ -1005,13 +1004,13 @@ SnpUndi32Transmit ( EFI_STATUS EFIAPI SnpUndi32Receive ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - OUT UINTN *HeaderSize OPTIONAL, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer, - OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, - OUT UINT16 *Protocol OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + OUT UINTN *HeaderSize OPTIONAL, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer, + OUT EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + OUT EFI_MAC_ADDRESS *DestAddr OPTIONAL, + OUT UINT16 *Protocol OPTIONAL ); /** @@ -1024,11 +1023,10 @@ SnpUndi32Receive ( VOID EFIAPI SnpWaitForPacketNotify ( - EFI_EVENT Event, - VOID *SnpPtr + EFI_EVENT Event, + VOID *SnpPtr ); #define SNP_MEM_PAGES(x) (((x) - 1) / 4096 + 1) - #endif /* _SNP_H_ */ diff --git a/NetworkPkg/SnpDxe/Start.c b/NetworkPkg/SnpDxe/Start.c index 596610d1a9..514582b9b9 100644 --- a/NetworkPkg/SnpDxe/Start.c +++ b/NetworkPkg/SnpDxe/Start.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Snp.h" - /** Call UNDI to start the interface and changes the snp state. @@ -20,55 +19,56 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeStart ( - IN SNP_DRIVER *Snp + IN SNP_DRIVER *Snp ) { PXE_CPB_START_31 *Cpb31; - Cpb31 = Snp->Cpb; + Cpb31 = Snp->Cpb; // // Initialize UNDI Start CDB for H/W UNDI // - Snp->Cdb.OpCode = PXE_OPCODE_START; - Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.OpCode = PXE_OPCODE_START; + Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Make changes to H/W UNDI Start CDB if this is // a S/W UNDI. // if (Snp->IsSwUndi) { - Snp->Cdb.CPBsize = (UINT16) sizeof (PXE_CPB_START_31); - Snp->Cdb.CPBaddr = (UINT64)(UINTN) Cpb31; + Snp->Cdb.CPBsize = (UINT16)sizeof (PXE_CPB_START_31); + Snp->Cdb.CPBaddr = (UINT64)(UINTN)Cpb31; - Cpb31->Delay = (UINT64)(UINTN) &SnpUndi32CallbackDelay; - Cpb31->Block = (UINT64)(UINTN) &SnpUndi32CallbackBlock; + Cpb31->Delay = (UINT64)(UINTN)&SnpUndi32CallbackDelay; + Cpb31->Block = (UINT64)(UINTN)&SnpUndi32CallbackBlock; // // Virtual == Physical. This can be set to zero. // - Cpb31->Virt2Phys = (UINT64)(UINTN) 0; - Cpb31->Mem_IO = (UINT64)(UINTN) &SnpUndi32CallbackMemio; + Cpb31->Virt2Phys = (UINT64)(UINTN)0; + Cpb31->Mem_IO = (UINT64)(UINTN)&SnpUndi32CallbackMemio; - Cpb31->Map_Mem = (UINT64)(UINTN) &SnpUndi32CallbackMap; - Cpb31->UnMap_Mem = (UINT64)(UINTN) &SnpUndi32CallbackUnmap; - Cpb31->Sync_Mem = (UINT64)(UINTN) &SnpUndi32CallbackSync; + Cpb31->Map_Mem = (UINT64)(UINTN)&SnpUndi32CallbackMap; + Cpb31->UnMap_Mem = (UINT64)(UINTN)&SnpUndi32CallbackUnmap; + Cpb31->Sync_Mem = (UINT64)(UINTN)&SnpUndi32CallbackSync; - Cpb31->Unique_ID = (UINT64)(UINTN) Snp; + Cpb31->Unique_ID = (UINT64)(UINTN)Snp; } + // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nsnp->undi.start() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); if (Snp->Cdb.StatCode != PXE_STATCODE_SUCCESS) { // @@ -76,13 +76,14 @@ PxeStart ( // DEBUG ( (DEBUG_ERROR, - "\nsnp->undi.start() %xh:%xh\n", - Snp->Cdb.StatCode, - Snp->Cdb.StatFlags) + "\nsnp->undi.start() %xh:%xh\n", + Snp->Cdb.StatCode, + Snp->Cdb.StatFlags) ); return EFI_DEVICE_ERROR; } + // // Set simple network state to Started and return success. // @@ -91,7 +92,6 @@ PxeStart ( return EFI_SUCCESS; } - /** Change the state of a network interface from "stopped" to "started." @@ -111,7 +111,7 @@ PxeStart ( EFI_STATUS EFIAPI SnpUndi32Start ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ) { SNP_DRIVER *Snp; @@ -128,23 +128,24 @@ SnpUndi32Start ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); switch (Snp->Mode.State) { - case EfiSimpleNetworkStopped: - break; + case EfiSimpleNetworkStopped: + break; - case EfiSimpleNetworkStarted: - case EfiSimpleNetworkInitialized: - Status = EFI_ALREADY_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStarted: + case EfiSimpleNetworkInitialized: + Status = EFI_ALREADY_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } Status = PxeStart (Snp); if (EFI_ERROR (Status)) { goto ON_EXIT; } + // // clear the map_list in SNP structure // diff --git a/NetworkPkg/SnpDxe/Station_address.c b/NetworkPkg/SnpDxe/Station_address.c index c88601e456..66ddbf6831 100644 --- a/NetworkPkg/SnpDxe/Station_address.c +++ b/NetworkPkg/SnpDxe/Station_address.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Snp.h" - /** Call UNDI to read the MAC address of the NIC and update the mode structure with the address. @@ -21,43 +20,44 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeGetStnAddr ( - SNP_DRIVER *Snp + SNP_DRIVER *Snp ) { PXE_DB_STATION_ADDRESS *Db; - Db = Snp->Db; - Snp->Cdb.OpCode = PXE_OPCODE_STATION_ADDRESS; - Snp->Cdb.OpFlags = PXE_OPFLAGS_STATION_ADDRESS_READ; + Db = Snp->Db; + Snp->Cdb.OpCode = PXE_OPCODE_STATION_ADDRESS; + Snp->Cdb.OpFlags = PXE_OPFLAGS_STATION_ADDRESS_READ; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.DBsize = (UINT16) sizeof (PXE_DB_STATION_ADDRESS); - Snp->Cdb.DBaddr = (UINT64)(UINTN) Db; + Snp->Cdb.DBsize = (UINT16)sizeof (PXE_DB_STATION_ADDRESS); + Snp->Cdb.DBaddr = (UINT64)(UINTN)Db; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nsnp->undi.station_addr() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); if (Snp->Cdb.StatCode != PXE_STATCODE_SUCCESS) { DEBUG ( (DEBUG_ERROR, - "\nsnp->undi.station_addr() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) + "\nsnp->undi.station_addr() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) ); return EFI_DEVICE_ERROR; } + // // Set new station address in SNP->Mode structure and return success. // @@ -82,7 +82,6 @@ PxeGetStnAddr ( return EFI_SUCCESS; } - /** Call UNDI to set a new MAC address for the NIC. @@ -95,21 +94,21 @@ PxeGetStnAddr ( **/ EFI_STATUS PxeSetStnAddr ( - SNP_DRIVER *Snp, - EFI_MAC_ADDRESS *NewMacAddr + SNP_DRIVER *Snp, + EFI_MAC_ADDRESS *NewMacAddr ) { - PXE_CPB_STATION_ADDRESS *Cpb; - PXE_DB_STATION_ADDRESS *Db; + PXE_CPB_STATION_ADDRESS *Cpb; + PXE_DB_STATION_ADDRESS *Db; Cpb = Snp->Cpb; Db = Snp->Db; Snp->Cdb.OpCode = PXE_OPCODE_STATION_ADDRESS; if (NewMacAddr == NULL) { - Snp->Cdb.OpFlags = PXE_OPFLAGS_STATION_ADDRESS_RESET; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.OpFlags = PXE_OPFLAGS_STATION_ADDRESS_RESET; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; } else { Snp->Cdb.OpFlags = PXE_OPFLAGS_STATION_ADDRESS_WRITE; // @@ -117,31 +116,31 @@ PxeSetStnAddr ( // CopyMem (&Cpb->StationAddr, NewMacAddr, Snp->Mode.HwAddressSize); - Snp->Cdb.CPBsize = (UINT16) sizeof (PXE_CPB_STATION_ADDRESS); - Snp->Cdb.CPBaddr = (UINT64)(UINTN) Cpb; + Snp->Cdb.CPBsize = (UINT16)sizeof (PXE_CPB_STATION_ADDRESS); + Snp->Cdb.CPBaddr = (UINT64)(UINTN)Cpb; } - Snp->Cdb.DBsize = (UINT16) sizeof (PXE_DB_STATION_ADDRESS); - Snp->Cdb.DBaddr = (UINT64)(UINTN) Db; + Snp->Cdb.DBsize = (UINT16)sizeof (PXE_DB_STATION_ADDRESS); + Snp->Cdb.DBaddr = (UINT64)(UINTN)Db; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nsnp->undi.station_addr() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); if (Snp->Cdb.StatCode != PXE_STATCODE_SUCCESS) { DEBUG ( (DEBUG_ERROR, - "\nsnp->undi.station_addr() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) + "\nsnp->undi.station_addr() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) ); // @@ -149,6 +148,7 @@ PxeSetStnAddr ( // return EFI_DEVICE_ERROR; } + // // read the changed address and save it in SNP->Mode structure // @@ -157,7 +157,6 @@ PxeSetStnAddr ( return EFI_SUCCESS; } - /** Modifies or resets the current station address, if supported. @@ -193,9 +192,9 @@ PxeSetStnAddr ( EFI_STATUS EFIAPI SnpUndi32StationAddress ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN Reset, - IN EFI_MAC_ADDRESS *New OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN Reset, + IN EFI_MAC_ADDRESS *New OPTIONAL ) { SNP_DRIVER *Snp; @@ -206,7 +205,8 @@ SnpUndi32StationAddress ( // Check for invalid parameter combinations. // if ((This == NULL) || - (!Reset && (New == NULL))) { + (!Reset && (New == NULL))) + { return EFI_INVALID_PARAMETER; } @@ -218,16 +218,16 @@ SnpUndi32StationAddress ( // Return error if the SNP is not initialized. // switch (Snp->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } if (Reset) { diff --git a/NetworkPkg/SnpDxe/Statistics.c b/NetworkPkg/SnpDxe/Statistics.c index faeec536fc..34d1332523 100644 --- a/NetworkPkg/SnpDxe/Statistics.c +++ b/NetworkPkg/SnpDxe/Statistics.c @@ -6,10 +6,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Snp.h" - /** Resets or collects the statistics on a network interface. @@ -60,20 +58,20 @@ SPDX-License-Identifier: BSD-2-Clause-Patent EFI_STATUS EFIAPI SnpUndi32Statistics ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN BOOLEAN Reset, - IN OUT UINTN *StatisticsSize OPTIONAL, - IN OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN BOOLEAN Reset, + IN OUT UINTN *StatisticsSize OPTIONAL, + IN OUT EFI_NETWORK_STATISTICS *StatisticsTable OPTIONAL ) { - SNP_DRIVER *Snp; - PXE_DB_STATISTICS *Db; - UINT64 *Stp; - UINT64 Mask; - UINTN Size; - UINTN Index; - EFI_TPL OldTpl; - EFI_STATUS Status; + SNP_DRIVER *Snp; + PXE_DB_STATISTICS *Db; + UINT64 *Stp; + UINT64 Mask; + UINTN Size; + UINTN Index; + EFI_TPL OldTpl; + EFI_STATUS Status; // // Get pointer to SNP driver instance for *This. @@ -90,78 +88,81 @@ SnpUndi32Statistics ( // Return error if the SNP is not initialized. // switch (Snp->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } + // // if we are not resetting the counters, we have to have a valid stat table // with >0 size. if no reset, no table and no size, return success. // - if (!Reset && StatisticsSize == NULL) { + if (!Reset && (StatisticsSize == NULL)) { Status = (StatisticsTable != NULL) ? EFI_INVALID_PARAMETER : EFI_SUCCESS; goto ON_EXIT; } + // // Initialize UNDI Statistics CDB // - Snp->Cdb.OpCode = PXE_OPCODE_STATISTICS; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.OpCode = PXE_OPCODE_STATISTICS; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; if (Reset) { - Snp->Cdb.OpFlags = PXE_OPFLAGS_STATISTICS_RESET; - Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; - Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; - Db = Snp->Db; + Snp->Cdb.OpFlags = PXE_OPFLAGS_STATISTICS_RESET; + Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; + Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; + Db = Snp->Db; } else { - Snp->Cdb.OpFlags = PXE_OPFLAGS_STATISTICS_READ; - Snp->Cdb.DBsize = (UINT16) sizeof (PXE_DB_STATISTICS); - Snp->Cdb.DBaddr = (UINT64)(UINTN) (Db = Snp->Db); + Snp->Cdb.OpFlags = PXE_OPFLAGS_STATISTICS_READ; + Snp->Cdb.DBsize = (UINT16)sizeof (PXE_DB_STATISTICS); + Snp->Cdb.DBaddr = (UINT64)(UINTN)(Db = Snp->Db); } + // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nsnp->undi.statistics() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); switch (Snp->Cdb.StatCode) { - case PXE_STATCODE_SUCCESS: - break; - - case PXE_STATCODE_UNSUPPORTED: - DEBUG ( - (DEBUG_ERROR, - "\nsnp->undi.statistics() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - - Status = EFI_UNSUPPORTED; - goto ON_EXIT; - - default: - DEBUG ( - (DEBUG_ERROR, - "\nsnp->undi.statistics() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); + case PXE_STATCODE_SUCCESS: + break; - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + case PXE_STATCODE_UNSUPPORTED: + DEBUG ( + (DEBUG_ERROR, + "\nsnp->undi.statistics() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + + Status = EFI_UNSUPPORTED; + goto ON_EXIT; + + default: + DEBUG ( + (DEBUG_ERROR, + "\nsnp->undi.statistics() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } if (Reset) { @@ -171,16 +172,17 @@ SnpUndi32Statistics ( if (StatisticsTable == NULL) { *StatisticsSize = sizeof (EFI_NETWORK_STATISTICS); - Status = EFI_BUFFER_TOO_SMALL; + Status = EFI_BUFFER_TOO_SMALL; goto ON_EXIT; } + // // Convert the UNDI statistics information to SNP statistics // information. // ZeroMem (StatisticsTable, *StatisticsSize); - Stp = (UINT64 *) StatisticsTable; - Size = 0; + Stp = (UINT64 *)StatisticsTable; + Size = 0; for (Index = 0, Mask = 1; Index < 64; Index++, Mask = LShiftU64 (Mask, 1), Stp++) { // @@ -192,12 +194,13 @@ SnpUndi32Statistics ( } if ((Db->Supported & Mask) != 0) { - *Stp = Db->Data[Index]; - Size = Index + 1; + *Stp = Db->Data[Index]; + Size = Index + 1; } else { SetMem (Stp, sizeof (UINT64), 0xFF); } } + // // Compute size up to last supported statistic. // @@ -211,10 +214,10 @@ SnpUndi32Statistics ( if (*StatisticsSize >= Size) { *StatisticsSize = Size; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; } else { *StatisticsSize = Size; - Status = EFI_BUFFER_TOO_SMALL; + Status = EFI_BUFFER_TOO_SMALL; } ON_EXIT: diff --git a/NetworkPkg/SnpDxe/Stop.c b/NetworkPkg/SnpDxe/Stop.c index b45b87cf9c..a3ce530fea 100644 --- a/NetworkPkg/SnpDxe/Stop.c +++ b/NetworkPkg/SnpDxe/Stop.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Snp.h" - /** Call UNDI to stop the interface and changes the snp state. @@ -20,37 +19,38 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeStop ( - SNP_DRIVER *Snp + SNP_DRIVER *Snp ) { - Snp->Cdb.OpCode = PXE_OPCODE_STOP; - Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; - Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; - Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.OpCode = PXE_OPCODE_STOP; + Snp->Cdb.OpFlags = PXE_OPFLAGS_NOT_USED; + Snp->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; + Snp->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Issue UNDI command // DEBUG ((DEBUG_NET, "\nsnp->undi.stop() ")); - (*Snp->IssueUndi32Command) ((UINT64)(UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); if (Snp->Cdb.StatCode != PXE_STATCODE_SUCCESS) { DEBUG ( (DEBUG_WARN, - "\nsnp->undi.stop() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) + "\nsnp->undi.stop() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) ); return EFI_DEVICE_ERROR; } + // // Set simple network state to Started and return success. // @@ -58,7 +58,6 @@ PxeStop ( return EFI_SUCCESS; } - /** Changes the state of a network interface from "started" to "stopped." @@ -83,7 +82,7 @@ PxeStop ( EFI_STATUS EFIAPI SnpUndi32Stop ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This + IN EFI_SIMPLE_NETWORK_PROTOCOL *This ) { SNP_DRIVER *Snp; @@ -99,16 +98,16 @@ SnpUndi32Stop ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); switch (Snp->Mode.State) { - case EfiSimpleNetworkStarted: - break; + case EfiSimpleNetworkStarted: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } Status = PxeStop (Snp); diff --git a/NetworkPkg/SnpDxe/Transmit.c b/NetworkPkg/SnpDxe/Transmit.c index 3ff6b9d167..e2c7467b86 100644 --- a/NetworkPkg/SnpDxe/Transmit.c +++ b/NetworkPkg/SnpDxe/Transmit.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Snp.h" - /** Call UNDI to create the meadia header for the given data buffer. @@ -27,14 +26,14 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS PxeFillHeader ( - SNP_DRIVER *Snp, - VOID *MacHeaderPtr, - UINTN HeaderSize, - VOID *Buffer, - UINTN BufferSize, - EFI_MAC_ADDRESS *DestAddr, - EFI_MAC_ADDRESS *SrcAddr, - UINT16 *ProtocolPtr + SNP_DRIVER *Snp, + VOID *MacHeaderPtr, + UINTN HeaderSize, + VOID *Buffer, + UINTN BufferSize, + EFI_MAC_ADDRESS *DestAddr, + EFI_MAC_ADDRESS *SrcAddr, + UINT16 *ProtocolPtr ) { PXE_CPB_FILL_HEADER_FRAGMENTED *Cpb; @@ -42,90 +41,89 @@ PxeFillHeader ( Cpb = Snp->Cpb; if (SrcAddr != NULL) { CopyMem ( - (VOID *) Cpb->SrcAddr, - (VOID *) SrcAddr, + (VOID *)Cpb->SrcAddr, + (VOID *)SrcAddr, Snp->Mode.HwAddressSize ); } else { CopyMem ( - (VOID *) Cpb->SrcAddr, - (VOID *) &(Snp->Mode.CurrentAddress), + (VOID *)Cpb->SrcAddr, + (VOID *)&(Snp->Mode.CurrentAddress), Snp->Mode.HwAddressSize ); } CopyMem ( - (VOID *) Cpb->DestAddr, - (VOID *) DestAddr, + (VOID *)Cpb->DestAddr, + (VOID *)DestAddr, Snp->Mode.HwAddressSize ); // // we need to do the byte swapping // - Cpb->Protocol = (UINT16) PXE_SWAP_UINT16 (*ProtocolPtr); + Cpb->Protocol = (UINT16)PXE_SWAP_UINT16 (*ProtocolPtr); - Cpb->PacketLen = (UINT32) (BufferSize); - Cpb->MediaHeaderLen = (UINT16) HeaderSize; + Cpb->PacketLen = (UINT32)(BufferSize); + Cpb->MediaHeaderLen = (UINT16)HeaderSize; - Cpb->FragCnt = 2; - Cpb->reserved = 0; + Cpb->FragCnt = 2; + Cpb->reserved = 0; - Cpb->FragDesc[0].FragAddr = (UINT64)(UINTN) MacHeaderPtr; - Cpb->FragDesc[0].FragLen = (UINT32) HeaderSize; - Cpb->FragDesc[1].FragAddr = (UINT64)(UINTN) Buffer; - Cpb->FragDesc[1].FragLen = (UINT32) BufferSize; + Cpb->FragDesc[0].FragAddr = (UINT64)(UINTN)MacHeaderPtr; + Cpb->FragDesc[0].FragLen = (UINT32)HeaderSize; + Cpb->FragDesc[1].FragAddr = (UINT64)(UINTN)Buffer; + Cpb->FragDesc[1].FragLen = (UINT32)BufferSize; Cpb->FragDesc[0].reserved = Cpb->FragDesc[1].reserved = 0; - Snp->Cdb.OpCode = PXE_OPCODE_FILL_HEADER; - Snp->Cdb.OpFlags = PXE_OPFLAGS_FILL_HEADER_FRAGMENTED; + Snp->Cdb.OpCode = PXE_OPCODE_FILL_HEADER; + Snp->Cdb.OpFlags = PXE_OPFLAGS_FILL_HEADER_FRAGMENTED; - Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; - Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; + Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; + Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; - Snp->Cdb.CPBsize = (UINT16) sizeof (PXE_CPB_FILL_HEADER_FRAGMENTED); - Snp->Cdb.CPBaddr = (UINT64)(UINTN) Cpb; + Snp->Cdb.CPBsize = (UINT16)sizeof (PXE_CPB_FILL_HEADER_FRAGMENTED); + Snp->Cdb.CPBaddr = (UINT64)(UINTN)Cpb; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Issue UNDI command and check result. // DEBUG ((DEBUG_NET, "\nSnp->undi.fill_header() ")); - (*Snp->IssueUndi32Command) ((UINT64) (UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); switch (Snp->Cdb.StatCode) { - case PXE_STATCODE_SUCCESS: - return EFI_SUCCESS; - - case PXE_STATCODE_INVALID_PARAMETER: - DEBUG ( - (DEBUG_ERROR, - "\nSnp->undi.fill_header() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - - return EFI_INVALID_PARAMETER; - - default: - DEBUG ( - (DEBUG_ERROR, - "\nSnp->undi.fill_header() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - - return EFI_DEVICE_ERROR; + case PXE_STATCODE_SUCCESS: + return EFI_SUCCESS; + + case PXE_STATCODE_INVALID_PARAMETER: + DEBUG ( + (DEBUG_ERROR, + "\nSnp->undi.fill_header() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + + return EFI_INVALID_PARAMETER; + + default: + DEBUG ( + (DEBUG_ERROR, + "\nSnp->undi.fill_header() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + + return EFI_DEVICE_ERROR; } } - /** This routine calls undi to transmit the given data buffer @@ -139,34 +137,34 @@ PxeFillHeader ( **/ EFI_STATUS PxeTransmit ( - SNP_DRIVER *Snp, - VOID *Buffer, - UINTN BufferSize + SNP_DRIVER *Snp, + VOID *Buffer, + UINTN BufferSize ) { PXE_CPB_TRANSMIT *Cpb; EFI_STATUS Status; - Cpb = Snp->Cpb; - Cpb->FrameAddr = (UINT64) (UINTN) Buffer; - Cpb->DataLen = (UINT32) BufferSize; + Cpb = Snp->Cpb; + Cpb->FrameAddr = (UINT64)(UINTN)Buffer; + Cpb->DataLen = (UINT32)BufferSize; Cpb->MediaheaderLen = 0; Cpb->reserved = 0; - Snp->Cdb.OpFlags = PXE_OPFLAGS_TRANSMIT_WHOLE; + Snp->Cdb.OpFlags = PXE_OPFLAGS_TRANSMIT_WHOLE; - Snp->Cdb.CPBsize = (UINT16) sizeof (PXE_CPB_TRANSMIT); - Snp->Cdb.CPBaddr = (UINT64)(UINTN) Cpb; + Snp->Cdb.CPBsize = (UINT16)sizeof (PXE_CPB_TRANSMIT); + Snp->Cdb.CPBaddr = (UINT64)(UINTN)Cpb; - Snp->Cdb.OpCode = PXE_OPCODE_TRANSMIT; - Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; - Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; + Snp->Cdb.OpCode = PXE_OPCODE_TRANSMIT; + Snp->Cdb.DBsize = PXE_DBSIZE_NOT_USED; + Snp->Cdb.DBaddr = PXE_DBADDR_NOT_USED; - Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - Snp->Cdb.IFnum = Snp->IfNum; - Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + Snp->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + Snp->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + Snp->Cdb.IFnum = Snp->IfNum; + Snp->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Issue UNDI command and check result. @@ -177,7 +175,7 @@ PxeTransmit ( DEBUG ((DEBUG_NET, "\nSnp->Cdb.DBaddr == %LX", Snp->Cdb.DBaddr)); DEBUG ((DEBUG_NET, "\nCpb->FrameAddr == %LX\n", Cpb->FrameAddr)); - (*Snp->IssueUndi32Command) ((UINT64) (UINTN) &Snp->Cdb); + (*Snp->IssueUndi32Command)((UINT64)(UINTN)&Snp->Cdb); DEBUG ((DEBUG_NET, "\nexit Snp->undi.transmit() ")); @@ -185,29 +183,29 @@ PxeTransmit ( // we will unmap the buffers in get_status call, not here // switch (Snp->Cdb.StatCode) { - case PXE_STATCODE_SUCCESS: - return EFI_SUCCESS; - - case PXE_STATCODE_BUFFER_FULL: - case PXE_STATCODE_QUEUE_FULL: - case PXE_STATCODE_BUSY: - Status = EFI_NOT_READY; - DEBUG ( - (DEBUG_NET, - "\nSnp->undi.transmit() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - break; - - default: - DEBUG ( - (DEBUG_ERROR, - "\nSnp->undi.transmit() %xh:%xh\n", - Snp->Cdb.StatFlags, - Snp->Cdb.StatCode) - ); - Status = EFI_DEVICE_ERROR; + case PXE_STATCODE_SUCCESS: + return EFI_SUCCESS; + + case PXE_STATCODE_BUFFER_FULL: + case PXE_STATCODE_QUEUE_FULL: + case PXE_STATCODE_BUSY: + Status = EFI_NOT_READY; + DEBUG ( + (DEBUG_NET, + "\nSnp->undi.transmit() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + break; + + default: + DEBUG ( + (DEBUG_ERROR, + "\nSnp->undi.transmit() %xh:%xh\n", + Snp->Cdb.StatFlags, + Snp->Cdb.StatCode) + ); + Status = EFI_DEVICE_ERROR; } return Status; @@ -270,13 +268,13 @@ PxeTransmit ( EFI_STATUS EFIAPI SnpUndi32Transmit ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *This, - IN UINTN HeaderSize, - IN UINTN BufferSize, - IN VOID *Buffer, - IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, - IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, - IN UINT16 *Protocol OPTIONAL + IN EFI_SIMPLE_NETWORK_PROTOCOL *This, + IN UINTN HeaderSize, + IN UINTN BufferSize, + IN VOID *Buffer, + IN EFI_MAC_ADDRESS *SrcAddr OPTIONAL, + IN EFI_MAC_ADDRESS *DestAddr OPTIONAL, + IN UINT16 *Protocol OPTIONAL ) { SNP_DRIVER *Snp; @@ -296,16 +294,16 @@ SnpUndi32Transmit ( } switch (Snp->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - Status = EFI_NOT_STARTED; - goto ON_EXIT; + case EfiSimpleNetworkStopped: + Status = EFI_NOT_STARTED; + goto ON_EXIT; - default: - Status = EFI_DEVICE_ERROR; - goto ON_EXIT; + default: + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } if (Buffer == NULL) { @@ -323,21 +321,21 @@ SnpUndi32Transmit ( // we need the destination address and the protocol // if (HeaderSize != 0) { - if (HeaderSize != Snp->Mode.MediaHeaderSize || DestAddr == 0 || Protocol == 0) { + if ((HeaderSize != Snp->Mode.MediaHeaderSize) || (DestAddr == 0) || (Protocol == 0)) { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } Status = PxeFillHeader ( - Snp, - Buffer, - HeaderSize, - (UINT8 *) Buffer + HeaderSize, - BufferSize - HeaderSize, - DestAddr, - SrcAddr, - Protocol - ); + Snp, + Buffer, + HeaderSize, + (UINT8 *)Buffer + HeaderSize, + BufferSize - HeaderSize, + DestAddr, + SrcAddr, + Protocol + ); if (EFI_ERROR (Status)) { goto ON_EXIT; diff --git a/NetworkPkg/SnpDxe/WaitForPacket.c b/NetworkPkg/SnpDxe/WaitForPacket.c index c337e69290..f0e9041238 100644 --- a/NetworkPkg/SnpDxe/WaitForPacket.c +++ b/NetworkPkg/SnpDxe/WaitForPacket.c @@ -8,7 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Snp.h" - /** Notification call back function for WaitForPacket event. @@ -19,64 +18,67 @@ SPDX-License-Identifier: BSD-2-Clause-Patent VOID EFIAPI SnpWaitForPacketNotify ( - EFI_EVENT Event, - VOID *SnpPtr + EFI_EVENT Event, + VOID *SnpPtr ) { - PXE_DB_GET_STATUS PxeDbGetStatus; + PXE_DB_GET_STATUS PxeDbGetStatus; // // Do nothing if either parameter is a NULL pointer. // - if (Event == NULL || SnpPtr == NULL) { - return ; + if ((Event == NULL) || (SnpPtr == NULL)) { + return; } + // // Do nothing if the SNP interface is not initialized. // - switch (((SNP_DRIVER *) SnpPtr)->Mode.State) { - case EfiSimpleNetworkInitialized: - break; + switch (((SNP_DRIVER *)SnpPtr)->Mode.State) { + case EfiSimpleNetworkInitialized: + break; - case EfiSimpleNetworkStopped: - case EfiSimpleNetworkStarted: - default: - return ; + case EfiSimpleNetworkStopped: + case EfiSimpleNetworkStarted: + default: + return; } + // // Fill in CDB for UNDI GetStatus(). // - ((SNP_DRIVER *) SnpPtr)->Cdb.OpCode = PXE_OPCODE_GET_STATUS; - ((SNP_DRIVER *) SnpPtr)->Cdb.OpFlags = 0; - ((SNP_DRIVER *) SnpPtr)->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; - ((SNP_DRIVER *) SnpPtr)->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; - ((SNP_DRIVER *) SnpPtr)->Cdb.DBsize = (UINT16) (sizeof (UINT32) * 2); - ((SNP_DRIVER *) SnpPtr)->Cdb.DBaddr = (UINT64)(UINTN) (((SNP_DRIVER *) SnpPtr)->Db); - ((SNP_DRIVER *) SnpPtr)->Cdb.StatCode = PXE_STATCODE_INITIALIZE; - ((SNP_DRIVER *) SnpPtr)->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; - ((SNP_DRIVER *) SnpPtr)->Cdb.IFnum = ((SNP_DRIVER *) SnpPtr)->IfNum; - ((SNP_DRIVER *) SnpPtr)->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; + ((SNP_DRIVER *)SnpPtr)->Cdb.OpCode = PXE_OPCODE_GET_STATUS; + ((SNP_DRIVER *)SnpPtr)->Cdb.OpFlags = 0; + ((SNP_DRIVER *)SnpPtr)->Cdb.CPBsize = PXE_CPBSIZE_NOT_USED; + ((SNP_DRIVER *)SnpPtr)->Cdb.CPBaddr = PXE_CPBADDR_NOT_USED; + ((SNP_DRIVER *)SnpPtr)->Cdb.DBsize = (UINT16)(sizeof (UINT32) * 2); + ((SNP_DRIVER *)SnpPtr)->Cdb.DBaddr = (UINT64)(UINTN)(((SNP_DRIVER *)SnpPtr)->Db); + ((SNP_DRIVER *)SnpPtr)->Cdb.StatCode = PXE_STATCODE_INITIALIZE; + ((SNP_DRIVER *)SnpPtr)->Cdb.StatFlags = PXE_STATFLAGS_INITIALIZE; + ((SNP_DRIVER *)SnpPtr)->Cdb.IFnum = ((SNP_DRIVER *)SnpPtr)->IfNum; + ((SNP_DRIVER *)SnpPtr)->Cdb.Control = PXE_CONTROL_LAST_CDB_IN_LIST; // // Clear contents of DB buffer. // - ZeroMem (((SNP_DRIVER *) SnpPtr)->Db, sizeof (UINT32) * 2); + ZeroMem (((SNP_DRIVER *)SnpPtr)->Db, sizeof (UINT32) * 2); // // Issue UNDI command and check result. // - (*((SNP_DRIVER *) SnpPtr)->IssueUndi32Command) ((UINT64)(UINTN) &((SNP_DRIVER *) SnpPtr)->Cdb); + (*((SNP_DRIVER *)SnpPtr)->IssueUndi32Command)((UINT64)(UINTN)&((SNP_DRIVER *)SnpPtr)->Cdb); - if (((SNP_DRIVER *) SnpPtr)->Cdb.StatCode != EFI_SUCCESS) { - return ; + if (((SNP_DRIVER *)SnpPtr)->Cdb.StatCode != EFI_SUCCESS) { + return; } + // // We might have a packet. Check the receive length and signal // the event if the length is not zero. // CopyMem ( &PxeDbGetStatus, - ((SNP_DRIVER *) SnpPtr)->Db, + ((SNP_DRIVER *)SnpPtr)->Db, sizeof (UINT32) * 2 ); diff --git a/NetworkPkg/TcpDxe/ComponentName.c b/NetworkPkg/TcpDxe/ComponentName.c index ddc7116e55..7c4575eda5 100644 --- a/NetworkPkg/TcpDxe/ComponentName.c +++ b/NetworkPkg/TcpDxe/ComponentName.c @@ -138,7 +138,7 @@ TcpComponentNameGetControllerName ( /// /// EFI Component Name Protocol /// -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gTcpComponentName = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gTcpComponentName = { TcpComponentNameGetDriverName, TcpComponentNameGetControllerName, "eng" @@ -147,13 +147,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gTcpComponentName /// /// EFI Component Name 2 Protocol /// -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gTcpComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) TcpComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) TcpComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gTcpComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)TcpComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)TcpComponentNameGetControllerName, "en" }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mTcpDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mTcpDriverNameTable[] = { { "eng;en", L"TCP Network Service Driver" @@ -164,7 +164,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mTcpDriverNameTabl } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gTcpControllerNameTable = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gTcpControllerNameTable = NULL; /** Retrieves a Unicode string that is the user-readable name of the driver. @@ -216,7 +216,7 @@ TcpComponentNameGetDriverName ( This->SupportedLanguages, mTcpDriverNameTable, DriverName, - (BOOLEAN) (This == &gTcpComponentName) + (BOOLEAN)(This == &gTcpComponentName) ); } @@ -232,12 +232,12 @@ TcpComponentNameGetDriverName ( **/ EFI_STATUS UpdateTcp4Name ( - IN EFI_TCP4_PROTOCOL *Tcp4 + IN EFI_TCP4_PROTOCOL *Tcp4 ) { - EFI_STATUS Status; - CHAR16 HandleName[80]; - EFI_TCP4_CONFIG_DATA Tcp4ConfigData; + EFI_STATUS Status; + CHAR16 HandleName[80]; + EFI_TCP4_CONFIG_DATA Tcp4ConfigData; if (Tcp4 == NULL) { return EFI_INVALID_PARAMETER; @@ -250,7 +250,9 @@ UpdateTcp4Name ( ZeroMem (&Tcp4ConfigData, sizeof (Tcp4ConfigData)); Status = Tcp4->GetModeData (Tcp4, NULL, &Tcp4ConfigData, NULL, NULL, NULL); if (!EFI_ERROR (Status)) { - UnicodeSPrint (HandleName, sizeof (HandleName), + UnicodeSPrint ( + HandleName, + sizeof (HandleName), L"TCPv4 (SrcPort=%d, DestPort=%d, ActiveFlag=%s)", Tcp4ConfigData.AccessPoint.StationPort, Tcp4ConfigData.AccessPoint.RemotePort, @@ -303,12 +305,12 @@ UpdateTcp4Name ( **/ EFI_STATUS UpdateTcp6Name ( - IN EFI_TCP6_PROTOCOL *Tcp6 + IN EFI_TCP6_PROTOCOL *Tcp6 ) { - EFI_STATUS Status; - CHAR16 HandleName[80]; - EFI_TCP6_CONFIG_DATA Tcp6ConfigData; + EFI_STATUS Status; + CHAR16 HandleName[80]; + EFI_TCP6_CONFIG_DATA Tcp6ConfigData; if (Tcp6 == NULL) { return EFI_INVALID_PARAMETER; @@ -320,7 +322,9 @@ UpdateTcp6Name ( ZeroMem (&Tcp6ConfigData, sizeof (Tcp6ConfigData)); Status = Tcp6->GetModeData (Tcp6, NULL, &Tcp6ConfigData, NULL, NULL, NULL); if (!EFI_ERROR (Status)) { - UnicodeSPrint (HandleName, sizeof (HandleName), + UnicodeSPrint ( + HandleName, + sizeof (HandleName), L"TCPv6(SrcPort=%d, DestPort=%d, ActiveFlag=%d)", Tcp6ConfigData.AccessPoint.StationPort, Tcp6ConfigData.AccessPoint.RemotePort, @@ -332,7 +336,6 @@ UpdateTcp6Name ( return Status; } - if (gTcpControllerNameTable != NULL) { FreeUnicodeStringTable (gTcpControllerNameTable); gTcpControllerNameTable = NULL; @@ -434,9 +437,9 @@ TcpComponentNameGetControllerName ( OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_TCP4_PROTOCOL *Tcp4; - EFI_TCP6_PROTOCOL *Tcp6; + EFI_STATUS Status; + EFI_TCP4_PROTOCOL *Tcp4; + EFI_TCP6_PROTOCOL *Tcp6; // // Only provide names for child handles. @@ -460,7 +463,7 @@ TcpComponentNameGetControllerName ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiTcp6ProtocolGuid, - (VOID **)&Tcp6, + (VOID **)&Tcp6, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -491,13 +494,13 @@ TcpComponentNameGetControllerName ( // Retrieve an instance of a produced protocol from ChildHandle // Status = gBS->OpenProtocol ( - ChildHandle, - &gEfiTcp4ProtocolGuid, - (VOID **)&Tcp4, - NULL, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); + ChildHandle, + &gEfiTcp4ProtocolGuid, + (VOID **)&Tcp4, + NULL, + NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); if (EFI_ERROR (Status)) { return Status; } @@ -519,4 +522,3 @@ TcpComponentNameGetControllerName ( (BOOLEAN)(This == &gTcpComponentName) ); } - diff --git a/NetworkPkg/TcpDxe/SockImpl.c b/NetworkPkg/TcpDxe/SockImpl.c index 2ab0b69140..145495223b 100644 --- a/NetworkPkg/TcpDxe/SockImpl.c +++ b/NetworkPkg/TcpDxe/SockImpl.c @@ -19,7 +19,7 @@ **/ NET_BUF * SockBufFirst ( - IN SOCK_BUFFER *Sockbuf + IN SOCK_BUFFER *Sockbuf ) { LIST_ENTRY *NetbufList; @@ -45,8 +45,8 @@ SockBufFirst ( **/ NET_BUF * SockBufNext ( - IN SOCK_BUFFER *Sockbuf, - IN NET_BUF *SockEntry + IN SOCK_BUFFER *Sockbuf, + IN NET_BUF *SockEntry ) { LIST_ENTRY *NetbufList; @@ -56,8 +56,8 @@ SockBufNext ( if ((SockEntry->List.ForwardLink == NetbufList) || (SockEntry->List.BackLink == &SockEntry->List) || (SockEntry->List.ForwardLink == &SockEntry->List) - ) { - + ) + { return NULL; } @@ -73,7 +73,7 @@ SockBufNext ( VOID EFIAPI SockFreeFoo ( - IN VOID *Arg + IN VOID *Arg ) { return; @@ -94,9 +94,9 @@ SockFreeFoo ( **/ UINT32 SockTcpDataToRcv ( - IN SOCK_BUFFER *SockBuffer, - OUT BOOLEAN *IsUrg, - IN UINT32 BufLen + IN SOCK_BUFFER *SockBuffer, + OUT BOOLEAN *IsUrg, + IN UINT32 BufLen ) { NET_BUF *RcvBufEntry; @@ -112,16 +112,15 @@ SockTcpDataToRcv ( RcvBufEntry = SockBufFirst (SockBuffer); ASSERT (RcvBufEntry != NULL); - TcpRsvData = (TCP_RSV_DATA *) RcvBufEntry->ProtoData; + TcpRsvData = (TCP_RSV_DATA *)RcvBufEntry->ProtoData; // // Check whether the receive data is out of bound. If yes, calculate the maximum // allowed length of the urgent data and output it. // - *IsUrg = (BOOLEAN) ((TcpRsvData->UrgLen > 0) ? TRUE : FALSE); + *IsUrg = (BOOLEAN)((TcpRsvData->UrgLen > 0) ? TRUE : FALSE); if (*IsUrg && (TcpRsvData->UrgLen < RcvBufEntry->TotalSize)) { - DataLen = MIN (TcpRsvData->UrgLen, BufLen); if (DataLen < TcpRsvData->UrgLen) { @@ -131,29 +130,26 @@ SockTcpDataToRcv ( } return DataLen; - } // // Process the next socket receive buffer to get the maximum allowed length // of the received data. // - DataLen = RcvBufEntry->TotalSize; + DataLen = RcvBufEntry->TotalSize; RcvBufEntry = SockBufNext (SockBuffer, RcvBufEntry); while ((BufLen > DataLen) && (RcvBufEntry != NULL)) { + TcpRsvData = (TCP_RSV_DATA *)RcvBufEntry->ProtoData; - TcpRsvData = (TCP_RSV_DATA *) RcvBufEntry->ProtoData; - - Urg = (BOOLEAN) ((TcpRsvData->UrgLen > 0) ? TRUE : FALSE); + Urg = (BOOLEAN)((TcpRsvData->UrgLen > 0) ? TRUE : FALSE); if (*IsUrg != Urg) { break; } - if (*IsUrg && TcpRsvData->UrgLen < RcvBufEntry->TotalSize) { - + if (*IsUrg && (TcpRsvData->UrgLen < RcvBufEntry->TotalSize)) { if (TcpRsvData->UrgLen + DataLen < BufLen) { TcpRsvData->UrgLen = 0; } else { @@ -161,7 +157,6 @@ SockTcpDataToRcv ( } return MIN (TcpRsvData->UrgLen + DataLen, BufLen); - } DataLen += RcvBufEntry->TotalSize; @@ -184,10 +179,10 @@ SockTcpDataToRcv ( **/ VOID SockSetTcpRxData ( - IN SOCKET *Sock, - IN VOID *TcpRxData, - IN UINT32 RcvdBytes, - IN BOOLEAN IsUrg + IN SOCKET *Sock, + IN VOID *TcpRxData, + IN UINT32 RcvdBytes, + IN BOOLEAN IsUrg ) { UINT32 Index; @@ -196,22 +191,21 @@ SockSetTcpRxData ( EFI_TCP4_RECEIVE_DATA *RxData; EFI_TCP4_FRAGMENT_DATA *Fragment; - RxData = (EFI_TCP4_RECEIVE_DATA *) TcpRxData; + RxData = (EFI_TCP4_RECEIVE_DATA *)TcpRxData; - OffSet = 0; + OffSet = 0; ASSERT (RxData->DataLength >= RcvdBytes); - RxData->DataLength = RcvdBytes; - RxData->UrgentFlag = IsUrg; + RxData->DataLength = RcvdBytes; + RxData->UrgentFlag = IsUrg; // // Copy the CopyBytes data from socket receive buffer to RxData. // for (Index = 0; (Index < RxData->FragmentCount) && (RcvdBytes > 0); Index++) { - Fragment = &RxData->FragmentTable[Index]; - CopyBytes = MIN ((UINT32) (Fragment->FragmentLength), RcvdBytes); + CopyBytes = MIN ((UINT32)(Fragment->FragmentLength), RcvdBytes); NetbufQueCopy ( Sock->RcvBuffer.DataQueue, @@ -221,8 +215,8 @@ SockSetTcpRxData ( ); Fragment->FragmentLength = CopyBytes; - RcvdBytes -= CopyBytes; - OffSet += CopyBytes; + RcvdBytes -= CopyBytes; + OffSet += CopyBytes; } } @@ -234,7 +228,7 @@ SockSetTcpRxData ( **/ VOID SockProcessSndToken ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { UINT32 FreeSpace; @@ -253,7 +247,6 @@ SockProcessSndToken ( // socket layer flow control policy // while ((FreeSpace >= Sock->SndBuffer.LowWater) && !IsListEmpty (&Sock->SndTokenList)) { - SockToken = NET_LIST_HEAD ( &(Sock->SndTokenList), SOCK_TOKEN, @@ -272,11 +265,11 @@ SockProcessSndToken ( // // Process it in the light of SockType // - SndToken = (SOCK_IO_TOKEN *) SockToken->Token; - TxData = SndToken->Packet.TxData; + SndToken = (SOCK_IO_TOKEN *)SockToken->Token; + TxData = SndToken->Packet.TxData; - DataLen = TxData->DataLength; - Status = SockProcessTcpSndData (Sock, TxData); + DataLen = TxData->DataLength; + Status = SockProcessTcpSndData (Sock, TxData); if (EFI_ERROR (Status)) { goto OnError; @@ -284,10 +277,8 @@ SockProcessSndToken ( if (DataLen >= FreeSpace) { FreeSpace = 0; - } else { FreeSpace -= DataLen; - } } @@ -311,13 +302,13 @@ OnError: **/ UINT32 SockProcessRcvToken ( - IN OUT SOCKET *Sock, - IN OUT SOCK_IO_TOKEN *RcvToken + IN OUT SOCKET *Sock, + IN OUT SOCK_IO_TOKEN *RcvToken ) { - UINT32 TokenRcvdBytes; - EFI_TCP4_RECEIVE_DATA *RxData; - BOOLEAN IsUrg; + UINT32 TokenRcvdBytes; + EFI_TCP4_RECEIVE_DATA *RxData; + BOOLEAN IsUrg; ASSERT (Sock != NULL); @@ -356,22 +347,22 @@ SockProcessRcvToken ( **/ EFI_STATUS SockProcessTcpSndData ( - IN SOCKET *Sock, - IN VOID *TcpTxData + IN SOCKET *Sock, + IN VOID *TcpTxData ) { NET_BUF *SndData; EFI_STATUS Status; EFI_TCP4_TRANSMIT_DATA *TxData; - TxData = (EFI_TCP4_TRANSMIT_DATA *) TcpTxData; + TxData = (EFI_TCP4_TRANSMIT_DATA *)TcpTxData; // // transform this TxData into a NET_BUFFER // and insert it into Sock->SndBuffer // SndData = NetbufFromExt ( - (NET_FRAGMENT *) TxData->FragmentTable, + (NET_FRAGMENT *)TxData->FragmentTable, TxData->FragmentCount, 0, 0, @@ -382,7 +373,7 @@ SockProcessTcpSndData ( if (NULL == SndData) { DEBUG ( (DEBUG_ERROR, - "SockKProcessSndData: Failed to call NetBufferFromExt\n") + "SockKProcessSndData: Failed to call NetBufferFromExt\n") ); return EFI_OUT_OF_RESOURCES; @@ -431,12 +422,12 @@ SockProcessTcpSndData ( **/ VOID SockFlushPendingToken ( - IN SOCKET *Sock, - IN OUT LIST_ENTRY *PendingTokenList + IN SOCKET *Sock, + IN OUT LIST_ENTRY *PendingTokenList ) { - SOCK_TOKEN *SockToken; - SOCK_COMPLETION_TOKEN *Token; + SOCK_TOKEN *SockToken; + SOCK_COMPLETION_TOKEN *Token; ASSERT ((Sock != NULL) && (PendingTokenList != NULL)); @@ -464,7 +455,7 @@ SockFlushPendingToken ( **/ VOID SockWakeConnToken ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { ASSERT (Sock->ConnectionToken != NULL); @@ -486,12 +477,12 @@ SockWakeConnToken ( **/ VOID SockWakeListenToken ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { - SOCKET *Parent; - SOCK_TOKEN *SockToken; - EFI_TCP4_LISTEN_TOKEN *ListenToken; + SOCKET *Parent; + SOCK_TOKEN *SockToken; + EFI_TCP4_LISTEN_TOKEN *ListenToken; Parent = Sock->Parent; @@ -504,7 +495,7 @@ SockWakeListenToken ( TokenList ); - ListenToken = (EFI_TCP4_LISTEN_TOKEN *) SockToken->Token; + ListenToken = (EFI_TCP4_LISTEN_TOKEN *)SockToken->Token; ListenToken->NewChildHandle = Sock->SockHandle; SIGNAL_TOKEN (&(ListenToken->CompletionToken), EFI_SUCCESS); @@ -517,8 +508,8 @@ SockWakeListenToken ( Parent->ConnCnt--; DEBUG ( (DEBUG_NET, - "SockWakeListenToken: accept a socket, now conncnt is %d", - Parent->ConnCnt) + "SockWakeListenToken: accept a socket, now conncnt is %d", + Parent->ConnCnt) ); Sock->Parent = NULL; @@ -533,13 +524,13 @@ SockWakeListenToken ( **/ VOID SockWakeRcvToken ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { - UINT32 RcvdBytes; - UINT32 TokenRcvdBytes; - SOCK_TOKEN *SockToken; - SOCK_IO_TOKEN *RcvToken; + UINT32 RcvdBytes; + UINT32 TokenRcvdBytes; + SOCK_TOKEN *SockToken; + SOCK_IO_TOKEN *RcvToken; ASSERT (Sock->RcvBuffer.DataQueue != NULL); @@ -548,18 +539,17 @@ SockWakeRcvToken ( ASSERT (RcvdBytes > 0); while (RcvdBytes > 0 && !IsListEmpty (&Sock->RcvTokenList)) { - SockToken = NET_LIST_HEAD ( &Sock->RcvTokenList, SOCK_TOKEN, TokenList ); - RcvToken = (SOCK_IO_TOKEN *) SockToken->Token; - TokenRcvdBytes = SockProcessRcvToken (Sock, RcvToken); + RcvToken = (SOCK_IO_TOKEN *)SockToken->Token; + TokenRcvdBytes = SockProcessRcvToken (Sock, RcvToken); if (0 == TokenRcvdBytes) { - return ; + return; } RemoveEntryList (&(SockToken->TokenList)); @@ -585,15 +575,15 @@ SockCancelToken ( IN OUT LIST_ENTRY *SpecifiedTokenList ) { - EFI_STATUS Status; - LIST_ENTRY *Entry; - SOCK_TOKEN *SockToken; + EFI_STATUS Status; + LIST_ENTRY *Entry; + SOCK_TOKEN *SockToken; Status = EFI_SUCCESS; Entry = NULL; SockToken = NULL; - if (IsListEmpty (SpecifiedTokenList) && Token != NULL) { + if (IsListEmpty (SpecifiedTokenList) && (Token != NULL)) { return EFI_NOT_FOUND; } @@ -609,10 +599,10 @@ SockCancelToken ( RemoveEntryList (&SockToken->TokenList); FreePool (SockToken); - Entry = SpecifiedTokenList->ForwardLink; + Entry = SpecifiedTokenList->ForwardLink; Status = EFI_SUCCESS; } else { - if (Token == (VOID *) SockToken->Token) { + if (Token == (VOID *)SockToken->Token) { SIGNAL_TOKEN (Token, EFI_ABORTED); RemoveEntryList (&(SockToken->TokenList)); FreePool (SockToken); @@ -641,7 +631,7 @@ SockCancelToken ( **/ SOCKET * SockCreate ( - IN SOCK_INIT_DATA *SockInitData + IN SOCK_INIT_DATA *SockInitData ) { SOCKET *Sock; @@ -662,15 +652,14 @@ SockCreate ( ProtocolLength = sizeof (EFI_TCP6_PROTOCOL); } - Parent = SockInitData->Parent; if ((Parent != NULL) && (Parent->ConnCnt == Parent->BackLog)) { DEBUG ( (DEBUG_ERROR, - "SockCreate: Socket parent has reached its connection limit with %d ConnCnt and %d BackLog\n", - Parent->ConnCnt, - Parent->BackLog) + "SockCreate: Socket parent has reached its connection limit with %d ConnCnt and %d BackLog\n", + Parent->ConnCnt, + Parent->BackLog) ); return NULL; @@ -678,7 +667,6 @@ SockCreate ( Sock = AllocateZeroPool (sizeof (SOCKET)); if (NULL == Sock) { - DEBUG ((DEBUG_ERROR, "SockCreate: No resource to create a new socket\n")); return NULL; } @@ -696,7 +684,7 @@ SockCreate ( if (NULL == Sock->SndBuffer.DataQueue) { DEBUG ( (DEBUG_ERROR, - "SockCreate: No resource to allocate SndBuffer for new socket\n") + "SockCreate: No resource to allocate SndBuffer for new socket\n") ); goto OnError; @@ -706,13 +694,13 @@ SockCreate ( if (NULL == Sock->RcvBuffer.DataQueue) { DEBUG ( (DEBUG_ERROR, - "SockCreate: No resource to allocate RcvBuffer for new socket\n") + "SockCreate: No resource to allocate RcvBuffer for new socket\n") ); goto OnError; } - Sock->Signature = SOCK_SIGNATURE; + Sock->Signature = SOCK_SIGNATURE; Sock->Parent = Parent; Sock->BackLog = SockInitData->BackLog; @@ -726,11 +714,11 @@ SockCreate ( Sock->DestroyCallback = SockInitData->DestroyCallback; Sock->Context = SockInitData->Context; - Sock->SockError = EFI_ABORTED; - Sock->SndBuffer.LowWater = SOCK_BUFF_LOW_WATER; - Sock->RcvBuffer.LowWater = SOCK_BUFF_LOW_WATER; + Sock->SockError = EFI_ABORTED; + Sock->SndBuffer.LowWater = SOCK_BUFF_LOW_WATER; + Sock->RcvBuffer.LowWater = SOCK_BUFF_LOW_WATER; - Sock->IpVersion = SockInitData->IpVersion; + Sock->IpVersion = SockInitData->IpVersion; // // Install protocol on Sock->SockHandle @@ -752,8 +740,8 @@ SockCreate ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "SockCreate: Install TCP protocol in socket failed with %r\n", - Status) + "SockCreate: Install TCP protocol in socket failed with %r\n", + Status) ); goto OnError; @@ -771,8 +759,8 @@ SockCreate ( DEBUG ( (DEBUG_NET, - "SockCreate: Create a new socket and add to parent, now conncnt is %d\n", - Parent->ConnCnt) + "SockCreate: Create a new socket and add to parent, now conncnt is %d\n", + Parent->ConnCnt) ); InsertTailList (&Parent->ConnectionList, &Sock->ConnectionList); @@ -819,7 +807,7 @@ OnError: **/ VOID SockDestroy ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { ASSERT (SockStream == Sock->Type); @@ -829,12 +817,11 @@ SockDestroy ( // by sock and rcv, snd buffer // if (!SOCK_IS_UNCONFIGURED (Sock)) { - SockConnFlush (Sock); SockSetState (Sock, SO_CLOSED); Sock->ConfigureState = SO_UNCONFIGURED; - } + // // Destroy the RcvBuffer Queue and SendBuffer Queue // @@ -845,14 +832,13 @@ SockDestroy ( // Remove it from parent connection list if needed // if (Sock->Parent != NULL) { - RemoveEntryList (&(Sock->ConnectionList)); (Sock->Parent->ConnCnt)--; DEBUG ( (DEBUG_WARN, - "SockDestroy: Delete a unaccepted socket from parent now conncnt is %d\n", - Sock->Parent->ConnCnt) + "SockDestroy: Delete a unaccepted socket from parent now conncnt is %d\n", + Sock->Parent->ConnCnt) ); Sock->Parent = NULL; @@ -869,7 +855,7 @@ SockDestroy ( **/ VOID SockConnFlush ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { SOCKET *Child; @@ -921,7 +907,6 @@ SockConnFlush ( Sock->ConnCnt = 0; } - } /** @@ -933,8 +918,8 @@ SockConnFlush ( **/ VOID SockSetState ( - IN OUT SOCKET *Sock, - IN UINT8 State + IN OUT SOCKET *Sock, + IN UINT8 State ) { Sock->State = State; @@ -950,7 +935,7 @@ SockSetState ( **/ SOCKET * SockClone ( - IN SOCKET *Sock + IN SOCKET *Sock ) { SOCKET *ClonedSock; @@ -972,7 +957,7 @@ SockClone ( InitData.ProtoData = Sock->ProtoReserved; InitData.DataSize = sizeof (Sock->ProtoReserved); - ClonedSock = SockCreate (&InitData); + ClonedSock = SockCreate (&InitData); if (NULL == ClonedSock) { DEBUG ((DEBUG_ERROR, "SockClone: no resource to create a cloned sock\n")); @@ -998,10 +983,9 @@ SockClone ( **/ VOID SockConnEstablished ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { - ASSERT (SO_CONNECTING == Sock->State); SockSetState (Sock, SO_CONNECTED); @@ -1011,7 +995,6 @@ SockConnEstablished ( } else { SockWakeListenToken (Sock); } - } /** @@ -1026,7 +1009,7 @@ SockConnEstablished ( **/ VOID SockConnClosed ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { if (Sock->CloseToken != NULL) { @@ -1040,7 +1023,6 @@ SockConnClosed ( if (Sock->Parent != NULL) { SockDestroyChild (Sock); } - } /** @@ -1055,12 +1037,12 @@ SockConnClosed ( **/ VOID SockDataSent ( - IN OUT SOCKET *Sock, - IN UINT32 Count + IN OUT SOCKET *Sock, + IN UINT32 Count ) { - SOCK_TOKEN *SockToken; - SOCK_COMPLETION_TOKEN *SndToken; + SOCK_TOKEN *SockToken; + SOCK_COMPLETION_TOKEN *SndToken; ASSERT (!IsListEmpty (&Sock->ProcessingSndTokenList)); ASSERT (Count <= (Sock->SndBuffer.DataQueue)->BufSize); @@ -1080,15 +1062,13 @@ SockDataSent ( SndToken = SockToken->Token; if (SockToken->RemainDataLen <= Count) { - RemoveEntryList (&(SockToken->TokenList)); SIGNAL_TOKEN (SndToken, EFI_SUCCESS); Count -= SockToken->RemainDataLen; FreePool (SockToken); } else { - SockToken->RemainDataLen -= Count; - Count = 0; + Count = 0; } } @@ -1114,20 +1094,20 @@ SockDataSent ( **/ UINT32 SockGetDataToSend ( - IN SOCKET *Sock, - IN UINT32 Offset, - IN UINT32 Len, - OUT UINT8 *Dest + IN SOCKET *Sock, + IN UINT32 Offset, + IN UINT32 Len, + OUT UINT8 *Dest ) { ASSERT ((Sock != NULL) && SockStream == Sock->Type); return NetbufQueCopy ( - Sock->SndBuffer.DataQueue, - Offset, - Len, - Dest - ); + Sock->SndBuffer.DataQueue, + Offset, + Len, + Dest + ); } /** @@ -1143,17 +1123,19 @@ SockGetDataToSend ( **/ VOID SockDataRcvd ( - IN OUT SOCKET *Sock, - IN OUT NET_BUF *NetBuffer, - IN UINT32 UrgLen + IN OUT SOCKET *Sock, + IN OUT NET_BUF *NetBuffer, + IN UINT32 UrgLen ) { - ASSERT ((Sock != NULL) && (Sock->RcvBuffer.DataQueue != NULL) && - UrgLen <= NetBuffer->TotalSize); + ASSERT ( + (Sock != NULL) && (Sock->RcvBuffer.DataQueue != NULL) && + UrgLen <= NetBuffer->TotalSize + ); NET_GET_REF (NetBuffer); - ((TCP_RSV_DATA *) (NetBuffer->ProtoData))->UrgLen = UrgLen; + ((TCP_RSV_DATA *)(NetBuffer->ProtoData))->UrgLen = UrgLen; NetbufQueAppend (Sock->RcvBuffer.DataQueue, NetBuffer); @@ -1176,8 +1158,8 @@ SockGetFreeSpace ( IN UINT32 Which ) { - UINT32 BufferCC; - SOCK_BUFFER *SockBuffer; + UINT32 BufferCC; + SOCK_BUFFER *SockBuffer; ASSERT (Sock != NULL && ((SOCK_SND_BUF == Which) || (SOCK_RCV_BUF == Which))); @@ -1190,7 +1172,6 @@ SockGetFreeSpace ( BufferCC = (SockBuffer->DataQueue)->BufSize; if (BufferCC >= SockBuffer->HighWater) { - return 0; } @@ -1209,7 +1190,7 @@ SockGetFreeSpace ( **/ VOID SockNoMoreData ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { EFI_STATUS Err; @@ -1217,7 +1198,6 @@ SockNoMoreData ( SOCK_NO_MORE_DATA (Sock); if (!IsListEmpty (&Sock->RcvTokenList)) { - ASSERT (0 == GET_RCV_DATASIZE (Sock)); Err = Sock->SockError; @@ -1227,6 +1207,5 @@ SockNoMoreData ( SockFlushPendingToken (Sock, &Sock->RcvTokenList); SOCK_ERROR (Sock, Err); - } } diff --git a/NetworkPkg/TcpDxe/SockImpl.h b/NetworkPkg/TcpDxe/SockImpl.h index 5ec0435592..b063b023ab 100644 --- a/NetworkPkg/TcpDxe/SockImpl.h +++ b/NetworkPkg/TcpDxe/SockImpl.h @@ -26,7 +26,7 @@ gBS->SignalEvent ((Token)->Event); \ } while (0) -#define SOCK_HEADER_SPACE (60 + 60 + 72) +#define SOCK_HEADER_SPACE (60 + 60 + 72) /** Process the TCP send data, buffer the tcp txdata and append @@ -41,8 +41,8 @@ **/ EFI_STATUS SockProcessTcpSndData ( - IN SOCKET *Sock, - IN VOID *TcpTxData + IN SOCKET *Sock, + IN VOID *TcpTxData ); /** @@ -56,8 +56,8 @@ SockProcessTcpSndData ( **/ UINT32 SockProcessRcvToken ( - IN OUT SOCKET *Sock, - IN OUT SOCK_IO_TOKEN *RcvToken + IN OUT SOCKET *Sock, + IN OUT SOCK_IO_TOKEN *RcvToken ); /** @@ -68,7 +68,7 @@ SockProcessRcvToken ( **/ VOID SockConnFlush ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ); /** @@ -98,7 +98,7 @@ SockCancelToken ( **/ SOCKET * SockCreate ( - IN SOCK_INIT_DATA *SockInitData + IN SOCK_INIT_DATA *SockInitData ); /** @@ -109,7 +109,7 @@ SockCreate ( **/ VOID SockDestroy ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ); #endif diff --git a/NetworkPkg/TcpDxe/SockInterface.c b/NetworkPkg/TcpDxe/SockInterface.c index 6cf31e0a0a..413d6e1373 100644 --- a/NetworkPkg/TcpDxe/SockInterface.c +++ b/NetworkPkg/TcpDxe/SockInterface.c @@ -21,12 +21,12 @@ **/ BOOLEAN SockTokenExistedInList ( - IN LIST_ENTRY *List, - IN EFI_EVENT Event + IN LIST_ENTRY *List, + IN EFI_EVENT Event ) { - LIST_ENTRY *ListEntry; - SOCK_TOKEN *SockToken; + LIST_ENTRY *ListEntry; + SOCK_TOKEN *SockToken; NET_LIST_FOR_EACH (ListEntry, List) { SockToken = NET_LIST_USER_STRUCT ( @@ -56,22 +56,20 @@ SockTokenExistedInList ( **/ BOOLEAN SockTokenExisted ( - IN SOCKET *Sock, - IN EFI_EVENT Event + IN SOCKET *Sock, + IN EFI_EVENT Event ) { - if (SockTokenExistedInList (&Sock->SndTokenList, Event) || SockTokenExistedInList (&Sock->ProcessingSndTokenList, Event) || SockTokenExistedInList (&Sock->RcvTokenList, Event) || SockTokenExistedInList (&Sock->ListenTokenList, Event) - ) { - + ) + { return TRUE; } if ((Sock->ConnectionToken != NULL) && (Sock->ConnectionToken->Event == Event)) { - return TRUE; } @@ -95,28 +93,27 @@ SockTokenExisted ( **/ SOCK_TOKEN * SockBufferToken ( - IN SOCKET *Sock, - IN LIST_ENTRY *List, - IN VOID *Token, - IN UINT32 DataLen + IN SOCKET *Sock, + IN LIST_ENTRY *List, + IN VOID *Token, + IN UINT32 DataLen ) { SOCK_TOKEN *SockToken; SockToken = AllocateZeroPool (sizeof (SOCK_TOKEN)); if (NULL == SockToken) { - DEBUG ( (DEBUG_ERROR, - "SockBufferIOToken: No Memory to allocate SockToken\n") + "SockBufferIOToken: No Memory to allocate SockToken\n") ); return NULL; } - SockToken->Sock = Sock; - SockToken->Token = (SOCK_COMPLETION_TOKEN *) Token; - SockToken->RemainDataLen = DataLen; + SockToken->Sock = Sock; + SockToken->Token = (SOCK_COMPLETION_TOKEN *)Token; + SockToken->RemainDataLen = DataLen; InsertTailList (List, &SockToken->TokenList); return SockToken; @@ -133,15 +130,15 @@ SockBufferToken ( **/ EFI_STATUS SockDestroyChild ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { - EFI_STATUS Status; - TCP_PROTO_DATA *ProtoData; - TCP_CB *Tcb; - EFI_GUID *IpProtocolGuid; - EFI_GUID *TcpProtocolGuid; - VOID *SockProtocol; + EFI_STATUS Status; + TCP_PROTO_DATA *ProtoData; + TCP_CB *Tcb; + EFI_GUID *IpProtocolGuid; + EFI_GUID *TcpProtocolGuid; + VOID *SockProtocol; ASSERT ((Sock != NULL) && (Sock->ProtoHandler != NULL)); @@ -152,13 +149,14 @@ SockDestroyChild ( Sock->InDestroy = TRUE; if (Sock->IpVersion == IP_VERSION_4) { - IpProtocolGuid = &gEfiIp4ProtocolGuid; + IpProtocolGuid = &gEfiIp4ProtocolGuid; TcpProtocolGuid = &gEfiTcp4ProtocolGuid; } else { - IpProtocolGuid = &gEfiIp6ProtocolGuid; + IpProtocolGuid = &gEfiIp6ProtocolGuid; TcpProtocolGuid = &gEfiTcp6ProtocolGuid; } - ProtoData = (TCP_PROTO_DATA *) Sock->ProtoReserved; + + ProtoData = (TCP_PROTO_DATA *)Sock->ProtoReserved; Tcb = ProtoData->TcpPcb; ASSERT (Tcb != NULL); @@ -190,11 +188,10 @@ SockDestroyChild ( ); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockDestroyChild: Open protocol installed on socket failed with %r\n", - Status) + "SockDestroyChild: Open protocol installed on socket failed with %r\n", + Status) ); } @@ -202,20 +199,18 @@ SockDestroyChild ( // Uninstall the protocol installed on this sock // gBS->UninstallMultipleProtocolInterfaces ( - Sock->SockHandle, - TcpProtocolGuid, - SockProtocol, - NULL - ); - + Sock->SockHandle, + TcpProtocolGuid, + SockProtocol, + NULL + ); - Status = EfiAcquireLockOrFail (&(Sock->Lock)); + Status = EfiAcquireLockOrFail (&(Sock->Lock)); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockDestroyChild: Get the lock to access socket failed with %r\n", - Status) + "SockDestroyChild: Get the lock to access socket failed with %r\n", + Status) ); return EFI_ACCESS_DENIED; @@ -227,16 +222,14 @@ SockDestroyChild ( Status = Sock->ProtoHandler (Sock, SOCK_DETACH, NULL); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockDestroyChild: Protocol detach socket failed with %r\n", - Status) + "SockDestroyChild: Protocol detach socket failed with %r\n", + Status) ); Sock->InDestroy = FALSE; } else if (SOCK_IS_CONFIGURED (Sock)) { - SockConnFlush (Sock); SockSetState (Sock, SO_CLOSED); @@ -265,7 +258,7 @@ SockDestroyChild ( **/ SOCKET * SockCreateChild ( - IN SOCK_INIT_DATA *SockInitData + IN SOCK_INIT_DATA *SockInitData ) { SOCKET *Sock; @@ -278,10 +271,9 @@ SockCreateChild ( // Sock = SockCreate (SockInitData); if (NULL == Sock) { - DEBUG ( (DEBUG_ERROR, - "SockCreateChild: No resource to create a new socket\n") + "SockCreateChild: No resource to create a new socket\n") ); return NULL; @@ -289,14 +281,14 @@ SockCreateChild ( Status = EfiAcquireLockOrFail (&(Sock->Lock)); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockCreateChild: Get the lock to access socket failed with %r\n", - Status) + "SockCreateChild: Get the lock to access socket failed with %r\n", + Status) ); goto ERROR; } + // // inform the protocol layer to attach the socket // with a new protocol control block @@ -304,11 +296,10 @@ SockCreateChild ( Status = Sock->ProtoHandler (Sock, SOCK_ATTACH, NULL); EfiReleaseLock (&(Sock->Lock)); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockCreateChild: Protocol failed to attach a socket with %r\n", - Status) + "SockCreateChild: Protocol failed to attach a socket with %r\n", + Status) ); goto ERROR; } @@ -339,13 +330,13 @@ ERROR: // Uninstall the protocol installed on this sock // gBS->UninstallMultipleProtocolInterfaces ( - Sock->SockHandle, - TcpProtocolGuid, - SockProtocol, - NULL - ); - SockDestroy (Sock); - return NULL; + Sock->SockHandle, + TcpProtocolGuid, + SockProtocol, + NULL + ); + SockDestroy (Sock); + return NULL; } /** @@ -361,19 +352,18 @@ ERROR: **/ EFI_STATUS SockConfigure ( - IN SOCKET *Sock, - IN VOID *ConfigData + IN SOCKET *Sock, + IN VOID *ConfigData ) { EFI_STATUS Status; Status = EfiAcquireLockOrFail (&(Sock->Lock)); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockConfigure: Get the access for socket failed with %r", - Status) + "SockConfigure: Get the access for socket failed with %r", + Status) ); return EFI_ACCESS_DENIED; @@ -414,8 +404,8 @@ OnExit: **/ EFI_STATUS SockConnect ( - IN SOCKET *Sock, - IN VOID *Token + IN SOCKET *Sock, + IN VOID *Token ) { EFI_STATUS Status; @@ -423,11 +413,10 @@ SockConnect ( Status = EfiAcquireLockOrFail (&(Sock->Lock)); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockConnect: Get the access for socket failed with %r", - Status) + "SockConnect: Get the access for socket failed with %r", + Status) ); return EFI_ACCESS_DENIED; @@ -439,26 +428,23 @@ SockConnect ( } if (SOCK_IS_UNCONFIGURED (Sock)) { - Status = EFI_NOT_STARTED; goto OnExit; } if (!SOCK_IS_CLOSED (Sock) || !SOCK_IS_CONFIGURED_ACTIVE (Sock)) { - Status = EFI_ACCESS_DENIED; goto OnExit; } - Event = ((SOCK_COMPLETION_TOKEN *) Token)->Event; + Event = ((SOCK_COMPLETION_TOKEN *)Token)->Event; if (SockTokenExisted (Sock, Event)) { - Status = EFI_ACCESS_DENIED; goto OnExit; } - Sock->ConnectionToken = (SOCK_COMPLETION_TOKEN *) Token; + Sock->ConnectionToken = (SOCK_COMPLETION_TOKEN *)Token; SockSetState (Sock, SO_CONNECTING); Status = Sock->ProtoHandler (Sock, SOCK_CONNECT, NULL); @@ -488,25 +474,24 @@ OnExit: **/ EFI_STATUS SockAccept ( - IN SOCKET *Sock, - IN VOID *Token + IN SOCKET *Sock, + IN VOID *Token ) { - EFI_TCP4_LISTEN_TOKEN *ListenToken; - LIST_ENTRY *ListEntry; - EFI_STATUS Status; - SOCKET *Socket; - EFI_EVENT Event; + EFI_TCP4_LISTEN_TOKEN *ListenToken; + LIST_ENTRY *ListEntry; + EFI_STATUS Status; + SOCKET *Socket; + EFI_EVENT Event; ASSERT (SockStream == Sock->Type); Status = EfiAcquireLockOrFail (&(Sock->Lock)); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockAccept: Get the access for socket failed with %r", - Status) + "SockAccept: Get the access for socket failed with %r", + Status) ); return EFI_ACCESS_DENIED; @@ -518,32 +503,28 @@ SockAccept ( } if (SOCK_IS_UNCONFIGURED (Sock)) { - Status = EFI_NOT_STARTED; goto Exit; } if (!SOCK_IS_LISTENING (Sock)) { - Status = EFI_ACCESS_DENIED; goto Exit; } - Event = ((SOCK_COMPLETION_TOKEN *) Token)->Event; + Event = ((SOCK_COMPLETION_TOKEN *)Token)->Event; if (SockTokenExisted (Sock, Event)) { - Status = EFI_ACCESS_DENIED; goto Exit; } - ListenToken = (EFI_TCP4_LISTEN_TOKEN *) Token; + ListenToken = (EFI_TCP4_LISTEN_TOKEN *)Token; // // Check if a connection has already in this Sock->ConnectionList // NET_LIST_FOR_EACH (ListEntry, &Sock->ConnectionList) { - Socket = NET_LIST_USER_STRUCT (ListEntry, SOCKET, ConnectionList); if (SOCK_IS_CONNECTED (Socket)) { @@ -558,8 +539,8 @@ SockAccept ( DEBUG ( (DEBUG_NET, - "SockAccept: Accept a socket, now conncount is %d", - Socket->Parent->ConnCnt) + "SockAccept: Accept a socket, now conncount is %d", + Socket->Parent->ConnCnt) ); Socket->Parent = NULL; @@ -571,7 +552,6 @@ SockAccept ( // Buffer this token for latter incoming connection request // if (NULL == SockBufferToken (Sock, &(Sock->ListenTokenList), Token, 0)) { - Status = EFI_OUT_OF_RESOURCES; } @@ -601,8 +581,8 @@ Exit: **/ EFI_STATUS SockSend ( - IN SOCKET *Sock, - IN VOID *Token + IN SOCKET *Sock, + IN VOID *Token ) { SOCK_IO_TOKEN *SndToken; @@ -617,11 +597,10 @@ SockSend ( Status = EfiAcquireLockOrFail (&(Sock->Lock)); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockSend: Get the access for socket failed with %r", - Status) + "SockSend: Get the access for socket failed with %r", + Status) ); return EFI_ACCESS_DENIED; @@ -632,8 +611,8 @@ SockSend ( goto Exit; } - SndToken = (SOCK_IO_TOKEN *) Token; - TxData = (EFI_TCP4_TRANSMIT_DATA *) SndToken->Packet.TxData; + SndToken = (SOCK_IO_TOKEN *)Token; + TxData = (EFI_TCP4_TRANSMIT_DATA *)SndToken->Packet.TxData; if (SOCK_IS_UNCONFIGURED (Sock)) { Status = EFI_NOT_STARTED; @@ -641,7 +620,6 @@ SockSend ( } if (!(SOCK_IS_CONNECTING (Sock) || SOCK_IS_CONNECTED (Sock))) { - Status = EFI_ACCESS_DENIED; goto Exit; } @@ -664,7 +642,6 @@ SockSend ( FreeSpace = SockGetFreeSpace (Sock, SOCK_SND_BUF); if ((FreeSpace < Sock->SndBuffer.LowWater) || !SOCK_IS_CONNECTED (Sock)) { - SockToken = SockBufferToken ( Sock, &Sock->SndTokenList, @@ -676,7 +653,6 @@ SockSend ( Status = EFI_OUT_OF_RESOURCES; } } else { - SockToken = SockBufferToken ( Sock, &Sock->ProcessingSndTokenList, @@ -687,8 +663,8 @@ SockSend ( if (NULL == SockToken) { DEBUG ( (DEBUG_ERROR, - "SockSend: Failed to buffer IO token into socket processing SndToken List\n", - Status) + "SockSend: Failed to buffer IO token into socket processing SndToken List\n", + Status) ); Status = EFI_OUT_OF_RESOURCES; @@ -700,8 +676,8 @@ SockSend ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "SockSend: Failed to process Snd Data\n", - Status) + "SockSend: Failed to process Snd Data\n", + Status) ); RemoveEntryList (&(SockToken->TokenList)); @@ -735,48 +711,44 @@ Exit: **/ EFI_STATUS SockRcv ( - IN SOCKET *Sock, - IN VOID *Token + IN SOCKET *Sock, + IN VOID *Token ) { - SOCK_IO_TOKEN *RcvToken; - UINT32 RcvdBytes; - EFI_STATUS Status; - EFI_EVENT Event; + SOCK_IO_TOKEN *RcvToken; + UINT32 RcvdBytes; + EFI_STATUS Status; + EFI_EVENT Event; ASSERT (SockStream == Sock->Type); Status = EfiAcquireLockOrFail (&(Sock->Lock)); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockRcv: Get the access for socket failed with %r", - Status) + "SockRcv: Get the access for socket failed with %r", + Status) ); return EFI_ACCESS_DENIED; } if (SOCK_IS_NO_MAPPING (Sock)) { - Status = EFI_NO_MAPPING; goto Exit; } if (SOCK_IS_UNCONFIGURED (Sock)) { - Status = EFI_NOT_STARTED; goto Exit; } if (!(SOCK_IS_CONNECTED (Sock) || SOCK_IS_CONNECTING (Sock))) { - Status = EFI_ACCESS_DENIED; goto Exit; } - RcvToken = (SOCK_IO_TOKEN *) Token; + RcvToken = (SOCK_IO_TOKEN *)Token; // // check if a token is already in the token buffer of this socket @@ -787,14 +759,13 @@ SockRcv ( goto Exit; } - RcvToken = (SOCK_IO_TOKEN *) Token; + RcvToken = (SOCK_IO_TOKEN *)Token; RcvdBytes = GET_RCV_DATASIZE (Sock); // // check whether an error has happened before // if (EFI_ABORTED != Sock->SockError) { - SIGNAL_TOKEN (&(RcvToken->Token), Sock->SockError); Sock->SockError = EFI_ABORTED; goto Exit; @@ -805,7 +776,6 @@ SockRcv ( // data buffered in Sock->RcvBuffer // if (SOCK_IS_NO_MORE_DATA (Sock) && (0 == RcvdBytes)) { - Status = EFI_CONNECTION_FIN; goto Exit; } @@ -815,7 +785,6 @@ SockRcv ( Status = Sock->ProtoHandler (Sock, SOCK_CONSUMED, NULL); } else { - if (NULL == SockBufferToken (Sock, &Sock->RcvTokenList, RcvToken, 0)) { Status = EFI_OUT_OF_RESOURCES; } @@ -837,7 +806,7 @@ Exit: **/ EFI_STATUS SockFlush ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ) { EFI_STATUS Status; @@ -846,29 +815,26 @@ SockFlush ( Status = EfiAcquireLockOrFail (&(Sock->Lock)); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockFlush: Get the access for socket failed with %r", - Status) + "SockFlush: Get the access for socket failed with %r", + Status) ); return EFI_ACCESS_DENIED; } if (!SOCK_IS_CONFIGURED (Sock)) { - Status = EFI_ACCESS_DENIED; goto Exit; } Status = Sock->ProtoHandler (Sock, SOCK_FLUSH, NULL); if (EFI_ERROR (Status)) { - DEBUG ( (DEBUG_ERROR, - "SockFlush: Protocol failed handling SOCK_FLUSH with %r", - Status) + "SockFlush: Protocol failed handling SOCK_FLUSH with %r", + Status) ); goto Exit; @@ -906,9 +872,9 @@ Exit: **/ EFI_STATUS SockClose ( - IN OUT SOCKET *Sock, - IN VOID *Token, - IN BOOLEAN OnAbort + IN OUT SOCKET *Sock, + IN VOID *Token, + IN BOOLEAN OnAbort ) { EFI_STATUS Status; @@ -920,8 +886,8 @@ SockClose ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "SockClose: Get the access for socket failed with %r", - Status) + "SockClose: Get the access for socket failed with %r", + Status) ); return EFI_ACCESS_DENIED; @@ -942,7 +908,7 @@ SockClose ( goto Exit; } - Event = ((SOCK_COMPLETION_TOKEN *) Token)->Event; + Event = ((SOCK_COMPLETION_TOKEN *)Token)->Event; if (SockTokenExisted (Sock, Event)) { Status = EFI_ACCESS_DENIED; @@ -981,9 +947,9 @@ SockCancel ( IN VOID *Token ) { - EFI_STATUS Status; + EFI_STATUS Status; - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; ASSERT (SockStream == Sock->Type); @@ -991,8 +957,8 @@ SockCancel ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "SockCancel: Get the access for socket failed with %r", - Status) + "SockCancel: Get the access for socket failed with %r", + Status) ); return EFI_ACCESS_DENIED; @@ -1006,7 +972,7 @@ SockCancel ( // // 1. Check ConnectionToken. // - if (Token == NULL || (SOCK_COMPLETION_TOKEN *) Token == Sock->ConnectionToken) { + if ((Token == NULL) || ((SOCK_COMPLETION_TOKEN *)Token == Sock->ConnectionToken)) { if (Sock->ConnectionToken != NULL) { SIGNAL_TOKEN (Sock->ConnectionToken, EFI_ABORTED); Sock->ConnectionToken = NULL; @@ -1022,7 +988,7 @@ SockCancel ( // 2. Check ListenTokenList. // Status = SockCancelToken (Token, &Sock->ListenTokenList); - if (Token != NULL && !EFI_ERROR (Status)) { + if ((Token != NULL) && !EFI_ERROR (Status)) { goto Exit; } @@ -1030,7 +996,7 @@ SockCancel ( // 3. Check RcvTokenList. // Status = SockCancelToken (Token, &Sock->RcvTokenList); - if (Token != NULL && !EFI_ERROR (Status)) { + if ((Token != NULL) && !EFI_ERROR (Status)) { goto Exit; } @@ -1038,7 +1004,7 @@ SockCancel ( // 4. Check SndTokenList. // Status = SockCancelToken (Token, &Sock->SndTokenList); - if (Token != NULL && !EFI_ERROR (Status)) { + if ((Token != NULL) && !EFI_ERROR (Status)) { goto Exit; } @@ -1052,7 +1018,6 @@ Exit: return Status; } - /** Get the mode data of the low layer protocol. @@ -1066,8 +1031,8 @@ Exit: **/ EFI_STATUS SockGetMode ( - IN SOCKET *Sock, - IN OUT VOID *Mode + IN SOCKET *Sock, + IN OUT VOID *Mode ) { return Sock->ProtoHandler (Sock, SOCK_MODE, Mode); @@ -1090,8 +1055,8 @@ SockGetMode ( **/ EFI_STATUS SockRoute ( - IN SOCKET *Sock, - IN VOID *RouteInfo + IN SOCKET *Sock, + IN VOID *RouteInfo ) { EFI_STATUS Status; @@ -1100,8 +1065,8 @@ SockRoute ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "SockRoute: Get the access for socket failed with %r", - Status) + "SockRoute: Get the access for socket failed with %r", + Status) ); return EFI_ACCESS_DENIED; diff --git a/NetworkPkg/TcpDxe/Socket.h b/NetworkPkg/TcpDxe/Socket.h index 9448710a91..22dfb76a6f 100644 --- a/NetworkPkg/TcpDxe/Socket.h +++ b/NetworkPkg/TcpDxe/Socket.h @@ -24,17 +24,17 @@ #include #include -#define SOCK_SND_BUF 0 -#define SOCK_RCV_BUF 1 +#define SOCK_SND_BUF 0 +#define SOCK_RCV_BUF 1 -#define SOCK_BUFF_LOW_WATER (2 * 1024) -#define SOCK_RCV_BUFF_SIZE (8 * 1024) -#define SOCK_SND_BUFF_SIZE (8 * 1024) -#define SOCK_BACKLOG 5 +#define SOCK_BUFF_LOW_WATER (2 * 1024) +#define SOCK_RCV_BUFF_SIZE (8 * 1024) +#define SOCK_SND_BUFF_SIZE (8 * 1024) +#define SOCK_BACKLOG 5 #define PROTO_RESERVED_LEN 20 -#define SO_NO_MORE_DATA 0x0001 +#define SO_NO_MORE_DATA 0x0001 // // @@ -61,11 +61,11 @@ /// /// Socket state /// -#define SO_CLOSED 0 -#define SO_LISTENING 1 -#define SO_CONNECTING 2 -#define SO_CONNECTED 3 -#define SO_DISCONNECTING 4 +#define SO_CLOSED 0 +#define SO_LISTENING 1 +#define SO_CONNECTING 2 +#define SO_CONNECTED 3 +#define SO_DISCONNECTING 4 /// /// Socket configure state @@ -100,7 +100,7 @@ @param[in] Sock Pointer to the socket **/ -#define SOCK_NO_MORE_DATA(Sock) ((Sock)->Flag |= SO_NO_MORE_DATA) +#define SOCK_NO_MORE_DATA(Sock) ((Sock)->Flag |= SO_NO_MORE_DATA) /** Check whether the socket is unconfigured. @@ -135,7 +135,7 @@ @retval FALSE The socket is not configured to active mode. **/ -#define SOCK_IS_CONFIGURED_ACTIVE(Sock) ((Sock)->ConfigureState == SO_CONFIGURED_ACTIVE) +#define SOCK_IS_CONFIGURED_ACTIVE(Sock) ((Sock)->ConfigureState == SO_CONFIGURED_ACTIVE) /** Check whether the socket is configured to passive mode. @@ -146,7 +146,7 @@ @retval FALSE The socket is not configured to passive mode. **/ -#define SOCK_IS_CONNECTED_PASSIVE(Sock) ((Sock)->ConfigureState == SO_CONFIGURED_PASSIVE) +#define SOCK_IS_CONNECTED_PASSIVE(Sock) ((Sock)->ConfigureState == SO_CONFIGURED_PASSIVE) /** Check whether the socket is mapped. @@ -168,7 +168,7 @@ @retval FALSE The socket is not closed. **/ -#define SOCK_IS_CLOSED(Sock) ((Sock)->State == SO_CLOSED) +#define SOCK_IS_CLOSED(Sock) ((Sock)->State == SO_CLOSED) /** Check whether the socket is listening. @@ -179,7 +179,7 @@ @retval FALSE The socket is not listening. **/ -#define SOCK_IS_LISTENING(Sock) ((Sock)->State == SO_LISTENING) +#define SOCK_IS_LISTENING(Sock) ((Sock)->State == SO_LISTENING) /** Check whether the socket is connecting. @@ -190,7 +190,7 @@ @retval FALSE The socket is not connecting. **/ -#define SOCK_IS_CONNECTING(Sock) ((Sock)->State == SO_CONNECTING) +#define SOCK_IS_CONNECTING(Sock) ((Sock)->State == SO_CONNECTING) /** Check whether the socket has connected. @@ -201,7 +201,7 @@ @retval FALSE The socket has not connected. **/ -#define SOCK_IS_CONNECTED(Sock) ((Sock)->State == SO_CONNECTED) +#define SOCK_IS_CONNECTED(Sock) ((Sock)->State == SO_CONNECTED) /** Check whether the socket is disconnecting. @@ -212,7 +212,7 @@ @retval FALSE The socket is not disconnecting. **/ -#define SOCK_IS_DISCONNECTING(Sock) ((Sock)->State == SO_DISCONNECTING) +#define SOCK_IS_DISCONNECTING(Sock) ((Sock)->State == SO_DISCONNECTING) /** Check whether the socket is no more data. @@ -223,7 +223,7 @@ @retval FALSE The socket still has data. **/ -#define SOCK_IS_NO_MORE_DATA(Sock) (0 != ((Sock)->Flag & SO_NO_MORE_DATA)) +#define SOCK_IS_NO_MORE_DATA(Sock) (0 != ((Sock)->Flag & SO_NO_MORE_DATA)) /** Set the size of the receive buffer. @@ -242,7 +242,7 @@ @return The receive buffer size. **/ -#define GET_RCV_BUFFSIZE(Sock) ((Sock)->RcvBuffer.HighWater) +#define GET_RCV_BUFFSIZE(Sock) ((Sock)->RcvBuffer.HighWater) /** Get the size of the receive data. @@ -252,7 +252,7 @@ @return The received data size. **/ -#define GET_RCV_DATASIZE(Sock) (((Sock)->RcvBuffer.DataQueue)->BufSize) +#define GET_RCV_DATASIZE(Sock) (((Sock)->RcvBuffer.DataQueue)->BufSize) /** Set the size of the send buffer. @@ -271,7 +271,7 @@ @return The send buffer size. **/ -#define GET_SND_BUFFSIZE(Sock) ((Sock)->SndBuffer.HighWater) +#define GET_SND_BUFFSIZE(Sock) ((Sock)->SndBuffer.HighWater) /** Get the size of the send data. @@ -281,7 +281,7 @@ @return The send data size. **/ -#define GET_SND_DATASIZE(Sock) (((Sock)->SndBuffer.DataQueue)->BufSize) +#define GET_SND_DATASIZE(Sock) (((Sock)->SndBuffer.DataQueue)->BufSize) /** Set the backlog value of the socket. @@ -290,7 +290,7 @@ @param[in] Value The value to set. **/ -#define SET_BACKLOG(Sock, Value) ((Sock)->BackLog = (Value)) +#define SET_BACKLOG(Sock, Value) ((Sock)->BackLog = (Value)) /** Get the backlog value of the socket. @@ -300,7 +300,7 @@ @return The backlog value. **/ -#define GET_BACKLOG(Sock) ((Sock)->BackLog) +#define GET_BACKLOG(Sock) ((Sock)->BackLog) /** Set the socket with error state. @@ -309,13 +309,13 @@ @param[in] Error The error state. **/ -#define SOCK_ERROR(Sock, Error) ((Sock)->SockError = (Error)) +#define SOCK_ERROR(Sock, Error) ((Sock)->SockError = (Error)) -#define SOCK_SIGNATURE SIGNATURE_32 ('S', 'O', 'C', 'K') +#define SOCK_SIGNATURE SIGNATURE_32 ('S', 'O', 'C', 'K') -#define SOCK_FROM_THIS(a) CR ((a), SOCKET, NetProtocol, SOCK_SIGNATURE) +#define SOCK_FROM_THIS(a) CR ((a), SOCKET, NetProtocol, SOCK_SIGNATURE) -#define SOCK_FROM_TOKEN(Token) (((SOCK_TOKEN *) (Token))->Sock) +#define SOCK_FROM_TOKEN(Token) (((SOCK_TOKEN *) (Token))->Sock) #define PROTO_TOKEN_FORM_SOCK(SockToken, Type) ((Type *) (((SOCK_TOKEN *) (SockToken))->Token)) @@ -325,21 +325,21 @@ typedef struct _TCP_SOCKET SOCKET; /// Socket completion token /// typedef struct _SOCK_COMPLETION_TOKEN { - EFI_EVENT Event; ///< The event to be issued - EFI_STATUS Status; ///< The status to be issued + EFI_EVENT Event; ///< The event to be issued + EFI_STATUS Status; ///< The status to be issued } SOCK_COMPLETION_TOKEN; typedef union { - VOID *RxData; - VOID *TxData; + VOID *RxData; + VOID *TxData; } SOCK_IO_DATA; /// /// The application token with data packet /// typedef struct _SOCK_IO_TOKEN { - SOCK_COMPLETION_TOKEN Token; - SOCK_IO_DATA Packet; + SOCK_COMPLETION_TOKEN Token; + SOCK_IO_DATA Packet; } SOCK_IO_TOKEN; /// @@ -354,9 +354,9 @@ typedef enum { /// The buffer structure of rcvd data and send data used by socket. /// typedef struct _SOCK_BUFFER { - UINT32 HighWater; ///< The buffersize upper limit of sock_buffer - UINT32 LowWater; ///< The low water mark of sock_buffer - NET_BUF_QUEUE *DataQueue; ///< The queue to buffer data + UINT32 HighWater; ///< The buffersize upper limit of sock_buffer + UINT32 LowWater; ///< The low water mark of sock_buffer + NET_BUF_QUEUE *DataQueue; ///< The queue to buffer data } SOCK_BUFFER; /** @@ -374,9 +374,9 @@ typedef struct _SOCK_BUFFER { typedef EFI_STATUS (*SOCK_PROTO_HANDLER) ( - IN SOCKET *Socket, - IN UINT8 Request, - IN VOID *RequestData + IN SOCKET *Socket, + IN UINT8 Request, + IN VOID *RequestData ); /** @@ -414,41 +414,41 @@ VOID /// The initialize data for create a new socket. /// typedef struct _SOCK_INIT_DATA { - SOCK_TYPE Type; - UINT8 State; - - SOCKET *Parent; ///< The parent of this socket - UINT32 BackLog; ///< The connection limit for listening socket - UINT32 SndBufferSize; ///< The high water mark of send buffer - UINT32 RcvBufferSize; ///< The high water mark of receive buffer - UINT8 IpVersion; - VOID *Protocol; ///< The pointer to protocol function template + SOCK_TYPE Type; + UINT8 State; + + SOCKET *Parent; ///< The parent of this socket + UINT32 BackLog; ///< The connection limit for listening socket + UINT32 SndBufferSize; ///< The high water mark of send buffer + UINT32 RcvBufferSize; ///< The high water mark of receive buffer + UINT8 IpVersion; + VOID *Protocol; ///< The pointer to protocol function template ///< wanted to install on socket // // Callbacks after socket is created and before socket is to be destroyed. // - SOCK_CREATE_CALLBACK CreateCallback; ///< Callback after created - SOCK_DESTROY_CALLBACK DestroyCallback; ///< Callback before destroyed - VOID *Context; ///< The context of the callback + SOCK_CREATE_CALLBACK CreateCallback; ///< Callback after created + SOCK_DESTROY_CALLBACK DestroyCallback; ///< Callback before destroyed + VOID *Context; ///< The context of the callback // // Opaque protocol data. // - VOID *ProtoData; - UINT32 DataSize; + VOID *ProtoData; + UINT32 DataSize; - SOCK_PROTO_HANDLER ProtoHandler; ///< The handler of protocol for socket request + SOCK_PROTO_HANDLER ProtoHandler; ///< The handler of protocol for socket request - EFI_HANDLE DriverBinding; ///< The driver binding handle + EFI_HANDLE DriverBinding; ///< The driver binding handle } SOCK_INIT_DATA; /// /// The union type of TCP4 and TCP6 protocol. /// typedef union _NET_PROTOCOL { - EFI_TCP4_PROTOCOL Tcp4Protocol; ///< Tcp4 protocol - EFI_TCP6_PROTOCOL Tcp6Protocol; ///< Tcp6 protocol + EFI_TCP4_PROTOCOL Tcp4Protocol; ///< Tcp4 protocol + EFI_TCP6_PROTOCOL Tcp6Protocol; ///< Tcp6 protocol } NET_PROTOCOL; /// /// The socket structure representing a network service access point. @@ -457,70 +457,70 @@ struct _TCP_SOCKET { // // Socket description information // - UINT32 Signature; ///< Signature of the socket - EFI_HANDLE SockHandle; ///< The virtual handle of the socket - EFI_HANDLE DriverBinding; ///< Socket's driver binding protocol - EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - LIST_ENTRY Link; - UINT8 ConfigureState; - SOCK_TYPE Type; - UINT8 State; - UINT16 Flag; - EFI_LOCK Lock; ///< The lock of socket - SOCK_BUFFER SndBuffer; ///< Send buffer of application's data - SOCK_BUFFER RcvBuffer; ///< Receive buffer of received data - EFI_STATUS SockError; ///< The error returned by low layer protocol - BOOLEAN InDestroy; + UINT32 Signature; ///< Signature of the socket + EFI_HANDLE SockHandle; ///< The virtual handle of the socket + EFI_HANDLE DriverBinding; ///< Socket's driver binding protocol + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + LIST_ENTRY Link; + UINT8 ConfigureState; + SOCK_TYPE Type; + UINT8 State; + UINT16 Flag; + EFI_LOCK Lock; ///< The lock of socket + SOCK_BUFFER SndBuffer; ///< Send buffer of application's data + SOCK_BUFFER RcvBuffer; ///< Receive buffer of received data + EFI_STATUS SockError; ///< The error returned by low layer protocol + BOOLEAN InDestroy; // // Fields used to manage the connection request // - UINT32 BackLog; ///< the limit of connection to this socket - UINT32 ConnCnt; ///< the current count of connections to it - SOCKET *Parent; ///< listening parent that accept the connection - LIST_ENTRY ConnectionList; ///< the connections maintained by this socket + UINT32 BackLog; ///< the limit of connection to this socket + UINT32 ConnCnt; ///< the current count of connections to it + SOCKET *Parent; ///< listening parent that accept the connection + LIST_ENTRY ConnectionList; ///< the connections maintained by this socket // // The queue to buffer application's asynchronous token // - LIST_ENTRY ListenTokenList; - LIST_ENTRY RcvTokenList; - LIST_ENTRY SndTokenList; - LIST_ENTRY ProcessingSndTokenList; + LIST_ENTRY ListenTokenList; + LIST_ENTRY RcvTokenList; + LIST_ENTRY SndTokenList; + LIST_ENTRY ProcessingSndTokenList; - SOCK_COMPLETION_TOKEN *ConnectionToken; ///< app's token to signal if connected - SOCK_COMPLETION_TOKEN *CloseToken; ///< app's token to signal if closed + SOCK_COMPLETION_TOKEN *ConnectionToken; ///< app's token to signal if connected + SOCK_COMPLETION_TOKEN *CloseToken; ///< app's token to signal if closed // // Interface for low level protocol // - SOCK_PROTO_HANDLER ProtoHandler; ///< The request handler of protocol - UINT8 ProtoReserved[PROTO_RESERVED_LEN]; ///< Data fields reserved for protocol - UINT8 IpVersion; - NET_PROTOCOL NetProtocol; ///< TCP4 or TCP6 protocol socket used + SOCK_PROTO_HANDLER ProtoHandler; ///< The request handler of protocol + UINT8 ProtoReserved[PROTO_RESERVED_LEN]; ///< Data fields reserved for protocol + UINT8 IpVersion; + NET_PROTOCOL NetProtocol; ///< TCP4 or TCP6 protocol socket used // // Callbacks after socket is created and before socket is to be destroyed. // - SOCK_CREATE_CALLBACK CreateCallback; ///< Callback after created - SOCK_DESTROY_CALLBACK DestroyCallback; ///< Callback before destroyed - VOID *Context; ///< The context of the callback + SOCK_CREATE_CALLBACK CreateCallback; ///< Callback after created + SOCK_DESTROY_CALLBACK DestroyCallback; ///< Callback before destroyed + VOID *Context; ///< The context of the callback }; /// /// The token structure buffered in socket layer. /// typedef struct _SOCK_TOKEN { - LIST_ENTRY TokenList; ///< The entry to add in the token list - SOCK_COMPLETION_TOKEN *Token; ///< The application's token - UINT32 RemainDataLen; ///< Unprocessed data length - SOCKET *Sock; ///< The pointer to the socket this token - ///< belongs to + LIST_ENTRY TokenList; ///< The entry to add in the token list + SOCK_COMPLETION_TOKEN *Token; ///< The application's token + UINT32 RemainDataLen; ///< Unprocessed data length + SOCKET *Sock; ///< The pointer to the socket this token + ///< belongs to } SOCK_TOKEN; /// /// Reserved data to access the NET_BUF delivered by TCP driver. /// typedef struct _TCP_RSV_DATA { - UINT32 UrgLen; + UINT32 UrgLen; } TCP_RSV_DATA; // @@ -536,8 +536,8 @@ typedef struct _TCP_RSV_DATA { **/ VOID SockSetState ( - IN OUT SOCKET *Sock, - IN UINT8 State + IN OUT SOCKET *Sock, + IN UINT8 State ); /** @@ -550,7 +550,7 @@ SockSetState ( **/ SOCKET * SockClone ( - IN SOCKET *Sock + IN SOCKET *Sock ); /** @@ -566,7 +566,7 @@ SockClone ( **/ VOID SockConnEstablished ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ); /** @@ -581,7 +581,7 @@ SockConnEstablished ( **/ VOID SockConnClosed ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ); /** @@ -596,8 +596,8 @@ SockConnClosed ( **/ VOID SockDataSent ( - IN OUT SOCKET *Sock, - IN UINT32 Count + IN OUT SOCKET *Sock, + IN UINT32 Count ); /** @@ -615,10 +615,10 @@ SockDataSent ( **/ UINT32 SockGetDataToSend ( - IN SOCKET *Sock, - IN UINT32 Offset, - IN UINT32 Len, - OUT UINT8 *Dest + IN SOCKET *Sock, + IN UINT32 Offset, + IN UINT32 Len, + OUT UINT8 *Dest ); /** @@ -634,9 +634,9 @@ SockGetDataToSend ( **/ VOID SockDataRcvd ( - IN OUT SOCKET *Sock, - IN OUT NET_BUF *NetBuffer, - IN UINT32 UrgLen + IN OUT SOCKET *Sock, + IN OUT NET_BUF *NetBuffer, + IN UINT32 UrgLen ); /** @@ -667,7 +667,7 @@ SockGetFreeSpace ( **/ VOID SockNoMoreData ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ); // @@ -686,7 +686,7 @@ SockNoMoreData ( **/ SOCKET * SockCreateChild ( - IN SOCK_INIT_DATA *SockInitData + IN SOCK_INIT_DATA *SockInitData ); /** @@ -700,7 +700,7 @@ SockCreateChild ( **/ EFI_STATUS SockDestroyChild ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ); /** @@ -716,8 +716,8 @@ SockDestroyChild ( **/ EFI_STATUS SockConfigure ( - IN SOCKET *Sock, - IN VOID *ConfigData + IN SOCKET *Sock, + IN VOID *ConfigData ); /** @@ -740,8 +740,8 @@ SockConfigure ( **/ EFI_STATUS SockConnect ( - IN SOCKET *Sock, - IN VOID *Token + IN SOCKET *Sock, + IN VOID *Token ); /** @@ -765,8 +765,8 @@ SockConnect ( **/ EFI_STATUS SockAccept ( - IN SOCKET *Sock, - IN VOID *Token + IN SOCKET *Sock, + IN VOID *Token ); /** @@ -789,8 +789,8 @@ SockAccept ( **/ EFI_STATUS SockSend ( - IN SOCKET *Sock, - IN VOID *Token + IN SOCKET *Sock, + IN VOID *Token ); /** @@ -814,8 +814,8 @@ SockSend ( **/ EFI_STATUS SockRcv ( - IN SOCKET *Sock, - IN VOID *Token + IN SOCKET *Sock, + IN VOID *Token ); /** @@ -829,7 +829,7 @@ SockRcv ( **/ EFI_STATUS SockFlush ( - IN OUT SOCKET *Sock + IN OUT SOCKET *Sock ); /** @@ -853,9 +853,9 @@ SockFlush ( **/ EFI_STATUS SockClose ( - IN OUT SOCKET *Sock, - IN VOID *Token, - IN BOOLEAN OnAbort + IN OUT SOCKET *Sock, + IN VOID *Token, + IN BOOLEAN OnAbort ); /** @@ -889,8 +889,8 @@ SockCancel ( **/ EFI_STATUS SockGetMode ( - IN SOCKET *Sock, - IN OUT VOID *Mode + IN SOCKET *Sock, + IN OUT VOID *Mode ); /** @@ -910,8 +910,8 @@ SockGetMode ( **/ EFI_STATUS SockRoute ( - IN SOCKET *Sock, - IN VOID *RouteInfo + IN SOCKET *Sock, + IN VOID *RouteInfo ); #endif diff --git a/NetworkPkg/TcpDxe/TcpDispatcher.c b/NetworkPkg/TcpDxe/TcpDispatcher.c index a04646ce49..d5e5276ac9 100644 --- a/NetworkPkg/TcpDxe/TcpDispatcher.c +++ b/NetworkPkg/TcpDxe/TcpDispatcher.c @@ -32,11 +32,11 @@ Tcp4Route ( IN TCP4_ROUTE_INFO *RouteInfo ) { - IP_IO_IP_PROTOCOL Ip; + IP_IO_IP_PROTOCOL Ip; Ip = Tcb->IpInfo->Ip; - ASSERT (Ip.Ip4!= NULL); + ASSERT (Ip.Ip4 != NULL); return Ip.Ip4->Routes ( Ip.Ip4, @@ -45,7 +45,6 @@ Tcp4Route ( RouteInfo->SubnetMask, RouteInfo->GatewayAddress ); - } /** @@ -62,15 +61,15 @@ Tcp4Route ( **/ EFI_STATUS Tcp4GetMode ( - IN TCP_CB *Tcb, - IN OUT TCP4_MODE_DATA *Mode + IN TCP_CB *Tcb, + IN OUT TCP4_MODE_DATA *Mode ) { - SOCKET *Sock; - EFI_TCP4_CONFIG_DATA *ConfigData; - EFI_TCP4_ACCESS_POINT *AccessPoint; - EFI_TCP4_OPTION *Option; - EFI_IP4_PROTOCOL *Ip; + SOCKET *Sock; + EFI_TCP4_CONFIG_DATA *ConfigData; + EFI_TCP4_ACCESS_POINT *AccessPoint; + EFI_TCP4_OPTION *Option; + EFI_IP4_PROTOCOL *Ip; Sock = Tcb->Sk; @@ -79,46 +78,45 @@ Tcp4GetMode ( } if (Mode->Tcp4State != NULL) { - *(Mode->Tcp4State) = (EFI_TCP4_CONNECTION_STATE) Tcb->State; + *(Mode->Tcp4State) = (EFI_TCP4_CONNECTION_STATE)Tcb->State; } if (Mode->Tcp4ConfigData != NULL) { + ConfigData = Mode->Tcp4ConfigData; + AccessPoint = &(ConfigData->AccessPoint); + Option = ConfigData->ControlOption; - ConfigData = Mode->Tcp4ConfigData; - AccessPoint = &(ConfigData->AccessPoint); - Option = ConfigData->ControlOption; + ConfigData->TypeOfService = Tcb->Tos; + ConfigData->TimeToLive = Tcb->Ttl; - ConfigData->TypeOfService = Tcb->Tos; - ConfigData->TimeToLive = Tcb->Ttl; - - AccessPoint->UseDefaultAddress = Tcb->UseDefaultAddr; + AccessPoint->UseDefaultAddress = Tcb->UseDefaultAddr; IP4_COPY_ADDRESS (&AccessPoint->StationAddress, &Tcb->LocalEnd.Ip); IP4_COPY_ADDRESS (&AccessPoint->SubnetMask, &Tcb->SubnetMask); - AccessPoint->StationPort = NTOHS (Tcb->LocalEnd.Port); + AccessPoint->StationPort = NTOHS (Tcb->LocalEnd.Port); IP4_COPY_ADDRESS (&AccessPoint->RemoteAddress, &Tcb->RemoteEnd.Ip); - AccessPoint->RemotePort = NTOHS (Tcb->RemoteEnd.Port); - AccessPoint->ActiveFlag = (BOOLEAN) (Tcb->State != TCP_LISTEN); + AccessPoint->RemotePort = NTOHS (Tcb->RemoteEnd.Port); + AccessPoint->ActiveFlag = (BOOLEAN)(Tcb->State != TCP_LISTEN); if (Option != NULL) { - Option->ReceiveBufferSize = GET_RCV_BUFFSIZE (Tcb->Sk); - Option->SendBufferSize = GET_SND_BUFFSIZE (Tcb->Sk); - Option->MaxSynBackLog = GET_BACKLOG (Tcb->Sk); - - Option->ConnectionTimeout = Tcb->ConnectTimeout / TCP_TICK_HZ; - Option->DataRetries = Tcb->MaxRexmit; - Option->FinTimeout = Tcb->FinWait2Timeout / TCP_TICK_HZ; - Option->TimeWaitTimeout = Tcb->TimeWaitTimeout / TCP_TICK_HZ; - Option->KeepAliveProbes = Tcb->MaxKeepAlive; - Option->KeepAliveTime = Tcb->KeepAliveIdle / TCP_TICK_HZ; - Option->KeepAliveInterval = Tcb->KeepAlivePeriod / TCP_TICK_HZ; - - Option->EnableNagle = (BOOLEAN) (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_NAGLE)); - Option->EnableTimeStamp = (BOOLEAN) (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_TS)); - Option->EnableWindowScaling = (BOOLEAN) (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_WS)); + Option->ReceiveBufferSize = GET_RCV_BUFFSIZE (Tcb->Sk); + Option->SendBufferSize = GET_SND_BUFFSIZE (Tcb->Sk); + Option->MaxSynBackLog = GET_BACKLOG (Tcb->Sk); + + Option->ConnectionTimeout = Tcb->ConnectTimeout / TCP_TICK_HZ; + Option->DataRetries = Tcb->MaxRexmit; + Option->FinTimeout = Tcb->FinWait2Timeout / TCP_TICK_HZ; + Option->TimeWaitTimeout = Tcb->TimeWaitTimeout / TCP_TICK_HZ; + Option->KeepAliveProbes = Tcb->MaxKeepAlive; + Option->KeepAliveTime = Tcb->KeepAliveIdle / TCP_TICK_HZ; + Option->KeepAliveInterval = Tcb->KeepAlivePeriod / TCP_TICK_HZ; + + Option->EnableNagle = (BOOLEAN)(!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_NAGLE)); + Option->EnableTimeStamp = (BOOLEAN)(!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_TS)); + Option->EnableWindowScaling = (BOOLEAN)(!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_WS)); Option->EnableSelectiveAck = FALSE; Option->EnablePathMtuDiscovery = FALSE; @@ -145,15 +143,15 @@ Tcp4GetMode ( **/ EFI_STATUS Tcp6GetMode ( - IN TCP_CB *Tcb, - IN OUT TCP6_MODE_DATA *Mode + IN TCP_CB *Tcb, + IN OUT TCP6_MODE_DATA *Mode ) { - SOCKET *Sock; - EFI_TCP6_CONFIG_DATA *ConfigData; - EFI_TCP6_ACCESS_POINT *AccessPoint; - EFI_TCP6_OPTION *Option; - EFI_IP6_PROTOCOL *Ip; + SOCKET *Sock; + EFI_TCP6_CONFIG_DATA *ConfigData; + EFI_TCP6_ACCESS_POINT *AccessPoint; + EFI_TCP6_OPTION *Option; + EFI_IP6_PROTOCOL *Ip; Sock = Tcb->Sk; @@ -162,41 +160,40 @@ Tcp6GetMode ( } if (Mode->Tcp6State != NULL) { - *(Mode->Tcp6State) = (EFI_TCP6_CONNECTION_STATE) (Tcb->State); + *(Mode->Tcp6State) = (EFI_TCP6_CONNECTION_STATE)(Tcb->State); } if (Mode->Tcp6ConfigData != NULL) { + ConfigData = Mode->Tcp6ConfigData; + AccessPoint = &(ConfigData->AccessPoint); + Option = ConfigData->ControlOption; - ConfigData = Mode->Tcp6ConfigData; - AccessPoint = &(ConfigData->AccessPoint); - Option = ConfigData->ControlOption; - - ConfigData->TrafficClass = Tcb->Tos; - ConfigData->HopLimit = Tcb->Ttl; + ConfigData->TrafficClass = Tcb->Tos; + ConfigData->HopLimit = Tcb->Ttl; - AccessPoint->StationPort = NTOHS (Tcb->LocalEnd.Port); - AccessPoint->RemotePort = NTOHS (Tcb->RemoteEnd.Port); - AccessPoint->ActiveFlag = (BOOLEAN) (Tcb->State != TCP_LISTEN); + AccessPoint->StationPort = NTOHS (Tcb->LocalEnd.Port); + AccessPoint->RemotePort = NTOHS (Tcb->RemoteEnd.Port); + AccessPoint->ActiveFlag = (BOOLEAN)(Tcb->State != TCP_LISTEN); IP6_COPY_ADDRESS (&AccessPoint->StationAddress, &Tcb->LocalEnd.Ip); IP6_COPY_ADDRESS (&AccessPoint->RemoteAddress, &Tcb->RemoteEnd.Ip); if (Option != NULL) { - Option->ReceiveBufferSize = GET_RCV_BUFFSIZE (Tcb->Sk); - Option->SendBufferSize = GET_SND_BUFFSIZE (Tcb->Sk); - Option->MaxSynBackLog = GET_BACKLOG (Tcb->Sk); - - Option->ConnectionTimeout = Tcb->ConnectTimeout / TCP_TICK_HZ; - Option->DataRetries = Tcb->MaxRexmit; - Option->FinTimeout = Tcb->FinWait2Timeout / TCP_TICK_HZ; - Option->TimeWaitTimeout = Tcb->TimeWaitTimeout / TCP_TICK_HZ; - Option->KeepAliveProbes = Tcb->MaxKeepAlive; - Option->KeepAliveTime = Tcb->KeepAliveIdle / TCP_TICK_HZ; - Option->KeepAliveInterval = Tcb->KeepAlivePeriod / TCP_TICK_HZ; - - Option->EnableNagle = (BOOLEAN) (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_NAGLE)); - Option->EnableTimeStamp = (BOOLEAN) (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_TS)); - Option->EnableWindowScaling = (BOOLEAN) (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_WS)); + Option->ReceiveBufferSize = GET_RCV_BUFFSIZE (Tcb->Sk); + Option->SendBufferSize = GET_SND_BUFFSIZE (Tcb->Sk); + Option->MaxSynBackLog = GET_BACKLOG (Tcb->Sk); + + Option->ConnectionTimeout = Tcb->ConnectTimeout / TCP_TICK_HZ; + Option->DataRetries = Tcb->MaxRexmit; + Option->FinTimeout = Tcb->FinWait2Timeout / TCP_TICK_HZ; + Option->TimeWaitTimeout = Tcb->TimeWaitTimeout / TCP_TICK_HZ; + Option->KeepAliveProbes = Tcb->MaxKeepAlive; + Option->KeepAliveTime = Tcb->KeepAliveIdle / TCP_TICK_HZ; + Option->KeepAliveInterval = Tcb->KeepAlivePeriod / TCP_TICK_HZ; + + Option->EnableNagle = (BOOLEAN)(!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_NAGLE)); + Option->EnableTimeStamp = (BOOLEAN)(!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_TS)); + Option->EnableWindowScaling = (BOOLEAN)(!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_WS)); Option->EnableSelectiveAck = FALSE; Option->EnablePathMtuDiscovery = FALSE; @@ -248,7 +245,6 @@ TcpBind ( // Check if a same endpoing is bound. // if (TcpFindTcbByPeer (&Local, *Port, IpVersion)) { - return EFI_INVALID_PARAMETER; } } else { @@ -270,14 +266,14 @@ TcpBind ( if (Cycle) { DEBUG ( (DEBUG_ERROR, - "TcpBind: no port can be allocated for this pcb\n") + "TcpBind: no port can be allocated for this pcb\n") ); return EFI_OUT_OF_RESOURCES; } *RandomPort = TCP_PORT_KNOWN + 1; - Cycle = TRUE; + Cycle = TRUE; } } @@ -295,14 +291,14 @@ TcpBind ( **/ VOID TcpFlushPcb ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { - SOCKET *Sock; + SOCKET *Sock; IpIoConfigIp (Tcb->IpInfo, NULL); - Sock = Tcb->Sk; + Sock = Tcb->Sk; if (SOCK_IS_CONFIGURED (Sock)) { RemoveEntryList (&Tcb->List); @@ -324,7 +320,7 @@ TcpFlushPcb ( NetbufFreeList (&Tcb->SndQue); NetbufFreeList (&Tcb->RcvQue); - Tcb->State = TCP_CLOSED; + Tcb->State = TCP_CLOSED; Tcb->RemoteIpZero = FALSE; } @@ -358,13 +354,12 @@ TcpAttachPcb ( Tcb = AllocateZeroPool (sizeof (TCP_CB)); if (Tcb == NULL) { - DEBUG ((DEBUG_ERROR, "TcpConfigurePcb: failed to allocate a TCB\n")); return EFI_OUT_OF_RESOURCES; } - ProtoData = (TCP_PROTO_DATA *) Sk->ProtoReserved; + ProtoData = (TCP_PROTO_DATA *)Sk->ProtoReserved; IpIo = ProtoData->TcpService->IpIo; // @@ -372,7 +367,6 @@ TcpAttachPcb ( // Tcb->IpInfo = IpIoAddIp (IpIo); if (Tcb->IpInfo == NULL) { - FreePool (Tcb); return EFI_OUT_OF_RESOURCES; } @@ -413,13 +407,13 @@ TcpAttachPcb ( **/ VOID TcpDetachPcb ( - IN OUT SOCKET *Sk + IN OUT SOCKET *Sk ) { - TCP_PROTO_DATA *ProtoData; - TCP_CB *Tcb; + TCP_PROTO_DATA *ProtoData; + TCP_CB *Tcb; - ProtoData = (TCP_PROTO_DATA *) Sk->ProtoReserved; + ProtoData = (TCP_PROTO_DATA *)Sk->ProtoReserved; Tcb = ProtoData->TcpPcb; ASSERT (Tcb != NULL); @@ -451,16 +445,16 @@ TcpConfigurePcb ( IN TCP_CONFIG_DATA *CfgData ) { - IP_IO_IP_CONFIG_DATA IpCfgData; - EFI_STATUS Status; - EFI_TCP4_OPTION *Option; - TCP_PROTO_DATA *TcpProto; - TCP_CB *Tcb; - TCP_ACCESS_POINT *TcpAp; + IP_IO_IP_CONFIG_DATA IpCfgData; + EFI_STATUS Status; + EFI_TCP4_OPTION *Option; + TCP_PROTO_DATA *TcpProto; + TCP_CB *Tcb; + TCP_ACCESS_POINT *TcpAp; ASSERT ((CfgData != NULL) && (Sk != NULL) && (Sk->SockHandle != NULL)); - TcpProto = (TCP_PROTO_DATA *) Sk->ProtoReserved; + TcpProto = (TCP_PROTO_DATA *)Sk->ProtoReserved; Tcb = TcpProto->TcpPcb; ASSERT (Tcb != NULL); @@ -470,28 +464,27 @@ TcpConfigurePcb ( // Add Ip for send pkt to the peer // CopyMem (&IpCfgData.Ip4CfgData, &mIp4IoDefaultIpConfigData, sizeof (EFI_IP4_CONFIG_DATA)); - IpCfgData.Ip4CfgData.DefaultProtocol = EFI_IP_PROTO_TCP; - IpCfgData.Ip4CfgData.TypeOfService = CfgData->Tcp4CfgData.TypeOfService; - IpCfgData.Ip4CfgData.TimeToLive = CfgData->Tcp4CfgData.TimeToLive; - IpCfgData.Ip4CfgData.UseDefaultAddress = CfgData->Tcp4CfgData.AccessPoint.UseDefaultAddress; + IpCfgData.Ip4CfgData.DefaultProtocol = EFI_IP_PROTO_TCP; + IpCfgData.Ip4CfgData.TypeOfService = CfgData->Tcp4CfgData.TypeOfService; + IpCfgData.Ip4CfgData.TimeToLive = CfgData->Tcp4CfgData.TimeToLive; + IpCfgData.Ip4CfgData.UseDefaultAddress = CfgData->Tcp4CfgData.AccessPoint.UseDefaultAddress; IP4_COPY_ADDRESS ( &IpCfgData.Ip4CfgData.SubnetMask, &CfgData->Tcp4CfgData.AccessPoint.SubnetMask ); - IpCfgData.Ip4CfgData.ReceiveTimeout = (UINT32) (-1); + IpCfgData.Ip4CfgData.ReceiveTimeout = (UINT32)(-1); IP4_COPY_ADDRESS ( &IpCfgData.Ip4CfgData.StationAddress, &CfgData->Tcp4CfgData.AccessPoint.StationAddress ); - } else { ASSERT (Sk->IpVersion == IP_VERSION_6); CopyMem (&IpCfgData.Ip6CfgData, &mIp6IoDefaultIpConfigData, sizeof (EFI_IP6_CONFIG_DATA)); - IpCfgData.Ip6CfgData.DefaultProtocol = EFI_IP_PROTO_TCP; - IpCfgData.Ip6CfgData.TrafficClass = CfgData->Tcp6CfgData.TrafficClass; - IpCfgData.Ip6CfgData.HopLimit = CfgData->Tcp6CfgData.HopLimit; - IpCfgData.Ip6CfgData.ReceiveTimeout = (UINT32) (-1); + IpCfgData.Ip6CfgData.DefaultProtocol = EFI_IP_PROTO_TCP; + IpCfgData.Ip6CfgData.TrafficClass = CfgData->Tcp6CfgData.TrafficClass; + IpCfgData.Ip6CfgData.HopLimit = CfgData->Tcp6CfgData.HopLimit; + IpCfgData.Ip6CfgData.ReceiveTimeout = (UINT32)(-1); IP6_COPY_ADDRESS ( &IpCfgData.Ip6CfgData.StationAddress, &CfgData->Tcp6CfgData.AccessPoint.StationAddress @@ -523,14 +516,14 @@ TcpConfigurePcb ( &IpCfgData.Ip4CfgData.SubnetMask ); - TcpAp = (TCP_ACCESS_POINT *) &CfgData->Tcp4CfgData.AccessPoint; + TcpAp = (TCP_ACCESS_POINT *)&CfgData->Tcp4CfgData.AccessPoint; } else { IP6_COPY_ADDRESS ( &CfgData->Tcp6CfgData.AccessPoint.StationAddress, &IpCfgData.Ip6CfgData.StationAddress ); - TcpAp = (TCP_ACCESS_POINT *) &CfgData->Tcp6CfgData.AccessPoint; + TcpAp = (TCP_ACCESS_POINT *)&CfgData->Tcp6CfgData.AccessPoint; } // @@ -541,8 +534,8 @@ TcpConfigurePcb ( if (EFI_ERROR (Status)) { DEBUG ( (DEBUG_ERROR, - "TcpConfigurePcb: Bind endpoint failed with %r\n", - Status) + "TcpConfigurePcb: Bind endpoint failed with %r\n", + Status) ); goto OnExit; @@ -551,55 +544,57 @@ TcpConfigurePcb ( // // Initialize the operating information in this Tcb // - ASSERT (Tcb->State == TCP_CLOSED && + ASSERT ( + Tcb->State == TCP_CLOSED && IsListEmpty (&Tcb->SndQue) && - IsListEmpty (&Tcb->RcvQue)); + IsListEmpty (&Tcb->RcvQue) + ); TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_NO_KEEPALIVE); - Tcb->State = TCP_CLOSED; + Tcb->State = TCP_CLOSED; - Tcb->SndMss = 536; - Tcb->RcvMss = TcpGetRcvMss (Sk); + Tcb->SndMss = 536; + Tcb->RcvMss = TcpGetRcvMss (Sk); - Tcb->SRtt = 0; - Tcb->Rto = 3 * TCP_TICK_HZ; + Tcb->SRtt = 0; + Tcb->Rto = 3 * TCP_TICK_HZ; - Tcb->CWnd = Tcb->SndMss; - Tcb->Ssthresh = 0xffffffff; + Tcb->CWnd = Tcb->SndMss; + Tcb->Ssthresh = 0xffffffff; - Tcb->CongestState = TCP_CONGEST_OPEN; + Tcb->CongestState = TCP_CONGEST_OPEN; - Tcb->KeepAliveIdle = TCP_KEEPALIVE_IDLE_MIN; - Tcb->KeepAlivePeriod = TCP_KEEPALIVE_PERIOD; - Tcb->MaxKeepAlive = TCP_MAX_KEEPALIVE; - Tcb->MaxRexmit = TCP_MAX_LOSS; - Tcb->FinWait2Timeout = TCP_FIN_WAIT2_TIME; - Tcb->TimeWaitTimeout = TCP_TIME_WAIT_TIME; - Tcb->ConnectTimeout = TCP_CONNECT_TIME; + Tcb->KeepAliveIdle = TCP_KEEPALIVE_IDLE_MIN; + Tcb->KeepAlivePeriod = TCP_KEEPALIVE_PERIOD; + Tcb->MaxKeepAlive = TCP_MAX_KEEPALIVE; + Tcb->MaxRexmit = TCP_MAX_LOSS; + Tcb->FinWait2Timeout = TCP_FIN_WAIT2_TIME; + Tcb->TimeWaitTimeout = TCP_TIME_WAIT_TIME; + Tcb->ConnectTimeout = TCP_CONNECT_TIME; if (Sk->IpVersion == IP_VERSION_4) { // // initialize Tcb in the light of CfgData // - Tcb->Ttl = CfgData->Tcp4CfgData.TimeToLive; - Tcb->Tos = CfgData->Tcp4CfgData.TypeOfService; + Tcb->Ttl = CfgData->Tcp4CfgData.TimeToLive; + Tcb->Tos = CfgData->Tcp4CfgData.TypeOfService; Tcb->UseDefaultAddr = CfgData->Tcp4CfgData.AccessPoint.UseDefaultAddress; CopyMem (&Tcb->LocalEnd.Ip, &CfgData->Tcp4CfgData.AccessPoint.StationAddress, sizeof (IP4_ADDR)); - Tcb->LocalEnd.Port = HTONS (CfgData->Tcp4CfgData.AccessPoint.StationPort); + Tcb->LocalEnd.Port = HTONS (CfgData->Tcp4CfgData.AccessPoint.StationPort); IP4_COPY_ADDRESS (&Tcb->SubnetMask, &CfgData->Tcp4CfgData.AccessPoint.SubnetMask); CopyMem (&Tcb->RemoteEnd.Ip, &CfgData->Tcp4CfgData.AccessPoint.RemoteAddress, sizeof (IP4_ADDR)); Tcb->RemoteEnd.Port = HTONS (CfgData->Tcp4CfgData.AccessPoint.RemotePort); - Option = CfgData->Tcp4CfgData.ControlOption; + Option = CfgData->Tcp4CfgData.ControlOption; } else { - Tcb->Ttl = CfgData->Tcp6CfgData.HopLimit; - Tcb->Tos = CfgData->Tcp6CfgData.TrafficClass; + Tcb->Ttl = CfgData->Tcp6CfgData.HopLimit; + Tcb->Tos = CfgData->Tcp6CfgData.TrafficClass; IP6_COPY_ADDRESS (&Tcb->LocalEnd.Ip, &CfgData->Tcp6CfgData.AccessPoint.StationAddress); - Tcb->LocalEnd.Port = HTONS (CfgData->Tcp6CfgData.AccessPoint.StationPort); + Tcb->LocalEnd.Port = HTONS (CfgData->Tcp6CfgData.AccessPoint.StationPort); IP6_COPY_ADDRESS (&Tcb->RemoteEnd.Ip, &CfgData->Tcp6CfgData.AccessPoint.RemoteAddress); Tcb->RemoteEnd.Port = HTONS (CfgData->Tcp6CfgData.AccessPoint.RemotePort); @@ -607,61 +602,61 @@ TcpConfigurePcb ( // // Type EFI_TCP4_OPTION and EFI_TCP6_OPTION are the same. // - Option = (EFI_TCP4_OPTION *) CfgData->Tcp6CfgData.ControlOption; + Option = (EFI_TCP4_OPTION *)CfgData->Tcp6CfgData.ControlOption; } if (Option != NULL) { SET_RCV_BUFFSIZE ( Sk, - (UINT32) (TCP_COMP_VAL ( - TCP_RCV_BUF_SIZE_MIN, - TCP_RCV_BUF_SIZE, - TCP_RCV_BUF_SIZE, - Option->ReceiveBufferSize - ) + (UINT32)(TCP_COMP_VAL ( + TCP_RCV_BUF_SIZE_MIN, + TCP_RCV_BUF_SIZE, + TCP_RCV_BUF_SIZE, + Option->ReceiveBufferSize + ) ) ); SET_SND_BUFFSIZE ( Sk, - (UINT32) (TCP_COMP_VAL ( - TCP_SND_BUF_SIZE_MIN, - TCP_SND_BUF_SIZE, - TCP_SND_BUF_SIZE, - Option->SendBufferSize - ) + (UINT32)(TCP_COMP_VAL ( + TCP_SND_BUF_SIZE_MIN, + TCP_SND_BUF_SIZE, + TCP_SND_BUF_SIZE, + Option->SendBufferSize + ) ) ); SET_BACKLOG ( Sk, - (UINT32) (TCP_COMP_VAL ( - TCP_BACKLOG_MIN, - TCP_BACKLOG, - TCP_BACKLOG, - Option->MaxSynBackLog - ) + (UINT32)(TCP_COMP_VAL ( + TCP_BACKLOG_MIN, + TCP_BACKLOG, + TCP_BACKLOG, + Option->MaxSynBackLog + ) ) ); - Tcb->MaxRexmit = (UINT16) TCP_COMP_VAL ( - TCP_MAX_LOSS_MIN, - TCP_MAX_LOSS, - TCP_MAX_LOSS, - Option->DataRetries - ); + Tcb->MaxRexmit = (UINT16)TCP_COMP_VAL ( + TCP_MAX_LOSS_MIN, + TCP_MAX_LOSS, + TCP_MAX_LOSS, + Option->DataRetries + ); Tcb->FinWait2Timeout = TCP_COMP_VAL ( - TCP_FIN_WAIT2_TIME, - TCP_FIN_WAIT2_TIME_MAX, - TCP_FIN_WAIT2_TIME, - (UINT32) (Option->FinTimeout * TCP_TICK_HZ) - ); + TCP_FIN_WAIT2_TIME, + TCP_FIN_WAIT2_TIME_MAX, + TCP_FIN_WAIT2_TIME, + (UINT32)(Option->FinTimeout * TCP_TICK_HZ) + ); if (Option->TimeWaitTimeout != 0) { Tcb->TimeWaitTimeout = TCP_COMP_VAL ( TCP_TIME_WAIT_TIME, TCP_TIME_WAIT_TIME_MAX, TCP_TIME_WAIT_TIME, - (UINT32) (Option->TimeWaitTimeout * TCP_TICK_HZ) + (UINT32)(Option->TimeWaitTimeout * TCP_TICK_HZ) ); } else { Tcb->TimeWaitTimeout = 0; @@ -670,23 +665,23 @@ TcpConfigurePcb ( if (Option->KeepAliveProbes != 0) { TCP_CLEAR_FLG (Tcb->CtrlFlag, TCP_CTRL_NO_KEEPALIVE); - Tcb->MaxKeepAlive = (UINT8) TCP_COMP_VAL ( - TCP_MAX_KEEPALIVE_MIN, - TCP_MAX_KEEPALIVE, - TCP_MAX_KEEPALIVE, - Option->KeepAliveProbes - ); + Tcb->MaxKeepAlive = (UINT8)TCP_COMP_VAL ( + TCP_MAX_KEEPALIVE_MIN, + TCP_MAX_KEEPALIVE, + TCP_MAX_KEEPALIVE, + Option->KeepAliveProbes + ); Tcb->KeepAliveIdle = TCP_COMP_VAL ( TCP_KEEPALIVE_IDLE_MIN, TCP_KEEPALIVE_IDLE_MAX, TCP_KEEPALIVE_IDLE_MIN, - (UINT32) (Option->KeepAliveTime * TCP_TICK_HZ) + (UINT32)(Option->KeepAliveTime * TCP_TICK_HZ) ); Tcb->KeepAlivePeriod = TCP_COMP_VAL ( TCP_KEEPALIVE_PERIOD_MIN, TCP_KEEPALIVE_PERIOD, TCP_KEEPALIVE_PERIOD, - (UINT32) (Option->KeepAliveInterval * TCP_TICK_HZ) + (UINT32)(Option->KeepAliveInterval * TCP_TICK_HZ) ); } @@ -694,7 +689,7 @@ TcpConfigurePcb ( TCP_CONNECT_TIME_MIN, TCP_CONNECT_TIME, TCP_CONNECT_TIME, - (UINT32) (Option->ConnectionTimeout * TCP_TICK_HZ) + (UINT32)(Option->ConnectionTimeout * TCP_TICK_HZ) ); if (!Option->EnableNagle) { @@ -724,19 +719,18 @@ TcpConfigurePcb ( // if (((Sk->IpVersion == IP_VERSION_4) && !CfgData->Tcp4CfgData.AccessPoint.ActiveFlag) || ((Sk->IpVersion == IP_VERSION_6) && !CfgData->Tcp6CfgData.AccessPoint.ActiveFlag) - ) { - + ) + { TcpSetState (Tcb, TCP_LISTEN); SockSetState (Sk, SO_LISTENING); Sk->ConfigureState = SO_CONFIGURED_PASSIVE; } else { - Sk->ConfigureState = SO_CONFIGURED_ACTIVE; } if (Sk->IpVersion == IP_VERSION_6) { - Tcb->Tick = TCP6_REFRESH_NEIGHBOR_TICK; + Tcb->Tick = TCP6_REFRESH_NEIGHBOR_TICK; if (NetIp6IsUnspecifiedAddr (&Tcb->RemoteEnd.Ip.v6)) { Tcb->RemoteIpZero = TRUE; @@ -768,123 +762,121 @@ OnExit: **/ EFI_STATUS TcpDispatcher ( - IN SOCKET *Sock, - IN UINT8 Request, - IN VOID *Data OPTIONAL + IN SOCKET *Sock, + IN UINT8 Request, + IN VOID *Data OPTIONAL ) { TCP_CB *Tcb; TCP_PROTO_DATA *ProtoData; - ProtoData = (TCP_PROTO_DATA *) Sock->ProtoReserved; + ProtoData = (TCP_PROTO_DATA *)Sock->ProtoReserved; Tcb = ProtoData->TcpPcb; switch (Request) { - case SOCK_POLL: - if (Tcb->Sk->IpVersion == IP_VERSION_4) { - ProtoData->TcpService->IpIo->Ip.Ip4->Poll (ProtoData->TcpService->IpIo->Ip.Ip4); - } else { - ProtoData->TcpService->IpIo->Ip.Ip6->Poll (ProtoData->TcpService->IpIo->Ip.Ip6); - } - - break; - - case SOCK_CONSUMED: - // - // After user received data from socket buffer, socket will - // notify TCP using this message to give it a chance to send out - // window update information - // - ASSERT (Tcb != NULL); - TcpOnAppConsume (Tcb); - break; + case SOCK_POLL: + if (Tcb->Sk->IpVersion == IP_VERSION_4) { + ProtoData->TcpService->IpIo->Ip.Ip4->Poll (ProtoData->TcpService->IpIo->Ip.Ip4); + } else { + ProtoData->TcpService->IpIo->Ip.Ip6->Poll (ProtoData->TcpService->IpIo->Ip.Ip6); + } - case SOCK_SND: + break; - ASSERT (Tcb != NULL); - TcpOnAppSend (Tcb); - break; + case SOCK_CONSUMED: + // + // After user received data from socket buffer, socket will + // notify TCP using this message to give it a chance to send out + // window update information + // + ASSERT (Tcb != NULL); + TcpOnAppConsume (Tcb); + break; - case SOCK_CLOSE: + case SOCK_SND: - TcpOnAppClose (Tcb); + ASSERT (Tcb != NULL); + TcpOnAppSend (Tcb); + break; - break; + case SOCK_CLOSE: - case SOCK_ABORT: + TcpOnAppClose (Tcb); - TcpOnAppAbort (Tcb); + break; - break; + case SOCK_ABORT: - case SOCK_SNDPUSH: - Tcb->SndPsh = TcpGetMaxSndNxt (Tcb) + GET_SND_DATASIZE (Tcb->Sk); - TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_PSH); + TcpOnAppAbort (Tcb); - break; + break; - case SOCK_SNDURG: - Tcb->SndUp = TcpGetMaxSndNxt (Tcb) + GET_SND_DATASIZE (Tcb->Sk) - 1; - TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_URG); + case SOCK_SNDPUSH: + Tcb->SndPsh = TcpGetMaxSndNxt (Tcb) + GET_SND_DATASIZE (Tcb->Sk); + TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_PSH); - break; + break; - case SOCK_CONNECT: + case SOCK_SNDURG: + Tcb->SndUp = TcpGetMaxSndNxt (Tcb) + GET_SND_DATASIZE (Tcb->Sk) - 1; + TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_URG); - TcpOnAppConnect (Tcb); + break; - break; + case SOCK_CONNECT: - case SOCK_ATTACH: + TcpOnAppConnect (Tcb); - return TcpAttachPcb (Sock); + break; - break; + case SOCK_ATTACH: - case SOCK_FLUSH: + return TcpAttachPcb (Sock); - TcpFlushPcb (Tcb); + break; - break; + case SOCK_FLUSH: - case SOCK_DETACH: + TcpFlushPcb (Tcb); - TcpDetachPcb (Sock); + break; - break; + case SOCK_DETACH: - case SOCK_CONFIGURE: + TcpDetachPcb (Sock); - return TcpConfigurePcb ( - Sock, - (TCP_CONFIG_DATA *) Data - ); + break; - break; + case SOCK_CONFIGURE: - case SOCK_MODE: + return TcpConfigurePcb ( + Sock, + (TCP_CONFIG_DATA *)Data + ); - ASSERT ((Data != NULL) && (Tcb != NULL)); + break; - if (Tcb->Sk->IpVersion == IP_VERSION_4) { + case SOCK_MODE: - return Tcp4GetMode (Tcb, (TCP4_MODE_DATA *) Data); - } else { + ASSERT ((Data != NULL) && (Tcb != NULL)); - return Tcp6GetMode (Tcb, (TCP6_MODE_DATA *) Data); - } + if (Tcb->Sk->IpVersion == IP_VERSION_4) { + return Tcp4GetMode (Tcb, (TCP4_MODE_DATA *)Data); + } else { + return Tcp6GetMode (Tcb, (TCP6_MODE_DATA *)Data); + } - break; + break; - case SOCK_ROUTE: + case SOCK_ROUTE: - ASSERT ((Data != NULL) && (Tcb != NULL) && (Tcb->Sk->IpVersion == IP_VERSION_4)); + ASSERT ((Data != NULL) && (Tcb != NULL) && (Tcb->Sk->IpVersion == IP_VERSION_4)); - return Tcp4Route (Tcb, (TCP4_ROUTE_INFO *) Data); + return Tcp4Route (Tcb, (TCP4_ROUTE_INFO *)Data); - default: + default: - return EFI_UNSUPPORTED; + return EFI_UNSUPPORTED; } return EFI_SUCCESS; diff --git a/NetworkPkg/TcpDxe/TcpDriver.c b/NetworkPkg/TcpDxe/TcpDriver.c index ef8cd42694..98a90e0210 100644 --- a/NetworkPkg/TcpDxe/TcpDriver.c +++ b/NetworkPkg/TcpDxe/TcpDriver.c @@ -9,15 +9,15 @@ #include "TcpMain.h" -UINT16 mTcp4RandomPort; -UINT16 mTcp6RandomPort; +UINT16 mTcp4RandomPort; +UINT16 mTcp6RandomPort; -TCP_HEARTBEAT_TIMER mTcpTimer = { +TCP_HEARTBEAT_TIMER mTcpTimer = { NULL, 0 }; -EFI_TCP4_PROTOCOL gTcp4ProtocolTemplate = { +EFI_TCP4_PROTOCOL gTcp4ProtocolTemplate = { Tcp4GetModeData, Tcp4Configure, Tcp4Routes, @@ -30,7 +30,7 @@ EFI_TCP4_PROTOCOL gTcp4ProtocolTemplate = { Tcp4Poll }; -EFI_TCP6_PROTOCOL gTcp6ProtocolTemplate = { +EFI_TCP6_PROTOCOL gTcp6ProtocolTemplate = { Tcp6GetModeData, Tcp6Configure, Tcp6Connect, @@ -42,7 +42,7 @@ EFI_TCP6_PROTOCOL gTcp6ProtocolTemplate = { Tcp6Poll }; -SOCK_INIT_DATA mTcpDefaultSockData = { +SOCK_INIT_DATA mTcpDefaultSockData = { SockStream, SO_CLOSED, NULL, @@ -60,7 +60,7 @@ SOCK_INIT_DATA mTcpDefaultSockData = { NULL, }; -EFI_DRIVER_BINDING_PROTOCOL gTcp4DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gTcp4DriverBinding = { Tcp4DriverBindingSupported, Tcp4DriverBindingStart, Tcp4DriverBindingStop, @@ -69,7 +69,7 @@ EFI_DRIVER_BINDING_PROTOCOL gTcp4DriverBinding = { NULL }; -EFI_DRIVER_BINDING_PROTOCOL gTcp6DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gTcp6DriverBinding = { Tcp6DriverBindingSupported, Tcp6DriverBindingStart, Tcp6DriverBindingStop, @@ -83,7 +83,6 @@ EFI_SERVICE_BINDING_PROTOCOL gTcpServiceBinding = { TcpServiceBindingDestroyChild }; - /** Create and start the heartbeat timer for the TCP driver. @@ -101,7 +100,6 @@ TcpCreateTimer ( Status = EFI_SUCCESS; if (mTcpTimer.RefCnt == 0) { - Status = gBS->CreateEvent ( EVT_TIMER | EVT_NOTIFY_SIGNAL, TPL_NOTIFY, @@ -110,17 +108,15 @@ TcpCreateTimer ( &mTcpTimer.TimerEvent ); if (!EFI_ERROR (Status)) { - Status = gBS->SetTimer ( mTcpTimer.TimerEvent, TimerPeriodic, - (UINT64) (TICKS_PER_SECOND / TCP_TICK_HZ) + (UINT64)(TICKS_PER_SECOND / TCP_TICK_HZ) ); } } if (!EFI_ERROR (Status)) { - mTcpTimer.RefCnt++; } @@ -209,7 +205,7 @@ TcpDriverEntryPoint ( // Seed = NetRandomInitSeed (); mTcpGlobalIss = NET_RANDOM (Seed) % mTcpGlobalIss; - mTcp4RandomPort = (UINT16) (TCP_PORT_KNOWN + (NET_RANDOM (Seed) % TCP_PORT_KNOWN)); + mTcp4RandomPort = (UINT16)(TCP_PORT_KNOWN + (NET_RANDOM (Seed) % TCP_PORT_KNOWN)); mTcp6RandomPort = mTcp4RandomPort; return EFI_SUCCESS; @@ -233,11 +229,11 @@ TcpCreateService ( IN UINT8 IpVersion ) { - EFI_STATUS Status; - EFI_GUID *IpServiceBindingGuid; - EFI_GUID *TcpServiceBindingGuid; - TCP_SERVICE_DATA *TcpServiceData; - IP_IO_OPEN_DATA OpenData; + EFI_STATUS Status; + EFI_GUID *IpServiceBindingGuid; + EFI_GUID *TcpServiceBindingGuid; + TCP_SERVICE_DATA *TcpServiceData; + IP_IO_OPEN_DATA OpenData; if (IpVersion == IP_VERSION_4) { IpServiceBindingGuid = &gEfiIp4ServiceBindingProtocolGuid; @@ -279,10 +275,10 @@ TcpCreateService ( return EFI_OUT_OF_RESOURCES; } - TcpServiceData->Signature = TCP_DRIVER_SIGNATURE; - TcpServiceData->ControllerHandle = Controller; - TcpServiceData->DriverBindingHandle = Image; - TcpServiceData->IpVersion = IpVersion; + TcpServiceData->Signature = TCP_DRIVER_SIGNATURE; + TcpServiceData->ControllerHandle = Controller; + TcpServiceData->DriverBindingHandle = Image; + TcpServiceData->IpVersion = IpVersion; CopyMem ( &TcpServiceData->ServiceBinding, &gTcpServiceBinding, @@ -295,7 +291,6 @@ TcpCreateService ( goto ON_ERROR; } - InitializeListHead (&TcpServiceData->SocketList); ZeroMem (&OpenData, sizeof (IP_IO_OPEN_DATA)); @@ -315,8 +310,8 @@ TcpCreateService ( OpenData.IpConfigData.Ip6CfgData.DefaultProtocol = EFI_IP_PROTO_TCP; } - OpenData.PktRcvdNotify = TcpRxCallback; - Status = IpIoOpen (TcpServiceData->IpIo, &OpenData); + OpenData.PktRcvdNotify = TcpRxCallback; + Status = IpIoOpen (TcpServiceData->IpIo, &OpenData); if (EFI_ERROR (Status)) { goto ON_ERROR; } @@ -365,8 +360,8 @@ ON_ERROR: EFI_STATUS EFIAPI TcpDestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { SOCKET *Sock; @@ -374,14 +369,14 @@ TcpDestroyChildEntryInHandleBuffer ( UINTN NumberOfChildren; EFI_HANDLE *ChildHandleBuffer; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - Sock = NET_LIST_USER_STRUCT_S (Entry, SOCKET, Link, SOCK_SIGNATURE); - ServiceBinding = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; - NumberOfChildren = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; - ChildHandleBuffer = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; + Sock = NET_LIST_USER_STRUCT_S (Entry, SOCKET, Link, SOCK_SIGNATURE); + ServiceBinding = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; + NumberOfChildren = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; + ChildHandleBuffer = ((TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; if (!NetIsInHandleBuffer (Sock->SockHandle, NumberOfChildren, ChildHandleBuffer)) { return EFI_SUCCESS; @@ -415,13 +410,13 @@ TcpDestroyService ( IN UINT8 IpVersion ) { - EFI_HANDLE NicHandle; - EFI_GUID *IpProtocolGuid; - EFI_GUID *ServiceBindingGuid; - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - TCP_SERVICE_DATA *TcpServiceData; - EFI_STATUS Status; - LIST_ENTRY *List; + EFI_HANDLE NicHandle; + EFI_GUID *IpProtocolGuid; + EFI_GUID *ServiceBindingGuid; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + TCP_SERVICE_DATA *TcpServiceData; + EFI_STATUS Status; + LIST_ENTRY *List; TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT Context; ASSERT ((IpVersion == IP_VERSION_4) || (IpVersion == IP_VERSION_6)); @@ -442,7 +437,7 @@ TcpDestroyService ( Status = gBS->OpenProtocol ( NicHandle, ServiceBindingGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, ImageHandle, Controller, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -454,16 +449,16 @@ TcpDestroyService ( TcpServiceData = TCP_SERVICE_FROM_THIS (ServiceBinding); if (NumberOfChildren != 0) { - List = &TcpServiceData->SocketList; - Context.ServiceBinding = ServiceBinding; - Context.NumberOfChildren = NumberOfChildren; + List = &TcpServiceData->SocketList; + Context.ServiceBinding = ServiceBinding; + Context.NumberOfChildren = NumberOfChildren; Context.ChildHandleBuffer = ChildHandleBuffer; - Status = NetDestroyLinkList ( - List, - TcpDestroyChildEntryInHandleBuffer, - &Context, - NULL - ); + Status = NetDestroyLinkList ( + List, + TcpDestroyChildEntryInHandleBuffer, + &Context, + NULL + ); } else if (IsListEmpty (&TcpServiceData->SocketList)) { // // Uninstall TCP servicebinding protocol @@ -758,7 +753,7 @@ TcpCreateSocketCallback ( IpProtocolGuid = &gEfiIp6ProtocolGuid; } - TcpServiceData = ((TCP_PROTO_DATA *) This->ProtoReserved)->TcpService; + TcpServiceData = ((TCP_PROTO_DATA *)This->ProtoReserved)->TcpService; // // Open the default IP protocol of IP_IO BY_DRIVER. @@ -781,7 +776,7 @@ TcpCreateSocketCallback ( Status = gBS->OpenProtocol ( TcpServiceData->ControllerHandle, &gEfiDevicePathProtocolGuid, - (VOID **) &This->ParentDevicePath, + (VOID **)&This->ParentDevicePath, TcpServiceData->DriverBindingHandle, This->SockHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -825,7 +820,7 @@ TcpDestroySocketCallback ( IpProtocolGuid = &gEfiIp6ProtocolGuid; } - TcpServiceData = ((TCP_PROTO_DATA *) This->ProtoReserved)->TcpService; + TcpServiceData = ((TCP_PROTO_DATA *)This->ProtoReserved)->TcpService; // // Remove this node from the list. @@ -876,7 +871,7 @@ TcpServiceBindingCreateChild ( EFI_STATUS Status; EFI_TPL OldTpl; - if (NULL == This || NULL == ChildHandle) { + if ((NULL == This) || (NULL == ChildHandle)) { return EFI_INVALID_PARAMETER; } @@ -906,7 +901,7 @@ TcpServiceBindingCreateChild ( if (NULL == Sock) { DEBUG ( (DEBUG_ERROR, - "TcpDriverBindingCreateChild: No resource to create a Tcp Child\n") + "TcpDriverBindingCreateChild: No resource to create a Tcp Child\n") ); Status = EFI_OUT_OF_RESOURCES; @@ -914,7 +909,7 @@ TcpServiceBindingCreateChild ( *ChildHandle = Sock->SockHandle; } - mTcpDefaultSockData.ProtoData = NULL; + mTcpDefaultSockData.ProtoData = NULL; gBS->RestoreTPL (OldTpl); return Status; @@ -949,7 +944,7 @@ TcpServiceBindingDestroyChild ( VOID *Tcp; SOCKET *Sock; - if (NULL == This || NULL == ChildHandle) { + if ((NULL == This) || (NULL == ChildHandle)) { return EFI_INVALID_PARAMETER; } diff --git a/NetworkPkg/TcpDxe/TcpDriver.h b/NetworkPkg/TcpDxe/TcpDriver.h index b90eed9f60..a824f3b1d2 100644 --- a/NetworkPkg/TcpDxe/TcpDriver.h +++ b/NetworkPkg/TcpDxe/TcpDriver.h @@ -10,29 +10,29 @@ #ifndef _TCP_DRIVER_H_ #define _TCP_DRIVER_H_ -#define TCP_DRIVER_SIGNATURE SIGNATURE_32 ('T', 'C', 'P', 'D') +#define TCP_DRIVER_SIGNATURE SIGNATURE_32 ('T', 'C', 'P', 'D') -#define TCP_PORT_KNOWN 1024 -#define TCP_PORT_USER_RESERVED 65535 +#define TCP_PORT_KNOWN 1024 +#define TCP_PORT_USER_RESERVED 65535 typedef struct _TCP_HEARTBEAT_TIMER { - EFI_EVENT TimerEvent; - INTN RefCnt; + EFI_EVENT TimerEvent; + INTN RefCnt; } TCP_HEARTBEAT_TIMER; typedef struct _TCP_SERVICE_DATA { - UINT32 Signature; - EFI_HANDLE ControllerHandle; - EFI_HANDLE DriverBindingHandle; - UINT8 IpVersion; - IP_IO *IpIo; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - LIST_ENTRY SocketList; + UINT32 Signature; + EFI_HANDLE ControllerHandle; + EFI_HANDLE DriverBindingHandle; + UINT8 IpVersion; + IP_IO *IpIo; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + LIST_ENTRY SocketList; } TCP_SERVICE_DATA; typedef struct _TCP_PROTO_DATA { - TCP_SERVICE_DATA *TcpService; - TCP_CB *TcpPcb; + TCP_SERVICE_DATA *TcpService; + TCP_CB *TcpPcb; } TCP_PROTO_DATA; #define TCP_SERVICE_FROM_THIS(a) \ diff --git a/NetworkPkg/TcpDxe/TcpFunc.h b/NetworkPkg/TcpDxe/TcpFunc.h index 05cd3c75dc..a7af01fff2 100644 --- a/NetworkPkg/TcpDxe/TcpFunc.h +++ b/NetworkPkg/TcpDxe/TcpFunc.h @@ -24,7 +24,7 @@ typedef VOID (*TCP_TIMER_HANDLER) ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); // @@ -39,7 +39,7 @@ VOID **/ VOID TcpInitTcbLocal ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -52,9 +52,9 @@ TcpInitTcbLocal ( **/ VOID TcpInitTcbPeer ( - IN OUT TCP_CB *Tcb, - IN TCP_SEG *Seg, - IN TCP_OPTION *Opt + IN OUT TCP_CB *Tcb, + IN TCP_SEG *Seg, + IN TCP_OPTION *Opt ); /** @@ -112,7 +112,7 @@ TcpLocateTcb ( **/ INTN TcpInsertTcb ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ); /** @@ -125,7 +125,7 @@ TcpInsertTcb ( **/ TCP_CB * TcpCloneTcb ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ); /** @@ -161,8 +161,8 @@ TcpGetRcvMss ( **/ VOID TcpSetState ( - IN TCP_CB *Tcb, - IN UINT8 State + IN TCP_CB *Tcb, + IN UINT8 State ); /** @@ -176,8 +176,8 @@ TcpSetState ( **/ UINT16 TcpChecksum ( - IN NET_BUF *Nbuf, - IN UINT16 HeadSum + IN NET_BUF *Nbuf, + IN UINT16 HeadSum ); /** @@ -192,8 +192,8 @@ TcpChecksum ( **/ TCP_SEG * TcpFormatNetbuf ( - IN TCP_CB *Tcb, - IN OUT NET_BUF *Nbuf + IN TCP_CB *Tcb, + IN OUT NET_BUF *Nbuf ); /** @@ -217,7 +217,7 @@ TcpOnAppConnect ( **/ VOID TcpOnAppConsume ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ); /** @@ -229,7 +229,7 @@ TcpOnAppConsume ( **/ VOID TcpOnAppClose ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -244,7 +244,7 @@ TcpOnAppClose ( **/ INTN TcpOnAppSend ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -256,7 +256,7 @@ TcpOnAppSend ( **/ VOID TcpOnAppAbort ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ); /** @@ -267,7 +267,7 @@ TcpOnAppAbort ( **/ VOID TcpResetConnection ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ); /** @@ -281,10 +281,9 @@ TcpResetConnection ( **/ EFI_STATUS TcpInstallDevicePath ( - IN SOCKET *Sock + IN SOCKET *Sock ); - // // Functions in TcpOutput.c // @@ -299,7 +298,7 @@ TcpInstallDevicePath ( **/ UINT32 TcpRcvWinOld ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ); /** @@ -312,7 +311,7 @@ TcpRcvWinOld ( **/ UINT32 TcpRcvWinNow ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ); /** @@ -325,7 +324,7 @@ TcpRcvWinNow ( **/ TCP_SEQNO TcpGetMaxSndNxt ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ); /** @@ -340,8 +339,8 @@ TcpGetMaxSndNxt ( **/ UINT32 TcpDataToSend ( - IN TCP_CB *Tcb, - IN INTN Force + IN TCP_CB *Tcb, + IN INTN Force ); /** @@ -356,8 +355,8 @@ TcpDataToSend ( **/ INTN TcpRetransmit ( - IN TCP_CB *Tcb, - IN TCP_SEQNO Seq + IN TCP_CB *Tcb, + IN TCP_SEQNO Seq ); /** @@ -372,8 +371,8 @@ TcpRetransmit ( **/ INTN TcpToSendData ( - IN OUT TCP_CB *Tcb, - IN INTN Force + IN OUT TCP_CB *Tcb, + IN INTN Force ); /** @@ -384,7 +383,7 @@ TcpToSendData ( **/ VOID TcpToSendAck ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -395,7 +394,7 @@ TcpToSendAck ( **/ VOID TcpSendAck ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -409,7 +408,7 @@ TcpSendAck ( **/ INTN TcpSendZeroProbe ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -448,7 +447,7 @@ TcpSendReset ( **/ INTN TcpVerifySegment ( - IN NET_BUF *Nbuf + IN NET_BUF *Nbuf ); // @@ -511,7 +510,7 @@ TcpInput ( **/ VOID TcpClose ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -524,8 +523,8 @@ TcpClose ( VOID EFIAPI TcpTicking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -538,9 +537,9 @@ TcpTicking ( **/ VOID TcpSetTimer ( - IN OUT TCP_CB *Tcb, - IN UINT16 Timer, - IN UINT32 TimeOut + IN OUT TCP_CB *Tcb, + IN UINT16 Timer, + IN UINT32 TimeOut ); /** @@ -552,8 +551,8 @@ TcpSetTimer ( **/ VOID TcpClearTimer ( - IN OUT TCP_CB *Tcb, - IN UINT16 Timer + IN OUT TCP_CB *Tcb, + IN UINT16 Timer ); /** @@ -564,7 +563,7 @@ TcpClearTimer ( **/ VOID TcpClearAllTimer ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -575,7 +574,7 @@ TcpClearAllTimer ( **/ VOID TcpSetProbeTimer ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -586,7 +585,7 @@ TcpSetProbeTimer ( **/ VOID TcpSetKeepaliveTimer ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); // @@ -609,11 +608,11 @@ TcpSetKeepaliveTimer ( VOID EFIAPI TcpRxCallback ( - IN EFI_STATUS Status, - IN UINT8 IcmpErr, - IN EFI_NET_SESSION_DATA *NetSession, - IN NET_BUF *Pkt, - IN VOID *Context OPTIONAL + IN EFI_STATUS Status, + IN UINT8 IcmpErr, + IN EFI_NET_SESSION_DATA *NetSession, + IN NET_BUF *Pkt, + IN VOID *Context OPTIONAL ); /** @@ -685,9 +684,9 @@ Tcp6RefreshNeighbor ( **/ EFI_STATUS TcpDispatcher ( - IN SOCKET *Sock, - IN UINT8 Request, - IN VOID *Data OPTIONAL + IN SOCKET *Sock, + IN UINT8 Request, + IN VOID *Data OPTIONAL ); #endif diff --git a/NetworkPkg/TcpDxe/TcpInput.c b/NetworkPkg/TcpDxe/TcpInput.c index efa41d637e..fb1aa827f8 100644 --- a/NetworkPkg/TcpDxe/TcpInput.c +++ b/NetworkPkg/TcpDxe/TcpInput.c @@ -21,8 +21,8 @@ **/ INTN TcpSeqAcceptable ( - IN TCP_CB *Tcb, - IN TCP_SEG *Seg + IN TCP_CB *Tcb, + IN TCP_SEG *Seg ) { return (TCP_SEQ_LEQ (Tcb->RcvNxt, Seg->End) && @@ -38,8 +38,8 @@ TcpSeqAcceptable ( **/ VOID TcpFastRecover ( - IN OUT TCP_CB *Tcb, - IN TCP_SEG *Seg + IN OUT TCP_CB *Tcb, + IN TCP_SEG *Seg ) { UINT32 FlightSize; @@ -49,14 +49,13 @@ TcpFastRecover ( // Step 1: Three duplicate ACKs and not in fast recovery // if (Tcb->CongestState != TCP_CONGEST_RECOVER) { - // // Step 1A: Invoking fast retransmission. // - FlightSize = TCP_SUB_SEQ (Tcb->SndNxt, Tcb->SndUna); + FlightSize = TCP_SUB_SEQ (Tcb->SndNxt, Tcb->SndUna); - Tcb->Ssthresh = MAX (FlightSize >> 1, (UINT32) (2 * Tcb->SndMss)); - Tcb->Recover = Tcb->SndNxt; + Tcb->Ssthresh = MAX (FlightSize >> 1, (UINT32)(2 * Tcb->SndMss)); + Tcb->Recover = Tcb->SndNxt; Tcb->CongestState = TCP_CONGEST_RECOVER; TCP_CLEAR_FLG (Tcb->CtrlFlag, TCP_CTRL_RTT_ON); @@ -69,9 +68,9 @@ TcpFastRecover ( DEBUG ( (DEBUG_NET, - "TcpFastRecover: enter fast retransmission for TCB %p, recover point is %d\n", - Tcb, - Tcb->Recover) + "TcpFastRecover: enter fast retransmission for TCB %p, recover point is %d\n", + Tcb, + Tcb->Recover) ); return; } @@ -80,7 +79,6 @@ TcpFastRecover ( // During fast recovery, execute Step 3, 4, 5 of RFC3782 // if (Seg->Ack == Tcb->SndUna) { - // // Step 3: Fast Recovery, // If this is a duplicated ACK, increse Cwnd by SMSS. @@ -92,37 +90,32 @@ TcpFastRecover ( Tcb->CWnd += Tcb->SndMss; DEBUG ( (DEBUG_NET, - "TcpFastRecover: received another duplicated ACK (%d) for TCB %p\n", - Seg->Ack, - Tcb) + "TcpFastRecover: received another duplicated ACK (%d) for TCB %p\n", + Seg->Ack, + Tcb) ); - } else { - // // New data is ACKed, check whether it is a // full ACK or partial ACK // if (TCP_SEQ_GEQ (Seg->Ack, Tcb->Recover)) { - // // Step 5 - Full ACK: // deflate the congestion window, and exit fast recovery // - FlightSize = TCP_SUB_SEQ (Tcb->SndNxt, Tcb->SndUna); + FlightSize = TCP_SUB_SEQ (Tcb->SndNxt, Tcb->SndUna); - Tcb->CWnd = MIN (Tcb->Ssthresh, FlightSize + Tcb->SndMss); + Tcb->CWnd = MIN (Tcb->Ssthresh, FlightSize + Tcb->SndMss); Tcb->CongestState = TCP_CONGEST_OPEN; DEBUG ( (DEBUG_NET, - "TcpFastRecover: received a full ACK(%d) for TCB %p, exit fast recovery\n", - Seg->Ack, - Tcb) + "TcpFastRecover: received a full ACK(%d) for TCB %p, exit fast recovery\n", + Seg->Ack, + Tcb) ); - } else { - // // Step 5 - Partial ACK: // fast retransmit the first unacknowledge field @@ -138,18 +131,16 @@ TcpFastRecover ( // if (Acked >= Tcb->SndMss) { Acked -= Tcb->SndMss; - } Tcb->CWnd -= Acked; DEBUG ( (DEBUG_NET, - "TcpFastRecover: received a partial ACK(%d) for TCB %p\n", - Seg->Ack, - Tcb) + "TcpFastRecover: received a partial ACK(%d) for TCB %p\n", + Seg->Ack, + Tcb) ); - } } } @@ -163,18 +154,16 @@ TcpFastRecover ( **/ VOID TcpFastLossRecover ( - IN OUT TCP_CB *Tcb, - IN TCP_SEG *Seg + IN OUT TCP_CB *Tcb, + IN TCP_SEG *Seg ) { if (TCP_SEQ_GT (Seg->Ack, Tcb->SndUna)) { - // // New data is ACKed, check whether it is a // full ACK or partial ACK // if (TCP_SEQ_GEQ (Seg->Ack, Tcb->LossRecover)) { - // // Full ACK: exit the loss recovery. // @@ -183,13 +172,11 @@ TcpFastLossRecover ( DEBUG ( (DEBUG_NET, - "TcpFastLossRecover: received a full ACK(%d) for TCB %p\n", - Seg->Ack, - Tcb) + "TcpFastLossRecover: received a full ACK(%d) for TCB %p\n", + Seg->Ack, + Tcb) ); - } else { - // // Partial ACK: // fast retransmit the first unacknowledge field. @@ -197,9 +184,9 @@ TcpFastLossRecover ( TcpRetransmit (Tcb, Seg->Ack); DEBUG ( (DEBUG_NET, - "TcpFastLossRecover: received a partial ACK(%d) for TCB %p\n", - Seg->Ack, - Tcb) + "TcpFastLossRecover: received a partial ACK(%d) for TCB %p\n", + Seg->Ack, + Tcb) ); } } @@ -214,17 +201,16 @@ TcpFastLossRecover ( **/ VOID TcpComputeRtt ( - IN OUT TCP_CB *Tcb, - IN UINT32 Measure + IN OUT TCP_CB *Tcb, + IN UINT32 Measure ) { - INT32 Var; + INT32 Var; // // Step 2.3: Compute the RTO for subsequent RTT measurement. // if (Tcb->SRtt != 0) { - Var = Tcb->SRtt - (Measure << TCP_RTT_SHIFT); if (Var < 0) { @@ -233,7 +219,6 @@ TcpComputeRtt ( Tcb->RttVar = (3 * Tcb->RttVar + Var) >> 2; Tcb->SRtt = 7 * (Tcb->SRtt >> 3) + Measure; - } else { // // Step 2.2: compute the first RTT measure @@ -251,21 +236,18 @@ TcpComputeRtt ( // if (Tcb->Rto < TCP_RTO_MIN) { Tcb->Rto = TCP_RTO_MIN; - } else if (Tcb->Rto > TCP_RTO_MAX) { Tcb->Rto = TCP_RTO_MAX; - } DEBUG ( (DEBUG_NET, - "TcpComputeRtt: new RTT for TCB %p computed SRTT: %d RTTVAR: %d RTO: %d\n", - Tcb, - Tcb->SRtt, - Tcb->RttVar, - Tcb->Rto) + "TcpComputeRtt: new RTT for TCB %p computed SRTT: %d RTTVAR: %d RTO: %d\n", + Tcb, + Tcb->SRtt, + Tcb->RttVar, + Tcb->Rto) ); - } /** @@ -281,14 +263,14 @@ TcpComputeRtt ( **/ INTN TcpTrimSegment ( - IN NET_BUF *Nbuf, - IN TCP_SEQNO Left, - IN TCP_SEQNO Right + IN NET_BUF *Nbuf, + IN TCP_SEQNO Left, + IN TCP_SEQNO Right ) { - TCP_SEG *Seg; - TCP_SEQNO Urg; - UINT32 Drop; + TCP_SEG *Seg; + TCP_SEQNO Urg; + UINT32 Drop; Seg = TCPSEG_NETBUF (Nbuf); @@ -297,7 +279,6 @@ TcpTrimSegment ( // truncate every thing, include SYN and FIN. // if (TCP_SEQ_LEQ (Seg->End, Left) || TCP_SEQ_LEQ (Right, Seg->Seq)) { - TCP_CLEAR_FLG (Seg->Flag, TCP_FLG_SYN); TCP_CLEAR_FLG (Seg->Flag, TCP_FLG_FIN); @@ -310,10 +291,9 @@ TcpTrimSegment ( // Adjust the buffer header // if (TCP_SEQ_LT (Seg->Seq, Left)) { - - Drop = TCP_SUB_SEQ (Left, Seg->Seq); - Urg = Seg->Seq + Seg->Urg; - Seg->Seq = Left; + Drop = TCP_SUB_SEQ (Left, Seg->Seq); + Urg = Seg->Seq + Seg->Urg; + Seg->Seq = Left; if (TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN)) { TCP_CLEAR_FLG (Seg->Flag, TCP_FLG_SYN); @@ -324,12 +304,10 @@ TcpTrimSegment ( // Adjust the urgent point // if (TCP_FLG_ON (Seg->Flag, TCP_FLG_URG)) { - if (TCP_SEQ_LT (Urg, Seg->Seq)) { - TCP_CLEAR_FLG (Seg->Flag, TCP_FLG_URG); } else { - Seg->Urg = (UINT16) TCP_SUB_SEQ (Urg, Seg->Seq); + Seg->Urg = (UINT16)TCP_SUB_SEQ (Urg, Seg->Seq); } } @@ -342,9 +320,8 @@ TcpTrimSegment ( // Adjust the buffer tail // if (TCP_SEQ_GT (Seg->End, Right)) { - - Drop = TCP_SUB_SEQ (Seg->End, Right); - Seg->End = Right; + Drop = TCP_SUB_SEQ (Seg->End, Right); + Seg->End = Right; if (TCP_FLG_ON (Seg->Flag, TCP_FLG_FIN)) { TCP_CLEAR_FLG (Seg->Flag, TCP_FLG_FIN); @@ -371,8 +348,8 @@ TcpTrimSegment ( **/ INTN TcpTrimInWnd ( - IN TCP_CB *Tcb, - IN NET_BUF *Nbuf + IN TCP_CB *Tcb, + IN NET_BUF *Nbuf ) { return TcpTrimSegment (Nbuf, Tcb->RcvNxt, Tcb->RcvWl2 + Tcb->RcvWnd); @@ -391,14 +368,14 @@ TcpTrimInWnd ( **/ INTN TcpDeliverData ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { - LIST_ENTRY *Entry; - NET_BUF *Nbuf; - TCP_SEQNO Seq; - TCP_SEG *Seg; - UINT32 Urgent; + LIST_ENTRY *Entry; + NET_BUF *Nbuf; + TCP_SEQNO Seq; + TCP_SEG *Seg; + UINT32 Urgent; ASSERT ((Tcb != NULL) && (Tcb->Sk != NULL)); @@ -407,7 +384,6 @@ TcpDeliverData ( // and TCP is in a proper state // if (IsListEmpty (&Tcb->RcvQue) || !TCP_CONNECTED (Tcb->State)) { - return 0; } @@ -418,14 +394,14 @@ TcpDeliverData ( Seq = Tcb->RcvNxt; while (Entry != &Tcb->RcvQue) { - Nbuf = NET_LIST_USER_STRUCT (Entry, NET_BUF, List); - Seg = TCPSEG_NETBUF (Nbuf); + Nbuf = NET_LIST_USER_STRUCT (Entry, NET_BUF, List); + Seg = TCPSEG_NETBUF (Nbuf); if (TcpVerifySegment (Nbuf) == 0) { DEBUG ( (DEBUG_ERROR, - "TcpToSendData: discard a broken segment for TCB %p\n", - Tcb) + "TcpToSendData: discard a broken segment for TCB %p\n", + Tcb) ); NetbufFree (Nbuf); return -1; @@ -447,7 +423,6 @@ TcpDeliverData ( // RFC793 Eighth step: process FIN in sequence // if (TCP_FLG_ON (Seg->Flag, TCP_FLG_FIN)) { - // // The peer sends to us junky data after FIN, // reset the connection. @@ -455,8 +430,8 @@ TcpDeliverData ( if (!IsListEmpty (&Tcb->RcvQue)) { DEBUG ( (DEBUG_ERROR, - "TcpDeliverData: data received after FIN from peer of TCB %p, reset connection\n", - Tcb) + "TcpDeliverData: data received after FIN from peer of TCB %p, reset connection\n", + Tcb) ); NetbufFree (Nbuf); @@ -465,62 +440,60 @@ TcpDeliverData ( DEBUG ( (DEBUG_NET, - "TcpDeliverData: processing FIN from peer of TCB %p\n", - Tcb) + "TcpDeliverData: processing FIN from peer of TCB %p\n", + Tcb) ); switch (Tcb->State) { - case TCP_SYN_RCVD: - case TCP_ESTABLISHED: + case TCP_SYN_RCVD: + case TCP_ESTABLISHED: - TcpSetState (Tcb, TCP_CLOSE_WAIT); - break; - - case TCP_FIN_WAIT_1: - - if (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_ACKED)) { - - TcpSetState (Tcb, TCP_CLOSING); + TcpSetState (Tcb, TCP_CLOSE_WAIT); break; - } - // - // fall through - // - case TCP_FIN_WAIT_2: + case TCP_FIN_WAIT_1: - TcpSetState (Tcb, TCP_TIME_WAIT); - TcpClearAllTimer (Tcb); + if (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_ACKED)) { + TcpSetState (Tcb, TCP_CLOSING); + break; + } - if (Tcb->TimeWaitTimeout != 0) { + // + // fall through + // + case TCP_FIN_WAIT_2: - TcpSetTimer (Tcb, TCP_TIMER_2MSL, Tcb->TimeWaitTimeout); - } else { + TcpSetState (Tcb, TCP_TIME_WAIT); + TcpClearAllTimer (Tcb); - DEBUG ( - (DEBUG_WARN, - "Connection closed immediately because app disables TIME_WAIT timer for %p\n", - Tcb) - ); + if (Tcb->TimeWaitTimeout != 0) { + TcpSetTimer (Tcb, TCP_TIMER_2MSL, Tcb->TimeWaitTimeout); + } else { + DEBUG ( + (DEBUG_WARN, + "Connection closed immediately because app disables TIME_WAIT timer for %p\n", + Tcb) + ); - TcpSendAck (Tcb); - TcpClose (Tcb); - } - break; + TcpSendAck (Tcb); + TcpClose (Tcb); + } - case TCP_CLOSE_WAIT: - case TCP_CLOSING: - case TCP_LAST_ACK: - case TCP_TIME_WAIT: - // - // The peer sends to us junk FIN byte. Discard - // the buffer then reset the connection - // - NetbufFree (Nbuf); - return -1; - break; - default: - break; + break; + + case TCP_CLOSE_WAIT: + case TCP_CLOSING: + case TCP_LAST_ACK: + case TCP_TIME_WAIT: + // + // The peer sends to us junk FIN byte. Discard + // the buffer then reset the connection + // + NetbufFree (Nbuf); + return -1; + break; + default: + break; } TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW); @@ -532,7 +505,6 @@ TcpDeliverData ( // Don't delay the ack if PUSH flag is on. // if (TCP_FLG_ON (Seg->Flag, TCP_FLG_PSH)) { - TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW); } @@ -542,7 +514,6 @@ TcpDeliverData ( if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_URG) && TCP_SEQ_LEQ (Seg->Seq, Tcb->RcvUp)) { - if (TCP_SEQ_LEQ (Seg->End, Tcb->RcvUp)) { Urgent = Nbuf->TotalSize; } else { @@ -554,7 +525,6 @@ TcpDeliverData ( } if (TCP_FIN_RCVD (Tcb->State)) { - SockNoMoreData (Tcb->Sk); } @@ -576,29 +546,28 @@ TcpDeliverData ( **/ INTN TcpQueueData ( - IN OUT TCP_CB *Tcb, - IN NET_BUF *Nbuf + IN OUT TCP_CB *Tcb, + IN NET_BUF *Nbuf ) { - TCP_SEG *Seg; - LIST_ENTRY *Head; - LIST_ENTRY *Prev; - LIST_ENTRY *Cur; - NET_BUF *Node; + TCP_SEG *Seg; + LIST_ENTRY *Head; + LIST_ENTRY *Prev; + LIST_ENTRY *Cur; + NET_BUF *Node; ASSERT ((Tcb != NULL) && (Nbuf != NULL) && (Nbuf->Tcp == NULL)); NET_GET_REF (Nbuf); - Seg = TCPSEG_NETBUF (Nbuf); - Head = &Tcb->RcvQue; + Seg = TCPSEG_NETBUF (Nbuf); + Head = &Tcb->RcvQue; // // Fast path to process normal case. That is, // no out-of-order segments are received. // if (IsListEmpty (Head)) { - InsertTailList (Head, &Nbuf->List); return 1; } @@ -608,8 +577,8 @@ TcpQueueData ( // for (Prev = Head, Cur = Head->ForwardLink; Cur != Head; - Prev = Cur, Cur = Cur->ForwardLink) { - + Prev = Cur, Cur = Cur->ForwardLink) + { Node = NET_LIST_USER_STRUCT (Cur, NET_BUF, List); if (TCP_SEQ_LT (Seg->Seq, TCPSEG_NETBUF (Node)->Seq)) { @@ -625,7 +594,6 @@ TcpQueueData ( Node = NET_LIST_USER_STRUCT (Prev, NET_BUF, List); if (TCP_SEQ_LT (Seg->Seq, TCPSEG_NETBUF (Node)->End)) { - if (TCP_SEQ_LEQ (Seg->End, TCPSEG_NETBUF (Node)->End)) { return 1; } @@ -647,7 +615,6 @@ TcpQueueData ( Node = NET_LIST_USER_STRUCT (Cur, NET_BUF, List); if (TCP_SEQ_LEQ (TCPSEG_NETBUF (Node)->End, Seg->End)) { - Cur = Cur->ForwardLink; RemoveEntryList (&Node->List); @@ -656,9 +623,7 @@ TcpQueueData ( } if (TCP_SEQ_LT (TCPSEG_NETBUF (Node)->Seq, Seg->End)) { - if (TCP_SEQ_LEQ (TCPSEG_NETBUF (Node)->Seq, Seg->Seq)) { - RemoveEntryList (&Nbuf->List); return 1; } @@ -667,6 +632,7 @@ TcpQueueData ( RemoveEntryList (&Nbuf->List); return 0; } + break; } @@ -676,7 +642,6 @@ TcpQueueData ( return 1; } - /** Adjust the send queue or the retransmit queue. @@ -689,21 +654,21 @@ TcpQueueData ( **/ INTN TcpAdjustSndQue ( - IN TCP_CB *Tcb, - IN TCP_SEQNO Ack + IN TCP_CB *Tcb, + IN TCP_SEQNO Ack ) { - LIST_ENTRY *Head; - LIST_ENTRY *Cur; - NET_BUF *Node; - TCP_SEG *Seg; + LIST_ENTRY *Head; + LIST_ENTRY *Cur; + NET_BUF *Node; + TCP_SEG *Seg; - Head = &Tcb->SndQue; - Cur = Head->ForwardLink; + Head = &Tcb->SndQue; + Cur = Head->ForwardLink; while (Cur != Head) { - Node = NET_LIST_USER_STRUCT (Cur, NET_BUF, List); - Seg = TCPSEG_NETBUF (Node); + Node = NET_LIST_USER_STRUCT (Cur, NET_BUF, List); + Seg = TCPSEG_NETBUF (Node); if (TCP_SEQ_GEQ (Seg->Seq, Ack)) { break; @@ -764,10 +729,10 @@ TcpInput ( NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); - Parent = NULL; - Tcb = NULL; + Parent = NULL; + Tcb = NULL; - Head = (TCP_HEAD *) NetbufGetByte (Nbuf, 0, NULL); + Head = (TCP_HEAD *)NetbufGetByte (Nbuf, 0, NULL); ASSERT (Head != NULL); if (Nbuf->TotalSize < sizeof (TCP_HEAD)) { @@ -775,10 +740,9 @@ TcpInput ( goto DISCARD; } - Len = Nbuf->TotalSize - (Head->HeadLen << 2); + Len = Nbuf->TotalSize - (Head->HeadLen << 2); if ((Head->HeadLen < 5) || (Len < 0)) { - DEBUG ((DEBUG_NET, "TcpInput: received a malformed packet\n")); goto DISCARD; @@ -811,7 +775,7 @@ TcpInput ( Head->SrcPort, Src, Version, - (BOOLEAN) TCP_FLG_ON (Head->Flag, TCP_FLG_SYN) + (BOOLEAN)TCP_FLG_ON (Head->Flag, TCP_FLG_SYN) ); if ((Tcb == NULL) || (Tcb->State == TCP_CLOSED)) { @@ -830,8 +794,8 @@ TcpInput ( if (TcpParseOption (Nbuf->Tcp, &Option) == -1) { DEBUG ( (DEBUG_ERROR, - "TcpInput: reset the peer because of malformed option for TCB %p\n", - Tcb) + "TcpInput: reset the peer because of malformed option for TCB %p\n", + Tcb) ); goto SEND_RESET; @@ -853,8 +817,8 @@ TcpInput ( if (TCP_FLG_ON (Seg->Flag, TCP_FLG_RST)) { DEBUG ( (DEBUG_WARN, - "TcpInput: discard a reset segment for TCB %p in listening\n", - Tcb) + "TcpInput: discard a reset segment for TCB %p in listening\n", + Tcb) ); goto DISCARD; @@ -867,8 +831,8 @@ TcpInput ( if (TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK)) { DEBUG ( (DEBUG_WARN, - "TcpInput: send reset because of segment with ACK for TCB %p in listening\n", - Tcb) + "TcpInput: send reset because of segment with ACK for TCB %p in listening\n", + Tcb) ); goto SEND_RESET; @@ -881,14 +845,14 @@ TcpInput ( // // create a child TCB to handle the data // - Parent = Tcb; + Parent = Tcb; - Tcb = TcpCloneTcb (Parent); + Tcb = TcpCloneTcb (Parent); if (Tcb == NULL) { DEBUG ( (DEBUG_ERROR, - "TcpInput: discard a segment because failed to clone a child for TCB %p\n", - Tcb) + "TcpInput: discard a segment because failed to clone a child for TCB %p\n", + Tcb) ); goto DISCARD; @@ -896,8 +860,8 @@ TcpInput ( DEBUG ( (DEBUG_NET, - "TcpInput: create a child for TCB %p in listening\n", - Tcb) + "TcpInput: create a child for TCB %p in listening\n", + Tcb) ); // @@ -916,8 +880,8 @@ TcpInput ( if (TcpTrimInWnd (Tcb, Nbuf) == 0) { DEBUG ( (DEBUG_ERROR, - "TcpInput: discard a broken segment for TCB %p\n", - Tcb) + "TcpInput: discard a broken segment for TCB %p\n", + Tcb) ); goto DISCARD; @@ -927,17 +891,15 @@ TcpInput ( } goto DISCARD; - } else if (Tcb->State == TCP_SYN_SENT) { // // First step: Check ACK bit // if (TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK) && (Seg->Ack != Tcb->Iss + 1)) { - DEBUG ( (DEBUG_WARN, - "TcpInput: send reset because of wrong ACK received for TCB %p in SYN_SENT\n", - Tcb) + "TcpInput: send reset because of wrong ACK received for TCB %p in SYN_SENT\n", + Tcb) ); goto SEND_RESET; @@ -947,23 +909,20 @@ TcpInput ( // Second step: Check RST bit // if (TCP_FLG_ON (Seg->Flag, TCP_FLG_RST)) { - if (TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK)) { - DEBUG ( (DEBUG_WARN, - "TcpInput: connection reset by peer for TCB %p in SYN_SENT\n", - Tcb) + "TcpInput: connection reset by peer for TCB %p in SYN_SENT\n", + Tcb) ); SOCK_ERROR (Tcb->Sk, EFI_CONNECTION_RESET); goto DROP_CONNECTION; } else { - DEBUG ( (DEBUG_WARN, - "TcpInput: discard a reset segment because of no ACK for TCB %p in SYN_SENT\n", - Tcb) + "TcpInput: discard a reset segment because of no ACK for TCB %p in SYN_SENT\n", + Tcb) ); goto DISCARD; @@ -978,18 +937,15 @@ TcpInput ( // Fourth step: Check SYN. Pay attention to simultaneous open // if (TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN)) { - TcpInitTcbPeer (Tcb, Seg, &Option); if (TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK)) { - Tcb->SndUna = Seg->Ack; } TcpClearTimer (Tcb, TCP_TIMER_REXMIT); if (TCP_SEQ_GT (Tcb->SndUna, Tcb->Iss)) { - TcpSetState (Tcb, TCP_ESTABLISHED); TcpClearTimer (Tcb, TCP_TIMER_CONNECT); @@ -998,7 +954,6 @@ TcpInput ( if ((Tcb->CongestState == TCP_CONGEST_OPEN) && TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RTT_ON)) { - TcpComputeRtt (Tcb, Tcb->RttMeasure); TCP_CLEAR_FLG (Tcb->CtrlFlag, TCP_CTRL_RTT_ON); } @@ -1006,8 +961,8 @@ TcpInput ( if (TcpTrimInWnd (Tcb, Nbuf) == 0) { DEBUG ( (DEBUG_ERROR, - "TcpInput: discard a broken segment for TCB %p\n", - Tcb) + "TcpInput: discard a broken segment for TCB %p\n", + Tcb) ); goto DISCARD; @@ -1017,8 +972,8 @@ TcpInput ( DEBUG ( (DEBUG_NET, - "TcpInput: connection established for TCB %p in SYN_SENT\n", - Tcb) + "TcpInput: connection established for TCB %p in SYN_SENT\n", + Tcb) ); goto StepSix; @@ -1030,11 +985,11 @@ TcpInput ( ASSERT (Tcb->SndNxt == Tcb->Iss + 1); - if (TcpAdjustSndQue (Tcb, Tcb->SndNxt) == 0 || TcpTrimInWnd (Tcb, Nbuf) == 0) { + if ((TcpAdjustSndQue (Tcb, Tcb->SndNxt) == 0) || (TcpTrimInWnd (Tcb, Nbuf) == 0)) { DEBUG ( (DEBUG_ERROR, - "TcpInput: discard a broken segment for TCB %p\n", - Tcb) + "TcpInput: discard a broken segment for TCB %p\n", + Tcb) ); goto DISCARD; @@ -1042,8 +997,8 @@ TcpInput ( DEBUG ( (DEBUG_WARN, - "TcpInput: simultaneous open for TCB %p in SYN_SENT\n", - Tcb) + "TcpInput: simultaneous open for TCB %p in SYN_SENT\n", + Tcb) ); goto StepSix; @@ -1071,8 +1026,8 @@ TcpInput ( if (TcpSeqAcceptable (Tcb, Seg) == 0) { DEBUG ( (DEBUG_WARN, - "TcpInput: sequence acceptance test failed for segment of TCB %p\n", - Tcb) + "TcpInput: sequence acceptance test failed for segment of TCB %p\n", + Tcb) ); if (!TCP_FLG_ON (Seg->Flag, TCP_FLG_RST)) { @@ -1086,7 +1041,6 @@ TcpInput ( (Tcb->RcvWl2 == Seg->End) && !TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN | TCP_FLG_FIN)) { - TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW); } @@ -1094,11 +1048,9 @@ TcpInput ( // Second step: Check the RST // if (TCP_FLG_ON (Seg->Flag, TCP_FLG_RST)) { - DEBUG ((DEBUG_WARN, "TcpInput: connection reset for TCB %p\n", Tcb)); if (Tcb->State == TCP_SYN_RCVD) { - SOCK_ERROR (Tcb->Sk, EFI_CONNECTION_REFUSED); // @@ -1112,9 +1064,7 @@ TcpInput ( (Tcb->State == TCP_FIN_WAIT_2) || (Tcb->State == TCP_CLOSE_WAIT)) { - SOCK_ERROR (Tcb->Sk, EFI_CONNECTION_RESET); - } else { } @@ -1127,8 +1077,8 @@ TcpInput ( if (TcpTrimInWnd (Tcb, Nbuf) == 0) { DEBUG ( (DEBUG_ERROR, - "TcpInput: discard a broken segment for TCB %p\n", - Tcb) + "TcpInput: discard a broken segment for TCB %p\n", + Tcb) ); goto DISCARD; @@ -1142,44 +1092,42 @@ TcpInput ( // Fourth step: Check the SYN bit. // if (TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN)) { - DEBUG ( (DEBUG_WARN, - "TcpInput: connection reset because received extra SYN for TCB %p\n", - Tcb) + "TcpInput: connection reset because received extra SYN for TCB %p\n", + Tcb) ); SOCK_ERROR (Tcb->Sk, EFI_CONNECTION_RESET); goto RESET_THEN_DROP; } + // // Fifth step: Check the ACK // if (!TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK)) { DEBUG ( (DEBUG_WARN, - "TcpInput: segment discard because of no ACK for connected TCB %p\n", - Tcb) + "TcpInput: segment discard because of no ACK for connected TCB %p\n", + Tcb) ); goto DISCARD; } else { - if (Tcb->IpInfo->IpVersion == IP_VERSION_6 && Tcb->Tick == 0) { + if ((Tcb->IpInfo->IpVersion == IP_VERSION_6) && (Tcb->Tick == 0)) { Tcp6RefreshNeighbor (Tcb, Src, TCP6_KEEP_NEIGHBOR_TIME * TICKS_PER_SECOND); Tcb->Tick = TCP6_REFRESH_NEIGHBOR_TICK; } } if (Tcb->State == TCP_SYN_RCVD) { - if (TCP_SEQ_LT (Tcb->SndUna, Seg->Ack) && TCP_SEQ_LEQ (Seg->Ack, Tcb->SndNxt)) { - - Tcb->SndWnd = Seg->Wnd; - Tcb->SndWndMax = MAX (Tcb->SndWnd, Tcb->SndWndMax); - Tcb->SndWl1 = Seg->Seq; - Tcb->SndWl2 = Seg->Ack; + Tcb->SndWnd = Seg->Wnd; + Tcb->SndWndMax = MAX (Tcb->SndWnd, Tcb->SndWndMax); + Tcb->SndWl1 = Seg->Seq; + Tcb->SndWl2 = Seg->Ack; TcpSetState (Tcb, TCP_ESTABLISHED); TcpClearTimer (Tcb, TCP_TIMER_CONNECT); @@ -1187,8 +1135,8 @@ TcpInput ( DEBUG ( (DEBUG_NET, - "TcpInput: connection established for TCB %p in SYN_RCVD\n", - Tcb) + "TcpInput: connection established for TCB %p in SYN_RCVD\n", + Tcb) ); // @@ -1197,8 +1145,8 @@ TcpInput ( } else { DEBUG ( (DEBUG_WARN, - "TcpInput: send reset because of wrong ACK for TCB %p in SYN_RCVD\n", - Tcb) + "TcpInput: send reset because of wrong ACK for TCB %p in SYN_RCVD\n", + Tcb) ); goto SEND_RESET; @@ -1206,21 +1154,18 @@ TcpInput ( } if (TCP_SEQ_LT (Seg->Ack, Tcb->SndUna)) { - DEBUG ( (DEBUG_WARN, - "TcpInput: ignore the out-of-data ACK for connected TCB %p\n", - Tcb) + "TcpInput: ignore the out-of-data ACK for connected TCB %p\n", + Tcb) ); goto StepSix; - } else if (TCP_SEQ_GT (Seg->Ack, Tcb->SndNxt)) { - DEBUG ( (DEBUG_WARN, - "TcpInput: discard segment for future ACK for connected TCB %p\n", - Tcb) + "TcpInput: discard segment for future ACK for connected TCB %p\n", + Tcb) ); TcpSendAck (Tcb); @@ -1239,15 +1184,12 @@ TcpInput ( if (TCP_SEQ_LEQ (Seg->Seq, Tcb->RcvWl2) && TCP_SEQ_LT (Tcb->RcvWl2, Seg->End)) { - - Tcb->TsRecent = Option.TSVal; - Tcb->TsRecentAge = mTcpTick; + Tcb->TsRecent = Option.TSVal; + Tcb->TsRecentAge = mTcpTick; } TcpComputeRtt (Tcb, TCP_SUB_TIME (mTcpTick, Option.TSEcr)); - } else if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RTT_ON)) { - ASSERT (Tcb->CongestState == TCP_CONGEST_OPEN); TcpComputeRtt (Tcb, Tcb->RttMeasure); @@ -1255,10 +1197,8 @@ TcpInput ( } if (Seg->Ack == Tcb->SndNxt) { - TcpClearTimer (Tcb, TCP_TIMER_REXMIT); } else { - TcpSetTimer (Tcb, TCP_TIMER_REXMIT, Tcb->Rto); } @@ -1270,10 +1210,8 @@ TcpInput ( (Seg->Wnd == Tcb->SndWnd) && (0 == Len)) { - Tcb->DupAck++; } else { - Tcb->DupAck = 0; } @@ -1283,14 +1221,10 @@ TcpInput ( if (((Tcb->CongestState == TCP_CONGEST_OPEN) && (Tcb->DupAck < 3)) || (Tcb->CongestState == TCP_CONGEST_LOSS)) { - if (TCP_SEQ_GT (Seg->Ack, Tcb->SndUna)) { - if (Tcb->CWnd < Tcb->Ssthresh) { - Tcb->CWnd += Tcb->SndMss; } else { - Tcb->CWnd += MAX (Tcb->SndMss * Tcb->SndMss / Tcb->CWnd, 1); } @@ -1301,17 +1235,15 @@ TcpInput ( TcpFastLossRecover (Tcb, Seg); } } else { - TcpFastRecover (Tcb, Seg); } if (TCP_SEQ_GT (Seg->Ack, Tcb->SndUna)) { - if (TcpAdjustSndQue (Tcb, Seg->Ack) == 0) { DEBUG ( (DEBUG_ERROR, - "TcpInput: discard a broken segment for TCB %p\n", - Tcb) + "TcpInput: discard a broken segment for TCB %p\n", + Tcb) ); goto DISCARD; @@ -1322,7 +1254,6 @@ TcpInput ( if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_SND_URG) && TCP_SEQ_LT (Tcb->SndUp, Seg->Ack)) { - TCP_CLEAR_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_URG); } } @@ -1333,36 +1264,31 @@ TcpInput ( if (TCP_SEQ_LT (Tcb->SndWl1, Seg->Seq) || ((Tcb->SndWl1 == Seg->Seq) && TCP_SEQ_LEQ (Tcb->SndWl2, Seg->Ack))) { - Right = Seg->Ack + Seg->Wnd; if (TCP_SEQ_LT (Right, Tcb->SndWl2 + Tcb->SndWnd)) { - if ((Tcb->SndWl1 == Seg->Seq) && (Tcb->SndWl2 == Seg->Ack) && (Len == 0)) { - goto NO_UPDATE; } DEBUG ( (DEBUG_WARN, - "TcpInput: peer shrinks the window for connected TCB %p\n", - Tcb) + "TcpInput: peer shrinks the window for connected TCB %p\n", + Tcb) ); if ((Tcb->CongestState == TCP_CONGEST_RECOVER) && (TCP_SEQ_LT (Right, Tcb->Recover))) { - Tcb->Recover = Right; } if ((Tcb->CongestState == TCP_CONGEST_LOSS) && (TCP_SEQ_LT (Right, Tcb->LossRecover))) { - Tcb->LossRecover = Right; } @@ -1376,30 +1302,30 @@ TcpInput ( // DEBUG ( (DEBUG_WARN, - "TcpInput: peer advise negative useable window for connected TCB %p\n", - Tcb) + "TcpInput: peer advise negative useable window for connected TCB %p\n", + Tcb) ); Usable = TCP_SUB_SEQ (Tcb->SndNxt, Right); if ((Usable >> Tcb->SndWndScale) > 0) { DEBUG ( (DEBUG_WARN, - "TcpInput: SndNxt is out of window by more than window scale for TCB %p\n", - Tcb) + "TcpInput: SndNxt is out of window by more than window scale for TCB %p\n", + Tcb) ); Tcb->SndNxt = Right; } - if (Right == Tcb->SndUna) { + if (Right == Tcb->SndUna) { TcpClearTimer (Tcb, TCP_TIMER_REXMIT); TcpSetProbeTimer (Tcb); } } } - Tcb->SndWnd = Seg->Wnd; - Tcb->SndWndMax = MAX (Tcb->SndWnd, Tcb->SndWndMax); - Tcb->SndWl1 = Seg->Seq; - Tcb->SndWl2 = Seg->Ack; + Tcb->SndWnd = Seg->Wnd; + Tcb->SndWndMax = MAX (Tcb->SndWnd, Tcb->SndWndMax); + Tcb->SndWl1 = Seg->Seq; + Tcb->SndWl2 = Seg->Ack; } NO_UPDATE: @@ -1407,11 +1333,10 @@ NO_UPDATE: if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_SENT) && (Tcb->SndUna == Tcb->SndNxt)) { - DEBUG ( (DEBUG_NET, - "TcpInput: local FIN is ACKed by peer for connected TCB %p\n", - Tcb) + "TcpInput: local FIN is ACKed by peer for connected TCB %p\n", + Tcb) ); TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_FIN_ACKED); @@ -1421,78 +1346,74 @@ NO_UPDATE: // Transit the state if proper. // switch (Tcb->State) { - case TCP_FIN_WAIT_1: + case TCP_FIN_WAIT_1: - if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_ACKED)) { + if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_ACKED)) { + TcpSetState (Tcb, TCP_FIN_WAIT_2); - TcpSetState (Tcb, TCP_FIN_WAIT_2); + TcpClearAllTimer (Tcb); + TcpSetTimer (Tcb, TCP_TIMER_FINWAIT2, Tcb->FinWait2Timeout); + } - TcpClearAllTimer (Tcb); - TcpSetTimer (Tcb, TCP_TIMER_FINWAIT2, Tcb->FinWait2Timeout); - } + case TCP_FIN_WAIT_2: - case TCP_FIN_WAIT_2: + break; - break; + case TCP_CLOSE_WAIT: + break; - case TCP_CLOSE_WAIT: - break; + case TCP_CLOSING: - case TCP_CLOSING: + if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_ACKED)) { + TcpSetState (Tcb, TCP_TIME_WAIT); + + TcpClearAllTimer (Tcb); - if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_ACKED)) { + if (Tcb->TimeWaitTimeout != 0) { + TcpSetTimer (Tcb, TCP_TIMER_2MSL, Tcb->TimeWaitTimeout); + } else { + DEBUG ( + (DEBUG_WARN, + "Connection closed immediately because app disables TIME_WAIT timer for %p\n", + Tcb) + ); - TcpSetState (Tcb, TCP_TIME_WAIT); + TcpClose (Tcb); + } + } - TcpClearAllTimer (Tcb); + break; - if (Tcb->TimeWaitTimeout != 0) { + case TCP_LAST_ACK: + if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_ACKED)) { + TcpSetState (Tcb, TCP_CLOSED); + } + + break; + + case TCP_TIME_WAIT: + + TcpSendAck (Tcb); + + if (Tcb->TimeWaitTimeout != 0) { TcpSetTimer (Tcb, TCP_TIMER_2MSL, Tcb->TimeWaitTimeout); } else { - DEBUG ( (DEBUG_WARN, - "Connection closed immediately because app disables TIME_WAIT timer for %p\n", - Tcb) + "Connection closed immediately because app disables TIME_WAIT timer for %p\n", + Tcb) ); TcpClose (Tcb); } - } - break; - - case TCP_LAST_ACK: - - if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_ACKED)) { - - TcpSetState (Tcb, TCP_CLOSED); - } - - break; - - case TCP_TIME_WAIT: - - TcpSendAck (Tcb); - - if (Tcb->TimeWaitTimeout != 0) { - - TcpSetTimer (Tcb, TCP_TIMER_2MSL, Tcb->TimeWaitTimeout); - } else { - - DEBUG ( - (DEBUG_WARN, - "Connection closed immediately because app disables TIME_WAIT timer for %p\n", - Tcb) - ); - TcpClose (Tcb); - } - break; + break; - default: - break; + default: + break; } + // // Sixth step: Check the URG bit.update the Urg point // if in TCP_CAN_RECV, otherwise, leave the RcvUp intact. @@ -1503,11 +1424,10 @@ StepSix: TcpSetKeepaliveTimer (Tcb); if (TCP_FLG_ON (Seg->Flag, TCP_FLG_URG) && !TCP_FIN_RCVD (Tcb->State)) { - DEBUG ( (DEBUG_NET, - "TcpInput: received urgent data from peer for connected TCB %p\n", - Tcb) + "TcpInput: received urgent data from peer for connected TCB %p\n", + Tcb) ); Urg = Seg->Seq + Seg->Urg; @@ -1515,25 +1435,22 @@ StepSix: if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_URG) && TCP_SEQ_GT (Urg, Tcb->RcvUp)) { - Tcb->RcvUp = Urg; } else { - Tcb->RcvUp = Urg; TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RCVD_URG); } } + // // Seventh step: Process the segment data // if (Seg->End != Seg->Seq) { - if (TCP_FIN_RCVD (Tcb->State)) { - DEBUG ( (DEBUG_WARN, - "TcpInput: connection reset because data is lost for connected TCB %p\n", - Tcb) + "TcpInput: connection reset because data is lost for connected TCB %p\n", + Tcb) ); goto RESET_THEN_DROP; @@ -1542,8 +1459,8 @@ StepSix: if (TCP_LOCAL_CLOSED (Tcb->State) && (Nbuf->TotalSize != 0)) { DEBUG ( (DEBUG_WARN, - "TcpInput: connection reset because data is lost for connected TCB %p\n", - Tcb) + "TcpInput: connection reset because data is lost for connected TCB %p\n", + Tcb) ); goto RESET_THEN_DROP; @@ -1552,8 +1469,8 @@ StepSix: if (TcpQueueData (Tcb, Nbuf) == 0) { DEBUG ( (DEBUG_ERROR, - "TcpInput: discard a broken segment for TCB %p\n", - Tcb) + "TcpInput: discard a broken segment for TCB %p\n", + Tcb) ); goto DISCARD; @@ -1588,7 +1505,6 @@ StepSix: (TcpToSendData (Tcb, 0) == 0) && (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_ACK_NOW) || (Nbuf->TotalSize != 0))) { - TcpToSendAck (Tcb); } @@ -1619,7 +1535,6 @@ DISCARD: NetbufFree (Nbuf); if ((Parent != NULL) && (Tcb != NULL)) { - ASSERT (Tcb->Sk != NULL); TcpClose (Tcb); } @@ -1648,18 +1563,18 @@ TcpIcmpInput ( IN UINT8 Version ) { - TCP_HEAD *Head; - TCP_CB *Tcb; - TCP_SEQNO Seq; - EFI_STATUS IcmpErrStatus; - BOOLEAN IcmpErrIsHard; - BOOLEAN IcmpErrNotify; + TCP_HEAD *Head; + TCP_CB *Tcb; + TCP_SEQNO Seq; + EFI_STATUS IcmpErrStatus; + BOOLEAN IcmpErrIsHard; + BOOLEAN IcmpErrNotify; if (Nbuf->TotalSize < sizeof (TCP_HEAD)) { goto CLEAN_EXIT; } - Head = (TCP_HEAD *) NetbufGetByte (Nbuf, 0, NULL); + Head = (TCP_HEAD *)NetbufGetByte (Nbuf, 0, NULL); ASSERT (Head != NULL); Tcb = TcpLocateTcb ( @@ -1670,8 +1585,7 @@ TcpIcmpInput ( Version, FALSE ); - if (Tcb == NULL || Tcb->State == TCP_CLOSED) { - + if ((Tcb == NULL) || (Tcb->State == TCP_CLOSED)) { goto CLEAN_EXIT; } @@ -1680,7 +1594,6 @@ TcpIcmpInput ( // Seq = NTOHL (Head->Seq); if (!(TCP_SEQ_LEQ (Tcb->SndUna, Seq) && TCP_SEQ_LT (Seq, Tcb->SndNxt))) { - goto CLEAN_EXIT; } @@ -1692,12 +1605,10 @@ TcpIcmpInput ( ); if (IcmpErrNotify) { - SOCK_ERROR (Tcb->Sk, IcmpErrStatus); } if (IcmpErrIsHard) { - TcpClose (Tcb); } diff --git a/NetworkPkg/TcpDxe/TcpIo.c b/NetworkPkg/TcpDxe/TcpIo.c index 5504c30cee..b207477462 100644 --- a/NetworkPkg/TcpDxe/TcpIo.c +++ b/NetworkPkg/TcpDxe/TcpIo.c @@ -25,11 +25,11 @@ VOID EFIAPI TcpRxCallback ( - IN EFI_STATUS Status, - IN UINT8 IcmpErr, - IN EFI_NET_SESSION_DATA *NetSession, - IN NET_BUF *Pkt, - IN VOID *Context OPTIONAL + IN EFI_STATUS Status, + IN UINT8 IcmpErr, + IN EFI_NET_SESSION_DATA *NetSession, + IN NET_BUF *Pkt, + IN VOID *Context OPTIONAL ) { if (EFI_SUCCESS == Status) { @@ -67,15 +67,14 @@ TcpSendIpPacket ( IN UINT8 Version ) { - EFI_STATUS Status; - IP_IO *IpIo; - IP_IO_OVERRIDE Override; - SOCKET *Sock; - VOID *IpSender; + EFI_STATUS Status; + IP_IO *IpIo; + IP_IO_OVERRIDE Override; + SOCKET *Sock; + VOID *IpSender; TCP_PROTO_DATA *TcpProto; if (NULL == Tcb) { - IpIo = NULL; IpSender = IpIoFindSender (&IpIo, Version, Src); @@ -95,9 +94,8 @@ TcpSendIpPacket ( IpSender = NULL; } } else { - Sock = Tcb->Sk; - TcpProto = (TCP_PROTO_DATA *) Sock->ProtoReserved; + TcpProto = (TCP_PROTO_DATA *)Sock->ProtoReserved; IpIo = TcpProto->TcpService->IpIo; IpSender = Tcb->IpInfo; @@ -162,8 +160,8 @@ Tcp6RefreshNeighbor ( IN UINT32 Timeout ) { - IP_IO *IpIo; - SOCKET *Sock; + IP_IO *IpIo; + SOCKET *Sock; TCP_PROTO_DATA *TcpProto; if (NULL == Tcb) { @@ -174,10 +172,9 @@ Tcp6RefreshNeighbor ( DEBUG ((DEBUG_WARN, "Tcp6AddNeighbor: No appropriate IpIo.\n")); return EFI_NOT_STARTED; } - } else { Sock = Tcb->Sk; - TcpProto = (TCP_PROTO_DATA *) Sock->ProtoReserved; + TcpProto = (TCP_PROTO_DATA *)Sock->ProtoReserved; IpIo = TcpProto->TcpService->IpIo; } diff --git a/NetworkPkg/TcpDxe/TcpMain.c b/NetworkPkg/TcpDxe/TcpMain.c index 75de71eb6e..c6cf3e0c2a 100644 --- a/NetworkPkg/TcpDxe/TcpMain.c +++ b/NetworkPkg/TcpDxe/TcpMain.c @@ -24,19 +24,20 @@ **/ EFI_STATUS TcpChkDataBuf ( - IN UINT32 DataLen, - IN UINT32 FragmentCount, - IN EFI_TCP4_FRAGMENT_DATA *FragmentTable + IN UINT32 DataLen, + IN UINT32 FragmentCount, + IN EFI_TCP4_FRAGMENT_DATA *FragmentTable ) { - UINT32 Index; + UINT32 Index; - UINT32 Len; + UINT32 Len; for (Index = 0, Len = 0; Index < FragmentCount; Index++) { if (FragmentTable[Index].FragmentBuffer == NULL) { return EFI_INVALID_PARAMETER; } + Len = Len + FragmentTable[Index].FragmentLength; } @@ -73,12 +74,12 @@ TcpChkDataBuf ( EFI_STATUS EFIAPI Tcp4GetModeData ( - IN EFI_TCP4_PROTOCOL *This, - OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, - OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, - OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + IN EFI_TCP4_PROTOCOL *This, + OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, + OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, + OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, + OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, + OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL ) { TCP4_MODE_DATA TcpMode; @@ -88,13 +89,13 @@ Tcp4GetModeData ( return EFI_INVALID_PARAMETER; } - Sock = SOCK_FROM_THIS (This); + Sock = SOCK_FROM_THIS (This); - TcpMode.Tcp4State = Tcp4State; - TcpMode.Tcp4ConfigData = Tcp4ConfigData; - TcpMode.Ip4ModeData = Ip4ModeData; - TcpMode.MnpConfigData = MnpConfigData; - TcpMode.SnpModeData = SnpModeData; + TcpMode.Tcp4State = Tcp4State; + TcpMode.Tcp4ConfigData = Tcp4ConfigData; + TcpMode.Ip4ModeData = Ip4ModeData; + TcpMode.MnpConfigData = MnpConfigData; + TcpMode.SnpModeData = SnpModeData; return SockGetMode (Sock, &TcpMode); } @@ -124,8 +125,8 @@ Tcp4GetModeData ( EFI_STATUS EFIAPI Tcp4Configure ( - IN EFI_TCP4_PROTOCOL * This, - IN EFI_TCP4_CONFIG_DATA * TcpConfigData OPTIONAL + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_CONFIG_DATA *TcpConfigData OPTIONAL ) { EFI_TCP4_OPTION *Option; @@ -142,22 +143,21 @@ Tcp4Configure ( // Tcp protocol related parameter check will be conducted here // if (NULL != TcpConfigData) { - CopyMem (&Ip, &TcpConfigData->AccessPoint.RemoteAddress, sizeof (IP4_ADDR)); if (IP4_IS_LOCAL_BROADCAST (NTOHL (Ip))) { return EFI_INVALID_PARAMETER; } - if (TcpConfigData->AccessPoint.ActiveFlag && (0 == TcpConfigData->AccessPoint.RemotePort || (Ip == 0))) { + if (TcpConfigData->AccessPoint.ActiveFlag && ((0 == TcpConfigData->AccessPoint.RemotePort) || (Ip == 0))) { return EFI_INVALID_PARAMETER; } if (!TcpConfigData->AccessPoint.UseDefaultAddress) { - CopyMem (&Ip, &TcpConfigData->AccessPoint.StationAddress, sizeof (IP4_ADDR)); CopyMem (&SubnetMask, &TcpConfigData->AccessPoint.SubnetMask, sizeof (IP4_ADDR)); if (!IP4_IS_VALID_NETMASK (NTOHL (SubnetMask)) || - (SubnetMask != 0 && !NetIp4IsUnicast (NTOHL (Ip), NTOHL (SubnetMask)))) { + ((SubnetMask != 0) && !NetIp4IsUnicast (NTOHL (Ip), NTOHL (SubnetMask)))) + { return EFI_INVALID_PARAMETER; } } @@ -211,26 +211,26 @@ Tcp4Configure ( EFI_STATUS EFIAPI Tcp4Routes ( - IN EFI_TCP4_PROTOCOL *This, - IN BOOLEAN DeleteRoute, - IN EFI_IPv4_ADDRESS *SubnetAddress, - IN EFI_IPv4_ADDRESS *SubnetMask, - IN EFI_IPv4_ADDRESS *GatewayAddress + IN EFI_TCP4_PROTOCOL *This, + IN BOOLEAN DeleteRoute, + IN EFI_IPv4_ADDRESS *SubnetAddress, + IN EFI_IPv4_ADDRESS *SubnetMask, + IN EFI_IPv4_ADDRESS *GatewayAddress ) { - SOCKET *Sock; - TCP4_ROUTE_INFO RouteInfo; + SOCKET *Sock; + TCP4_ROUTE_INFO RouteInfo; if (NULL == This) { return EFI_INVALID_PARAMETER; } - Sock = SOCK_FROM_THIS (This); + Sock = SOCK_FROM_THIS (This); - RouteInfo.DeleteRoute = DeleteRoute; - RouteInfo.SubnetAddress = SubnetAddress; - RouteInfo.SubnetMask = SubnetMask; - RouteInfo.GatewayAddress = GatewayAddress; + RouteInfo.DeleteRoute = DeleteRoute; + RouteInfo.SubnetAddress = SubnetAddress; + RouteInfo.SubnetMask = SubnetMask; + RouteInfo.GatewayAddress = GatewayAddress; return SockRoute (Sock, &RouteInfo); } @@ -257,13 +257,13 @@ Tcp4Routes ( EFI_STATUS EFIAPI Tcp4Connect ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken ) { SOCKET *Sock; - if (NULL == This || NULL == ConnectionToken || NULL == ConnectionToken->CompletionToken.Event) { + if ((NULL == This) || (NULL == ConnectionToken) || (NULL == ConnectionToken->CompletionToken.Event)) { return EFI_INVALID_PARAMETER; } @@ -295,13 +295,13 @@ Tcp4Connect ( EFI_STATUS EFIAPI Tcp4Accept ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_LISTEN_TOKEN *ListenToken + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_LISTEN_TOKEN *ListenToken ) { SOCKET *Sock; - if (NULL == This || NULL == ListenToken || NULL == ListenToken->CompletionToken.Event) { + if ((NULL == This) || (NULL == ListenToken) || (NULL == ListenToken->CompletionToken.Event)) { return EFI_INVALID_PARAMETER; } @@ -342,28 +342,29 @@ Tcp4Accept ( EFI_STATUS EFIAPI Tcp4Transmit ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_IO_TOKEN *Token + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_IO_TOKEN *Token ) { SOCKET *Sock; EFI_STATUS Status; - if (NULL == This || - NULL == Token || - NULL == Token->CompletionToken.Event || - NULL == Token->Packet.TxData || - 0 == Token->Packet.TxData->FragmentCount || - 0 == Token->Packet.TxData->DataLength - ) { + if ((NULL == This) || + (NULL == Token) || + (NULL == Token->CompletionToken.Event) || + (NULL == Token->Packet.TxData) || + (0 == Token->Packet.TxData->FragmentCount) || + (0 == Token->Packet.TxData->DataLength) + ) + { return EFI_INVALID_PARAMETER; } Status = TcpChkDataBuf ( - Token->Packet.TxData->DataLength, - Token->Packet.TxData->FragmentCount, - Token->Packet.TxData->FragmentTable - ); + Token->Packet.TxData->DataLength, + Token->Packet.TxData->FragmentCount, + Token->Packet.TxData->FragmentTable + ); if (EFI_ERROR (Status)) { return Status; } @@ -407,28 +408,29 @@ Tcp4Transmit ( EFI_STATUS EFIAPI Tcp4Receive ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_IO_TOKEN *Token + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_IO_TOKEN *Token ) { SOCKET *Sock; EFI_STATUS Status; - if (NULL == This || - NULL == Token || - NULL == Token->CompletionToken.Event || - NULL == Token->Packet.RxData || - 0 == Token->Packet.RxData->FragmentCount || - 0 == Token->Packet.RxData->DataLength - ) { + if ((NULL == This) || + (NULL == Token) || + (NULL == Token->CompletionToken.Event) || + (NULL == Token->Packet.RxData) || + (0 == Token->Packet.RxData->FragmentCount) || + (0 == Token->Packet.RxData->DataLength) + ) + { return EFI_INVALID_PARAMETER; } Status = TcpChkDataBuf ( - Token->Packet.RxData->DataLength, - Token->Packet.RxData->FragmentCount, - Token->Packet.RxData->FragmentTable - ); + Token->Packet.RxData->DataLength, + Token->Packet.RxData->FragmentCount, + Token->Packet.RxData->FragmentTable + ); if (EFI_ERROR (Status)) { return Status; } @@ -436,7 +438,6 @@ Tcp4Receive ( Sock = SOCK_FROM_THIS (This); return SockRcv (Sock, Token); - } /** @@ -464,13 +465,13 @@ Tcp4Receive ( EFI_STATUS EFIAPI Tcp4Close ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_CLOSE_TOKEN *CloseToken + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_CLOSE_TOKEN *CloseToken ) { SOCKET *Sock; - if (NULL == This || NULL == CloseToken || NULL == CloseToken->CompletionToken.Event) { + if ((NULL == This) || (NULL == CloseToken) || (NULL == CloseToken->CompletionToken.Event)) { return EFI_INVALID_PARAMETER; } @@ -506,8 +507,8 @@ Tcp4Close ( EFI_STATUS EFIAPI Tcp4Cancel ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL ) { SOCKET *Sock; @@ -538,7 +539,7 @@ Tcp4Cancel ( EFI_STATUS EFIAPI Tcp4Poll ( - IN EFI_TCP4_PROTOCOL *This + IN EFI_TCP4_PROTOCOL *This ) { SOCKET *Sock; @@ -548,7 +549,7 @@ Tcp4Poll ( return EFI_INVALID_PARAMETER; } - Sock = SOCK_FROM_THIS (This); + Sock = SOCK_FROM_THIS (This); Status = Sock->ProtoHandler (Sock, SOCK_POLL, NULL); @@ -586,12 +587,12 @@ Tcp4Poll ( EFI_STATUS EFIAPI Tcp6GetModeData ( - IN EFI_TCP6_PROTOCOL *This, - OUT EFI_TCP6_CONNECTION_STATE *Tcp6State OPTIONAL, - OUT EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL, - OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + IN EFI_TCP6_PROTOCOL *This, + OUT EFI_TCP6_CONNECTION_STATE *Tcp6State OPTIONAL, + OUT EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL, + OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, + OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, + OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL ) { TCP6_MODE_DATA TcpMode; @@ -601,7 +602,7 @@ Tcp6GetModeData ( return EFI_INVALID_PARAMETER; } - Sock = SOCK_FROM_THIS (This); + Sock = SOCK_FROM_THIS (This); TcpMode.Tcp6State = Tcp6State; TcpMode.Tcp6ConfigData = Tcp6ConfigData; @@ -662,8 +663,8 @@ Tcp6GetModeData ( EFI_STATUS EFIAPI Tcp6Configure ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL ) { EFI_TCP6_OPTION *Option; @@ -679,15 +680,15 @@ Tcp6Configure ( // Tcp protocol related parameter check will be conducted here // if (NULL != Tcp6ConfigData) { - Ip = &Tcp6ConfigData->AccessPoint.RemoteAddress; if (!NetIp6IsUnspecifiedAddr (Ip) && !NetIp6IsValidUnicast (Ip)) { return EFI_INVALID_PARAMETER; } if (Tcp6ConfigData->AccessPoint.ActiveFlag && - (0 == Tcp6ConfigData->AccessPoint.RemotePort || NetIp6IsUnspecifiedAddr (Ip)) - ) { + ((0 == Tcp6ConfigData->AccessPoint.RemotePort) || NetIp6IsUnspecifiedAddr (Ip)) + ) + { return EFI_INVALID_PARAMETER; } @@ -750,13 +751,13 @@ Tcp6Configure ( EFI_STATUS EFIAPI Tcp6Connect ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_CONNECTION_TOKEN *ConnectionToken + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_CONNECTION_TOKEN *ConnectionToken ) { SOCKET *Sock; - if (NULL == This || NULL == ConnectionToken || NULL == ConnectionToken->CompletionToken.Event) { + if ((NULL == This) || (NULL == ConnectionToken) || (NULL == ConnectionToken->CompletionToken.Event)) { return EFI_INVALID_PARAMETER; } @@ -803,13 +804,13 @@ Tcp6Connect ( EFI_STATUS EFIAPI Tcp6Accept ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_LISTEN_TOKEN *ListenToken + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_LISTEN_TOKEN *ListenToken ) { SOCKET *Sock; - if (NULL == This || NULL == ListenToken || NULL == ListenToken->CompletionToken.Event) { + if ((NULL == This) || (NULL == ListenToken) || (NULL == ListenToken->CompletionToken.Event)) { return EFI_INVALID_PARAMETER; } @@ -858,28 +859,29 @@ Tcp6Accept ( EFI_STATUS EFIAPI Tcp6Transmit ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_IO_TOKEN *Token + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_IO_TOKEN *Token ) { SOCKET *Sock; EFI_STATUS Status; - if (NULL == This || - NULL == Token || - NULL == Token->CompletionToken.Event || - NULL == Token->Packet.TxData || - 0 == Token->Packet.TxData->FragmentCount || - 0 == Token->Packet.TxData->DataLength - ) { + if ((NULL == This) || + (NULL == Token) || + (NULL == Token->CompletionToken.Event) || + (NULL == Token->Packet.TxData) || + (0 == Token->Packet.TxData->FragmentCount) || + (0 == Token->Packet.TxData->DataLength) + ) + { return EFI_INVALID_PARAMETER; } Status = TcpChkDataBuf ( - Token->Packet.TxData->DataLength, - Token->Packet.TxData->FragmentCount, - (EFI_TCP4_FRAGMENT_DATA *) Token->Packet.TxData->FragmentTable - ); + Token->Packet.TxData->DataLength, + Token->Packet.TxData->FragmentCount, + (EFI_TCP4_FRAGMENT_DATA *)Token->Packet.TxData->FragmentTable + ); if (EFI_ERROR (Status)) { return Status; } @@ -938,28 +940,29 @@ Tcp6Transmit ( EFI_STATUS EFIAPI Tcp6Receive ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_IO_TOKEN *Token + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_IO_TOKEN *Token ) { SOCKET *Sock; EFI_STATUS Status; - if (NULL == This || - NULL == Token || - NULL == Token->CompletionToken.Event || - NULL == Token->Packet.RxData || - 0 == Token->Packet.RxData->FragmentCount || - 0 == Token->Packet.RxData->DataLength - ) { + if ((NULL == This) || + (NULL == Token) || + (NULL == Token->CompletionToken.Event) || + (NULL == Token->Packet.RxData) || + (0 == Token->Packet.RxData->FragmentCount) || + (0 == Token->Packet.RxData->DataLength) + ) + { return EFI_INVALID_PARAMETER; } Status = TcpChkDataBuf ( - Token->Packet.RxData->DataLength, - Token->Packet.RxData->FragmentCount, - (EFI_TCP4_FRAGMENT_DATA *) Token->Packet.RxData->FragmentTable - ); + Token->Packet.RxData->DataLength, + Token->Packet.RxData->FragmentCount, + (EFI_TCP4_FRAGMENT_DATA *)Token->Packet.RxData->FragmentTable + ); if (EFI_ERROR (Status)) { return Status; } @@ -999,13 +1002,13 @@ Tcp6Receive ( EFI_STATUS EFIAPI Tcp6Close ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_CLOSE_TOKEN *CloseToken + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_CLOSE_TOKEN *CloseToken ) { SOCKET *Sock; - if (NULL == This || NULL == CloseToken || NULL == CloseToken->CompletionToken.Event) { + if ((NULL == This) || (NULL == CloseToken) || (NULL == CloseToken->CompletionToken.Event)) { return EFI_INVALID_PARAMETER; } @@ -1052,8 +1055,8 @@ Tcp6Close ( EFI_STATUS EFIAPI Tcp6Cancel ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_COMPLETION_TOKEN *Token OPTIONAL + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_COMPLETION_TOKEN *Token OPTIONAL ) { SOCKET *Sock; @@ -1087,7 +1090,7 @@ Tcp6Cancel ( EFI_STATUS EFIAPI Tcp6Poll ( - IN EFI_TCP6_PROTOCOL *This + IN EFI_TCP6_PROTOCOL *This ) { SOCKET *Sock; @@ -1097,10 +1100,9 @@ Tcp6Poll ( return EFI_INVALID_PARAMETER; } - Sock = SOCK_FROM_THIS (This); + Sock = SOCK_FROM_THIS (This); Status = Sock->ProtoHandler (Sock, SOCK_POLL, NULL); return Status; } - diff --git a/NetworkPkg/TcpDxe/TcpMain.h b/NetworkPkg/TcpDxe/TcpMain.h index 35f12a16a8..c0c9b7f46e 100644 --- a/NetworkPkg/TcpDxe/TcpMain.h +++ b/NetworkPkg/TcpDxe/TcpMain.h @@ -29,67 +29,67 @@ extern EFI_COMPONENT_NAME_PROTOCOL gTcpComponentName; extern EFI_COMPONENT_NAME2_PROTOCOL gTcpComponentName2; extern EFI_UNICODE_STRING_TABLE *gTcpControllerNameTable; -extern LIST_ENTRY mTcpRunQue; -extern LIST_ENTRY mTcpListenQue; -extern TCP_SEQNO mTcpGlobalIss; -extern UINT32 mTcpTick; +extern LIST_ENTRY mTcpRunQue; +extern LIST_ENTRY mTcpListenQue; +extern TCP_SEQNO mTcpGlobalIss; +extern UINT32 mTcpTick; /// /// 30 seconds. /// -#define TCP6_KEEP_NEIGHBOR_TIME 30 +#define TCP6_KEEP_NEIGHBOR_TIME 30 /// /// 5 seconds, since 1 tick equals 200ms. /// -#define TCP6_REFRESH_NEIGHBOR_TICK 25 +#define TCP6_REFRESH_NEIGHBOR_TICK 25 -#define TCP_EXPIRE_TIME 65535 +#define TCP_EXPIRE_TIME 65535 /// /// The implementation selects the initial send sequence number and the unit to /// be added when it is increased. /// -#define TCP_BASE_ISS 0x4d7e980b -#define TCP_ISS_INCREMENT_1 2048 -#define TCP_ISS_INCREMENT_2 100 +#define TCP_BASE_ISS 0x4d7e980b +#define TCP_ISS_INCREMENT_1 2048 +#define TCP_ISS_INCREMENT_2 100 typedef union { - EFI_TCP4_CONFIG_DATA Tcp4CfgData; - EFI_TCP6_CONFIG_DATA Tcp6CfgData; + EFI_TCP4_CONFIG_DATA Tcp4CfgData; + EFI_TCP6_CONFIG_DATA Tcp6CfgData; } TCP_CONFIG_DATA; typedef union { - EFI_TCP4_ACCESS_POINT Tcp4Ap; - EFI_TCP6_ACCESS_POINT Tcp6Ap; + EFI_TCP4_ACCESS_POINT Tcp4Ap; + EFI_TCP6_ACCESS_POINT Tcp6Ap; } TCP_ACCESS_POINT; typedef struct _TCP4_MODE_DATA { - EFI_TCP4_CONNECTION_STATE *Tcp4State; - EFI_TCP4_CONFIG_DATA *Tcp4ConfigData; - EFI_IP4_MODE_DATA *Ip4ModeData; - EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData; - EFI_SIMPLE_NETWORK_MODE *SnpModeData; + EFI_TCP4_CONNECTION_STATE *Tcp4State; + EFI_TCP4_CONFIG_DATA *Tcp4ConfigData; + EFI_IP4_MODE_DATA *Ip4ModeData; + EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData; + EFI_SIMPLE_NETWORK_MODE *SnpModeData; } TCP4_MODE_DATA; typedef struct _TCP6_MODE_DATA { - EFI_TCP6_CONNECTION_STATE *Tcp6State; - EFI_TCP6_CONFIG_DATA *Tcp6ConfigData; - EFI_IP6_MODE_DATA *Ip6ModeData; - EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData; - EFI_SIMPLE_NETWORK_MODE *SnpModeData; + EFI_TCP6_CONNECTION_STATE *Tcp6State; + EFI_TCP6_CONFIG_DATA *Tcp6ConfigData; + EFI_IP6_MODE_DATA *Ip6ModeData; + EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData; + EFI_SIMPLE_NETWORK_MODE *SnpModeData; } TCP6_MODE_DATA; typedef struct _TCP4_ROUTE_INFO { - BOOLEAN DeleteRoute; - EFI_IPv4_ADDRESS *SubnetAddress; - EFI_IPv4_ADDRESS *SubnetMask; - EFI_IPv4_ADDRESS *GatewayAddress; + BOOLEAN DeleteRoute; + EFI_IPv4_ADDRESS *SubnetAddress; + EFI_IPv4_ADDRESS *SubnetMask; + EFI_IPv4_ADDRESS *GatewayAddress; } TCP4_ROUTE_INFO; typedef struct { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - UINTN NumberOfChildren; - EFI_HANDLE *ChildHandleBuffer; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; } TCP_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; // @@ -122,12 +122,12 @@ typedef struct { EFI_STATUS EFIAPI Tcp4GetModeData ( - IN EFI_TCP4_PROTOCOL *This, - OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, - OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, - OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + IN EFI_TCP4_PROTOCOL *This, + OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, + OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, + OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, + OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, + OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL ); /** @@ -155,8 +155,8 @@ Tcp4GetModeData ( EFI_STATUS EFIAPI Tcp4Configure ( - IN EFI_TCP4_PROTOCOL * This, - IN EFI_TCP4_CONFIG_DATA * TcpConfigData OPTIONAL + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_CONFIG_DATA *TcpConfigData OPTIONAL ); /** @@ -187,11 +187,11 @@ Tcp4Configure ( EFI_STATUS EFIAPI Tcp4Routes ( - IN EFI_TCP4_PROTOCOL *This, - IN BOOLEAN DeleteRoute, - IN EFI_IPv4_ADDRESS *SubnetAddress, - IN EFI_IPv4_ADDRESS *SubnetMask, - IN EFI_IPv4_ADDRESS *GatewayAddress + IN EFI_TCP4_PROTOCOL *This, + IN BOOLEAN DeleteRoute, + IN EFI_IPv4_ADDRESS *SubnetAddress, + IN EFI_IPv4_ADDRESS *SubnetMask, + IN EFI_IPv4_ADDRESS *GatewayAddress ); /** @@ -216,8 +216,8 @@ Tcp4Routes ( EFI_STATUS EFIAPI Tcp4Connect ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken ); /** @@ -243,8 +243,8 @@ Tcp4Connect ( EFI_STATUS EFIAPI Tcp4Accept ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_LISTEN_TOKEN *ListenToken + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_LISTEN_TOKEN *ListenToken ); /** @@ -279,8 +279,8 @@ Tcp4Accept ( EFI_STATUS EFIAPI Tcp4Transmit ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_IO_TOKEN *Token + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_IO_TOKEN *Token ); /** @@ -317,8 +317,8 @@ Tcp4Transmit ( EFI_STATUS EFIAPI Tcp4Receive ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_IO_TOKEN *Token + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_IO_TOKEN *Token ); /** @@ -346,8 +346,8 @@ Tcp4Receive ( EFI_STATUS EFIAPI Tcp4Close ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_CLOSE_TOKEN *CloseToken + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_CLOSE_TOKEN *CloseToken ); /** @@ -377,8 +377,8 @@ Tcp4Close ( EFI_STATUS EFIAPI Tcp4Cancel ( - IN EFI_TCP4_PROTOCOL *This, - IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL + IN EFI_TCP4_PROTOCOL *This, + IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL ); /** @@ -398,7 +398,7 @@ Tcp4Cancel ( EFI_STATUS EFIAPI Tcp4Poll ( - IN EFI_TCP4_PROTOCOL *This + IN EFI_TCP4_PROTOCOL *This ); // @@ -436,12 +436,12 @@ Tcp4Poll ( EFI_STATUS EFIAPI Tcp6GetModeData ( - IN EFI_TCP6_PROTOCOL *This, - OUT EFI_TCP6_CONNECTION_STATE *Tcp6State OPTIONAL, - OUT EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL, - OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + IN EFI_TCP6_PROTOCOL *This, + OUT EFI_TCP6_CONNECTION_STATE *Tcp6State OPTIONAL, + OUT EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL, + OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, + OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, + OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL ); /** @@ -494,8 +494,8 @@ Tcp6GetModeData ( EFI_STATUS EFIAPI Tcp6Configure ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL ); /** @@ -531,8 +531,8 @@ Tcp6Configure ( EFI_STATUS EFIAPI Tcp6Connect ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_CONNECTION_TOKEN *ConnectionToken + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_CONNECTION_TOKEN *ConnectionToken ); /** @@ -574,8 +574,8 @@ Tcp6Connect ( EFI_STATUS EFIAPI Tcp6Accept ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_LISTEN_TOKEN *ListenToken + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_LISTEN_TOKEN *ListenToken ); /** @@ -618,8 +618,8 @@ Tcp6Accept ( EFI_STATUS EFIAPI Tcp6Transmit ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_IO_TOKEN *Token + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_IO_TOKEN *Token ); /** @@ -671,8 +671,8 @@ Tcp6Transmit ( EFI_STATUS EFIAPI Tcp6Receive ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_IO_TOKEN *Token + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_IO_TOKEN *Token ); /** @@ -705,8 +705,8 @@ Tcp6Receive ( EFI_STATUS EFIAPI Tcp6Close ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_CLOSE_TOKEN *CloseToken + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_CLOSE_TOKEN *CloseToken ); /** @@ -747,8 +747,8 @@ Tcp6Close ( EFI_STATUS EFIAPI Tcp6Cancel ( - IN EFI_TCP6_PROTOCOL *This, - IN EFI_TCP6_COMPLETION_TOKEN *Token OPTIONAL + IN EFI_TCP6_PROTOCOL *This, + IN EFI_TCP6_COMPLETION_TOKEN *Token OPTIONAL ); /** @@ -771,7 +771,7 @@ Tcp6Cancel ( EFI_STATUS EFIAPI Tcp6Poll ( - IN EFI_TCP6_PROTOCOL *This + IN EFI_TCP6_PROTOCOL *This ); #endif diff --git a/NetworkPkg/TcpDxe/TcpMisc.c b/NetworkPkg/TcpDxe/TcpMisc.c index c454efefe3..c93212d47d 100644 --- a/NetworkPkg/TcpDxe/TcpMisc.c +++ b/NetworkPkg/TcpDxe/TcpMisc.c @@ -10,19 +10,19 @@ #include "TcpMain.h" -LIST_ENTRY mTcpRunQue = { +LIST_ENTRY mTcpRunQue = { &mTcpRunQue, &mTcpRunQue }; -LIST_ENTRY mTcpListenQue = { +LIST_ENTRY mTcpListenQue = { &mTcpListenQue, &mTcpListenQue }; -TCP_SEQNO mTcpGlobalIss = TCP_BASE_ISS; +TCP_SEQNO mTcpGlobalIss = TCP_BASE_ISS; -CHAR16 *mTcpStateName[] = { +CHAR16 *mTcpStateName[] = { L"TCP_CLOSED", L"TCP_LISTEN", L"TCP_SYN_SENT", @@ -36,7 +36,6 @@ CHAR16 *mTcpStateName[] = { L"TCP_LAST_ACK" }; - /** Initialize the Tcb local related members. @@ -45,7 +44,7 @@ CHAR16 *mTcpStateName[] = { **/ VOID TcpInitTcbLocal ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { // @@ -53,18 +52,18 @@ TcpInitTcbLocal ( // if (Tcb->Sk->IpVersion == IP_VERSION_4) { Tcb->HeadSum = NetPseudoHeadChecksum ( - Tcb->LocalEnd.Ip.Addr[0], - Tcb->RemoteEnd.Ip.Addr[0], - 0x06, - 0 - ); + Tcb->LocalEnd.Ip.Addr[0], + Tcb->RemoteEnd.Ip.Addr[0], + 0x06, + 0 + ); } else { Tcb->HeadSum = NetIp6PseudoHeadChecksum ( - &Tcb->LocalEnd.Ip.v6, - &Tcb->RemoteEnd.Ip.v6, - 0x06, - 0 - ); + &Tcb->LocalEnd.Ip.v6, + &Tcb->RemoteEnd.Ip.v6, + 0x06, + 0 + ); } Tcb->Iss = TcpGetIss (); @@ -79,7 +78,7 @@ TcpInitTcbLocal ( // // First window size is never scaled // - Tcb->RcvWndScale = 0; + Tcb->RcvWndScale = 0; Tcb->RetxmitSeqMax = 0; Tcb->ProbeTimerOn = FALSE; @@ -95,9 +94,9 @@ TcpInitTcbLocal ( **/ VOID TcpInitTcbPeer ( - IN OUT TCP_CB *Tcb, - IN TCP_SEG *Seg, - IN TCP_OPTION *Opt + IN OUT TCP_CB *Tcb, + IN TCP_SEG *Seg, + IN TCP_OPTION *Opt ) { UINT16 RcvMss; @@ -105,9 +104,9 @@ TcpInitTcbPeer ( ASSERT ((Tcb != NULL) && (Seg != NULL) && (Opt != NULL)); ASSERT (TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN)); - Tcb->SndWnd = Seg->Wnd; - Tcb->SndWndMax = Tcb->SndWnd; - Tcb->SndWl1 = Seg->Seq; + Tcb->SndWnd = Seg->Wnd; + Tcb->SndWndMax = Tcb->SndWnd; + Tcb->SndWl1 = Seg->Seq; if (TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK)) { Tcb->SndWl2 = Seg->Ack; @@ -116,13 +115,12 @@ TcpInitTcbPeer ( } if (TCP_FLG_ON (Opt->Flag, TCP_OPTION_RCVD_MSS)) { - Tcb->SndMss = (UINT16) MAX (64, Opt->Mss); + Tcb->SndMss = (UINT16)MAX (64, Opt->Mss); - RcvMss = TcpGetRcvMss (Tcb->Sk); + RcvMss = TcpGetRcvMss (Tcb->Sk); if (Tcb->SndMss > RcvMss) { Tcb->SndMss = RcvMss; } - } else { // // One end doesn't support MSS option, use default. @@ -130,7 +128,7 @@ TcpInitTcbPeer ( Tcb->RcvMss = 536; } - Tcb->CWnd = Tcb->SndMss; + Tcb->CWnd = Tcb->SndMss; Tcb->Irs = Seg->Seq; Tcb->RcvNxt = Tcb->Irs + 1; @@ -138,12 +136,10 @@ TcpInitTcbPeer ( Tcb->RcvWl2 = Tcb->RcvNxt; if (TCP_FLG_ON (Opt->Flag, TCP_OPTION_RCVD_WS) && !TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_WS)) { + Tcb->SndWndScale = Opt->WndScale; - Tcb->SndWndScale = Opt->WndScale; - - Tcb->RcvWndScale = TcpComputeScale (Tcb); + Tcb->RcvWndScale = TcpComputeScale (Tcb); TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RCVD_WS); - } else { // // One end doesn't support window scale option. use zero. @@ -152,7 +148,6 @@ TcpInitTcbPeer ( } if (TCP_FLG_ON (Opt->Flag, TCP_OPTION_RCVD_TS) && !TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_TS)) { - TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_TS); TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RCVD_TS); @@ -189,9 +184,9 @@ TcpIsIpEqual ( ASSERT ((Version == IP_VERSION_4) || (Version == IP_VERSION_6)); if (Version == IP_VERSION_4) { - return (BOOLEAN) (Ip1->Addr[0] == Ip2->Addr[0]); + return (BOOLEAN)(Ip1->Addr[0] == Ip2->Addr[0]); } else { - return (BOOLEAN) EFI_IP6_EQUAL (&Ip1->v6, &Ip2->v6); + return (BOOLEAN)EFI_IP6_EQUAL (&Ip1->v6, &Ip2->v6); } } @@ -208,17 +203,17 @@ TcpIsIpEqual ( **/ BOOLEAN TcpIsIpZero ( - IN EFI_IP_ADDRESS *Ip, - IN UINT8 Version + IN EFI_IP_ADDRESS *Ip, + IN UINT8 Version ) { ASSERT ((Version == IP_VERSION_4) || (Version == IP_VERSION_6)); if (Version == IP_VERSION_4) { - return (BOOLEAN) (Ip->Addr[0] == 0); + return (BOOLEAN)(Ip->Addr[0] == 0); } else { - return (BOOLEAN) ((Ip->Addr[0] == 0) && (Ip->Addr[1] == 0) && - (Ip->Addr[2] == 0) && (Ip->Addr[3] == 0)); + return (BOOLEAN)((Ip->Addr[0] == 0) && (Ip->Addr[1] == 0) && + (Ip->Addr[2] == 0) && (Ip->Addr[3] == 0)); } } @@ -236,16 +231,16 @@ TcpIsIpZero ( **/ TCP_CB * TcpLocateListenTcb ( - IN TCP_PEER *Local, - IN TCP_PEER *Remote, - IN UINT8 Version + IN TCP_PEER *Local, + IN TCP_PEER *Remote, + IN UINT8 Version ) { - LIST_ENTRY *Entry; - TCP_CB *Node; - TCP_CB *Match; - INTN Last; - INTN Cur; + LIST_ENTRY *Entry; + TCP_CB *Node; + TCP_CB *Match; + INTN Last; + INTN Cur; Last = 4; Match = NULL; @@ -257,8 +252,8 @@ TcpLocateListenTcb ( (Local->Port != Node->LocalEnd.Port) || !TCP_PEER_MATCH (Remote, &Node->RemoteEnd, Version) || !TCP_PEER_MATCH (Local, &Node->LocalEnd, Version) - ) { - + ) + { continue; } @@ -311,9 +306,9 @@ TcpFindTcbByPeer ( IN UINT8 Version ) { - TCP_PORTNO LocalPort; - LIST_ENTRY *Entry; - TCP_CB *Tcb; + TCP_PORTNO LocalPort; + LIST_ENTRY *Entry; + TCP_CB *Tcb; ASSERT ((Addr != NULL) && (Port != 0)); @@ -323,10 +318,10 @@ TcpFindTcbByPeer ( Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List); if ((Version == Tcb->Sk->IpVersion) && - TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) && + TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) && (LocalPort == Tcb->LocalEnd.Port) - ) { - + ) + { return TRUE; } } @@ -335,10 +330,10 @@ TcpFindTcbByPeer ( Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List); if ((Version == Tcb->Sk->IpVersion) && - TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) && + TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) && (LocalPort == Tcb->LocalEnd.Port) - ) { - + ) + { return TRUE; } } @@ -370,10 +365,10 @@ TcpLocateTcb ( IN BOOLEAN Syn ) { - TCP_PEER Local; - TCP_PEER Remote; - LIST_ENTRY *Entry; - TCP_CB *Tcb; + TCP_PEER Local; + TCP_PEER Remote; + LIST_ENTRY *Entry; + TCP_CB *Tcb; Local.Port = LocalPort; Remote.Port = RemotePort; @@ -390,8 +385,8 @@ TcpLocateTcb ( if ((Version == Tcb->Sk->IpVersion) && TCP_PEER_EQUAL (&Remote, &Tcb->RemoteEnd, Version) && TCP_PEER_EQUAL (&Local, &Tcb->LocalEnd, Version) - ) { - + ) + { RemoveEntryList (&Tcb->List); InsertHeadList (&mTcpRunQue, &Tcb->List); @@ -420,20 +415,20 @@ TcpLocateTcb ( **/ INTN TcpInsertTcb ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Head; - TCP_CB *Node; + LIST_ENTRY *Entry; + LIST_ENTRY *Head; + TCP_CB *Node; ASSERT ( (Tcb != NULL) && ( - (Tcb->State == TCP_LISTEN) || - (Tcb->State == TCP_SYN_SENT) || - (Tcb->State == TCP_SYN_RCVD) || - (Tcb->State == TCP_CLOSED) + (Tcb->State == TCP_LISTEN) || + (Tcb->State == TCP_SYN_SENT) || + (Tcb->State == TCP_SYN_RCVD) || + (Tcb->State == TCP_CLOSED) ) ); @@ -455,15 +450,14 @@ TcpInsertTcb ( if (TCP_PEER_EQUAL (&Tcb->LocalEnd, &Node->LocalEnd, Tcb->Sk->IpVersion) && TCP_PEER_EQUAL (&Tcb->RemoteEnd, &Node->RemoteEnd, Tcb->Sk->IpVersion) - ) { - + ) + { return -1; } } InsertHeadList (Head, &Tcb->List); - return 0; } @@ -477,10 +471,10 @@ TcpInsertTcb ( **/ TCP_CB * TcpCloneTcb ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ) { - TCP_CB *Clone; + TCP_CB *Clone; Clone = AllocateZeroPool (sizeof (TCP_CB)); @@ -506,7 +500,7 @@ TcpCloneTcb ( return NULL; } - ((TCP_PROTO_DATA *) (Clone->Sk->ProtoReserved))->TcpPcb = Clone; + ((TCP_PROTO_DATA *)(Clone->Sk->ProtoReserved))->TcpPcb = Clone; return Clone; } @@ -539,25 +533,25 @@ TcpGetRcvMss ( IN SOCKET *Sock ) { - EFI_IP4_MODE_DATA Ip4Mode; - EFI_IP6_MODE_DATA Ip6Mode; - EFI_IP4_PROTOCOL *Ip4; - EFI_IP6_PROTOCOL *Ip6; - TCP_PROTO_DATA *TcpProto; + EFI_IP4_MODE_DATA Ip4Mode; + EFI_IP6_MODE_DATA Ip6Mode; + EFI_IP4_PROTOCOL *Ip4; + EFI_IP6_PROTOCOL *Ip6; + TCP_PROTO_DATA *TcpProto; ASSERT (Sock != NULL); ZeroMem (&Ip4Mode, sizeof (EFI_IP4_MODE_DATA)); ZeroMem (&Ip6Mode, sizeof (EFI_IP6_MODE_DATA)); - TcpProto = (TCP_PROTO_DATA *) Sock->ProtoReserved; + TcpProto = (TCP_PROTO_DATA *)Sock->ProtoReserved; if (Sock->IpVersion == IP_VERSION_4) { Ip4 = TcpProto->TcpService->IpIo->Ip.Ip4; ASSERT (Ip4 != NULL); Ip4->GetModeData (Ip4, &Ip4Mode, NULL, NULL); - return (UINT16) (Ip4Mode.MaxPacketSize - sizeof (TCP_HEAD)); + return (UINT16)(Ip4Mode.MaxPacketSize - sizeof (TCP_HEAD)); } else { Ip6 = TcpProto->TcpService->IpIo->Ip.Ip6; ASSERT (Ip6 != NULL); @@ -587,7 +581,7 @@ TcpGetRcvMss ( } } - return (UINT16) (Ip6Mode.MaxPacketSize - sizeof (TCP_HEAD)); + return (UINT16)(Ip6Mode.MaxPacketSize - sizeof (TCP_HEAD)); } } @@ -600,8 +594,8 @@ TcpGetRcvMss ( **/ VOID TcpSetState ( - IN TCP_CB *Tcb, - IN UINT8 State + IN TCP_CB *Tcb, + IN UINT8 State ) { ASSERT (Tcb->State < (sizeof (mTcpStateName) / sizeof (CHAR16 *))); @@ -609,36 +603,36 @@ TcpSetState ( DEBUG ( (DEBUG_NET, - "Tcb (%p) state %s --> %s\n", - Tcb, - mTcpStateName[Tcb->State], - mTcpStateName[State]) + "Tcb (%p) state %s --> %s\n", + Tcb, + mTcpStateName[Tcb->State], + mTcpStateName[State]) ); Tcb->State = State; switch (State) { - case TCP_ESTABLISHED: + case TCP_ESTABLISHED: - SockConnEstablished (Tcb->Sk); + SockConnEstablished (Tcb->Sk); - if (Tcb->Parent != NULL) { - // - // A new connection is accepted by a listening socket. Install - // the device path. - // - TcpInstallDevicePath (Tcb->Sk); - } + if (Tcb->Parent != NULL) { + // + // A new connection is accepted by a listening socket. Install + // the device path. + // + TcpInstallDevicePath (Tcb->Sk); + } - break; + break; - case TCP_CLOSED: + case TCP_CLOSED: - SockConnClosed (Tcb->Sk); + SockConnClosed (Tcb->Sk); - break; - default: - break; + break; + default: + break; } } @@ -653,21 +647,21 @@ TcpSetState ( **/ UINT16 TcpChecksum ( - IN NET_BUF *Nbuf, - IN UINT16 HeadSum + IN NET_BUF *Nbuf, + IN UINT16 HeadSum ) { UINT16 Checksum; - Checksum = NetbufChecksum (Nbuf); - Checksum = NetAddChecksum (Checksum, HeadSum); + Checksum = NetbufChecksum (Nbuf); + Checksum = NetAddChecksum (Checksum, HeadSum); Checksum = NetAddChecksum ( - Checksum, - HTONS ((UINT16) Nbuf->TotalSize) - ); + Checksum, + HTONS ((UINT16)Nbuf->TotalSize) + ); - return (UINT16) (~Checksum); + return (UINT16)(~Checksum); } /** @@ -682,22 +676,22 @@ TcpChecksum ( **/ TCP_SEG * TcpFormatNetbuf ( - IN TCP_CB *Tcb, - IN OUT NET_BUF *Nbuf + IN TCP_CB *Tcb, + IN OUT NET_BUF *Nbuf ) { TCP_SEG *Seg; TCP_HEAD *Head; - Seg = TCPSEG_NETBUF (Nbuf); - Head = (TCP_HEAD *) NetbufGetByte (Nbuf, 0, NULL); + Seg = TCPSEG_NETBUF (Nbuf); + Head = (TCP_HEAD *)NetbufGetByte (Nbuf, 0, NULL); ASSERT (Head != NULL); Nbuf->Tcp = Head; - Seg->Seq = NTOHL (Head->Seq); - Seg->Ack = NTOHL (Head->Ack); - Seg->End = Seg->Seq + (Nbuf->TotalSize - (Head->HeadLen << 2)); + Seg->Seq = NTOHL (Head->Seq); + Seg->Ack = NTOHL (Head->Ack); + Seg->End = Seg->Seq + (Nbuf->TotalSize - (Head->HeadLen << 2)); Seg->Urg = NTOHS (Head->Urg); Seg->Wnd = (NTOHS (Head->Wnd) << Tcb->SndWndScale); @@ -749,17 +743,16 @@ TcpOnAppConnect ( **/ VOID TcpOnAppClose ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { ASSERT (Tcb != NULL); - if (!IsListEmpty (&Tcb->RcvQue) || GET_RCV_DATASIZE (Tcb->Sk) != 0) { - + if (!IsListEmpty (&Tcb->RcvQue) || (GET_RCV_DATASIZE (Tcb->Sk) != 0)) { DEBUG ( (DEBUG_WARN, - "TcpOnAppClose: connection reset because data is lost for TCB %p\n", - Tcb) + "TcpOnAppClose: connection reset because data is lost for TCB %p\n", + Tcb) ); TcpResetConnection (Tcb); @@ -768,22 +761,22 @@ TcpOnAppClose ( } switch (Tcb->State) { - case TCP_CLOSED: - case TCP_LISTEN: - case TCP_SYN_SENT: - TcpSetState (Tcb, TCP_CLOSED); - break; - - case TCP_SYN_RCVD: - case TCP_ESTABLISHED: - TcpSetState (Tcb, TCP_FIN_WAIT_1); - break; - - case TCP_CLOSE_WAIT: - TcpSetState (Tcb, TCP_LAST_ACK); - break; - default: - break; + case TCP_CLOSED: + case TCP_LISTEN: + case TCP_SYN_SENT: + TcpSetState (Tcb, TCP_CLOSED); + break; + + case TCP_SYN_RCVD: + case TCP_ESTABLISHED: + TcpSetState (Tcb, TCP_FIN_WAIT_1); + break; + + case TCP_CLOSE_WAIT: + TcpSetState (Tcb, TCP_LAST_ACK); + break; + default: + break; } TcpToSendData (Tcb, 1); @@ -801,35 +794,34 @@ TcpOnAppClose ( **/ INTN TcpOnAppSend ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { - switch (Tcb->State) { - case TCP_CLOSED: - return -1; + case TCP_CLOSED: + return -1; - case TCP_LISTEN: - return -1; + case TCP_LISTEN: + return -1; - case TCP_SYN_SENT: - case TCP_SYN_RCVD: - return 0; + case TCP_SYN_SENT: + case TCP_SYN_RCVD: + return 0; - case TCP_ESTABLISHED: - case TCP_CLOSE_WAIT: - TcpToSendData (Tcb, 0); - return 0; + case TCP_ESTABLISHED: + case TCP_CLOSE_WAIT: + TcpToSendData (Tcb, 0); + return 0; - case TCP_FIN_WAIT_1: - case TCP_FIN_WAIT_2: - case TCP_CLOSING: - case TCP_LAST_ACK: - case TCP_TIME_WAIT: - return -1; + case TCP_FIN_WAIT_1: + case TCP_FIN_WAIT_2: + case TCP_CLOSING: + case TCP_LAST_ACK: + case TCP_TIME_WAIT: + return -1; - default: - break; + default: + break; } return 0; @@ -844,41 +836,38 @@ TcpOnAppSend ( **/ VOID TcpOnAppConsume ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ) { - UINT32 TcpOld; + UINT32 TcpOld; switch (Tcb->State) { - case TCP_ESTABLISHED: - TcpOld = TcpRcvWinOld (Tcb); - if (TcpRcvWinNow (Tcb) > TcpOld) { - - if (TcpOld < Tcb->RcvMss) { - - DEBUG ( - (DEBUG_NET, - "TcpOnAppConsume: send a window update for a window closed Tcb %p\n", - Tcb) - ); - - TcpSendAck (Tcb); - } else if (Tcb->DelayedAck == 0) { - - DEBUG ( - (DEBUG_NET, - "TcpOnAppConsume: scheduled a delayed ACK to update window for Tcb %p\n", - Tcb) - ); - - Tcb->DelayedAck = 1; + case TCP_ESTABLISHED: + TcpOld = TcpRcvWinOld (Tcb); + if (TcpRcvWinNow (Tcb) > TcpOld) { + if (TcpOld < Tcb->RcvMss) { + DEBUG ( + (DEBUG_NET, + "TcpOnAppConsume: send a window update for a window closed Tcb %p\n", + Tcb) + ); + + TcpSendAck (Tcb); + } else if (Tcb->DelayedAck == 0) { + DEBUG ( + (DEBUG_NET, + "TcpOnAppConsume: scheduled a delayed ACK to update window for Tcb %p\n", + Tcb) + ); + + Tcb->DelayedAck = 1; + } } - } - break; + break; - default: - break; + default: + break; } } @@ -891,25 +880,25 @@ TcpOnAppConsume ( **/ VOID TcpOnAppAbort ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ) { DEBUG ( (DEBUG_WARN, - "TcpOnAppAbort: connection reset issued by application for TCB %p\n", - Tcb) + "TcpOnAppAbort: connection reset issued by application for TCB %p\n", + Tcb) ); switch (Tcb->State) { - case TCP_SYN_RCVD: - case TCP_ESTABLISHED: - case TCP_FIN_WAIT_1: - case TCP_FIN_WAIT_2: - case TCP_CLOSE_WAIT: - TcpResetConnection (Tcb); - break; - default: - break; + case TCP_SYN_RCVD: + case TCP_ESTABLISHED: + case TCP_FIN_WAIT_1: + case TCP_FIN_WAIT_2: + case TCP_CLOSE_WAIT: + TcpResetConnection (Tcb); + break; + default: + break; } TcpSetState (Tcb, TCP_CLOSED); @@ -923,7 +912,7 @@ TcpOnAppAbort ( **/ VOID TcpResetConnection ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ) { NET_BUF *Nbuf; @@ -932,10 +921,10 @@ TcpResetConnection ( Nbuf = NetbufAlloc (TCP_MAX_HEAD); if (Nbuf == NULL) { - return ; + return; } - Nhead = (TCP_HEAD *) NetbufAllocSpace ( + Nhead = (TCP_HEAD *)NetbufAllocSpace ( Nbuf, sizeof (TCP_HEAD), NET_BUF_TAIL @@ -943,14 +932,14 @@ TcpResetConnection ( ASSERT (Nhead != NULL); - Nbuf->Tcp = Nhead; + Nbuf->Tcp = Nhead; Nhead->Flag = TCP_FLG_RST; Nhead->Seq = HTONL (Tcb->SndNxt); Nhead->Ack = HTONL (Tcb->RcvNxt); Nhead->SrcPort = Tcb->LocalEnd.Port; Nhead->DstPort = Tcb->RemoteEnd.Port; - Nhead->HeadLen = (UINT8) (sizeof (TCP_HEAD) >> 2); + Nhead->HeadLen = (UINT8)(sizeof (TCP_HEAD) >> 2); Nhead->Res = 0; Nhead->Wnd = HTONS (0xFFFF); Nhead->Checksum = 0; @@ -973,24 +962,24 @@ TcpResetConnection ( **/ EFI_STATUS TcpInstallDevicePath ( - IN SOCKET *Sock + IN SOCKET *Sock ) { - TCP_PROTO_DATA *TcpProto; - TCP_SERVICE_DATA *TcpService; - TCP_CB *Tcb; - IPv4_DEVICE_PATH Ip4DPathNode; - IPv6_DEVICE_PATH Ip6DPathNode; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - EFI_STATUS Status; - TCP_PORTNO LocalPort; - TCP_PORTNO RemotePort; - - TcpProto = (TCP_PROTO_DATA *) Sock->ProtoReserved; + TCP_PROTO_DATA *TcpProto; + TCP_SERVICE_DATA *TcpService; + TCP_CB *Tcb; + IPv4_DEVICE_PATH Ip4DPathNode; + IPv6_DEVICE_PATH Ip6DPathNode; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + EFI_STATUS Status; + TCP_PORTNO LocalPort; + TCP_PORTNO RemotePort; + + TcpProto = (TCP_PROTO_DATA *)Sock->ProtoReserved; TcpService = TcpProto->TcpService; Tcb = TcpProto->TcpPcb; - LocalPort = NTOHS (Tcb->LocalEnd.Port); + LocalPort = NTOHS (Tcb->LocalEnd.Port); RemotePort = NTOHS (Tcb->RemoteEnd.Port); if (Sock->IpVersion == IP_VERSION_4) { NetLibCreateIPv4DPathNode ( @@ -1006,7 +995,7 @@ TcpInstallDevicePath ( IP4_COPY_ADDRESS (&Ip4DPathNode.SubnetMask, &Tcb->SubnetMask); - DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) &Ip4DPathNode; + DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)&Ip4DPathNode; } else { NetLibCreateIPv6DPathNode ( &Ip6DPathNode, @@ -1018,7 +1007,7 @@ TcpInstallDevicePath ( EFI_IP_PROTO_TCP ); - DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) &Ip6DPathNode; + DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)&Ip6DPathNode; } Sock->DevicePath = AppendDevicePathNode (Sock->ParentDevicePath, DevicePath); diff --git a/NetworkPkg/TcpDxe/TcpOption.c b/NetworkPkg/TcpDxe/TcpOption.c index c5dbd620e8..f0bb5a6b51 100644 --- a/NetworkPkg/TcpDxe/TcpOption.c +++ b/NetworkPkg/TcpDxe/TcpOption.c @@ -19,10 +19,11 @@ **/ UINT16 TcpGetUint16 ( - IN UINT8 *Buf + IN UINT8 *Buf ) { UINT16 Value; + CopyMem (&Value, Buf, sizeof (UINT16)); return NTOHS (Value); } @@ -37,10 +38,11 @@ TcpGetUint16 ( **/ UINT32 TcpGetUint32 ( - IN UINT8 *Buf + IN UINT8 *Buf ) { UINT32 Value; + CopyMem (&Value, Buf, sizeof (UINT32)); return NTOHL (Value); } @@ -54,8 +56,8 @@ TcpGetUint32 ( **/ VOID TcpPutUint32 ( - OUT UINT8 *Buf, - IN UINT32 Data + OUT UINT8 *Buf, + IN UINT32 Data ) { Data = HTONL (Data); @@ -72,7 +74,7 @@ TcpPutUint32 ( **/ UINT8 TcpComputeScale ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ) { UINT8 Scale; @@ -82,9 +84,8 @@ TcpComputeScale ( BufSize = GET_RCV_BUFFSIZE (Tcb->Sk); - Scale = 0; - while ((Scale < TCP_OPTION_MAX_WS) && ((UINT32) (TCP_OPTION_MAX_WIN << Scale) < BufSize)) { - + Scale = 0; + while ((Scale < TCP_OPTION_MAX_WS) && ((UINT32)(TCP_OPTION_MAX_WIN << Scale) < BufSize)) { Scale++; } @@ -102,8 +103,8 @@ TcpComputeScale ( **/ UINT16 TcpSynBuildOption ( - IN TCP_CB *Tcb, - IN NET_BUF *Nbuf + IN TCP_CB *Tcb, + IN NET_BUF *Nbuf ) { UINT8 *Data; @@ -120,9 +121,9 @@ TcpSynBuildOption ( // if (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_TS) && (!TCP_FLG_ON (TCPSEG_NETBUF (Nbuf)->Flag, TCP_FLG_ACK) || - TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_TS)) - ) { - + TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_TS)) + ) + { Data = NetbufAllocSpace ( Nbuf, TCP_OPTION_TS_ALIGNED_LEN, @@ -144,9 +145,9 @@ TcpSynBuildOption ( // if (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_WS) && (!TCP_FLG_ON (TCPSEG_NETBUF (Nbuf)->Flag, TCP_FLG_ACK) || - TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_WS)) - ) { - + TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RCVD_WS)) + ) + { Data = NetbufAllocSpace ( Nbuf, TCP_OPTION_WS_ALIGNED_LEN, @@ -182,8 +183,8 @@ TcpSynBuildOption ( **/ UINT16 TcpBuildOption ( - IN TCP_CB *Tcb, - IN NET_BUF *Nbuf + IN TCP_CB *Tcb, + IN NET_BUF *Nbuf ) { UINT8 *Data; @@ -197,13 +198,13 @@ TcpBuildOption ( // if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_SND_TS) && !TCP_FLG_ON (TCPSEG_NETBUF (Nbuf)->Flag, TCP_FLG_RST) - ) { - + ) + { Data = NetbufAllocSpace ( - Nbuf, - TCP_OPTION_TS_ALIGNED_LEN, - NET_BUF_HEAD - ); + Nbuf, + TCP_OPTION_TS_ALIGNED_LEN, + NET_BUF_HEAD + ); ASSERT (Data != NULL); Len += TCP_OPTION_TS_ALIGNED_LEN; @@ -229,38 +230,38 @@ TcpBuildOption ( **/ INTN TcpParseOption ( - IN TCP_HEAD *Tcp, - IN OUT TCP_OPTION *Option + IN TCP_HEAD *Tcp, + IN OUT TCP_OPTION *Option ) { - UINT8 *Head; - UINT8 TotalLen; - UINT8 Cur; - UINT8 Type; - UINT8 Len; + UINT8 *Head; + UINT8 TotalLen; + UINT8 Cur; + UINT8 Type; + UINT8 Len; ASSERT ((Tcp != NULL) && (Option != NULL)); - Option->Flag = 0; + Option->Flag = 0; - TotalLen = (UINT8) ((Tcp->HeadLen << 2) - sizeof (TCP_HEAD)); + TotalLen = (UINT8)((Tcp->HeadLen << 2) - sizeof (TCP_HEAD)); if (TotalLen <= 0) { return 0; } - Head = (UINT8 *) (Tcp + 1); + Head = (UINT8 *)(Tcp + 1); // // Fast process of the timestamp option. // if ((TotalLen == TCP_OPTION_TS_ALIGNED_LEN) && (TcpGetUint32 (Head) == TCP_OPTION_TS_FAST)) { - Option->TSVal = TcpGetUint32 (Head + 4); Option->TSEcr = TcpGetUint32 (Head + 8); Option->Flag = TCP_OPTION_RCVD_TS; return 0; } + // // Slow path to process the options. // @@ -270,68 +271,64 @@ TcpParseOption ( Type = Head[Cur]; switch (Type) { - case TCP_OPTION_MSS: - Len = Head[Cur + 1]; + case TCP_OPTION_MSS: + Len = Head[Cur + 1]; - if ((Len != TCP_OPTION_MSS_LEN) || (TotalLen - Cur < TCP_OPTION_MSS_LEN)) { + if ((Len != TCP_OPTION_MSS_LEN) || (TotalLen - Cur < TCP_OPTION_MSS_LEN)) { + return -1; + } - return -1; - } + Option->Mss = TcpGetUint16 (&Head[Cur + 2]); + TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_MSS); - Option->Mss = TcpGetUint16 (&Head[Cur + 2]); - TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_MSS); + Cur += TCP_OPTION_MSS_LEN; + break; - Cur += TCP_OPTION_MSS_LEN; - break; + case TCP_OPTION_WS: + Len = Head[Cur + 1]; - case TCP_OPTION_WS: - Len = Head[Cur + 1]; + if ((Len != TCP_OPTION_WS_LEN) || (TotalLen - Cur < TCP_OPTION_WS_LEN)) { + return -1; + } - if ((Len != TCP_OPTION_WS_LEN) || (TotalLen - Cur < TCP_OPTION_WS_LEN)) { + Option->WndScale = (UINT8)MIN (14, Head[Cur + 2]); + TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_WS); - return -1; - } + Cur += TCP_OPTION_WS_LEN; + break; - Option->WndScale = (UINT8) MIN (14, Head[Cur + 2]); - TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_WS); + case TCP_OPTION_TS: + Len = Head[Cur + 1]; - Cur += TCP_OPTION_WS_LEN; - break; + if ((Len != TCP_OPTION_TS_LEN) || (TotalLen - Cur < TCP_OPTION_TS_LEN)) { + return -1; + } - case TCP_OPTION_TS: - Len = Head[Cur + 1]; + Option->TSVal = TcpGetUint32 (&Head[Cur + 2]); + Option->TSEcr = TcpGetUint32 (&Head[Cur + 6]); + TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_TS); - if ((Len != TCP_OPTION_TS_LEN) || (TotalLen - Cur < TCP_OPTION_TS_LEN)) { + Cur += TCP_OPTION_TS_LEN; + break; - return -1; - } + case TCP_OPTION_NOP: + Cur++; + break; - Option->TSVal = TcpGetUint32 (&Head[Cur + 2]); - Option->TSEcr = TcpGetUint32 (&Head[Cur + 6]); - TCP_SET_FLG (Option->Flag, TCP_OPTION_RCVD_TS); + case TCP_OPTION_EOP: + Cur = TotalLen; + break; - Cur += TCP_OPTION_TS_LEN; - break; + default: + Len = Head[Cur + 1]; - case TCP_OPTION_NOP: - Cur++; - break; + if (((TotalLen - Cur) < Len) || (Len < 2)) { + return -1; + } - case TCP_OPTION_EOP: - Cur = TotalLen; - break; - - default: - Len = Head[Cur + 1]; - - if ((TotalLen - Cur) < Len || Len < 2) { - return -1; - } - - Cur = (UINT8) (Cur + Len); - break; + Cur = (UINT8)(Cur + Len); + break; } - } return 0; diff --git a/NetworkPkg/TcpDxe/TcpOption.h b/NetworkPkg/TcpDxe/TcpOption.h index 20a476eceb..bd7347a71f 100644 --- a/NetworkPkg/TcpDxe/TcpOption.h +++ b/NetworkPkg/TcpDxe/TcpOption.h @@ -28,12 +28,12 @@ // recommend format of timestamp window scale // option for fast process. // -#define TCP_OPTION_TS_FAST ((TCP_OPTION_NOP << 24) | \ +#define TCP_OPTION_TS_FAST ((TCP_OPTION_NOP << 24) |\ (TCP_OPTION_NOP << 16) | \ (TCP_OPTION_TS << 8) | \ (TCP_OPTION_TS_LEN)) -#define TCP_OPTION_WS_FAST ((TCP_OPTION_NOP << 24) | \ +#define TCP_OPTION_WS_FAST ((TCP_OPTION_NOP << 24) | \ (TCP_OPTION_WS << 16) | \ (TCP_OPTION_WS_LEN << 8)) @@ -42,22 +42,22 @@ // // Other misc definitions // -#define TCP_OPTION_RCVD_MSS 0x01 -#define TCP_OPTION_RCVD_WS 0x02 -#define TCP_OPTION_RCVD_TS 0x04 -#define TCP_OPTION_MAX_WS 14 ///< Maximum window scale value -#define TCP_OPTION_MAX_WIN 0xffff ///< Max window size in TCP header +#define TCP_OPTION_RCVD_MSS 0x01 +#define TCP_OPTION_RCVD_WS 0x02 +#define TCP_OPTION_RCVD_TS 0x04 +#define TCP_OPTION_MAX_WS 14 ///< Maximum window scale value +#define TCP_OPTION_MAX_WIN 0xffff ///< Max window size in TCP header /// /// The structure to store the parse option value. /// ParseOption only parses the options, doesn't process them. /// typedef struct _TCP_OPTION { - UINT8 Flag; ///< Flag such as TCP_OPTION_RCVD_MSS - UINT8 WndScale; ///< The WndScale received - UINT16 Mss; ///< The Mss received - UINT32 TSVal; ///< The TSVal field in a timestamp option - UINT32 TSEcr; ///< The TSEcr field in a timestamp option + UINT8 Flag; ///< Flag such as TCP_OPTION_RCVD_MSS + UINT8 WndScale; ///< The WndScale received + UINT16 Mss; ///< The Mss received + UINT32 TSVal; ///< The TSVal field in a timestamp option + UINT32 TSEcr; ///< The TSEcr field in a timestamp option } TCP_OPTION; /** @@ -70,7 +70,7 @@ typedef struct _TCP_OPTION { **/ UINT8 TcpComputeScale ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ); /** @@ -84,8 +84,8 @@ TcpComputeScale ( **/ UINT16 TcpSynBuildOption ( - IN TCP_CB *Tcb, - IN NET_BUF *Nbuf + IN TCP_CB *Tcb, + IN NET_BUF *Nbuf ); /** @@ -99,8 +99,8 @@ TcpSynBuildOption ( **/ UINT16 TcpBuildOption ( - IN TCP_CB *Tcb, - IN NET_BUF *Nbuf + IN TCP_CB *Tcb, + IN NET_BUF *Nbuf ); /** @@ -116,8 +116,8 @@ TcpBuildOption ( **/ INTN TcpParseOption ( - IN TCP_HEAD *Tcp, - IN OUT TCP_OPTION *Option + IN TCP_HEAD *Tcp, + IN OUT TCP_OPTION *Option ); #endif diff --git a/NetworkPkg/TcpDxe/TcpOutput.c b/NetworkPkg/TcpDxe/TcpOutput.c index 50ea9460ad..294c8956fe 100644 --- a/NetworkPkg/TcpDxe/TcpOutput.c +++ b/NetworkPkg/TcpDxe/TcpOutput.c @@ -33,7 +33,7 @@ UINT8 mTcpOutFlag[] = { **/ UINT32 TcpRcvWinOld ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ) { UINT32 OldWin; @@ -41,11 +41,10 @@ TcpRcvWinOld ( OldWin = 0; if (TCP_SEQ_GT (Tcb->RcvWl2 + Tcb->RcvWnd, Tcb->RcvNxt)) { - OldWin = TCP_SUB_SEQ ( - Tcb->RcvWl2 + Tcb->RcvWnd, - Tcb->RcvNxt - ); + Tcb->RcvWl2 + Tcb->RcvWnd, + Tcb->RcvNxt + ); } return OldWin; @@ -61,7 +60,7 @@ TcpRcvWinOld ( **/ UINT32 TcpRcvWinNow ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ) { SOCKET *Sk; @@ -72,11 +71,11 @@ TcpRcvWinNow ( Sk = Tcb->Sk; ASSERT (Sk != NULL); - OldWin = TcpRcvWinOld (Tcb); + OldWin = TcpRcvWinOld (Tcb); - Win = SockGetFreeSpace (Sk, SOCK_RCV_BUF); + Win = SockGetFreeSpace (Sk, SOCK_RCV_BUF); - Increase = 0; + Increase = 0; if (Win > OldWin) { Increase = Win - OldWin; } @@ -87,7 +86,6 @@ TcpRcvWinNow ( // half of the receive buffer. // if ((Increase > Tcb->SndMss) || (2 * Increase >= GET_RCV_BUFFSIZE (Sk))) { - return Win; } @@ -106,8 +104,8 @@ TcpRcvWinNow ( **/ UINT16 TcpComputeWnd ( - IN OUT TCP_CB *Tcb, - IN BOOLEAN Syn + IN OUT TCP_CB *Tcb, + IN BOOLEAN Syn ) { UINT32 Wnd; @@ -116,17 +114,15 @@ TcpComputeWnd ( // RFC requires that initial window not be scaled // if (Syn) { - Wnd = GET_RCV_BUFFSIZE (Tcb->Sk); } else { - - Wnd = TcpRcvWinNow (Tcb); + Wnd = TcpRcvWinNow (Tcb); Tcb->RcvWnd = Wnd; } Wnd = MIN (Wnd >> Tcb->RcvWndScale, 0xffff); - return NTOHS ((UINT16) Wnd); + return NTOHS ((UINT16)Wnd); } /** @@ -139,11 +135,11 @@ TcpComputeWnd ( **/ TCP_SEQNO TcpGetMaxSndNxt ( - IN TCP_CB *Tcb + IN TCP_CB *Tcb ) { - LIST_ENTRY *Entry; - NET_BUF *Nbuf; + LIST_ENTRY *Entry; + NET_BUF *Nbuf; if (IsListEmpty (&Tcb->SndQue)) { return Tcb->SndNxt; @@ -168,8 +164,8 @@ TcpGetMaxSndNxt ( **/ UINT32 TcpDataToSend ( - IN TCP_CB *Tcb, - IN INTN Force + IN TCP_CB *Tcb, + IN INTN Force ) { SOCKET *Sk; @@ -192,7 +188,6 @@ TcpDataToSend ( Limit = Tcb->SndWl2 + Tcb->SndWnd; if (TCP_SEQ_GT (Limit, Tcb->SndUna + Tcb->CWnd)) { - Limit = Tcb->SndUna + Tcb->CWnd; } @@ -206,19 +201,19 @@ TcpDataToSend ( // buffer. The later can be non-zero if the peer shrinks // its advertised window. // - Left = GET_SND_DATASIZE (Sk) + TCP_SUB_SEQ (TcpGetMaxSndNxt (Tcb), Tcb->SndNxt); + Left = GET_SND_DATASIZE (Sk) + TCP_SUB_SEQ (TcpGetMaxSndNxt (Tcb), Tcb->SndNxt); - Len = MIN (Win, Left); + Len = MIN (Win, Left); if (Len > Tcb->SndMss) { Len = Tcb->SndMss; } - if ((Force != 0)|| (Len == 0 && Left == 0)) { + if ((Force != 0) || ((Len == 0) && (Left == 0))) { return Len; } - if (Len == 0 && Left != 0) { + if ((Len == 0) && (Left != 0)) { goto SetPersistTimer; } @@ -231,14 +226,13 @@ TcpDataToSend ( // expecting an ACK, or the Nagle algorithm is disabled. // if ((Len == Tcb->SndMss) || (2 * Len >= Tcb->SndWndMax)) { - return Len; } if ((Len == Left) && ((Tcb->SndNxt == Tcb->SndUna) || TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_NAGLE)) - ) { - + ) + { return Len; } @@ -248,11 +242,10 @@ TcpDataToSend ( // SetPersistTimer: if (!TCP_TIMER_ON (Tcb->EnabledTimer, TCP_TIMER_REXMIT)) { - DEBUG ( (DEBUG_WARN, - "TcpDataToSend: enter persistent state for TCB %p\n", - Tcb) + "TcpDataToSend: enter persistent state for TCB %p\n", + Tcb) ); if (!Tcb->ProbeTimerOn) { @@ -276,8 +269,8 @@ SetPersistTimer: **/ INTN TcpTransmitSegment ( - IN OUT TCP_CB *Tcb, - IN NET_BUF *Nbuf + IN OUT TCP_CB *Tcb, + IN NET_BUF *Nbuf ) { UINT16 Len; @@ -294,14 +287,12 @@ TcpTransmitSegment ( DataLen = Nbuf->TotalSize; - Seg = TCPSEG_NETBUF (Nbuf); - Syn = TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN); + Seg = TCPSEG_NETBUF (Nbuf); + Syn = TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN); if (Syn) { - Len = TcpSynBuildOption (Tcb, Nbuf); } else { - Len = TcpBuildOption (Tcb, Nbuf); } @@ -309,24 +300,24 @@ TcpTransmitSegment ( Len += sizeof (TCP_HEAD); - Head = (TCP_HEAD *) NetbufAllocSpace ( - Nbuf, - sizeof (TCP_HEAD), - NET_BUF_HEAD - ); + Head = (TCP_HEAD *)NetbufAllocSpace ( + Nbuf, + sizeof (TCP_HEAD), + NET_BUF_HEAD + ); ASSERT (Head != NULL); - Nbuf->Tcp = Head; + Nbuf->Tcp = Head; - Head->SrcPort = Tcb->LocalEnd.Port; - Head->DstPort = Tcb->RemoteEnd.Port; - Head->Seq = NTOHL (Seg->Seq); - Head->Ack = NTOHL (Tcb->RcvNxt); - Head->HeadLen = (UINT8) (Len >> 2); - Head->Res = 0; - Head->Wnd = TcpComputeWnd (Tcb, Syn); - Head->Checksum = 0; + Head->SrcPort = Tcb->LocalEnd.Port; + Head->DstPort = Tcb->RemoteEnd.Port; + Head->Seq = NTOHL (Seg->Seq); + Head->Ack = NTOHL (Tcb->RcvNxt); + Head->HeadLen = (UINT8)(Len >> 2); + Head->Res = 0; + Head->Wnd = TcpComputeWnd (Tcb, Syn); + Head->Checksum = 0; // // Check whether to set the PSH flag. @@ -336,13 +327,11 @@ TcpTransmitSegment ( if (DataLen != 0) { if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_SND_PSH) && TCP_SEQ_BETWEEN (Seg->Seq, Tcb->SndPsh, Seg->End) - ) { - + ) + { TCP_SET_FLG (Seg->Flag, TCP_FLG_PSH); TCP_CLEAR_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_PSH); - } else if ((Seg->End == Tcb->SndNxt) && (GET_SND_DATASIZE (Tcb->Sk) == 0)) { - TCP_SET_FLG (Seg->Flag, TCP_FLG_PSH); } } @@ -353,25 +342,24 @@ TcpTransmitSegment ( TCP_CLEAR_FLG (Seg->Flag, TCP_FLG_URG); if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_SND_URG) && TCP_SEQ_LEQ (Seg->Seq, Tcb->SndUp)) { - TCP_SET_FLG (Seg->Flag, TCP_FLG_URG); if (TCP_SEQ_LT (Tcb->SndUp, Seg->End)) { - - Seg->Urg = (UINT16) TCP_SUB_SEQ (Tcb->SndUp, Seg->Seq); + Seg->Urg = (UINT16)TCP_SUB_SEQ (Tcb->SndUp, Seg->Seq); } else { - - Seg->Urg = (UINT16) MIN ( - TCP_SUB_SEQ (Tcb->SndUp, - Seg->Seq), - 0xffff - ); + Seg->Urg = (UINT16)MIN ( + TCP_SUB_SEQ ( + Tcb->SndUp, + Seg->Seq + ), + 0xffff + ); } } - Head->Flag = Seg->Flag; - Head->Urg = NTOHS (Seg->Urg); - Head->Checksum = TcpChecksum (Nbuf, Tcb->HeadSum); + Head->Flag = Seg->Flag; + Head->Urg = NTOHS (Seg->Urg); + Head->Checksum = TcpChecksum (Nbuf, Tcb->HeadSum); // // Update the TCP session's control information. @@ -401,38 +389,37 @@ TcpTransmitSegment ( **/ NET_BUF * TcpGetSegmentSndQue ( - IN TCP_CB *Tcb, - IN TCP_SEQNO Seq, - IN UINT32 Len + IN TCP_CB *Tcb, + IN TCP_SEQNO Seq, + IN UINT32 Len ) { - LIST_ENTRY *Head; - LIST_ENTRY *Cur; - NET_BUF *Node; - TCP_SEG *Seg; - NET_BUF *Nbuf; - TCP_SEQNO End; - UINT8 *Data; - UINT8 Flag; - INT32 Offset; - INT32 CopyLen; + LIST_ENTRY *Head; + LIST_ENTRY *Cur; + NET_BUF *Node; + TCP_SEG *Seg; + NET_BUF *Nbuf; + TCP_SEQNO End; + UINT8 *Data; + UINT8 Flag; + INT32 Offset; + INT32 CopyLen; ASSERT ((Tcb != NULL) && TCP_SEQ_LEQ (Seq, Tcb->SndNxt) && (Len > 0)); // // Find the segment that contains the Seq. // - Head = &Tcb->SndQue; + Head = &Tcb->SndQue; - Node = NULL; - Seg = NULL; + Node = NULL; + Seg = NULL; NET_LIST_FOR_EACH (Cur, Head) { - Node = NET_LIST_USER_STRUCT (Cur, NET_BUF, List); - Seg = TCPSEG_NETBUF (Node); + Node = NET_LIST_USER_STRUCT (Cur, NET_BUF, List); + Seg = TCPSEG_NETBUF (Node); if (TCP_SEQ_LT (Seq, Seg->End) && TCP_SEQ_LEQ (Seg->Seq, Seq)) { - break; } } @@ -448,8 +435,8 @@ TcpGetSegmentSndQue ( if ((Seg->Seq == Seq) && TCP_SEQ_LEQ (Seg->End, Seg->Seq + Len) && !NET_BUF_SHARED (Node) - ) { - + ) + { NET_GET_REF (Node); return Node; } @@ -465,8 +452,8 @@ TcpGetSegmentSndQue ( NetbufReserve (Nbuf, TCP_MAX_HEAD); - Flag = Seg->Flag; - End = Seg->End; + Flag = Seg->Flag; + End = Seg->End; if (TCP_SEQ_LT (Seq + Len, Seg->End)) { End = Seq + Len; @@ -482,13 +469,10 @@ TcpGetSegmentSndQue ( // one byte less. // if (TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN)) { - if (TCP_SEQ_LT (Seg->Seq, Seq)) { - TCP_CLEAR_FLG (Flag, TCP_FLG_SYN); Offset--; } else { - CopyLen--; } } @@ -498,12 +482,9 @@ TcpGetSegmentSndQue ( // and if it is out of the range, clear the flag. // if (TCP_FLG_ON (Seg->Flag, TCP_FLG_FIN)) { - if (Seg->End == End) { - CopyLen--; } else { - TCP_CLEAR_FLG (Flag, TCP_FLG_FIN); } } @@ -517,16 +498,16 @@ TcpGetSegmentSndQue ( Data = NetbufAllocSpace (Nbuf, CopyLen, NET_BUF_TAIL); ASSERT (Data != NULL); - if ((INT32) NetbufCopy (Node, Offset, CopyLen, Data) != CopyLen) { + if ((INT32)NetbufCopy (Node, Offset, CopyLen, Data) != CopyLen) { goto OnError; } } CopyMem (TCPSEG_NETBUF (Nbuf), Seg, sizeof (TCP_SEG)); - TCPSEG_NETBUF (Nbuf)->Seq = Seq; - TCPSEG_NETBUF (Nbuf)->End = End; - TCPSEG_NETBUF (Nbuf)->Flag = Flag; + TCPSEG_NETBUF (Nbuf)->Seq = Seq; + TCPSEG_NETBUF (Nbuf)->End = End; + TCPSEG_NETBUF (Nbuf)->Flag = Flag; return Nbuf; @@ -547,14 +528,14 @@ OnError: **/ NET_BUF * TcpGetSegmentSock ( - IN TCP_CB *Tcb, - IN TCP_SEQNO Seq, - IN UINT32 Len + IN TCP_CB *Tcb, + IN TCP_SEQNO Seq, + IN UINT32 Len ) { - NET_BUF *Nbuf; - UINT8 *Data; - UINT32 DataGet; + NET_BUF *Nbuf; + UINT8 *Data; + UINT32 DataGet; ASSERT ((Tcb != NULL) && (Tcb->Sk != NULL)); @@ -563,8 +544,8 @@ TcpGetSegmentSock ( if (Nbuf == NULL) { DEBUG ( (DEBUG_ERROR, - "TcpGetSegmentSock: failed to allocate a netbuf for TCB %p\n", - Tcb) + "TcpGetSegmentSock: failed to allocate a netbuf for TCB %p\n", + Tcb) ); return NULL; @@ -592,7 +573,6 @@ TcpGetSegmentSock ( InsertTailList (&(Tcb->SndQue), &(Nbuf->List)); if (DataGet != 0) { - SockDataSent (Tcb->Sk, DataGet); } @@ -612,12 +592,12 @@ TcpGetSegmentSock ( **/ NET_BUF * TcpGetSegment ( - IN TCP_CB *Tcb, - IN TCP_SEQNO Seq, - IN UINT32 Len + IN TCP_CB *Tcb, + IN TCP_SEQNO Seq, + IN UINT32 Len ) { - NET_BUF *Nbuf; + NET_BUF *Nbuf; ASSERT (Tcb != NULL); @@ -625,10 +605,8 @@ TcpGetSegment ( // Compare the SndNxt with the max sequence number sent. // if ((Len != 0) && TCP_SEQ_LT (Seq, TcpGetMaxSndNxt (Tcb))) { - Nbuf = TcpGetSegmentSndQue (Tcb, Seq, Len); } else { - Nbuf = TcpGetSegmentSock (Tcb, Seq, Len); } @@ -652,12 +630,12 @@ TcpGetSegment ( **/ INTN TcpRetransmit ( - IN TCP_CB *Tcb, - IN TCP_SEQNO Seq + IN TCP_CB *Tcb, + IN TCP_SEQNO Seq ) { - NET_BUF *Nbuf; - UINT32 Len; + NET_BUF *Nbuf; + UINT32 Len; // // Compute the maximum length of retransmission. It is @@ -675,22 +653,21 @@ TcpRetransmit ( // as the original segment was in window when it was sent. // if ((Tcb->SndWndScale != 0) && - (TCP_SEQ_GT (Seq, Tcb->RetxmitSeqMax) || TCP_SEQ_BETWEEN (Tcb->SndWl2 + Tcb->SndWnd, Seq, Tcb->SndWl2 + Tcb->SndWnd + (1 << Tcb->SndWndScale)))) { + (TCP_SEQ_GT (Seq, Tcb->RetxmitSeqMax) || TCP_SEQ_BETWEEN (Tcb->SndWl2 + Tcb->SndWnd, Seq, Tcb->SndWl2 + Tcb->SndWnd + (1 << Tcb->SndWndScale)))) + { Len = TCP_SUB_SEQ (Tcb->SndNxt, Seq); DEBUG ( (DEBUG_WARN, - "TcpRetransmit: retransmission without regard to the receiver window for TCB %p\n", - Tcb) + "TcpRetransmit: retransmission without regard to the receiver window for TCB %p\n", + Tcb) ); - } else if (TCP_SEQ_GEQ (Tcb->SndWl2 + Tcb->SndWnd, Seq)) { Len = TCP_SUB_SEQ (Tcb->SndWl2 + Tcb->SndWnd, Seq); - } else { DEBUG ( (DEBUG_WARN, - "TcpRetransmit: retransmission cancelled because send window too small for TCB %p\n", - Tcb) + "TcpRetransmit: retransmission cancelled because send window too small for TCB %p\n", + Tcb) ); return 0; @@ -746,16 +723,17 @@ OnError: **/ INTN TcpCheckSndQue ( - IN LIST_ENTRY *Head + IN LIST_ENTRY *Head ) { - LIST_ENTRY *Entry; - NET_BUF *Nbuf; - TCP_SEQNO Seq; + LIST_ENTRY *Entry; + NET_BUF *Nbuf; + TCP_SEQNO Seq; if (IsListEmpty (Head)) { return 1; } + // // Initialize the Seq. // @@ -796,24 +774,23 @@ TcpCheckSndQue ( **/ INTN TcpToSendData ( - IN OUT TCP_CB *Tcb, - IN INTN Force + IN OUT TCP_CB *Tcb, + IN INTN Force ) { - UINT32 Len; - INTN Sent; - UINT8 Flag; - NET_BUF *Nbuf; - TCP_SEG *Seg; - TCP_SEQNO Seq; - TCP_SEQNO End; + UINT32 Len; + INTN Sent; + UINT8 Flag; + NET_BUF *Nbuf; + TCP_SEG *Seg; + TCP_SEQNO Seq; + TCP_SEQNO End; ASSERT ((Tcb != NULL) && (Tcb->Sk != NULL) && (Tcb->State != TCP_LISTEN)); Sent = 0; if ((Tcb->State == TCP_CLOSED) || TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_FIN_SENT)) { - return 0; } @@ -821,14 +798,13 @@ TcpToSendData ( // // Compute how much data can be sent // - Len = TcpDataToSend (Tcb, Force); - Seq = Tcb->SndNxt; + Len = TcpDataToSend (Tcb, Force); + Seq = Tcb->SndNxt; ASSERT ((Tcb->State) < (ARRAY_SIZE (mTcpOutFlag))); - Flag = mTcpOutFlag[Tcb->State]; + Flag = mTcpOutFlag[Tcb->State]; if ((Flag & TCP_FLG_SYN) != 0) { - Seq = Tcb->Iss; Len = 0; } @@ -846,8 +822,8 @@ TcpToSendData ( if (Nbuf == NULL) { DEBUG ( (DEBUG_ERROR, - "TcpToSendData: failed to get a segment for TCB %p\n", - Tcb) + "TcpToSendData: failed to get a segment for TCB %p\n", + Tcb) ); goto OnError; @@ -872,12 +848,13 @@ TcpToSendData ( if ((TcpGetMaxSndNxt (Tcb) == Tcb->SndNxt) && (GET_SND_DATASIZE (Tcb->Sk) == 0) && TCP_SEQ_LT (End + 1, Tcb->SndWnd + Tcb->SndWl2) - ) { + ) + { DEBUG ( (DEBUG_NET, - "TcpToSendData: send FIN to peer for TCB %p in state %s\n", - Tcb, - mTcpStateName[Tcb->State]) + "TcpToSendData: send FIN to peer for TCB %p in state %s\n", + Tcb, + mTcpStateName[Tcb->State]) ); End++; @@ -890,11 +867,11 @@ TcpToSendData ( Seg->End = End; Seg->Flag = Flag; - if (TcpVerifySegment (Nbuf) == 0 || TcpCheckSndQue (&Tcb->SndQue) == 0) { + if ((TcpVerifySegment (Nbuf) == 0) || (TcpCheckSndQue (&Tcb->SndQue) == 0)) { DEBUG ( (DEBUG_ERROR, - "TcpToSendData: discard a broken segment for TCB %p\n", - Tcb) + "TcpToSendData: discard a broken segment for TCB %p\n", + Tcb) ); goto OnError; } @@ -905,8 +882,8 @@ TcpToSendData ( if (Seg->End == Seg->Seq) { DEBUG ( (DEBUG_WARN, - "TcpToSendData: created a empty segment for TCB %p, free it now\n", - Tcb) + "TcpToSendData: created a empty segment for TCB %p, free it now\n", + Tcb) ); goto OnError; @@ -916,7 +893,7 @@ TcpToSendData ( NetbufTrim (Nbuf, (Nbuf->Tcp->HeadLen << 2), NET_BUF_HEAD); Nbuf->Tcp = NULL; - if ((Flag & TCP_FLG_FIN) != 0) { + if ((Flag & TCP_FLG_FIN) != 0) { TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_FIN_SENT); } @@ -957,19 +934,17 @@ TcpToSendData ( // Karn's algorithm requires not to update RTT when in loss. // if ((Tcb->CongestState == TCP_CONGEST_OPEN) && !TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_RTT_ON)) { - DEBUG ( (DEBUG_NET, - "TcpToSendData: set RTT measure sequence %d for TCB %p\n", - Seq, - Tcb) + "TcpToSendData: set RTT measure sequence %d for TCB %p\n", + Seq, + Tcb) ); TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RTT_ON); Tcb->RttSeq = Seq; Tcb->RttMeasure = 0; } - } while (Len == Tcb->SndMss); return Sent; @@ -990,11 +965,11 @@ OnError: **/ VOID TcpSendAck ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { - NET_BUF *Nbuf; - TCP_SEG *Seg; + NET_BUF *Nbuf; + TCP_SEG *Seg; Nbuf = NetbufAlloc (TCP_MAX_HEAD); @@ -1028,11 +1003,11 @@ TcpSendAck ( **/ INTN TcpSendZeroProbe ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { - NET_BUF *Nbuf; - TCP_SEG *Seg; + NET_BUF *Nbuf; + TCP_SEG *Seg; INTN Result; Nbuf = NetbufAlloc (TCP_MAX_HEAD); @@ -1052,7 +1027,7 @@ TcpSendZeroProbe ( Seg->End = Tcb->SndNxt - 1; Seg->Flag = TCP_FLG_ACK; - Result = TcpTransmitSegment (Tcb, Nbuf); + Result = TcpTransmitSegment (Tcb, Nbuf); NetbufFree (Nbuf); return Result; @@ -1066,10 +1041,10 @@ TcpSendZeroProbe ( **/ VOID TcpToSendAck ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { - UINT32 TcpNow; + UINT32 TcpNow; // // Generally, TCP should send a delayed ACK unless: @@ -1091,8 +1066,8 @@ TcpToSendAck ( DEBUG ( (DEBUG_NET, - "TcpToSendAck: scheduled a delayed ACK for TCB %p\n", - Tcb) + "TcpToSendAck: scheduled a delayed ACK for TCB %p\n", + Tcb) ); // @@ -1143,7 +1118,7 @@ TcpSendReset ( return -1; } - Nhead = (TCP_HEAD *) NetbufAllocSpace ( + Nhead = (TCP_HEAD *)NetbufAllocSpace ( Nbuf, sizeof (TCP_HEAD), NET_BUF_TAIL @@ -1159,25 +1134,23 @@ TcpSendReset ( // is associated with it, otherwise derive from the Tcb. // if (Tcb == NULL) { - if (TCP_FLG_ON (Head->Flag, TCP_FLG_ACK)) { - Nhead->Seq = Head->Ack; - Nhead->Ack = 0; + Nhead->Seq = Head->Ack; + Nhead->Ack = 0; } else { Nhead->Seq = 0; TCP_SET_FLG (Nhead->Flag, TCP_FLG_ACK); Nhead->Ack = HTONL (NTOHL (Head->Seq) + Len); } } else { - - Nhead->Seq = HTONL (Tcb->SndNxt); - Nhead->Ack = HTONL (Tcb->RcvNxt); + Nhead->Seq = HTONL (Tcb->SndNxt); + Nhead->Ack = HTONL (Tcb->RcvNxt); TCP_SET_FLG (Nhead->Flag, TCP_FLG_ACK); } Nhead->SrcPort = Head->DstPort; Nhead->DstPort = Head->SrcPort; - Nhead->HeadLen = (UINT8) (sizeof (TCP_HEAD) >> 2); + Nhead->HeadLen = (UINT8)(sizeof (TCP_HEAD) >> 2); Nhead->Res = 0; Nhead->Wnd = HTONS (0xFFFF); Nhead->Checksum = 0; @@ -1209,7 +1182,7 @@ TcpSendReset ( **/ INTN TcpVerifySegment ( - IN NET_BUF *Nbuf + IN NET_BUF *Nbuf ) { TCP_HEAD *Head; @@ -1222,9 +1195,9 @@ TcpVerifySegment ( NET_CHECK_SIGNATURE (Nbuf, NET_BUF_SIGNATURE); - Seg = TCPSEG_NETBUF (Nbuf); - Len = Nbuf->TotalSize; - Head = Nbuf->Tcp; + Seg = TCPSEG_NETBUF (Nbuf); + Len = Nbuf->TotalSize; + Head = Nbuf->Tcp; if (Head != NULL) { if (Head->Flag != Seg->Flag) { diff --git a/NetworkPkg/TcpDxe/TcpProto.h b/NetworkPkg/TcpDxe/TcpProto.h index 53cfd48026..81f6a87535 100644 --- a/NetworkPkg/TcpDxe/TcpProto.h +++ b/NetworkPkg/TcpDxe/TcpProto.h @@ -26,109 +26,107 @@ #define TCP_CLOSE_WAIT 9 #define TCP_LAST_ACK 10 - /// /// Flags in the TCP header /// -#define TCP_FLG_FIN 0x01 -#define TCP_FLG_SYN 0x02 -#define TCP_FLG_RST 0x04 -#define TCP_FLG_PSH 0x08 -#define TCP_FLG_ACK 0x10 -#define TCP_FLG_URG 0x20 - - // - // mask for all the flags - // -#define TCP_FLG_FLAG 0x3F +#define TCP_FLG_FIN 0x01 +#define TCP_FLG_SYN 0x02 +#define TCP_FLG_RST 0x04 +#define TCP_FLG_PSH 0x08 +#define TCP_FLG_ACK 0x10 +#define TCP_FLG_URG 0x20 +// +// mask for all the flags +// +#define TCP_FLG_FLAG 0x3F -#define TCP_CONNECT_REFUSED (-1) ///< TCP error status -#define TCP_CONNECT_RESET (-2) ///< TCP error status -#define TCP_CONNECT_CLOSED (-3) ///< TCP error status +#define TCP_CONNECT_REFUSED (-1) ///< TCP error status +#define TCP_CONNECT_RESET (-2) ///< TCP error status +#define TCP_CONNECT_CLOSED (-3) ///< TCP error status // // Current congestion status as suggested by RFC3782. // -#define TCP_CONGEST_RECOVER 1 ///< During the NewReno fast recovery. -#define TCP_CONGEST_LOSS 2 ///< Retxmit because of retxmit time out. -#define TCP_CONGEST_OPEN 3 ///< TCP is opening its congestion window. +#define TCP_CONGEST_RECOVER 1 ///< During the NewReno fast recovery. +#define TCP_CONGEST_LOSS 2 ///< Retxmit because of retxmit time out. +#define TCP_CONGEST_OPEN 3 ///< TCP is opening its congestion window. // // TCP control flags // -#define TCP_CTRL_NO_NAGLE 0x0001 ///< Disable Nagle algorithm -#define TCP_CTRL_NO_KEEPALIVE 0x0002 ///< Disable keepalive timer. -#define TCP_CTRL_NO_WS 0x0004 ///< Disable window scale option. -#define TCP_CTRL_RCVD_WS 0x0008 ///< Received a wnd scale option in syn. -#define TCP_CTRL_NO_TS 0x0010 ///< Disable Timestamp option. -#define TCP_CTRL_RCVD_TS 0x0020 ///< Received a Timestamp option in syn. -#define TCP_CTRL_SND_TS 0x0040 ///< Send Timestamp option to remote. -#define TCP_CTRL_SND_URG 0x0080 ///< In urgent send mode. -#define TCP_CTRL_RCVD_URG 0x0100 ///< In urgent receive mode. -#define TCP_CTRL_SND_PSH 0x0200 ///< In PUSH send mode. -#define TCP_CTRL_FIN_SENT 0x0400 ///< FIN is sent. -#define TCP_CTRL_FIN_ACKED 0x0800 ///< FIN is ACKed. -#define TCP_CTRL_TIMER_ON 0x1000 ///< At least one of the timer is on. -#define TCP_CTRL_RTT_ON 0x2000 ///< The RTT measurement is on. -#define TCP_CTRL_ACK_NOW 0x4000 ///< Send the ACK now, don't delay. +#define TCP_CTRL_NO_NAGLE 0x0001 ///< Disable Nagle algorithm +#define TCP_CTRL_NO_KEEPALIVE 0x0002 ///< Disable keepalive timer. +#define TCP_CTRL_NO_WS 0x0004 ///< Disable window scale option. +#define TCP_CTRL_RCVD_WS 0x0008 ///< Received a wnd scale option in syn. +#define TCP_CTRL_NO_TS 0x0010 ///< Disable Timestamp option. +#define TCP_CTRL_RCVD_TS 0x0020 ///< Received a Timestamp option in syn. +#define TCP_CTRL_SND_TS 0x0040 ///< Send Timestamp option to remote. +#define TCP_CTRL_SND_URG 0x0080 ///< In urgent send mode. +#define TCP_CTRL_RCVD_URG 0x0100 ///< In urgent receive mode. +#define TCP_CTRL_SND_PSH 0x0200 ///< In PUSH send mode. +#define TCP_CTRL_FIN_SENT 0x0400 ///< FIN is sent. +#define TCP_CTRL_FIN_ACKED 0x0800 ///< FIN is ACKed. +#define TCP_CTRL_TIMER_ON 0x1000 ///< At least one of the timer is on. +#define TCP_CTRL_RTT_ON 0x2000 ///< The RTT measurement is on. +#define TCP_CTRL_ACK_NOW 0x4000 ///< Send the ACK now, don't delay. // // Timer related values // -#define TCP_TIMER_CONNECT 0 ///< Connection establishment timer. -#define TCP_TIMER_REXMIT 1 ///< Retransmit timer. -#define TCP_TIMER_PROBE 2 ///< Window probe timer. -#define TCP_TIMER_KEEPALIVE 3 ///< Keepalive timer. -#define TCP_TIMER_FINWAIT2 4 ///< FIN_WAIT_2 timer. -#define TCP_TIMER_2MSL 5 ///< TIME_WAIT timer. -#define TCP_TIMER_NUMBER 6 ///< The total number of the TCP timer. -#define TCP_TICK 200 ///< Every TCP tick is 200ms. -#define TCP_TICK_HZ 5 ///< The frequence of TCP tick. -#define TCP_RTT_SHIFT 3 ///< SRTT & RTTVAR scaled by 8. -#define TCP_RTO_MIN TCP_TICK_HZ ///< The minimum value of RTO. -#define TCP_RTO_MAX (TCP_TICK_HZ * 60) ///< The maximum value of RTO. -#define TCP_FOLD_RTT 4 ///< Timeout threshold to fold RTT. +#define TCP_TIMER_CONNECT 0 ///< Connection establishment timer. +#define TCP_TIMER_REXMIT 1 ///< Retransmit timer. +#define TCP_TIMER_PROBE 2 ///< Window probe timer. +#define TCP_TIMER_KEEPALIVE 3 ///< Keepalive timer. +#define TCP_TIMER_FINWAIT2 4 ///< FIN_WAIT_2 timer. +#define TCP_TIMER_2MSL 5 ///< TIME_WAIT timer. +#define TCP_TIMER_NUMBER 6 ///< The total number of the TCP timer. +#define TCP_TICK 200 ///< Every TCP tick is 200ms. +#define TCP_TICK_HZ 5 ///< The frequence of TCP tick. +#define TCP_RTT_SHIFT 3 ///< SRTT & RTTVAR scaled by 8. +#define TCP_RTO_MIN TCP_TICK_HZ ///< The minimum value of RTO. +#define TCP_RTO_MAX (TCP_TICK_HZ * 60) ///< The maximum value of RTO. +#define TCP_FOLD_RTT 4 ///< Timeout threshold to fold RTT. // // Default values for some timers // -#define TCP_MAX_LOSS 12 ///< Default max times to retxmit. -#define TCP_KEEPALIVE_IDLE_MIN (TCP_TICK_HZ * 60 * 60 * 2) ///< First keepalive. -#define TCP_KEEPALIVE_PERIOD (TCP_TICK_HZ * 60) -#define TCP_MAX_KEEPALIVE 8 -#define TCP_FIN_WAIT2_TIME (2 * TCP_TICK_HZ) -#define TCP_TIME_WAIT_TIME (2 * TCP_TICK_HZ) -#define TCP_PAWS_24DAY (24 * 24 * 60 * 60 * TCP_TICK_HZ) -#define TCP_CONNECT_TIME (75 * TCP_TICK_HZ) +#define TCP_MAX_LOSS 12 ///< Default max times to retxmit. +#define TCP_KEEPALIVE_IDLE_MIN (TCP_TICK_HZ * 60 * 60 * 2) ///< First keepalive. +#define TCP_KEEPALIVE_PERIOD (TCP_TICK_HZ * 60) +#define TCP_MAX_KEEPALIVE 8 +#define TCP_FIN_WAIT2_TIME (2 * TCP_TICK_HZ) +#define TCP_TIME_WAIT_TIME (2 * TCP_TICK_HZ) +#define TCP_PAWS_24DAY (24 * 24 * 60 * 60 * TCP_TICK_HZ) +#define TCP_CONNECT_TIME (75 * TCP_TICK_HZ) // // The header space to be reserved before TCP data to accommodate: // 60byte IP head + 60byte TCP head + link layer head // -#define TCP_MAX_HEAD 192 +#define TCP_MAX_HEAD 192 // // Value ranges for some control option // -#define TCP_RCV_BUF_SIZE (2 * 1024 * 1024) -#define TCP_RCV_BUF_SIZE_MIN (8 * 1024) -#define TCP_SND_BUF_SIZE (2 * 1024 * 1024) -#define TCP_SND_BUF_SIZE_MIN (8 * 1024) -#define TCP_BACKLOG 10 -#define TCP_BACKLOG_MIN 5 -#define TCP_MAX_LOSS_MIN 6 -#define TCP_CONNECT_TIME_MIN (60 * TCP_TICK_HZ) -#define TCP_MAX_KEEPALIVE_MIN 4 -#define TCP_KEEPALIVE_IDLE_MAX (TCP_TICK_HZ * 60 * 60 * 4) -#define TCP_KEEPALIVE_PERIOD_MIN (TCP_TICK_HZ * 30) -#define TCP_FIN_WAIT2_TIME_MAX (4 * TCP_TICK_HZ) -#define TCP_TIME_WAIT_TIME_MAX (60 * TCP_TICK_HZ) +#define TCP_RCV_BUF_SIZE (2 * 1024 * 1024) +#define TCP_RCV_BUF_SIZE_MIN (8 * 1024) +#define TCP_SND_BUF_SIZE (2 * 1024 * 1024) +#define TCP_SND_BUF_SIZE_MIN (8 * 1024) +#define TCP_BACKLOG 10 +#define TCP_BACKLOG_MIN 5 +#define TCP_MAX_LOSS_MIN 6 +#define TCP_CONNECT_TIME_MIN (60 * TCP_TICK_HZ) +#define TCP_MAX_KEEPALIVE_MIN 4 +#define TCP_KEEPALIVE_IDLE_MAX (TCP_TICK_HZ * 60 * 60 * 4) +#define TCP_KEEPALIVE_PERIOD_MIN (TCP_TICK_HZ * 30) +#define TCP_FIN_WAIT2_TIME_MAX (4 * TCP_TICK_HZ) +#define TCP_TIME_WAIT_TIME_MAX (60 * TCP_TICK_HZ) /// /// TCP_CONNECTED: both ends have synchronized their ISN. /// -#define TCP_CONNECTED(state) ((state) > TCP_SYN_RCVD) +#define TCP_CONNECTED(state) ((state) > TCP_SYN_RCVD) #define TCP_FIN_RCVD(State) \ ( \ @@ -150,30 +148,30 @@ // // Get the TCP_SEG point from a net buffer's ProtoData. // -#define TCPSEG_NETBUF(NBuf) ((TCP_SEG *) ((NBuf)->ProtoData)) +#define TCPSEG_NETBUF(NBuf) ((TCP_SEG *) ((NBuf)->ProtoData)) // // Macros to compare sequence no // -#define TCP_SEQ_LT(SeqA, SeqB) ((INT32) ((SeqA) - (SeqB)) < 0) -#define TCP_SEQ_LEQ(SeqA, SeqB) ((INT32) ((SeqA) - (SeqB)) <= 0) -#define TCP_SEQ_GT(SeqA, SeqB) ((INT32) ((SeqB) - (SeqA)) < 0) -#define TCP_SEQ_GEQ(SeqA, SeqB) ((INT32) ((SeqB) - (SeqA)) <= 0) +#define TCP_SEQ_LT(SeqA, SeqB) ((INT32) ((SeqA) - (SeqB)) < 0) +#define TCP_SEQ_LEQ(SeqA, SeqB) ((INT32) ((SeqA) - (SeqB)) <= 0) +#define TCP_SEQ_GT(SeqA, SeqB) ((INT32) ((SeqB) - (SeqA)) < 0) +#define TCP_SEQ_GEQ(SeqA, SeqB) ((INT32) ((SeqB) - (SeqA)) <= 0) // // TCP_SEQ_BETWEEN return whether b <= m <= e // -#define TCP_SEQ_BETWEEN(b, m, e) ((e) - (b) >= (m) - (b)) +#define TCP_SEQ_BETWEEN(b, m, e) ((e) - (b) >= (m) - (b)) // // TCP_SUB_SEQ returns Seq1 - Seq2. Make sure Seq1 >= Seq2 // -#define TCP_SUB_SEQ(Seq1, Seq2) ((UINT32) ((Seq1) - (Seq2))) +#define TCP_SUB_SEQ(Seq1, Seq2) ((UINT32) ((Seq1) - (Seq2))) // // Check whether Flag is on // -#define TCP_FLG_ON(Value, Flag) ((BOOLEAN) (((Value) & (Flag)) != 0)) +#define TCP_FLG_ON(Value, Flag) ((BOOLEAN) (((Value) & (Flag)) != 0)) // // Set and Clear operation on a Flag // @@ -200,145 +198,143 @@ #define TCP_SET_TIMER(Flag, Timer) ((Flag) = (UINT16) ((Flag) | (1 << (Timer)))) #define TCP_CLEAR_TIMER(Flag, Timer) ((Flag) = (UINT16) ((Flag) & (~(1 << (Timer))))) +#define TCP_TIME_LT(Ta, Tb) ((INT32) ((Ta) - (Tb)) < 0) +#define TCP_TIME_LEQ(Ta, Tb) ((INT32) ((Ta) - (Tb)) <= 0) +#define TCP_SUB_TIME(Ta, Tb) ((UINT32) ((Ta) - (Tb))) -#define TCP_TIME_LT(Ta, Tb) ((INT32) ((Ta) - (Tb)) < 0) -#define TCP_TIME_LEQ(Ta, Tb) ((INT32) ((Ta) - (Tb)) <= 0) -#define TCP_SUB_TIME(Ta, Tb) ((UINT32) ((Ta) - (Tb))) - -#define TCP_MAX_WIN 0xFFFFU +#define TCP_MAX_WIN 0xFFFFU /// /// TCP segmentation data. /// typedef struct _TCP_SEG { - TCP_SEQNO Seq; ///< Starting sequence number. - TCP_SEQNO End; ///< The sequence of the last byte + 1, include SYN/FIN. End-Seq = SEG.LEN. - TCP_SEQNO Ack; ///< ACK field in the segment. - UINT8 Flag; ///< TCP header flags. - UINT16 Urg; ///< Valid if URG flag is set. - UINT32 Wnd; ///< TCP window size field. + TCP_SEQNO Seq; ///< Starting sequence number. + TCP_SEQNO End; ///< The sequence of the last byte + 1, include SYN/FIN. End-Seq = SEG.LEN. + TCP_SEQNO Ack; ///< ACK field in the segment. + UINT8 Flag; ///< TCP header flags. + UINT16 Urg; ///< Valid if URG flag is set. + UINT32 Wnd; ///< TCP window size field. } TCP_SEG; /// /// Network endpoint, IP plus Port structure. /// typedef struct _TCP_PEER { - EFI_IP_ADDRESS Ip; ///< IP address, in network byte order. - TCP_PORTNO Port; ///< Port number, in network byte order. + EFI_IP_ADDRESS Ip; ///< IP address, in network byte order. + TCP_PORTNO Port; ///< Port number, in network byte order. } TCP_PEER; -typedef struct _TCP_CONTROL_BLOCK TCP_CB; +typedef struct _TCP_CONTROL_BLOCK TCP_CB; /// /// TCP control block: it includes various states. /// struct _TCP_CONTROL_BLOCK { - LIST_ENTRY List; ///< Back and forward link entry - TCP_CB *Parent; ///< The parent TCP_CB structure + LIST_ENTRY List; ///< Back and forward link entry + TCP_CB *Parent; ///< The parent TCP_CB structure - SOCKET *Sk; ///< The socket it controlled. - TCP_PEER LocalEnd; ///< Local endpoint. - TCP_PEER RemoteEnd;///< Remote endpoint. + SOCKET *Sk; ///< The socket it controlled. + TCP_PEER LocalEnd; ///< Local endpoint. + TCP_PEER RemoteEnd; ///< Remote endpoint. - LIST_ENTRY SndQue; ///< Retxmission queue. - LIST_ENTRY RcvQue; ///< Reassemble queue. - UINT32 CtrlFlag; ///< Control flags, such as NO_NAGLE. - INT32 Error; ///< Soft error status, such as TCP_CONNECT_RESET. + LIST_ENTRY SndQue; ///< Retxmission queue. + LIST_ENTRY RcvQue; ///< Reassemble queue. + UINT32 CtrlFlag; ///< Control flags, such as NO_NAGLE. + INT32 Error; ///< Soft error status, such as TCP_CONNECT_RESET. // // RFC793 and RFC1122 defined variables // - UINT8 State; ///< TCP state, such as SYN_SENT, LISTEN. - UINT8 DelayedAck; ///< Number of delayed ACKs. - UINT16 HeadSum; ///< Checksum of the fixed parts of pesudo - ///< header: Src IP, Dst IP, 0, Protocol, - ///< do not include the TCP length. - - TCP_SEQNO Iss; ///< Initial Sending Sequence. - TCP_SEQNO SndUna; ///< First unacknowledged data. - TCP_SEQNO SndNxt; ///< Next data sequence to send. - TCP_SEQNO SndPsh; ///< Send PUSH point. - TCP_SEQNO SndUp; ///< Send urgent point. - UINT32 SndWnd; ///< Window advertised by the remote peer. - UINT32 SndWndMax; ///< Max send window advertised by the peer. - TCP_SEQNO SndWl1; ///< Seq number used for last window update. - TCP_SEQNO SndWl2; ///< Ack no of last window update. - UINT16 SndMss; ///< Max send segment size. - TCP_SEQNO RcvNxt; ///< Next sequence no to receive. - UINT32 RcvWnd; ///< Window advertised by the local peer. - TCP_SEQNO RcvWl2; ///< The RcvNxt (or ACK) of last window update. - ///< It is necessary because of delayed ACK. - - TCP_SEQNO RcvUp; ///< Urgent point; - TCP_SEQNO Irs; ///< Initial Receiving Sequence. - UINT16 RcvMss; ///< Max receive segment size. - UINT16 EnabledTimer; ///< Which timer is currently enabled. - UINT32 Timer[TCP_TIMER_NUMBER]; ///< When the timer will expire. - INT32 NextExpire; ///< Countdown offset for the nearest timer. - UINT32 Idle; ///< How long the connection is in idle. - UINT32 ProbeTime; ///< The time out value for current window prober. - BOOLEAN ProbeTimerOn;///< If TRUE, the probe time is on. + UINT8 State; ///< TCP state, such as SYN_SENT, LISTEN. + UINT8 DelayedAck; ///< Number of delayed ACKs. + UINT16 HeadSum; ///< Checksum of the fixed parts of pesudo + ///< header: Src IP, Dst IP, 0, Protocol, + ///< do not include the TCP length. + + TCP_SEQNO Iss; ///< Initial Sending Sequence. + TCP_SEQNO SndUna; ///< First unacknowledged data. + TCP_SEQNO SndNxt; ///< Next data sequence to send. + TCP_SEQNO SndPsh; ///< Send PUSH point. + TCP_SEQNO SndUp; ///< Send urgent point. + UINT32 SndWnd; ///< Window advertised by the remote peer. + UINT32 SndWndMax; ///< Max send window advertised by the peer. + TCP_SEQNO SndWl1; ///< Seq number used for last window update. + TCP_SEQNO SndWl2; ///< Ack no of last window update. + UINT16 SndMss; ///< Max send segment size. + TCP_SEQNO RcvNxt; ///< Next sequence no to receive. + UINT32 RcvWnd; ///< Window advertised by the local peer. + TCP_SEQNO RcvWl2; ///< The RcvNxt (or ACK) of last window update. + ///< It is necessary because of delayed ACK. + + TCP_SEQNO RcvUp; ///< Urgent point; + TCP_SEQNO Irs; ///< Initial Receiving Sequence. + UINT16 RcvMss; ///< Max receive segment size. + UINT16 EnabledTimer; ///< Which timer is currently enabled. + UINT32 Timer[TCP_TIMER_NUMBER]; ///< When the timer will expire. + INT32 NextExpire; ///< Countdown offset for the nearest timer. + UINT32 Idle; ///< How long the connection is in idle. + UINT32 ProbeTime; ///< The time out value for current window prober. + BOOLEAN ProbeTimerOn; ///< If TRUE, the probe time is on. // // RFC1323 defined variables, about window scale, // timestamp and PAWS // - UINT8 SndWndScale; ///< Wndscale received from the peer. - UINT8 RcvWndScale; ///< Wndscale used to scale local buffer. - UINT32 TsRecent; ///< TsRecent to echo to the remote peer. - UINT32 TsRecentAge; ///< When this TsRecent is updated. + UINT8 SndWndScale; ///< Wndscale received from the peer. + UINT8 RcvWndScale; ///< Wndscale used to scale local buffer. + UINT32 TsRecent; ///< TsRecent to echo to the remote peer. + UINT32 TsRecentAge; ///< When this TsRecent is updated. // // RFC2988 defined variables. about RTT measurement // - TCP_SEQNO RttSeq; ///< The seq of measured segment now. - UINT32 RttMeasure; ///< Currently measured RTT in heartbeats. - UINT32 SRtt; ///< Smoothed RTT, scaled by 8. - UINT32 RttVar; ///< RTT variance, scaled by 8. - UINT32 Rto; ///< Current RTO, not scaled. + TCP_SEQNO RttSeq; ///< The seq of measured segment now. + UINT32 RttMeasure; ///< Currently measured RTT in heartbeats. + UINT32 SRtt; ///< Smoothed RTT, scaled by 8. + UINT32 RttVar; ///< RTT variance, scaled by 8. + UINT32 Rto; ///< Current RTO, not scaled. // // RFC2581, and 3782 variables. // Congestion control + NewReno fast recovery. // - UINT32 CWnd; ///< Sender's congestion window. - UINT32 Ssthresh; ///< Slow start threshold. - TCP_SEQNO Recover; ///< Recover point for NewReno. - UINT16 DupAck; ///< Number of duplicate ACKs. - UINT8 CongestState; ///< The current congestion state(RFC3782). - UINT8 LossTimes; ///< Number of retxmit timeouts in a row. - TCP_SEQNO LossRecover; ///< Recover point for retxmit. + UINT32 CWnd; ///< Sender's congestion window. + UINT32 Ssthresh; ///< Slow start threshold. + TCP_SEQNO Recover; ///< Recover point for NewReno. + UINT16 DupAck; ///< Number of duplicate ACKs. + UINT8 CongestState; ///< The current congestion state(RFC3782). + UINT8 LossTimes; ///< Number of retxmit timeouts in a row. + TCP_SEQNO LossRecover; ///< Recover point for retxmit. // // RFC7323 // Addressing Window Retraction for TCP Window Scale Option. // - TCP_SEQNO RetxmitSeqMax; ///< Max Seq number in previous retransmission. + TCP_SEQNO RetxmitSeqMax; ///< Max Seq number in previous retransmission. // // configuration parameters, for EFI_TCP4_PROTOCOL specification // - UINT32 KeepAliveIdle; ///< Idle time before sending first probe. - UINT32 KeepAlivePeriod; ///< Interval for subsequent keep alive probe. - UINT8 MaxKeepAlive; ///< Maximum keep alive probe times. - UINT8 KeepAliveProbes; ///< The number of keep alive probe. - UINT16 MaxRexmit; ///< The maximum number of retxmit before abort. - UINT32 FinWait2Timeout; ///< The FIN_WAIT_2 timeout. - UINT32 TimeWaitTimeout; ///< The TIME_WAIT timeout. - UINT32 ConnectTimeout; ///< The connect establishment timeout. + UINT32 KeepAliveIdle; ///< Idle time before sending first probe. + UINT32 KeepAlivePeriod; ///< Interval for subsequent keep alive probe. + UINT8 MaxKeepAlive; ///< Maximum keep alive probe times. + UINT8 KeepAliveProbes; ///< The number of keep alive probe. + UINT16 MaxRexmit; ///< The maximum number of retxmit before abort. + UINT32 FinWait2Timeout; ///< The FIN_WAIT_2 timeout. + UINT32 TimeWaitTimeout; ///< The TIME_WAIT timeout. + UINT32 ConnectTimeout; ///< The connect establishment timeout. // // configuration for tcp provided by user // - BOOLEAN UseDefaultAddr; - UINT8 Tos; - UINT8 Ttl; - EFI_IPv4_ADDRESS SubnetMask; - - - BOOLEAN RemoteIpZero; ///< RemoteEnd.Ip is ZERO when configured. - IP_IO_IP_INFO *IpInfo; ///< Pointer reference to Ip used to send pkt - UINT32 Tick; ///< 1 tick = 200ms + BOOLEAN UseDefaultAddr; + UINT8 Tos; + UINT8 Ttl; + EFI_IPv4_ADDRESS SubnetMask; + + BOOLEAN RemoteIpZero; ///< RemoteEnd.Ip is ZERO when configured. + IP_IO_IP_INFO *IpInfo; ///< Pointer reference to Ip used to send pkt + UINT32 Tick; ///< 1 tick = 200ms }; #endif diff --git a/NetworkPkg/TcpDxe/TcpTimer.c b/NetworkPkg/TcpDxe/TcpTimer.c index 04caf8e509..5d2e124977 100644 --- a/NetworkPkg/TcpDxe/TcpTimer.c +++ b/NetworkPkg/TcpDxe/TcpTimer.c @@ -9,7 +9,7 @@ #include "TcpMain.h" -UINT32 mTcpTick = 1000; +UINT32 mTcpTick = 1000; /** Connect timeout handler. @@ -19,7 +19,7 @@ UINT32 mTcpTick = 1000; **/ VOID TcpConnectTimeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -30,7 +30,7 @@ TcpConnectTimeout ( **/ VOID TcpRexmitTimeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -41,7 +41,7 @@ TcpRexmitTimeout ( **/ VOID TcpProbeTimeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -52,7 +52,7 @@ TcpProbeTimeout ( **/ VOID TcpKeepaliveTimeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -63,7 +63,7 @@ TcpKeepaliveTimeout ( **/ VOID TcpFinwait2Timeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); /** @@ -74,10 +74,10 @@ TcpFinwait2Timeout ( **/ VOID Tcp2MSLTimeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ); -TCP_TIMER_HANDLER mTcpTimerHandler[TCP_TIMER_NUMBER] = { +TCP_TIMER_HANDLER mTcpTimerHandler[TCP_TIMER_NUMBER] = { TcpConnectTimeout, TcpRexmitTimeout, TcpProbeTimeout, @@ -94,7 +94,7 @@ TCP_TIMER_HANDLER mTcpTimerHandler[TCP_TIMER_NUMBER] = { **/ VOID TcpClose ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { NetbufFreeList (&Tcb->SndQue); @@ -111,7 +111,7 @@ TcpClose ( **/ VOID TcpBackoffRto ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { // @@ -121,16 +121,14 @@ TcpBackoffRto ( // if ((Tcb->LossTimes >= TCP_FOLD_RTT) && (Tcb->SRtt != 0)) { Tcb->RttVar += Tcb->SRtt >> 2; - Tcb->SRtt = 0; + Tcb->SRtt = 0; } Tcb->Rto <<= 1; if (Tcb->Rto < TCP_RTO_MIN) { - Tcb->Rto = TCP_RTO_MIN; } else if (Tcb->Rto > TCP_RTO_MAX) { - Tcb->Rto = TCP_RTO_MAX; } } @@ -143,14 +141,14 @@ TcpBackoffRto ( **/ VOID TcpConnectTimeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { if (!TCP_CONNECTED (Tcb->State)) { DEBUG ( (DEBUG_ERROR, - "TcpConnectTimeout: connection closed because connection timer timeout for TCB %p\n", - Tcb) + "TcpConnectTimeout: connection closed because connection timer timeout for TCB %p\n", + Tcb) ); if (EFI_ABORTED == Tcb->Sk->SockError) { @@ -160,19 +158,17 @@ TcpConnectTimeout ( if (TCP_SYN_RCVD == Tcb->State) { DEBUG ( (DEBUG_WARN, - "TcpConnectTimeout: send reset because connection timer timeout for TCB %p\n", - Tcb) + "TcpConnectTimeout: send reset because connection timer timeout for TCB %p\n", + Tcb) ); TcpResetConnection (Tcb); - } TcpClose (Tcb); } } - /** Timeout handler for TCP retransmission timer. @@ -181,15 +177,15 @@ TcpConnectTimeout ( **/ VOID TcpRexmitTimeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { UINT32 FlightSize; DEBUG ( (DEBUG_WARN, - "TcpRexmitTimeout: transmission timeout for TCB %p\n", - Tcb) + "TcpRexmitTimeout: transmission timeout for TCB %p\n", + Tcb) ); // @@ -197,19 +193,18 @@ TcpRexmitTimeout ( // amount of data that has been sent but not // yet ACKed. // - FlightSize = TCP_SUB_SEQ (Tcb->SndNxt, Tcb->SndUna); - Tcb->Ssthresh = MAX ((UINT32) (2 * Tcb->SndMss), FlightSize / 2); + FlightSize = TCP_SUB_SEQ (Tcb->SndNxt, Tcb->SndUna); + Tcb->Ssthresh = MAX ((UINT32)(2 * Tcb->SndMss), FlightSize / 2); - Tcb->CWnd = Tcb->SndMss; - Tcb->LossRecover = Tcb->SndNxt; + Tcb->CWnd = Tcb->SndMss; + Tcb->LossRecover = Tcb->SndNxt; Tcb->LossTimes++; if ((Tcb->LossTimes > Tcb->MaxRexmit) && !TCP_TIMER_ON (Tcb->EnabledTimer, TCP_TIMER_CONNECT)) { - DEBUG ( (DEBUG_ERROR, - "TcpRexmitTimeout: connection closed because too many timeouts for TCB %p\n", - Tcb) + "TcpRexmitTimeout: connection closed because too many timeouts for TCB %p\n", + Tcb) ); if (EFI_ABORTED == Tcb->Sk->SockError) { @@ -217,7 +212,7 @@ TcpRexmitTimeout ( } TcpClose (Tcb); - return ; + return; } TcpBackoffRto (Tcb); @@ -237,7 +232,7 @@ TcpRexmitTimeout ( **/ VOID TcpProbeTimeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { // @@ -247,10 +242,9 @@ TcpProbeTimeout ( // the probe timer, since retransmit timer is on. // if ((TcpDataToSend (Tcb, 1) != 0) && (TcpToSendData (Tcb, 1) > 0)) { - ASSERT (TCP_TIMER_ON (Tcb->EnabledTimer, TCP_TIMER_REXMIT) != 0); Tcb->ProbeTimerOn = FALSE; - return ; + return; } TcpSendZeroProbe (Tcb); @@ -265,7 +259,7 @@ TcpProbeTimeout ( **/ VOID TcpKeepaliveTimeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { Tcb->KeepAliveProbes++; @@ -274,13 +268,12 @@ TcpKeepaliveTimeout ( // Too many Keep-alive probes, drop the connection // if (Tcb->KeepAliveProbes > Tcb->MaxKeepAlive) { - if (EFI_ABORTED == Tcb->Sk->SockError) { SOCK_ERROR (Tcb->Sk, EFI_TIMEOUT); } TcpClose (Tcb); - return ; + return; } TcpSendZeroProbe (Tcb); @@ -295,13 +288,13 @@ TcpKeepaliveTimeout ( **/ VOID TcpFinwait2Timeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { DEBUG ( (DEBUG_WARN, - "TcpFinwait2Timeout: connection closed because FIN_WAIT2 timer timeouts for TCB %p\n", - Tcb) + "TcpFinwait2Timeout: connection closed because FIN_WAIT2 timer timeouts for TCB %p\n", + Tcb) ); TcpClose (Tcb); @@ -315,13 +308,13 @@ TcpFinwait2Timeout ( **/ VOID Tcp2MSLTimeout ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { DEBUG ( (DEBUG_WARN, - "Tcp2MSLTimeout: connection closed because TIME_WAIT timer timeouts for TCB %p\n", - Tcb) + "Tcp2MSLTimeout: connection closed because TIME_WAIT timer timeouts for TCB %p\n", + Tcb) ); TcpClose (Tcb); @@ -336,7 +329,7 @@ Tcp2MSLTimeout ( **/ VOID TcpUpdateTimer ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { UINT16 Index; @@ -349,11 +342,10 @@ TcpUpdateTimer ( TCP_CLEAR_FLG (Tcb->CtrlFlag, TCP_CTRL_TIMER_ON); for (Index = 0; Index < TCP_TIMER_NUMBER; Index++) { - if (TCP_TIMER_ON (Tcb->EnabledTimer, Index) && TCP_TIME_LT (Tcb->Timer[Index], mTcpTick + Tcb->NextExpire) - ) { - + ) + { Tcb->NextExpire = TCP_SUB_TIME (Tcb->Timer[Index], mTcpTick); TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_TIMER_ON); } @@ -370,9 +362,9 @@ TcpUpdateTimer ( **/ VOID TcpSetTimer ( - IN OUT TCP_CB *Tcb, - IN UINT16 Timer, - IN UINT32 TimeOut + IN OUT TCP_CB *Tcb, + IN UINT16 Timer, + IN UINT32 TimeOut ) { TCP_SET_TIMER (Tcb->EnabledTimer, Timer); @@ -390,8 +382,8 @@ TcpSetTimer ( **/ VOID TcpClearTimer ( - IN OUT TCP_CB *Tcb, - IN UINT16 Timer + IN OUT TCP_CB *Tcb, + IN UINT16 Timer ) { TCP_CLEAR_TIMER (Tcb->EnabledTimer, Timer); @@ -406,7 +398,7 @@ TcpClearTimer ( **/ VOID TcpClearAllTimer ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { Tcb->EnabledTimer = 0; @@ -421,22 +413,19 @@ TcpClearAllTimer ( **/ VOID TcpSetProbeTimer ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { if (!Tcb->ProbeTimerOn) { Tcb->ProbeTime = Tcb->Rto; Tcb->ProbeTimerOn = TRUE; - } else { Tcb->ProbeTime <<= 1; } if (Tcb->ProbeTime < TCP_RTO_MIN) { - Tcb->ProbeTime = TCP_RTO_MIN; } else if (Tcb->ProbeTime > TCP_RTO_MAX) { - Tcb->ProbeTime = TCP_RTO_MAX; } @@ -451,12 +440,11 @@ TcpSetProbeTimer ( **/ VOID TcpSetKeepaliveTimer ( - IN OUT TCP_CB *Tcb + IN OUT TCP_CB *Tcb ) { if (TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_KEEPALIVE)) { - return ; - + return; } // @@ -468,13 +456,11 @@ TcpSetKeepaliveTimer ( // if (!TCP_TIMER_ON (Tcb->EnabledTimer, TCP_TIMER_KEEPALIVE) || (Tcb->Idle < Tcb->KeepAliveIdle) - ) { - + ) + { TcpSetTimer (Tcb, TCP_TIMER_KEEPALIVE, Tcb->KeepAliveIdle); Tcb->KeepAliveProbes = 0; - } else { - TcpSetTimer (Tcb, TCP_TIMER_KEEPALIVE, Tcb->KeepAlivePeriod); } } @@ -488,13 +474,13 @@ TcpSetKeepaliveTimer ( VOID EFIAPI TcpTickingDpc ( - IN VOID *Context + IN VOID *Context ) { - LIST_ENTRY *Entry; - LIST_ENTRY *Next; - TCP_CB *Tcb; - INT16 Index; + LIST_ENTRY *Entry; + LIST_ENTRY *Next; + TCP_CB *Tcb; + INT16 Index; mTcpTick++; mTcpGlobalIss += TCP_ISS_INCREMENT_2; @@ -503,14 +489,14 @@ TcpTickingDpc ( // Don't use LIST_FOR_EACH, which isn't delete safe. // for (Entry = mTcpRunQue.ForwardLink; Entry != &mTcpRunQue; Entry = Next) { + Next = Entry->ForwardLink; - Next = Entry->ForwardLink; - - Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List); + Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List); if (Tcb->State == TCP_CLOSED) { continue; } + // // The connection is doing RTT measurement. // @@ -524,7 +510,7 @@ TcpTickingDpc ( TcpSendAck (Tcb); } - if (Tcb->IpInfo->IpVersion == IP_VERSION_6 && Tcb->Tick > 0) { + if ((Tcb->IpInfo->IpVersion == IP_VERSION_6) && (Tcb->Tick > 0)) { Tcb->Tick--; } @@ -532,7 +518,6 @@ TcpTickingDpc ( // No timer is active or no timer expired // if (!TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_TIMER_ON) || ((--Tcb->NextExpire) > 0)) { - continue; } @@ -540,7 +525,6 @@ TcpTickingDpc ( // Call the timeout handler for each expired timer. // for (Index = 0; Index < TCP_TIMER_NUMBER; Index++) { - if (TCP_TIMER_ON (Tcb->EnabledTimer, Index) && TCP_TIME_LEQ (Tcb->Timer[Index], mTcpTick)) { // // disable the timer before calling the handler @@ -578,8 +562,8 @@ TcpTickingDpc ( VOID EFIAPI TcpTicking ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { QueueDpc (TPL_CALLBACK, TcpTickingDpc, Context); diff --git a/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.c b/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.c index c0870ab997..5cf8b0d838 100644 --- a/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.c +++ b/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.c @@ -24,13 +24,13 @@ TlsAuthConfigDxeUnload ( IN EFI_HANDLE ImageHandle ) { - EFI_STATUS Status; - TLS_AUTH_CONFIG_PRIVATE_DATA *PrivateData; + EFI_STATUS Status; + TLS_AUTH_CONFIG_PRIVATE_DATA *PrivateData; Status = gBS->HandleProtocol ( ImageHandle, &gEfiCallerIdGuid, - (VOID **) &PrivateData + (VOID **)&PrivateData ); if (EFI_ERROR (Status)) { return Status; @@ -70,7 +70,7 @@ TlsAuthConfigDxeDriverEntryPoint ( { EFI_STATUS Status; - TLS_AUTH_CONFIG_PRIVATE_DATA *PrivateData; + TLS_AUTH_CONFIG_PRIVATE_DATA *PrivateData; PrivateData = NULL; @@ -125,4 +125,3 @@ ON_ERROR: return Status; } - diff --git a/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigImpl.c b/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigImpl.c index 110fe87145..745155e6d7 100644 --- a/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigImpl.c +++ b/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigImpl.c @@ -9,15 +9,14 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "TlsAuthConfigImpl.h" -VOID *mStartOpCodeHandle = NULL; -VOID *mEndOpCodeHandle = NULL; -EFI_IFR_GUID_LABEL *mStartLabel = NULL; -EFI_IFR_GUID_LABEL *mEndLabel = NULL; +VOID *mStartOpCodeHandle = NULL; +VOID *mEndOpCodeHandle = NULL; +EFI_IFR_GUID_LABEL *mStartLabel = NULL; +EFI_IFR_GUID_LABEL *mEndLabel = NULL; +CHAR16 mTlsAuthConfigStorageName[] = L"TLS_AUTH_CONFIG_IFR_NVDATA"; -CHAR16 mTlsAuthConfigStorageName[] = L"TLS_AUTH_CONFIG_IFR_NVDATA"; - -TLS_AUTH_CONFIG_PRIVATE_DATA *mTlsAuthPrivateData = NULL; +TLS_AUTH_CONFIG_PRIVATE_DATA *mTlsAuthPrivateData = NULL; HII_VENDOR_DEVICE_PATH mTlsAuthConfigHiiVendorDevicePath = { { @@ -25,8 +24,8 @@ HII_VENDOR_DEVICE_PATH mTlsAuthConfigHiiVendorDevicePath = { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { - (UINT8) (sizeof (VENDOR_DEVICE_PATH)), - (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + (UINT8)(sizeof (VENDOR_DEVICE_PATH)), + (UINT8)((sizeof (VENDOR_DEVICE_PATH)) >> 8) } }, TLS_AUTH_CONFIG_GUID @@ -35,8 +34,8 @@ HII_VENDOR_DEVICE_PATH mTlsAuthConfigHiiVendorDevicePath = { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, { - (UINT8) (END_DEVICE_PATH_LENGTH), - (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + (UINT8)(END_DEVICE_PATH_LENGTH), + (UINT8)((END_DEVICE_PATH_LENGTH) >> 8) } } }; @@ -44,7 +43,7 @@ HII_VENDOR_DEVICE_PATH mTlsAuthConfigHiiVendorDevicePath = { // // Possible DER-encoded certificate file suffixes, end with NULL pointer. // -CHAR16* mDerPemEncodedSuffix[] = { +CHAR16 *mDerPemEncodedSuffix[] = { L".cer", L".der", L".crt", @@ -63,15 +62,17 @@ CHAR16* mDerPemEncodedSuffix[] = { **/ BOOLEAN IsDerPemEncodeCertificate ( - IN CONST CHAR16 *FileSuffix -) + IN CONST CHAR16 *FileSuffix + ) { - UINTN Index; + UINTN Index; + for (Index = 0; mDerPemEncodedSuffix[Index] != NULL; Index++) { if (StrCmp (FileSuffix, mDerPemEncodedSuffix[Index]) == 0) { return TRUE; } } + return FALSE; } @@ -117,35 +118,35 @@ GuidToString ( **/ EFI_STATUS UpdateDeletePage ( - IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private, - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - IN UINT16 LabelNumber, - IN EFI_FORM_ID FormId, - IN EFI_QUESTION_ID QuestionIdBase + IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private, + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT16 LabelNumber, + IN EFI_FORM_ID FormId, + IN EFI_QUESTION_ID QuestionIdBase ) { - EFI_STATUS Status; - UINT32 Index; - UINTN CertCount; - UINTN GuidIndex; - VOID *StartOpCodeHandle; - VOID *EndOpCodeHandle; - EFI_IFR_GUID_LABEL *StartLabel; - EFI_IFR_GUID_LABEL *EndLabel; - UINTN DataSize; - UINT8 *Data; - EFI_SIGNATURE_LIST *CertList; - EFI_SIGNATURE_DATA *Cert; - UINT32 ItemDataSize; - CHAR16 *GuidStr; - EFI_STRING_ID GuidID; - EFI_STRING_ID Help; - - Data = NULL; - CertList = NULL; - Cert = NULL; - GuidStr = NULL; + EFI_STATUS Status; + UINT32 Index; + UINTN CertCount; + UINTN GuidIndex; + VOID *StartOpCodeHandle; + VOID *EndOpCodeHandle; + EFI_IFR_GUID_LABEL *StartLabel; + EFI_IFR_GUID_LABEL *EndLabel; + UINTN DataSize; + UINT8 *Data; + EFI_SIGNATURE_LIST *CertList; + EFI_SIGNATURE_DATA *Cert; + UINT32 ItemDataSize; + CHAR16 *GuidStr; + EFI_STRING_ID GuidID; + EFI_STRING_ID Help; + + Data = NULL; + CertList = NULL; + Cert = NULL; + GuidStr = NULL; StartOpCodeHandle = NULL; EndOpCodeHandle = NULL; @@ -167,34 +168,34 @@ UpdateDeletePage ( // // Create Hii Extend Label OpCode. // - StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - StartOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); - StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; - StartLabel->Number = LabelNumber; - - EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - EndOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); - EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; - EndLabel->Number = LABEL_END; + StartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + StartOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); + StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; + StartLabel->Number = LabelNumber; + + EndLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + EndOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); + EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; + EndLabel->Number = LABEL_END; // // Read Variable. // DataSize = 0; - Status = gRT->GetVariable (VariableName, VendorGuid, NULL, &DataSize, Data); - if (EFI_ERROR (Status) && Status != EFI_BUFFER_TOO_SMALL) { + Status = gRT->GetVariable (VariableName, VendorGuid, NULL, &DataSize, Data); + if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) { goto ON_EXIT; } - Data = (UINT8 *) AllocateZeroPool (DataSize); + Data = (UINT8 *)AllocateZeroPool (DataSize); if (Data == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; @@ -214,12 +215,11 @@ UpdateDeletePage ( // // Enumerate all data. // - ItemDataSize = (UINT32) DataSize; - CertList = (EFI_SIGNATURE_LIST *) Data; - GuidIndex = 0; + ItemDataSize = (UINT32)DataSize; + CertList = (EFI_SIGNATURE_LIST *)Data; + GuidIndex = 0; while ((ItemDataSize > 0) && (ItemDataSize >= CertList->SignatureListSize)) { - if (CompareGuid (&CertList->SignatureType, &gEfiCertX509Guid)) { Help = STRING_TOKEN (STR_CERT_TYPE_PCKS_GUID); } else { @@ -227,24 +227,24 @@ UpdateDeletePage ( // The signature type is not supported in current implementation. // ItemDataSize -= CertList->SignatureListSize; - CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList + CertList->SignatureListSize); + CertList = (EFI_SIGNATURE_LIST *)((UINT8 *)CertList + CertList->SignatureListSize); continue; } - CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; + CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; for (Index = 0; Index < CertCount; Index++) { - Cert = (EFI_SIGNATURE_DATA *) ((UINT8 *) CertList - + sizeof (EFI_SIGNATURE_LIST) - + CertList->SignatureHeaderSize - + Index * CertList->SignatureSize); + Cert = (EFI_SIGNATURE_DATA *)((UINT8 *)CertList + + sizeof (EFI_SIGNATURE_LIST) + + CertList->SignatureHeaderSize + + Index * CertList->SignatureSize); // // Display GUID and help // GuidToString (&Cert->SignatureOwner, GuidStr, 100); - GuidID = HiiSetString (Private->RegisteredHandle, 0, GuidStr, NULL); + GuidID = HiiSetString (Private->RegisteredHandle, 0, GuidStr, NULL); HiiCreateCheckBoxOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (QuestionIdBase + GuidIndex++), + (EFI_QUESTION_ID)(QuestionIdBase + GuidIndex++), 0, 0, GuidID, @@ -256,7 +256,7 @@ UpdateDeletePage ( } ItemDataSize -= CertList->SignatureListSize; - CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList + CertList->SignatureListSize); + CertList = (EFI_SIGNATURE_LIST *)((UINT8 *)CertList + CertList->SignatureListSize); } ON_EXIT: @@ -304,110 +304,111 @@ ON_EXIT: **/ EFI_STATUS DeleteCert ( - IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private, - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - IN UINT16 LabelNumber, - IN EFI_FORM_ID FormId, - IN EFI_QUESTION_ID QuestionIdBase, - IN UINTN DeleteIndex + IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private, + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + IN UINT16 LabelNumber, + IN EFI_FORM_ID FormId, + IN EFI_QUESTION_ID QuestionIdBase, + IN UINTN DeleteIndex ) { - EFI_STATUS Status; - UINTN DataSize; - UINT8 *Data; - UINT8 *OldData; - UINT32 Attr; - UINT32 Index; - EFI_SIGNATURE_LIST *CertList; - EFI_SIGNATURE_LIST *NewCertList; - EFI_SIGNATURE_DATA *Cert; - UINTN CertCount; - UINT32 Offset; - BOOLEAN IsItemFound; - UINT32 ItemDataSize; - UINTN GuidIndex; - - Data = NULL; - OldData = NULL; - CertList = NULL; - Cert = NULL; - Attr = 0; + EFI_STATUS Status; + UINTN DataSize; + UINT8 *Data; + UINT8 *OldData; + UINT32 Attr; + UINT32 Index; + EFI_SIGNATURE_LIST *CertList; + EFI_SIGNATURE_LIST *NewCertList; + EFI_SIGNATURE_DATA *Cert; + UINTN CertCount; + UINT32 Offset; + BOOLEAN IsItemFound; + UINT32 ItemDataSize; + UINTN GuidIndex; + + Data = NULL; + OldData = NULL; + CertList = NULL; + Cert = NULL; + Attr = 0; // // Get original signature list data. // DataSize = 0; - Status = gRT->GetVariable (VariableName, VendorGuid, NULL, &DataSize, NULL); - if (EFI_ERROR (Status) && Status != EFI_BUFFER_TOO_SMALL) { + Status = gRT->GetVariable (VariableName, VendorGuid, NULL, &DataSize, NULL); + if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) { goto ON_EXIT; } - OldData = (UINT8 *) AllocateZeroPool (DataSize); + OldData = (UINT8 *)AllocateZeroPool (DataSize); if (OldData == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } Status = gRT->GetVariable (VariableName, VendorGuid, &Attr, &DataSize, OldData); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { goto ON_EXIT; } // // Allocate space for new variable. // - Data = (UINT8*) AllocateZeroPool (DataSize); + Data = (UINT8 *)AllocateZeroPool (DataSize); if (Data == NULL) { - Status = EFI_OUT_OF_RESOURCES; + Status = EFI_OUT_OF_RESOURCES; goto ON_EXIT; } // // Enumerate all data and erasing the target item. // - IsItemFound = FALSE; - ItemDataSize = (UINT32) DataSize; - CertList = (EFI_SIGNATURE_LIST *) OldData; - Offset = 0; - GuidIndex = 0; + IsItemFound = FALSE; + ItemDataSize = (UINT32)DataSize; + CertList = (EFI_SIGNATURE_LIST *)OldData; + Offset = 0; + GuidIndex = 0; while ((ItemDataSize > 0) && (ItemDataSize >= CertList->SignatureListSize)) { if (CompareGuid (&CertList->SignatureType, &gEfiCertX509Guid)) { // // Copy EFI_SIGNATURE_LIST header then calculate the signature count in this list. // - CopyMem (Data + Offset, CertList, (sizeof(EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize)); - NewCertList = (EFI_SIGNATURE_LIST*) (Data + Offset); - Offset += (sizeof(EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); - Cert = (EFI_SIGNATURE_DATA *) ((UINT8 *) CertList + sizeof (EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); - CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; + CopyMem (Data + Offset, CertList, (sizeof (EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize)); + NewCertList = (EFI_SIGNATURE_LIST *)(Data + Offset); + Offset += (sizeof (EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); + Cert = (EFI_SIGNATURE_DATA *)((UINT8 *)CertList + sizeof (EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); + CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; for (Index = 0; Index < CertCount; Index++) { if (GuidIndex == DeleteIndex) { // // Find it! Skip it! // NewCertList->SignatureListSize -= CertList->SignatureSize; - IsItemFound = TRUE; + IsItemFound = TRUE; } else { // // This item doesn't match. Copy it to the Data buffer. // - CopyMem (Data + Offset, (UINT8*)(Cert), CertList->SignatureSize); + CopyMem (Data + Offset, (UINT8 *)(Cert), CertList->SignatureSize); Offset += CertList->SignatureSize; } + GuidIndex++; - Cert = (EFI_SIGNATURE_DATA *) ((UINT8 *) Cert + CertList->SignatureSize); + Cert = (EFI_SIGNATURE_DATA *)((UINT8 *)Cert + CertList->SignatureSize); } } else { // // This List doesn't match. Just copy it to the Data buffer. // - CopyMem (Data + Offset, (UINT8*)(CertList), CertList->SignatureListSize); + CopyMem (Data + Offset, (UINT8 *)(CertList), CertList->SignatureListSize); Offset += CertList->SignatureListSize; } ItemDataSize -= CertList->SignatureListSize; - CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList + CertList->SignatureListSize); + CertList = (EFI_SIGNATURE_LIST *)((UINT8 *)CertList + CertList->SignatureListSize); } if (!IsItemFound) { @@ -422,23 +423,24 @@ DeleteCert ( // Delete the EFI_SIGNATURE_LIST header if there is no signature in the list. // ItemDataSize = Offset; - CertList = (EFI_SIGNATURE_LIST *) Data; - Offset = 0; + CertList = (EFI_SIGNATURE_LIST *)Data; + Offset = 0; ZeroMem (OldData, ItemDataSize); while ((ItemDataSize > 0) && (ItemDataSize >= CertList->SignatureListSize)) { - CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; + CertCount = (CertList->SignatureListSize - sizeof (EFI_SIGNATURE_LIST) - CertList->SignatureHeaderSize) / CertList->SignatureSize; DEBUG ((DEBUG_INFO, " CertCount = %x\n", CertCount)); if (CertCount != 0) { - CopyMem (OldData + Offset, (UINT8*)(CertList), CertList->SignatureListSize); + CopyMem (OldData + Offset, (UINT8 *)(CertList), CertList->SignatureListSize); Offset += CertList->SignatureListSize; } + ItemDataSize -= CertList->SignatureListSize; - CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList + CertList->SignatureListSize); + CertList = (EFI_SIGNATURE_LIST *)((UINT8 *)CertList + CertList->SignatureListSize); } DataSize = Offset; - Status = gRT->SetVariable( + Status = gRT->SetVariable ( VariableName, VendorGuid, Attr, @@ -452,11 +454,11 @@ DeleteCert ( ON_EXIT: if (Data != NULL) { - FreePool(Data); + FreePool (Data); } if (OldData != NULL) { - FreePool(OldData); + FreePool (OldData); } return UpdateDeletePage ( @@ -469,7 +471,6 @@ ON_EXIT: ); } - /** Clean the file related resource. @@ -478,14 +479,14 @@ ON_EXIT: **/ VOID CleanFileContext ( - IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private + IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private ) { if (Private->FileContext->FHandle != NULL) { Private->FileContext->FHandle->Close (Private->FileContext->FHandle); Private->FileContext->FHandle = NULL; - if (Private->FileContext->FileName!= NULL){ - FreePool(Private->FileContext->FileName); + if (Private->FileContext->FileName != NULL) { + FreePool (Private->FileContext->FileName); Private->FileContext->FileName = NULL; } } @@ -509,17 +510,17 @@ CleanFileContext ( **/ EFI_STATUS ReadFileContent ( - IN EFI_FILE_HANDLE FileHandle, - IN OUT VOID **BufferPtr, - OUT UINTN *FileSize, - IN UINTN AddtionAllocateSize + IN EFI_FILE_HANDLE FileHandle, + IN OUT VOID **BufferPtr, + OUT UINTN *FileSize, + IN UINTN AddtionAllocateSize ) { - UINTN BufferSize; - UINT64 SourceFileSize; - VOID *Buffer; - EFI_STATUS Status; + UINTN BufferSize; + UINT64 SourceFileSize; + VOID *Buffer; + EFI_STATUS Status; if ((FileHandle == NULL) || (FileSize == NULL)) { return EFI_INVALID_PARAMETER; @@ -530,7 +531,7 @@ ReadFileContent ( // // Get the file size // - Status = FileHandle->SetPosition (FileHandle, (UINT64) -1); + Status = FileHandle->SetPosition (FileHandle, (UINT64)-1); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -545,20 +546,20 @@ ReadFileContent ( goto ON_EXIT; } - BufferSize = (UINTN) SourceFileSize + AddtionAllocateSize; - Buffer = AllocateZeroPool(BufferSize); + BufferSize = (UINTN)SourceFileSize + AddtionAllocateSize; + Buffer = AllocateZeroPool (BufferSize); if (Buffer == NULL) { return EFI_OUT_OF_RESOURCES; } - BufferSize = (UINTN) SourceFileSize; + BufferSize = (UINTN)SourceFileSize; *FileSize = BufferSize; Status = FileHandle->Read (FileHandle, &BufferSize, Buffer); - if (EFI_ERROR (Status) || BufferSize != *FileSize) { + if (EFI_ERROR (Status) || (BufferSize != *FileSize)) { FreePool (Buffer); Buffer = NULL; - Status = EFI_BAD_BUFFER_SIZE; + Status = EFI_BAD_BUFFER_SIZE; goto ON_EXIT; } @@ -579,7 +580,7 @@ ON_EXIT: CHAR16 * EFIAPI DevicePathToStr ( - IN EFI_DEVICE_PATH_PROTOCOL *DevPath + IN EFI_DEVICE_PATH_PROTOCOL *DevPath ) { return ConvertDevicePathToText ( @@ -589,7 +590,6 @@ DevicePathToStr ( ); } - /** Extract filename from device path. The returned buffer is allocated using AllocateCopyPool. The caller is responsible for freeing the allocated buffer using FreePool(). If return NULL @@ -603,34 +603,34 @@ DevicePathToStr ( **/ CHAR16 * ExtractFileNameFromDevicePath ( - IN EFI_DEVICE_PATH_PROTOCOL *DevicePath + IN EFI_DEVICE_PATH_PROTOCOL *DevicePath ) { - CHAR16 *String; - CHAR16 *MatchString; - CHAR16 *LastMatch; - CHAR16 *FileName; - UINTN Length; + CHAR16 *String; + CHAR16 *MatchString; + CHAR16 *LastMatch; + CHAR16 *FileName; + UINTN Length; - ASSERT(DevicePath != NULL); + ASSERT (DevicePath != NULL); - String = DevicePathToStr(DevicePath); + String = DevicePathToStr (DevicePath); MatchString = String; LastMatch = String; FileName = NULL; - while(MatchString != NULL){ + while (MatchString != NULL) { LastMatch = MatchString + 1; - MatchString = StrStr(LastMatch,L"\\"); + MatchString = StrStr (LastMatch, L"\\"); } - Length = StrLen(LastMatch); - FileName = AllocateCopyPool ((Length + 1) * sizeof(CHAR16), LastMatch); + Length = StrLen (LastMatch); + FileName = AllocateCopyPool ((Length + 1) * sizeof (CHAR16), LastMatch); if (FileName != NULL) { *(FileName + Length) = 0; } - FreePool(String); + FreePool (String); return FileName; } @@ -647,28 +647,28 @@ ExtractFileNameFromDevicePath ( **/ EFI_STATUS EnrollX509toVariable ( - IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private, - IN CHAR16 *VariableName + IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private, + IN CHAR16 *VariableName ) { - EFI_STATUS Status; - UINTN X509DataSize; - VOID *X509Data; - EFI_SIGNATURE_LIST *CACert; - EFI_SIGNATURE_DATA *CACertData; - VOID *Data; - UINTN DataSize; - UINTN SigDataSize; - UINT32 Attr; - - X509DataSize = 0; - SigDataSize = 0; - DataSize = 0; - X509Data = NULL; - CACert = NULL; - CACertData = NULL; - Data = NULL; - Attr = 0; + EFI_STATUS Status; + UINTN X509DataSize; + VOID *X509Data; + EFI_SIGNATURE_LIST *CACert; + EFI_SIGNATURE_DATA *CACertData; + VOID *Data; + UINTN DataSize; + UINTN SigDataSize; + UINT32 Attr; + + X509DataSize = 0; + SigDataSize = 0; + DataSize = 0; + X509Data = NULL; + CACert = NULL; + CACertData = NULL; + Data = NULL; + Attr = 0; Status = ReadFileContent ( Private->FileContext->FHandle, @@ -679,9 +679,10 @@ EnrollX509toVariable ( if (EFI_ERROR (Status)) { goto ON_EXIT; } + ASSERT (X509Data != NULL); - SigDataSize = sizeof(EFI_SIGNATURE_LIST) + sizeof(EFI_SIGNATURE_DATA) - 1 + X509DataSize; + SigDataSize = sizeof (EFI_SIGNATURE_LIST) + sizeof (EFI_SIGNATURE_DATA) - 1 + X509DataSize; Data = AllocateZeroPool (SigDataSize); if (Data == NULL) { @@ -692,22 +693,22 @@ EnrollX509toVariable ( // // Fill Certificate Database parameters. // - CACert = (EFI_SIGNATURE_LIST*) Data; - CACert->SignatureListSize = (UINT32) SigDataSize; + CACert = (EFI_SIGNATURE_LIST *)Data; + CACert->SignatureListSize = (UINT32)SigDataSize; CACert->SignatureHeaderSize = 0; - CACert->SignatureSize = (UINT32) (sizeof(EFI_SIGNATURE_DATA) - 1 + X509DataSize); + CACert->SignatureSize = (UINT32)(sizeof (EFI_SIGNATURE_DATA) - 1 + X509DataSize); CopyGuid (&CACert->SignatureType, &gEfiCertX509Guid); - CACertData = (EFI_SIGNATURE_DATA*) ((UINT8* ) CACert + sizeof (EFI_SIGNATURE_LIST)); + CACertData = (EFI_SIGNATURE_DATA *)((UINT8 *)CACert + sizeof (EFI_SIGNATURE_LIST)); CopyGuid (&CACertData->SignatureOwner, Private->CertGuid); - CopyMem ((UINT8* ) (CACertData->SignatureData), X509Data, X509DataSize); + CopyMem ((UINT8 *)(CACertData->SignatureData), X509Data, X509DataSize); // // Check if the signature database entry already exists. If it does, use the // EFI_VARIABLE_APPEND_WRITE attribute to append the new signature data to // the original variable, plus preserve the original variable attributes. // - Status = gRT->GetVariable( + Status = gRT->GetVariable ( VariableName, &gEfiTlsCaCertificateGuid, &Attr, @@ -722,7 +723,7 @@ EnrollX509toVariable ( goto ON_EXIT; } - Status = gRT->SetVariable( + Status = gRT->SetVariable ( VariableName, &gEfiTlsCaCertificateGuid, Attr, @@ -770,8 +771,8 @@ EnrollCertDatabase ( IN CHAR16 *VariableName ) { - UINT16* FilePostFix; - UINTN NameLength; + UINT16 *FilePostFix; + UINTN NameLength; if ((Private->FileContext->FileName == NULL) || (Private->FileContext->FHandle == NULL) || (Private->CertGuid == NULL)) { return EFI_INVALID_PARAMETER; @@ -784,6 +785,7 @@ EnrollCertDatabase ( if (NameLength <= 4) { return EFI_INVALID_PARAMETER; } + FilePostFix = Private->FileContext->FileName + NameLength - 4; if (IsDerPemEncodeCertificate (FilePostFix)) { @@ -820,12 +822,12 @@ RefreshUpdateData ( // // Create Hii Extend Label OpCode as the start opcode // - mStartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - mStartOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + mStartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + mStartOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); mStartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; } @@ -838,8 +840,8 @@ RefreshUpdateData ( **/ VOID CleanUpPage ( - IN UINT16 LabelId, - IN TLS_AUTH_CONFIG_PRIVATE_DATA *PrivateData + IN UINT16 LabelId, + IN TLS_AUTH_CONFIG_PRIVATE_DATA *PrivateData ) { RefreshUpdateData (); @@ -868,19 +870,20 @@ CleanUpPage ( **/ BOOLEAN -UpdatePage( +UpdatePage ( IN EFI_DEVICE_PATH_PROTOCOL *FilePath, IN EFI_FORM_ID FormId ) { - CHAR16 *FileName; - EFI_STRING_ID StringToken; + CHAR16 *FileName; + EFI_STRING_ID StringToken; FileName = NULL; if (FilePath != NULL) { - FileName = ExtractFileNameFromDevicePath(FilePath); + FileName = ExtractFileNameFromDevicePath (FilePath); } + if (FileName == NULL) { // // FileName = NULL has two case: @@ -890,6 +893,7 @@ UpdatePage( // return TRUE; } + StringToken = HiiSetString (mTlsAuthPrivateData->RegisteredHandle, 0, FileName, NULL); mTlsAuthPrivateData->FileContext->FileName = FileName; @@ -912,7 +916,7 @@ UpdatePage( 0, 0, 0 - ); + ); HiiUpdateForm ( mTlsAuthPrivateData->RegisteredHandle, @@ -936,10 +940,10 @@ UpdatePage( BOOLEAN EFIAPI UpdateCAFromFile ( - IN EFI_DEVICE_PATH_PROTOCOL *FilePath + IN EFI_DEVICE_PATH_PROTOCOL *FilePath ) { - return UpdatePage(FilePath, TLS_AUTH_CONFIG_FORMID4_FORM); + return UpdatePage (FilePath, TLS_AUTH_CONFIG_FORMID4_FORM); } /** @@ -954,7 +958,7 @@ UpdateCAFromFile ( **/ EFI_STATUS TlsAuthConfigFormUnload ( - IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private + IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private ) { if (Private->DriverHandle != NULL) { @@ -1001,7 +1005,6 @@ TlsAuthConfigFormUnload ( return EFI_SUCCESS; } - /** Initialize the configuration form. @@ -1013,10 +1016,10 @@ TlsAuthConfigFormUnload ( **/ EFI_STATUS TlsAuthConfigFormInit ( - IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private + IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private ) { - EFI_STATUS Status; + EFI_STATUS Status; Private->Signature = TLS_AUTH_CONFIG_PRIVATE_DATA_SIGNATURE; @@ -1078,23 +1081,23 @@ TlsAuthConfigFormInit ( // // Create Hii Extend Label OpCode as the start opcode // - mStartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - mStartOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + mStartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + mStartOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); mStartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; // // Create Hii Extend Label OpCode as the end opcode // - mEndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - mEndOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + mEndLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + mEndOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); mEndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; mEndLabel->Number = LABEL_END; @@ -1185,15 +1188,15 @@ TlsAuthConfigAccessExtractConfig ( OUT EFI_STRING *Results ) { - EFI_STATUS Status; - UINTN BufferSize; - UINTN Size; - EFI_STRING ConfigRequest; - EFI_STRING ConfigRequestHdr; - TLS_AUTH_CONFIG_PRIVATE_DATA *Private; - BOOLEAN AllocatedRequest; - - if (Progress == NULL || Results == NULL) { + EFI_STATUS Status; + UINTN BufferSize; + UINTN Size; + EFI_STRING ConfigRequest; + EFI_STRING ConfigRequestHdr; + TLS_AUTH_CONFIG_PRIVATE_DATA *Private; + BOOLEAN AllocatedRequest; + + if ((Progress == NULL) || (Results == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1202,12 +1205,12 @@ TlsAuthConfigAccessExtractConfig ( ConfigRequest = NULL; Size = 0; - Private = TLS_AUTH_CONFIG_PRIVATE_FROM_THIS (This); + Private = TLS_AUTH_CONFIG_PRIVATE_FROM_THIS (This); - BufferSize = sizeof (TLS_AUTH_CONFIG_IFR_NVDATA); + BufferSize = sizeof (TLS_AUTH_CONFIG_IFR_NVDATA); ZeroMem (&Private->TlsAuthConfigNvData, BufferSize); - *Progress = Request; + *Progress = Request; if ((Request != NULL) && !HiiIsConfigHdrMatch (Request, &gTlsAuthConfigGuid, mTlsAuthConfigStorageName)) { return EFI_NOT_FOUND; @@ -1222,8 +1225,8 @@ TlsAuthConfigAccessExtractConfig ( // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator // ConfigRequestHdr = HiiConstructConfigHdr (&gTlsAuthConfigGuid, mTlsAuthConfigStorageName, Private->DriverHandle); - Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); - ConfigRequest = AllocateZeroPool (Size); + Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); + ConfigRequest = AllocateZeroPool (Size); ASSERT (ConfigRequest != NULL); AllocatedRequest = TRUE; UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize); @@ -1234,7 +1237,7 @@ TlsAuthConfigAccessExtractConfig ( Status = gHiiConfigRouting->BlockToConfig ( gHiiConfigRouting, ConfigRequest, - (UINT8 *) &Private->TlsAuthConfigNvData, + (UINT8 *)&Private->TlsAuthConfigNvData, BufferSize, Results, Progress @@ -1307,13 +1310,14 @@ TlsAuthConfigAccessRouteConfig ( OUT EFI_STRING *Progress ) { - EFI_STATUS Status; - UINTN BufferSize; - TLS_AUTH_CONFIG_PRIVATE_DATA *Private; + EFI_STATUS Status; + UINTN BufferSize; + TLS_AUTH_CONFIG_PRIVATE_DATA *Private; if (Progress == NULL) { return EFI_INVALID_PARAMETER; } + *Progress = Configuration; if (Configuration == NULL) { @@ -1336,7 +1340,7 @@ TlsAuthConfigAccessRouteConfig ( Status = gHiiConfigRouting->ConfigToBlock ( gHiiConfigRouting, Configuration, - (UINT8 *) &Private->TlsAuthConfigNvData, + (UINT8 *)&Private->TlsAuthConfigNvData, &BufferSize, Progress ); @@ -1375,26 +1379,26 @@ TlsAuthConfigAccessRouteConfig ( EFI_STATUS EFIAPI TlsAuthConfigAccessCallback ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN EFI_BROWSER_ACTION Action, - IN EFI_QUESTION_ID QuestionId, - IN UINT8 Type, - IN OUT EFI_IFR_TYPE_VALUE *Value, - OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN OUT EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest ) { - EFI_STATUS Status; - RETURN_STATUS RStatus; - TLS_AUTH_CONFIG_PRIVATE_DATA *Private; - UINTN BufferSize; - TLS_AUTH_CONFIG_IFR_NVDATA *IfrNvData; - UINT16 LabelId; - EFI_DEVICE_PATH_PROTOCOL *File; - EFI_HII_POPUP_PROTOCOL *HiiPopUp; - EFI_HII_POPUP_SELECTION PopUpSelect; - - Status = EFI_SUCCESS; - File = NULL; + EFI_STATUS Status; + RETURN_STATUS RStatus; + TLS_AUTH_CONFIG_PRIVATE_DATA *Private; + UINTN BufferSize; + TLS_AUTH_CONFIG_IFR_NVDATA *IfrNvData; + UINT16 LabelId; + EFI_DEVICE_PATH_PROTOCOL *File; + EFI_HII_POPUP_PROTOCOL *HiiPopUp; + EFI_HII_POPUP_SELECTION PopUpSelect; + + Status = EFI_SUCCESS; + File = NULL; if ((This == NULL) || (Value == NULL) || (ActionRequest == NULL)) { return EFI_INVALID_PARAMETER; @@ -1403,7 +1407,7 @@ TlsAuthConfigAccessCallback ( Private = TLS_AUTH_CONFIG_PRIVATE_FROM_THIS (This); mTlsAuthPrivateData = Private; - Status = gBS->LocateProtocol (&gEfiHiiPopupProtocolGuid, NULL, (VOID**) &HiiPopUp); + Status = gBS->LocateProtocol (&gEfiHiiPopupProtocolGuid, NULL, (VOID **)&HiiPopUp); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Can't find Form PopUp protocol. Exit (%r)\n", Status)); return Status; @@ -1413,122 +1417,128 @@ TlsAuthConfigAccessCallback ( // Retrieve uncommitted data from Browser // BufferSize = sizeof (TLS_AUTH_CONFIG_IFR_NVDATA); - IfrNvData = AllocateZeroPool (BufferSize); + IfrNvData = AllocateZeroPool (BufferSize); if (IfrNvData == NULL) { return EFI_OUT_OF_RESOURCES; } - HiiGetBrowserData (&gTlsAuthConfigGuid, mTlsAuthConfigStorageName, BufferSize, (UINT8 *) IfrNvData); + HiiGetBrowserData (&gTlsAuthConfigGuid, mTlsAuthConfigStorageName, BufferSize, (UINT8 *)IfrNvData); if ((Action != EFI_BROWSER_ACTION_CHANGED) && (Action != EFI_BROWSER_ACTION_CHANGING) && - (Action != EFI_BROWSER_ACTION_FORM_CLOSE)) { + (Action != EFI_BROWSER_ACTION_FORM_CLOSE)) + { Status = EFI_UNSUPPORTED; goto EXIT; } if (Action == EFI_BROWSER_ACTION_CHANGING) { switch (QuestionId) { - case KEY_TLS_AUTH_CONFIG_CLIENT_CERT: - case KEY_TLS_AUTH_CONFIG_SERVER_CA: - // - // Clear Cert GUID. - // - ZeroMem (IfrNvData->CertGuid, sizeof (IfrNvData->CertGuid)); - if (Private->CertGuid == NULL) { - Private->CertGuid = (EFI_GUID *) AllocateZeroPool (sizeof (EFI_GUID)); + case KEY_TLS_AUTH_CONFIG_CLIENT_CERT: + case KEY_TLS_AUTH_CONFIG_SERVER_CA: + // + // Clear Cert GUID. + // + ZeroMem (IfrNvData->CertGuid, sizeof (IfrNvData->CertGuid)); if (Private->CertGuid == NULL) { - return EFI_OUT_OF_RESOURCES; + Private->CertGuid = (EFI_GUID *)AllocateZeroPool (sizeof (EFI_GUID)); + if (Private->CertGuid == NULL) { + return EFI_OUT_OF_RESOURCES; + } } - } - if (QuestionId == KEY_TLS_AUTH_CONFIG_CLIENT_CERT) { - LabelId = TLS_AUTH_CONFIG_FORMID3_FORM; - } else { - LabelId = TLS_AUTH_CONFIG_FORMID4_FORM; - } - // - // Refresh selected file. - // - CleanUpPage (LabelId, Private); - break; - case KEY_TLS_AUTH_CONFIG_ENROLL_CERT_FROM_FILE: - // - // If the file is already opened, clean the file related resource first. - // - CleanFileContext (Private); - - ChooseFile( NULL, NULL, UpdateCAFromFile, &File); - break; + if (QuestionId == KEY_TLS_AUTH_CONFIG_CLIENT_CERT) { + LabelId = TLS_AUTH_CONFIG_FORMID3_FORM; + } else { + LabelId = TLS_AUTH_CONFIG_FORMID4_FORM; + } - case KEY_TLS_AUTH_CONFIG_VALUE_SAVE_AND_EXIT: - Status = EnrollCertDatabase (Private, EFI_TLS_CA_CERTIFICATE_VARIABLE); - if (EFI_ERROR (Status)) { + // + // Refresh selected file. + // + CleanUpPage (LabelId, Private); + break; + case KEY_TLS_AUTH_CONFIG_ENROLL_CERT_FROM_FILE: + // + // If the file is already opened, clean the file related resource first. + // CleanFileContext (Private); - HiiPopUp->CreatePopup ( - HiiPopUp, - EfiHiiPopupStyleError, - EfiHiiPopupTypeOk, - Private->RegisteredHandle, - STRING_TOKEN (STR_TLS_AUTH_ENROLL_CERT_FAILURE), - &PopUpSelect - ); - } - break; + ChooseFile (NULL, NULL, UpdateCAFromFile, &File); + break; - case KEY_TLS_AUTH_CONFIG_VALUE_NO_SAVE_AND_EXIT: - CleanFileContext (Private); + case KEY_TLS_AUTH_CONFIG_VALUE_SAVE_AND_EXIT: + Status = EnrollCertDatabase (Private, EFI_TLS_CA_CERTIFICATE_VARIABLE); + if (EFI_ERROR (Status)) { + CleanFileContext (Private); + + HiiPopUp->CreatePopup ( + HiiPopUp, + EfiHiiPopupStyleError, + EfiHiiPopupTypeOk, + Private->RegisteredHandle, + STRING_TOKEN (STR_TLS_AUTH_ENROLL_CERT_FAILURE), + &PopUpSelect + ); + } - if (Private->CertGuid!= NULL) { - FreePool (Private->CertGuid); - Private->CertGuid = NULL; - } - break; - - case KEY_TLS_AUTH_CONFIG_DELETE_CERT: - UpdateDeletePage ( - Private, - EFI_TLS_CA_CERTIFICATE_VARIABLE, - &gEfiTlsCaCertificateGuid, - LABEL_CA_DELETE, - TLS_AUTH_CONFIG_FORMID5_FORM, - OPTION_DEL_CA_ESTION_ID - ); - break; + break; + + case KEY_TLS_AUTH_CONFIG_VALUE_NO_SAVE_AND_EXIT: + CleanFileContext (Private); - default: - if ((QuestionId >= OPTION_DEL_CA_ESTION_ID) && - (QuestionId < (OPTION_DEL_CA_ESTION_ID + OPTION_CONFIG_RANGE))) { - DeleteCert ( + if (Private->CertGuid != NULL) { + FreePool (Private->CertGuid); + Private->CertGuid = NULL; + } + + break; + + case KEY_TLS_AUTH_CONFIG_DELETE_CERT: + UpdateDeletePage ( Private, EFI_TLS_CA_CERTIFICATE_VARIABLE, &gEfiTlsCaCertificateGuid, LABEL_CA_DELETE, TLS_AUTH_CONFIG_FORMID5_FORM, - OPTION_DEL_CA_ESTION_ID, - QuestionId - OPTION_DEL_CA_ESTION_ID + OPTION_DEL_CA_ESTION_ID ); - } - break; + break; + + default: + if ((QuestionId >= OPTION_DEL_CA_ESTION_ID) && + (QuestionId < (OPTION_DEL_CA_ESTION_ID + OPTION_CONFIG_RANGE))) + { + DeleteCert ( + Private, + EFI_TLS_CA_CERTIFICATE_VARIABLE, + &gEfiTlsCaCertificateGuid, + LABEL_CA_DELETE, + TLS_AUTH_CONFIG_FORMID5_FORM, + OPTION_DEL_CA_ESTION_ID, + QuestionId - OPTION_DEL_CA_ESTION_ID + ); + } + + break; } } else if (Action == EFI_BROWSER_ACTION_CHANGED) { switch (QuestionId) { - case KEY_TLS_AUTH_CONFIG_CERT_GUID: - ASSERT (Private->CertGuid != NULL); - RStatus = StrToGuid ( - IfrNvData->CertGuid, - Private->CertGuid - ); - if (RETURN_ERROR (RStatus) || (IfrNvData->CertGuid[GUID_STRING_LENGTH] != L'\0')) { - Status = EFI_INVALID_PARAMETER; - break; - } + case KEY_TLS_AUTH_CONFIG_CERT_GUID: + ASSERT (Private->CertGuid != NULL); + RStatus = StrToGuid ( + IfrNvData->CertGuid, + Private->CertGuid + ); + if (RETURN_ERROR (RStatus) || (IfrNvData->CertGuid[GUID_STRING_LENGTH] != L'\0')) { + Status = EFI_INVALID_PARAMETER; + break; + } - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; - break; - default: - break; + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; + break; + default: + break; } } else if (Action == EFI_BROWSER_ACTION_FORM_CLOSE) { CleanFileContext (Private); @@ -1538,17 +1548,15 @@ EXIT: if (!EFI_ERROR (Status)) { BufferSize = sizeof (TLS_AUTH_CONFIG_IFR_NVDATA); - HiiSetBrowserData (&gTlsAuthConfigGuid, mTlsAuthConfigStorageName, BufferSize, (UINT8*) IfrNvData, NULL); + HiiSetBrowserData (&gTlsAuthConfigGuid, mTlsAuthConfigStorageName, BufferSize, (UINT8 *)IfrNvData, NULL); } FreePool (IfrNvData); - if (File != NULL){ - FreePool(File); + if (File != NULL) { + FreePool (File); File = NULL; } return EFI_SUCCESS; - } - diff --git a/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigImpl.h b/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigImpl.h index 68c16845b3..1552f47a9d 100644 --- a/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigImpl.h +++ b/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigImpl.h @@ -36,34 +36,33 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include - // // Include files with function prototypes // #include "TlsAuthConfigNvData.h" -extern UINT8 TlsAuthConfigDxeStrings[]; -extern UINT8 TlsAuthConfigVfrBin[]; +extern UINT8 TlsAuthConfigDxeStrings[]; +extern UINT8 TlsAuthConfigVfrBin[]; -#define TLS_AUTH_CONFIG_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'A', 'C', 'D') -#define TLS_AUTH_CONFIG_PRIVATE_FROM_THIS(a) CR (a, TLS_AUTH_CONFIG_PRIVATE_DATA, ConfigAccess, TLS_AUTH_CONFIG_PRIVATE_DATA_SIGNATURE) +#define TLS_AUTH_CONFIG_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('T', 'A', 'C', 'D') +#define TLS_AUTH_CONFIG_PRIVATE_FROM_THIS(a) CR (a, TLS_AUTH_CONFIG_PRIVATE_DATA, ConfigAccess, TLS_AUTH_CONFIG_PRIVATE_DATA_SIGNATURE) #define TLS_AUTH_CONFIG_VAR_BASE_ATTR (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS) -typedef struct _TLS_AUTH_CONFIG_PRIVATE_DATA TLS_AUTH_CONFIG_PRIVATE_DATA; -typedef struct _TLS_AUTH_CONFIG_FILE_CONTEXT TLS_AUTH_CONFIG_FILE_CONTEXT; +typedef struct _TLS_AUTH_CONFIG_PRIVATE_DATA TLS_AUTH_CONFIG_PRIVATE_DATA; +typedef struct _TLS_AUTH_CONFIG_FILE_CONTEXT TLS_AUTH_CONFIG_FILE_CONTEXT; /// /// HII specific Vendor Device Path definition. /// typedef struct { - VENDOR_DEVICE_PATH VendorDevicePath; - EFI_DEVICE_PATH_PROTOCOL End; + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; } HII_VENDOR_DEVICE_PATH; struct _TLS_AUTH_CONFIG_FILE_CONTEXT { - EFI_FILE_HANDLE FHandle; - UINT16 *FileName; + EFI_FILE_HANDLE FHandle; + UINT16 *FileName; }; struct _TLS_AUTH_CONFIG_PRIVATE_DATA { @@ -92,7 +91,7 @@ struct _TLS_AUTH_CONFIG_PRIVATE_DATA { **/ EFI_STATUS TlsAuthConfigFormUnload ( - IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private + IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private ); /** @@ -106,7 +105,7 @@ TlsAuthConfigFormUnload ( **/ EFI_STATUS TlsAuthConfigFormInit ( - IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private + IN TLS_AUTH_CONFIG_PRIVATE_DATA *Private ); /** @@ -265,13 +264,12 @@ TlsAuthConfigAccessRouteConfig ( EFI_STATUS EFIAPI TlsAuthConfigAccessCallback ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN EFI_BROWSER_ACTION Action, - IN EFI_QUESTION_ID QuestionId, - IN UINT8 Type, - IN OUT EFI_IFR_TYPE_VALUE *Value, - OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN OUT EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest ); #endif - diff --git a/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigNvData.h b/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigNvData.h index 13813873e0..9b7855092a 100644 --- a/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigNvData.h +++ b/NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigNvData.h @@ -11,34 +11,32 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include -#define TLS_AUTH_CONFIG_GUID_SIZE 36 -#define TLS_AUTH_CONFIG_GUID_STORAGE_SIZE 37 - -#define TLS_AUTH_CONFIG_FORMID1_FORM 1 -#define TLS_AUTH_CONFIG_FORMID2_FORM 2 -#define TLS_AUTH_CONFIG_FORMID3_FORM 3 -#define TLS_AUTH_CONFIG_FORMID4_FORM 4 -#define TLS_AUTH_CONFIG_FORMID5_FORM 5 - - -#define KEY_TLS_AUTH_CONFIG_SERVER_CA 0x1000 -#define KEY_TLS_AUTH_CONFIG_CLIENT_CERT 0x1001 -#define KEY_TLS_AUTH_CONFIG_ENROLL_CERT 0x1002 -#define KEY_TLS_AUTH_CONFIG_DELETE_CERT 0x1003 -#define KEY_TLS_AUTH_CONFIG_ENROLL_CERT_FROM_FILE 0x1004 -#define KEY_TLS_AUTH_CONFIG_CERT_GUID 0x1005 -#define KEY_TLS_AUTH_CONFIG_VALUE_SAVE_AND_EXIT 0x1006 -#define KEY_TLS_AUTH_CONFIG_VALUE_NO_SAVE_AND_EXIT 0x1007 - -#define OPTION_DEL_CA_ESTION_ID 0x2000 -#define OPTION_CONFIG_RANGE 0x1000 - -#define LABEL_CA_DELETE 0x1101 -#define LABEL_END 0xffff +#define TLS_AUTH_CONFIG_GUID_SIZE 36 +#define TLS_AUTH_CONFIG_GUID_STORAGE_SIZE 37 + +#define TLS_AUTH_CONFIG_FORMID1_FORM 1 +#define TLS_AUTH_CONFIG_FORMID2_FORM 2 +#define TLS_AUTH_CONFIG_FORMID3_FORM 3 +#define TLS_AUTH_CONFIG_FORMID4_FORM 4 +#define TLS_AUTH_CONFIG_FORMID5_FORM 5 + +#define KEY_TLS_AUTH_CONFIG_SERVER_CA 0x1000 +#define KEY_TLS_AUTH_CONFIG_CLIENT_CERT 0x1001 +#define KEY_TLS_AUTH_CONFIG_ENROLL_CERT 0x1002 +#define KEY_TLS_AUTH_CONFIG_DELETE_CERT 0x1003 +#define KEY_TLS_AUTH_CONFIG_ENROLL_CERT_FROM_FILE 0x1004 +#define KEY_TLS_AUTH_CONFIG_CERT_GUID 0x1005 +#define KEY_TLS_AUTH_CONFIG_VALUE_SAVE_AND_EXIT 0x1006 +#define KEY_TLS_AUTH_CONFIG_VALUE_NO_SAVE_AND_EXIT 0x1007 + +#define OPTION_DEL_CA_ESTION_ID 0x2000 +#define OPTION_CONFIG_RANGE 0x1000 + +#define LABEL_CA_DELETE 0x1101 +#define LABEL_END 0xffff typedef struct { CHAR16 CertGuid[TLS_AUTH_CONFIG_GUID_STORAGE_SIZE]; } TLS_AUTH_CONFIG_IFR_NVDATA; #endif - diff --git a/NetworkPkg/TlsDxe/TlsConfigProtocol.c b/NetworkPkg/TlsDxe/TlsConfigProtocol.c index 344d8de217..33729fdf6c 100644 --- a/NetworkPkg/TlsDxe/TlsConfigProtocol.c +++ b/NetworkPkg/TlsDxe/TlsConfigProtocol.c @@ -43,13 +43,13 @@ TlsConfigurationSetData ( IN UINTN DataSize ) { - EFI_STATUS Status; - TLS_INSTANCE *Instance; - EFI_TPL OldTpl; + EFI_STATUS Status; + TLS_INSTANCE *Instance; + EFI_TPL OldTpl; Status = EFI_SUCCESS; - if (This == NULL || Data == NULL || DataSize == 0) { + if ((This == NULL) || (Data == NULL) || (DataSize == 0)) { return EFI_INVALID_PARAMETER; } @@ -58,20 +58,20 @@ TlsConfigurationSetData ( Instance = TLS_INSTANCE_FROM_CONFIGURATION (This); switch (DataType) { - case EfiTlsConfigDataTypeCACertificate: - Status = TlsSetCaCertificate (Instance->TlsConn, Data, DataSize); - break; - case EfiTlsConfigDataTypeHostPublicCert: - Status = TlsSetHostPublicCert (Instance->TlsConn, Data, DataSize); - break; - case EfiTlsConfigDataTypeHostPrivateKey: - Status = TlsSetHostPrivateKey (Instance->TlsConn, Data, DataSize); - break; - case EfiTlsConfigDataTypeCertRevocationList: - Status = TlsSetCertRevocationList (Data, DataSize); - break; - default: - Status = EFI_UNSUPPORTED; + case EfiTlsConfigDataTypeCACertificate: + Status = TlsSetCaCertificate (Instance->TlsConn, Data, DataSize); + break; + case EfiTlsConfigDataTypeHostPublicCert: + Status = TlsSetHostPublicCert (Instance->TlsConn, Data, DataSize); + break; + case EfiTlsConfigDataTypeHostPrivateKey: + Status = TlsSetHostPrivateKey (Instance->TlsConn, Data, DataSize); + break; + case EfiTlsConfigDataTypeCertRevocationList: + Status = TlsSetCertRevocationList (Data, DataSize); + break; + default: + Status = EFI_UNSUPPORTED; } gBS->RestoreTPL (OldTpl); @@ -109,14 +109,14 @@ TlsConfigurationGetData ( IN OUT UINTN *DataSize ) { - EFI_STATUS Status; - TLS_INSTANCE *Instance; + EFI_STATUS Status; + TLS_INSTANCE *Instance; - EFI_TPL OldTpl; + EFI_TPL OldTpl; Status = EFI_SUCCESS; - if (This == NULL || DataSize == NULL || (Data == NULL && *DataSize != 0)) { + if ((This == NULL) || (DataSize == NULL) || ((Data == NULL) && (*DataSize != 0))) { return EFI_INVALID_PARAMETER; } @@ -125,20 +125,20 @@ TlsConfigurationGetData ( Instance = TLS_INSTANCE_FROM_CONFIGURATION (This); switch (DataType) { - case EfiTlsConfigDataTypeCACertificate: - Status = TlsGetCaCertificate (Instance->TlsConn, Data, DataSize); - break; - case EfiTlsConfigDataTypeHostPublicCert: - Status = TlsGetHostPublicCert (Instance->TlsConn, Data, DataSize); - break; - case EfiTlsConfigDataTypeHostPrivateKey: - Status = TlsGetHostPrivateKey (Instance->TlsConn, Data, DataSize); - break; - case EfiTlsConfigDataTypeCertRevocationList: - Status = TlsGetCertRevocationList (Data, DataSize); - break; - default: - Status = EFI_UNSUPPORTED; + case EfiTlsConfigDataTypeCACertificate: + Status = TlsGetCaCertificate (Instance->TlsConn, Data, DataSize); + break; + case EfiTlsConfigDataTypeHostPublicCert: + Status = TlsGetHostPublicCert (Instance->TlsConn, Data, DataSize); + break; + case EfiTlsConfigDataTypeHostPrivateKey: + Status = TlsGetHostPrivateKey (Instance->TlsConn, Data, DataSize); + break; + case EfiTlsConfigDataTypeCertRevocationList: + Status = TlsGetCertRevocationList (Data, DataSize); + break; + default: + Status = EFI_UNSUPPORTED; } gBS->RestoreTPL (OldTpl); diff --git a/NetworkPkg/TlsDxe/TlsDriver.c b/NetworkPkg/TlsDxe/TlsDriver.c index e42ac60764..713d417dde 100644 --- a/NetworkPkg/TlsDxe/TlsDriver.c +++ b/NetworkPkg/TlsDxe/TlsDriver.c @@ -9,7 +9,7 @@ #include "TlsImpl.h" -EFI_SERVICE_BINDING_PROTOCOL mTlsServiceBinding = { +EFI_SERVICE_BINDING_PROTOCOL mTlsServiceBinding = { TlsServiceBindingCreateChild, TlsServiceBindingDestroyChild }; @@ -22,7 +22,7 @@ EFI_SERVICE_BINDING_PROTOCOL mTlsServiceBinding = { **/ VOID TlsCleanInstance ( - IN TLS_INSTANCE *Instance + IN TLS_INSTANCE *Instance ) { if (Instance != NULL) { @@ -46,11 +46,11 @@ TlsCleanInstance ( **/ EFI_STATUS TlsCreateInstance ( - IN TLS_SERVICE *Service, - OUT TLS_INSTANCE **Instance + IN TLS_SERVICE *Service, + OUT TLS_INSTANCE **Instance ) { - TLS_INSTANCE *TlsInstance; + TLS_INSTANCE *TlsInstance; *Instance = NULL; @@ -82,7 +82,7 @@ TlsCreateInstance ( **/ VOID TlsCleanService ( - IN TLS_SERVICE *Service + IN TLS_SERVICE *Service ) { if (Service != NULL) { @@ -106,11 +106,11 @@ TlsCleanService ( **/ EFI_STATUS TlsCreateService ( - IN EFI_HANDLE Image, - OUT TLS_SERVICE **Service + IN EFI_HANDLE Image, + OUT TLS_SERVICE **Service ) { - TLS_SERVICE *TlsService; + TLS_SERVICE *TlsService; ASSERT (Service != NULL); @@ -127,11 +127,11 @@ TlsCreateService ( // // Initialize TLS Service Data // - TlsService->Signature = TLS_SERVICE_SIGNATURE; + TlsService->Signature = TLS_SERVICE_SIGNATURE; CopyMem (&TlsService->ServiceBinding, &mTlsServiceBinding, sizeof (TlsService->ServiceBinding)); - TlsService->TlsChildrenNum = 0; + TlsService->TlsChildrenNum = 0; InitializeListHead (&TlsService->TlsChildrenList); - TlsService->ImageHandle = Image; + TlsService->ImageHandle = Image; *Service = TlsService; @@ -153,12 +153,12 @@ TlsUnload ( IN EFI_HANDLE ImageHandle ) { - EFI_STATUS Status; - UINTN HandleNum; - EFI_HANDLE *HandleBuffer; - UINT32 Index; - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - TLS_SERVICE *TlsService; + EFI_STATUS Status; + UINTN HandleNum; + EFI_HANDLE *HandleBuffer; + UINT32 Index; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + TLS_SERVICE *TlsService; HandleBuffer = NULL; ServiceBinding = NULL; @@ -185,7 +185,7 @@ TlsUnload ( Status = gBS->OpenProtocol ( HandleBuffer[Index], &gEfiTlsServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, ImageHandle, NULL, EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL @@ -201,7 +201,8 @@ TlsUnload ( // Status = gBS->UninstallMultipleProtocolInterfaces ( HandleBuffer[Index], - &gEfiTlsServiceBindingProtocolGuid, ServiceBinding, + &gEfiTlsServiceBindingProtocolGuid, + ServiceBinding, NULL ); if (EFI_ERROR (Status)) { @@ -236,9 +237,9 @@ TlsDriverEntryPoint ( IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; - TLS_SERVICE *TlsService; + TLS_SERVICE *TlsService; // // Create TLS Service @@ -312,10 +313,10 @@ TlsServiceBindingCreateChild ( IN EFI_HANDLE *ChildHandle ) { - TLS_SERVICE *TlsService; - TLS_INSTANCE *TlsInstance; - EFI_STATUS Status; - EFI_TPL OldTpl; + TLS_SERVICE *TlsService; + TLS_INSTANCE *TlsInstance; + EFI_STATUS Status; + EFI_TPL OldTpl; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -406,13 +407,13 @@ TlsServiceBindingDestroyChild ( IN EFI_HANDLE ChildHandle ) { - TLS_SERVICE *TlsService; - TLS_INSTANCE *TlsInstance; + TLS_SERVICE *TlsService; + TLS_INSTANCE *TlsInstance; - EFI_TLS_PROTOCOL *Tls; - EFI_TLS_CONFIGURATION_PROTOCOL *TlsConfig; - EFI_STATUS Status; - EFI_TPL OldTpl; + EFI_TLS_PROTOCOL *Tls; + EFI_TLS_CONFIGURATION_PROTOCOL *TlsConfig; + EFI_STATUS Status; + EFI_TPL OldTpl; if ((This == NULL) || (ChildHandle == NULL)) { return EFI_INVALID_PARAMETER; @@ -426,7 +427,7 @@ TlsServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiTlsProtocolGuid, - (VOID **) &Tls, + (VOID **)&Tls, TlsService->ImageHandle, NULL, EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL @@ -441,7 +442,7 @@ TlsServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiTlsConfigurationProtocolGuid, - (VOID **) &TlsConfig, + (VOID **)&TlsConfig, TlsService->ImageHandle, NULL, EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL @@ -450,7 +451,7 @@ TlsServiceBindingDestroyChild ( return Status; } - TlsInstance = TLS_INSTANCE_FROM_PROTOCOL (Tls); + TlsInstance = TLS_INSTANCE_FROM_PROTOCOL (Tls); if (TlsInstance->Service != TlsService) { return EFI_INVALID_PARAMETER; @@ -488,4 +489,3 @@ TlsServiceBindingDestroyChild ( return EFI_SUCCESS; } - diff --git a/NetworkPkg/TlsDxe/TlsDriver.h b/NetworkPkg/TlsDxe/TlsDriver.h index 64a81bd490..d3fe2b18fa 100644 --- a/NetworkPkg/TlsDxe/TlsDriver.h +++ b/NetworkPkg/TlsDxe/TlsDriver.h @@ -22,21 +22,20 @@ // #define TLS_VERSION 0x00000000 -#define TLS_SERVICE_SIGNATURE SIGNATURE_32 ('T', 'L', 'S', 'S') +#define TLS_SERVICE_SIGNATURE SIGNATURE_32 ('T', 'L', 'S', 'S') -#define TLS_INSTANCE_SIGNATURE SIGNATURE_32 ('T', 'L', 'S', 'I') +#define TLS_INSTANCE_SIGNATURE SIGNATURE_32 ('T', 'L', 'S', 'I') /// /// TLS Service Data /// -typedef struct _TLS_SERVICE TLS_SERVICE; +typedef struct _TLS_SERVICE TLS_SERVICE; /// /// TLS Instance Data /// typedef struct _TLS_INSTANCE TLS_INSTANCE; - struct _TLS_SERVICE { UINT32 Signature; EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; @@ -59,27 +58,26 @@ struct _TLS_SERVICE { }; struct _TLS_INSTANCE { - UINT32 Signature; - LIST_ENTRY Link; + UINT32 Signature; + LIST_ENTRY Link; - BOOLEAN InDestroy; + BOOLEAN InDestroy; - TLS_SERVICE *Service; - EFI_HANDLE ChildHandle; + TLS_SERVICE *Service; + EFI_HANDLE ChildHandle; - EFI_TLS_PROTOCOL Tls; - EFI_TLS_CONFIGURATION_PROTOCOL TlsConfig; + EFI_TLS_PROTOCOL Tls; + EFI_TLS_CONFIGURATION_PROTOCOL TlsConfig; - EFI_TLS_SESSION_STATE TlsSessionState; + EFI_TLS_SESSION_STATE TlsSessionState; // // Main SSL Connection which is created by a server or a client // per established connection. // - VOID *TlsConn; + VOID *TlsConn; }; - #define TLS_SERVICE_FROM_THIS(a) \ CR (a, TLS_SERVICE, ServiceBinding, TLS_SERVICE_SIGNATURE) @@ -89,7 +87,6 @@ struct _TLS_INSTANCE { #define TLS_INSTANCE_FROM_CONFIGURATION(a) \ CR (a, TLS_INSTANCE, TlsConfig, TLS_INSTANCE_SIGNATURE) - /** Release all the resources used by the TLS instance. @@ -98,7 +95,7 @@ struct _TLS_INSTANCE { **/ VOID TlsCleanInstance ( - IN TLS_INSTANCE *Instance + IN TLS_INSTANCE *Instance ); /** @@ -113,8 +110,8 @@ TlsCleanInstance ( **/ EFI_STATUS TlsCreateInstance ( - IN TLS_SERVICE *Service, - OUT TLS_INSTANCE **Instance + IN TLS_SERVICE *Service, + OUT TLS_INSTANCE **Instance ); /** @@ -125,7 +122,7 @@ TlsCreateInstance ( **/ VOID TlsCleanService ( - IN TLS_SERVICE *Service + IN TLS_SERVICE *Service ); /** @@ -140,8 +137,8 @@ TlsCleanService ( **/ EFI_STATUS TlsCreateService ( - IN EFI_HANDLE Image, - OUT TLS_SERVICE **Service + IN EFI_HANDLE Image, + OUT TLS_SERVICE **Service ); /** @@ -229,4 +226,3 @@ TlsServiceBindingDestroyChild ( ); #endif - diff --git a/NetworkPkg/TlsDxe/TlsImpl.c b/NetworkPkg/TlsDxe/TlsImpl.c index 352465b7e8..781bda813e 100644 --- a/NetworkPkg/TlsDxe/TlsImpl.c +++ b/NetworkPkg/TlsDxe/TlsImpl.c @@ -27,25 +27,25 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ EFI_STATUS TlsEncryptPacket ( - IN TLS_INSTANCE *TlsInstance, - IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, - IN UINT32 *FragmentCount + IN TLS_INSTANCE *TlsInstance, + IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, + IN UINT32 *FragmentCount ) { - EFI_STATUS Status; - UINTN Index; - UINT32 BytesCopied; - UINT32 BufferInSize; - UINT8 *BufferIn; - UINT8 *BufferInPtr; - TLS_RECORD_HEADER *RecordHeaderIn; - UINT16 ThisPlainMessageSize; - TLS_RECORD_HEADER *TempRecordHeader; - UINT16 ThisMessageSize; - UINT32 BufferOutSize; - UINT8 *BufferOut; - UINT32 RecordCount; - INTN Ret; + EFI_STATUS Status; + UINTN Index; + UINT32 BytesCopied; + UINT32 BufferInSize; + UINT8 *BufferIn; + UINT8 *BufferInPtr; + TLS_RECORD_HEADER *RecordHeaderIn; + UINT16 ThisPlainMessageSize; + TLS_RECORD_HEADER *TempRecordHeader; + UINT16 ThisMessageSize; + UINT32 BufferOutSize; + UINT8 *BufferOut; + UINT32 RecordCount; + INTN Ret; Status = EFI_SUCCESS; BytesCopied = 0; @@ -91,14 +91,15 @@ TlsEncryptPacket ( // Count TLS record number. // BufferInPtr = BufferIn; - while ((UINTN) BufferInPtr < (UINTN) BufferIn + BufferInSize) { - RecordHeaderIn = (TLS_RECORD_HEADER *) BufferInPtr; - if (RecordHeaderIn->ContentType != TlsContentTypeApplicationData || RecordHeaderIn->Length > TLS_PLAINTEXT_RECORD_MAX_PAYLOAD_LENGTH) { + while ((UINTN)BufferInPtr < (UINTN)BufferIn + BufferInSize) { + RecordHeaderIn = (TLS_RECORD_HEADER *)BufferInPtr; + if ((RecordHeaderIn->ContentType != TlsContentTypeApplicationData) || (RecordHeaderIn->Length > TLS_PLAINTEXT_RECORD_MAX_PAYLOAD_LENGTH)) { Status = EFI_INVALID_PARAMETER; goto ERROR; } + BufferInPtr += TLS_RECORD_HEADER_LENGTH + RecordHeaderIn->Length; - RecordCount ++; + RecordCount++; } // @@ -113,19 +114,19 @@ TlsEncryptPacket ( // // Parsing buffer. Received packet may have multiple TLS record messages. // - BufferInPtr = BufferIn; - TempRecordHeader = (TLS_RECORD_HEADER *) BufferOut; - while ((UINTN) BufferInPtr < (UINTN) BufferIn + BufferInSize) { - RecordHeaderIn = (TLS_RECORD_HEADER *) BufferInPtr; + BufferInPtr = BufferIn; + TempRecordHeader = (TLS_RECORD_HEADER *)BufferOut; + while ((UINTN)BufferInPtr < (UINTN)BufferIn + BufferInSize) { + RecordHeaderIn = (TLS_RECORD_HEADER *)BufferInPtr; ThisPlainMessageSize = RecordHeaderIn->Length; - TlsWrite (TlsInstance->TlsConn, (UINT8 *) (RecordHeaderIn + 1), ThisPlainMessageSize); + TlsWrite (TlsInstance->TlsConn, (UINT8 *)(RecordHeaderIn + 1), ThisPlainMessageSize); Ret = TlsCtrlTrafficOut (TlsInstance->TlsConn, (UINT8 *)(TempRecordHeader), TLS_RECORD_HEADER_LENGTH + TLS_CIPHERTEXT_RECORD_MAX_PAYLOAD_LENGTH); if (Ret > 0) { - ThisMessageSize = (UINT16) Ret; + ThisMessageSize = (UINT16)Ret; } else { // // No data was successfully encrypted, continue to encrypt other messages. @@ -137,7 +138,7 @@ TlsEncryptPacket ( BufferOutSize += ThisMessageSize; - BufferInPtr += TLS_RECORD_HEADER_LENGTH + ThisPlainMessageSize; + BufferInPtr += TLS_RECORD_HEADER_LENGTH + ThisPlainMessageSize; TempRecordHeader = (TLS_RECORD_HEADER *)((UINT8 *)TempRecordHeader + ThisMessageSize); } @@ -153,9 +154,9 @@ TlsEncryptPacket ( goto ERROR; } - (*FragmentTable)[0].FragmentBuffer = BufferOut; - (*FragmentTable)[0].FragmentLength = BufferOutSize; - *FragmentCount = 1; + (*FragmentTable)[0].FragmentBuffer = BufferOut; + (*FragmentTable)[0].FragmentLength = BufferOutSize; + *FragmentCount = 1; return Status; @@ -192,25 +193,25 @@ ERROR: **/ EFI_STATUS TlsDecryptPacket ( - IN TLS_INSTANCE *TlsInstance, - IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, - IN UINT32 *FragmentCount + IN TLS_INSTANCE *TlsInstance, + IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, + IN UINT32 *FragmentCount ) { - EFI_STATUS Status; - UINTN Index; - UINT32 BytesCopied; - UINT8 *BufferIn; - UINT32 BufferInSize; - UINT8 *BufferInPtr; - TLS_RECORD_HEADER *RecordHeaderIn; - UINT16 ThisCipherMessageSize; - TLS_RECORD_HEADER *TempRecordHeader; - UINT16 ThisPlainMessageSize; - UINT8 *BufferOut; - UINT32 BufferOutSize; - UINT32 RecordCount; - INTN Ret; + EFI_STATUS Status; + UINTN Index; + UINT32 BytesCopied; + UINT8 *BufferIn; + UINT32 BufferInSize; + UINT8 *BufferInPtr; + TLS_RECORD_HEADER *RecordHeaderIn; + UINT16 ThisCipherMessageSize; + TLS_RECORD_HEADER *TempRecordHeader; + UINT16 ThisPlainMessageSize; + UINT8 *BufferOut; + UINT32 BufferOutSize; + UINT32 RecordCount; + INTN Ret; Status = EFI_SUCCESS; BytesCopied = 0; @@ -256,14 +257,15 @@ TlsDecryptPacket ( // Count TLS record number. // BufferInPtr = BufferIn; - while ((UINTN) BufferInPtr < (UINTN) BufferIn + BufferInSize) { - RecordHeaderIn = (TLS_RECORD_HEADER *) BufferInPtr; - if (RecordHeaderIn->ContentType != TlsContentTypeApplicationData || NTOHS (RecordHeaderIn->Length) > TLS_CIPHERTEXT_RECORD_MAX_PAYLOAD_LENGTH) { + while ((UINTN)BufferInPtr < (UINTN)BufferIn + BufferInSize) { + RecordHeaderIn = (TLS_RECORD_HEADER *)BufferInPtr; + if ((RecordHeaderIn->ContentType != TlsContentTypeApplicationData) || (NTOHS (RecordHeaderIn->Length) > TLS_CIPHERTEXT_RECORD_MAX_PAYLOAD_LENGTH)) { Status = EFI_INVALID_PARAMETER; goto ERROR; } + BufferInPtr += TLS_RECORD_HEADER_LENGTH + NTOHS (RecordHeaderIn->Length); - RecordCount ++; + RecordCount++; } // @@ -278,25 +280,25 @@ TlsDecryptPacket ( // // Parsing buffer. Received packet may have multiple TLS record messages. // - BufferInPtr = BufferIn; - TempRecordHeader = (TLS_RECORD_HEADER *) BufferOut; - while ((UINTN) BufferInPtr < (UINTN) BufferIn + BufferInSize) { - RecordHeaderIn = (TLS_RECORD_HEADER *) BufferInPtr; + BufferInPtr = BufferIn; + TempRecordHeader = (TLS_RECORD_HEADER *)BufferOut; + while ((UINTN)BufferInPtr < (UINTN)BufferIn + BufferInSize) { + RecordHeaderIn = (TLS_RECORD_HEADER *)BufferInPtr; ThisCipherMessageSize = NTOHS (RecordHeaderIn->Length); - Ret = TlsCtrlTrafficIn (TlsInstance->TlsConn, (UINT8 *) (RecordHeaderIn), TLS_RECORD_HEADER_LENGTH + ThisCipherMessageSize); + Ret = TlsCtrlTrafficIn (TlsInstance->TlsConn, (UINT8 *)(RecordHeaderIn), TLS_RECORD_HEADER_LENGTH + ThisCipherMessageSize); if (Ret != TLS_RECORD_HEADER_LENGTH + ThisCipherMessageSize) { TlsInstance->TlsSessionState = EfiTlsSessionError; - Status = EFI_ABORTED; + Status = EFI_ABORTED; goto ERROR; } Ret = 0; - Ret = TlsRead (TlsInstance->TlsConn, (UINT8 *) (TempRecordHeader + 1), TLS_PLAINTEXT_RECORD_MAX_PAYLOAD_LENGTH); + Ret = TlsRead (TlsInstance->TlsConn, (UINT8 *)(TempRecordHeader + 1), TLS_PLAINTEXT_RECORD_MAX_PAYLOAD_LENGTH); if (Ret > 0) { - ThisPlainMessageSize = (UINT16) Ret; + ThisPlainMessageSize = (UINT16)Ret; } else { // // No data was successfully decrypted, continue to decrypt other messages. @@ -308,9 +310,9 @@ TlsDecryptPacket ( CopyMem (TempRecordHeader, RecordHeaderIn, TLS_RECORD_HEADER_LENGTH); TempRecordHeader->Length = ThisPlainMessageSize; - BufferOutSize += TLS_RECORD_HEADER_LENGTH + ThisPlainMessageSize; + BufferOutSize += TLS_RECORD_HEADER_LENGTH + ThisPlainMessageSize; - BufferInPtr += TLS_RECORD_HEADER_LENGTH + ThisCipherMessageSize; + BufferInPtr += TLS_RECORD_HEADER_LENGTH + ThisCipherMessageSize; TempRecordHeader = (TLS_RECORD_HEADER *)((UINT8 *)TempRecordHeader + TLS_RECORD_HEADER_LENGTH + ThisPlainMessageSize); } @@ -326,9 +328,9 @@ TlsDecryptPacket ( goto ERROR; } - (*FragmentTable)[0].FragmentBuffer = BufferOut; - (*FragmentTable)[0].FragmentLength = BufferOutSize; - *FragmentCount = 1; + (*FragmentTable)[0].FragmentBuffer = BufferOut; + (*FragmentTable)[0].FragmentLength = BufferOutSize; + *FragmentCount = 1; return Status; diff --git a/NetworkPkg/TlsDxe/TlsImpl.h b/NetworkPkg/TlsDxe/TlsImpl.h index 391f86ef60..b087c9df28 100644 --- a/NetworkPkg/TlsDxe/TlsImpl.h +++ b/NetworkPkg/TlsDxe/TlsImpl.h @@ -58,9 +58,9 @@ extern EFI_TLS_CONFIGURATION_PROTOCOL mTlsConfigurationProtocol; **/ EFI_STATUS TlsEncryptPacket ( - IN TLS_INSTANCE *TlsInstance, - IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, - IN UINT32 *FragmentCount + IN TLS_INSTANCE *TlsInstance, + IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, + IN UINT32 *FragmentCount ); /** @@ -81,9 +81,9 @@ TlsEncryptPacket ( **/ EFI_STATUS TlsDecryptPacket ( - IN TLS_INSTANCE *TlsInstance, - IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, - IN UINT32 *FragmentCount + IN TLS_INSTANCE *TlsInstance, + IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, + IN UINT32 *FragmentCount ); /** @@ -114,10 +114,10 @@ TlsDecryptPacket ( EFI_STATUS EFIAPI TlsSetSessionData ( - IN EFI_TLS_PROTOCOL *This, - IN EFI_TLS_SESSION_DATA_TYPE DataType, - IN VOID *Data, - IN UINTN DataSize + IN EFI_TLS_PROTOCOL *This, + IN EFI_TLS_SESSION_DATA_TYPE DataType, + IN VOID *Data, + IN UINTN DataSize ); /** @@ -146,10 +146,10 @@ TlsSetSessionData ( EFI_STATUS EFIAPI TlsGetSessionData ( - IN EFI_TLS_PROTOCOL *This, - IN EFI_TLS_SESSION_DATA_TYPE DataType, - IN OUT VOID *Data OPTIONAL, - IN OUT UINTN *DataSize + IN EFI_TLS_PROTOCOL *This, + IN EFI_TLS_SESSION_DATA_TYPE DataType, + IN OUT VOID *Data OPTIONAL, + IN OUT UINTN *DataSize ); /** @@ -193,11 +193,11 @@ TlsGetSessionData ( EFI_STATUS EFIAPI TlsBuildResponsePacket ( - IN EFI_TLS_PROTOCOL *This, - IN UINT8 *RequestBuffer OPTIONAL, - IN UINTN RequestSize OPTIONAL, - OUT UINT8 *Buffer OPTIONAL, - IN OUT UINTN *BufferSize + IN EFI_TLS_PROTOCOL *This, + IN UINT8 *RequestBuffer OPTIONAL, + IN UINTN RequestSize OPTIONAL, + OUT UINT8 *Buffer OPTIONAL, + IN OUT UINTN *BufferSize ); /** @@ -237,10 +237,10 @@ TlsBuildResponsePacket ( EFI_STATUS EFIAPI TlsProcessPacket ( - IN EFI_TLS_PROTOCOL *This, - IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, - IN UINT32 *FragmentCount, - IN EFI_TLS_CRYPT_MODE CryptMode + IN EFI_TLS_PROTOCOL *This, + IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, + IN UINT32 *FragmentCount, + IN EFI_TLS_CRYPT_MODE CryptMode ); /** diff --git a/NetworkPkg/TlsDxe/TlsProtocol.c b/NetworkPkg/TlsDxe/TlsProtocol.c index b814de5b35..b22ed900ba 100644 --- a/NetworkPkg/TlsDxe/TlsProtocol.c +++ b/NetworkPkg/TlsDxe/TlsProtocol.c @@ -45,29 +45,29 @@ EFI_TLS_PROTOCOL mTlsProtocol = { EFI_STATUS EFIAPI TlsSetSessionData ( - IN EFI_TLS_PROTOCOL *This, - IN EFI_TLS_SESSION_DATA_TYPE DataType, - IN VOID *Data, - IN UINTN DataSize + IN EFI_TLS_PROTOCOL *This, + IN EFI_TLS_SESSION_DATA_TYPE DataType, + IN VOID *Data, + IN UINTN DataSize ) { - EFI_STATUS Status; - TLS_INSTANCE *Instance; - UINT16 *CipherId; - CONST EFI_TLS_CIPHER *TlsCipherList; - UINTN CipherCount; - CONST EFI_TLS_VERIFY_HOST *TlsVerifyHost; - EFI_TLS_VERIFY VerifyMethod; - UINTN VerifyMethodSize; - UINTN Index; - - EFI_TPL OldTpl; + EFI_STATUS Status; + TLS_INSTANCE *Instance; + UINT16 *CipherId; + CONST EFI_TLS_CIPHER *TlsCipherList; + UINTN CipherCount; + CONST EFI_TLS_VERIFY_HOST *TlsVerifyHost; + EFI_TLS_VERIFY VerifyMethod; + UINTN VerifyMethodSize; + UINTN Index; + + EFI_TPL OldTpl; Status = EFI_SUCCESS; CipherId = NULL; VerifyMethodSize = sizeof (EFI_TLS_VERIFY); - if (This == NULL || Data == NULL || DataSize == 0) { + if ((This == NULL) || (Data == NULL) || (DataSize == 0)) { return EFI_INVALID_PARAMETER; } @@ -75,155 +75,157 @@ TlsSetSessionData ( Instance = TLS_INSTANCE_FROM_PROTOCOL (This); - if (DataType != EfiTlsSessionState && Instance->TlsSessionState != EfiTlsSessionNotStarted){ + if ((DataType != EfiTlsSessionState) && (Instance->TlsSessionState != EfiTlsSessionNotStarted)) { Status = EFI_NOT_READY; goto ON_EXIT; } switch (DataType) { - // - // Session Configuration - // - case EfiTlsVersion: - if (DataSize != sizeof (EFI_TLS_VERSION)) { - Status = EFI_INVALID_PARAMETER; - goto ON_EXIT; - } + // + // Session Configuration + // + case EfiTlsVersion: + if (DataSize != sizeof (EFI_TLS_VERSION)) { + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; + } - Status = TlsSetVersion (Instance->TlsConn, ((EFI_TLS_VERSION *) Data)->Major, ((EFI_TLS_VERSION *) Data)->Minor); - break; - case EfiTlsConnectionEnd: - if (DataSize != sizeof (EFI_TLS_CONNECTION_END)) { - Status = EFI_INVALID_PARAMETER; - goto ON_EXIT; - } + Status = TlsSetVersion (Instance->TlsConn, ((EFI_TLS_VERSION *)Data)->Major, ((EFI_TLS_VERSION *)Data)->Minor); + break; + case EfiTlsConnectionEnd: + if (DataSize != sizeof (EFI_TLS_CONNECTION_END)) { + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; + } - Status = TlsSetConnectionEnd (Instance->TlsConn, *((EFI_TLS_CONNECTION_END *) Data)); - break; - case EfiTlsCipherList: - if (DataSize % sizeof (EFI_TLS_CIPHER) != 0) { - Status = EFI_INVALID_PARAMETER; - goto ON_EXIT; - } + Status = TlsSetConnectionEnd (Instance->TlsConn, *((EFI_TLS_CONNECTION_END *)Data)); + break; + case EfiTlsCipherList: + if (DataSize % sizeof (EFI_TLS_CIPHER) != 0) { + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; + } - CipherId = AllocatePool (DataSize); - if (CipherId == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto ON_EXIT; - } + CipherId = AllocatePool (DataSize); + if (CipherId == NULL) { + Status = EFI_OUT_OF_RESOURCES; + goto ON_EXIT; + } - TlsCipherList = (CONST EFI_TLS_CIPHER *) Data; - CipherCount = DataSize / sizeof (EFI_TLS_CIPHER); - for (Index = 0; Index < CipherCount; Index++) { - CipherId[Index] = ((TlsCipherList[Index].Data1 << 8) | - TlsCipherList[Index].Data2); - } + TlsCipherList = (CONST EFI_TLS_CIPHER *)Data; + CipherCount = DataSize / sizeof (EFI_TLS_CIPHER); + for (Index = 0; Index < CipherCount; Index++) { + CipherId[Index] = ((TlsCipherList[Index].Data1 << 8) | + TlsCipherList[Index].Data2); + } - Status = TlsSetCipherList (Instance->TlsConn, CipherId, CipherCount); + Status = TlsSetCipherList (Instance->TlsConn, CipherId, CipherCount); - FreePool (CipherId); - break; - case EfiTlsCompressionMethod: - // - // TLS seems only define one CompressionMethod.null, which specifies that data exchanged via the - // record protocol will not be compressed. - // More information from OpenSSL: http://www.openssl.org/docs/manmaster/ssl/SSL_COMP_add_compression_method.html - // The TLS RFC does however not specify compression methods or their corresponding identifiers, - // so there is currently no compatible way to integrate compression with unknown peers. - // It is therefore currently not recommended to integrate compression into applications. - // Applications for non-public use may agree on certain compression methods. - // Using different compression methods with the same identifier will lead to connection failure. - // - for (Index = 0; Index < DataSize / sizeof (EFI_TLS_COMPRESSION); Index++) { - Status = TlsSetCompressionMethod (*((UINT8 *) Data + Index)); - if (EFI_ERROR (Status)) { - break; + FreePool (CipherId); + break; + case EfiTlsCompressionMethod: + // + // TLS seems only define one CompressionMethod.null, which specifies that data exchanged via the + // record protocol will not be compressed. + // More information from OpenSSL: http://www.openssl.org/docs/manmaster/ssl/SSL_COMP_add_compression_method.html + // The TLS RFC does however not specify compression methods or their corresponding identifiers, + // so there is currently no compatible way to integrate compression with unknown peers. + // It is therefore currently not recommended to integrate compression into applications. + // Applications for non-public use may agree on certain compression methods. + // Using different compression methods with the same identifier will lead to connection failure. + // + for (Index = 0; Index < DataSize / sizeof (EFI_TLS_COMPRESSION); Index++) { + Status = TlsSetCompressionMethod (*((UINT8 *)Data + Index)); + if (EFI_ERROR (Status)) { + break; + } } - } - break; - case EfiTlsExtensionData: - Status = EFI_UNSUPPORTED; - goto ON_EXIT; - case EfiTlsVerifyMethod: - if (DataSize != sizeof (EFI_TLS_VERIFY)) { - Status = EFI_INVALID_PARAMETER; + break; + case EfiTlsExtensionData: + Status = EFI_UNSUPPORTED; goto ON_EXIT; - } + case EfiTlsVerifyMethod: + if (DataSize != sizeof (EFI_TLS_VERIFY)) { + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; + } - TlsSetVerify (Instance->TlsConn, *((UINT32 *) Data)); - break; - case EfiTlsVerifyHost: - if (DataSize != sizeof (EFI_TLS_VERIFY_HOST)) { - Status = EFI_INVALID_PARAMETER; - goto ON_EXIT; - } + TlsSetVerify (Instance->TlsConn, *((UINT32 *)Data)); + break; + case EfiTlsVerifyHost: + if (DataSize != sizeof (EFI_TLS_VERIFY_HOST)) { + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; + } - TlsVerifyHost = (CONST EFI_TLS_VERIFY_HOST *) Data; + TlsVerifyHost = (CONST EFI_TLS_VERIFY_HOST *)Data; - if ((TlsVerifyHost->Flags & EFI_TLS_VERIFY_FLAG_ALWAYS_CHECK_SUBJECT) != 0 && - (TlsVerifyHost->Flags & EFI_TLS_VERIFY_FLAG_NEVER_CHECK_SUBJECT) != 0) { - Status = EFI_INVALID_PARAMETER; - goto ON_EXIT; - } + if (((TlsVerifyHost->Flags & EFI_TLS_VERIFY_FLAG_ALWAYS_CHECK_SUBJECT) != 0) && + ((TlsVerifyHost->Flags & EFI_TLS_VERIFY_FLAG_NEVER_CHECK_SUBJECT) != 0)) + { + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; + } - if ((TlsVerifyHost->Flags & EFI_TLS_VERIFY_FLAG_NO_WILDCARDS) != 0 && - ((TlsVerifyHost->Flags & EFI_TLS_VERIFY_FLAG_NO_PARTIAL_WILDCARDS) != 0 || - (TlsVerifyHost->Flags & EFI_TLS_VERIFY_FLAG_MULTI_LABEL_WILDCARDS) != 0)) { - Status = EFI_INVALID_PARAMETER; - goto ON_EXIT; - } + if (((TlsVerifyHost->Flags & EFI_TLS_VERIFY_FLAG_NO_WILDCARDS) != 0) && + (((TlsVerifyHost->Flags & EFI_TLS_VERIFY_FLAG_NO_PARTIAL_WILDCARDS) != 0) || + ((TlsVerifyHost->Flags & EFI_TLS_VERIFY_FLAG_MULTI_LABEL_WILDCARDS) != 0))) + { + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; + } - Status = This->GetSessionData (This, EfiTlsVerifyMethod, &VerifyMethod, &VerifyMethodSize); - if (EFI_ERROR (Status)) { - goto ON_EXIT; - } + Status = This->GetSessionData (This, EfiTlsVerifyMethod, &VerifyMethod, &VerifyMethodSize); + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } - if ((VerifyMethod & EFI_TLS_VERIFY_PEER) == 0) { - Status = EFI_INVALID_PARAMETER; - goto ON_EXIT; - } + if ((VerifyMethod & EFI_TLS_VERIFY_PEER) == 0) { + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; + } - Status = TlsSetVerifyHost (Instance->TlsConn, TlsVerifyHost->Flags, TlsVerifyHost->HostName); + Status = TlsSetVerifyHost (Instance->TlsConn, TlsVerifyHost->Flags, TlsVerifyHost->HostName); - break; - case EfiTlsSessionID: - if (DataSize != sizeof (EFI_TLS_SESSION_ID)) { - Status = EFI_INVALID_PARAMETER; - goto ON_EXIT; - } + break; + case EfiTlsSessionID: + if (DataSize != sizeof (EFI_TLS_SESSION_ID)) { + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; + } - Status = TlsSetSessionId ( - Instance->TlsConn, - ((EFI_TLS_SESSION_ID *) Data)->Data, - ((EFI_TLS_SESSION_ID *) Data)->Length - ); - break; - case EfiTlsSessionState: - if (DataSize != sizeof (EFI_TLS_SESSION_STATE)) { - Status = EFI_INVALID_PARAMETER; - goto ON_EXIT; - } + Status = TlsSetSessionId ( + Instance->TlsConn, + ((EFI_TLS_SESSION_ID *)Data)->Data, + ((EFI_TLS_SESSION_ID *)Data)->Length + ); + break; + case EfiTlsSessionState: + if (DataSize != sizeof (EFI_TLS_SESSION_STATE)) { + Status = EFI_INVALID_PARAMETER; + goto ON_EXIT; + } - Instance->TlsSessionState = *(EFI_TLS_SESSION_STATE *) Data; - break; - // - // Session information - // - case EfiTlsClientRandom: - Status = EFI_ACCESS_DENIED; - break; - case EfiTlsServerRandom: - Status = EFI_ACCESS_DENIED; - break; - case EfiTlsKeyMaterial: - Status = EFI_ACCESS_DENIED; - break; - // - // Unsupported type. - // - default: - Status = EFI_UNSUPPORTED; + Instance->TlsSessionState = *(EFI_TLS_SESSION_STATE *)Data; + break; + // + // Session information + // + case EfiTlsClientRandom: + Status = EFI_ACCESS_DENIED; + break; + case EfiTlsServerRandom: + Status = EFI_ACCESS_DENIED; + break; + case EfiTlsKeyMaterial: + Status = EFI_ACCESS_DENIED; + break; + // + // Unsupported type. + // + default: + Status = EFI_UNSUPPORTED; } ON_EXIT: @@ -257,20 +259,20 @@ ON_EXIT: EFI_STATUS EFIAPI TlsGetSessionData ( - IN EFI_TLS_PROTOCOL *This, - IN EFI_TLS_SESSION_DATA_TYPE DataType, - IN OUT VOID *Data OPTIONAL, - IN OUT UINTN *DataSize + IN EFI_TLS_PROTOCOL *This, + IN EFI_TLS_SESSION_DATA_TYPE DataType, + IN OUT VOID *Data OPTIONAL, + IN OUT UINTN *DataSize ) { - EFI_STATUS Status; - TLS_INSTANCE *Instance; + EFI_STATUS Status; + TLS_INSTANCE *Instance; - EFI_TPL OldTpl; + EFI_TPL OldTpl; Status = EFI_SUCCESS; - if (This == NULL || DataSize == NULL || (Data == NULL && *DataSize != 0)) { + if ((This == NULL) || (DataSize == NULL) || ((Data == NULL) && (*DataSize != 0))) { return EFI_INVALID_PARAMETER; } @@ -278,123 +280,134 @@ TlsGetSessionData ( Instance = TLS_INSTANCE_FROM_PROTOCOL (This); - if (Instance->TlsSessionState == EfiTlsSessionNotStarted && - (DataType == EfiTlsSessionID || DataType == EfiTlsClientRandom || - DataType == EfiTlsServerRandom || DataType == EfiTlsKeyMaterial)) { + if ((Instance->TlsSessionState == EfiTlsSessionNotStarted) && + ((DataType == EfiTlsSessionID) || (DataType == EfiTlsClientRandom) || + (DataType == EfiTlsServerRandom) || (DataType == EfiTlsKeyMaterial))) + { Status = EFI_NOT_READY; goto ON_EXIT; } switch (DataType) { - case EfiTlsVersion: - if (*DataSize < sizeof (EFI_TLS_VERSION)) { - *DataSize = sizeof (EFI_TLS_VERSION); - Status = EFI_BUFFER_TOO_SMALL; - goto ON_EXIT; - } - *DataSize = sizeof (EFI_TLS_VERSION); - *((UINT16 *) Data) = HTONS (TlsGetVersion (Instance->TlsConn)); - break; - case EfiTlsConnectionEnd: - if (*DataSize < sizeof (EFI_TLS_CONNECTION_END)) { - *DataSize = sizeof (EFI_TLS_CONNECTION_END); - Status = EFI_BUFFER_TOO_SMALL; - goto ON_EXIT; - } - *DataSize = sizeof (EFI_TLS_CONNECTION_END); - *((UINT8 *) Data) = TlsGetConnectionEnd (Instance->TlsConn); - break; - case EfiTlsCipherList: - // - // Get the current session cipher suite. - // - if (*DataSize < sizeof (EFI_TLS_CIPHER)) { - *DataSize = sizeof (EFI_TLS_CIPHER); - Status = EFI_BUFFER_TOO_SMALL; - goto ON_EXIT; - } - *DataSize = sizeof(EFI_TLS_CIPHER); - Status = TlsGetCurrentCipher (Instance->TlsConn, (UINT16 *) Data); - *((UINT16 *) Data) = HTONS (*((UINT16 *) Data)); - break; - case EfiTlsCompressionMethod: - // - // Get the current session compression method. - // - if (*DataSize < sizeof (EFI_TLS_COMPRESSION)) { + case EfiTlsVersion: + if (*DataSize < sizeof (EFI_TLS_VERSION)) { + *DataSize = sizeof (EFI_TLS_VERSION); + Status = EFI_BUFFER_TOO_SMALL; + goto ON_EXIT; + } + + *DataSize = sizeof (EFI_TLS_VERSION); + *((UINT16 *)Data) = HTONS (TlsGetVersion (Instance->TlsConn)); + break; + case EfiTlsConnectionEnd: + if (*DataSize < sizeof (EFI_TLS_CONNECTION_END)) { + *DataSize = sizeof (EFI_TLS_CONNECTION_END); + Status = EFI_BUFFER_TOO_SMALL; + goto ON_EXIT; + } + + *DataSize = sizeof (EFI_TLS_CONNECTION_END); + *((UINT8 *)Data) = TlsGetConnectionEnd (Instance->TlsConn); + break; + case EfiTlsCipherList: + // + // Get the current session cipher suite. + // + if (*DataSize < sizeof (EFI_TLS_CIPHER)) { + *DataSize = sizeof (EFI_TLS_CIPHER); + Status = EFI_BUFFER_TOO_SMALL; + goto ON_EXIT; + } + + *DataSize = sizeof (EFI_TLS_CIPHER); + Status = TlsGetCurrentCipher (Instance->TlsConn, (UINT16 *)Data); + *((UINT16 *)Data) = HTONS (*((UINT16 *)Data)); + break; + case EfiTlsCompressionMethod: + // + // Get the current session compression method. + // + if (*DataSize < sizeof (EFI_TLS_COMPRESSION)) { + *DataSize = sizeof (EFI_TLS_COMPRESSION); + Status = EFI_BUFFER_TOO_SMALL; + goto ON_EXIT; + } + *DataSize = sizeof (EFI_TLS_COMPRESSION); - Status = EFI_BUFFER_TOO_SMALL; - goto ON_EXIT; - } - *DataSize = sizeof (EFI_TLS_COMPRESSION); - Status = TlsGetCurrentCompressionId (Instance->TlsConn, (UINT8 *) Data); - break; - case EfiTlsExtensionData: - Status = EFI_UNSUPPORTED; - goto ON_EXIT; - case EfiTlsVerifyMethod: - if (*DataSize < sizeof (EFI_TLS_VERIFY)) { - *DataSize = sizeof (EFI_TLS_VERIFY); - Status = EFI_BUFFER_TOO_SMALL; + Status = TlsGetCurrentCompressionId (Instance->TlsConn, (UINT8 *)Data); + break; + case EfiTlsExtensionData: + Status = EFI_UNSUPPORTED; goto ON_EXIT; - } - *DataSize = sizeof (EFI_TLS_VERIFY); - *((UINT32 *) Data) = TlsGetVerify (Instance->TlsConn); - break; - case EfiTlsSessionID: - if (*DataSize < sizeof (EFI_TLS_SESSION_ID)) { + case EfiTlsVerifyMethod: + if (*DataSize < sizeof (EFI_TLS_VERIFY)) { + *DataSize = sizeof (EFI_TLS_VERIFY); + Status = EFI_BUFFER_TOO_SMALL; + goto ON_EXIT; + } + + *DataSize = sizeof (EFI_TLS_VERIFY); + *((UINT32 *)Data) = TlsGetVerify (Instance->TlsConn); + break; + case EfiTlsSessionID: + if (*DataSize < sizeof (EFI_TLS_SESSION_ID)) { + *DataSize = sizeof (EFI_TLS_SESSION_ID); + Status = EFI_BUFFER_TOO_SMALL; + goto ON_EXIT; + } + *DataSize = sizeof (EFI_TLS_SESSION_ID); - Status = EFI_BUFFER_TOO_SMALL; - goto ON_EXIT; - } - *DataSize = sizeof (EFI_TLS_SESSION_ID); - Status = TlsGetSessionId ( - Instance->TlsConn, - ((EFI_TLS_SESSION_ID *) Data)->Data, - &(((EFI_TLS_SESSION_ID *) Data)->Length) - ); - break; - case EfiTlsSessionState: - if (*DataSize < sizeof (EFI_TLS_SESSION_STATE)) { + Status = TlsGetSessionId ( + Instance->TlsConn, + ((EFI_TLS_SESSION_ID *)Data)->Data, + &(((EFI_TLS_SESSION_ID *)Data)->Length) + ); + break; + case EfiTlsSessionState: + if (*DataSize < sizeof (EFI_TLS_SESSION_STATE)) { + *DataSize = sizeof (EFI_TLS_SESSION_STATE); + Status = EFI_BUFFER_TOO_SMALL; + goto ON_EXIT; + } + *DataSize = sizeof (EFI_TLS_SESSION_STATE); - Status = EFI_BUFFER_TOO_SMALL; - goto ON_EXIT; - } - *DataSize = sizeof (EFI_TLS_SESSION_STATE); - CopyMem (Data, &Instance->TlsSessionState, *DataSize); - break; - case EfiTlsClientRandom: - if (*DataSize < sizeof (EFI_TLS_RANDOM)) { + CopyMem (Data, &Instance->TlsSessionState, *DataSize); + break; + case EfiTlsClientRandom: + if (*DataSize < sizeof (EFI_TLS_RANDOM)) { + *DataSize = sizeof (EFI_TLS_RANDOM); + Status = EFI_BUFFER_TOO_SMALL; + goto ON_EXIT; + } + *DataSize = sizeof (EFI_TLS_RANDOM); - Status = EFI_BUFFER_TOO_SMALL; - goto ON_EXIT; - } - *DataSize = sizeof (EFI_TLS_RANDOM); - TlsGetClientRandom (Instance->TlsConn, (UINT8 *) Data); - break; - case EfiTlsServerRandom: - if (*DataSize < sizeof (EFI_TLS_RANDOM)) { + TlsGetClientRandom (Instance->TlsConn, (UINT8 *)Data); + break; + case EfiTlsServerRandom: + if (*DataSize < sizeof (EFI_TLS_RANDOM)) { + *DataSize = sizeof (EFI_TLS_RANDOM); + Status = EFI_BUFFER_TOO_SMALL; + goto ON_EXIT; + } + *DataSize = sizeof (EFI_TLS_RANDOM); - Status = EFI_BUFFER_TOO_SMALL; - goto ON_EXIT; - } - *DataSize = sizeof (EFI_TLS_RANDOM); - TlsGetServerRandom (Instance->TlsConn, (UINT8 *) Data); - break; - case EfiTlsKeyMaterial: - if (*DataSize < sizeof (EFI_TLS_MASTER_SECRET)) { + TlsGetServerRandom (Instance->TlsConn, (UINT8 *)Data); + break; + case EfiTlsKeyMaterial: + if (*DataSize < sizeof (EFI_TLS_MASTER_SECRET)) { + *DataSize = sizeof (EFI_TLS_MASTER_SECRET); + Status = EFI_BUFFER_TOO_SMALL; + goto ON_EXIT; + } + *DataSize = sizeof (EFI_TLS_MASTER_SECRET); - Status = EFI_BUFFER_TOO_SMALL; - goto ON_EXIT; - } - *DataSize = sizeof (EFI_TLS_MASTER_SECRET); - Status = TlsGetKeyMaterial (Instance->TlsConn, (UINT8 *) Data); - break; - // - // Unsupported type. - // - default: - Status = EFI_UNSUPPORTED; + Status = TlsGetKeyMaterial (Instance->TlsConn, (UINT8 *)Data); + break; + // + // Unsupported type. + // + default: + Status = EFI_UNSUPPORTED; } ON_EXIT: @@ -443,23 +456,24 @@ ON_EXIT: EFI_STATUS EFIAPI TlsBuildResponsePacket ( - IN EFI_TLS_PROTOCOL *This, - IN UINT8 *RequestBuffer OPTIONAL, - IN UINTN RequestSize OPTIONAL, - OUT UINT8 *Buffer OPTIONAL, - IN OUT UINTN *BufferSize + IN EFI_TLS_PROTOCOL *This, + IN UINT8 *RequestBuffer OPTIONAL, + IN UINTN RequestSize OPTIONAL, + OUT UINT8 *Buffer OPTIONAL, + IN OUT UINTN *BufferSize ) { - EFI_STATUS Status; - TLS_INSTANCE *Instance; - EFI_TPL OldTpl; + EFI_STATUS Status; + TLS_INSTANCE *Instance; + EFI_TPL OldTpl; Status = EFI_SUCCESS; if ((This == NULL) || (BufferSize == NULL) || - (RequestBuffer == NULL && RequestSize != 0) || - (RequestBuffer != NULL && RequestSize == 0) || - (Buffer == NULL && *BufferSize !=0)) { + ((RequestBuffer == NULL) && (RequestSize != 0)) || + ((RequestBuffer != NULL) && (RequestSize == 0)) || + ((Buffer == NULL) && (*BufferSize != 0))) + { return EFI_INVALID_PARAMETER; } @@ -467,78 +481,78 @@ TlsBuildResponsePacket ( Instance = TLS_INSTANCE_FROM_PROTOCOL (This); - if(RequestBuffer == NULL && RequestSize == 0) { + if ((RequestBuffer == NULL) && (RequestSize == 0)) { switch (Instance->TlsSessionState) { - case EfiTlsSessionNotStarted: - // - // ClientHello. - // - Status = TlsDoHandshake ( - Instance->TlsConn, - NULL, - 0, - Buffer, - BufferSize - ); - if (EFI_ERROR (Status)) { - goto ON_EXIT; - } + case EfiTlsSessionNotStarted: + // + // ClientHello. + // + Status = TlsDoHandshake ( + Instance->TlsConn, + NULL, + 0, + Buffer, + BufferSize + ); + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } - // - // *BufferSize should not be zero when ClientHello. - // - if (*BufferSize == 0) { - Status = EFI_ABORTED; - goto ON_EXIT; - } + // + // *BufferSize should not be zero when ClientHello. + // + if (*BufferSize == 0) { + Status = EFI_ABORTED; + goto ON_EXIT; + } - Instance->TlsSessionState = EfiTlsSessionHandShaking; + Instance->TlsSessionState = EfiTlsSessionHandShaking; - break; - case EfiTlsSessionClosing: - // - // TLS session will be closed and response packet needs to be CloseNotify. - // - Status = TlsCloseNotify ( - Instance->TlsConn, - Buffer, - BufferSize - ); - if (EFI_ERROR (Status)) { - goto ON_EXIT; - } + break; + case EfiTlsSessionClosing: + // + // TLS session will be closed and response packet needs to be CloseNotify. + // + Status = TlsCloseNotify ( + Instance->TlsConn, + Buffer, + BufferSize + ); + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } - // - // *BufferSize should not be zero when build CloseNotify message. - // - if (*BufferSize == 0) { - Status = EFI_ABORTED; - goto ON_EXIT; - } + // + // *BufferSize should not be zero when build CloseNotify message. + // + if (*BufferSize == 0) { + Status = EFI_ABORTED; + goto ON_EXIT; + } - break; - case EfiTlsSessionError: - // - // TLS session has errors and the response packet needs to be Alert - // message based on error type. - // - Status = TlsHandleAlert ( - Instance->TlsConn, - NULL, - 0, - Buffer, - BufferSize - ); - if (EFI_ERROR (Status)) { - goto ON_EXIT; - } + break; + case EfiTlsSessionError: + // + // TLS session has errors and the response packet needs to be Alert + // message based on error type. + // + Status = TlsHandleAlert ( + Instance->TlsConn, + NULL, + 0, + Buffer, + BufferSize + ); + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } - break; - default: - // - // Current TLS session state is NOT ready to build ResponsePacket. - // - Status = EFI_NOT_READY; + break; + default: + // + // Current TLS session state is NOT ready to build ResponsePacket. + // + Status = EFI_NOT_READY; } } else { // @@ -566,7 +580,7 @@ TlsBuildResponsePacket ( // // Must be alert message, Decrypt it and build the ResponsePacket. // - ASSERT (((TLS_RECORD_HEADER *) RequestBuffer)->ContentType == TlsContentTypeAlert); + ASSERT (((TLS_RECORD_HEADER *)RequestBuffer)->ContentType == TlsContentTypeAlert); Status = TlsHandleAlert ( Instance->TlsConn, @@ -627,20 +641,20 @@ ON_EXIT: EFI_STATUS EFIAPI TlsProcessPacket ( - IN EFI_TLS_PROTOCOL *This, - IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, - IN UINT32 *FragmentCount, - IN EFI_TLS_CRYPT_MODE CryptMode + IN EFI_TLS_PROTOCOL *This, + IN OUT EFI_TLS_FRAGMENT_DATA **FragmentTable, + IN UINT32 *FragmentCount, + IN EFI_TLS_CRYPT_MODE CryptMode ) { - EFI_STATUS Status; - TLS_INSTANCE *Instance; + EFI_STATUS Status; + TLS_INSTANCE *Instance; - EFI_TPL OldTpl; + EFI_TPL OldTpl; Status = EFI_SUCCESS; - if (This == NULL || FragmentTable == NULL || FragmentCount == NULL) { + if ((This == NULL) || (FragmentTable == NULL) || (FragmentCount == NULL)) { return EFI_INVALID_PARAMETER; } @@ -659,14 +673,14 @@ TlsProcessPacket ( // on output these fragments also contain the TLS header and TLS APP payload. // switch (CryptMode) { - case EfiTlsEncrypt: - Status = TlsEncryptPacket (Instance, FragmentTable, FragmentCount); - break; - case EfiTlsDecrypt: - Status = TlsDecryptPacket (Instance, FragmentTable, FragmentCount); - break; - default: - return EFI_INVALID_PARAMETER; + case EfiTlsEncrypt: + Status = TlsEncryptPacket (Instance, FragmentTable, FragmentCount); + break; + case EfiTlsDecrypt: + Status = TlsDecryptPacket (Instance, FragmentTable, FragmentCount); + break; + default: + return EFI_INVALID_PARAMETER; } ON_EXIT: diff --git a/NetworkPkg/Udp4Dxe/ComponentName.c b/NetworkPkg/Udp4Dxe/ComponentName.c index 41bd834c6d..29e66e72c6 100644 --- a/NetworkPkg/Udp4Dxe/ComponentName.c +++ b/NetworkPkg/Udp4Dxe/ComponentName.c @@ -5,12 +5,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Udp4Impl.h" // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user readable name of the driver. @@ -58,7 +58,6 @@ UdpComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver. @@ -130,14 +129,13 @@ UdpComponentNameGetDriverName ( EFI_STATUS EFIAPI UdpComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); - // // EFI Component Name Protocol // @@ -150,14 +148,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gUdp4ComponentName = // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gUdp4ComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) UdpComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) UdpComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gUdp4ComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)UdpComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)UdpComponentNameGetControllerName, "en" }; - -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mUdpDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mUdpDriverNameTable[] = { { "eng;en", L"UDP Network Service Driver" @@ -168,7 +165,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mUdpDriverNameTable[] = { } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gUdpControllerNameTable = NULL; +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE *gUdpControllerNameTable = NULL; /** Retrieves a Unicode string that is the user readable name of the driver. @@ -238,12 +235,12 @@ UdpComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - EFI_UDP4_PROTOCOL *Udp4 + EFI_UDP4_PROTOCOL *Udp4 ) { - EFI_STATUS Status; - CHAR16 HandleName[64]; - EFI_UDP4_CONFIG_DATA Udp4ConfigData; + EFI_STATUS Status; + CHAR16 HandleName[64]; + EFI_UDP4_CONFIG_DATA Udp4ConfigData; if (Udp4 == NULL) { return EFI_INVALID_PARAMETER; @@ -255,7 +252,9 @@ UpdateName ( // Status = Udp4->GetModeData (Udp4, &Udp4ConfigData, NULL, NULL, NULL); if (!EFI_ERROR (Status)) { - UnicodeSPrint (HandleName, sizeof (HandleName), + UnicodeSPrint ( + HandleName, + sizeof (HandleName), L"UDPv4 (SrcPort=%d, DestPort=%d)", Udp4ConfigData.StationPort, Udp4ConfigData.RemotePort @@ -366,15 +365,15 @@ UpdateName ( EFI_STATUS EFIAPI UdpComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_UDP4_PROTOCOL *Udp4; + EFI_STATUS Status; + EFI_UDP4_PROTOCOL *Udp4; // // Only provide names for child handles. @@ -426,4 +425,3 @@ UdpComponentNameGetControllerName ( (BOOLEAN)(This == &gUdp4ComponentName) ); } - diff --git a/NetworkPkg/Udp4Dxe/Udp4Driver.c b/NetworkPkg/Udp4Dxe/Udp4Driver.c index 44032682e2..cb917fcfc9 100644 --- a/NetworkPkg/Udp4Dxe/Udp4Driver.c +++ b/NetworkPkg/Udp4Dxe/Udp4Driver.c @@ -5,10 +5,9 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Udp4Impl.h" -EFI_DRIVER_BINDING_PROTOCOL gUdp4DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gUdp4DriverBinding = { Udp4DriverBindingSupported, Udp4DriverBindingStart, Udp4DriverBindingStop, @@ -17,7 +16,7 @@ EFI_DRIVER_BINDING_PROTOCOL gUdp4DriverBinding = { NULL }; -EFI_SERVICE_BINDING_PROTOCOL mUdp4ServiceBinding = { +EFI_SERVICE_BINDING_PROTOCOL mUdp4ServiceBinding = { Udp4ServiceBindingCreateChild, Udp4ServiceBindingDestroyChild }; @@ -35,8 +34,8 @@ EFI_SERVICE_BINDING_PROTOCOL mUdp4ServiceBinding = { EFI_STATUS EFIAPI Udp4DestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { UDP4_INSTANCE_DATA *Instance; @@ -44,14 +43,14 @@ Udp4DestroyChildEntryInHandleBuffer ( UINTN NumberOfChildren; EFI_HANDLE *ChildHandleBuffer; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - Instance = NET_LIST_USER_STRUCT_S (Entry, UDP4_INSTANCE_DATA, Link, UDP4_INSTANCE_DATA_SIGNATURE); - ServiceBinding = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; - NumberOfChildren = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; - ChildHandleBuffer = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; + Instance = NET_LIST_USER_STRUCT_S (Entry, UDP4_INSTANCE_DATA, Link, UDP4_INSTANCE_DATA_SIGNATURE); + ServiceBinding = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; + NumberOfChildren = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; + ChildHandleBuffer = ((UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; if (!NetIsInHandleBuffer (Instance->ChildHandle, NumberOfChildren, ChildHandleBuffer)) { return EFI_SUCCESS; @@ -60,7 +59,6 @@ Udp4DestroyChildEntryInHandleBuffer ( return ServiceBinding->DestroyChild (ServiceBinding, Instance->ChildHandle); } - /** Test to see if this driver supports ControllerHandle. This service is called by the EFI boot service ConnectController(). In @@ -119,7 +117,6 @@ Udp4DriverBindingSupported ( return Status; } - /** Start this driver on ControllerHandle. This service is called by the EFI boot service ConnectController(). In order to make @@ -180,7 +177,6 @@ Udp4DriverBindingStart ( return Status; } - /** Stop this driver on ControllerHandle. This service is called by the EFI boot service DisconnectController(). In order to @@ -229,7 +225,7 @@ Udp4DriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiUdp4ServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -243,16 +239,16 @@ Udp4DriverBindingStop ( // // NumberOfChildren is not zero, destroy the children instances in ChildHandleBuffer. // - List = &Udp4Service->ChildrenList; + List = &Udp4Service->ChildrenList; Context.ServiceBinding = ServiceBinding; Context.NumberOfChildren = NumberOfChildren; Context.ChildHandleBuffer = ChildHandleBuffer; - Status = NetDestroyLinkList ( - List, - Udp4DestroyChildEntryInHandleBuffer, - &Context, - NULL - ); + Status = NetDestroyLinkList ( + List, + Udp4DestroyChildEntryInHandleBuffer, + &Context, + NULL + ); } else { gBS->UninstallMultipleProtocolInterfaces ( NicHandle, @@ -267,13 +263,13 @@ Udp4DriverBindingStop ( FreeUnicodeStringTable (gUdpControllerNameTable); gUdpControllerNameTable = NULL; } + FreePool (Udp4Service); } return Status; } - /** Creates a child handle and installs a protocol. @@ -352,7 +348,7 @@ Udp4ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( Udp4Service->IpIo->ChildHandle, &gEfiIp4ProtocolGuid, - (VOID **) &Ip4, + (VOID **)&Ip4, gUdp4DriverBinding.DriverBindingHandle, Instance->ChildHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -367,7 +363,7 @@ Udp4ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( Instance->IpInfo->ChildHandle, &gEfiIp4ProtocolGuid, - (VOID **) &Ip4, + (VOID **)&Ip4, gUdp4DriverBinding.DriverBindingHandle, Instance->ChildHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -410,7 +406,6 @@ ON_ERROR: return Status; } - /** Destroys a child handle with a protocol installed on it. @@ -454,7 +449,7 @@ Udp4ServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiUdp4ProtocolGuid, - (VOID **) &Udp4Proto, + (VOID **)&Udp4Proto, gUdp4DriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -499,7 +494,7 @@ Udp4ServiceBindingDestroyChild ( Status = gBS->UninstallMultipleProtocolInterfaces ( ChildHandle, &gEfiUdp4ProtocolGuid, - (VOID *) &Instance->Udp4Proto, + (VOID *)&Instance->Udp4Proto, NULL ); if (EFI_ERROR (Status)) { @@ -576,9 +571,8 @@ Udp4DriverEntryPoint ( // // Initialize the UDP random port. // - mUdp4RandomPort = (UINT16) (((UINT16) NetRandomInitSeed ()) % UDP4_PORT_KNOWN + UDP4_PORT_KNOWN); + mUdp4RandomPort = (UINT16)(((UINT16)NetRandomInitSeed ()) % UDP4_PORT_KNOWN + UDP4_PORT_KNOWN); } return Status; } - diff --git a/NetworkPkg/Udp4Dxe/Udp4Driver.h b/NetworkPkg/Udp4Dxe/Udp4Driver.h index 741c839d57..a8cf3670ab 100644 --- a/NetworkPkg/Udp4Dxe/Udp4Driver.h +++ b/NetworkPkg/Udp4Dxe/Udp4Driver.h @@ -145,4 +145,3 @@ Udp4ServiceBindingDestroyChild ( ); #endif - diff --git a/NetworkPkg/Udp4Dxe/Udp4Impl.c b/NetworkPkg/Udp4Dxe/Udp4Impl.c index dc2a324c11..28b064ff8e 100644 --- a/NetworkPkg/Udp4Dxe/Udp4Impl.c +++ b/NetworkPkg/Udp4Dxe/Udp4Impl.c @@ -6,7 +6,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ - #include "Udp4Impl.h" UINT16 mUdp4RandomPort; @@ -60,10 +59,10 @@ Udp4FindInstanceByPort ( VOID EFIAPI Udp4DgramSent ( - IN EFI_STATUS Status, - IN VOID *Context, - IN IP_IO_IP_PROTOCOL Sender, - IN VOID *NotifyData + IN EFI_STATUS Status, + IN VOID *Context, + IN IP_IO_IP_PROTOCOL Sender, + IN VOID *NotifyData ); /** @@ -246,7 +245,6 @@ Udp4SendPortUnreach ( IN VOID *Udp4Header ); - /** Create the Udp service context data. @@ -267,9 +265,9 @@ Udp4CreateService ( IN EFI_HANDLE ControllerHandle ) { - EFI_STATUS Status; - IP_IO_OPEN_DATA OpenData; - EFI_IP4_CONFIG_DATA *Ip4ConfigData; + EFI_STATUS Status; + IP_IO_OPEN_DATA OpenData; + EFI_IP4_CONFIG_DATA *Ip4ConfigData; ZeroMem (Udp4Service, sizeof (UDP4_SERVICE_DATA)); @@ -295,7 +293,7 @@ Udp4CreateService ( Ip4ConfigData = &OpenData.IpConfigData.Ip4CfgData; CopyMem (Ip4ConfigData, &mIp4IoDefaultIpConfigData, sizeof (EFI_IP4_CONFIG_DATA)); Ip4ConfigData->AcceptBroadcast = TRUE; - OpenData.RcvdContext = (VOID *) Udp4Service; + OpenData.RcvdContext = (VOID *)Udp4Service; OpenData.SndContext = NULL; OpenData.PktRcvdNotify = Udp4DgramRcvd; OpenData.PktSentNotify = Udp4DgramSent; @@ -347,7 +345,6 @@ ON_ERROR: return Status; } - /** Clean the Udp service context data. @@ -375,7 +372,6 @@ Udp4CleanService ( IpIoDestroy (Udp4Service->IpIo); } - /** This function checks and timeouts the I/O datagrams holding by the corresponding service context. @@ -399,7 +395,7 @@ Udp4CheckTimeout ( LIST_ENTRY *NextEntry; UDP4_RXDATA_WRAP *Wrap; - Udp4Service = (UDP4_SERVICE_DATA *) Context; + Udp4Service = (UDP4_SERVICE_DATA *)Context; NET_CHECK_SIGNATURE (Udp4Service, UDP4_SERVICE_DATA_SIGNATURE); NET_LIST_FOR_EACH (Entry, &Udp4Service->ChildrenList) { @@ -429,7 +425,7 @@ Udp4CheckTimeout ( // // Remove this RxData if it timeouts. // - Udp4RecycleRxDataWrap (NULL, (VOID *) Wrap); + Udp4RecycleRxDataWrap (NULL, (VOID *)Wrap); } else { Wrap->TimeoutTick -= (UDP4_TIMEOUT_INTERVAL / 10); } @@ -437,7 +433,6 @@ Udp4CheckTimeout ( } } - /** This function initializes the new created udp instance. @@ -481,7 +476,6 @@ Udp4InitInstance ( Instance->InDestroy = FALSE; } - /** This function cleans the udp instance. @@ -498,7 +492,6 @@ Udp4CleanInstance ( NetMapClean (&Instance->TxTokens); } - /** This function finds the udp instance by the specified pair. @@ -538,7 +531,8 @@ Udp4FindInstanceByPort ( } if (EFI_IP4_EQUAL (&ConfigData->StationAddress, Address) && - (ConfigData->StationPort == Port)) { + (ConfigData->StationPort == Port)) + { // // if both the address and the port are the same, return TRUE. // @@ -552,7 +546,6 @@ Udp4FindInstanceByPort ( return FALSE; } - /** This function tries to bind the udp instance according to the configured port allocation strategy. @@ -585,9 +578,9 @@ Udp4Bind ( StationAddress = &ConfigData->StationAddress; if (ConfigData->StationPort != 0) { - if (!ConfigData->AllowDuplicatePort && - Udp4FindInstanceByPort (InstanceList, StationAddress, ConfigData->StationPort)) { + Udp4FindInstanceByPort (InstanceList, StationAddress, ConfigData->StationPort)) + { // // Do not allow duplicate port and the port is already used by other instance. // @@ -604,11 +597,9 @@ Udp4Bind ( // ConfigData->StationPort = mUdp4RandomPort; } else { - StartPort = mUdp4RandomPort; - while (Udp4FindInstanceByPort(InstanceList, StationAddress, mUdp4RandomPort)) { - + while (Udp4FindInstanceByPort (InstanceList, StationAddress, mUdp4RandomPort)) { mUdp4RandomPort++; if (mUdp4RandomPort == 0) { mUdp4RandomPort = UDP4_PORT_KNOWN; @@ -634,7 +625,6 @@ Udp4Bind ( return EFI_SUCCESS; } - /** This function is used to check whether the NewConfigData has any un-reconfigurable parameters changed compared to the OldConfigData. @@ -657,7 +647,8 @@ Udp4IsReconfigurable ( (NewConfigData->AcceptBroadcast != OldConfigData->AcceptBroadcast) || (NewConfigData->AcceptPromiscuous != OldConfigData->AcceptPromiscuous) || (NewConfigData->AllowDuplicatePort != OldConfigData->AllowDuplicatePort) - ) { + ) + { // // The receiving filter parameters cannot be changed. // @@ -666,7 +657,8 @@ Udp4IsReconfigurable ( if ((!NewConfigData->AcceptAnyPort) && (NewConfigData->StationPort != OldConfigData->StationPort) - ) { + ) + { // // The port is not changeable. // @@ -674,7 +666,6 @@ Udp4IsReconfigurable ( } if (!NewConfigData->AcceptPromiscuous) { - if (NewConfigData->UseDefaultAddress != OldConfigData->UseDefaultAddress) { // // The NewConfigData differs to the old one on the UseDefaultAddress. @@ -685,7 +676,8 @@ Udp4IsReconfigurable ( if (!NewConfigData->UseDefaultAddress && (!EFI_IP4_EQUAL (&NewConfigData->StationAddress, &OldConfigData->StationAddress) || !EFI_IP4_EQUAL (&NewConfigData->SubnetMask, &OldConfigData->SubnetMask)) - ) { + ) + { // // If the instance doesn't use the default address, and the new address or // new subnet mask is different from the old values. @@ -702,8 +694,9 @@ Udp4IsReconfigurable ( } if (!EFI_IP4_EQUAL (&NewConfigData->RemoteAddress, &mZeroIp4Addr) && - NewConfigData->RemotePort != OldConfigData->RemotePort - ) { + (NewConfigData->RemotePort != OldConfigData->RemotePort) + ) + { // // The RemotePort differs if it's designated in the configdata. // @@ -716,7 +709,6 @@ Udp4IsReconfigurable ( return TRUE; } - /** This function builds the Ip4 configdata from the Udp4ConfigData. @@ -742,10 +734,9 @@ Udp4BuildIp4ConfigData ( // // use the -1 magic number to disable the receiving process of the ip instance. // - Ip4ConfigData->ReceiveTimeout = (UINT32) (-1); + Ip4ConfigData->ReceiveTimeout = (UINT32)(-1); } - /** This function validates the TxToken, it returns the error code according to the spec. @@ -798,9 +789,9 @@ Udp4ValidateTxToken ( TotalLen = 0; for (Index = 0; Index < TxData->FragmentCount; Index++) { - if ((TxData->FragmentTable[Index].FragmentBuffer == NULL) || - (TxData->FragmentTable[Index].FragmentLength == 0)) { + (TxData->FragmentTable[Index].FragmentLength == 0)) + { // // if the FragmentBuffer is NULL or the FragmentLeng is zero. // @@ -822,8 +813,9 @@ Udp4ValidateTxToken ( CopyMem (&GatewayAddress, TxData->GatewayAddress, sizeof (IP4_ADDR)); if (!Instance->ConfigData.UseDefaultAddress && - (EFI_NTOHL(Instance->ConfigData.SubnetMask) != 0) && - !NetIp4IsUnicast (NTOHL (GatewayAddress), EFI_NTOHL(Instance->ConfigData.SubnetMask))) { + (EFI_NTOHL (Instance->ConfigData.SubnetMask) != 0) && + !NetIp4IsUnicast (NTOHL (GatewayAddress), EFI_NTOHL (Instance->ConfigData.SubnetMask))) + { // // The specified GatewayAddress is not a unicast IPv4 address while it's not 0. // @@ -835,13 +827,13 @@ Udp4ValidateTxToken ( UdpSessionData = TxData->UdpSessionData; if (UdpSessionData != NULL) { - CopyMem (&SourceAddress, &UdpSessionData->SourceAddress, sizeof (IP4_ADDR)); if ((SourceAddress != 0) && !Instance->ConfigData.UseDefaultAddress && - (EFI_NTOHL(Instance->ConfigData.SubnetMask) != 0) && - !NetIp4IsUnicast (HTONL (SourceAddress), EFI_NTOHL(Instance->ConfigData.SubnetMask))) { + (EFI_NTOHL (Instance->ConfigData.SubnetMask) != 0) && + !NetIp4IsUnicast (HTONL (SourceAddress), EFI_NTOHL (Instance->ConfigData.SubnetMask))) + { // // Check whether SourceAddress is a valid IPv4 address in case it's not zero. // The configured station address is used if SourceAddress is zero. @@ -877,7 +869,6 @@ Udp4ValidateTxToken ( return EFI_SUCCESS; } - /** This function checks whether the specified Token duplicates with the one in the Map. @@ -902,8 +893,8 @@ Udp4TokenExist ( EFI_UDP4_COMPLETION_TOKEN *Token; EFI_UDP4_COMPLETION_TOKEN *TokenInItem; - Token = (EFI_UDP4_COMPLETION_TOKEN*) Context; - TokenInItem = (EFI_UDP4_COMPLETION_TOKEN*) Item->Key; + Token = (EFI_UDP4_COMPLETION_TOKEN *)Context; + TokenInItem = (EFI_UDP4_COMPLETION_TOKEN *)Item->Key; if ((Token == TokenInItem) || (Token->Event == TokenInItem->Event)) { // @@ -916,7 +907,6 @@ Udp4TokenExist ( return EFI_SUCCESS; } - /** This function calculates the checksum for the Packet, utilizing the pre-calculated pseudo HeadSum to reduce some overhead. @@ -930,21 +920,20 @@ Udp4TokenExist ( **/ UINT16 Udp4Checksum ( - IN NET_BUF *Packet, - IN UINT16 HeadSum + IN NET_BUF *Packet, + IN UINT16 HeadSum ) { UINT16 Checksum; - Checksum = NetbufChecksum (Packet); - Checksum = NetAddChecksum (Checksum, HeadSum); + Checksum = NetbufChecksum (Packet); + Checksum = NetAddChecksum (Checksum, HeadSum); - Checksum = NetAddChecksum (Checksum, HTONS ((UINT16) Packet->TotalSize)); + Checksum = NetAddChecksum (Checksum, HTONS ((UINT16)Packet->TotalSize)); return (UINT16) ~Checksum; } - /** This function removes the specified Token from the TokenMap. @@ -966,7 +955,7 @@ Udp4RemoveToken ( // // Find the Token first. // - Item = NetMapFindKey (TokenMap, (VOID *) Token); + Item = NetMapFindKey (TokenMap, (VOID *)Token); if (Item != NULL) { // @@ -980,7 +969,6 @@ Udp4RemoveToken ( return EFI_NOT_FOUND; } - /** This function is the packet transmitting notify function registered to the IpIo interface. It's called to signal the udp TxToken when IpIo layer completes the @@ -995,17 +983,17 @@ Udp4RemoveToken ( VOID EFIAPI Udp4DgramSent ( - IN EFI_STATUS Status, - IN VOID *Context, - IN IP_IO_IP_PROTOCOL Sender, - IN VOID *NotifyData + IN EFI_STATUS Status, + IN VOID *Context, + IN IP_IO_IP_PROTOCOL Sender, + IN VOID *NotifyData ) { UDP4_INSTANCE_DATA *Instance; EFI_UDP4_COMPLETION_TOKEN *Token; - Instance = (UDP4_INSTANCE_DATA *) Context; - Token = (EFI_UDP4_COMPLETION_TOKEN *) NotifyData; + Instance = (UDP4_INSTANCE_DATA *)Context; + Token = (EFI_UDP4_COMPLETION_TOKEN *)NotifyData; if (Udp4RemoveToken (&Instance->TxTokens, Token) == EFI_SUCCESS) { // @@ -1017,7 +1005,6 @@ Udp4DgramSent ( } } - /** This function processes the received datagram passed up by the IpIo layer. @@ -1049,12 +1036,12 @@ Udp4DgramRcvd ( // // Demultiplex the received datagram. // - Udp4Demultiplex ((UDP4_SERVICE_DATA *) Context, NetSession, Packet); + Udp4Demultiplex ((UDP4_SERVICE_DATA *)Context, NetSession, Packet); } else { // // Handle the ICMP_ERROR packet. // - Udp4IcmpHandler ((UDP4_SERVICE_DATA *) Context, IcmpError, NetSession, Packet); + Udp4IcmpHandler ((UDP4_SERVICE_DATA *)Context, IcmpError, NetSession, Packet); } // @@ -1064,7 +1051,6 @@ Udp4DgramRcvd ( DispatchDpc (); } - /** This function removes the multicast group specified by Arg from the Map. @@ -1113,7 +1099,6 @@ Udp4LeaveGroup ( return EFI_SUCCESS; } - /** This function cancels the token specified by Arg in the Map. This is a callback used by Udp4InstanceCancelToken(). @@ -1153,15 +1138,15 @@ Udp4CancelTokens ( // will invoke Udp4DgramSent, the token will be signaled and this Item will // be removed from the Map there. // - Packet = (NET_BUF *) (Item->Value); - IpIo = (IP_IO *) (*((UINTN *) &Packet->ProtoData[0])); + Packet = (NET_BUF *)(Item->Value); + IpIo = (IP_IO *)(*((UINTN *)&Packet->ProtoData[0])); IpIoCancelTxToken (IpIo, Packet); } else { // // The token is a receive token. Abort it and remove it from the Map. // - TokenToCancel = (EFI_UDP4_COMPLETION_TOKEN *) Item->Key; + TokenToCancel = (EFI_UDP4_COMPLETION_TOKEN *)Item->Key; NetMapRemoveItem (Map, Item, NULL); TokenToCancel->Status = EFI_ABORTED; @@ -1175,7 +1160,6 @@ Udp4CancelTokens ( return EFI_SUCCESS; } - /** This function removes all the Wrap datas in the RcvdDgramQue. @@ -1198,12 +1182,10 @@ Udp4FlushRcvdDgram ( // // The Wrap will be removed from the RcvdDgramQue by this function call. // - Udp4RecycleRxDataWrap (NULL, (VOID *) Wrap); + Udp4RecycleRxDataWrap (NULL, (VOID *)Wrap); } } - - /** Cancel Udp4 tokens from the Udp4 instance. @@ -1250,13 +1232,14 @@ Udp4InstanceCancelToken ( return EFI_NOT_FOUND; } - ASSERT ((Token != NULL) || ((0 == NetMapGetCount (&Instance->TxTokens)) - && (0 == NetMapGetCount (&Instance->RxTokens)))); + ASSERT ( + (Token != NULL) || ( (0 == NetMapGetCount (&Instance->TxTokens)) + && (0 == NetMapGetCount (&Instance->RxTokens))) + ); return EFI_SUCCESS; } - /** This function matches the received udp datagram with the Instance. @@ -1289,7 +1272,8 @@ Udp4MatchDgram ( if ((!ConfigData->AcceptAnyPort && (Udp4Session->DestinationPort != ConfigData->StationPort)) || ((ConfigData->RemotePort != 0) && (Udp4Session->SourcePort != ConfigData->RemotePort)) - ) { + ) + { // // The local port or the remote port doesn't match. // @@ -1298,7 +1282,8 @@ Udp4MatchDgram ( if (!EFI_IP4_EQUAL (&ConfigData->RemoteAddress, &mZeroIp4Addr) && !EFI_IP4_EQUAL (&ConfigData->RemoteAddress, &Udp4Session->SourceAddress) - ) { + ) + { // // This datagram doesn't come from the instance's specified sender. // @@ -1307,7 +1292,8 @@ Udp4MatchDgram ( if (EFI_IP4_EQUAL (&ConfigData->StationAddress, &mZeroIp4Addr) || EFI_IP4_EQUAL (&Udp4Session->DestinationAddress, &ConfigData->StationAddress) - ) { + ) + { // // The instance is configured to receive datagrams destined to any station IP or // the destination address of this datagram matches the configured station IP. @@ -1325,8 +1311,9 @@ Udp4MatchDgram ( } if (IP4_IS_MULTICAST (NTOHL (Destination)) && - NetMapFindKey (&Instance->McastIps, (VOID *) (UINTN) Destination) != NULL - ) { + (NetMapFindKey (&Instance->McastIps, (VOID *)(UINTN)Destination) != NULL) + ) + { // // It's a multicast packet and the multicast address is accepted by this instance. // @@ -1336,7 +1323,6 @@ Udp4MatchDgram ( return FALSE; } - /** This function removes the Wrap specified by Context and release relevant resources. @@ -1353,7 +1339,7 @@ Udp4RecycleRxDataWrap ( { UDP4_RXDATA_WRAP *Wrap; - Wrap = (UDP4_RXDATA_WRAP *) Context; + Wrap = (UDP4_RXDATA_WRAP *)Context; // // Remove the Wrap from the list it belongs to. @@ -1373,7 +1359,6 @@ Udp4RecycleRxDataWrap ( FreePool (Wrap); } - /** This function wraps the Packet and the RxData. @@ -1393,14 +1378,16 @@ Udp4WrapRxData ( IN EFI_UDP4_RECEIVE_DATA *RxData ) { - EFI_STATUS Status; - UDP4_RXDATA_WRAP *Wrap; + EFI_STATUS Status; + UDP4_RXDATA_WRAP *Wrap; // // Allocate buffer for the Wrap. // - Wrap = AllocatePool (sizeof (UDP4_RXDATA_WRAP) + - (Packet->BlockOpNum - 1) * sizeof (EFI_UDP4_FRAGMENT_DATA)); + Wrap = AllocatePool ( + sizeof (UDP4_RXDATA_WRAP) + + (Packet->BlockOpNum - 1) * sizeof (EFI_UDP4_FRAGMENT_DATA) + ); if (Wrap == NULL) { return NULL; } @@ -1430,7 +1417,6 @@ Udp4WrapRxData ( return Wrap; } - /** This function enqueues the received datagram into the instances' receiving queues. @@ -1487,7 +1473,6 @@ Udp4EnqueueDgram ( return Enqueued; } - /** This function delivers the received datagrams for the specified instance. @@ -1506,8 +1491,8 @@ Udp4InstanceDeliverDgram ( EFI_TPL OldTpl; if (!IsListEmpty (&Instance->RcvdDgramQue) && - !NetMapIsEmpty (&Instance->RxTokens)) { - + !NetMapIsEmpty (&Instance->RxTokens)) + { Wrap = NET_LIST_HEAD (&Instance->RcvdDgramQue, UDP4_RXDATA_WRAP, Link); if (NET_BUF_SHARED (Wrap->Packet)) { @@ -1526,7 +1511,7 @@ Udp4InstanceDeliverDgram ( NetListRemoveHead (&Instance->RcvdDgramQue); - Token = (EFI_UDP4_COMPLETION_TOKEN *) NetMapRemoveHead (&Instance->RxTokens, NULL); + Token = (EFI_UDP4_COMPLETION_TOKEN *)NetMapRemoveHead (&Instance->RxTokens, NULL); // // Build the FragmentTable and set the FragmentCount in RxData. @@ -1536,7 +1521,7 @@ Udp4InstanceDeliverDgram ( NetbufBuildExt ( Wrap->Packet, - (NET_FRAGMENT *) RxData->FragmentTable, + (NET_FRAGMENT *)RxData->FragmentTable, &RxData->FragmentCount ); @@ -1551,7 +1536,6 @@ Udp4InstanceDeliverDgram ( } } - /** This function delivers the datagrams enqueued in the instances. @@ -1583,7 +1567,6 @@ Udp4DeliverDgram ( } } - /** This function demultiplexes the received udp datagram to the appropriate instances. @@ -1601,7 +1584,7 @@ Udp4Demultiplex ( IN NET_BUF *Packet ) { - EFI_UDP_HEADER *Udp4Header; + EFI_UDP_HEADER *Udp4Header; UINT16 HeadSum; EFI_UDP4_RECEIVE_DATA RxData; EFI_UDP4_SESSION_DATA *Udp4Session; @@ -1615,7 +1598,7 @@ Udp4Demultiplex ( // // Get the datagram header from the packet buffer. // - Udp4Header = (EFI_UDP_HEADER *) NetbufGetByte (Packet, 0, NULL); + Udp4Header = (EFI_UDP_HEADER *)NetbufGetByte (Packet, 0, NULL); ASSERT (Udp4Header != NULL); if (Udp4Header->Checksum != 0) { @@ -1650,7 +1633,7 @@ Udp4Demultiplex ( // NetbufTrim (Packet, UDP4_HEADER_SIZE, TRUE); - RxData.DataLength = (UINT32) Packet->TotalSize; + RxData.DataLength = (UINT32)Packet->TotalSize; // // Try to enqueue this datagram into the instances. @@ -1677,7 +1660,6 @@ Udp4Demultiplex ( } } - /** This function builds and sends out a icmp port unreachable message. @@ -1718,7 +1700,7 @@ Udp4SendPortUnreach ( // Calculate the required length of the icmp error message. // Len = sizeof (IP4_ICMP_ERROR_HEAD) + (EFI_IP4_HEADER_LEN (IpHdr) - - sizeof (IP4_HEAD)) + ICMP_ERROR_PACKET_LENGTH; + sizeof (IP4_HEAD)) + ICMP_ERROR_PACKET_LENGTH; // // Allocate buffer for the icmp error message. @@ -1731,7 +1713,7 @@ Udp4SendPortUnreach ( // // Allocate space for the IP4_ICMP_ERROR_HEAD. // - IcmpErrHdr = (IP4_ICMP_ERROR_HEAD *) NetbufAllocSpace (Packet, Len, FALSE); + IcmpErrHdr = (IP4_ICMP_ERROR_HEAD *)NetbufAllocSpace (Packet, Len, FALSE); ASSERT (IcmpErrHdr != NULL); // @@ -1750,7 +1732,7 @@ Udp4SendPortUnreach ( // // Copy the UDP header. // - Ptr = (UINT8 *) &IcmpErrHdr->IpHead + EFI_IP4_HEADER_LEN (IpHdr); + Ptr = (UINT8 *)&IcmpErrHdr->IpHead + EFI_IP4_HEADER_LEN (IpHdr); CopyMem (Ptr, Udp4Header, ICMP_ERROR_PACKET_LENGTH); // @@ -1777,7 +1759,6 @@ Udp4SendPortUnreach ( NetbufFree (Packet); } - /** This function handles the received Icmp Error message and demultiplexes it to the instance. @@ -1797,7 +1778,7 @@ Udp4IcmpHandler ( IN NET_BUF *Packet ) { - EFI_UDP_HEADER *Udp4Header; + EFI_UDP_HEADER *Udp4Header; EFI_UDP4_SESSION_DATA Udp4Session; LIST_ENTRY *Entry; UDP4_INSTANCE_DATA *Instance; @@ -1807,7 +1788,7 @@ Udp4IcmpHandler ( return; } - Udp4Header = (EFI_UDP_HEADER *) NetbufGetByte (Packet, 0, NULL); + Udp4Header = (EFI_UDP_HEADER *)NetbufGetByte (Packet, 0, NULL); ASSERT (Udp4Header != NULL); CopyMem (&Udp4Session.SourceAddress, &NetSession->Source, sizeof (EFI_IPv4_ADDRESS)); @@ -1848,7 +1829,6 @@ Udp4IcmpHandler ( NetbufFree (Packet); } - /** This function reports the received ICMP error. @@ -1873,7 +1853,7 @@ Udp4ReportIcmpError ( // // Try to get a RxToken from the RxTokens map. // - Token = (EFI_UDP4_COMPLETION_TOKEN *) NetMapRemoveHead (&Instance->RxTokens, NULL); + Token = (EFI_UDP4_COMPLETION_TOKEN *)NetMapRemoveHead (&Instance->RxTokens, NULL); if (Token != NULL) { // @@ -1890,7 +1870,6 @@ Udp4ReportIcmpError ( } } - /** This function is a dummy ext-free function for the NET_BUF created for the output udp datagram. @@ -1905,4 +1884,3 @@ Udp4NetVectorExtFree ( ) { } - diff --git a/NetworkPkg/Udp4Dxe/Udp4Impl.h b/NetworkPkg/Udp4Dxe/Udp4Impl.h index 115f9ed878..246a91de5e 100644 --- a/NetworkPkg/Udp4Dxe/Udp4Impl.h +++ b/NetworkPkg/Udp4Dxe/Udp4Impl.h @@ -29,22 +29,21 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "Udp4Driver.h" - -extern EFI_COMPONENT_NAME_PROTOCOL gUdp4ComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gUdp4ComponentName2; -extern EFI_UNICODE_STRING_TABLE *gUdpControllerNameTable; -extern EFI_SERVICE_BINDING_PROTOCOL mUdp4ServiceBinding; -extern EFI_UDP4_PROTOCOL mUdp4Protocol; -extern UINT16 mUdp4RandomPort; +extern EFI_COMPONENT_NAME_PROTOCOL gUdp4ComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gUdp4ComponentName2; +extern EFI_UNICODE_STRING_TABLE *gUdpControllerNameTable; +extern EFI_SERVICE_BINDING_PROTOCOL mUdp4ServiceBinding; +extern EFI_UDP4_PROTOCOL mUdp4Protocol; +extern UINT16 mUdp4RandomPort; #define ICMP_ERROR_PACKET_LENGTH 8 -#define UDP4_TIMEOUT_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds +#define UDP4_TIMEOUT_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds -#define UDP4_HEADER_SIZE sizeof (EFI_UDP_HEADER) -#define UDP4_MAX_DATA_SIZE 65507 +#define UDP4_HEADER_SIZE sizeof (EFI_UDP_HEADER) +#define UDP4_MAX_DATA_SIZE 65507 -#define UDP4_PORT_KNOWN 1024 +#define UDP4_PORT_KNOWN 1024 #define UDP4_SERVICE_DATA_SIGNATURE SIGNATURE_32('U', 'd', 'p', '4') @@ -57,15 +56,15 @@ extern UINT16 mUdp4RandomPort; ) typedef struct _UDP4_SERVICE_DATA_ { - UINT32 Signature; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - EFI_HANDLE ImageHandle; - EFI_HANDLE ControllerHandle; - LIST_ENTRY ChildrenList; - UINTN ChildrenNumber; - IP_IO *IpIo; - - EFI_EVENT TimeoutEvent; + UINT32 Signature; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + EFI_HANDLE ImageHandle; + EFI_HANDLE ControllerHandle; + LIST_ENTRY ChildrenList; + UINTN ChildrenNumber; + IP_IO *IpIo; + + EFI_EVENT TimeoutEvent; } UDP4_SERVICE_DATA; #define UDP4_INSTANCE_DATA_SIGNATURE SIGNATURE_32('U', 'd', 'p', 'I') @@ -79,44 +78,44 @@ typedef struct _UDP4_SERVICE_DATA_ { ) typedef struct _UDP4_INSTANCE_DATA_ { - UINT32 Signature; - LIST_ENTRY Link; + UINT32 Signature; + LIST_ENTRY Link; - UDP4_SERVICE_DATA *Udp4Service; - EFI_UDP4_PROTOCOL Udp4Proto; - EFI_UDP4_CONFIG_DATA ConfigData; - EFI_HANDLE ChildHandle; - BOOLEAN Configured; - BOOLEAN IsNoMapping; + UDP4_SERVICE_DATA *Udp4Service; + EFI_UDP4_PROTOCOL Udp4Proto; + EFI_UDP4_CONFIG_DATA ConfigData; + EFI_HANDLE ChildHandle; + BOOLEAN Configured; + BOOLEAN IsNoMapping; - NET_MAP TxTokens; - NET_MAP RxTokens; + NET_MAP TxTokens; + NET_MAP RxTokens; - NET_MAP McastIps; + NET_MAP McastIps; - LIST_ENTRY RcvdDgramQue; - LIST_ENTRY DeliveredDgramQue; + LIST_ENTRY RcvdDgramQue; + LIST_ENTRY DeliveredDgramQue; - UINT16 HeadSum; + UINT16 HeadSum; - EFI_STATUS IcmpError; + EFI_STATUS IcmpError; - IP_IO_IP_INFO *IpInfo; + IP_IO_IP_INFO *IpInfo; - BOOLEAN InDestroy; + BOOLEAN InDestroy; } UDP4_INSTANCE_DATA; typedef struct _UDP4_RXDATA_WRAP_ { - LIST_ENTRY Link; - NET_BUF *Packet; - UINT32 TimeoutTick; - EFI_UDP4_RECEIVE_DATA RxData; + LIST_ENTRY Link; + NET_BUF *Packet; + UINT32 TimeoutTick; + EFI_UDP4_RECEIVE_DATA RxData; } UDP4_RXDATA_WRAP; typedef struct { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - UINTN NumberOfChildren; - EFI_HANDLE *ChildHandleBuffer; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; } UDP4_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; /** @@ -582,8 +581,8 @@ Udp4TokenExist ( **/ UINT16 Udp4Checksum ( - IN NET_BUF *Packet, - IN UINT16 HeadSum + IN NET_BUF *Packet, + IN UINT16 HeadSum ); /** diff --git a/NetworkPkg/Udp4Dxe/Udp4Main.c b/NetworkPkg/Udp4Dxe/Udp4Main.c index 2a639f9547..b1e04f441f 100644 --- a/NetworkPkg/Udp4Dxe/Udp4Main.c +++ b/NetworkPkg/Udp4Dxe/Udp4Main.c @@ -19,7 +19,6 @@ EFI_UDP4_PROTOCOL mUdp4Protocol = { Udp4Poll }; - /** Reads the current operational settings. @@ -86,7 +85,6 @@ Udp4GetModeData ( return Status; } - /** Initializes, changes, or resets the operational parameters for this instance of the EFI UDPv4 Protocol. @@ -154,7 +152,6 @@ Udp4Configure ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); if (UdpConfigData != NULL) { - CopyMem (&StationAddress, &UdpConfigData->StationAddress, sizeof (IP4_ADDR)); CopyMem (&SubnetMask, &UdpConfigData->SubnetMask, sizeof (IP4_ADDR)); CopyMem (&RemoteAddress, &UdpConfigData->RemoteAddress, sizeof (IP4_ADDR)); @@ -163,11 +160,11 @@ Udp4Configure ( SubnetMask = NTOHL (SubnetMask); RemoteAddress = NTOHL (RemoteAddress); - if (!UdpConfigData->UseDefaultAddress && (!IP4_IS_VALID_NETMASK (SubnetMask) || - !((StationAddress == 0) || (SubnetMask != 0 && NetIp4IsUnicast (StationAddress, SubnetMask))) || - IP4_IS_LOCAL_BROADCAST (RemoteAddress))) { + !((StationAddress == 0) || ((SubnetMask != 0) && NetIp4IsUnicast (StationAddress, SubnetMask))) || + IP4_IS_LOCAL_BROADCAST (RemoteAddress))) + { // // Don't use default address, and subnet mask is invalid or StationAddress is not // a valid unicast IPv4 address or RemoteAddress is not a valid unicast IPv4 address @@ -283,7 +280,6 @@ ON_EXIT: return Status; } - /** Joins and leaves multicast groups. @@ -370,10 +366,8 @@ Udp4Groups ( // the multicast datagrams destined to multicast IPs the other instances configured. // if (JoinFlag) { - - NetMapInsertTail (&Instance->McastIps, (VOID *) (UINTN) McastIp, NULL); + NetMapInsertTail (&Instance->McastIps, (VOID *)(UINTN)McastIp, NULL); } else { - NetMapIterate (&Instance->McastIps, Udp4LeaveGroup, MulticastAddress); } @@ -384,7 +378,6 @@ ON_EXIT: return Status; } - /** Adds and deletes routing table entries. @@ -458,7 +451,6 @@ Udp4Routes ( return Ip->Routes (Ip, DeleteRoute, SubnetAddress, SubnetMask, GatewayAddress); } - /** Queues outgoing data packets into the transmit queue. @@ -500,7 +492,7 @@ Udp4Transmit ( UDP4_INSTANCE_DATA *Instance; EFI_TPL OldTpl; NET_BUF *Packet; - EFI_UDP_HEADER *Udp4Header; + EFI_UDP_HEADER *Udp4Header; EFI_UDP4_CONFIG_DATA *ConfigData; IP4_ADDR Source; IP4_ADDR Destination; @@ -536,7 +528,8 @@ Udp4Transmit ( } if (EFI_ERROR (NetMapIterate (&Instance->TxTokens, Udp4TokenExist, Token)) || - EFI_ERROR (NetMapIterate (&Instance->RxTokens, Udp4TokenExist, Token))) { + EFI_ERROR (NetMapIterate (&Instance->RxTokens, Udp4TokenExist, Token))) + { // // Try to find a duplicate token in the two token maps, if found, return // EFI_ACCESS_DENIED. @@ -566,10 +559,10 @@ Udp4Transmit ( // // Store the IpIo in ProtoData. // - Udp4Service = Instance->Udp4Service; - *((UINTN *) &Packet->ProtoData[0]) = (UINTN) (Udp4Service->IpIo); + Udp4Service = Instance->Udp4Service; + *((UINTN *)&Packet->ProtoData[0]) = (UINTN)(Udp4Service->IpIo); - Udp4Header = (EFI_UDP_HEADER *) NetbufAllocSpace (Packet, UDP4_HEADER_SIZE, TRUE); + Udp4Header = (EFI_UDP_HEADER *)NetbufAllocSpace (Packet, UDP4_HEADER_SIZE, TRUE); ASSERT (Udp4Header != NULL); ConfigData = &Instance->ConfigData; @@ -577,10 +570,10 @@ Udp4Transmit ( // // Fill the udp header. // - Udp4Header->SrcPort = HTONS (ConfigData->StationPort); - Udp4Header->DstPort = HTONS (ConfigData->RemotePort); - Udp4Header->Length = HTONS ((UINT16) Packet->TotalSize); - Udp4Header->Checksum = 0; + Udp4Header->SrcPort = HTONS (ConfigData->StationPort); + Udp4Header->DstPort = HTONS (ConfigData->RemotePort); + Udp4Header->Length = HTONS ((UINT16)Packet->TotalSize); + Udp4Header->Checksum = 0; UdpSessionData = TxData->UdpSessionData; IP4_COPY_ADDRESS (&Override.Ip4OverrideData.SourceAddress, &ConfigData->StationAddress); @@ -643,10 +636,10 @@ Udp4Transmit ( ZeroMem (&Override.Ip4OverrideData.GatewayAddress, sizeof (EFI_IPv4_ADDRESS)); } - Override.Ip4OverrideData.Protocol = EFI_IP_PROTO_UDP; - Override.Ip4OverrideData.TypeOfService = ConfigData->TypeOfService; - Override.Ip4OverrideData.TimeToLive = ConfigData->TimeToLive; - Override.Ip4OverrideData.DoNotFragment = ConfigData->DoNotFragment; + Override.Ip4OverrideData.Protocol = EFI_IP_PROTO_UDP; + Override.Ip4OverrideData.TypeOfService = ConfigData->TypeOfService; + Override.Ip4OverrideData.TimeToLive = ConfigData->TimeToLive; + Override.Ip4OverrideData.DoNotFragment = ConfigData->DoNotFragment; // // Save the token into the TxToken map. @@ -660,15 +653,15 @@ Udp4Transmit ( // Send out this datagram through IpIo. // IpDestAddr.Addr[0] = Destination; - Status = IpIoSend ( - Udp4Service->IpIo, - Packet, - Instance->IpInfo, - Instance, - Token, - &IpDestAddr, - &Override - ); + Status = IpIoSend ( + Udp4Service->IpIo, + Packet, + Instance->IpInfo, + Instance, + Token, + &IpDestAddr, + &Override + ); if (EFI_ERROR (Status)) { // // Remove this token from the TxTokens. @@ -687,7 +680,6 @@ ON_EXIT: return Status; } - /** Places an asynchronous receive request into the receiving queue. @@ -744,8 +736,9 @@ Udp4Receive ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); - if (EFI_ERROR (NetMapIterate (&Instance->RxTokens, Udp4TokenExist, Token))|| - EFI_ERROR (NetMapIterate (&Instance->TxTokens, Udp4TokenExist, Token))) { + if (EFI_ERROR (NetMapIterate (&Instance->RxTokens, Udp4TokenExist, Token)) || + EFI_ERROR (NetMapIterate (&Instance->TxTokens, Udp4TokenExist, Token))) + { // // Return EFI_ACCESS_DENIED if the specified token is already in the TxTokens or // RxTokens map. @@ -787,7 +780,6 @@ ON_EXIT: return Status; } - /** Aborts an asynchronous transmit or receive request. @@ -858,7 +850,6 @@ Udp4Cancel ( return Status; } - /** Polls for incoming data packets and processes outgoing data packets. diff --git a/NetworkPkg/Udp6Dxe/ComponentName.c b/NetworkPkg/Udp6Dxe/ComponentName.c index 49d8d53095..45fb6b4adb 100644 --- a/NetworkPkg/Udp6Dxe/ComponentName.c +++ b/NetworkPkg/Udp6Dxe/ComponentName.c @@ -12,6 +12,7 @@ // // EFI Component Name Functions // + /** Retrieves a Unicode string that is the user-readable name of the driver. @@ -59,7 +60,6 @@ Udp6ComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user-readable name of the controller that is being managed by a driver. @@ -150,14 +150,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gUdp6ComponentName = // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gUdp6ComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) Udp6ComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) Udp6ComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gUdp6ComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)Udp6ComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)Udp6ComponentNameGetControllerName, "en" }; - -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mUdp6DriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mUdp6DriverNameTable[] = { { "eng;en", L"UDP6 Network Service Driver" @@ -222,7 +221,7 @@ Udp6ComponentNameGetDriverName ( This->SupportedLanguages, mUdp6DriverNameTable, DriverName, - (BOOLEAN) (This == &gUdp6ComponentName) + (BOOLEAN)(This == &gUdp6ComponentName) ); } @@ -238,12 +237,12 @@ Udp6ComponentNameGetDriverName ( **/ EFI_STATUS UpdateName ( - IN EFI_UDP6_PROTOCOL *Udp6 + IN EFI_UDP6_PROTOCOL *Udp6 ) { - EFI_STATUS Status; - CHAR16 HandleName[64]; - EFI_UDP6_CONFIG_DATA Udp6ConfigData; + EFI_STATUS Status; + CHAR16 HandleName[64]; + EFI_UDP6_CONFIG_DATA Udp6ConfigData; if (Udp6 == NULL) { return EFI_INVALID_PARAMETER; @@ -254,7 +253,9 @@ UpdateName ( // Status = Udp6->GetModeData (Udp6, &Udp6ConfigData, NULL, NULL, NULL); if (!EFI_ERROR (Status)) { - UnicodeSPrint (HandleName, sizeof (HandleName), + UnicodeSPrint ( + HandleName, + sizeof (HandleName), L"UDPv6 (SrcPort=%d, DestPort=%d)", Udp6ConfigData.StationPort, Udp6ConfigData.RemotePort @@ -368,8 +369,8 @@ Udp6ComponentNameGetControllerName ( OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_UDP6_PROTOCOL *Udp6; + EFI_STATUS Status; + EFI_UDP6_PROTOCOL *Udp6; // // Only provide names for child handles. diff --git a/NetworkPkg/Udp6Dxe/Udp6Driver.c b/NetworkPkg/Udp6Dxe/Udp6Driver.c index 6021bb3699..ae96fb9966 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Driver.c +++ b/NetworkPkg/Udp6Dxe/Udp6Driver.c @@ -9,7 +9,7 @@ #include "Udp6Impl.h" -EFI_DRIVER_BINDING_PROTOCOL gUdp6DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gUdp6DriverBinding = { Udp6DriverBindingSupported, Udp6DriverBindingStart, Udp6DriverBindingStop, @@ -18,7 +18,7 @@ EFI_DRIVER_BINDING_PROTOCOL gUdp6DriverBinding = { NULL }; -EFI_SERVICE_BINDING_PROTOCOL mUdp6ServiceBinding = { +EFI_SERVICE_BINDING_PROTOCOL mUdp6ServiceBinding = { Udp6ServiceBindingCreateChild, Udp6ServiceBindingDestroyChild }; @@ -74,6 +74,7 @@ Udp6DriverBindingSupported ( ) { EFI_STATUS Status; + // // Test for the Udp6ServiceBinding Protocol // @@ -88,6 +89,7 @@ Udp6DriverBindingSupported ( if (!EFI_ERROR (Status)) { return EFI_ALREADY_STARTED; } + // // Test for the Ip6ServiceBinding Protocol // @@ -166,6 +168,7 @@ EXIT: FreePool (Udp6Service); } } + return Status; } @@ -183,8 +186,8 @@ EXIT: EFI_STATUS EFIAPI Udp6DestroyChildEntryInHandleBuffer ( - IN LIST_ENTRY *Entry, - IN VOID *Context + IN LIST_ENTRY *Entry, + IN VOID *Context ) { UDP6_INSTANCE_DATA *Instance; @@ -192,14 +195,14 @@ Udp6DestroyChildEntryInHandleBuffer ( UINTN NumberOfChildren; EFI_HANDLE *ChildHandleBuffer; - if (Entry == NULL || Context == NULL) { + if ((Entry == NULL) || (Context == NULL)) { return EFI_INVALID_PARAMETER; } - Instance = NET_LIST_USER_STRUCT_S (Entry, UDP6_INSTANCE_DATA, Link, UDP6_INSTANCE_DATA_SIGNATURE); - ServiceBinding = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ServiceBinding; - NumberOfChildren = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->NumberOfChildren; - ChildHandleBuffer = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *) Context)->ChildHandleBuffer; + Instance = NET_LIST_USER_STRUCT_S (Entry, UDP6_INSTANCE_DATA, Link, UDP6_INSTANCE_DATA_SIGNATURE); + ServiceBinding = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding; + NumberOfChildren = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren; + ChildHandleBuffer = ((UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer; if (!NetIsInHandleBuffer (Instance->ChildHandle, NumberOfChildren, ChildHandleBuffer)) { return EFI_SUCCESS; @@ -258,7 +261,7 @@ Udp6DriverBindingStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiUdp6ServiceBindingProtocolGuid, - (VOID **) &ServiceBinding, + (VOID **)&ServiceBinding, This->DriverBindingHandle, NicHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -273,23 +276,23 @@ Udp6DriverBindingStop ( // // NumberOfChildren is not zero, destroy the children instances in ChildHandleBuffer. // - List = &Udp6Service->ChildrenList; + List = &Udp6Service->ChildrenList; Context.ServiceBinding = ServiceBinding; Context.NumberOfChildren = NumberOfChildren; Context.ChildHandleBuffer = ChildHandleBuffer; - Status = NetDestroyLinkList ( - List, - Udp6DestroyChildEntryInHandleBuffer, - &Context, - NULL - ); + Status = NetDestroyLinkList ( + List, + Udp6DestroyChildEntryInHandleBuffer, + &Context, + NULL + ); } else if (IsListEmpty (&Udp6Service->ChildrenList)) { Status = gBS->UninstallMultipleProtocolInterfaces ( - NicHandle, - &gEfiUdp6ServiceBindingProtocolGuid, - &Udp6Service->ServiceBinding, - NULL - ); + NicHandle, + &gEfiUdp6ServiceBindingProtocolGuid, + &Udp6Service->ServiceBinding, + NULL + ); Udp6CleanService (Udp6Service); FreePool (Udp6Service); @@ -376,7 +379,7 @@ Udp6ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( Udp6Service->IpIo->ChildHandle, &gEfiIp6ProtocolGuid, - (VOID **) &Ip6, + (VOID **)&Ip6, gUdp6DriverBinding.DriverBindingHandle, Instance->ChildHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -391,7 +394,7 @@ Udp6ServiceBindingCreateChild ( Status = gBS->OpenProtocol ( Instance->IpInfo->ChildHandle, &gEfiIp6ProtocolGuid, - (VOID **) &Ip6, + (VOID **)&Ip6, gUdp6DriverBinding.DriverBindingHandle, Instance->ChildHandle, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -478,7 +481,7 @@ Udp6ServiceBindingDestroyChild ( Status = gBS->OpenProtocol ( ChildHandle, &gEfiUdp6ProtocolGuid, - (VOID **) &Udp6Proto, + (VOID **)&Udp6Proto, gUdp6DriverBinding.DriverBindingHandle, ChildHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -502,11 +505,11 @@ Udp6ServiceBindingDestroyChild ( // Close the Ip6 protocol on the default IpIo. // Status = gBS->CloseProtocol ( - Udp6Service->IpIo->ChildHandle, - &gEfiIp6ProtocolGuid, - gUdp6DriverBinding.DriverBindingHandle, - Instance->ChildHandle - ); + Udp6Service->IpIo->ChildHandle, + &gEfiIp6ProtocolGuid, + gUdp6DriverBinding.DriverBindingHandle, + Instance->ChildHandle + ); if (EFI_ERROR (Status)) { Instance->InDestroy = FALSE; return Status; @@ -516,11 +519,11 @@ Udp6ServiceBindingDestroyChild ( // Close the Ip6 protocol on this instance's IpInfo. // Status = gBS->CloseProtocol ( - Instance->IpInfo->ChildHandle, - &gEfiIp6ProtocolGuid, - gUdp6DriverBinding.DriverBindingHandle, - Instance->ChildHandle - ); + Instance->IpInfo->ChildHandle, + &gEfiIp6ProtocolGuid, + gUdp6DriverBinding.DriverBindingHandle, + Instance->ChildHandle + ); if (EFI_ERROR (Status)) { Instance->InDestroy = FALSE; return Status; @@ -532,7 +535,7 @@ Udp6ServiceBindingDestroyChild ( Status = gBS->UninstallMultipleProtocolInterfaces ( ChildHandle, &gEfiUdp6ProtocolGuid, - (VOID *) &Instance->Udp6Proto, + (VOID *)&Instance->Udp6Proto, NULL ); if (EFI_ERROR (Status)) { @@ -611,13 +614,11 @@ Udp6DriverEntryPoint ( // Initialize the UDP random port. // mUdp6RandomPort = (UINT16)( - ((UINT16) NetRandomInitSeed ()) % - UDP6_PORT_KNOWN + - UDP6_PORT_KNOWN - ); + ((UINT16)NetRandomInitSeed ()) % + UDP6_PORT_KNOWN + + UDP6_PORT_KNOWN + ); } return Status; } - - diff --git a/NetworkPkg/Udp6Dxe/Udp6Driver.h b/NetworkPkg/Udp6Dxe/Udp6Driver.h index 577cebd5b1..7d3c5dabc1 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Driver.h +++ b/NetworkPkg/Udp6Dxe/Udp6Driver.h @@ -173,4 +173,3 @@ Udp6ServiceBindingDestroyChild ( ); #endif - diff --git a/NetworkPkg/Udp6Dxe/Udp6Impl.c b/NetworkPkg/Udp6Dxe/Udp6Impl.c index ba939fdbfc..d0966ab060 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Impl.c +++ b/NetworkPkg/Udp6Dxe/Udp6Impl.c @@ -63,10 +63,10 @@ Udp6FindInstanceByPort ( VOID EFIAPI Udp6DgramSent ( - IN EFI_STATUS Status, - IN VOID *Context, - IN IP_IO_IP_PROTOCOL Sender, - IN VOID *NotifyData + IN EFI_STATUS Status, + IN VOID *Context, + IN IP_IO_IP_PROTOCOL Sender, + IN VOID *NotifyData ); /** @@ -264,8 +264,8 @@ Udp6SendPortUnreach ( **/ NET_MAP_ITEM * Udp6MapMultiCastAddr ( - IN NET_MAP *Map, - IN VOID *Key + IN NET_MAP *Map, + IN VOID *Key ); /** @@ -317,10 +317,10 @@ Udp6CreateService ( &mIp6IoDefaultIpConfigData, sizeof (EFI_IP6_CONFIG_DATA) ); - OpenData.RcvdContext = (VOID *) Udp6Service; - OpenData.SndContext = NULL; - OpenData.PktRcvdNotify = Udp6DgramRcvd; - OpenData.PktSentNotify = Udp6DgramSent; + OpenData.RcvdContext = (VOID *)Udp6Service; + OpenData.SndContext = NULL; + OpenData.PktRcvdNotify = Udp6DgramRcvd; + OpenData.PktSentNotify = Udp6DgramSent; // // Configure and start the IpIo. @@ -370,7 +370,6 @@ ON_ERROR: return Status; } - /** Clean the Udp service context data. @@ -396,7 +395,6 @@ Udp6CleanService ( ZeroMem (Udp6Service, sizeof (UDP6_SERVICE_DATA)); } - /** This function checks and times out the I/O datagrams listed in the UDP6_SERVICE_DATA which is specified by the input parameter Context. @@ -421,7 +419,7 @@ Udp6CheckTimeout ( LIST_ENTRY *NextEntry; UDP6_RXDATA_WRAP *Wrap; - Udp6Service = (UDP6_SERVICE_DATA *) Context; + Udp6Service = (UDP6_SERVICE_DATA *)Context; NET_CHECK_SIGNATURE (Udp6Service, UDP6_SERVICE_DATA_SIGNATURE); NET_LIST_FOR_EACH (Entry, &Udp6Service->ChildrenList) { @@ -448,7 +446,7 @@ Udp6CheckTimeout ( // // Remove this RxData if it timeouts. // - Udp6RecycleRxDataWrap (NULL, (VOID *) Wrap); + Udp6RecycleRxDataWrap (NULL, (VOID *)Wrap); } else { Wrap->TimeoutTick -= UDP6_TIMEOUT_INTERVAL / 10; } @@ -456,7 +454,6 @@ Udp6CheckTimeout ( } } - /** This function initializes the new created udp instance. @@ -500,7 +497,6 @@ Udp6InitInstance ( Instance->InDestroy = FALSE; } - /** This function cleans the udp instance. @@ -517,7 +513,6 @@ Udp6CleanInstance ( NetMapClean (&Instance->TxTokens); } - /** This function finds the udp instance by the specified pair. @@ -558,7 +553,8 @@ Udp6FindInstanceByPort ( if (EFI_IP6_EQUAL (&ConfigData->StationAddress, Address) && (ConfigData->StationPort == Port) - ) { + ) + { // // If both the address and the port are the same, return TRUE. // @@ -572,7 +568,6 @@ Udp6FindInstanceByPort ( return FALSE; } - /** This function tries to bind the udp instance according to the configured port allocation strategy. @@ -604,10 +599,10 @@ Udp6Bind ( StationAddress = &ConfigData->StationAddress; if (ConfigData->StationPort != 0) { - if (!ConfigData->AllowDuplicatePort && Udp6FindInstanceByPort (InstanceList, StationAddress, ConfigData->StationPort) - ) { + ) + { // // Do not allow duplicate ports and the port is already used by other instance. // @@ -623,11 +618,9 @@ Udp6Bind ( // ConfigData->StationPort = mUdp6RandomPort; } else { - StartPort = mUdp6RandomPort; while (Udp6FindInstanceByPort (InstanceList, StationAddress, mUdp6RandomPort)) { - mUdp6RandomPort++; if (mUdp6RandomPort == 0) { mUdp6RandomPort = UDP6_PORT_KNOWN; @@ -649,10 +642,10 @@ Udp6Bind ( mUdp6RandomPort = UDP6_PORT_KNOWN; } } + return EFI_SUCCESS; } - /** This function is used to check whether the NewConfigData has any un-reconfigurable parameters changed compared to the OldConfigData. @@ -674,7 +667,8 @@ Udp6IsReconfigurable ( if ((NewConfigData->AcceptAnyPort != OldConfigData->AcceptAnyPort) || (NewConfigData->AcceptPromiscuous != OldConfigData->AcceptPromiscuous) || (NewConfigData->AllowDuplicatePort != OldConfigData->AllowDuplicatePort) - ) { + ) + { // // The receiving filter parameters cannot be changed. // @@ -683,7 +677,8 @@ Udp6IsReconfigurable ( if ((!NewConfigData->AcceptAnyPort) && (NewConfigData->StationPort != OldConfigData->StationPort) - ) { + ) + { // // The port is not changeable. // @@ -697,7 +692,6 @@ Udp6IsReconfigurable ( return FALSE; } - if (!EFI_IP6_EQUAL (&NewConfigData->RemoteAddress, &OldConfigData->RemoteAddress)) { // // The remoteaddress is not the same. @@ -707,7 +701,8 @@ Udp6IsReconfigurable ( if (!NetIp6IsUnspecifiedAddr (&NewConfigData->RemoteAddress) && (NewConfigData->RemotePort != OldConfigData->RemotePort) - ) { + ) + { // // The RemotePort differs if it's designated in the configdata. // @@ -720,7 +715,6 @@ Udp6IsReconfigurable ( return TRUE; } - /** This function builds the Ip6 configdata from the Udp6ConfigData. @@ -730,8 +724,8 @@ Udp6IsReconfigurable ( **/ VOID Udp6BuildIp6ConfigData ( - IN EFI_UDP6_CONFIG_DATA *Udp6ConfigData, - IN OUT EFI_IP6_CONFIG_DATA *Ip6ConfigData + IN EFI_UDP6_CONFIG_DATA *Udp6ConfigData, + IN OUT EFI_IP6_CONFIG_DATA *Ip6ConfigData ) { CopyMem ( @@ -739,17 +733,16 @@ Udp6BuildIp6ConfigData ( &mIp6IoDefaultIpConfigData, sizeof (EFI_IP6_CONFIG_DATA) ); - Ip6ConfigData->DefaultProtocol = EFI_IP_PROTO_UDP; - Ip6ConfigData->AcceptPromiscuous = Udp6ConfigData->AcceptPromiscuous; + Ip6ConfigData->DefaultProtocol = EFI_IP_PROTO_UDP; + Ip6ConfigData->AcceptPromiscuous = Udp6ConfigData->AcceptPromiscuous; IP6_COPY_ADDRESS (&Ip6ConfigData->StationAddress, &Udp6ConfigData->StationAddress); IP6_COPY_ADDRESS (&Ip6ConfigData->DestinationAddress, &Udp6ConfigData->RemoteAddress); // // Use the -1 magic number to disable the receiving process of the ip instance. // - Ip6ConfigData->ReceiveTimeout = (UINT32) (-1); + Ip6ConfigData->ReceiveTimeout = (UINT32)(-1); } - /** This function validates the TxToken. It returns the error code according to the spec. @@ -791,7 +784,6 @@ Udp6ValidateTxToken ( EFI_UDP6_CONFIG_DATA *ConfigData; EFI_UDP6_SESSION_DATA *UdpSessionData; - if (TxToken->Event == NULL) { return EFI_INVALID_PARAMETER; } @@ -804,10 +796,10 @@ Udp6ValidateTxToken ( TotalLen = 0; for (Index = 0; Index < TxData->FragmentCount; Index++) { - if ((TxData->FragmentTable[Index].FragmentBuffer == NULL) || (TxData->FragmentTable[Index].FragmentLength == 0) - ) { + ) + { // // If the FragmentBuffer is NULL, or the FragmentLeng is zero. // @@ -829,7 +821,6 @@ Udp6ValidateTxToken ( UdpSessionData = TxData->UdpSessionData; if (UdpSessionData != NULL) { - if ((UdpSessionData->DestinationPort == 0) && (ConfigData->RemotePort == 0)) { // // Ambiguous; no available DestinationPort for this token. @@ -839,7 +830,8 @@ Udp6ValidateTxToken ( if (NetIp6IsUnspecifiedAddr (&UdpSessionData->DestinationAddress) && NetIp6IsUnspecifiedAddr (&ConfigData->RemoteAddress) - ) { + ) + { // // The DestinationAddress is not specified. // @@ -848,7 +840,8 @@ Udp6ValidateTxToken ( if (!NetIp6IsUnspecifiedAddr (&UdpSessionData->DestinationAddress) && !NetIp6IsUnspecifiedAddr (&ConfigData->RemoteAddress) - ) { + ) + { // // The ConfigData.RemoteAddress is not zero and the UdpSessionData.DestinationAddress // is not zero too. @@ -870,7 +863,6 @@ Udp6ValidateTxToken ( return EFI_SUCCESS; } - /** This function checks whether the specified Token duplicates the one in the Map. @@ -895,8 +887,8 @@ Udp6TokenExist ( EFI_UDP6_COMPLETION_TOKEN *Token; EFI_UDP6_COMPLETION_TOKEN *TokenInItem; - Token = (EFI_UDP6_COMPLETION_TOKEN *) Context; - TokenInItem = (EFI_UDP6_COMPLETION_TOKEN *) Item->Key; + Token = (EFI_UDP6_COMPLETION_TOKEN *)Context; + TokenInItem = (EFI_UDP6_COMPLETION_TOKEN *)Item->Key; if ((Token == TokenInItem) || (Token->Event == TokenInItem->Event)) { // @@ -909,7 +901,6 @@ Udp6TokenExist ( return EFI_SUCCESS; } - /** This function calculates the checksum for the Packet, utilizing the pre-calculated pseudo HeadSum to reduce some overhead. @@ -923,21 +914,20 @@ Udp6TokenExist ( **/ UINT16 Udp6Checksum ( - IN NET_BUF *Packet, - IN UINT16 HeadSum + IN NET_BUF *Packet, + IN UINT16 HeadSum ) { UINT16 Checksum; - Checksum = NetbufChecksum (Packet); - Checksum = NetAddChecksum (Checksum, HeadSum); + Checksum = NetbufChecksum (Packet); + Checksum = NetAddChecksum (Checksum, HeadSum); - Checksum = NetAddChecksum (Checksum, HTONS ((UINT16) Packet->TotalSize)); - Checksum = (UINT16) (~Checksum); + Checksum = NetAddChecksum (Checksum, HTONS ((UINT16)Packet->TotalSize)); + Checksum = (UINT16)(~Checksum); return Checksum; } - /** This function removes the specified Token from the TokenMap. @@ -959,7 +949,7 @@ Udp6RemoveToken ( // // Find the Token first. // - Item = NetMapFindKey (TokenMap, (VOID *) Token); + Item = NetMapFindKey (TokenMap, (VOID *)Token); if (Item != NULL) { // @@ -969,10 +959,10 @@ Udp6RemoveToken ( return EFI_SUCCESS; } + return EFI_NOT_FOUND; } - /** This function is the packet transmitting notify function registered to the IpIo interface. It's called to signal the udp TxToken when IpIo layer completes the @@ -990,10 +980,10 @@ Udp6RemoveToken ( VOID EFIAPI Udp6DgramSent ( - IN EFI_STATUS Status, - IN VOID *Context, - IN IP_IO_IP_PROTOCOL Sender, - IN VOID *NotifyData + IN EFI_STATUS Status, + IN VOID *Context, + IN IP_IO_IP_PROTOCOL Sender, + IN VOID *NotifyData ) { UDP6_INSTANCE_DATA *Instance; @@ -1001,8 +991,8 @@ Udp6DgramSent ( ASSERT (Context != NULL && NotifyData != NULL); - Instance = (UDP6_INSTANCE_DATA *) Context; - Token = (EFI_UDP6_COMPLETION_TOKEN *) NotifyData; + Instance = (UDP6_INSTANCE_DATA *)Context; + Token = (EFI_UDP6_COMPLETION_TOKEN *)NotifyData; if (Udp6RemoveToken (&Instance->TxTokens, Token) == EFI_SUCCESS) { // @@ -1014,7 +1004,6 @@ Udp6DgramSent ( } } - /** This function processes the received datagram passed up by the IpIo layer. @@ -1048,16 +1037,15 @@ Udp6DgramRcvd ( // IpIo only passes received packets with Status EFI_SUCCESS or EFI_ICMP_ERROR. // if (Status == EFI_SUCCESS) { - // // Demultiplex the received datagram. // - Udp6Demultiplex ((UDP6_SERVICE_DATA *) Context, NetSession, Packet); + Udp6Demultiplex ((UDP6_SERVICE_DATA *)Context, NetSession, Packet); } else { // // Handle the ICMP6 Error packet. // - Udp6IcmpHandler ((UDP6_SERVICE_DATA *) Context, IcmpError, NetSession, Packet); + Udp6IcmpHandler ((UDP6_SERVICE_DATA *)Context, IcmpError, NetSession, Packet); } // @@ -1067,7 +1055,6 @@ Udp6DgramRcvd ( DispatchDpc (); } - /** This function removes the multicast group specified by Arg from the Map. @@ -1096,7 +1083,8 @@ Udp6LeaveGroup ( if ((McastIp != NULL) && !EFI_IP6_EQUAL (McastIp, ((EFI_IPv6_ADDRESS *)Item->Key)) - ) { + ) + { // // McastIp is not NULL and the multicast address contained in the Item // is not the same as McastIp. @@ -1121,7 +1109,6 @@ Udp6LeaveGroup ( return EFI_SUCCESS; } - /** This function cancel the token specified by Arg in the Map. @@ -1161,15 +1148,15 @@ Udp6CancelTokens ( // will invoke Udp6DgramSent, the token will be signaled and this Item will // be removed from the Map there. // - Packet = (NET_BUF *) (Item->Value); - IpIo = (IP_IO *) (*((UINTN *) &Packet->ProtoData[0])); + Packet = (NET_BUF *)(Item->Value); + IpIo = (IP_IO *)(*((UINTN *)&Packet->ProtoData[0])); IpIoCancelTxToken (IpIo, Packet); } else { // // The token is a receive token. Abort it and remove it from the Map. // - TokenToCancel = (EFI_UDP6_COMPLETION_TOKEN *) Item->Key; + TokenToCancel = (EFI_UDP6_COMPLETION_TOKEN *)Item->Key; NetMapRemoveItem (Map, Item, NULL); TokenToCancel->Status = EFI_ABORTED; @@ -1183,7 +1170,6 @@ Udp6CancelTokens ( return EFI_SUCCESS; } - /** This function removes all the Wrap datas in the RcvdDgramQue. @@ -1206,12 +1192,10 @@ Udp6FlushRcvdDgram ( // // The Wrap will be removed from the RcvdDgramQue by this function call. // - Udp6RecycleRxDataWrap (NULL, (VOID *) Wrap); + Udp6RecycleRxDataWrap (NULL, (VOID *)Wrap); } } - - /** Cancel Udp6 tokens from the Udp6 instance. @@ -1259,15 +1243,15 @@ Udp6InstanceCancelToken ( return EFI_NOT_FOUND; } - ASSERT ((Token != NULL) || - ((0 == NetMapGetCount (&Instance->TxTokens)) && - (0 == NetMapGetCount (&Instance->RxTokens))) - ); + ASSERT ( + (Token != NULL) || + ((0 == NetMapGetCount (&Instance->TxTokens)) && + (0 == NetMapGetCount (&Instance->RxTokens))) + ); return EFI_SUCCESS; } - /** This function checks if the received udp datagram matches with the Instance. @@ -1299,7 +1283,8 @@ Udp6MatchDgram ( if ((!ConfigData->AcceptAnyPort && (Udp6Session->DestinationPort != ConfigData->StationPort)) || ((ConfigData->RemotePort != 0) && (Udp6Session->SourcePort != ConfigData->RemotePort)) - ) { + ) + { // // The local port or the remote port doesn't match. // @@ -1308,7 +1293,8 @@ Udp6MatchDgram ( if (!NetIp6IsUnspecifiedAddr (&ConfigData->RemoteAddress) && !EFI_IP6_EQUAL (&ConfigData->RemoteAddress, &Udp6Session->SourceAddress) - ) { + ) + { // // This datagram doesn't come from the instance's specified sender. // @@ -1317,7 +1303,8 @@ Udp6MatchDgram ( if (NetIp6IsUnspecifiedAddr (&ConfigData->StationAddress) || EFI_IP6_EQUAL (&Udp6Session->DestinationAddress, &ConfigData->StationAddress) - ) { + ) + { // // The instance is configured to receive datagrams destinated to any station IP or // the destination address of this datagram matches the configured station IP. @@ -1329,7 +1316,8 @@ Udp6MatchDgram ( if (IP6_IS_MULTICAST (&Destination) && (NULL != Udp6MapMultiCastAddr (&Instance->McastIps, &Destination)) - ) { + ) + { // // It's a multicast packet and the multicast address is accepted by this instance. // @@ -1339,7 +1327,6 @@ Udp6MatchDgram ( return FALSE; } - /** This function removes the Wrap specified by Context and release relevant resources. @@ -1356,7 +1343,7 @@ Udp6RecycleRxDataWrap ( { UDP6_RXDATA_WRAP *Wrap; - Wrap = (UDP6_RXDATA_WRAP *) Context; + Wrap = (UDP6_RXDATA_WRAP *)Context; // // Remove the Wrap from the list it belongs to. @@ -1376,7 +1363,6 @@ Udp6RecycleRxDataWrap ( FreePool (Wrap); } - /** This function wraps the Packet into RxData. @@ -1397,21 +1383,23 @@ Udp6WrapRxData ( IN EFI_UDP6_RECEIVE_DATA *RxData ) { - EFI_STATUS Status; - UDP6_RXDATA_WRAP *Wrap; + EFI_STATUS Status; + UDP6_RXDATA_WRAP *Wrap; // // Allocate buffer for the Wrap. // - Wrap = AllocateZeroPool (sizeof (UDP6_RXDATA_WRAP) + - (Packet->BlockOpNum - 1) * sizeof (EFI_UDP6_FRAGMENT_DATA)); + Wrap = AllocateZeroPool ( + sizeof (UDP6_RXDATA_WRAP) + + (Packet->BlockOpNum - 1) * sizeof (EFI_UDP6_FRAGMENT_DATA) + ); if (Wrap == NULL) { return NULL; } InitializeListHead (&Wrap->Link); - CopyMem (&Wrap->RxData, RxData, sizeof(EFI_UDP6_RECEIVE_DATA)); + CopyMem (&Wrap->RxData, RxData, sizeof (EFI_UDP6_RECEIVE_DATA)); // // Create the Recycle event. // @@ -1433,7 +1421,6 @@ Udp6WrapRxData ( return Wrap; } - /** This function enqueues the received datagram into the instances' receiving queues. @@ -1490,7 +1477,6 @@ Udp6EnqueueDgram ( return Enqueued; } - /** This function delivers the received datagrams to the specified instance. @@ -1510,8 +1496,8 @@ Udp6InstanceDeliverDgram ( if (!IsListEmpty (&Instance->RcvdDgramQue) && !NetMapIsEmpty (&Instance->RxTokens) - ) { - + ) + { Wrap = NET_LIST_HEAD (&Instance->RcvdDgramQue, UDP6_RXDATA_WRAP, Link); if (NET_BUF_SHARED (Wrap->Packet)) { @@ -1530,7 +1516,7 @@ Udp6InstanceDeliverDgram ( NetListRemoveHead (&Instance->RcvdDgramQue); - Token = (EFI_UDP6_COMPLETION_TOKEN *) NetMapRemoveHead (&Instance->RxTokens, NULL); + Token = (EFI_UDP6_COMPLETION_TOKEN *)NetMapRemoveHead (&Instance->RxTokens, NULL); // // Build the FragmentTable and set the FragmentCount in RxData. @@ -1540,7 +1526,7 @@ Udp6InstanceDeliverDgram ( NetbufBuildExt ( Wrap->Packet, - (NET_FRAGMENT *) RxData->FragmentTable, + (NET_FRAGMENT *)RxData->FragmentTable, &RxData->FragmentCount ); @@ -1555,7 +1541,6 @@ Udp6InstanceDeliverDgram ( } } - /** This function delivers the datagrams enqueued in the instances. @@ -1587,7 +1572,6 @@ Udp6DeliverDgram ( } } - /** This function demultiplexes the received udp datagram to the appropriate instances. @@ -1605,7 +1589,7 @@ Udp6Demultiplex ( IN NET_BUF *Packet ) { - EFI_UDP_HEADER *Udp6Header; + EFI_UDP_HEADER *Udp6Header; UINT16 HeadSum; EFI_UDP6_RECEIVE_DATA RxData; EFI_UDP6_SESSION_DATA *Udp6Session; @@ -1619,7 +1603,7 @@ Udp6Demultiplex ( // // Get the datagram header from the packet buffer. // - Udp6Header = (EFI_UDP_HEADER *) NetbufGetByte (Packet, 0, NULL); + Udp6Header = (EFI_UDP_HEADER *)NetbufGetByte (Packet, 0, NULL); ASSERT (Udp6Header != NULL); if (Udp6Header == NULL) { NetbufFree (Packet); @@ -1658,7 +1642,7 @@ Udp6Demultiplex ( // NetbufTrim (Packet, UDP6_HEADER_SIZE, TRUE); - RxData.DataLength = (UINT32) Packet->TotalSize; + RxData.DataLength = (UINT32)Packet->TotalSize; // // Try to enqueue this datagram into the instances. @@ -1685,7 +1669,6 @@ Udp6Demultiplex ( } } - /** This function builds and sends out a icmp port unreachable message. @@ -1721,14 +1704,14 @@ Udp6SendPortUnreach ( // if (NetSession->IpVersion == IP_VERSION_6) { if (NetIp6IsUnspecifiedAddr (&NetSession->Dest.v6) || - IP6_IS_MULTICAST (&NetSession->Dest.v6) - ) { + IP6_IS_MULTICAST (&NetSession->Dest.v6) + ) + { goto EXIT; } } - - IpSender = IpIoFindSender (&IpIo, NetSession->IpVersion, &NetSession->Dest); + IpSender = IpIoFindSender (&IpIo, NetSession->IpVersion, &NetSession->Dest); // // Get the Ipv6 Mode Data. @@ -1759,11 +1742,12 @@ Udp6SendPortUnreach ( if (EFI_ERROR (Status)) { goto EXIT; } + // // The ICMP6 packet length, includes whole invoking packet and ICMP6 error header. // Len = NetSession->IpHdrLen + - NTOHS(((EFI_UDP_HEADER *) Udp6Header)->Length) + + NTOHS (((EFI_UDP_HEADER *)Udp6Header)->Length) + sizeof (IP6_ICMP_ERROR_HEAD); // @@ -1784,7 +1768,7 @@ Udp6SendPortUnreach ( // // Allocate space for the IP6_ICMP_ERROR_HEAD. // - IcmpErrHdr = (IP6_ICMP_ERROR_HEAD *) NetbufAllocSpace (Packet, Len, FALSE); + IcmpErrHdr = (IP6_ICMP_ERROR_HEAD *)NetbufAllocSpace (Packet, Len, FALSE); ASSERT (IcmpErrHdr != NULL); if (IcmpErrHdr == NULL) { goto EXIT; @@ -1804,8 +1788,8 @@ Udp6SendPortUnreach ( // the length of EFI_IP6_HEADER, so when using the length of IP6_ICMP_ERROR_HEAD // for pointer movement that fact should be considered. // - Ptr = (VOID *) &IcmpErrHdr->Head; - Ptr = (UINT8 *) (UINTN) ((UINTN) Ptr + sizeof (IP6_ICMP_ERROR_HEAD) - sizeof (EFI_IP6_HEADER)); + Ptr = (VOID *)&IcmpErrHdr->Head; + Ptr = (UINT8 *)(UINTN)((UINTN)Ptr + sizeof (IP6_ICMP_ERROR_HEAD) - sizeof (EFI_IP6_HEADER)); CopyMem (Ptr, NetSession->IpHdr.Ip6Hdr, NetSession->IpHdrLen); CopyMem ( Ptr + NetSession->IpHdrLen, @@ -1821,9 +1805,9 @@ Udp6SendPortUnreach ( // // Fill the override data. // - Override.Ip6OverrideData.FlowLabel = 0; - Override.Ip6OverrideData.HopLimit = 255; - Override.Ip6OverrideData.Protocol = IP6_ICMP; + Override.Ip6OverrideData.FlowLabel = 0; + Override.Ip6OverrideData.HopLimit = 255; + Override.Ip6OverrideData.Protocol = IP6_ICMP; // // Send out this icmp packet. @@ -1838,7 +1822,6 @@ EXIT: } } - /** This function handles the received Icmp Error message and de-multiplexes it to the instance. @@ -1868,7 +1851,7 @@ Udp6IcmpHandler ( return; } - Udp6Header = (EFI_UDP_HEADER *) NetbufGetByte (Packet, 0, NULL); + Udp6Header = (EFI_UDP_HEADER *)NetbufGetByte (Packet, 0, NULL); ASSERT (Udp6Header != NULL); if (Udp6Header == NULL) { NetbufFree (Packet); @@ -1913,7 +1896,6 @@ Udp6IcmpHandler ( NetbufFree (Packet); } - /** This function reports the received ICMP error. @@ -1938,7 +1920,7 @@ Udp6ReportIcmpError ( // // Try to get a RxToken from the RxTokens map. // - Token = (EFI_UDP6_COMPLETION_TOKEN *) NetMapRemoveHead (&Instance->RxTokens, NULL); + Token = (EFI_UDP6_COMPLETION_TOKEN *)NetMapRemoveHead (&Instance->RxTokens, NULL); if (Token != NULL) { // @@ -1955,7 +1937,6 @@ Udp6ReportIcmpError ( } } - /** This function is a dummy ext-free function for the NET_BUF created for the output udp datagram. @@ -1982,8 +1963,8 @@ Udp6NetVectorExtFree ( **/ NET_MAP_ITEM * Udp6MapMultiCastAddr ( - IN NET_MAP *Map, - IN VOID *Key + IN NET_MAP *Map, + IN VOID *Key ) { LIST_ENTRY *Entry; @@ -1992,12 +1973,11 @@ Udp6MapMultiCastAddr ( ASSERT (Map != NULL); NET_LIST_FOR_EACH (Entry, &Map->Used) { - Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); - Addr = (EFI_IPv6_ADDRESS *) Item->Key; + Item = NET_LIST_USER_STRUCT (Entry, NET_MAP_ITEM, Link); + Addr = (EFI_IPv6_ADDRESS *)Item->Key; if (EFI_IP6_EQUAL (Addr, Key)) { return Item; } } return NULL; } - diff --git a/NetworkPkg/Udp6Dxe/Udp6Impl.h b/NetworkPkg/Udp6Dxe/Udp6Impl.h index 55a4b8a909..7ea299a5e9 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Impl.h +++ b/NetworkPkg/Udp6Dxe/Udp6Impl.h @@ -28,22 +28,22 @@ #include "Udp6Driver.h" -extern EFI_COMPONENT_NAME2_PROTOCOL gUdp6ComponentName2; -extern EFI_COMPONENT_NAME_PROTOCOL gUdp6ComponentName; -extern EFI_UNICODE_STRING_TABLE *gUdp6ControllerNameTable; -extern EFI_SERVICE_BINDING_PROTOCOL mUdp6ServiceBinding; -extern EFI_UDP6_PROTOCOL mUdp6Protocol; -extern UINT16 mUdp6RandomPort; +extern EFI_COMPONENT_NAME2_PROTOCOL gUdp6ComponentName2; +extern EFI_COMPONENT_NAME_PROTOCOL gUdp6ComponentName; +extern EFI_UNICODE_STRING_TABLE *gUdp6ControllerNameTable; +extern EFI_SERVICE_BINDING_PROTOCOL mUdp6ServiceBinding; +extern EFI_UDP6_PROTOCOL mUdp6Protocol; +extern UINT16 mUdp6RandomPort; // // Define time out 50 milliseconds // -#define UDP6_TIMEOUT_INTERVAL (50 * TICKS_PER_MS) -#define UDP6_HEADER_SIZE sizeof (EFI_UDP_HEADER) -#define UDP6_MAX_DATA_SIZE 65507 -#define UDP6_PORT_KNOWN 1024 +#define UDP6_TIMEOUT_INTERVAL (50 * TICKS_PER_MS) +#define UDP6_HEADER_SIZE sizeof (EFI_UDP_HEADER) +#define UDP6_MAX_DATA_SIZE 65507 +#define UDP6_PORT_KNOWN 1024 -#define UDP6_SERVICE_DATA_SIGNATURE SIGNATURE_32 ('U', 'd', 'p', '6') +#define UDP6_SERVICE_DATA_SIGNATURE SIGNATURE_32 ('U', 'd', 'p', '6') #define UDP6_INSTANCE_DATA_SIGNATURE SIGNATURE_32 ('U', 'd', 'p', 'S') #define UDP6_SERVICE_DATA_FROM_THIS(a) \ @@ -65,47 +65,47 @@ extern UINT16 mUdp6RandomPort; // Udp6 service contest data // typedef struct _UDP6_SERVICE_DATA { - UINT32 Signature; - EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; - EFI_HANDLE ImageHandle; - EFI_HANDLE ControllerHandle; - LIST_ENTRY ChildrenList; - UINTN ChildrenNumber; - IP_IO *IpIo; - EFI_EVENT TimeoutEvent; - } UDP6_SERVICE_DATA; + UINT32 Signature; + EFI_SERVICE_BINDING_PROTOCOL ServiceBinding; + EFI_HANDLE ImageHandle; + EFI_HANDLE ControllerHandle; + LIST_ENTRY ChildrenList; + UINTN ChildrenNumber; + IP_IO *IpIo; + EFI_EVENT TimeoutEvent; +} UDP6_SERVICE_DATA; typedef struct _UDP6_INSTANCE_DATA { - UINT32 Signature; - LIST_ENTRY Link; - UDP6_SERVICE_DATA *Udp6Service; - EFI_UDP6_PROTOCOL Udp6Proto; - EFI_UDP6_CONFIG_DATA ConfigData; - EFI_HANDLE ChildHandle; - BOOLEAN Configured; - BOOLEAN IsNoMapping; - NET_MAP TxTokens; - NET_MAP RxTokens; - NET_MAP McastIps; - LIST_ENTRY RcvdDgramQue; - LIST_ENTRY DeliveredDgramQue; - UINT16 HeadSum; - EFI_STATUS IcmpError; - IP_IO_IP_INFO *IpInfo; - BOOLEAN InDestroy; + UINT32 Signature; + LIST_ENTRY Link; + UDP6_SERVICE_DATA *Udp6Service; + EFI_UDP6_PROTOCOL Udp6Proto; + EFI_UDP6_CONFIG_DATA ConfigData; + EFI_HANDLE ChildHandle; + BOOLEAN Configured; + BOOLEAN IsNoMapping; + NET_MAP TxTokens; + NET_MAP RxTokens; + NET_MAP McastIps; + LIST_ENTRY RcvdDgramQue; + LIST_ENTRY DeliveredDgramQue; + UINT16 HeadSum; + EFI_STATUS IcmpError; + IP_IO_IP_INFO *IpInfo; + BOOLEAN InDestroy; } UDP6_INSTANCE_DATA; typedef struct _UDP6_RXDATA_WRAP { - LIST_ENTRY Link; - NET_BUF *Packet; - UINT32 TimeoutTick; - EFI_UDP6_RECEIVE_DATA RxData; + LIST_ENTRY Link; + NET_BUF *Packet; + UINT32 TimeoutTick; + EFI_UDP6_RECEIVE_DATA RxData; } UDP6_RXDATA_WRAP; typedef struct { - EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; - UINTN NumberOfChildren; - EFI_HANDLE *ChildHandleBuffer; + EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding; + UINTN NumberOfChildren; + EFI_HANDLE *ChildHandleBuffer; } UDP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT; /** @@ -458,8 +458,8 @@ Udp6Bind ( **/ VOID Udp6BuildIp6ConfigData ( - IN EFI_UDP6_CONFIG_DATA *Udp6ConfigData, - IN OUT EFI_IP6_CONFIG_DATA *Ip6ConfigData + IN EFI_UDP6_CONFIG_DATA *Udp6ConfigData, + IN OUT EFI_IP6_CONFIG_DATA *Ip6ConfigData ); /** @@ -600,8 +600,8 @@ Udp6NetVectorExtFree ( **/ UINT16 Udp6Checksum ( - IN NET_BUF *Packet, - IN UINT16 HeadSum + IN NET_BUF *Packet, + IN UINT16 HeadSum ); /** @@ -645,4 +645,3 @@ Udp6FlushRcvdDgram ( ); #endif - diff --git a/NetworkPkg/Udp6Dxe/Udp6Main.c b/NetworkPkg/Udp6Dxe/Udp6Main.c index a33eb3c8cf..e64319fafb 100644 --- a/NetworkPkg/Udp6Dxe/Udp6Main.c +++ b/NetworkPkg/Udp6Dxe/Udp6Main.c @@ -19,7 +19,6 @@ EFI_UDP6_PROTOCOL mUdp6Protocol = { Udp6Poll }; - /** This function copies the current operational settings of this EFI UDPv6 Protocol instance into user-supplied buffers. This function is used optionally to retrieve @@ -91,7 +90,6 @@ Udp6GetModeData ( return Status; } - /** This function is used to do the following: Initialize and start this instance of the EFI UDPv6 Protocol. @@ -159,16 +157,16 @@ Udp6Configure ( Status = EFI_SUCCESS; ASSERT (Udp6Service != NULL); - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); if (UdpConfigData != NULL) { - IP6_COPY_ADDRESS (&StationAddress, &UdpConfigData->StationAddress); IP6_COPY_ADDRESS (&RemoteAddress, &UdpConfigData->RemoteAddress); if ((!NetIp6IsUnspecifiedAddr (&StationAddress) && !NetIp6IsValidUnicast (&StationAddress)) || (!NetIp6IsUnspecifiedAddr (&RemoteAddress) && !NetIp6IsValidUnicast (&RemoteAddress)) - ){ + ) + { // // If not use default address, and StationAddress is not a valid unicast // if it is not IPv6 address or RemoteAddress is not a valid unicast IPv6 @@ -286,7 +284,6 @@ ON_EXIT: return Status; } - /** This function is used to enable and disable the multicast group filtering. @@ -348,12 +345,13 @@ Udp6Groups ( if (McastIp != NULL) { FreePool (McastIp); } + return EFI_NOT_STARTED; } - Ip = Instance->IpInfo->Ip.Ip6; + Ip = Instance->IpInfo->Ip.Ip6; - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); // // Invoke the Ip instance the Udp6 instance consumes to do the group operation. @@ -371,10 +369,8 @@ Udp6Groups ( // the multicast datagrams destinated to multicast IPs the other instances configured. // if (JoinFlag) { - - Status = NetMapInsertTail (&Instance->McastIps, (VOID *) McastIp, NULL); + Status = NetMapInsertTail (&Instance->McastIps, (VOID *)McastIp, NULL); } else { - Status = NetMapIterate (&Instance->McastIps, Udp6LeaveGroup, MulticastAddress); if ((MulticastAddress != NULL) && (Status == EFI_ABORTED)) { Status = EFI_SUCCESS; @@ -394,8 +390,6 @@ ON_EXIT: return Status; } - - /** This function places a sending request to this instance of the EFI UDPv6 Protocol, alongside the transmit data that was filled by the user. @@ -490,7 +484,8 @@ Udp6Transmit ( if (EFI_ERROR (NetMapIterate (&Instance->TxTokens, Udp6TokenExist, Token)) || EFI_ERROR (NetMapIterate (&Instance->RxTokens, Udp6TokenExist, Token)) - ){ + ) + { // // Try to find a duplicate token in the two token maps, if found, return // EFI_ACCESS_DENIED. @@ -505,7 +500,7 @@ Udp6Transmit ( // Create a net buffer to hold the user buffer and the udp header. // Packet = NetbufFromExt ( - (NET_FRAGMENT *) TxData->FragmentTable, + (NET_FRAGMENT *)TxData->FragmentTable, TxData->FragmentCount, UDP6_HEADER_SIZE, 0, @@ -520,10 +515,10 @@ Udp6Transmit ( // // Store the IpIo in ProtoData. // - Udp6Service = Instance->Udp6Service; - *((UINTN *) &Packet->ProtoData[0]) = (UINTN) (Udp6Service->IpIo); + Udp6Service = Instance->Udp6Service; + *((UINTN *)&Packet->ProtoData[0]) = (UINTN)(Udp6Service->IpIo); - Udp6Header = (EFI_UDP_HEADER *) NetbufAllocSpace (Packet, UDP6_HEADER_SIZE, TRUE); + Udp6Header = (EFI_UDP_HEADER *)NetbufAllocSpace (Packet, UDP6_HEADER_SIZE, TRUE); ASSERT (Udp6Header != NULL); if (Udp6Header == NULL) { Status = EFI_OUT_OF_RESOURCES; @@ -535,10 +530,10 @@ Udp6Transmit ( // // Fill the udp header. // - Udp6Header->SrcPort = HTONS (ConfigData->StationPort); - Udp6Header->DstPort = HTONS (ConfigData->RemotePort); - Udp6Header->Length = HTONS ((UINT16) Packet->TotalSize); - Udp6Header->Checksum = 0; + Udp6Header->SrcPort = HTONS (ConfigData->StationPort); + Udp6Header->DstPort = HTONS (ConfigData->RemotePort); + Udp6Header->Length = HTONS ((UINT16)Packet->TotalSize); + Udp6Header->Checksum = 0; // // Set the UDP Header in NET_BUF, this UDP header is for IP6 can fast get the // Udp header for pseudoHeadCheckSum. @@ -564,7 +559,7 @@ Udp6Transmit ( } // - //Calculate the pseudo head checksum using the overridden parameters. + // Calculate the pseudo head checksum using the overridden parameters. // if (!NetIp6IsUnspecifiedAddr (&ConfigData->StationAddress)) { HeadSum = NetIp6PseudoHeadChecksum ( @@ -590,7 +585,6 @@ Udp6Transmit ( // and the Ipv6 will fill the correct value of this checksum. // Udp6Header->Checksum = 0; - } } else { // @@ -611,8 +605,6 @@ Udp6Transmit ( } } - - // // Fill the IpIo Override data. // @@ -631,7 +623,7 @@ Udp6Transmit ( // // Send out this datagram through IpIo. // - if (UdpSessionData != NULL){ + if (UdpSessionData != NULL) { IP6_COPY_ADDRESS (&(IpDestAddr.v6), &Destination); } else { ZeroMem (&IpDestAddr.v6, sizeof (EFI_IPv6_ADDRESS)); @@ -664,7 +656,6 @@ ON_EXIT: return Status; } - /** This function places a completion token into the receive packet queue. This function is always asynchronous. @@ -717,7 +708,8 @@ Udp6Receive ( if (EFI_ERROR (NetMapIterate (&Instance->RxTokens, Udp6TokenExist, Token)) || EFI_ERROR (NetMapIterate (&Instance->TxTokens, Udp6TokenExist, Token)) - ){ + ) + { // // Return EFI_ACCESS_DENIED if the specified token is already in the TxTokens or // RxTokens map. @@ -759,7 +751,6 @@ ON_EXIT: return Status; } - /** This function is used to abort a pending transmit or receive request. @@ -821,7 +812,6 @@ Udp6Cancel ( return Status; } - /** This function can be used by network drivers and applications to increase the rate that data packets are moved between the communications device and the transmit/receive queues. diff --git a/NetworkPkg/UefiPxeBcDxe/ComponentName.c b/NetworkPkg/UefiPxeBcDxe/ComponentName.c index 75d46b368d..07b8f7d42f 100644 --- a/NetworkPkg/UefiPxeBcDxe/ComponentName.c +++ b/NetworkPkg/UefiPxeBcDxe/ComponentName.c @@ -56,7 +56,6 @@ PxeBcComponentNameGetDriverName ( OUT CHAR16 **DriverName ); - /** Retrieves a Unicode string that is the user-readable name of the controller that is being managed by a driver. @@ -135,11 +134,10 @@ PxeBcComponentNameGetControllerName ( OUT CHAR16 **ControllerName ); - // // EFI Component Name Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gPxeBcComponentName = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gPxeBcComponentName = { PxeBcComponentNameGetDriverName, PxeBcComponentNameGetControllerName, "eng" @@ -148,13 +146,13 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gPxeBcComponentName // // EFI Component Name 2 Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gPxeBcComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) PxeBcComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) PxeBcComponentNameGetControllerName, +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gPxeBcComponentName2 = { + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)PxeBcComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)PxeBcComponentNameGetControllerName, "en" }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPxeBcDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPxeBcDriverNameTable[] = { { "eng;en", L"UEFI PXE Base Code Driver" @@ -165,7 +163,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPxeBcDriverNameTab } }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPxeBcControllerNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPxeBcControllerNameTable[] = { { "eng;en", L"PXE Controller" @@ -223,7 +221,7 @@ PxeBcComponentNameGetDriverName ( OUT CHAR16 **DriverName ) { - return LookupUnicodeString2( + return LookupUnicodeString2 ( Language, This->SupportedLanguages, mPxeBcDriverNameTable, @@ -232,7 +230,6 @@ PxeBcComponentNameGetDriverName ( ); } - /** Retrieves a Unicode string that is the user-readable name of the controller that is being managed by a driver. @@ -311,11 +308,11 @@ PxeBcComponentNameGetControllerName ( OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - EFI_HANDLE NicHandle; - PXEBC_PRIVATE_PROTOCOL *Id; + EFI_STATUS Status; + EFI_HANDLE NicHandle; + PXEBC_PRIVATE_PROTOCOL *Id; - if (ControllerHandle == NULL || ChildHandle != NULL) { + if ((ControllerHandle == NULL) || (ChildHandle != NULL)) { return EFI_UNSUPPORTED; } @@ -333,7 +330,7 @@ PxeBcComponentNameGetControllerName ( Status = gBS->OpenProtocol ( NicHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c b/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c index d062a52607..f22a151e25 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.c @@ -10,7 +10,6 @@ #include "PxeBcImpl.h" - /** Display the string of the boot item. @@ -22,27 +21,26 @@ **/ VOID PxeBcDisplayBootItem ( - IN UINT8 *Str, - IN UINT8 Len + IN UINT8 *Str, + IN UINT8 Len ) { - UINT8 Tmp; + UINT8 Tmp; // // Cut off the chars behind 70th. // - Len = (UINT8) MIN (PXEBC_DISPLAY_MAX_LINE, Len); - Tmp = Str[Len]; - Str[Len] = 0; + Len = (UINT8)MIN (PXEBC_DISPLAY_MAX_LINE, Len); + Tmp = Str[Len]; + Str[Len] = 0; AsciiPrint ("%a \n", Str); // // Restore the original 70th char. // - Str[Len] = Tmp; + Str[Len] = Tmp; } - /** Select and maintain the boot prompt if needed. @@ -57,22 +55,22 @@ PxeBcDisplayBootItem ( **/ EFI_STATUS PxeBcSelectBootPrompt ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ) { - PXEBC_DHCP_PACKET_CACHE *Cache; - PXEBC_VENDOR_OPTION *VendorOpt; - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_EVENT TimeoutEvent; - EFI_EVENT DescendEvent; - EFI_INPUT_KEY InputKey; - EFI_STATUS Status; - UINT32 OfferType; - UINT8 Timeout; - UINT8 *Prompt; - UINT8 PromptLen; - INT32 SecCol; - INT32 SecRow; + PXEBC_DHCP_PACKET_CACHE *Cache; + PXEBC_VENDOR_OPTION *VendorOpt; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_EVENT TimeoutEvent; + EFI_EVENT DescendEvent; + EFI_INPUT_KEY InputKey; + EFI_STATUS Status; + UINT32 OfferType; + UINT8 Timeout; + UINT8 *Prompt; + UINT8 PromptLen; + INT32 SecCol; + INT32 SecRow; TimeoutEvent = NULL; DescendEvent = NULL; @@ -83,7 +81,7 @@ PxeBcSelectBootPrompt ( // // Only DhcpPxe10 and ProxyPxe10 offer needs boot prompt. // - if (OfferType != PxeOfferTypeProxyPxe10 && OfferType != PxeOfferTypeDhcpPxe10) { + if ((OfferType != PxeOfferTypeProxyPxe10) && (OfferType != PxeOfferTypeDhcpPxe10)) { return EFI_NOT_FOUND; } @@ -100,7 +98,8 @@ PxeBcSelectBootPrompt ( // - a boot file name has been presented in the initial DHCP or ProxyDHCP offer packet. // if (IS_DISABLE_PROMPT_MENU (VendorOpt->DiscoverCtrl) && - Cache->Dhcp4.OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] != NULL) { + (Cache->Dhcp4.OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] != NULL)) + { return EFI_ABORTED; } @@ -110,7 +109,7 @@ PxeBcSelectBootPrompt ( Timeout = VendorOpt->MenuPrompt->Timeout; Prompt = VendorOpt->MenuPrompt->Prompt; - PromptLen = (UINT8) (VendorOpt->MenuPromptLen - 1); + PromptLen = (UINT8)(VendorOpt->MenuPromptLen - 1); // // The valid scope of Timeout refers to PXE2.1 spec. @@ -118,6 +117,7 @@ PxeBcSelectBootPrompt ( if (Timeout == 0) { return EFI_TIMEOUT; } + if (Timeout == 255) { return EFI_SUCCESS; } @@ -185,46 +185,43 @@ PxeBcSelectBootPrompt ( gST->ConOut->SetCursorPosition (gST->ConOut, SecCol + PromptLen, SecRow); AsciiPrint ("(%d) ", Timeout--); } + if (gST->ConIn->ReadKeyStroke (gST->ConIn, &InputKey) == EFI_NOT_READY) { gBS->Stall (10 * TICKS_PER_MS); continue; } + // // Parse the input key by user. // If or + is pressed, return success to display the boot menu. // if (InputKey.ScanCode == 0) { - switch (InputKey.UnicodeChar) { + case CTRL ('c'): + Status = EFI_ABORTED; + break; - case CTRL ('c'): - Status = EFI_ABORTED; - break; - - case CTRL ('m'): - case 'm': - case 'M': - Status = EFI_SUCCESS; - break; + case CTRL ('m'): + case 'm': + case 'M': + Status = EFI_SUCCESS; + break; - default: - continue; + default: + continue; } - } else { - switch (InputKey.ScanCode) { + case SCAN_F8: + Status = EFI_SUCCESS; + break; - case SCAN_F8: - Status = EFI_SUCCESS; - break; - - case SCAN_ESC: - Status = EFI_ABORTED; - break; + case SCAN_ESC: + Status = EFI_ABORTED; + break; - default: - continue; + default: + continue; } } @@ -234,12 +231,13 @@ PxeBcSelectBootPrompt ( // // Reset the cursor on the screen. // - gST->ConOut->SetCursorPosition (gST->ConOut, 0 , SecRow + 1); + gST->ConOut->SetCursorPosition (gST->ConOut, 0, SecRow + 1); ON_EXIT: if (DescendEvent != NULL) { gBS->CloseEvent (DescendEvent); } + if (TimeoutEvent != NULL) { gBS->CloseEvent (TimeoutEvent); } @@ -247,7 +245,6 @@ ON_EXIT: return Status; } - /** Select the boot menu by user's input. @@ -262,26 +259,26 @@ ON_EXIT: **/ EFI_STATUS PxeBcSelectBootMenu ( - IN PXEBC_PRIVATE_DATA *Private, - OUT UINT16 *Type, - IN BOOLEAN UseDefaultItem + IN PXEBC_PRIVATE_DATA *Private, + OUT UINT16 *Type, + IN BOOLEAN UseDefaultItem ) { - EFI_PXE_BASE_CODE_MODE *Mode; - PXEBC_DHCP_PACKET_CACHE *Cache; - PXEBC_VENDOR_OPTION *VendorOpt; - EFI_INPUT_KEY InputKey; - UINT32 OfferType; - UINT8 MenuSize; - UINT8 MenuNum; - INT32 TopRow; - UINT16 Select; - UINT16 LastSelect; - UINT8 Index; - BOOLEAN Finish; - CHAR8 Blank[PXEBC_DISPLAY_MAX_LINE]; - PXEBC_BOOT_MENU_ENTRY *MenuItem; - PXEBC_BOOT_MENU_ENTRY *MenuArray[PXEBC_MENU_MAX_NUM]; + EFI_PXE_BASE_CODE_MODE *Mode; + PXEBC_DHCP_PACKET_CACHE *Cache; + PXEBC_VENDOR_OPTION *VendorOpt; + EFI_INPUT_KEY InputKey; + UINT32 OfferType; + UINT8 MenuSize; + UINT8 MenuNum; + INT32 TopRow; + UINT16 Select; + UINT16 LastSelect; + UINT8 Index; + BOOLEAN Finish; + CHAR8 Blank[PXEBC_DISPLAY_MAX_LINE]; + PXEBC_BOOT_MENU_ENTRY *MenuItem; + PXEBC_BOOT_MENU_ENTRY *MenuArray[PXEBC_MENU_MAX_NUM]; Finish = FALSE; Select = 0; @@ -305,10 +302,10 @@ PxeBcSelectBootMenu ( // // Display the boot menu on the screen. // - SetMem (Blank, sizeof(Blank), ' '); + SetMem (Blank, sizeof (Blank), ' '); - MenuSize = VendorOpt->BootMenuLen; - MenuItem = VendorOpt->BootMenu; + MenuSize = VendorOpt->BootMenuLen; + MenuItem = VendorOpt->BootMenu; if (MenuSize == 0) { return EFI_DEVICE_ERROR; @@ -316,9 +313,9 @@ PxeBcSelectBootMenu ( while (MenuSize > 0 && Index < PXEBC_MENU_MAX_NUM) { ASSERT (MenuItem != NULL); - MenuArray[Index] = MenuItem; - MenuSize = (UINT8) (MenuSize - (MenuItem->DescLen + 3)); - MenuItem = (PXEBC_BOOT_MENU_ENTRY *) ((UINT8 *) MenuItem + MenuItem->DescLen + 3); + MenuArray[Index] = MenuItem; + MenuSize = (UINT8)(MenuSize - (MenuItem->DescLen + 3)); + MenuItem = (PXEBC_BOOT_MENU_ENTRY *)((UINT8 *)MenuItem + MenuItem->DescLen + 3); Index++; } @@ -361,60 +358,62 @@ PxeBcSelectBootMenu ( if (InputKey.ScanCode == 0) { switch (InputKey.UnicodeChar) { - case CTRL ('c'): - InputKey.ScanCode = SCAN_ESC; - break; + case CTRL ('c'): + InputKey.ScanCode = SCAN_ESC; + break; - case CTRL ('j'): /* linefeed */ - case CTRL ('m'): /* return */ - Finish = TRUE; - break; + case CTRL ('j'): /* linefeed */ + case CTRL ('m'): /* return */ + Finish = TRUE; + break; - case CTRL ('i'): /* tab */ - case ' ': - case 'd': - case 'D': - InputKey.ScanCode = SCAN_DOWN; - break; + case CTRL ('i'): /* tab */ + case ' ': + case 'd': + case 'D': + InputKey.ScanCode = SCAN_DOWN; + break; - case CTRL ('h'): /* backspace */ - case 'u': - case 'U': - InputKey.ScanCode = SCAN_UP; - break; + case CTRL ('h'): /* backspace */ + case 'u': + case 'U': + InputKey.ScanCode = SCAN_UP; + break; - default: - InputKey.ScanCode = 0; + default: + InputKey.ScanCode = 0; } } switch (InputKey.ScanCode) { - case SCAN_LEFT: - case SCAN_UP: - if (Select != 0) { - Select--; - } - break; + case SCAN_LEFT: + case SCAN_UP: + if (Select != 0) { + Select--; + } - case SCAN_DOWN: - case SCAN_RIGHT: - if (++Select == MenuNum) { - Select--; - } - break; + break; - case SCAN_PAGE_UP: - case SCAN_HOME: - Select = 0; - break; + case SCAN_DOWN: + case SCAN_RIGHT: + if (++Select == MenuNum) { + Select--; + } - case SCAN_PAGE_DOWN: - case SCAN_END: - Select = (UINT16) (MenuNum - 1); - break; + break; - case SCAN_ESC: - return EFI_ABORTED; + case SCAN_PAGE_UP: + case SCAN_HOME: + Select = 0; + break; + + case SCAN_PAGE_DOWN: + case SCAN_END: + Select = (UINT16)(MenuNum - 1); + break; + + case SCAN_ESC: + return EFI_ABORTED; } // @@ -441,7 +440,6 @@ PxeBcSelectBootMenu ( return EFI_SUCCESS; } - /** Parse out the boot information from the last Dhcp4 reply packet. @@ -454,8 +452,8 @@ PxeBcSelectBootMenu ( **/ EFI_STATUS PxeBcDhcp4BootInfo ( - IN OUT PXEBC_PRIVATE_DATA *Private, - OUT UINT64 *BufferSize + IN OUT PXEBC_PRIVATE_DATA *Private, + OUT UINT64 *BufferSize ) { EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; @@ -506,7 +504,7 @@ PxeBcDhcp4BootInfo ( VendorOpt = &Cache4->VendorOpt; if (IS_DISABLE_PROMPT_MENU (VendorOpt->DiscoverCtrl) && IS_VALID_BOOT_SERVERS (VendorOpt->BitMap)) { Entry = VendorOpt->BootSvr; - if (VendorOpt->BootSvrLen >= sizeof (PXEBC_BOOT_SVR_ENTRY) && Entry->IpCnt > 0) { + if ((VendorOpt->BootSvrLen >= sizeof (PXEBC_BOOT_SVR_ENTRY)) && (Entry->IpCnt > 0)) { CopyMem ( &Private->ServerIp, &Entry->IpAddr[0], @@ -514,6 +512,7 @@ PxeBcDhcp4BootInfo ( ); } } + if (Private->ServerIp.Addr[0] == 0) { // // ServerIp.Addr[0] equals zero means we failed to get IP address from boot server list. @@ -525,6 +524,7 @@ PxeBcDhcp4BootInfo ( sizeof (EFI_IPv4_ADDRESS) ); } + if (Private->ServerIp.Addr[0] == 0) { // // Still failed , use the IP address from option 54. @@ -546,7 +546,7 @@ PxeBcDhcp4BootInfo ( // Parse the boot file size by option. // CopyMem (&Value, Cache4->OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE_LEN]->Data, sizeof (Value)); - Value = NTOHS (Value); + Value = NTOHS (Value); // // The field of boot file size is 512 bytes in unit. // @@ -572,7 +572,7 @@ PxeBcDhcp4BootInfo ( // // Save the value of boot file size. // - Private->BootFileSize = (UINTN) *BufferSize; + Private->BootFileSize = (UINTN)*BufferSize; // // Display all the information: boot server address, boot file name and boot file size. @@ -585,7 +585,6 @@ PxeBcDhcp4BootInfo ( return Status; } - /** Parse out the boot information from the last Dhcp6 reply packet. @@ -599,8 +598,8 @@ PxeBcDhcp4BootInfo ( **/ EFI_STATUS PxeBcDhcp6BootInfo ( - IN OUT PXEBC_PRIVATE_DATA *Private, - OUT UINT64 *BufferSize + IN OUT PXEBC_PRIVATE_DATA *Private, + OUT UINT64 *BufferSize ) { EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; @@ -648,7 +647,6 @@ PxeBcDhcp6BootInfo ( return Status; } - // // Parse (m)tftp server ip address and bootfile name. // @@ -656,7 +654,7 @@ PxeBcDhcp6BootInfo ( Private, &Private->BootFileName, &Private->ServerIp.v6, - (CHAR8 *) (Cache6->OptList[PXEBC_DHCP6_IDX_BOOT_FILE_URL]->Data), + (CHAR8 *)(Cache6->OptList[PXEBC_DHCP6_IDX_BOOT_FILE_URL]->Data), NTOHS (Cache6->OptList[PXEBC_DHCP6_IDX_BOOT_FILE_URL]->OpLen) ); if (EFI_ERROR (Status)) { @@ -670,10 +668,11 @@ PxeBcDhcp6BootInfo ( // // Parse it out if have the boot file parameter option. // - Status = PxeBcExtractBootFileParam ((CHAR8 *) Cache6->OptList[PXEBC_DHCP6_IDX_BOOT_FILE_PARAM]->Data, &Value); + Status = PxeBcExtractBootFileParam ((CHAR8 *)Cache6->OptList[PXEBC_DHCP6_IDX_BOOT_FILE_PARAM]->Data, &Value); if (EFI_ERROR (Status)) { return Status; } + // // The field of boot file size is 512 bytes in unit. // @@ -699,7 +698,7 @@ PxeBcDhcp6BootInfo ( // // Save the value of boot file size. // - Private->BootFileSize = (UINTN) *BufferSize; + Private->BootFileSize = (UINTN)*BufferSize; // // Display all the information: boot server address, boot file name and boot file size. @@ -712,7 +711,6 @@ PxeBcDhcp6BootInfo ( return Status; } - /** Extract the discover information and boot server entry from the cached packets if unspecified. @@ -732,17 +730,17 @@ PxeBcExtractDiscoverInfo ( IN PXEBC_PRIVATE_DATA *Private, IN UINT16 Type, IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO **DiscoverInfo, - OUT PXEBC_BOOT_SVR_ENTRY **BootEntry, - OUT EFI_PXE_BASE_CODE_SRVLIST **SrvList + OUT PXEBC_BOOT_SVR_ENTRY **BootEntry, + OUT EFI_PXE_BASE_CODE_SRVLIST **SrvList ) { - EFI_PXE_BASE_CODE_MODE *Mode; - PXEBC_DHCP4_PACKET_CACHE *Cache4; - PXEBC_VENDOR_OPTION *VendorOpt; - PXEBC_BOOT_SVR_ENTRY *Entry; - BOOLEAN IsFound; - EFI_PXE_BASE_CODE_DISCOVER_INFO *Info; - UINT16 Index; + EFI_PXE_BASE_CODE_MODE *Mode; + PXEBC_DHCP4_PACKET_CACHE *Cache4; + PXEBC_VENDOR_OPTION *VendorOpt; + PXEBC_BOOT_SVR_ENTRY *Entry; + BOOLEAN IsFound; + EFI_PXE_BASE_CODE_DISCOVER_INFO *Info; + UINT16 Index; Mode = Private->PxeBc.Mode; Info = *DiscoverInfo; @@ -759,7 +757,7 @@ PxeBcExtractDiscoverInfo ( // CopyMem (&Info->SrvList[0].IpAddr, &Private->ServerIp, sizeof (EFI_IP_ADDRESS)); - *SrvList = Info->SrvList; + *SrvList = Info->SrvList; } else { Entry = NULL; IsFound = FALSE; @@ -778,8 +776,8 @@ PxeBcExtractDiscoverInfo ( // Info->UseMCast = (BOOLEAN) !IS_DISABLE_MCAST_DISCOVER (VendorOpt->DiscoverCtrl); Info->UseBCast = (BOOLEAN) !IS_DISABLE_BCAST_DISCOVER (VendorOpt->DiscoverCtrl); - Info->MustUseList = (BOOLEAN) IS_ENABLE_USE_SERVER_LIST (VendorOpt->DiscoverCtrl); - Info->UseUCast = (BOOLEAN) IS_VALID_BOOT_SERVERS (VendorOpt->BitMap); + Info->MustUseList = (BOOLEAN)IS_ENABLE_USE_SERVER_LIST (VendorOpt->DiscoverCtrl); + Info->UseUCast = (BOOLEAN)IS_VALID_BOOT_SERVERS (VendorOpt->BitMap); if (Info->UseMCast) { // @@ -793,11 +791,12 @@ PxeBcExtractDiscoverInfo ( if (Info->UseUCast) { Entry = VendorOpt->BootSvr; - while (((UINT8) (Entry - VendorOpt->BootSvr)) < VendorOpt->BootSvrLen) { + while (((UINT8)(Entry - VendorOpt->BootSvr)) < VendorOpt->BootSvrLen) { if (Entry->Type == HTONS (Type)) { IsFound = TRUE; break; } + Entry = GET_NEXT_BOOT_SVR_ENTRY (Entry); } @@ -811,6 +810,7 @@ PxeBcExtractDiscoverInfo ( if (*DiscoverInfo == NULL) { return EFI_OUT_OF_RESOURCES; } + CopyMem (*DiscoverInfo, Info, sizeof (*Info)); Info = *DiscoverInfo; } @@ -818,7 +818,7 @@ PxeBcExtractDiscoverInfo ( for (Index = 0; Index < Info->IpCnt; Index++) { CopyMem (&Info->SrvList[Index].IpAddr, &Entry->IpAddr[Index], sizeof (EFI_IPv4_ADDRESS)); Info->SrvList[Index].AcceptAnyResponse = !Info->MustUseList; - Info->SrvList[Index].Type = NTOHS (Entry->Type); + Info->SrvList[Index].Type = NTOHS (Entry->Type); } } @@ -829,7 +829,6 @@ PxeBcExtractDiscoverInfo ( return EFI_SUCCESS; } - /** Build the discover packet and send out for boot server. @@ -849,13 +848,13 @@ PxeBcExtractDiscoverInfo ( **/ EFI_STATUS PxeBcDiscoverBootServer ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINT16 Type, - IN UINT16 *Layer, - IN BOOLEAN UseBis, - IN EFI_IP_ADDRESS *DestIp, - IN UINT16 IpCount, - IN EFI_PXE_BASE_CODE_SRVLIST *SrvList + IN PXEBC_PRIVATE_DATA *Private, + IN UINT16 Type, + IN UINT16 *Layer, + IN BOOLEAN UseBis, + IN EFI_IP_ADDRESS *DestIp, + IN UINT16 IpCount, + IN EFI_PXE_BASE_CODE_SRVLIST *SrvList ) { if (Private->PxeBc.Mode->UsingIpv6) { @@ -879,7 +878,6 @@ PxeBcDiscoverBootServer ( } } - /** Discover all the boot information for boot file. @@ -894,8 +892,8 @@ PxeBcDiscoverBootServer ( **/ EFI_STATUS PxeBcDiscoverBootFile ( - IN OUT PXEBC_PRIVATE_DATA *Private, - OUT UINT64 *BufferSize + IN OUT PXEBC_PRIVATE_DATA *Private, + OUT UINT64 *BufferSize ) { EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; @@ -937,7 +935,6 @@ PxeBcDiscoverBootFile ( } if (!EFI_ERROR (Status)) { - if (Type == EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP) { // // Local boot(PXE bootstrap server) need abort @@ -949,7 +946,7 @@ PxeBcDiscoverBootFile ( // Start to discover the boot server to get (m)tftp server ip address, bootfile // name and bootfile size. // - UseBis = (BOOLEAN) (Mode->BisSupported && Mode->BisDetected); + UseBis = (BOOLEAN)(Mode->BisSupported && Mode->BisDetected); Status = PxeBc->Discover (PxeBc, Type, &Layer, UseBis, NULL); if (EFI_ERROR (Status)) { return Status; @@ -973,6 +970,7 @@ PxeBcDiscoverBootFile ( Private->PxeReply.Dhcp4.Packet.Ack.Length ); } + Mode->ProxyOfferReceived = TRUE; } } @@ -989,7 +987,6 @@ PxeBcDiscoverBootFile ( return Status; } - /** Install PxeBaseCodeCallbackProtocol if not installed before. @@ -1002,8 +999,8 @@ PxeBcDiscoverBootFile ( **/ EFI_STATUS PxeBcInstallCallback ( - IN OUT PXEBC_PRIVATE_DATA *Private, - OUT BOOLEAN *NewMakeCallback + IN OUT PXEBC_PRIVATE_DATA *Private, + OUT BOOLEAN *NewMakeCallback ) { EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; @@ -1016,10 +1013,9 @@ PxeBcInstallCallback ( Status = gBS->HandleProtocol ( Private->Mode.UsingIpv6 ? Private->Ip6Nic->Controller : Private->Ip4Nic->Controller, &gEfiPxeBaseCodeCallbackProtocolGuid, - (VOID **) &Private->PxeBcCallback + (VOID **)&Private->PxeBcCallback ); if (Status == EFI_UNSUPPORTED) { - CopyMem ( &Private->LoadFileCallback, &gPxeBcCallBackTemplate, @@ -1036,7 +1032,7 @@ PxeBcInstallCallback ( &Private->LoadFileCallback ); - (*NewMakeCallback) = (BOOLEAN) (Status == EFI_SUCCESS); + (*NewMakeCallback) = (BOOLEAN)(Status == EFI_SUCCESS); Status = PxeBc->SetParameters (PxeBc, NULL, NULL, NULL, NULL, NewMakeCallback); if (EFI_ERROR (Status)) { @@ -1048,7 +1044,6 @@ PxeBcInstallCallback ( return EFI_SUCCESS; } - /** Uninstall PxeBaseCodeCallbackProtocol. @@ -1059,29 +1054,27 @@ PxeBcInstallCallback ( **/ VOID PxeBcUninstallCallback ( - IN PXEBC_PRIVATE_DATA *Private, - IN BOOLEAN NewMakeCallback + IN PXEBC_PRIVATE_DATA *Private, + IN BOOLEAN NewMakeCallback ) { - EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; + EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; PxeBc = &Private->PxeBc; if (NewMakeCallback) { - NewMakeCallback = FALSE; PxeBc->SetParameters (PxeBc, NULL, NULL, NULL, NULL, &NewMakeCallback); gBS->UninstallProtocolInterface ( - Private->Mode.UsingIpv6 ? Private->Ip6Nic->Controller : Private->Ip4Nic->Controller, - &gEfiPxeBaseCodeCallbackProtocolGuid, - &Private->LoadFileCallback - ); + Private->Mode.UsingIpv6 ? Private->Ip6Nic->Controller : Private->Ip4Nic->Controller, + &gEfiPxeBaseCodeCallbackProtocolGuid, + &Private->LoadFileCallback + ); } } - /** Download one of boot file in the list, and it's special for IPv6. @@ -1098,15 +1091,15 @@ PxeBcUninstallCallback ( **/ EFI_STATUS PxeBcReadBootFileList ( - IN PXEBC_PRIVATE_DATA *Private, - IN OUT UINT64 *BufferSize, - IN VOID *Buffer OPTIONAL + IN PXEBC_PRIVATE_DATA *Private, + IN OUT UINT64 *BufferSize, + IN VOID *Buffer OPTIONAL ) { - EFI_STATUS Status; - EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; + EFI_STATUS Status; + EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; - PxeBc = &Private->PxeBc; + PxeBc = &Private->PxeBc; // // Try to download the boot file if everything is ready. @@ -1124,16 +1117,13 @@ PxeBcReadBootFileList ( NULL, FALSE ); - - } else { - Status = EFI_BUFFER_TOO_SMALL; + Status = EFI_BUFFER_TOO_SMALL; } return Status; } - /** Load boot file into user buffer. @@ -1150,17 +1140,17 @@ PxeBcReadBootFileList ( **/ EFI_STATUS PxeBcLoadBootFile ( - IN PXEBC_PRIVATE_DATA *Private, - IN OUT UINTN *BufferSize, - IN VOID *Buffer OPTIONAL + IN PXEBC_PRIVATE_DATA *Private, + IN OUT UINTN *BufferSize, + IN VOID *Buffer OPTIONAL ) { - BOOLEAN NewMakeCallback; - UINT64 RequiredSize; - UINT64 CurrentSize; - EFI_STATUS Status; - EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; - EFI_PXE_BASE_CODE_MODE *PxeBcMode; + BOOLEAN NewMakeCallback; + UINT64 RequiredSize; + UINT64 CurrentSize; + EFI_STATUS Status; + EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; + EFI_PXE_BASE_CODE_MODE *PxeBcMode; NewMakeCallback = FALSE; PxeBc = &Private->PxeBc; @@ -1172,7 +1162,7 @@ PxeBcLoadBootFile ( // Install pxebc callback protocol if hasn't been installed yet. // Status = PxeBcInstallCallback (Private, &NewMakeCallback); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } @@ -1195,7 +1185,7 @@ PxeBcLoadBootFile ( // // Get the right buffer size of the bootfile required. // - if (CurrentSize < RequiredSize || Buffer == NULL) { + if ((CurrentSize < RequiredSize) || (Buffer == NULL)) { // // It's buffer too small if the size of user buffer is smaller than the required. // @@ -1203,8 +1193,9 @@ PxeBcLoadBootFile ( Status = EFI_BUFFER_TOO_SMALL; goto ON_EXIT; } + CurrentSize = RequiredSize; - } else if (RequiredSize == 0 && PxeBcMode->UsingIpv6) { + } else if ((RequiredSize == 0) && PxeBcMode->UsingIpv6) { // // Try to download another bootfile in list if failed to get the filesize of the last one. // It's special for the case of IPv6. @@ -1212,7 +1203,7 @@ PxeBcLoadBootFile ( Status = PxeBcReadBootFileList (Private, &CurrentSize, Buffer); goto ON_EXIT; } - } else if (CurrentSize < Private->BootFileSize || Buffer == NULL ) { + } else if ((CurrentSize < Private->BootFileSize) || (Buffer == NULL)) { // // It's buffer too small if the size of user buffer is smaller than the required. // @@ -1247,13 +1238,13 @@ PxeBcLoadBootFile ( } ON_EXIT: - *BufferSize = (UINTN) CurrentSize; - PxeBcUninstallCallback(Private, NewMakeCallback); + *BufferSize = (UINTN)CurrentSize; + PxeBcUninstallCallback (Private, NewMakeCallback); if (Status == EFI_SUCCESS) { AsciiPrint ("\n NBP file downloaded successfully.\n"); return EFI_SUCCESS; - } else if (Status == EFI_BUFFER_TOO_SMALL && Buffer != NULL) { + } else if ((Status == EFI_BUFFER_TOO_SMALL) && (Buffer != NULL)) { AsciiPrint ("\n PXE-E05: Buffer size is smaller than the requested file.\n"); } else if (Status == EFI_DEVICE_ERROR) { AsciiPrint ("\n PXE-E07: Network device error.\n"); @@ -1279,4 +1270,3 @@ ON_EXIT: return Status; } - diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.h b/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.h index 3c73740b96..ed42a6c385 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.h +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcBoot.h @@ -10,12 +10,11 @@ #ifndef __EFI_PXEBC_BOOT_H__ #define __EFI_PXEBC_BOOT_H__ -#define PXEBC_DISPLAY_MAX_LINE 70 -#define PXEBC_DEFAULT_UDP_OVERHEAD_SIZE 8 -#define PXEBC_DEFAULT_TFTP_OVERHEAD_SIZE 4 - -#define PXEBC_IS_SIZE_OVERFLOWED(x) ((sizeof (UINTN) < sizeof (UINT64)) && ((x) > 0xFFFFFFFF)) +#define PXEBC_DISPLAY_MAX_LINE 70 +#define PXEBC_DEFAULT_UDP_OVERHEAD_SIZE 8 +#define PXEBC_DEFAULT_TFTP_OVERHEAD_SIZE 4 +#define PXEBC_IS_SIZE_OVERFLOWED(x) ((sizeof (UINTN) < sizeof (UINT64)) && ((x) > 0xFFFFFFFF)) /** Extract the discover information and boot server entry from the @@ -36,11 +35,10 @@ PxeBcExtractDiscoverInfo ( IN PXEBC_PRIVATE_DATA *Private, IN UINT16 Type, IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO **DiscoverInfo, - OUT PXEBC_BOOT_SVR_ENTRY **BootEntry, - OUT EFI_PXE_BASE_CODE_SRVLIST **SrvList + OUT PXEBC_BOOT_SVR_ENTRY **BootEntry, + OUT EFI_PXE_BASE_CODE_SRVLIST **SrvList ); - /** Build the discover packet and send out for boot. @@ -60,16 +58,15 @@ PxeBcExtractDiscoverInfo ( **/ EFI_STATUS PxeBcDiscoverBootServer ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINT16 Type, - IN UINT16 *Layer, - IN BOOLEAN UseBis, - IN EFI_IP_ADDRESS *DestIp, - IN UINT16 IpCount, - IN EFI_PXE_BASE_CODE_SRVLIST *SrvList + IN PXEBC_PRIVATE_DATA *Private, + IN UINT16 Type, + IN UINT16 *Layer, + IN BOOLEAN UseBis, + IN EFI_IP_ADDRESS *DestIp, + IN UINT16 IpCount, + IN EFI_PXE_BASE_CODE_SRVLIST *SrvList ); - /** Load boot file into user buffer. @@ -86,9 +83,9 @@ PxeBcDiscoverBootServer ( **/ EFI_STATUS PxeBcLoadBootFile ( - IN PXEBC_PRIVATE_DATA *Private, - IN OUT UINTN *BufferSize, - IN VOID *Buffer OPTIONAL + IN PXEBC_PRIVATE_DATA *Private, + IN OUT UINTN *BufferSize, + IN VOID *Buffer OPTIONAL ); #endif diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c index 0edf7cc799..91146b78cb 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.c @@ -12,7 +12,7 @@ // // This is a map from the interested DHCP4 option tags' index to the tag value. // -UINT8 mInterestedDhcp4Tags[PXEBC_DHCP4_TAG_INDEX_MAX] = { +UINT8 mInterestedDhcp4Tags[PXEBC_DHCP4_TAG_INDEX_MAX] = { DHCP4_TAG_BOOTFILE_LEN, DHCP4_TAG_VENDOR, DHCP4_TAG_OVERLOAD, @@ -25,8 +25,7 @@ UINT8 mInterestedDhcp4Tags[PXEBC_DHCP4_TAG_INDEX_MAX] = { // // There are 4 times retries with the value of 4, 8, 16 and 32, refers to PXE2.1 spec. // -UINT32 mPxeDhcpTimeout[4] = {4, 8, 16, 32}; - +UINT32 mPxeDhcpTimeout[4] = { 4, 8, 16, 32 }; /** Parse a certain dhcp4 option by OptTag in Buffer, and return with start pointer. @@ -41,19 +40,18 @@ UINT32 mPxeDhcpTimeout[4] = {4, 8, 16, 32}; **/ EFI_DHCP4_PACKET_OPTION * PxeBcParseDhcp4Options ( - IN UINT8 *Buffer, - IN UINT32 Length, - IN UINT8 OptTag + IN UINT8 *Buffer, + IN UINT32 Length, + IN UINT8 OptTag ) { - EFI_DHCP4_PACKET_OPTION *Option; - UINT32 Offset; + EFI_DHCP4_PACKET_OPTION *Option; + UINT32 Offset; - Option = (EFI_DHCP4_PACKET_OPTION *) Buffer; - Offset = 0; + Option = (EFI_DHCP4_PACKET_OPTION *)Buffer; + Offset = 0; while (Offset < Length && Option->OpCode != DHCP4_TAG_EOP) { - if (Option->OpCode == OptTag) { // // Found the required option. @@ -70,13 +68,12 @@ PxeBcParseDhcp4Options ( Offset += Option->Length + 2; } - Option = (EFI_DHCP4_PACKET_OPTION *) (Buffer + Offset); + Option = (EFI_DHCP4_PACKET_OPTION *)(Buffer + Offset); } return NULL; } - /** Parse the PXE vendor options and extract the information from them. @@ -86,18 +83,18 @@ PxeBcParseDhcp4Options ( **/ VOID PxeBcParseVendorOptions ( - IN EFI_DHCP4_PACKET_OPTION *Dhcp4Option, - IN PXEBC_VENDOR_OPTION *VendorOption + IN EFI_DHCP4_PACKET_OPTION *Dhcp4Option, + IN PXEBC_VENDOR_OPTION *VendorOption ) { - UINT32 *BitMap; - UINT8 VendorOptionLen; - EFI_DHCP4_PACKET_OPTION *PxeOption; - UINT8 Offset; + UINT32 *BitMap; + UINT8 VendorOptionLen; + EFI_DHCP4_PACKET_OPTION *PxeOption; + UINT8 Offset; BitMap = VendorOption->BitMap; VendorOptionLen = Dhcp4Option->Length; - PxeOption = (EFI_DHCP4_PACKET_OPTION *) &Dhcp4Option->Data[0]; + PxeOption = (EFI_DHCP4_PACKET_OPTION *)&Dhcp4Option->Data[0]; Offset = 0; ASSERT (PxeOption != NULL); @@ -107,84 +104,83 @@ PxeBcParseVendorOptions ( // Parse all the interesting PXE vendor options one by one. // switch (PxeOption->OpCode) { + case PXEBC_VENDOR_TAG_MTFTP_IP: - case PXEBC_VENDOR_TAG_MTFTP_IP: - - CopyMem (&VendorOption->MtftpIp, PxeOption->Data, sizeof (EFI_IPv4_ADDRESS)); - break; + CopyMem (&VendorOption->MtftpIp, PxeOption->Data, sizeof (EFI_IPv4_ADDRESS)); + break; - case PXEBC_VENDOR_TAG_MTFTP_CPORT: + case PXEBC_VENDOR_TAG_MTFTP_CPORT: - CopyMem (&VendorOption->MtftpCPort, PxeOption->Data, sizeof (VendorOption->MtftpCPort)); - break; + CopyMem (&VendorOption->MtftpCPort, PxeOption->Data, sizeof (VendorOption->MtftpCPort)); + break; - case PXEBC_VENDOR_TAG_MTFTP_SPORT: + case PXEBC_VENDOR_TAG_MTFTP_SPORT: - CopyMem (&VendorOption->MtftpSPort, PxeOption->Data, sizeof (VendorOption->MtftpSPort)); - break; + CopyMem (&VendorOption->MtftpSPort, PxeOption->Data, sizeof (VendorOption->MtftpSPort)); + break; - case PXEBC_VENDOR_TAG_MTFTP_TIMEOUT: + case PXEBC_VENDOR_TAG_MTFTP_TIMEOUT: - VendorOption->MtftpTimeout = *PxeOption->Data; - break; + VendorOption->MtftpTimeout = *PxeOption->Data; + break; - case PXEBC_VENDOR_TAG_MTFTP_DELAY: + case PXEBC_VENDOR_TAG_MTFTP_DELAY: - VendorOption->MtftpDelay = *PxeOption->Data; - break; + VendorOption->MtftpDelay = *PxeOption->Data; + break; - case PXEBC_VENDOR_TAG_DISCOVER_CTRL: + case PXEBC_VENDOR_TAG_DISCOVER_CTRL: - VendorOption->DiscoverCtrl = *PxeOption->Data; - break; + VendorOption->DiscoverCtrl = *PxeOption->Data; + break; - case PXEBC_VENDOR_TAG_DISCOVER_MCAST: + case PXEBC_VENDOR_TAG_DISCOVER_MCAST: - CopyMem (&VendorOption->DiscoverMcastIp, PxeOption->Data, sizeof (EFI_IPv4_ADDRESS)); - break; + CopyMem (&VendorOption->DiscoverMcastIp, PxeOption->Data, sizeof (EFI_IPv4_ADDRESS)); + break; - case PXEBC_VENDOR_TAG_BOOT_SERVERS: + case PXEBC_VENDOR_TAG_BOOT_SERVERS: - VendorOption->BootSvrLen = PxeOption->Length; - VendorOption->BootSvr = (PXEBC_BOOT_SVR_ENTRY *) PxeOption->Data; - break; + VendorOption->BootSvrLen = PxeOption->Length; + VendorOption->BootSvr = (PXEBC_BOOT_SVR_ENTRY *)PxeOption->Data; + break; - case PXEBC_VENDOR_TAG_BOOT_MENU: + case PXEBC_VENDOR_TAG_BOOT_MENU: - VendorOption->BootMenuLen = PxeOption->Length; - VendorOption->BootMenu = (PXEBC_BOOT_MENU_ENTRY *) PxeOption->Data; - break; + VendorOption->BootMenuLen = PxeOption->Length; + VendorOption->BootMenu = (PXEBC_BOOT_MENU_ENTRY *)PxeOption->Data; + break; - case PXEBC_VENDOR_TAG_MENU_PROMPT: + case PXEBC_VENDOR_TAG_MENU_PROMPT: - VendorOption->MenuPromptLen = PxeOption->Length; - VendorOption->MenuPrompt = (PXEBC_MENU_PROMPT *) PxeOption->Data; - break; + VendorOption->MenuPromptLen = PxeOption->Length; + VendorOption->MenuPrompt = (PXEBC_MENU_PROMPT *)PxeOption->Data; + break; - case PXEBC_VENDOR_TAG_MCAST_ALLOC: + case PXEBC_VENDOR_TAG_MCAST_ALLOC: - CopyMem (&VendorOption->McastIpBase, PxeOption->Data, sizeof (EFI_IPv4_ADDRESS)); - CopyMem (&VendorOption->McastIpBlock, PxeOption->Data + 4, sizeof (VendorOption->McastIpBlock)); - CopyMem (&VendorOption->McastIpRange, PxeOption->Data + 6, sizeof (VendorOption->McastIpRange)); - break; + CopyMem (&VendorOption->McastIpBase, PxeOption->Data, sizeof (EFI_IPv4_ADDRESS)); + CopyMem (&VendorOption->McastIpBlock, PxeOption->Data + 4, sizeof (VendorOption->McastIpBlock)); + CopyMem (&VendorOption->McastIpRange, PxeOption->Data + 6, sizeof (VendorOption->McastIpRange)); + break; - case PXEBC_VENDOR_TAG_CREDENTIAL_TYPES: + case PXEBC_VENDOR_TAG_CREDENTIAL_TYPES: - VendorOption->CredTypeLen = PxeOption->Length; - VendorOption->CredType = (UINT32 *) PxeOption->Data; - break; + VendorOption->CredTypeLen = PxeOption->Length; + VendorOption->CredType = (UINT32 *)PxeOption->Data; + break; - case PXEBC_VENDOR_TAG_BOOT_ITEM: + case PXEBC_VENDOR_TAG_BOOT_ITEM: - CopyMem (&VendorOption->BootSrvType, PxeOption->Data, sizeof (VendorOption->BootSrvType)); - CopyMem (&VendorOption->BootSrvLayer, PxeOption->Data + 2, sizeof (VendorOption->BootSrvLayer)); - break; + CopyMem (&VendorOption->BootSrvType, PxeOption->Data, sizeof (VendorOption->BootSrvType)); + CopyMem (&VendorOption->BootSrvLayer, PxeOption->Data + 2, sizeof (VendorOption->BootSrvLayer)); + break; - default: - // - // Not interesting PXE vendor options. - // - break; + default: + // + // Not interesting PXE vendor options. + // + break; } // @@ -198,14 +194,13 @@ PxeBcParseVendorOptions ( if (PxeOption->OpCode == DHCP4_TAG_PAD) { Offset++; } else { - Offset = (UINT8) (Offset + PxeOption->Length + 2); + Offset = (UINT8)(Offset + PxeOption->Length + 2); } - PxeOption = (EFI_DHCP4_PACKET_OPTION *) (Dhcp4Option->Data + Offset); + PxeOption = (EFI_DHCP4_PACKET_OPTION *)(Dhcp4Option->Data + Offset); } } - /** Build the options buffer for the DHCPv4 request packet. @@ -226,34 +221,34 @@ PxeBcBuildDhcp4Options ( IN BOOLEAN NeedMsgType ) { - UINT32 Index; - PXEBC_DHCP4_OPTION_ENTRY OptEnt; - UINT16 Value; + UINT32 Index; + PXEBC_DHCP4_OPTION_ENTRY OptEnt; + UINT16 Value; Index = 0; - OptList[0] = (EFI_DHCP4_PACKET_OPTION *) Buffer; + OptList[0] = (EFI_DHCP4_PACKET_OPTION *)Buffer; if (NeedMsgType) { // // Append message type. // - OptList[Index]->OpCode = DHCP4_TAG_MSG_TYPE; - OptList[Index]->Length = 1; - OptEnt.Mesg = (PXEBC_DHCP4_OPTION_MESG *) OptList[Index]->Data; - OptEnt.Mesg->Type = PXEBC_DHCP4_MSG_TYPE_REQUEST; + OptList[Index]->OpCode = DHCP4_TAG_MSG_TYPE; + OptList[Index]->Length = 1; + OptEnt.Mesg = (PXEBC_DHCP4_OPTION_MESG *)OptList[Index]->Data; + OptEnt.Mesg->Type = PXEBC_DHCP4_MSG_TYPE_REQUEST; Index++; - OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); // // Append max message size. // - OptList[Index]->OpCode = DHCP4_TAG_MAXMSG; - OptList[Index]->Length = (UINT8) sizeof (PXEBC_DHCP4_OPTION_MAX_MESG_SIZE); - OptEnt.MaxMesgSize = (PXEBC_DHCP4_OPTION_MAX_MESG_SIZE *) OptList[Index]->Data; - Value = NTOHS (PXEBC_DHCP4_PACKET_MAX_SIZE); + OptList[Index]->OpCode = DHCP4_TAG_MAXMSG; + OptList[Index]->Length = (UINT8)sizeof (PXEBC_DHCP4_OPTION_MAX_MESG_SIZE); + OptEnt.MaxMesgSize = (PXEBC_DHCP4_OPTION_MAX_MESG_SIZE *)OptList[Index]->Data; + Value = NTOHS (PXEBC_DHCP4_PACKET_MAX_SIZE); CopyMem (&OptEnt.MaxMesgSize->Size, &Value, sizeof (UINT16)); Index++; - OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); } // @@ -261,7 +256,7 @@ PxeBcBuildDhcp4Options ( // OptList[Index]->OpCode = DHCP4_TAG_PARA_LIST; OptList[Index]->Length = 35; - OptEnt.Para = (PXEBC_DHCP4_OPTION_PARA *) OptList[Index]->Data; + OptEnt.Para = (PXEBC_DHCP4_OPTION_PARA *)OptList[Index]->Data; OptEnt.Para->ParaList[0] = DHCP4_TAG_NETMASK; OptEnt.Para->ParaList[1] = DHCP4_TAG_TIME_OFFSET; OptEnt.Para->ParaList[2] = DHCP4_TAG_ROUTER; @@ -298,19 +293,19 @@ PxeBcBuildDhcp4Options ( OptEnt.Para->ParaList[33] = 0x86; OptEnt.Para->ParaList[34] = 0x87; Index++; - OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); // // Append UUID/Guid-based client identifier option // - OptList[Index]->OpCode = DHCP4_TAG_UUID; - OptList[Index]->Length = (UINT8) sizeof (PXEBC_DHCP4_OPTION_UUID); - OptEnt.Uuid = (PXEBC_DHCP4_OPTION_UUID *) OptList[Index]->Data; - OptEnt.Uuid->Type = 0; + OptList[Index]->OpCode = DHCP4_TAG_UUID; + OptList[Index]->Length = (UINT8)sizeof (PXEBC_DHCP4_OPTION_UUID); + OptEnt.Uuid = (PXEBC_DHCP4_OPTION_UUID *)OptList[Index]->Data; + OptEnt.Uuid->Type = 0; Index++; - OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); - if (EFI_ERROR (NetLibGetSystemGuid ((EFI_GUID *) OptEnt.Uuid->Guid))) { + if (EFI_ERROR (NetLibGetSystemGuid ((EFI_GUID *)OptEnt.Uuid->Guid))) { // // Zero the Guid to indicate NOT programmable if failed to get system Guid. // @@ -321,9 +316,9 @@ PxeBcBuildDhcp4Options ( // // Append client network device interface option // - OptList[Index]->OpCode = DHCP4_TAG_UNDI; - OptList[Index]->Length = (UINT8) sizeof (PXEBC_DHCP4_OPTION_UNDI); - OptEnt.Undi = (PXEBC_DHCP4_OPTION_UNDI *) OptList[Index]->Data; + OptList[Index]->OpCode = DHCP4_TAG_UNDI; + OptList[Index]->Length = (UINT8)sizeof (PXEBC_DHCP4_OPTION_UNDI); + OptEnt.Undi = (PXEBC_DHCP4_OPTION_UNDI *)OptList[Index]->Data; if (Private->Nii != NULL) { OptEnt.Undi->Type = Private->Nii->Type; @@ -341,20 +336,20 @@ PxeBcBuildDhcp4Options ( // // Append client system architecture option // - OptList[Index]->OpCode = DHCP4_TAG_ARCH; - OptList[Index]->Length = (UINT8) sizeof (PXEBC_DHCP4_OPTION_ARCH); - OptEnt.Arch = (PXEBC_DHCP4_OPTION_ARCH *) OptList[Index]->Data; - Value = HTONS (EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE); + OptList[Index]->OpCode = DHCP4_TAG_ARCH; + OptList[Index]->Length = (UINT8)sizeof (PXEBC_DHCP4_OPTION_ARCH); + OptEnt.Arch = (PXEBC_DHCP4_OPTION_ARCH *)OptList[Index]->Data; + Value = HTONS (EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE); CopyMem (&OptEnt.Arch->Type, &Value, sizeof (UINT16)); Index++; - OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]); // // Append vendor class identify option // - OptList[Index]->OpCode = DHCP4_TAG_VENDOR_CLASS_ID; - OptList[Index]->Length = (UINT8) sizeof (PXEBC_DHCP4_OPTION_CLID); - OptEnt.Clid = (PXEBC_DHCP4_OPTION_CLID *) OptList[Index]->Data; + OptList[Index]->OpCode = DHCP4_TAG_VENDOR_CLASS_ID; + OptList[Index]->Length = (UINT8)sizeof (PXEBC_DHCP4_OPTION_CLID); + OptEnt.Clid = (PXEBC_DHCP4_OPTION_CLID *)OptList[Index]->Data; CopyMem ( OptEnt.Clid, DEFAULT_CLASS_ID_DATA, @@ -377,7 +372,6 @@ PxeBcBuildDhcp4Options ( return Index; } - /** Create a template DHCPv4 packet as a seed. @@ -387,32 +381,31 @@ PxeBcBuildDhcp4Options ( **/ VOID PxeBcSeedDhcp4Packet ( - OUT EFI_DHCP4_PACKET *Seed, - IN EFI_UDP4_PROTOCOL *Udp4 + OUT EFI_DHCP4_PACKET *Seed, + IN EFI_UDP4_PROTOCOL *Udp4 ) { - EFI_SIMPLE_NETWORK_MODE Mode; - EFI_DHCP4_HEADER *Header; + EFI_SIMPLE_NETWORK_MODE Mode; + EFI_DHCP4_HEADER *Header; // // Get IfType and HwAddressSize from SNP mode data. // Udp4->GetModeData (Udp4, NULL, NULL, NULL, &Mode); - Seed->Size = sizeof (EFI_DHCP4_PACKET); - Seed->Length = sizeof (Seed->Dhcp4); - Header = &Seed->Dhcp4.Header; + Seed->Size = sizeof (EFI_DHCP4_PACKET); + Seed->Length = sizeof (Seed->Dhcp4); + Header = &Seed->Dhcp4.Header; ZeroMem (Header, sizeof (EFI_DHCP4_HEADER)); - Header->OpCode = PXEBC_DHCP4_OPCODE_REQUEST; - Header->HwType = Mode.IfType; - Header->HwAddrLen = (UINT8) Mode.HwAddressSize; + Header->OpCode = PXEBC_DHCP4_OPCODE_REQUEST; + Header->HwType = Mode.IfType; + Header->HwAddrLen = (UINT8)Mode.HwAddressSize; CopyMem (Header->ClientHwAddr, &Mode.CurrentAddress, Header->HwAddrLen); Seed->Dhcp4.Magik = PXEBC_DHCP4_MAGIC; Seed->Dhcp4.Option[0] = DHCP4_TAG_EOP; } - /** Cache the DHCPv4 packet. @@ -425,8 +418,8 @@ PxeBcSeedDhcp4Packet ( **/ EFI_STATUS PxeBcCacheDhcp4Packet ( - IN EFI_DHCP4_PACKET *Dst, - IN EFI_DHCP4_PACKET *Src + IN EFI_DHCP4_PACKET *Dst, + IN EFI_DHCP4_PACKET *Src ) { if (Dst->Size < Src->Length) { @@ -439,7 +432,6 @@ PxeBcCacheDhcp4Packet ( return EFI_SUCCESS; } - /** Parse the cached DHCPv4 packet, including all the options. @@ -451,21 +443,21 @@ PxeBcCacheDhcp4Packet ( **/ EFI_STATUS PxeBcParseDhcp4Packet ( - IN PXEBC_DHCP4_PACKET_CACHE *Cache4 + IN PXEBC_DHCP4_PACKET_CACHE *Cache4 ) { - EFI_DHCP4_PACKET *Offer; - EFI_DHCP4_PACKET_OPTION **Options; - EFI_DHCP4_PACKET_OPTION *Option; - PXEBC_OFFER_TYPE OfferType; - UINTN Index; - BOOLEAN IsProxyOffer; - BOOLEAN IsPxeOffer; - UINT8 *Ptr8; - BOOLEAN FileFieldOverloaded; - - IsProxyOffer = FALSE; - IsPxeOffer = FALSE; + EFI_DHCP4_PACKET *Offer; + EFI_DHCP4_PACKET_OPTION **Options; + EFI_DHCP4_PACKET_OPTION *Option; + PXEBC_OFFER_TYPE OfferType; + UINTN Index; + BOOLEAN IsProxyOffer; + BOOLEAN IsPxeOffer; + UINT8 *Ptr8; + BOOLEAN FileFieldOverloaded; + + IsProxyOffer = FALSE; + IsPxeOffer = FALSE; FileFieldOverloaded = FALSE; ZeroMem (Cache4->OptList, sizeof (Cache4->OptList)); @@ -485,6 +477,7 @@ PxeBcParseDhcp4Packet ( mInterestedDhcp4Tags[Index] ); } + // // Second, Check if bootfilename and serverhostname is overloaded to carry DHCP options refers to rfc-2132. // If yes, try to parse options from the BootFileName field, then ServerName field. @@ -496,18 +489,19 @@ PxeBcParseDhcp4Packet ( for (Index = 0; Index < PXEBC_DHCP4_TAG_INDEX_MAX; Index++) { if (Options[Index] == NULL) { Options[Index] = PxeBcParseDhcp4Options ( - (UINT8 *) Offer->Dhcp4.Header.BootFileName, + (UINT8 *)Offer->Dhcp4.Header.BootFileName, sizeof (Offer->Dhcp4.Header.BootFileName), mInterestedDhcp4Tags[Index] ); } } } + if ((Option->Data[0] & PXEBC_DHCP4_OVERLOAD_SERVER_NAME) != 0) { for (Index = 0; Index < PXEBC_DHCP4_TAG_INDEX_MAX; Index++) { if (Options[Index] == NULL) { Options[Index] = PxeBcParseDhcp4Options ( - (UINT8 *) Offer->Dhcp4.Header.ServerName, + (UINT8 *)Offer->Dhcp4.Header.ServerName, sizeof (Offer->Dhcp4.Header.ServerName), mInterestedDhcp4Tags[Index] ); @@ -528,7 +522,8 @@ PxeBcParseDhcp4Packet ( // Option = Options[PXEBC_DHCP4_TAG_INDEX_CLASS_ID]; if ((Option != NULL) && (Option->Length >= 9) && - (CompareMem (Option->Data, DEFAULT_CLASS_ID_DATA, 9) == 0)) { + (CompareMem (Option->Data, DEFAULT_CLASS_ID_DATA, 9) == 0)) + { IsPxeOffer = TRUE; } @@ -536,7 +531,7 @@ PxeBcParseDhcp4Packet ( // Parse PXE vendor options in this offer, and store the contents/pointers. // Option = Options[PXEBC_DHCP4_TAG_INDEX_VENDOR]; - if (IsPxeOffer && Option != NULL) { + if (IsPxeOffer && (Option != NULL)) { PxeBcParseVendorOptions (Option, &Cache4->VendorOpt); } @@ -550,33 +545,32 @@ PxeBcParseDhcp4Packet ( // RFC 2132, Section 9.5 does not strictly state Bootfile name (option 67) is null // terminated string. So force to append null terminated character at the end of string. // - Ptr8 = (UINT8*)&Options[PXEBC_DHCP4_TAG_INDEX_BOOTFILE]->Data[0]; + Ptr8 = (UINT8 *)&Options[PXEBC_DHCP4_TAG_INDEX_BOOTFILE]->Data[0]; Ptr8 += Options[PXEBC_DHCP4_TAG_INDEX_BOOTFILE]->Length; if (*(Ptr8 - 1) != '\0') { *Ptr8 = '\0'; } - } else if (!FileFieldOverloaded && Offer->Dhcp4.Header.BootFileName[0] != 0) { + } else if (!FileFieldOverloaded && (Offer->Dhcp4.Header.BootFileName[0] != 0)) { // // If the bootfile is not present and bootfilename is present in DHCPv4 packet, just parse it. // Do not count dhcp option header here, or else will destroy the serverhostname. // Options[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] = (EFI_DHCP4_PACKET_OPTION *) - (&Offer->Dhcp4.Header.BootFileName[0] - - OFFSET_OF (EFI_DHCP4_PACKET_OPTION, Data[0])); - + (&Offer->Dhcp4.Header.BootFileName[0] - + OFFSET_OF (EFI_DHCP4_PACKET_OPTION, Data[0])); } // // Determine offer type of the DHCPv4 packet. // Option = Options[PXEBC_DHCP4_TAG_INDEX_MSG_TYPE]; - if (Option == NULL || Option->Data[0] == 0) { + if ((Option == NULL) || (Option->Data[0] == 0)) { // // It's a Bootp offer. // OfferType = PxeOfferTypeBootp; - Option = Cache4->OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE]; + Option = Cache4->OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE]; if (Option == NULL) { // // If the Bootp offer without bootfilename, discard it. @@ -584,7 +578,6 @@ PxeBcParseDhcp4Packet ( return EFI_DEVICE_ERROR; } } else { - if (IS_VALID_DISCOVER_VENDOR_OPTION (Cache4->VendorOpt.BitMap)) { // // It's a PXE10 offer with PXEClient and discover vendor option. @@ -614,7 +607,6 @@ PxeBcParseDhcp4Packet ( return EFI_SUCCESS; } - /** Cache the DHCPv4 ack packet, and parse it on demand. @@ -628,9 +620,9 @@ PxeBcParseDhcp4Packet ( **/ EFI_STATUS PxeBcCopyDhcp4Ack ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_DHCP4_PACKET *Ack, - IN BOOLEAN Verified + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_DHCP4_PACKET *Ack, + IN BOOLEAN Verified ) { EFI_PXE_BASE_CODE_MODE *Mode; @@ -655,7 +647,6 @@ PxeBcCopyDhcp4Ack ( return EFI_SUCCESS; } - /** Cache the DHCPv4 proxy offer packet according to the received order. @@ -668,8 +659,8 @@ PxeBcCopyDhcp4Ack ( **/ EFI_STATUS PxeBcCopyProxyOffer ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINT32 OfferIndex + IN PXEBC_PRIVATE_DATA *Private, + IN UINT32 OfferIndex ) { EFI_PXE_BASE_CODE_MODE *Mode; @@ -686,7 +677,7 @@ PxeBcCopyProxyOffer ( // Cache the proxy offer packet and parse it. // Status = PxeBcCacheDhcp4Packet (&Private->ProxyOffer.Dhcp4.Packet.Offer, Offer); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } @@ -701,7 +692,6 @@ PxeBcCopyProxyOffer ( return EFI_SUCCESS; } - /** Retry to request bootfile name by the BINL offer. @@ -714,8 +704,8 @@ PxeBcCopyProxyOffer ( **/ EFI_STATUS PxeBcRetryBinlOffer ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINT32 Index + IN PXEBC_PRIVATE_DATA *Private, + IN UINT32 Index ) { EFI_DHCP4_PACKET *Offer; @@ -725,8 +715,10 @@ PxeBcRetryBinlOffer ( EFI_DHCP4_PACKET *Reply; ASSERT (Index < PXEBC_OFFER_MAX_NUM); - ASSERT (Private->OfferBuffer[Index].Dhcp4.OfferType == PxeOfferTypeDhcpBinl || - Private->OfferBuffer[Index].Dhcp4.OfferType == PxeOfferTypeProxyBinl); + ASSERT ( + Private->OfferBuffer[Index].Dhcp4.OfferType == PxeOfferTypeDhcpBinl || + Private->OfferBuffer[Index].Dhcp4.OfferType == PxeOfferTypeProxyBinl + ); Offer = &Private->OfferBuffer[Index].Dhcp4.Packet.Offer; @@ -775,9 +767,10 @@ PxeBcRetryBinlOffer ( return Status; } - if (Cache4->OfferType != PxeOfferTypeProxyPxe10 && - Cache4->OfferType != PxeOfferTypeProxyWfm11a && - Cache4->OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] == NULL) { + if ((Cache4->OfferType != PxeOfferTypeProxyPxe10) && + (Cache4->OfferType != PxeOfferTypeProxyWfm11a) && + (Cache4->OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] == NULL)) + { // // This BINL ack doesn't have discovery option set or multicast option set // or bootfile name specified. @@ -794,7 +787,6 @@ PxeBcRetryBinlOffer ( return EFI_SUCCESS; } - /** Cache all the received DHCPv4 offers, and set OfferIndex and OfferCount. @@ -807,8 +799,8 @@ PxeBcRetryBinlOffer ( **/ EFI_STATUS PxeBcCacheDhcp4Offer ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_DHCP4_PACKET *RcvdOffer + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_DHCP4_PACKET *RcvdOffer ) { PXEBC_DHCP4_PACKET_CACHE *Cache4; @@ -824,7 +816,7 @@ PxeBcCacheDhcp4Offer ( // Cache the content of DHCPv4 packet firstly. // Status = PxeBcCacheDhcp4Packet (Offer, RcvdOffer); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } @@ -865,8 +857,9 @@ PxeBcCacheDhcp4Offer ( // Private->OfferIndex[OfferType][Private->OfferCount[OfferType]] = Private->OfferNum; Private->OfferCount[OfferType]++; - } else if ((OfferType == PxeOfferTypeProxyPxe10 || OfferType == PxeOfferTypeProxyWfm11a) && - Private->OfferCount[OfferType] < 1) { + } else if (((OfferType == PxeOfferTypeProxyPxe10) || (OfferType == PxeOfferTypeProxyWfm11a)) && + (Private->OfferCount[OfferType] < 1)) + { // // Only cache the first PXE10/WFM11a offer, and discard the others. // @@ -889,7 +882,6 @@ PxeBcCacheDhcp4Offer ( return EFI_SUCCESS; } - /** Select an DHCPv4 offer, and record SelectIndex and SelectProxyType. @@ -898,12 +890,12 @@ PxeBcCacheDhcp4Offer ( **/ VOID PxeBcSelectDhcp4Offer ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ) { - UINT32 Index; - UINT32 OfferIndex; - EFI_DHCP4_PACKET *Offer; + UINT32 Index; + UINT32 OfferIndex; + EFI_DHCP4_PACKET *Offer; Private->SelectIndex = 0; @@ -916,43 +908,40 @@ PxeBcSelectDhcp4Offer ( // 1. DhcpPxe10 offer // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpPxe10][0] + 1; - } else if (Private->OfferCount[PxeOfferTypeDhcpWfm11a] > 0) { // // 2. DhcpWfm11a offer // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpWfm11a][0] + 1; - - } else if (Private->OfferCount[PxeOfferTypeDhcpOnly] > 0 && - Private->OfferCount[PxeOfferTypeProxyPxe10] > 0) { + } else if ((Private->OfferCount[PxeOfferTypeDhcpOnly] > 0) && + (Private->OfferCount[PxeOfferTypeProxyPxe10] > 0)) + { // // 3. DhcpOnly offer and ProxyPxe10 offer. // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpOnly][0] + 1; Private->SelectProxyType = PxeOfferTypeProxyPxe10; - - } else if (Private->OfferCount[PxeOfferTypeDhcpOnly] > 0 && - Private->OfferCount[PxeOfferTypeProxyWfm11a] > 0) { + } else if ((Private->OfferCount[PxeOfferTypeDhcpOnly] > 0) && + (Private->OfferCount[PxeOfferTypeProxyWfm11a] > 0)) + { // // 4. DhcpOnly offer and ProxyWfm11a offer. // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpOnly][0] + 1; Private->SelectProxyType = PxeOfferTypeProxyWfm11a; - } else if (Private->OfferCount[PxeOfferTypeDhcpBinl] > 0) { // // 5. DhcpBinl offer. // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpBinl][0] + 1; - - } else if (Private->OfferCount[PxeOfferTypeDhcpOnly] > 0 && - Private->OfferCount[PxeOfferTypeProxyBinl] > 0) { + } else if ((Private->OfferCount[PxeOfferTypeDhcpOnly] > 0) && + (Private->OfferCount[PxeOfferTypeProxyBinl] > 0)) + { // // 6. DhcpOnly offer and ProxyBinl offer. // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpOnly][0] + 1; Private->SelectProxyType = PxeOfferTypeProxyBinl; - } else { // // 7. DhcpOnly offer with bootfilename. @@ -964,13 +953,15 @@ PxeBcSelectDhcp4Offer ( break; } } + // // 8. Bootp offer with bootfilename. // OfferIndex = Private->OfferIndex[PxeOfferTypeBootp][0]; - if (Private->SelectIndex == 0 && - Private->OfferCount[PxeOfferTypeBootp] > 0 && - Private->OfferBuffer[OfferIndex].Dhcp4.OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] != NULL) { + if ((Private->SelectIndex == 0) && + (Private->OfferCount[PxeOfferTypeBootp] > 0) && + (Private->OfferBuffer[OfferIndex].Dhcp4.OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] != NULL)) + { Private->SelectIndex = OfferIndex + 1; } } @@ -979,7 +970,6 @@ PxeBcSelectDhcp4Offer ( // Select offer by received order. // for (Index = 0; Index < Private->OfferNum; Index++) { - Offer = &Private->OfferBuffer[Index].Dhcp4.Packet.Offer; if (IS_PROXY_DHCP_OFFER (Offer)) { @@ -990,8 +980,9 @@ PxeBcSelectDhcp4Offer ( } if (!Private->IsProxyRecved && - Private->OfferBuffer[Index].Dhcp4.OfferType == PxeOfferTypeDhcpOnly && - Private->OfferBuffer[Index].Dhcp4.OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] == NULL) { + (Private->OfferBuffer[Index].Dhcp4.OfferType == PxeOfferTypeDhcpOnly) && + (Private->OfferBuffer[Index].Dhcp4.OptList[PXEBC_DHCP4_TAG_INDEX_BOOTFILE] == NULL)) + { // // Skip if DhcpOnly offer without any other proxy offers or bootfilename. // @@ -1007,7 +998,6 @@ PxeBcSelectDhcp4Offer ( } } - /** Handle the DHCPv4 offer packet. @@ -1021,7 +1011,7 @@ PxeBcSelectDhcp4Offer ( **/ EFI_STATUS PxeBcHandleDhcp4Offer ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ) { PXEBC_DHCP4_PACKET_CACHE *Cache4; @@ -1036,11 +1026,11 @@ PxeBcHandleDhcp4Offer ( EFI_DHCP4_PACKET *Ack; ASSERT (Private->SelectIndex > 0); - SelectIndex = (UINT32) (Private->SelectIndex - 1); + SelectIndex = (UINT32)(Private->SelectIndex - 1); ASSERT (SelectIndex < PXEBC_OFFER_MAX_NUM); - Cache4 = &Private->OfferBuffer[SelectIndex].Dhcp4; - Options = Cache4->OptList; - Status = EFI_SUCCESS; + Cache4 = &Private->OfferBuffer[SelectIndex].Dhcp4; + Options = Cache4->OptList; + Status = EFI_SUCCESS; if (Cache4->OfferType == PxeOfferTypeDhcpBinl) { // @@ -1050,7 +1040,6 @@ PxeBcHandleDhcp4Offer ( Status = EFI_NO_RESPONSE; } } else if (Cache4->OfferType == PxeOfferTypeDhcpOnly) { - if (Private->IsProxyRecved) { // // DhcpOnly offer is selected, so need try to request bootfile name. @@ -1075,6 +1064,7 @@ PxeBcHandleDhcp4Offer ( break; } } + if (Index == Private->OfferCount[Private->SelectProxyType]) { Status = EFI_NO_RESPONSE; } @@ -1117,7 +1107,7 @@ PxeBcHandleDhcp4Offer ( } } - if (!EFI_ERROR (Status) && Private->SelectProxyType != PxeOfferTypeProxyBinl) { + if (!EFI_ERROR (Status) && (Private->SelectProxyType != PxeOfferTypeProxyBinl)) { // // Success to try to request by a ProxyPxe10 or ProxyWfm11a offer, copy and parse it. // @@ -1152,13 +1142,13 @@ PxeBcHandleDhcp4Offer ( if (EFI_ERROR (Status)) { return Status; } + Mode->DhcpDiscoverValid = TRUE; } return Status; } - /** EFI_DHCP4_CALLBACK is provided by the consumer of the EFI DHCPv4 Protocol driver to intercept events that occurred in the configuration process. @@ -1182,12 +1172,12 @@ PxeBcHandleDhcp4Offer ( EFI_STATUS EFIAPI PxeBcDhcp4CallBack ( - IN EFI_DHCP4_PROTOCOL *This, - IN VOID *Context, - IN EFI_DHCP4_STATE CurrentState, - IN EFI_DHCP4_EVENT Dhcp4Event, - IN EFI_DHCP4_PACKET *Packet OPTIONAL, - OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL + IN EFI_DHCP4_PROTOCOL *This, + IN VOID *Context, + IN EFI_DHCP4_STATE CurrentState, + IN EFI_DHCP4_EVENT Dhcp4Event, + IN EFI_DHCP4_PACKET *Packet OPTIONAL, + OUT EFI_DHCP4_PACKET **NewPacket OPTIONAL ) { PXEBC_PRIVATE_DATA *Private; @@ -1201,15 +1191,16 @@ PxeBcDhcp4CallBack ( if ((Dhcp4Event != Dhcp4RcvdOffer) && (Dhcp4Event != Dhcp4SelectOffer) && (Dhcp4Event != Dhcp4SendDiscover) && - (Dhcp4Event != Dhcp4RcvdAck)) { + (Dhcp4Event != Dhcp4RcvdAck)) + { return EFI_SUCCESS; } ASSERT (Packet != NULL); - Private = (PXEBC_PRIVATE_DATA *) Context; - Mode = Private->PxeBc.Mode; - Callback = Private->PxeBcCallback; + Private = (PXEBC_PRIVATE_DATA *)Context; + Mode = Private->PxeBc.Mode; + Callback = Private->PxeBcCallback; // // Override the Maximum DHCP Message Size. @@ -1227,15 +1218,15 @@ PxeBcDhcp4CallBack ( // // Callback to user if any packets sent or received. // - if (Dhcp4Event != Dhcp4SelectOffer && Callback != NULL) { - Received = (BOOLEAN) (Dhcp4Event == Dhcp4RcvdOffer || Dhcp4Event == Dhcp4RcvdAck); - Status = Callback->Callback ( - Callback, - Private->Function, - Received, - Packet->Length, - (EFI_PXE_BASE_CODE_PACKET *) &Packet->Dhcp4 - ); + if ((Dhcp4Event != Dhcp4SelectOffer) && (Callback != NULL)) { + Received = (BOOLEAN)(Dhcp4Event == Dhcp4RcvdOffer || Dhcp4Event == Dhcp4RcvdAck); + Status = Callback->Callback ( + Callback, + Private->Function, + Received, + Packet->Length, + (EFI_PXE_BASE_CODE_PACKET *)&Packet->Dhcp4 + ); if (Status != EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE) { return EFI_ABORTED; } @@ -1244,101 +1235,105 @@ PxeBcDhcp4CallBack ( Status = EFI_SUCCESS; switch (Dhcp4Event) { + case Dhcp4SendDiscover: + if (Packet->Length > PXEBC_DHCP4_PACKET_MAX_SIZE) { + // + // If the to be sent packet exceeds the maximum length, abort the DHCP process. + // + Status = EFI_ABORTED; + break; + } - case Dhcp4SendDiscover: - if (Packet->Length > PXEBC_DHCP4_PACKET_MAX_SIZE) { // - // If the to be sent packet exceeds the maximum length, abort the DHCP process. + // Cache the DHCPv4 discover packet to mode data directly. + // It need to check SendGuid as well as Dhcp4SendRequest. // - Status = EFI_ABORTED; - break; - } + CopyMem (&Mode->DhcpDiscover.Dhcpv4, &Packet->Dhcp4, Packet->Length); - // - // Cache the DHCPv4 discover packet to mode data directly. - // It need to check SendGuid as well as Dhcp4SendRequest. - // - CopyMem (&Mode->DhcpDiscover.Dhcpv4, &Packet->Dhcp4, Packet->Length); + case Dhcp4SendRequest: + if (Packet->Length > PXEBC_DHCP4_PACKET_MAX_SIZE) { + // + // If the to be sent packet exceeds the maximum length, abort the DHCP process. + // + Status = EFI_ABORTED; + break; + } + + if (Mode->SendGUID) { + // + // Send the system Guid instead of the MAC address as the hardware address if required. + // + if (EFI_ERROR (NetLibGetSystemGuid ((EFI_GUID *)Packet->Dhcp4.Header.ClientHwAddr))) { + // + // Zero the Guid to indicate NOT programmable if failed to get system Guid. + // + DEBUG ((DEBUG_WARN, "PXE: Failed to read system GUID from the smbios table!\n")); + ZeroMem (Packet->Dhcp4.Header.ClientHwAddr, sizeof (EFI_GUID)); + } + + Packet->Dhcp4.Header.HwAddrLen = (UINT8)sizeof (EFI_GUID); + } - case Dhcp4SendRequest: - if (Packet->Length > PXEBC_DHCP4_PACKET_MAX_SIZE) { - // - // If the to be sent packet exceeds the maximum length, abort the DHCP process. - // - Status = EFI_ABORTED; break; - } - if (Mode->SendGUID) { - // - // Send the system Guid instead of the MAC address as the hardware address if required. - // - if (EFI_ERROR (NetLibGetSystemGuid ((EFI_GUID *) Packet->Dhcp4.Header.ClientHwAddr))) { + case Dhcp4RcvdOffer: + Status = EFI_NOT_READY; + if (Packet->Length > PXEBC_DHCP4_PACKET_MAX_SIZE) { // - // Zero the Guid to indicate NOT programmable if failed to get system Guid. + // Ignore the incoming packets which exceed the maximum length. // - DEBUG ((DEBUG_WARN, "PXE: Failed to read system GUID from the smbios table!\n")); - ZeroMem (Packet->Dhcp4.Header.ClientHwAddr, sizeof (EFI_GUID)); + break; + } + + if (Private->OfferNum < PXEBC_OFFER_MAX_NUM) { + // + // Cache the DHCPv4 offers to OfferBuffer[] for select later, and record + // the OfferIndex and OfferCount. + // If error happens, just ignore this packet and continue to wait more offer. + // + PxeBcCacheDhcp4Offer (Private, Packet); } - Packet->Dhcp4.Header.HwAddrLen = (UINT8) sizeof (EFI_GUID); - } - break; - case Dhcp4RcvdOffer: - Status = EFI_NOT_READY; - if (Packet->Length > PXEBC_DHCP4_PACKET_MAX_SIZE) { - // - // Ignore the incoming packets which exceed the maximum length. - // break; - } - if (Private->OfferNum < PXEBC_OFFER_MAX_NUM) { + + case Dhcp4SelectOffer: + ASSERT (NewPacket != NULL); + // - // Cache the DHCPv4 offers to OfferBuffer[] for select later, and record - // the OfferIndex and OfferCount. - // If error happens, just ignore this packet and continue to wait more offer. + // Select offer by the default policy or by order, and record the SelectIndex + // and SelectProxyType. // - PxeBcCacheDhcp4Offer (Private, Packet); - } - break; + PxeBcSelectDhcp4Offer (Private); - case Dhcp4SelectOffer: - ASSERT (NewPacket != NULL); + if (Private->SelectIndex == 0) { + Status = EFI_ABORTED; + } else { + *NewPacket = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp4.Packet.Offer; + } - // - // Select offer by the default policy or by order, and record the SelectIndex - // and SelectProxyType. - // - PxeBcSelectDhcp4Offer (Private); + break; - if (Private->SelectIndex == 0) { - Status = EFI_ABORTED; - } else { - *NewPacket = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp4.Packet.Offer; - } - break; + case Dhcp4RcvdAck: + // + // Cache the DHCPv4 ack to Private->Dhcp4Ack, but it's not the final ack in mode data + // without verification. + // + ASSERT (Private->SelectIndex != 0); - case Dhcp4RcvdAck: - // - // Cache the DHCPv4 ack to Private->Dhcp4Ack, but it's not the final ack in mode data - // without verification. - // - ASSERT (Private->SelectIndex != 0); + Status = PxeBcCopyDhcp4Ack (Private, Packet, FALSE); + if (EFI_ERROR (Status)) { + Status = EFI_ABORTED; + } - Status = PxeBcCopyDhcp4Ack (Private, Packet, FALSE); - if (EFI_ERROR (Status)) { - Status = EFI_ABORTED; - } - break; + break; - default: - break; + default: + break; } return Status; } - /** Build and send out the request packet for the bootfile, and parse the reply. @@ -1358,37 +1353,37 @@ PxeBcDhcp4CallBack ( **/ EFI_STATUS PxeBcDhcp4Discover ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINT16 Type, - IN UINT16 *Layer, - IN BOOLEAN UseBis, - IN EFI_IP_ADDRESS *DestIp, - IN UINT16 IpCount, - IN EFI_PXE_BASE_CODE_SRVLIST *SrvList + IN PXEBC_PRIVATE_DATA *Private, + IN UINT16 Type, + IN UINT16 *Layer, + IN BOOLEAN UseBis, + IN EFI_IP_ADDRESS *DestIp, + IN UINT16 IpCount, + IN EFI_PXE_BASE_CODE_SRVLIST *SrvList ) { - EFI_PXE_BASE_CODE_UDP_PORT Sport; - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_DHCP4_PROTOCOL *Dhcp4; - EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN Token; - BOOLEAN IsBCast; - EFI_STATUS Status; - UINT16 RepIndex; - UINT16 SrvIndex; - UINT16 TryIndex; - EFI_DHCP4_LISTEN_POINT ListenPoint; - EFI_DHCP4_PACKET *Response; - UINT8 Buffer[PXEBC_DHCP4_OPTION_MAX_SIZE]; - EFI_DHCP4_PACKET_OPTION *OptList[PXEBC_DHCP4_OPTION_MAX_NUM]; - UINT32 OptCount; - EFI_DHCP4_PACKET_OPTION *PxeOpt; - PXEBC_OPTION_BOOT_ITEM *PxeBootItem; - UINT8 VendorOptLen; - UINT32 Xid; - - Mode = Private->PxeBc.Mode; - Dhcp4 = Private->Dhcp4; - Status = EFI_SUCCESS; + EFI_PXE_BASE_CODE_UDP_PORT Sport; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_DHCP4_PROTOCOL *Dhcp4; + EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN Token; + BOOLEAN IsBCast; + EFI_STATUS Status; + UINT16 RepIndex; + UINT16 SrvIndex; + UINT16 TryIndex; + EFI_DHCP4_LISTEN_POINT ListenPoint; + EFI_DHCP4_PACKET *Response; + UINT8 Buffer[PXEBC_DHCP4_OPTION_MAX_SIZE]; + EFI_DHCP4_PACKET_OPTION *OptList[PXEBC_DHCP4_OPTION_MAX_NUM]; + UINT32 OptCount; + EFI_DHCP4_PACKET_OPTION *PxeOpt; + PXEBC_OPTION_BOOT_ITEM *PxeBootItem; + UINT8 VendorOptLen; + UINT32 Xid; + + Mode = Private->PxeBc.Mode; + Dhcp4 = Private->Dhcp4; + Status = EFI_SUCCESS; ZeroMem (&Token, sizeof (EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN)); @@ -1403,7 +1398,7 @@ PxeBcDhcp4Discover ( IsBCast = FALSE; } - if (!UseBis && Layer != NULL) { + if (!UseBis && (Layer != NULL)) { *Layer &= EFI_PXE_BASE_CODE_BOOT_LAYER_MASK; } @@ -1416,23 +1411,23 @@ PxeBcDhcp4Discover ( // // Add vendor option of PXE_BOOT_ITEM // - VendorOptLen = (UINT8) ((sizeof (EFI_DHCP4_PACKET_OPTION) - 1) * 2 + sizeof (PXEBC_OPTION_BOOT_ITEM) + 1); + VendorOptLen = (UINT8)((sizeof (EFI_DHCP4_PACKET_OPTION) - 1) * 2 + sizeof (PXEBC_OPTION_BOOT_ITEM) + 1); OptList[OptCount] = AllocateZeroPool (VendorOptLen); if (OptList[OptCount] == NULL) { return EFI_OUT_OF_RESOURCES; } - OptList[OptCount]->OpCode = DHCP4_TAG_VENDOR; - OptList[OptCount]->Length = (UINT8) (VendorOptLen - 2); - PxeOpt = (EFI_DHCP4_PACKET_OPTION *) OptList[OptCount]->Data; - PxeOpt->OpCode = PXEBC_VENDOR_TAG_BOOT_ITEM; - PxeOpt->Length = (UINT8) sizeof (PXEBC_OPTION_BOOT_ITEM); - PxeBootItem = (PXEBC_OPTION_BOOT_ITEM *) PxeOpt->Data; - PxeBootItem->Type = HTONS (Type); - PxeOpt->Data[PxeOpt->Length] = DHCP4_TAG_EOP; + OptList[OptCount]->OpCode = DHCP4_TAG_VENDOR; + OptList[OptCount]->Length = (UINT8)(VendorOptLen - 2); + PxeOpt = (EFI_DHCP4_PACKET_OPTION *)OptList[OptCount]->Data; + PxeOpt->OpCode = PXEBC_VENDOR_TAG_BOOT_ITEM; + PxeOpt->Length = (UINT8)sizeof (PXEBC_OPTION_BOOT_ITEM); + PxeBootItem = (PXEBC_OPTION_BOOT_ITEM *)PxeOpt->Data; + PxeBootItem->Type = HTONS (Type); + PxeOpt->Data[PxeOpt->Length] = DHCP4_TAG_EOP; if (Layer != NULL) { - PxeBootItem->Layer = HTONS (*Layer); + PxeBootItem->Layer = HTONS (*Layer); } OptCount++; @@ -1462,14 +1457,15 @@ PxeBcDhcp4Discover ( } if (Mode->SendGUID) { - if (EFI_ERROR (NetLibGetSystemGuid ((EFI_GUID *) Token.Packet->Dhcp4.Header.ClientHwAddr))) { + if (EFI_ERROR (NetLibGetSystemGuid ((EFI_GUID *)Token.Packet->Dhcp4.Header.ClientHwAddr))) { // // Zero the Guid to indicate NOT programmable if failed to get system Guid. // DEBUG ((DEBUG_WARN, "PXE: Failed to read system GUID from the smbios table!\n")); ZeroMem (Token.Packet->Dhcp4.Header.ClientHwAddr, sizeof (EFI_GUID)); } - Token.Packet->Dhcp4.Header.HwAddrLen = (UINT8) sizeof (EFI_GUID); + + Token.Packet->Dhcp4.Header.HwAddrLen = (UINT8)sizeof (EFI_GUID); } // @@ -1477,7 +1473,7 @@ PxeBcDhcp4Discover ( // Xid = NET_RANDOM (NetRandomInitSeed ()); Token.Packet->Dhcp4.Header.Xid = HTONL (Xid); - Token.Packet->Dhcp4.Header.Reserved = HTONS ((UINT16) ((IsBCast) ? 0x8000 : 0x0)); + Token.Packet->Dhcp4.Header.Reserved = HTONS ((UINT16)((IsBCast) ? 0x8000 : 0x0)); CopyMem (&Token.Packet->Dhcp4.Header.ClientAddr, &Private->StationIp, sizeof (EFI_IPv4_ADDRESS)); Token.RemotePort = Sport; @@ -1491,20 +1487,19 @@ PxeBcDhcp4Discover ( CopyMem (&Token.GatewayAddress, &Private->GatewayIp, sizeof (EFI_IPv4_ADDRESS)); if (!IsBCast) { - Token.ListenPointCount = 1; - Token.ListenPoints = &ListenPoint; - Token.ListenPoints[0].ListenPort = PXEBC_BS_DISCOVER_PORT; - CopyMem (&Token.ListenPoints[0].ListenAddress, &Private->StationIp, sizeof(EFI_IPv4_ADDRESS)); - CopyMem (&Token.ListenPoints[0].SubnetMask, &Private->SubnetMask, sizeof(EFI_IPv4_ADDRESS)); + Token.ListenPointCount = 1; + Token.ListenPoints = &ListenPoint; + Token.ListenPoints[0].ListenPort = PXEBC_BS_DISCOVER_PORT; + CopyMem (&Token.ListenPoints[0].ListenAddress, &Private->StationIp, sizeof (EFI_IPv4_ADDRESS)); + CopyMem (&Token.ListenPoints[0].SubnetMask, &Private->SubnetMask, sizeof (EFI_IPv4_ADDRESS)); } // // Send out the request packet to discover the bootfile. // for (TryIndex = 1; TryIndex <= PXEBC_BOOT_REQUEST_RETRIES; TryIndex++) { - - Token.TimeoutValue = (UINT16) (PXEBC_BOOT_REQUEST_TIMEOUT * TryIndex); - Token.Packet->Dhcp4.Header.Seconds = (UINT16) (PXEBC_BOOT_REQUEST_TIMEOUT * (TryIndex - 1)); + Token.TimeoutValue = (UINT16)(PXEBC_BOOT_REQUEST_TIMEOUT * TryIndex); + Token.Packet->Dhcp4.Header.Seconds = (UINT16)(PXEBC_BOOT_REQUEST_TIMEOUT * (TryIndex - 1)); Status = Dhcp4->TransmitReceive (Dhcp4, &Token); if (Token.Status != EFI_TIMEOUT) { @@ -1520,10 +1515,9 @@ PxeBcDhcp4Discover ( } if (!EFI_ERROR (Status)) { - - RepIndex = 0; - SrvIndex = 0; - Response = Token.ResponseList; + RepIndex = 0; + SrvIndex = 0; + Response = Token.ResponseList; // // Find the right PXE Reply according to server address. // @@ -1531,7 +1525,7 @@ PxeBcDhcp4Discover ( if (Response->Length > PXEBC_DHCP4_PACKET_MAX_SIZE) { SrvIndex = 0; RepIndex++; - Response = (EFI_DHCP4_PACKET *) ((UINT8 *) Response + Response->Size); + Response = (EFI_DHCP4_PACKET *)((UINT8 *)Response + Response->Size); continue; } @@ -1539,10 +1533,13 @@ PxeBcDhcp4Discover ( if (SrvList[SrvIndex].AcceptAnyResponse) { break; } + if ((SrvList[SrvIndex].Type == Type) && - EFI_IP4_EQUAL (&Response->Dhcp4.Header.ServerAddr, &SrvList[SrvIndex].IpAddr)) { + EFI_IP4_EQUAL (&Response->Dhcp4.Header.ServerAddr, &SrvList[SrvIndex].IpAddr)) + { break; } + SrvIndex++; } @@ -1552,7 +1549,7 @@ PxeBcDhcp4Discover ( SrvIndex = 0; RepIndex++; - Response = (EFI_DHCP4_PACKET *) ((UINT8 *) Response + Response->Size); + Response = (EFI_DHCP4_PACKET *)((UINT8 *)Response + Response->Size); } if (RepIndex < Token.ResponseCount) { @@ -1562,13 +1559,14 @@ PxeBcDhcp4Discover ( // if (Private->IsDoDiscover) { Status = PxeBcCacheDhcp4Packet (&Private->PxeReply.Dhcp4.Packet.Ack, Response); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { goto ON_EXIT; } + CopyMem (&Mode->PxeDiscover, &Token.Packet->Dhcp4, Token.Packet->Length); } else { Status = PxeBcCacheDhcp4Packet (&Private->ProxyOffer.Dhcp4.Packet.Offer, Response); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { goto ON_EXIT; } } @@ -1579,14 +1577,17 @@ PxeBcDhcp4Discover ( Status = EFI_NOT_FOUND; } } + ON_EXIT: if (Token.ResponseList != NULL) { FreePool (Token.ResponseList); } + if (Token.Packet != NULL) { FreePool (Token.Packet); } + return Status; } @@ -1601,40 +1602,40 @@ ON_EXIT: **/ EFI_STATUS PxeBcSetIp4Policy ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ) { - EFI_STATUS Status; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; - EFI_IP4_CONFIG2_POLICY Policy; - UINTN DataSize; + EFI_STATUS Status; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + EFI_IP4_CONFIG2_POLICY Policy; + UINTN DataSize; Ip4Config2 = Private->Ip4Config2; - DataSize = sizeof (EFI_IP4_CONFIG2_POLICY); - Status = Ip4Config2->GetData ( - Ip4Config2, - Ip4Config2DataTypePolicy, - &DataSize, - &Policy - ); + DataSize = sizeof (EFI_IP4_CONFIG2_POLICY); + Status = Ip4Config2->GetData ( + Ip4Config2, + Ip4Config2DataTypePolicy, + &DataSize, + &Policy + ); if (EFI_ERROR (Status)) { return Status; } if (Policy != Ip4Config2PolicyStatic) { Policy = Ip4Config2PolicyStatic; - Status= Ip4Config2->SetData ( - Ip4Config2, - Ip4Config2DataTypePolicy, - sizeof (EFI_IP4_CONFIG2_POLICY), - &Policy - ); + Status = Ip4Config2->SetData ( + Ip4Config2, + Ip4Config2DataTypePolicy, + sizeof (EFI_IP4_CONFIG2_POLICY), + &Policy + ); if (EFI_ERROR (Status)) { return Status; } } - return EFI_SUCCESS; + return EFI_SUCCESS; } /** @@ -1649,28 +1650,28 @@ PxeBcSetIp4Policy ( **/ EFI_STATUS PxeBcDhcp4Dora ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_DHCP4_PROTOCOL *Dhcp4 + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_DHCP4_PROTOCOL *Dhcp4 ) { - EFI_PXE_BASE_CODE_MODE *PxeMode; - EFI_DHCP4_CONFIG_DATA Config; - EFI_DHCP4_MODE_DATA Mode; - EFI_DHCP4_PACKET_OPTION *OptList[PXEBC_DHCP4_OPTION_MAX_NUM]; - UINT8 Buffer[PXEBC_DHCP4_OPTION_MAX_SIZE]; - UINT32 OptCount; - EFI_STATUS Status; + EFI_PXE_BASE_CODE_MODE *PxeMode; + EFI_DHCP4_CONFIG_DATA Config; + EFI_DHCP4_MODE_DATA Mode; + EFI_DHCP4_PACKET_OPTION *OptList[PXEBC_DHCP4_OPTION_MAX_NUM]; + UINT8 Buffer[PXEBC_DHCP4_OPTION_MAX_SIZE]; + UINT32 OptCount; + EFI_STATUS Status; ASSERT (Dhcp4 != NULL); - Status = EFI_SUCCESS; - PxeMode = Private->PxeBc.Mode; + Status = EFI_SUCCESS; + PxeMode = Private->PxeBc.Mode; // // Build option list for the request packet. // OptCount = PxeBcBuildDhcp4Options (Private, OptList, Buffer, FALSE); - ASSERT (OptCount> 0); + ASSERT (OptCount > 0); ZeroMem (&Mode, sizeof (EFI_DHCP4_MODE_DATA)); ZeroMem (&Config, sizeof (EFI_DHCP4_CONFIG_DATA)); @@ -1704,7 +1705,7 @@ PxeBcDhcp4Dora ( PxeMode->IcmpErrorReceived = TRUE; } - if (Status == EFI_TIMEOUT && Private->OfferNum > 0) { + if ((Status == EFI_TIMEOUT) && (Private->OfferNum > 0)) { Status = EFI_NO_RESPONSE; } diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.h b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.h index 879da18a88..45cef56720 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.h +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp4.h @@ -10,17 +10,17 @@ #ifndef __EFI_PXEBC_DHCP4_H__ #define __EFI_PXEBC_DHCP4_H__ -#define PXEBC_DHCP4_OPTION_MAX_NUM 16 -#define PXEBC_DHCP4_OPTION_MAX_SIZE 312 -#define PXEBC_DHCP4_PACKET_MAX_SIZE (sizeof (EFI_PXE_BASE_CODE_PACKET)) -#define PXEBC_DHCP4_S_PORT 67 -#define PXEBC_DHCP4_C_PORT 68 -#define PXEBC_BS_DOWNLOAD_PORT 69 -#define PXEBC_BS_DISCOVER_PORT 4011 -#define PXEBC_DHCP4_OPCODE_REQUEST 1 -#define PXEBC_DHCP4_OPCODE_REPLY 2 -#define PXEBC_DHCP4_MSG_TYPE_REQUEST 3 -#define PXEBC_DHCP4_MAGIC 0x63538263 // network byte order +#define PXEBC_DHCP4_OPTION_MAX_NUM 16 +#define PXEBC_DHCP4_OPTION_MAX_SIZE 312 +#define PXEBC_DHCP4_PACKET_MAX_SIZE (sizeof (EFI_PXE_BASE_CODE_PACKET)) +#define PXEBC_DHCP4_S_PORT 67 +#define PXEBC_DHCP4_C_PORT 68 +#define PXEBC_BS_DOWNLOAD_PORT 69 +#define PXEBC_BS_DISCOVER_PORT 4011 +#define PXEBC_DHCP4_OPCODE_REQUEST 1 +#define PXEBC_DHCP4_OPCODE_REPLY 2 +#define PXEBC_DHCP4_MSG_TYPE_REQUEST 3 +#define PXEBC_DHCP4_MAGIC 0x63538263 // network byte order // // Sub-Options in Dhcp Vendor Option @@ -39,24 +39,23 @@ #define PXEBC_VENDOR_TAG_CREDENTIAL_TYPES 12 #define PXEBC_VENDOR_TAG_BOOT_ITEM 71 -#define PXEBC_BOOT_REQUEST_TIMEOUT 1 -#define PXEBC_BOOT_REQUEST_RETRIES 4 - -#define PXEBC_DHCP4_OVERLOAD_FILE 1 -#define PXEBC_DHCP4_OVERLOAD_SERVER_NAME 2 +#define PXEBC_BOOT_REQUEST_TIMEOUT 1 +#define PXEBC_BOOT_REQUEST_RETRIES 4 +#define PXEBC_DHCP4_OVERLOAD_FILE 1 +#define PXEBC_DHCP4_OVERLOAD_SERVER_NAME 2 // // The array index of the DHCP4 option tag interested // -#define PXEBC_DHCP4_TAG_INDEX_BOOTFILE_LEN 0 -#define PXEBC_DHCP4_TAG_INDEX_VENDOR 1 -#define PXEBC_DHCP4_TAG_INDEX_OVERLOAD 2 -#define PXEBC_DHCP4_TAG_INDEX_MSG_TYPE 3 -#define PXEBC_DHCP4_TAG_INDEX_SERVER_ID 4 -#define PXEBC_DHCP4_TAG_INDEX_CLASS_ID 5 -#define PXEBC_DHCP4_TAG_INDEX_BOOTFILE 6 -#define PXEBC_DHCP4_TAG_INDEX_MAX 7 +#define PXEBC_DHCP4_TAG_INDEX_BOOTFILE_LEN 0 +#define PXEBC_DHCP4_TAG_INDEX_VENDOR 1 +#define PXEBC_DHCP4_TAG_INDEX_OVERLOAD 2 +#define PXEBC_DHCP4_TAG_INDEX_MSG_TYPE 3 +#define PXEBC_DHCP4_TAG_INDEX_SERVER_ID 4 +#define PXEBC_DHCP4_TAG_INDEX_CLASS_ID 5 +#define PXEBC_DHCP4_TAG_INDEX_BOOTFILE 6 +#define PXEBC_DHCP4_TAG_INDEX_MAX 7 // // Dhcp4 and Dhcp6 share this definition, and corresponding @@ -79,12 +78,12 @@ typedef enum { PxeOfferTypeMax } PXEBC_OFFER_TYPE; -#define BIT(x) (1 << x) -#define CTRL(x) (0x1F & (x)) -#define DEFAULT_CLASS_ID_DATA "PXEClient:Arch:xxxxx:UNDI:003000" -#define DEFAULT_UNDI_TYPE 1 -#define DEFAULT_UNDI_MAJOR 3 -#define DEFAULT_UNDI_MINOR 0 +#define BIT(x) (1 << x) +#define CTRL(x) (0x1F & (x)) +#define DEFAULT_CLASS_ID_DATA "PXEClient:Arch:xxxxx:UNDI:003000" +#define DEFAULT_UNDI_TYPE 1 +#define DEFAULT_UNDI_MAJOR 3 +#define DEFAULT_UNDI_MINOR 0 #define MTFTP_VENDOR_OPTION_BIT_MAP \ (BIT (PXEBC_VENDOR_TAG_MTFTP_IP) | \ @@ -157,122 +156,120 @@ typedef enum { #define IS_DISABLE_PROMPT_MENU(x) \ (((x) & BIT (3)) == BIT (3)) - #pragma pack(1) typedef struct { - UINT8 ParaList[135]; + UINT8 ParaList[135]; } PXEBC_DHCP4_OPTION_PARA; typedef struct { - UINT16 Size; + UINT16 Size; } PXEBC_DHCP4_OPTION_MAX_MESG_SIZE; typedef struct { - UINT8 Type; - UINT8 MajorVer; - UINT8 MinorVer; + UINT8 Type; + UINT8 MajorVer; + UINT8 MinorVer; } PXEBC_DHCP4_OPTION_UNDI; typedef struct { - UINT8 Type; + UINT8 Type; } PXEBC_DHCP4_OPTION_MESG; typedef struct { - UINT16 Type; + UINT16 Type; } PXEBC_DHCP4_OPTION_ARCH; typedef struct { - UINT8 ClassIdentifier[10]; - UINT8 ArchitecturePrefix[5]; - UINT8 ArchitectureType[5]; - UINT8 Lit3[1]; - UINT8 InterfaceName[4]; - UINT8 Lit4[1]; - UINT8 UndiMajor[3]; - UINT8 UndiMinor[3]; + UINT8 ClassIdentifier[10]; + UINT8 ArchitecturePrefix[5]; + UINT8 ArchitectureType[5]; + UINT8 Lit3[1]; + UINT8 InterfaceName[4]; + UINT8 Lit4[1]; + UINT8 UndiMajor[3]; + UINT8 UndiMinor[3]; } PXEBC_DHCP4_OPTION_CLID; typedef struct { - UINT8 Type; - UINT8 Guid[16]; + UINT8 Type; + UINT8 Guid[16]; } PXEBC_DHCP4_OPTION_UUID; typedef struct { - UINT16 Type; - UINT16 Layer; + UINT16 Type; + UINT16 Layer; } PXEBC_OPTION_BOOT_ITEM; #pragma pack() typedef union { - PXEBC_DHCP4_OPTION_PARA *Para; - PXEBC_DHCP4_OPTION_UNDI *Undi; - PXEBC_DHCP4_OPTION_ARCH *Arch; - PXEBC_DHCP4_OPTION_CLID *Clid; - PXEBC_DHCP4_OPTION_UUID *Uuid; - PXEBC_DHCP4_OPTION_MESG *Mesg; - PXEBC_DHCP4_OPTION_MAX_MESG_SIZE *MaxMesgSize; + PXEBC_DHCP4_OPTION_PARA *Para; + PXEBC_DHCP4_OPTION_UNDI *Undi; + PXEBC_DHCP4_OPTION_ARCH *Arch; + PXEBC_DHCP4_OPTION_CLID *Clid; + PXEBC_DHCP4_OPTION_UUID *Uuid; + PXEBC_DHCP4_OPTION_MESG *Mesg; + PXEBC_DHCP4_OPTION_MAX_MESG_SIZE *MaxMesgSize; } PXEBC_DHCP4_OPTION_ENTRY; #pragma pack(1) typedef struct { - UINT16 Type; - UINT8 IpCnt; - EFI_IPv4_ADDRESS IpAddr[1]; + UINT16 Type; + UINT8 IpCnt; + EFI_IPv4_ADDRESS IpAddr[1]; } PXEBC_BOOT_SVR_ENTRY; typedef struct { - UINT16 Type; - UINT8 DescLen; - UINT8 DescStr[1]; + UINT16 Type; + UINT8 DescLen; + UINT8 DescStr[1]; } PXEBC_BOOT_MENU_ENTRY; typedef struct { - UINT8 Timeout; - UINT8 Prompt[1]; + UINT8 Timeout; + UINT8 Prompt[1]; } PXEBC_MENU_PROMPT; #pragma pack() typedef struct { - UINT32 BitMap[8]; - EFI_IPv4_ADDRESS MtftpIp; - UINT16 MtftpCPort; - UINT16 MtftpSPort; - UINT8 MtftpTimeout; - UINT8 MtftpDelay; - UINT8 DiscoverCtrl; - EFI_IPv4_ADDRESS DiscoverMcastIp; - EFI_IPv4_ADDRESS McastIpBase; - UINT16 McastIpBlock; - UINT16 McastIpRange; - UINT16 BootSrvType; - UINT16 BootSrvLayer; - PXEBC_BOOT_SVR_ENTRY *BootSvr; - UINT8 BootSvrLen; - PXEBC_BOOT_MENU_ENTRY *BootMenu; - UINT8 BootMenuLen; - PXEBC_MENU_PROMPT *MenuPrompt; - UINT8 MenuPromptLen; - UINT32 *CredType; - UINT8 CredTypeLen; + UINT32 BitMap[8]; + EFI_IPv4_ADDRESS MtftpIp; + UINT16 MtftpCPort; + UINT16 MtftpSPort; + UINT8 MtftpTimeout; + UINT8 MtftpDelay; + UINT8 DiscoverCtrl; + EFI_IPv4_ADDRESS DiscoverMcastIp; + EFI_IPv4_ADDRESS McastIpBase; + UINT16 McastIpBlock; + UINT16 McastIpRange; + UINT16 BootSrvType; + UINT16 BootSrvLayer; + PXEBC_BOOT_SVR_ENTRY *BootSvr; + UINT8 BootSvrLen; + PXEBC_BOOT_MENU_ENTRY *BootMenu; + UINT8 BootMenuLen; + PXEBC_MENU_PROMPT *MenuPrompt; + UINT8 MenuPromptLen; + UINT32 *CredType; + UINT8 CredTypeLen; } PXEBC_VENDOR_OPTION; #define PXEBC_CACHED_DHCP4_PACKET_MAX_SIZE (OFFSET_OF (EFI_DHCP4_PACKET, Dhcp4) + PXEBC_DHCP4_PACKET_MAX_SIZE) typedef union { - EFI_DHCP4_PACKET Offer; - EFI_DHCP4_PACKET Ack; - UINT8 Buffer[PXEBC_CACHED_DHCP4_PACKET_MAX_SIZE]; + EFI_DHCP4_PACKET Offer; + EFI_DHCP4_PACKET Ack; + UINT8 Buffer[PXEBC_CACHED_DHCP4_PACKET_MAX_SIZE]; } PXEBC_DHCP4_PACKET; typedef struct { - PXEBC_DHCP4_PACKET Packet; - PXEBC_OFFER_TYPE OfferType; - EFI_DHCP4_PACKET_OPTION *OptList[PXEBC_DHCP4_TAG_INDEX_MAX]; - PXEBC_VENDOR_OPTION VendorOpt; + PXEBC_DHCP4_PACKET Packet; + PXEBC_OFFER_TYPE OfferType; + EFI_DHCP4_PACKET_OPTION *OptList[PXEBC_DHCP4_TAG_INDEX_MAX]; + PXEBC_VENDOR_OPTION VendorOpt; } PXEBC_DHCP4_PACKET_CACHE; - /** Create a template DHCPv4 packet as a seed. @@ -282,11 +279,10 @@ typedef struct { **/ VOID PxeBcSeedDhcp4Packet ( - OUT EFI_DHCP4_PACKET *Seed, - IN EFI_UDP4_PROTOCOL *Udp4 + OUT EFI_DHCP4_PACKET *Seed, + IN EFI_UDP4_PROTOCOL *Udp4 ); - /** Parse the cached DHCPv4 packet, including all the options. @@ -298,10 +294,9 @@ PxeBcSeedDhcp4Packet ( **/ EFI_STATUS PxeBcParseDhcp4Packet ( - IN PXEBC_DHCP4_PACKET_CACHE *Cache4 + IN PXEBC_DHCP4_PACKET_CACHE *Cache4 ); - /** Build and send out the request packet for the bootfile, and parse the reply. @@ -321,13 +316,13 @@ PxeBcParseDhcp4Packet ( **/ EFI_STATUS PxeBcDhcp4Discover ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINT16 Type, - IN UINT16 *Layer, - IN BOOLEAN UseBis, - IN EFI_IP_ADDRESS *DestIp, - IN UINT16 IpCount, - IN EFI_PXE_BASE_CODE_SRVLIST *SrvList + IN PXEBC_PRIVATE_DATA *Private, + IN UINT16 Type, + IN UINT16 *Layer, + IN BOOLEAN UseBis, + IN EFI_IP_ADDRESS *DestIp, + IN UINT16 IpCount, + IN EFI_PXE_BASE_CODE_SRVLIST *SrvList ); /** @@ -341,10 +336,9 @@ PxeBcDhcp4Discover ( **/ EFI_STATUS PxeBcSetIp4Policy ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ); - /** Start the D.O.R.A DHCPv4 process to acquire the IPv4 address and other PXE boot information. @@ -357,9 +351,8 @@ PxeBcSetIp4Policy ( **/ EFI_STATUS PxeBcDhcp4Dora ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_DHCP4_PROTOCOL *Dhcp4 + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_DHCP4_PROTOCOL *Dhcp4 ); #endif - diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c index 8d71143b79..425e0cf806 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c @@ -15,7 +15,9 @@ // // ALL_DHCP_Relay_Agents_and_Servers address: FF02::1:2 // -EFI_IPv6_ADDRESS mAllDhcpRelayAndServersAddress = {{0xFF, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2}}; +EFI_IPv6_ADDRESS mAllDhcpRelayAndServersAddress = { + { 0xFF, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2 } +}; /** Parse out a DHCPv6 option by OptTag, and find the position in buffer. @@ -30,35 +32,32 @@ EFI_IPv6_ADDRESS mAllDhcpRelayAndServersAddress = {{0xFF, 2, 0, 0, 0, 0, 0, 0, **/ EFI_DHCP6_PACKET_OPTION * PxeBcParseDhcp6Options ( - IN UINT8 *Buffer, - IN UINT32 Length, - IN UINT16 OptTag + IN UINT8 *Buffer, + IN UINT32 Length, + IN UINT16 OptTag ) { - EFI_DHCP6_PACKET_OPTION *Option; - UINT32 Offset; + EFI_DHCP6_PACKET_OPTION *Option; + UINT32 Offset; - Option = (EFI_DHCP6_PACKET_OPTION *) Buffer; - Offset = 0; + Option = (EFI_DHCP6_PACKET_OPTION *)Buffer; + Offset = 0; // // OpLen and OpCode here are both stored in network order. // while (Offset < Length) { - if (NTOHS (Option->OpCode) == OptTag) { - return Option; } - Offset += (NTOHS(Option->OpLen) + 4); - Option = (EFI_DHCP6_PACKET_OPTION *) (Buffer + Offset); + Offset += (NTOHS (Option->OpLen) + 4); + Option = (EFI_DHCP6_PACKET_OPTION *)(Buffer + Offset); } return NULL; } - /** Build the options buffer for the DHCPv6 request packet. @@ -71,70 +70,70 @@ PxeBcParseDhcp6Options ( **/ UINT32 PxeBcBuildDhcp6Options ( - IN PXEBC_PRIVATE_DATA *Private, - OUT EFI_DHCP6_PACKET_OPTION **OptList, - IN UINT8 *Buffer + IN PXEBC_PRIVATE_DATA *Private, + OUT EFI_DHCP6_PACKET_OPTION **OptList, + IN UINT8 *Buffer ) { - PXEBC_DHCP6_OPTION_ENTRY OptEnt; - UINT32 Index; - UINT16 Value; + PXEBC_DHCP6_OPTION_ENTRY OptEnt; + UINT32 Index; + UINT16 Value; - Index = 0; - OptList[0] = (EFI_DHCP6_PACKET_OPTION *) Buffer; + Index = 0; + OptList[0] = (EFI_DHCP6_PACKET_OPTION *)Buffer; // // Append client option request option // - OptList[Index]->OpCode = HTONS (DHCP6_OPT_ORO); - OptList[Index]->OpLen = HTONS (8); - OptEnt.Oro = (PXEBC_DHCP6_OPTION_ORO *) OptList[Index]->Data; - OptEnt.Oro->OpCode[0] = HTONS(DHCP6_OPT_BOOT_FILE_URL); - OptEnt.Oro->OpCode[1] = HTONS(DHCP6_OPT_BOOT_FILE_PARAM); - OptEnt.Oro->OpCode[2] = HTONS(DHCP6_OPT_DNS_SERVERS); - OptEnt.Oro->OpCode[3] = HTONS(DHCP6_OPT_VENDOR_CLASS); + OptList[Index]->OpCode = HTONS (DHCP6_OPT_ORO); + OptList[Index]->OpLen = HTONS (8); + OptEnt.Oro = (PXEBC_DHCP6_OPTION_ORO *)OptList[Index]->Data; + OptEnt.Oro->OpCode[0] = HTONS (DHCP6_OPT_BOOT_FILE_URL); + OptEnt.Oro->OpCode[1] = HTONS (DHCP6_OPT_BOOT_FILE_PARAM); + OptEnt.Oro->OpCode[2] = HTONS (DHCP6_OPT_DNS_SERVERS); + OptEnt.Oro->OpCode[3] = HTONS (DHCP6_OPT_VENDOR_CLASS); Index++; - OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); // // Append client network device interface option // - OptList[Index]->OpCode = HTONS (DHCP6_OPT_UNDI); - OptList[Index]->OpLen = HTONS ((UINT16)3); - OptEnt.Undi = (PXEBC_DHCP6_OPTION_UNDI *) OptList[Index]->Data; + OptList[Index]->OpCode = HTONS (DHCP6_OPT_UNDI); + OptList[Index]->OpLen = HTONS ((UINT16)3); + OptEnt.Undi = (PXEBC_DHCP6_OPTION_UNDI *)OptList[Index]->Data; if (Private->Nii != NULL) { - OptEnt.Undi->Type = Private->Nii->Type; - OptEnt.Undi->MajorVer = Private->Nii->MajorVer; - OptEnt.Undi->MinorVer = Private->Nii->MinorVer; + OptEnt.Undi->Type = Private->Nii->Type; + OptEnt.Undi->MajorVer = Private->Nii->MajorVer; + OptEnt.Undi->MinorVer = Private->Nii->MinorVer; } else { - OptEnt.Undi->Type = DEFAULT_UNDI_TYPE; - OptEnt.Undi->MajorVer = DEFAULT_UNDI_MAJOR; - OptEnt.Undi->MinorVer = DEFAULT_UNDI_MINOR; + OptEnt.Undi->Type = DEFAULT_UNDI_TYPE; + OptEnt.Undi->MajorVer = DEFAULT_UNDI_MAJOR; + OptEnt.Undi->MinorVer = DEFAULT_UNDI_MINOR; } Index++; - OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); // // Append client system architecture option // - OptList[Index]->OpCode = HTONS (DHCP6_OPT_ARCH); - OptList[Index]->OpLen = HTONS ((UINT16) sizeof (PXEBC_DHCP6_OPTION_ARCH)); - OptEnt.Arch = (PXEBC_DHCP6_OPTION_ARCH *) OptList[Index]->Data; - Value = HTONS (EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE); + OptList[Index]->OpCode = HTONS (DHCP6_OPT_ARCH); + OptList[Index]->OpLen = HTONS ((UINT16)sizeof (PXEBC_DHCP6_OPTION_ARCH)); + OptEnt.Arch = (PXEBC_DHCP6_OPTION_ARCH *)OptList[Index]->Data; + Value = HTONS (EFI_PXE_CLIENT_SYSTEM_ARCHITECTURE); CopyMem (&OptEnt.Arch->Type, &Value, sizeof (UINT16)); Index++; - OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); + OptList[Index] = GET_NEXT_DHCP6_OPTION (OptList[Index - 1]); // // Append vendor class option to store the PXE class identifier. // OptList[Index]->OpCode = HTONS (DHCP6_OPT_VENDOR_CLASS); - OptList[Index]->OpLen = HTONS ((UINT16) sizeof (PXEBC_DHCP6_OPTION_VENDOR_CLASS)); - OptEnt.VendorClass = (PXEBC_DHCP6_OPTION_VENDOR_CLASS *) OptList[Index]->Data; + OptList[Index]->OpLen = HTONS ((UINT16)sizeof (PXEBC_DHCP6_OPTION_VENDOR_CLASS)); + OptEnt.VendorClass = (PXEBC_DHCP6_OPTION_VENDOR_CLASS *)OptList[Index]->Data; OptEnt.VendorClass->Vendor = HTONL (PXEBC_DHCP6_ENTERPRISE_NUM); - OptEnt.VendorClass->ClassLen = HTONS ((UINT16) sizeof (PXEBC_CLASS_ID)); + OptEnt.VendorClass->ClassLen = HTONS ((UINT16)sizeof (PXEBC_CLASS_ID)); CopyMem ( &OptEnt.VendorClass->ClassId, DEFAULT_CLASS_ID_DATA, @@ -169,7 +168,6 @@ PxeBcBuildDhcp6Options ( return Index; } - /** Cache the DHCPv6 packet. @@ -182,8 +180,8 @@ PxeBcBuildDhcp6Options ( **/ EFI_STATUS PxeBcCacheDhcp6Packet ( - IN EFI_DHCP6_PACKET *Dst, - IN EFI_DHCP6_PACKET *Src + IN EFI_DHCP6_PACKET *Dst, + IN EFI_DHCP6_PACKET *Src ) { if (Dst->Size < Src->Length) { @@ -211,22 +209,22 @@ PxeBcCacheDhcp6Packet ( **/ EFI_STATUS PxeBcDns6 ( - IN PXEBC_PRIVATE_DATA *Private, - IN CHAR16 *HostName, - OUT EFI_IPv6_ADDRESS *IpAddress + IN PXEBC_PRIVATE_DATA *Private, + IN CHAR16 *HostName, + OUT EFI_IPv6_ADDRESS *IpAddress ) { - EFI_STATUS Status; - EFI_DNS6_PROTOCOL *Dns6; - EFI_DNS6_CONFIG_DATA Dns6ConfigData; - EFI_DNS6_COMPLETION_TOKEN Token; - EFI_HANDLE Dns6Handle; - EFI_IPv6_ADDRESS *DnsServerList; - BOOLEAN IsDone; - - Dns6 = NULL; - Dns6Handle = NULL; - DnsServerList = Private->DnsServer; + EFI_STATUS Status; + EFI_DNS6_PROTOCOL *Dns6; + EFI_DNS6_CONFIG_DATA Dns6ConfigData; + EFI_DNS6_COMPLETION_TOKEN Token; + EFI_HANDLE Dns6Handle; + EFI_IPv6_ADDRESS *DnsServerList; + BOOLEAN IsDone; + + Dns6 = NULL; + Dns6Handle = NULL; + DnsServerList = Private->DnsServer; ZeroMem (&Token, sizeof (EFI_DNS6_COMPLETION_TOKEN)); // @@ -245,7 +243,7 @@ PxeBcDns6 ( Status = gBS->OpenProtocol ( Dns6Handle, &gEfiDns6ProtocolGuid, - (VOID **) &Dns6, + (VOID **)&Dns6, Private->Image, Private->Controller, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -308,10 +306,12 @@ PxeBcDns6 ( Status = EFI_DEVICE_ERROR; goto Exit; } - if (Token.RspData.H2AData->IpCount == 0 || Token.RspData.H2AData->IpList == NULL) { + + if ((Token.RspData.H2AData->IpCount == 0) || (Token.RspData.H2AData->IpList == NULL)) { Status = EFI_DEVICE_ERROR; goto Exit; } + // // We just return the first IPv6 address from DNS protocol. // @@ -325,10 +325,12 @@ Exit: if (Token.Event != NULL) { gBS->CloseEvent (Token.Event); } + if (Token.RspData.H2AData != NULL) { if (Token.RspData.H2AData->IpList != NULL) { FreePool (Token.RspData.H2AData->IpList); } + FreePool (Token.RspData.H2AData); } @@ -375,26 +377,26 @@ Exit: **/ EFI_STATUS PxeBcExtractBootFileUrl ( - IN PXEBC_PRIVATE_DATA *Private, - OUT UINT8 **FileName, - IN OUT EFI_IPv6_ADDRESS *SrvAddr, - IN CHAR8 *BootFile, - IN UINT16 Length + IN PXEBC_PRIVATE_DATA *Private, + OUT UINT8 **FileName, + IN OUT EFI_IPv6_ADDRESS *SrvAddr, + IN CHAR8 *BootFile, + IN UINT16 Length ) { - UINT16 PrefixLen; - CHAR8 *BootFileNamePtr; - CHAR8 *BootFileName; - UINT16 BootFileNameLen; - CHAR8 *TmpStr; - CHAR8 TmpChar; - CHAR8 *ServerAddressOption; - CHAR8 *ServerAddress; - CHAR8 *ModeStr; - CHAR16 *HostName; - BOOLEAN IpExpressedUrl; - UINTN Len; - EFI_STATUS Status; + UINT16 PrefixLen; + CHAR8 *BootFileNamePtr; + CHAR8 *BootFileName; + UINT16 BootFileNameLen; + CHAR8 *TmpStr; + CHAR8 TmpChar; + CHAR8 *ServerAddressOption; + CHAR8 *ServerAddress; + CHAR8 *ModeStr; + CHAR16 *HostName; + BOOLEAN IpExpressedUrl; + UINTN Len; + EFI_STATUS Status; IpExpressedUrl = TRUE; // @@ -417,17 +419,18 @@ PxeBcExtractBootFileUrl ( // As an example where the BOOTFILE_NAME is the EFI loader and // SERVER_ADDRESS is the ASCII encoding of an IPV6 address. // - PrefixLen = (UINT16) AsciiStrLen (PXEBC_DHCP6_BOOT_FILE_URL_PREFIX); + PrefixLen = (UINT16)AsciiStrLen (PXEBC_DHCP6_BOOT_FILE_URL_PREFIX); - if (Length <= PrefixLen || - CompareMem (BootFile, PXEBC_DHCP6_BOOT_FILE_URL_PREFIX, PrefixLen) != 0) { + if ((Length <= PrefixLen) || + (CompareMem (BootFile, PXEBC_DHCP6_BOOT_FILE_URL_PREFIX, PrefixLen) != 0)) + { return EFI_NOT_FOUND; } BootFile = BootFile + PrefixLen; - Length = (UINT16) (Length - PrefixLen); + Length = (UINT16)(Length - PrefixLen); - TmpStr = (CHAR8 *) AllocateZeroPool (Length + 1); + TmpStr = (CHAR8 *)AllocateZeroPool (Length + 1); if (TmpStr == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -440,7 +443,7 @@ PxeBcExtractBootFileUrl ( // ServerAddressOption = TmpStr; if (*ServerAddressOption == PXEBC_ADDR_START_DELIMITER) { - ServerAddressOption ++; + ServerAddressOption++; ServerAddress = ServerAddressOption; while (*ServerAddress != '\0' && *ServerAddress != PXEBC_ADDR_END_DELIMITER) { ServerAddress++; @@ -461,10 +464,9 @@ PxeBcExtractBootFileUrl ( FreePool (TmpStr); return Status; } - } else { IpExpressedUrl = FALSE; - ServerAddress = ServerAddressOption; + ServerAddress = ServerAddressOption; while (*ServerAddress != '\0' && *ServerAddress != PXEBC_TFTP_URL_SEPARATOR) { ServerAddress++; } @@ -473,14 +475,16 @@ PxeBcExtractBootFileUrl ( FreePool (TmpStr); return EFI_INVALID_PARAMETER; } + *ServerAddress = '\0'; - Len = AsciiStrSize (ServerAddressOption); + Len = AsciiStrSize (ServerAddressOption); HostName = AllocateZeroPool (Len * sizeof (CHAR16)); if (HostName == NULL) { FreePool (TmpStr); return EFI_OUT_OF_RESOURCES; } + AsciiStrToUnicodeStrS ( ServerAddressOption, HostName, @@ -490,7 +494,7 @@ PxeBcExtractBootFileUrl ( // // Perform DNS resolution. // - Status = PxeBcDns6 (Private,HostName, SrvAddr); + Status = PxeBcDns6 (Private, HostName, SrvAddr); if (EFI_ERROR (Status)) { FreePool (TmpStr); return Status; @@ -500,23 +504,24 @@ PxeBcExtractBootFileUrl ( // // Get the part of BOOTFILE_NAME string. // - BootFileNamePtr = (CHAR8*)((UINTN)ServerAddress + 1); + BootFileNamePtr = (CHAR8 *)((UINTN)ServerAddress + 1); if (IpExpressedUrl) { if (*BootFileNamePtr != PXEBC_TFTP_URL_SEPARATOR) { FreePool (TmpStr); return EFI_INVALID_PARAMETER; } + ++BootFileNamePtr; } - BootFileNameLen = (UINT16)(Length - (UINT16) ((UINTN)BootFileNamePtr - (UINTN)TmpStr) + 1); - if (BootFileNameLen != 0 || FileName != NULL) { + BootFileNameLen = (UINT16)(Length - (UINT16)((UINTN)BootFileNamePtr - (UINTN)TmpStr) + 1); + if ((BootFileNameLen != 0) || (FileName != NULL)) { // // Remove trailing mode=octet if present and ignore. All other modes are // invalid for netboot6, so reject them. // ModeStr = AsciiStrStr (BootFileNamePtr, ";mode=octet"); - if (ModeStr != NULL && *(ModeStr + AsciiStrLen (";mode=octet")) == '\0') { + if ((ModeStr != NULL) && (*(ModeStr + AsciiStrLen (";mode=octet")) == '\0')) { *ModeStr = '\0'; } else if (AsciiStrStr (BootFileNamePtr, ";mode=") != NULL) { FreePool (TmpStr); @@ -526,30 +531,32 @@ PxeBcExtractBootFileUrl ( // // Extract boot file name from URL. // - BootFileName = (CHAR8 *) AllocateZeroPool (BootFileNameLen); + BootFileName = (CHAR8 *)AllocateZeroPool (BootFileNameLen); if (BootFileName == NULL) { FreePool (TmpStr); return EFI_OUT_OF_RESOURCES; } - *FileName = (UINT8*) BootFileName; + + *FileName = (UINT8 *)BootFileName; // // Decode percent-encoding in boot file name. // while (*BootFileNamePtr != '\0') { if (*BootFileNamePtr == '%') { - TmpChar = *(BootFileNamePtr+ 3); + TmpChar = *(BootFileNamePtr+ 3); *(BootFileNamePtr+ 3) = '\0'; - *BootFileName = (UINT8) AsciiStrHexToUintn ((CHAR8*)(BootFileNamePtr + 1)); + *BootFileName = (UINT8)AsciiStrHexToUintn ((CHAR8 *)(BootFileNamePtr + 1)); BootFileName++; *(BootFileNamePtr+ 3) = TmpChar; - BootFileNamePtr += 3; + BootFileNamePtr += 3; } else { *BootFileName = *BootFileNamePtr; BootFileName++; BootFileNamePtr++; } } + *BootFileName = '\0'; } @@ -558,7 +565,6 @@ PxeBcExtractBootFileUrl ( return EFI_SUCCESS; } - /** Parse the Boot File Parameter option. @@ -571,14 +577,14 @@ PxeBcExtractBootFileUrl ( **/ EFI_STATUS PxeBcExtractBootFileParam ( - IN CHAR8 *BootFilePara, - OUT UINT16 *BootFileSize + IN CHAR8 *BootFilePara, + OUT UINT16 *BootFileSize ) { - UINT16 Length; - UINT8 Index; - UINT8 Digit; - UINT32 Size; + UINT16 Length; + UINT8 Index; + UINT8 Digit; + UINT32 Size; CopyMem (&Length, BootFilePara, sizeof (UINT16)); Length = NTOHS (Length); @@ -586,7 +592,7 @@ PxeBcExtractBootFileParam ( // // The BootFile Size should be 1~5 byte ASCII strings // - if (Length < 1 || Length > 5) { + if ((Length < 1) || (Length > 5)) { return EFI_NOT_FOUND; } @@ -608,11 +614,10 @@ PxeBcExtractBootFileParam ( return EFI_NOT_FOUND; } - *BootFileSize = (UINT16) Size; + *BootFileSize = (UINT16)Size; return EFI_SUCCESS; } - /** Parse the cached DHCPv6 packet, including all the options. @@ -627,15 +632,15 @@ PxeBcParseDhcp6Packet ( IN PXEBC_DHCP6_PACKET_CACHE *Cache6 ) { - EFI_DHCP6_PACKET *Offer; - EFI_DHCP6_PACKET_OPTION **Options; - EFI_DHCP6_PACKET_OPTION *Option; - PXEBC_OFFER_TYPE OfferType; - BOOLEAN IsProxyOffer; - BOOLEAN IsPxeOffer; - UINT32 Offset; - UINT32 Length; - UINT32 EnterpriseNum; + EFI_DHCP6_PACKET *Offer; + EFI_DHCP6_PACKET_OPTION **Options; + EFI_DHCP6_PACKET_OPTION *Option; + PXEBC_OFFER_TYPE OfferType; + BOOLEAN IsProxyOffer; + BOOLEAN IsPxeOffer; + UINT32 Offset; + UINT32 Length; + UINT32 EnterpriseNum; IsProxyOffer = TRUE; IsPxeOffer = FALSE; @@ -644,15 +649,14 @@ PxeBcParseDhcp6Packet ( ZeroMem (Cache6->OptList, sizeof (Cache6->OptList)); - Option = (EFI_DHCP6_PACKET_OPTION *) (Offer->Dhcp6.Option); - Offset = 0; - Length = GET_DHCP6_OPTION_SIZE (Offer); + Option = (EFI_DHCP6_PACKET_OPTION *)(Offer->Dhcp6.Option); + Offset = 0; + Length = GET_DHCP6_OPTION_SIZE (Offer); // // OpLen and OpCode here are both stored in network order, since they are from original packet. // while (Offset < Length) { - if (NTOHS (Option->OpCode) == DHCP6_OPT_IA_NA) { Options[PXEBC_DHCP6_IDX_IA_NA] = Option; } else if (NTOHS (Option->OpCode) == DHCP6_OPT_BOOT_FILE_URL) { @@ -669,7 +673,7 @@ PxeBcParseDhcp6Packet ( } Offset += (NTOHS (Option->OpLen) + 4); - Option = (EFI_DHCP6_PACKET_OPTION *) (Offer->Dhcp6.Option + Offset); + Option = (EFI_DHCP6_PACKET_OPTION *)(Offer->Dhcp6.Option + Offset); } // @@ -683,7 +687,7 @@ PxeBcParseDhcp6Packet ( NTOHS (Option->OpLen), DHCP6_OPT_STATUS_CODE ); - if ((Option != NULL && Option->Data[0] == 0) || (Option == NULL)) { + if (((Option != NULL) && (Option->Data[0] == 0)) || (Option == NULL)) { IsProxyOffer = FALSE; } } @@ -692,12 +696,13 @@ PxeBcParseDhcp6Packet ( // The offer with "PXEClient" is a pxe offer. // Option = Options[PXEBC_DHCP6_IDX_VENDOR_CLASS]; - EnterpriseNum = HTONL(PXEBC_DHCP6_ENTERPRISE_NUM); + EnterpriseNum = HTONL (PXEBC_DHCP6_ENTERPRISE_NUM); - if (Option != NULL && - NTOHS(Option->OpLen) >= 13 && - CompareMem (Option->Data, &EnterpriseNum, sizeof (UINT32)) == 0 && - CompareMem (&Option->Data[6], DEFAULT_CLASS_ID_DATA, 9) == 0) { + if ((Option != NULL) && + (NTOHS (Option->OpLen) >= 13) && + (CompareMem (Option->Data, &EnterpriseNum, sizeof (UINT32)) == 0) && + (CompareMem (&Option->Data[6], DEFAULT_CLASS_ID_DATA, 9) == 0)) + { IsPxeOffer = TRUE; } @@ -721,7 +726,6 @@ PxeBcParseDhcp6Packet ( return EFI_SUCCESS; } - /** Cache the DHCPv6 ack packet, and parse it on demand. @@ -735,9 +739,9 @@ PxeBcParseDhcp6Packet ( **/ EFI_STATUS PxeBcCopyDhcp6Ack ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_DHCP6_PACKET *Ack, - IN BOOLEAN Verified + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_DHCP6_PACKET *Ack, + IN BOOLEAN Verified ) { EFI_PXE_BASE_CODE_MODE *Mode; @@ -762,7 +766,6 @@ PxeBcCopyDhcp6Ack ( return EFI_SUCCESS; } - /** Cache the DHCPv6 proxy offer packet according to the received order. @@ -775,12 +778,12 @@ PxeBcCopyDhcp6Ack ( **/ EFI_STATUS PxeBcCopyDhcp6Proxy ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINT32 OfferIndex + IN PXEBC_PRIVATE_DATA *Private, + IN UINT32 OfferIndex ) { - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_DHCP6_PACKET *Offer; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_DHCP6_PACKET *Offer; EFI_STATUS Status; ASSERT (OfferIndex < Private->OfferNum); @@ -793,9 +796,10 @@ PxeBcCopyDhcp6Proxy ( // Cache the proxy offer packet and parse it. // Status = PxeBcCacheDhcp6Packet (&Private->ProxyOffer.Dhcp6.Packet.Offer, Offer); - if (EFI_ERROR(Status)) { + if (EFI_ERROR (Status)) { return Status; } + PxeBcParseDhcp6Packet (&Private->ProxyOffer.Dhcp6); // @@ -820,33 +824,33 @@ PxeBcCopyDhcp6Proxy ( **/ UINT8 * PxeBcDhcp6SeekOption ( - IN UINT8 *Buf, - IN UINT32 SeekLen, - IN UINT16 OptType + IN UINT8 *Buf, + IN UINT32 SeekLen, + IN UINT16 OptType ) { - UINT8 *Cursor; - UINT8 *Option; - UINT16 DataLen; - UINT16 OpCode; + UINT8 *Cursor; + UINT8 *Option; + UINT16 DataLen; + UINT16 OpCode; Option = NULL; Cursor = Buf; while (Cursor < Buf + SeekLen) { - OpCode = ReadUnaligned16 ((UINT16 *) Cursor); + OpCode = ReadUnaligned16 ((UINT16 *)Cursor); if (OpCode == HTONS (OptType)) { Option = Cursor; break; } - DataLen = NTOHS (ReadUnaligned16 ((UINT16 *) (Cursor + 2))); + + DataLen = NTOHS (ReadUnaligned16 ((UINT16 *)(Cursor + 2))); Cursor += (DataLen + 4); } return Option; } - /** Build and send out the request packet for the bootfile, and parse the reply. @@ -861,34 +865,34 @@ PxeBcDhcp6SeekOption ( **/ EFI_STATUS PxeBcRequestBootService ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINT32 Index + IN PXEBC_PRIVATE_DATA *Private, + IN UINT32 Index ) { - EFI_PXE_BASE_CODE_UDP_PORT SrcPort; - EFI_PXE_BASE_CODE_UDP_PORT DestPort; - EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; - EFI_PXE_BASE_CODE_DHCPV6_PACKET *Discover; - UINTN DiscoverLen; - EFI_DHCP6_PACKET *Request; - UINTN RequestLen; - EFI_DHCP6_PACKET *Reply; - UINT8 *RequestOpt; - UINT8 *DiscoverOpt; - UINTN ReadSize; - UINT16 OpFlags; - UINT16 OpCode; - UINT16 OpLen; - EFI_STATUS Status; - EFI_DHCP6_PACKET *IndexOffer; - UINT8 *Option; - - PxeBc = &Private->PxeBc; - Request = Private->Dhcp6Request; - IndexOffer = &Private->OfferBuffer[Index].Dhcp6.Packet.Offer; - SrcPort = PXEBC_BS_DISCOVER_PORT; - DestPort = PXEBC_BS_DISCOVER_PORT; - OpFlags = 0; + EFI_PXE_BASE_CODE_UDP_PORT SrcPort; + EFI_PXE_BASE_CODE_UDP_PORT DestPort; + EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; + EFI_PXE_BASE_CODE_DHCPV6_PACKET *Discover; + UINTN DiscoverLen; + EFI_DHCP6_PACKET *Request; + UINTN RequestLen; + EFI_DHCP6_PACKET *Reply; + UINT8 *RequestOpt; + UINT8 *DiscoverOpt; + UINTN ReadSize; + UINT16 OpFlags; + UINT16 OpCode; + UINT16 OpLen; + EFI_STATUS Status; + EFI_DHCP6_PACKET *IndexOffer; + UINT8 *Option; + + PxeBc = &Private->PxeBc; + Request = Private->Dhcp6Request; + IndexOffer = &Private->OfferBuffer[Index].Dhcp6.Packet.Offer; + SrcPort = PXEBC_BS_DISCOVER_PORT; + DestPort = PXEBC_BS_DISCOVER_PORT; + OpFlags = 0; if (Request == NULL) { return EFI_DEVICE_ERROR; @@ -925,19 +929,20 @@ PxeBcRequestBootService ( // // Add Server ID Option. // - OpLen = NTOHS (((EFI_DHCP6_PACKET_OPTION *) Option)->OpLen); + OpLen = NTOHS (((EFI_DHCP6_PACKET_OPTION *)Option)->OpLen); CopyMem (DiscoverOpt, Option, OpLen + 4); DiscoverOpt += (OpLen + 4); DiscoverLen += (OpLen + 4); } while (RequestLen < Request->Length) { - OpCode = NTOHS (((EFI_DHCP6_PACKET_OPTION *) RequestOpt)->OpCode); - OpLen = NTOHS (((EFI_DHCP6_PACKET_OPTION *) RequestOpt)->OpLen); - if (OpCode != EFI_DHCP6_IA_TYPE_NA && - OpCode != EFI_DHCP6_IA_TYPE_TA && - OpCode != DHCP6_OPT_SERVER_ID - ) { + OpCode = NTOHS (((EFI_DHCP6_PACKET_OPTION *)RequestOpt)->OpCode); + OpLen = NTOHS (((EFI_DHCP6_PACKET_OPTION *)RequestOpt)->OpLen); + if ((OpCode != EFI_DHCP6_IA_TYPE_NA) && + (OpCode != EFI_DHCP6_IA_TYPE_TA) && + (OpCode != DHCP6_OPT_SERVER_ID) + ) + { // // Copy all the options except IA option and Server ID // @@ -945,6 +950,7 @@ PxeBcRequestBootService ( DiscoverOpt += (OpLen + 4); DiscoverLen += (OpLen + 4); } + RequestOpt += (OpLen + 4); RequestLen += (OpLen + 4); } @@ -959,7 +965,7 @@ PxeBcRequestBootService ( ); if (Option != NULL) { CalcElapsedTime (Private); - WriteUnaligned16 ((UINT16*)(Option + 4), HTONS((UINT16) Private->ElapsedTime)); + WriteUnaligned16 ((UINT16 *)(Option + 4), HTONS ((UINT16)Private->ElapsedTime)); } Status = PxeBc->UdpWrite ( @@ -973,7 +979,7 @@ PxeBcRequestBootService ( NULL, NULL, &DiscoverLen, - (VOID *) Discover + (VOID *)Discover ); if (EFI_ERROR (Status)) { @@ -984,8 +990,8 @@ PxeBcRequestBootService ( // Cache the right PXE reply packet here, set valid flag later. // Especially for PXE discover packet, store it into mode data here. // - Reply = &Private->ProxyOffer.Dhcp6.Packet.Offer; - ReadSize = (UINTN) Reply->Size; + Reply = &Private->ProxyOffer.Dhcp6.Packet.Offer; + ReadSize = (UINTN)Reply->Size; // // Start Udp6Read instance @@ -1005,7 +1011,7 @@ PxeBcRequestBootService ( NULL, NULL, &ReadSize, - (VOID *) &Reply->Dhcp6 + (VOID *)&Reply->Dhcp6 ); // // Stop Udp6Read instance @@ -1019,7 +1025,7 @@ PxeBcRequestBootService ( // // Update length // - Reply->Length = (UINT32) ReadSize; + Reply->Length = (UINT32)ReadSize; return EFI_SUCCESS; @@ -1031,7 +1037,6 @@ ON_ERROR: return Status; } - /** Retry to request bootfile name by the BINL offer. @@ -1054,8 +1059,10 @@ PxeBcRetryDhcp6Binl ( EFI_STATUS Status; ASSERT (Index < PXEBC_OFFER_MAX_NUM); - ASSERT (Private->OfferBuffer[Index].Dhcp6.OfferType == PxeOfferTypeDhcpBinl || - Private->OfferBuffer[Index].Dhcp6.OfferType == PxeOfferTypeProxyBinl); + ASSERT ( + Private->OfferBuffer[Index].Dhcp6.OfferType == PxeOfferTypeDhcpBinl || + Private->OfferBuffer[Index].Dhcp6.OfferType == PxeOfferTypeProxyBinl + ); Mode = Private->PxeBc.Mode; Private->IsDoDiscover = FALSE; @@ -1078,7 +1085,7 @@ PxeBcRetryDhcp6Binl ( Private, &Private->BootFileName, &Private->ServerIp.v6, - (CHAR8 *) (Offer->OptList[PXEBC_DHCP6_IDX_BOOT_FILE_URL]->Data), + (CHAR8 *)(Offer->OptList[PXEBC_DHCP6_IDX_BOOT_FILE_URL]->Data), NTOHS (Offer->OptList[PXEBC_DHCP6_IDX_BOOT_FILE_URL]->OpLen) ); if (EFI_ERROR (Status)) { @@ -1101,9 +1108,10 @@ PxeBcRetryDhcp6Binl ( return Status; } - if (Cache6->OfferType != PxeOfferTypeProxyPxe10 && - Cache6->OfferType != PxeOfferTypeProxyWfm11a && - Cache6->OptList[PXEBC_DHCP6_IDX_BOOT_FILE_URL] == NULL) { + if ((Cache6->OfferType != PxeOfferTypeProxyPxe10) && + (Cache6->OfferType != PxeOfferTypeProxyWfm11a) && + (Cache6->OptList[PXEBC_DHCP6_IDX_BOOT_FILE_URL] == NULL)) + { // // This BINL ack doesn't have discovery option set or multicast option set // or bootfile name specified. @@ -1121,7 +1129,6 @@ PxeBcRetryDhcp6Binl ( return EFI_SUCCESS; } - /** Cache all the received DHCPv6 offers, and set OfferIndex and OfferCount. @@ -1133,8 +1140,8 @@ PxeBcRetryDhcp6Binl ( **/ EFI_STATUS PxeBcCacheDhcp6Offer ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_DHCP6_PACKET *RcvdOffer + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_DHCP6_PACKET *RcvdOffer ) { PXEBC_DHCP6_PACKET_CACHE *Cache6; @@ -1179,8 +1186,9 @@ PxeBcCacheDhcp6Offer ( // Private->OfferIndex[OfferType][Private->OfferCount[OfferType]] = Private->OfferNum; Private->OfferCount[OfferType]++; - } else if ((OfferType == PxeOfferTypeProxyPxe10 || OfferType == PxeOfferTypeProxyWfm11a) && - Private->OfferCount[OfferType] < 1) { + } else if (((OfferType == PxeOfferTypeProxyPxe10) || (OfferType == PxeOfferTypeProxyWfm11a)) && + (Private->OfferCount[OfferType] < 1)) + { // // Only cache the first PXE10/WFM11a offer, and discard the others. // @@ -1202,7 +1210,6 @@ PxeBcCacheDhcp6Offer ( return EFI_SUCCESS; } - /** Select an DHCPv6 offer, and record SelectIndex and SelectProxyType. @@ -1211,12 +1218,12 @@ PxeBcCacheDhcp6Offer ( **/ VOID PxeBcSelectDhcp6Offer ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ) { - UINT32 Index; - UINT32 OfferIndex; - PXEBC_OFFER_TYPE OfferType; + UINT32 Index; + UINT32 OfferIndex; + PXEBC_OFFER_TYPE OfferType; Private->SelectIndex = 0; @@ -1229,43 +1236,40 @@ PxeBcSelectDhcp6Offer ( // 1. DhcpPxe10 offer // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpPxe10][0] + 1; - } else if (Private->OfferCount[PxeOfferTypeDhcpWfm11a] > 0) { // // 2. DhcpWfm11a offer // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpWfm11a][0] + 1; - - } else if (Private->OfferCount[PxeOfferTypeDhcpOnly] > 0 && - Private->OfferCount[PxeOfferTypeProxyPxe10] > 0) { + } else if ((Private->OfferCount[PxeOfferTypeDhcpOnly] > 0) && + (Private->OfferCount[PxeOfferTypeProxyPxe10] > 0)) + { // // 3. DhcpOnly offer and ProxyPxe10 offer. // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpOnly][0] + 1; Private->SelectProxyType = PxeOfferTypeProxyPxe10; - - } else if (Private->OfferCount[PxeOfferTypeDhcpOnly] > 0 && - Private->OfferCount[PxeOfferTypeProxyWfm11a] > 0) { + } else if ((Private->OfferCount[PxeOfferTypeDhcpOnly] > 0) && + (Private->OfferCount[PxeOfferTypeProxyWfm11a] > 0)) + { // // 4. DhcpOnly offer and ProxyWfm11a offer. // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpOnly][0] + 1; Private->SelectProxyType = PxeOfferTypeProxyWfm11a; - } else if (Private->OfferCount[PxeOfferTypeDhcpBinl] > 0) { // // 5. DhcpBinl offer. // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpBinl][0] + 1; - - } else if (Private->OfferCount[PxeOfferTypeDhcpOnly] > 0 && - Private->OfferCount[PxeOfferTypeProxyBinl] > 0) { + } else if ((Private->OfferCount[PxeOfferTypeDhcpOnly] > 0) && + (Private->OfferCount[PxeOfferTypeProxyBinl] > 0)) + { // // 6. DhcpOnly offer and ProxyBinl offer. // Private->SelectIndex = Private->OfferIndex[PxeOfferTypeDhcpOnly][0] + 1; Private->SelectProxyType = PxeOfferTypeProxyBinl; - } else { // // 7. DhcpOnly offer with bootfilename. @@ -1283,7 +1287,6 @@ PxeBcSelectDhcp6Offer ( // Select offer by received order. // for (Index = 0; Index < Private->OfferNum; Index++) { - OfferType = Private->OfferBuffer[Index].Dhcp6.OfferType; if (IS_PROXY_OFFER (OfferType)) { @@ -1294,8 +1297,9 @@ PxeBcSelectDhcp6Offer ( } if (!Private->IsProxyRecved && - OfferType == PxeOfferTypeDhcpOnly && - Private->OfferBuffer[Index].Dhcp6.OptList[PXEBC_DHCP6_IDX_BOOT_FILE_URL] == NULL) { + (OfferType == PxeOfferTypeDhcpOnly) && + (Private->OfferBuffer[Index].Dhcp6.OptList[PXEBC_DHCP6_IDX_BOOT_FILE_URL] == NULL)) + { // // Skip if DhcpOnly offer without any other proxy offers or bootfilename. // @@ -1308,7 +1312,6 @@ PxeBcSelectDhcp6Offer ( } } - /** Handle the DHCPv6 offer packet. @@ -1322,21 +1325,21 @@ PxeBcSelectDhcp6Offer ( **/ EFI_STATUS PxeBcHandleDhcp6Offer ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ) { - PXEBC_DHCP6_PACKET_CACHE *Cache6; - EFI_STATUS Status; - PXEBC_OFFER_TYPE OfferType; - UINT32 ProxyIndex; - UINT32 SelectIndex; - UINT32 Index; + PXEBC_DHCP6_PACKET_CACHE *Cache6; + EFI_STATUS Status; + PXEBC_OFFER_TYPE OfferType; + UINT32 ProxyIndex; + UINT32 SelectIndex; + UINT32 Index; ASSERT (Private->SelectIndex > 0); - SelectIndex = (UINT32) (Private->SelectIndex - 1); + SelectIndex = (UINT32)(Private->SelectIndex - 1); ASSERT (SelectIndex < PXEBC_OFFER_MAX_NUM); - Cache6 = &Private->OfferBuffer[SelectIndex].Dhcp6; - Status = EFI_SUCCESS; + Cache6 = &Private->OfferBuffer[SelectIndex].Dhcp6; + Status = EFI_SUCCESS; // // First try to cache DNS server address if DHCP6 offer provides. @@ -1346,6 +1349,7 @@ PxeBcHandleDhcp6Offer ( if (Private->DnsServer == NULL) { return EFI_OUT_OF_RESOURCES; } + CopyMem (Private->DnsServer, Cache6->OptList[PXEBC_DHCP6_IDX_DNS_SERVER]->Data, sizeof (EFI_IPv6_ADDRESS)); } @@ -1357,7 +1361,6 @@ PxeBcHandleDhcp6Offer ( Status = EFI_NO_RESPONSE; } } else if (Cache6->OfferType == PxeOfferTypeDhcpOnly) { - if (Private->IsProxyRecved) { // // DhcpOnly offer is selected, so need try to request bootfilename. @@ -1375,12 +1378,12 @@ PxeBcHandleDhcp6Offer ( // Try all the cached ProxyBinl offer one by one to request bootfilename. // for (Index = 0; Index < Private->OfferCount[Private->SelectProxyType]; Index++) { - ProxyIndex = Private->OfferIndex[Private->SelectProxyType][Index]; if (!EFI_ERROR (PxeBcRetryDhcp6Binl (Private, ProxyIndex))) { break; } } + if (Index == Private->OfferCount[Private->SelectProxyType]) { Status = EFI_NO_RESPONSE; } @@ -1397,7 +1400,6 @@ PxeBcHandleDhcp6Offer ( Status = EFI_NO_RESPONSE; for (Index = 0; Index < Private->OfferNum; Index++) { - OfferType = Private->OfferBuffer[Index].Dhcp6.OfferType; if (!IS_PROXY_OFFER (OfferType)) { @@ -1423,7 +1425,7 @@ PxeBcHandleDhcp6Offer ( } } - if (!EFI_ERROR (Status) && Private->SelectProxyType != PxeOfferTypeProxyBinl) { + if (!EFI_ERROR (Status) && (Private->SelectProxyType != PxeOfferTypeProxyBinl)) { // // Success to try to request by a ProxyPxe10 or ProxyWfm11a offer, copy and parse it. // @@ -1441,14 +1443,13 @@ PxeBcHandleDhcp6Offer ( // // All PXE boot information is ready by now. // - Status = PxeBcCopyDhcp6Ack (Private, &Private->DhcpAck.Dhcp6.Packet.Ack, TRUE); + Status = PxeBcCopyDhcp6Ack (Private, &Private->DhcpAck.Dhcp6.Packet.Ack, TRUE); Private->PxeBc.Mode->DhcpDiscoverValid = TRUE; } return Status; } - /** Unregister the address by Ip6Config protocol. @@ -1457,7 +1458,7 @@ PxeBcHandleDhcp6Offer ( **/ VOID PxeBcUnregisterIp6Address ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ) { if (Private->Ip6Policy != PXEBC_IP6_POLICY_MAX) { @@ -1485,18 +1486,18 @@ PxeBcUnregisterIp6Address ( **/ EFI_STATUS PxeBcCheckRouteTable ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINTN TimeOutInSecond, - OUT EFI_IPv6_ADDRESS *GatewayAddr + IN PXEBC_PRIVATE_DATA *Private, + IN UINTN TimeOutInSecond, + OUT EFI_IPv6_ADDRESS *GatewayAddr ) { - EFI_STATUS Status; - EFI_IP6_PROTOCOL *Ip6; - EFI_IP6_MODE_DATA Ip6ModeData; - UINTN Index; - EFI_EVENT TimeOutEvt; - UINTN RetryCount; - BOOLEAN GatewayIsFound; + EFI_STATUS Status; + EFI_IP6_PROTOCOL *Ip6; + EFI_IP6_MODE_DATA Ip6ModeData; + UINTN Index; + EFI_EVENT TimeOutEvt; + UINTN RetryCount; + BOOLEAN GatewayIsFound; ASSERT (GatewayAddr != NULL); ASSERT (Private != NULL); @@ -1527,23 +1528,28 @@ PxeBcCheckRouteTable ( if (Ip6ModeData.AddressList != NULL) { FreePool (Ip6ModeData.AddressList); } + if (Ip6ModeData.GroupTable != NULL) { FreePool (Ip6ModeData.GroupTable); } + if (Ip6ModeData.RouteTable != NULL) { FreePool (Ip6ModeData.RouteTable); } + if (Ip6ModeData.NeighborCache != NULL) { FreePool (Ip6ModeData.NeighborCache); } + if (Ip6ModeData.PrefixTable != NULL) { FreePool (Ip6ModeData.PrefixTable); } + if (Ip6ModeData.IcmpTypeList != NULL) { FreePool (Ip6ModeData.IcmpTypeList); } - if (GatewayIsFound || RetryCount == TimeOutInSecond) { + if (GatewayIsFound || (RetryCount == TimeOutInSecond)) { break; } @@ -1569,6 +1575,7 @@ PxeBcCheckRouteTable ( if (EFI_ERROR (Status)) { goto ON_EXIT; } + while (EFI_ERROR (gBS->CheckEvent (TimeOutEvt))) { Ip6->Poll (Ip6); } @@ -1600,29 +1607,29 @@ ON_EXIT: **/ EFI_STATUS PxeBcRegisterIp6Address ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_IPv6_ADDRESS *Address + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_IPv6_ADDRESS *Address ) { - EFI_IP6_PROTOCOL *Ip6; - EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; - EFI_IP6_CONFIG_POLICY Policy; - EFI_IP6_CONFIG_MANUAL_ADDRESS CfgAddr; - EFI_IPv6_ADDRESS GatewayAddr; - UINTN DataSize; - EFI_EVENT MappedEvt; - EFI_STATUS Status; - BOOLEAN NoGateway; - EFI_IPv6_ADDRESS *Ip6Addr; - UINTN Index; - - Status = EFI_SUCCESS; - MappedEvt = NULL; - Ip6Addr = NULL; - DataSize = sizeof (EFI_IP6_CONFIG_POLICY); - Ip6Cfg = Private->Ip6Cfg; - Ip6 = Private->Ip6; - NoGateway = FALSE; + EFI_IP6_PROTOCOL *Ip6; + EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; + EFI_IP6_CONFIG_POLICY Policy; + EFI_IP6_CONFIG_MANUAL_ADDRESS CfgAddr; + EFI_IPv6_ADDRESS GatewayAddr; + UINTN DataSize; + EFI_EVENT MappedEvt; + EFI_STATUS Status; + BOOLEAN NoGateway; + EFI_IPv6_ADDRESS *Ip6Addr; + UINTN Index; + + Status = EFI_SUCCESS; + MappedEvt = NULL; + Ip6Addr = NULL; + DataSize = sizeof (EFI_IP6_CONFIG_POLICY); + Ip6Cfg = Private->Ip6Cfg; + Ip6 = Private->Ip6; + NoGateway = FALSE; ZeroMem (&CfgAddr, sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS)); CopyMem (&CfgAddr.Address, Address, sizeof (EFI_IPv6_ADDRESS)); @@ -1648,7 +1655,7 @@ PxeBcRegisterIp6Address ( Status = Ip6Cfg->SetData ( Ip6Cfg, Ip6ConfigDataTypePolicy, - sizeof(EFI_IP6_CONFIG_POLICY), + sizeof (EFI_IP6_CONFIG_POLICY), &Policy ); if (EFI_ERROR (Status)) { @@ -1674,22 +1681,22 @@ PxeBcRegisterIp6Address ( } Private->IsAddressOk = FALSE; - Status = Ip6Cfg->RegisterDataNotify ( - Ip6Cfg, - Ip6ConfigDataTypeManualAddress, - MappedEvt - ); - if (EFI_ERROR(Status)) { + Status = Ip6Cfg->RegisterDataNotify ( + Ip6Cfg, + Ip6ConfigDataTypeManualAddress, + MappedEvt + ); + if (EFI_ERROR (Status)) { goto ON_EXIT; } Status = Ip6Cfg->SetData ( Ip6Cfg, Ip6ConfigDataTypeManualAddress, - sizeof(EFI_IP6_CONFIG_MANUAL_ADDRESS), + sizeof (EFI_IP6_CONFIG_MANUAL_ADDRESS), &CfgAddr ); - if (EFI_ERROR(Status) && Status != EFI_NOT_READY) { + if (EFI_ERROR (Status) && (Status != EFI_NOT_READY)) { goto ON_EXIT; } else if (Status == EFI_NOT_READY) { // @@ -1698,17 +1705,18 @@ PxeBcRegisterIp6Address ( while (!Private->IsAddressOk) { Ip6->Poll (Ip6); } + // // Check whether the IP6 address setting is successed. // DataSize = 0; - Status = Ip6Cfg->GetData ( - Ip6Cfg, - Ip6ConfigDataTypeManualAddress, - &DataSize, - NULL - ); - if (Status != EFI_BUFFER_TOO_SMALL || DataSize == 0) { + Status = Ip6Cfg->GetData ( + Ip6Cfg, + Ip6ConfigDataTypeManualAddress, + &DataSize, + NULL + ); + if ((Status != EFI_BUFFER_TOO_SMALL) || (DataSize == 0)) { Status = EFI_DEVICE_ERROR; goto ON_EXIT; } @@ -1717,11 +1725,12 @@ PxeBcRegisterIp6Address ( if (Ip6Addr == NULL) { return EFI_OUT_OF_RESOURCES; } + Status = Ip6Cfg->GetData ( Ip6Cfg, Ip6ConfigDataTypeManualAddress, &DataSize, - (VOID*) Ip6Addr + (VOID *)Ip6Addr ); if (EFI_ERROR (Status)) { Status = EFI_DEVICE_ERROR; @@ -1733,6 +1742,7 @@ PxeBcRegisterIp6Address ( break; } } + if (Index == DataSize / sizeof (EFI_IPv6_ADDRESS)) { Status = EFI_ABORTED; goto ON_EXIT; @@ -1763,9 +1773,11 @@ ON_EXIT: ); gBS->CloseEvent (MappedEvt); } + if (Ip6Addr != NULL) { FreePool (Ip6Addr); } + return Status; } @@ -1780,16 +1792,16 @@ ON_EXIT: **/ EFI_STATUS PxeBcSetIp6Policy ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ) { - EFI_IP6_CONFIG_POLICY Policy; - EFI_STATUS Status; - EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; - UINTN DataSize; + EFI_IP6_CONFIG_POLICY Policy; + EFI_STATUS Status; + EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; + UINTN DataSize; - Ip6Cfg = Private->Ip6Cfg; - DataSize = sizeof (EFI_IP6_CONFIG_POLICY); + Ip6Cfg = Private->Ip6Cfg; + DataSize = sizeof (EFI_IP6_CONFIG_POLICY); // // Get and store the current policy of IP6 driver. @@ -1809,7 +1821,7 @@ PxeBcSetIp6Policy ( Status = Ip6Cfg->SetData ( Ip6Cfg, Ip6ConfigDataTypePolicy, - sizeof(EFI_IP6_CONFIG_POLICY), + sizeof (EFI_IP6_CONFIG_POLICY), &Policy ); if (EFI_ERROR (Status)) { @@ -1834,11 +1846,11 @@ PxeBcSetIp6Policy ( **/ EFI_STATUS PxeBcSetIp6Address ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ) { - EFI_STATUS Status; - EFI_DHCP6_PROTOCOL *Dhcp6; + EFI_STATUS Status; + EFI_DHCP6_PROTOCOL *Dhcp6; Dhcp6 = Private->Dhcp6; @@ -1885,47 +1897,48 @@ PxeBcSetIp6Address ( EFI_STATUS EFIAPI PxeBcDhcp6CallBack ( - IN EFI_DHCP6_PROTOCOL *This, - IN VOID *Context, - IN EFI_DHCP6_STATE CurrentState, - IN EFI_DHCP6_EVENT Dhcp6Event, - IN EFI_DHCP6_PACKET *Packet, - OUT EFI_DHCP6_PACKET **NewPacket OPTIONAL + IN EFI_DHCP6_PROTOCOL *This, + IN VOID *Context, + IN EFI_DHCP6_STATE CurrentState, + IN EFI_DHCP6_EVENT Dhcp6Event, + IN EFI_DHCP6_PACKET *Packet, + OUT EFI_DHCP6_PACKET **NewPacket OPTIONAL ) { - PXEBC_PRIVATE_DATA *Private; - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *Callback; - EFI_DHCP6_PACKET *SelectAd; - EFI_STATUS Status; - BOOLEAN Received; + PXEBC_PRIVATE_DATA *Private; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *Callback; + EFI_DHCP6_PACKET *SelectAd; + EFI_STATUS Status; + BOOLEAN Received; if ((Dhcp6Event != Dhcp6RcvdAdvertise) && (Dhcp6Event != Dhcp6SelectAdvertise) && (Dhcp6Event != Dhcp6SendSolicit) && (Dhcp6Event != Dhcp6SendRequest) && - (Dhcp6Event != Dhcp6RcvdReply)) { + (Dhcp6Event != Dhcp6RcvdReply)) + { return EFI_SUCCESS; } ASSERT (Packet != NULL); - Private = (PXEBC_PRIVATE_DATA *) Context; - Mode = Private->PxeBc.Mode; - Callback = Private->PxeBcCallback; + Private = (PXEBC_PRIVATE_DATA *)Context; + Mode = Private->PxeBc.Mode; + Callback = Private->PxeBcCallback; // // Callback to user when any traffic occurred if has. // - if (Dhcp6Event != Dhcp6SelectAdvertise && Callback != NULL) { - Received = (BOOLEAN) (Dhcp6Event == Dhcp6RcvdAdvertise || Dhcp6Event == Dhcp6RcvdReply); - Status = Callback->Callback ( - Callback, - Private->Function, - Received, - Packet->Length, - (EFI_PXE_BASE_CODE_PACKET *) &Packet->Dhcp6 - ); + if ((Dhcp6Event != Dhcp6SelectAdvertise) && (Callback != NULL)) { + Received = (BOOLEAN)(Dhcp6Event == Dhcp6RcvdAdvertise || Dhcp6Event == Dhcp6RcvdReply); + Status = Callback->Callback ( + Callback, + Private->Function, + Received, + Packet->Length, + (EFI_PXE_BASE_CODE_PACKET *)&Packet->Dhcp6 + ); if (Status != EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE) { return EFI_ABORTED; } @@ -1934,108 +1947,114 @@ PxeBcDhcp6CallBack ( Status = EFI_SUCCESS; switch (Dhcp6Event) { + case Dhcp6SendSolicit: + if (Packet->Length > PXEBC_DHCP6_PACKET_MAX_SIZE) { + // + // If the to be sent packet exceeds the maximum length, abort the DHCP process. + // + Status = EFI_ABORTED; + break; + } - case Dhcp6SendSolicit: - if (Packet->Length > PXEBC_DHCP6_PACKET_MAX_SIZE) { // - // If the to be sent packet exceeds the maximum length, abort the DHCP process. + // Record the first Solicate msg time // - Status = EFI_ABORTED; - break; - } - - // - // Record the first Solicate msg time - // - if (Private->SolicitTimes == 0) { - CalcElapsedTime (Private); - Private->SolicitTimes++; - } - // - // Cache the dhcp discover packet to mode data directly. - // - CopyMem (&Mode->DhcpDiscover.Dhcpv4, &Packet->Dhcp6, Packet->Length); - break; + if (Private->SolicitTimes == 0) { + CalcElapsedTime (Private); + Private->SolicitTimes++; + } - case Dhcp6RcvdAdvertise: - Status = EFI_NOT_READY; - if (Packet->Length > PXEBC_DHCP6_PACKET_MAX_SIZE) { // - // Ignore the incoming packets which exceed the maximum length. + // Cache the dhcp discover packet to mode data directly. // + CopyMem (&Mode->DhcpDiscover.Dhcpv4, &Packet->Dhcp6, Packet->Length); break; - } - if (Private->OfferNum < PXEBC_OFFER_MAX_NUM) { + + case Dhcp6RcvdAdvertise: + Status = EFI_NOT_READY; + if (Packet->Length > PXEBC_DHCP6_PACKET_MAX_SIZE) { + // + // Ignore the incoming packets which exceed the maximum length. + // + break; + } + + if (Private->OfferNum < PXEBC_OFFER_MAX_NUM) { + // + // Cache the dhcp offers to OfferBuffer[] for select later, and record + // the OfferIndex and OfferCount. + // + PxeBcCacheDhcp6Offer (Private, Packet); + } + + break; + + case Dhcp6SendRequest: + if (Packet->Length > PXEBC_DHCP6_PACKET_MAX_SIZE) { + // + // If the to be sent packet exceeds the maximum length, abort the DHCP process. + // + Status = EFI_ABORTED; + break; + } + // - // Cache the dhcp offers to OfferBuffer[] for select later, and record - // the OfferIndex and OfferCount. + // Store the request packet as seed packet for discover. // - PxeBcCacheDhcp6Offer (Private, Packet); - } - break; + if (Private->Dhcp6Request != NULL) { + FreePool (Private->Dhcp6Request); + } + + Private->Dhcp6Request = AllocateZeroPool (Packet->Size); + if (Private->Dhcp6Request != NULL) { + CopyMem (Private->Dhcp6Request, Packet, Packet->Size); + } + + break; - case Dhcp6SendRequest: - if (Packet->Length > PXEBC_DHCP6_PACKET_MAX_SIZE) { + case Dhcp6SelectAdvertise: // - // If the to be sent packet exceeds the maximum length, abort the DHCP process. + // Select offer by the default policy or by order, and record the SelectIndex + // and SelectProxyType. // - Status = EFI_ABORTED; - break; - } + PxeBcSelectDhcp6Offer (Private); - // - // Store the request packet as seed packet for discover. - // - if (Private->Dhcp6Request != NULL) { - FreePool (Private->Dhcp6Request); - } - Private->Dhcp6Request = AllocateZeroPool (Packet->Size); - if (Private->Dhcp6Request != NULL) { - CopyMem (Private->Dhcp6Request, Packet, Packet->Size); - } - break; + if (Private->SelectIndex == 0) { + Status = EFI_ABORTED; + } else { + ASSERT (NewPacket != NULL); + SelectAd = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp6.Packet.Offer; + *NewPacket = AllocateZeroPool (SelectAd->Size); + ASSERT (*NewPacket != NULL); + if (*NewPacket == NULL) { + return EFI_ABORTED; + } - case Dhcp6SelectAdvertise: - // - // Select offer by the default policy or by order, and record the SelectIndex - // and SelectProxyType. - // - PxeBcSelectDhcp6Offer (Private); + CopyMem (*NewPacket, SelectAd, SelectAd->Size); + } - if (Private->SelectIndex == 0) { - Status = EFI_ABORTED; - } else { - ASSERT (NewPacket != NULL); - SelectAd = &Private->OfferBuffer[Private->SelectIndex - 1].Dhcp6.Packet.Offer; - *NewPacket = AllocateZeroPool (SelectAd->Size); - ASSERT (*NewPacket != NULL); - if (*NewPacket == NULL) { - return EFI_ABORTED; + break; + + case Dhcp6RcvdReply: + // + // Cache the dhcp ack to Private->Dhcp6Ack, but it's not the final ack in mode data + // without verification. + // + ASSERT (Private->SelectIndex != 0); + Status = PxeBcCopyDhcp6Ack (Private, Packet, FALSE); + if (EFI_ERROR (Status)) { + Status = EFI_ABORTED; } - CopyMem (*NewPacket, SelectAd, SelectAd->Size); - } - break; - case Dhcp6RcvdReply: - // - // Cache the dhcp ack to Private->Dhcp6Ack, but it's not the final ack in mode data - // without verification. - // - ASSERT (Private->SelectIndex != 0); - Status = PxeBcCopyDhcp6Ack (Private, Packet, FALSE); - if (EFI_ERROR (Status)) { - Status = EFI_ABORTED; - } - break; + break; - default: - ASSERT (0); + default: + ASSERT (0); } return Status; } - /** Build and send out the request packet for the bootfile, and parse the reply. @@ -2053,37 +2072,37 @@ PxeBcDhcp6CallBack ( **/ EFI_STATUS PxeBcDhcp6Discover ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINT16 Type, - IN UINT16 *Layer, - IN BOOLEAN UseBis, - IN EFI_IP_ADDRESS *DestIp + IN PXEBC_PRIVATE_DATA *Private, + IN UINT16 Type, + IN UINT16 *Layer, + IN BOOLEAN UseBis, + IN EFI_IP_ADDRESS *DestIp ) { - EFI_PXE_BASE_CODE_UDP_PORT SrcPort; - EFI_PXE_BASE_CODE_UDP_PORT DestPort; - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; - EFI_PXE_BASE_CODE_DHCPV6_PACKET *Discover; - UINTN DiscoverLen; - EFI_DHCP6_PACKET *Request; - UINTN RequestLen; - EFI_DHCP6_PACKET *Reply; - UINT8 *RequestOpt; - UINT8 *DiscoverOpt; - UINTN ReadSize; - UINT16 OpCode; - UINT16 OpLen; - UINT32 Xid; - EFI_STATUS Status; - - PxeBc = &Private->PxeBc; - Mode = PxeBc->Mode; - Request = Private->Dhcp6Request; - SrcPort = PXEBC_BS_DISCOVER_PORT; - DestPort = PXEBC_BS_DISCOVER_PORT; - - if (!UseBis && Layer != NULL) { + EFI_PXE_BASE_CODE_UDP_PORT SrcPort; + EFI_PXE_BASE_CODE_UDP_PORT DestPort; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_PXE_BASE_CODE_PROTOCOL *PxeBc; + EFI_PXE_BASE_CODE_DHCPV6_PACKET *Discover; + UINTN DiscoverLen; + EFI_DHCP6_PACKET *Request; + UINTN RequestLen; + EFI_DHCP6_PACKET *Reply; + UINT8 *RequestOpt; + UINT8 *DiscoverOpt; + UINTN ReadSize; + UINT16 OpCode; + UINT16 OpLen; + UINT32 Xid; + EFI_STATUS Status; + + PxeBc = &Private->PxeBc; + Mode = PxeBc->Mode; + Request = Private->Dhcp6Request; + SrcPort = PXEBC_BS_DISCOVER_PORT; + DestPort = PXEBC_BS_DISCOVER_PORT; + + if (!UseBis && (Layer != NULL)) { *Layer &= EFI_PXE_BASE_CODE_BOOT_LAYER_MASK; } @@ -2108,10 +2127,11 @@ PxeBcDhcp6Discover ( RequestLen = DiscoverLen; while (RequestLen < Request->Length) { - OpCode = NTOHS (((EFI_DHCP6_PACKET_OPTION *) RequestOpt)->OpCode); - OpLen = NTOHS (((EFI_DHCP6_PACKET_OPTION *) RequestOpt)->OpLen); - if (OpCode != EFI_DHCP6_IA_TYPE_NA && - OpCode != EFI_DHCP6_IA_TYPE_TA) { + OpCode = NTOHS (((EFI_DHCP6_PACKET_OPTION *)RequestOpt)->OpCode); + OpLen = NTOHS (((EFI_DHCP6_PACKET_OPTION *)RequestOpt)->OpLen); + if ((OpCode != EFI_DHCP6_IA_TYPE_NA) && + (OpCode != EFI_DHCP6_IA_TYPE_TA)) + { // // Copy all the options except IA option. // @@ -2119,6 +2139,7 @@ PxeBcDhcp6Discover ( DiscoverOpt += (OpLen + 4); DiscoverLen += (OpLen + 4); } + RequestOpt += (OpLen + 4); RequestLen += (OpLen + 4); } @@ -2134,7 +2155,7 @@ PxeBcDhcp6Discover ( NULL, NULL, &DiscoverLen, - (VOID *) Discover + (VOID *)Discover ); if (EFI_ERROR (Status)) { goto ON_ERROR; @@ -2150,7 +2171,8 @@ PxeBcDhcp6Discover ( } else { Reply = &Private->ProxyOffer.Dhcp6.Packet.Offer; } - ReadSize = (UINTN) Reply->Size; + + ReadSize = (UINTN)Reply->Size; // // Start Udp6Read instance @@ -2170,7 +2192,7 @@ PxeBcDhcp6Discover ( NULL, NULL, &ReadSize, - (VOID *) &Reply->Dhcp6 + (VOID *)&Reply->Dhcp6 ); // // Stop Udp6Read instance @@ -2190,7 +2212,6 @@ ON_ERROR: return Status; } - /** Start the DHCPv6 S.A.R.R. process to acquire the IPv6 address and other PXE boot information. @@ -2203,35 +2224,35 @@ ON_ERROR: **/ EFI_STATUS PxeBcDhcp6Sarr ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_DHCP6_PROTOCOL *Dhcp6 + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_DHCP6_PROTOCOL *Dhcp6 ) { - EFI_PXE_BASE_CODE_MODE *PxeMode; - EFI_DHCP6_CONFIG_DATA Config; - EFI_DHCP6_MODE_DATA Mode; - EFI_DHCP6_RETRANSMISSION *Retransmit; - EFI_DHCP6_PACKET_OPTION *OptList[PXEBC_DHCP6_OPTION_MAX_NUM]; - UINT8 Buffer[PXEBC_DHCP6_OPTION_MAX_SIZE]; - UINT32 OptCount; - EFI_STATUS Status; - EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; - EFI_STATUS TimerStatus; - EFI_EVENT Timer; - UINT64 GetMappingTimeOut; - UINTN DataSize; - EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits; - - Status = EFI_SUCCESS; - PxeMode = Private->PxeBc.Mode; - Ip6Cfg = Private->Ip6Cfg; - Timer = NULL; + EFI_PXE_BASE_CODE_MODE *PxeMode; + EFI_DHCP6_CONFIG_DATA Config; + EFI_DHCP6_MODE_DATA Mode; + EFI_DHCP6_RETRANSMISSION *Retransmit; + EFI_DHCP6_PACKET_OPTION *OptList[PXEBC_DHCP6_OPTION_MAX_NUM]; + UINT8 Buffer[PXEBC_DHCP6_OPTION_MAX_SIZE]; + UINT32 OptCount; + EFI_STATUS Status; + EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; + EFI_STATUS TimerStatus; + EFI_EVENT Timer; + UINT64 GetMappingTimeOut; + UINTN DataSize; + EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits; + + Status = EFI_SUCCESS; + PxeMode = Private->PxeBc.Mode; + Ip6Cfg = Private->Ip6Cfg; + Timer = NULL; // // Build option list for the request packet. // - OptCount = PxeBcBuildDhcp6Options (Private, OptList, Buffer); - ASSERT (OptCount> 0); + OptCount = PxeBcBuildDhcp6Options (Private, OptList, Buffer); + ASSERT (OptCount > 0); Retransmit = AllocateZeroPool (sizeof (EFI_DHCP6_RETRANSMISSION)); if (Retransmit == NULL) { @@ -2274,7 +2295,6 @@ PxeBcDhcp6Sarr ( ZeroMem (Private->OfferCount, sizeof (Private->OfferCount)); ZeroMem (Private->OfferIndex, sizeof (Private->OfferIndex)); - // // Start DHCPv6 S.A.R.R. process to acquire IPv6 address. // @@ -2290,12 +2310,12 @@ PxeBcDhcp6Sarr ( // Get Duplicate Address Detection Transmits count. // DataSize = sizeof (EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS); - Status = Ip6Cfg->GetData ( - Ip6Cfg, - Ip6ConfigDataTypeDupAddrDetectTransmits, - &DataSize, - &DadXmits - ); + Status = Ip6Cfg->GetData ( + Ip6Cfg, + Ip6ConfigDataTypeDupAddrDetectTransmits, + &DataSize, + &DadXmits + ); if (EFI_ERROR (Status)) { Dhcp6->Configure (Dhcp6, NULL); return Status; @@ -2308,7 +2328,7 @@ PxeBcDhcp6Sarr ( } GetMappingTimeOut = TICKS_PER_SECOND * DadXmits.DupAddrDetectTransmits + PXEBC_DAD_ADDITIONAL_DELAY; - Status = gBS->SetTimer (Timer, TimerRelative, GetMappingTimeOut); + Status = gBS->SetTimer (Timer, TimerRelative, GetMappingTimeOut); if (EFI_ERROR (Status)) { gBS->CloseEvent (Timer); Dhcp6->Configure (Dhcp6, NULL); @@ -2316,7 +2336,6 @@ PxeBcDhcp6Sarr ( } do { - TimerStatus = gBS->CheckEvent (Timer); if (!EFI_ERROR (TimerStatus)) { Status = Dhcp6->Start (Dhcp6); @@ -2325,10 +2344,12 @@ PxeBcDhcp6Sarr ( gBS->CloseEvent (Timer); } + if (EFI_ERROR (Status)) { if (Status == EFI_ICMP_ERROR) { PxeMode->IcmpErrorReceived = TRUE; } + Dhcp6->Configure (Dhcp6, NULL); return Status; } @@ -2354,9 +2375,11 @@ PxeBcDhcp6Sarr ( if (Mode.ClientId != NULL) { FreePool (Mode.ClientId); } + if (Mode.Ia != NULL) { FreePool (Mode.Ia); } + // // Check the selected offer whether BINL retry is needed. // diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.h b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.h index ae4be775e8..c86f6d391b 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.h +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.h @@ -10,25 +10,24 @@ #ifndef __EFI_PXEBC_DHCP6_H__ #define __EFI_PXEBC_DHCP6_H__ -#define PXEBC_DHCP6_OPTION_MAX_NUM 16 -#define PXEBC_DHCP6_OPTION_MAX_SIZE 312 -#define PXEBC_DHCP6_PACKET_MAX_SIZE (sizeof (EFI_PXE_BASE_CODE_PACKET)) -#define PXEBC_IP6_POLICY_MAX 0xff -#define PXEBC_IP6_ROUTE_TABLE_TIMEOUT 10 +#define PXEBC_DHCP6_OPTION_MAX_NUM 16 +#define PXEBC_DHCP6_OPTION_MAX_SIZE 312 +#define PXEBC_DHCP6_PACKET_MAX_SIZE (sizeof (EFI_PXE_BASE_CODE_PACKET)) +#define PXEBC_IP6_POLICY_MAX 0xff +#define PXEBC_IP6_ROUTE_TABLE_TIMEOUT 10 -#define PXEBC_DHCP6_S_PORT 547 -#define PXEBC_DHCP6_C_PORT 546 +#define PXEBC_DHCP6_S_PORT 547 +#define PXEBC_DHCP6_C_PORT 546 -#define PXEBC_DHCP6_ENTERPRISE_NUM 343 // TODO: IANA TBD: temporarily using Intel's -#define PXEBC_DHCP6_MAX_BOOT_FILE_SIZE 65535 // It's a limitation of bit length, 65535*512 bytes. +#define PXEBC_DHCP6_ENTERPRISE_NUM 343 // TODO: IANA TBD: temporarily using Intel's +#define PXEBC_DHCP6_MAX_BOOT_FILE_SIZE 65535 // It's a limitation of bit length, 65535*512 bytes. - -#define PXEBC_DHCP6_IDX_IA_NA 0 -#define PXEBC_DHCP6_IDX_BOOT_FILE_URL 1 -#define PXEBC_DHCP6_IDX_BOOT_FILE_PARAM 2 -#define PXEBC_DHCP6_IDX_VENDOR_CLASS 3 -#define PXEBC_DHCP6_IDX_DNS_SERVER 4 -#define PXEBC_DHCP6_IDX_MAX 5 +#define PXEBC_DHCP6_IDX_IA_NA 0 +#define PXEBC_DHCP6_IDX_BOOT_FILE_URL 1 +#define PXEBC_DHCP6_IDX_BOOT_FILE_PARAM 2 +#define PXEBC_DHCP6_IDX_VENDOR_CLASS 3 +#define PXEBC_DHCP6_IDX_DNS_SERVER 4 +#define PXEBC_DHCP6_IDX_MAX 5 #define PXEBC_DHCP6_BOOT_FILE_URL_PREFIX "tftp://" #define PXEBC_TFTP_URL_SEPARATOR '/' @@ -47,71 +46,67 @@ (Type) == PxeOfferTypeProxyPxe10 || \ (Type) == PxeOfferTypeProxyWfm11a) - #pragma pack(1) typedef struct { - UINT16 OpCode[256]; + UINT16 OpCode[256]; } PXEBC_DHCP6_OPTION_ORO; typedef struct { - UINT8 Type; - UINT8 MajorVer; - UINT8 MinorVer; + UINT8 Type; + UINT8 MajorVer; + UINT8 MinorVer; } PXEBC_DHCP6_OPTION_UNDI; typedef struct { - UINT16 Type; + UINT16 Type; } PXEBC_DHCP6_OPTION_ARCH; typedef struct { - UINT8 ClassIdentifier[10]; - UINT8 ArchitecturePrefix[5]; - UINT8 ArchitectureType[5]; - UINT8 Lit3[1]; - UINT8 InterfaceName[4]; - UINT8 Lit4[1]; - UINT8 UndiMajor[3]; - UINT8 UndiMinor[3]; + UINT8 ClassIdentifier[10]; + UINT8 ArchitecturePrefix[5]; + UINT8 ArchitectureType[5]; + UINT8 Lit3[1]; + UINT8 InterfaceName[4]; + UINT8 Lit4[1]; + UINT8 UndiMajor[3]; + UINT8 UndiMinor[3]; } PXEBC_CLASS_ID; typedef struct { - UINT32 Vendor; - UINT16 ClassLen; - PXEBC_CLASS_ID ClassId; + UINT32 Vendor; + UINT16 ClassLen; + PXEBC_CLASS_ID ClassId; } PXEBC_DHCP6_OPTION_VENDOR_CLASS; #pragma pack() typedef union { - PXEBC_DHCP6_OPTION_ORO *Oro; - PXEBC_DHCP6_OPTION_UNDI *Undi; - PXEBC_DHCP6_OPTION_ARCH *Arch; - PXEBC_DHCP6_OPTION_VENDOR_CLASS *VendorClass; + PXEBC_DHCP6_OPTION_ORO *Oro; + PXEBC_DHCP6_OPTION_UNDI *Undi; + PXEBC_DHCP6_OPTION_ARCH *Arch; + PXEBC_DHCP6_OPTION_VENDOR_CLASS *VendorClass; } PXEBC_DHCP6_OPTION_ENTRY; typedef struct { - LIST_ENTRY Link; - EFI_DHCP6_PACKET_OPTION *Option; - UINT8 Precedence; + LIST_ENTRY Link; + EFI_DHCP6_PACKET_OPTION *Option; + UINT8 Precedence; } PXEBC_DHCP6_OPTION_NODE; #define PXEBC_CACHED_DHCP6_PACKET_MAX_SIZE (OFFSET_OF (EFI_DHCP6_PACKET, Dhcp6) + PXEBC_DHCP6_PACKET_MAX_SIZE) typedef union { - EFI_DHCP6_PACKET Offer; - EFI_DHCP6_PACKET Ack; - UINT8 Buffer[PXEBC_CACHED_DHCP6_PACKET_MAX_SIZE]; + EFI_DHCP6_PACKET Offer; + EFI_DHCP6_PACKET Ack; + UINT8 Buffer[PXEBC_CACHED_DHCP6_PACKET_MAX_SIZE]; } PXEBC_DHCP6_PACKET; typedef struct { - PXEBC_DHCP6_PACKET Packet; - PXEBC_OFFER_TYPE OfferType; - EFI_DHCP6_PACKET_OPTION *OptList[PXEBC_DHCP6_IDX_MAX]; + PXEBC_DHCP6_PACKET Packet; + PXEBC_OFFER_TYPE OfferType; + EFI_DHCP6_PACKET_OPTION *OptList[PXEBC_DHCP6_IDX_MAX]; } PXEBC_DHCP6_PACKET_CACHE; - - - /** Parse the Boot File URL option. @@ -128,14 +123,13 @@ typedef struct { **/ EFI_STATUS PxeBcExtractBootFileUrl ( - IN PXEBC_PRIVATE_DATA *Private, - OUT UINT8 **FileName, - IN OUT EFI_IPv6_ADDRESS *SrvAddr, - IN CHAR8 *BootFile, - IN UINT16 Length + IN PXEBC_PRIVATE_DATA *Private, + OUT UINT8 **FileName, + IN OUT EFI_IPv6_ADDRESS *SrvAddr, + IN CHAR8 *BootFile, + IN UINT16 Length ); - /** Parse the Boot File Parameter option. @@ -148,11 +142,10 @@ PxeBcExtractBootFileUrl ( **/ EFI_STATUS PxeBcExtractBootFileParam ( - IN CHAR8 *BootFilePara, - OUT UINT16 *BootFileSize + IN CHAR8 *BootFilePara, + OUT UINT16 *BootFileSize ); - /** Parse the cached DHCPv6 packet, including all the options. @@ -167,7 +160,6 @@ PxeBcParseDhcp6Packet ( IN PXEBC_DHCP6_PACKET_CACHE *Cache6 ); - /** Register the ready address by Ip6Config protocol. @@ -180,11 +172,10 @@ PxeBcParseDhcp6Packet ( **/ EFI_STATUS PxeBcRegisterIp6Address ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_IPv6_ADDRESS *Address + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_IPv6_ADDRESS *Address ); - /** Unregister the address by Ip6Config protocol. @@ -193,10 +184,9 @@ PxeBcRegisterIp6Address ( **/ VOID PxeBcUnregisterIp6Address ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ); - /** Build and send out the request packet for the bootfile, and parse the reply. @@ -214,11 +204,11 @@ PxeBcUnregisterIp6Address ( **/ EFI_STATUS PxeBcDhcp6Discover ( - IN PXEBC_PRIVATE_DATA *Private, - IN UINT16 Type, - IN UINT16 *Layer, - IN BOOLEAN UseBis, - IN EFI_IP_ADDRESS *DestIp + IN PXEBC_PRIVATE_DATA *Private, + IN UINT16 Type, + IN UINT16 *Layer, + IN BOOLEAN UseBis, + IN EFI_IP_ADDRESS *DestIp ); /** @@ -232,7 +222,7 @@ PxeBcDhcp6Discover ( **/ EFI_STATUS PxeBcSetIp6Policy ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ); /** @@ -246,7 +236,7 @@ PxeBcSetIp6Policy ( **/ EFI_STATUS PxeBcSetIp6Address ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ); /** @@ -261,9 +251,8 @@ PxeBcSetIp6Address ( **/ EFI_STATUS PxeBcDhcp6Sarr ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_DHCP6_PROTOCOL *Dhcp6 + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_DHCP6_PROTOCOL *Dhcp6 ); #endif - diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c index 0e2675be3c..d84aca7e85 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.c @@ -10,8 +10,7 @@ #include "PxeBcImpl.h" - -EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp4DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp4DriverBinding = { PxeBcIp4DriverBindingSupported, PxeBcIp4DriverBindingStart, PxeBcIp4DriverBindingStop, @@ -20,7 +19,7 @@ EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp4DriverBinding = { NULL }; -EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp6DriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp6DriverBinding = { PxeBcIp6DriverBindingSupported, PxeBcIp6DriverBindingStart, PxeBcIp6DriverBindingStop, @@ -39,10 +38,10 @@ EFI_DRIVER_BINDING_PROTOCOL gPxeBcIp6DriverBinding = { **/ EFI_HANDLE PxeBcGetNicByIp4Children ( - IN EFI_HANDLE ControllerHandle + IN EFI_HANDLE ControllerHandle ) { - EFI_HANDLE NicHandle; + EFI_HANDLE NicHandle; NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiArpProtocolGuid); if (NicHandle == NULL) { @@ -64,7 +63,6 @@ PxeBcGetNicByIp4Children ( return NicHandle; } - /** Get the Nic handle using any child handle in the IPv6 stack. @@ -75,10 +73,10 @@ PxeBcGetNicByIp4Children ( **/ EFI_HANDLE PxeBcGetNicByIp6Children ( - IN EFI_HANDLE ControllerHandle + IN EFI_HANDLE ControllerHandle ) { - EFI_HANDLE NicHandle; + EFI_HANDLE NicHandle; NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiIp6ProtocolGuid); if (NicHandle == NULL) { @@ -97,7 +95,6 @@ PxeBcGetNicByIp6Children ( return NicHandle; } - /** Destroy the opened instances based on IPv4. @@ -111,7 +108,7 @@ PxeBcDestroyIp4Children ( IN PXEBC_PRIVATE_DATA *Private ) { - ASSERT(Private != NULL); + ASSERT (Private != NULL); if (Private->ArpChild != NULL) { // @@ -175,11 +172,11 @@ PxeBcDestroyIp4Children ( // Close Udp4 for PxeBc->UdpRead and destroy the instance. // gBS->CloseProtocol ( - Private->Udp4ReadChild, - &gEfiUdp4ProtocolGuid, - This->DriverBindingHandle, - Private->Controller - ); + Private->Udp4ReadChild, + &gEfiUdp4ProtocolGuid, + This->DriverBindingHandle, + Private->Controller + ); NetLibDestroyServiceChild ( Private->Controller, @@ -194,11 +191,11 @@ PxeBcDestroyIp4Children ( // Close Mtftp4 for PxeBc->Mtftp4 and destroy the instance. // gBS->CloseProtocol ( - Private->Mtftp4Child, - &gEfiMtftp4ProtocolGuid, - This->DriverBindingHandle, - Private->Controller - ); + Private->Mtftp4Child, + &gEfiMtftp4ProtocolGuid, + This->DriverBindingHandle, + Private->Controller + ); NetLibDestroyServiceChild ( Private->Controller, @@ -213,11 +210,11 @@ PxeBcDestroyIp4Children ( // Close Dhcp4 for PxeBc->Dhcp4 and destroy the instance. // gBS->CloseProtocol ( - Private->Dhcp4Child, - &gEfiDhcp4ProtocolGuid, - This->DriverBindingHandle, - Private->Controller - ); + Private->Dhcp4Child, + &gEfiDhcp4ProtocolGuid, + This->DriverBindingHandle, + Private->Controller + ); NetLibDestroyServiceChild ( Private->Controller, @@ -267,19 +264,19 @@ PxeBcDestroyIp4Children ( Private->Snp ); } + FreePool (Private->Ip4Nic); } - Private->ArpChild = NULL; - Private->Ip4Child = NULL; - Private->Udp4WriteChild = NULL; - Private->Udp4ReadChild = NULL; - Private->Mtftp4Child = NULL; - Private->Dhcp4Child = NULL; - Private->Ip4Nic = NULL; + Private->ArpChild = NULL; + Private->Ip4Child = NULL; + Private->Udp4WriteChild = NULL; + Private->Udp4ReadChild = NULL; + Private->Mtftp4Child = NULL; + Private->Dhcp4Child = NULL; + Private->Ip4Nic = NULL; } - /** Destroy the opened instances based on IPv6. @@ -293,18 +290,18 @@ PxeBcDestroyIp6Children ( IN PXEBC_PRIVATE_DATA *Private ) { - ASSERT(Private != NULL); + ASSERT (Private != NULL); if (Private->Ip6Child != NULL) { // // Close Ip6 for Ip6->Ip6Config and destroy the instance. // gBS->CloseProtocol ( - Private->Ip6Child, - &gEfiIp6ProtocolGuid, - This->DriverBindingHandle, - Private->Controller - ); + Private->Ip6Child, + &gEfiIp6ProtocolGuid, + This->DriverBindingHandle, + Private->Controller + ); NetLibDestroyServiceChild ( Private->Controller, @@ -337,11 +334,11 @@ PxeBcDestroyIp6Children ( // Close Udp6 for PxeBc->UdpRead and destroy the instance. // gBS->CloseProtocol ( - Private->Udp6ReadChild, - &gEfiUdp6ProtocolGuid, - This->DriverBindingHandle, - Private->Controller - ); + Private->Udp6ReadChild, + &gEfiUdp6ProtocolGuid, + This->DriverBindingHandle, + Private->Controller + ); NetLibDestroyServiceChild ( Private->Controller, This->DriverBindingHandle, @@ -355,11 +352,11 @@ PxeBcDestroyIp6Children ( // Close Mtftp6 for PxeBc->Mtftp and destroy the instance. // gBS->CloseProtocol ( - Private->Mtftp6Child, - &gEfiMtftp6ProtocolGuid, - This->DriverBindingHandle, - Private->Controller - ); + Private->Mtftp6Child, + &gEfiMtftp6ProtocolGuid, + This->DriverBindingHandle, + Private->Controller + ); NetLibDestroyServiceChild ( Private->Controller, @@ -374,11 +371,11 @@ PxeBcDestroyIp6Children ( // Close Dhcp6 for PxeBc->Dhcp and destroy the instance. // gBS->CloseProtocol ( - Private->Dhcp6Child, - &gEfiDhcp6ProtocolGuid, - This->DriverBindingHandle, - Private->Controller - ); + Private->Dhcp6Child, + &gEfiDhcp6ProtocolGuid, + This->DriverBindingHandle, + Private->Controller + ); NetLibDestroyServiceChild ( Private->Controller, @@ -427,6 +424,7 @@ PxeBcDestroyIp6Children ( Private->Snp ); } + FreePool (Private->Ip6Nic); } @@ -452,20 +450,20 @@ PxeBcDestroyIp6Children ( **/ EFI_STATUS PxeBcCheckIpv6Support ( - IN EFI_HANDLE ControllerHandle, - IN PXEBC_PRIVATE_DATA *Private, - OUT BOOLEAN *Ipv6Support + IN EFI_HANDLE ControllerHandle, + IN PXEBC_PRIVATE_DATA *Private, + OUT BOOLEAN *Ipv6Support ) { - EFI_HANDLE Handle; - EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; - EFI_STATUS Status; - EFI_GUID *InfoTypesBuffer; - UINTN InfoTypeBufferCount; - UINTN TypeIndex; - BOOLEAN Supported; - VOID *InfoBlock; - UINTN InfoBlockSize; + EFI_HANDLE Handle; + EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; + EFI_STATUS Status; + EFI_GUID *InfoTypesBuffer; + UINTN InfoTypeBufferCount; + UINTN TypeIndex; + BOOLEAN Supported; + VOID *InfoBlock; + UINTN InfoBlockSize; ASSERT (Private != NULL && Ipv6Support != NULL); @@ -493,16 +491,16 @@ PxeBcCheckIpv6Support ( Status = gBS->HandleProtocol ( Handle, &gEfiAdapterInformationProtocolGuid, - (VOID *) &Aip + (VOID *)&Aip ); - if (EFI_ERROR (Status) || Aip == NULL) { + if (EFI_ERROR (Status) || (Aip == NULL)) { return EFI_NOT_FOUND; } InfoTypesBuffer = NULL; InfoTypeBufferCount = 0; - Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); - if (EFI_ERROR (Status) || InfoTypesBuffer == NULL) { + Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount); + if (EFI_ERROR (Status) || (InfoTypesBuffer == NULL)) { FreePool (InfoTypesBuffer); return EFI_NOT_FOUND; } @@ -525,16 +523,15 @@ PxeBcCheckIpv6Support ( // InfoBlock = NULL; InfoBlockSize = 0; - Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); - if (EFI_ERROR (Status) || InfoBlock == NULL) { + Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize); + if (EFI_ERROR (Status) || (InfoBlock == NULL)) { FreePool (InfoBlock); return EFI_NOT_FOUND; } - *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *) InfoBlock)->Ipv6Support; + *Ipv6Support = ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *)InfoBlock)->Ipv6Support; FreePool (InfoBlock); return EFI_SUCCESS; - } /** @@ -555,14 +552,14 @@ PxeBcCreateIp4Children ( IN PXEBC_PRIVATE_DATA *Private ) { - EFI_STATUS Status; - IPv4_DEVICE_PATH Ip4Node; - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_UDP4_CONFIG_DATA *Udp4CfgData; - EFI_IP4_CONFIG_DATA *Ip4CfgData; - EFI_IP4_MODE_DATA Ip4ModeData; - PXEBC_PRIVATE_PROTOCOL *Id; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + EFI_STATUS Status; + IPv4_DEVICE_PATH Ip4Node; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_UDP4_CONFIG_DATA *Udp4CfgData; + EFI_IP4_CONFIG_DATA *Ip4CfgData; + EFI_IP4_MODE_DATA Ip4ModeData; + PXEBC_PRIVATE_PROTOCOL *Id; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; if (Private->Ip4Nic != NULL) { // @@ -587,7 +584,7 @@ PxeBcCreateIp4Children ( Status = gBS->OpenProtocol ( Private->Dhcp4Child, &gEfiDhcp4ProtocolGuid, - (VOID **) &Private->Dhcp4, + (VOID **)&Private->Dhcp4, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -612,7 +609,7 @@ PxeBcCreateIp4Children ( Status = gBS->OpenProtocol ( Private->Mtftp4Child, &gEfiMtftp4ProtocolGuid, - (VOID **) &Private->Mtftp4, + (VOID **)&Private->Mtftp4, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -637,7 +634,7 @@ PxeBcCreateIp4Children ( Status = gBS->OpenProtocol ( Private->Udp4ReadChild, &gEfiUdp4ProtocolGuid, - (VOID **) &Private->Udp4Read, + (VOID **)&Private->Udp4Read, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -662,7 +659,7 @@ PxeBcCreateIp4Children ( Status = gBS->OpenProtocol ( Private->Udp4WriteChild, &gEfiUdp4ProtocolGuid, - (VOID **) &Private->Udp4Write, + (VOID **)&Private->Udp4Write, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -687,7 +684,7 @@ PxeBcCreateIp4Children ( Status = gBS->OpenProtocol ( Private->ArpChild, &gEfiArpProtocolGuid, - (VOID **) &Private->Arp, + (VOID **)&Private->Arp, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -712,7 +709,7 @@ PxeBcCreateIp4Children ( Status = gBS->OpenProtocol ( Private->Ip4Child, &gEfiIp4ProtocolGuid, - (VOID **) &Private->Ip4, + (VOID **)&Private->Ip4, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -739,13 +736,13 @@ PxeBcCreateIp4Children ( Private->Ip4Nic->Private = Private; Private->Ip4Nic->Signature = PXEBC_VIRTUAL_NIC_SIGNATURE; - // + // // Locate Ip4->Ip4Config2 and store it for set IPv4 Policy. // Status = gBS->HandleProtocol ( ControllerHandle, &gEfiIp4Config2ProtocolGuid, - (VOID **) &Private->Ip4Config2 + (VOID **)&Private->Ip4Config2 ); if (EFI_ERROR (Status)) { goto ON_ERROR; @@ -814,7 +811,7 @@ PxeBcCreateIp4Children ( Status = gBS->OpenProtocol ( Private->Ip4Nic->Controller, &gEfiSimpleNetworkProtocolGuid, - (VOID **) &Snp, + (VOID **)&Snp, This->DriverBindingHandle, Private->Ip4Nic->Controller, EFI_OPEN_PROTOCOL_BY_DRIVER|EFI_OPEN_PROTOCOL_EXCLUSIVE @@ -831,7 +828,7 @@ PxeBcCreateIp4Children ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, This->DriverBindingHandle, Private->Ip4Nic->Controller, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -843,9 +840,9 @@ PxeBcCreateIp4Children ( // // Set default configure data for Udp4Read and Ip4 instance. // - Mode = Private->PxeBc.Mode; - Udp4CfgData = &Private->Udp4CfgData; - Ip4CfgData = &Private->Ip4CfgData; + Mode = Private->PxeBc.Mode; + Udp4CfgData = &Private->Udp4CfgData; + Ip4CfgData = &Private->Ip4CfgData; Udp4CfgData->AcceptBroadcast = FALSE; Udp4CfgData->AcceptAnyPort = TRUE; @@ -855,12 +852,12 @@ PxeBcCreateIp4Children ( Udp4CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; Udp4CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; - Ip4CfgData->AcceptIcmpErrors = TRUE; - Ip4CfgData->DefaultProtocol = EFI_IP_PROTO_ICMP; - Ip4CfgData->TypeOfService = Mode->ToS; - Ip4CfgData->TimeToLive = Mode->TTL; - Ip4CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; - Ip4CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; + Ip4CfgData->AcceptIcmpErrors = TRUE; + Ip4CfgData->DefaultProtocol = EFI_IP_PROTO_ICMP; + Ip4CfgData->TypeOfService = Mode->ToS; + Ip4CfgData->TimeToLive = Mode->TTL; + Ip4CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; + Ip4CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; return EFI_SUCCESS; @@ -869,7 +866,6 @@ ON_ERROR: return Status; } - /** Create the opened instances based on IPv6. @@ -888,14 +884,14 @@ PxeBcCreateIp6Children ( IN PXEBC_PRIVATE_DATA *Private ) { - EFI_STATUS Status; - IPv6_DEVICE_PATH Ip6Node; - EFI_UDP6_CONFIG_DATA *Udp6CfgData; - EFI_IP6_CONFIG_DATA *Ip6CfgData; - EFI_IP6_MODE_DATA Ip6ModeData; - PXEBC_PRIVATE_PROTOCOL *Id; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - UINTN Index; + EFI_STATUS Status; + IPv6_DEVICE_PATH Ip6Node; + EFI_UDP6_CONFIG_DATA *Udp6CfgData; + EFI_IP6_CONFIG_DATA *Ip6CfgData; + EFI_IP6_MODE_DATA Ip6ModeData; + PXEBC_PRIVATE_PROTOCOL *Id; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + UINTN Index; if (Private->Ip6Nic != NULL) { // @@ -929,7 +925,7 @@ PxeBcCreateIp6Children ( Status = gBS->OpenProtocol ( Private->Dhcp6Child, &gEfiDhcp6ProtocolGuid, - (VOID **) &Private->Dhcp6, + (VOID **)&Private->Dhcp6, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -964,7 +960,7 @@ PxeBcCreateIp6Children ( Status = gBS->OpenProtocol ( Private->Mtftp6Child, &gEfiMtftp6ProtocolGuid, - (VOID **) &Private->Mtftp6, + (VOID **)&Private->Mtftp6, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -989,7 +985,7 @@ PxeBcCreateIp6Children ( Status = gBS->OpenProtocol ( Private->Udp6ReadChild, &gEfiUdp6ProtocolGuid, - (VOID **) &Private->Udp6Read, + (VOID **)&Private->Udp6Read, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -1014,7 +1010,7 @@ PxeBcCreateIp6Children ( Status = gBS->OpenProtocol ( Private->Udp6WriteChild, &gEfiUdp6ProtocolGuid, - (VOID **) &Private->Udp6Write, + (VOID **)&Private->Udp6Write, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -1039,7 +1035,7 @@ PxeBcCreateIp6Children ( Status = gBS->OpenProtocol ( Private->Ip6Child, &gEfiIp6ProtocolGuid, - (VOID **) &Private->Ip6, + (VOID **)&Private->Ip6, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -1088,7 +1084,7 @@ PxeBcCreateIp6Children ( Status = gBS->HandleProtocol ( ControllerHandle, &gEfiIp6ConfigProtocolGuid, - (VOID **) &Private->Ip6Cfg + (VOID **)&Private->Ip6Cfg ); if (EFI_ERROR (Status)) { goto ON_ERROR; @@ -1098,9 +1094,9 @@ PxeBcCreateIp6Children ( // Create a device path node for Ipv6 virtual nic, and append it. // ZeroMem (&Ip6Node, sizeof (IPv6_DEVICE_PATH)); - Ip6Node.Header.Type = MESSAGING_DEVICE_PATH; - Ip6Node.Header.SubType = MSG_IPv6_DP; - Ip6Node.PrefixLength = IP6_PREFIX_LENGTH; + Ip6Node.Header.Type = MESSAGING_DEVICE_PATH; + Ip6Node.Header.SubType = MSG_IPv6_DP; + Ip6Node.PrefixLength = IP6_PREFIX_LENGTH; SetDevicePathNodeLength (&Ip6Node.Header, sizeof (Ip6Node)); @@ -1157,7 +1153,7 @@ PxeBcCreateIp6Children ( Status = gBS->OpenProtocol ( Private->Ip6Nic->Controller, &gEfiSimpleNetworkProtocolGuid, - (VOID **) &Snp, + (VOID **)&Snp, This->DriverBindingHandle, Private->Ip6Nic->Controller, EFI_OPEN_PROTOCOL_BY_DRIVER|EFI_OPEN_PROTOCOL_EXCLUSIVE @@ -1174,7 +1170,7 @@ PxeBcCreateIp6Children ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, This->DriverBindingHandle, Private->Ip6Nic->Controller, EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER @@ -1192,15 +1188,15 @@ PxeBcCreateIp6Children ( // // Fail to get the data whether UNDI supports IPv6. Set default value. // - Private->Mode.Ipv6Available = TRUE; + Private->Mode.Ipv6Available = TRUE; } if (!Private->Mode.Ipv6Available) { goto ON_ERROR; } - Udp6CfgData = &Private->Udp6CfgData; - Ip6CfgData = &Private->Ip6CfgData; + Udp6CfgData = &Private->Udp6CfgData; + Ip6CfgData = &Private->Ip6CfgData; Udp6CfgData->AcceptAnyPort = TRUE; Udp6CfgData->AllowDuplicatePort = TRUE; @@ -1208,11 +1204,11 @@ PxeBcCreateIp6Children ( Udp6CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; Udp6CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; - Ip6CfgData->AcceptIcmpErrors = TRUE; - Ip6CfgData->DefaultProtocol = IP6_ICMP; - Ip6CfgData->HopLimit = PXEBC_DEFAULT_HOPLIMIT; - Ip6CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; - Ip6CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; + Ip6CfgData->AcceptIcmpErrors = TRUE; + Ip6CfgData->DefaultProtocol = IP6_ICMP; + Ip6CfgData->HopLimit = PXEBC_DEFAULT_HOPLIMIT; + Ip6CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME; + Ip6CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME; return EFI_SUCCESS; @@ -1221,7 +1217,6 @@ ON_ERROR: return Status; } - /** The entry point for UefiPxeBc driver that installs the driver binding and component name protocol on its image. @@ -1236,13 +1231,13 @@ ON_ERROR: EFI_STATUS EFIAPI PxeBcDriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { EFI_STATUS Status; - if ((PcdGet8(PcdIPv4PXESupport) == PXE_DISABLED) && (PcdGet8(PcdIPv6PXESupport) == PXE_DISABLED)) { + if ((PcdGet8 (PcdIPv4PXESupport) == PXE_DISABLED) && (PcdGet8 (PcdIPv6PXESupport) == PXE_DISABLED)) { return EFI_UNSUPPORTED; } @@ -1300,20 +1295,22 @@ PxeBcSupported ( IN UINT8 IpVersion ) { - EFI_STATUS Status; - EFI_GUID *DhcpServiceBindingGuid; - EFI_GUID *MtftpServiceBindingGuid; + EFI_STATUS Status; + EFI_GUID *DhcpServiceBindingGuid; + EFI_GUID *MtftpServiceBindingGuid; if (IpVersion == IP_VERSION_4) { - if (PcdGet8(PcdIPv4PXESupport) == PXE_DISABLED) { + if (PcdGet8 (PcdIPv4PXESupport) == PXE_DISABLED) { return EFI_UNSUPPORTED; } + DhcpServiceBindingGuid = &gEfiDhcp4ServiceBindingProtocolGuid; MtftpServiceBindingGuid = &gEfiMtftp4ServiceBindingProtocolGuid; } else { - if (PcdGet8(PcdIPv6PXESupport) == PXE_DISABLED) { + if (PcdGet8 (PcdIPv6PXESupport) == PXE_DISABLED) { return EFI_UNSUPPORTED; } + DhcpServiceBindingGuid = &gEfiDhcp6ServiceBindingProtocolGuid; MtftpServiceBindingGuid = &gEfiMtftp6ServiceBindingProtocolGuid; } @@ -1322,22 +1319,22 @@ PxeBcSupported ( // Try to open the Mtftp and Dhcp protocol to test whether IP stack is ready. // Status = gBS->OpenProtocol ( - ControllerHandle, - DhcpServiceBindingGuid, - NULL, - This->DriverBindingHandle, - ControllerHandle, - EFI_OPEN_PROTOCOL_TEST_PROTOCOL - ); + ControllerHandle, + DhcpServiceBindingGuid, + NULL, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_TEST_PROTOCOL + ); if (!EFI_ERROR (Status)) { Status = gBS->OpenProtocol ( - ControllerHandle, - MtftpServiceBindingGuid, - NULL, - This->DriverBindingHandle, - ControllerHandle, - EFI_OPEN_PROTOCOL_TEST_PROTOCOL - ); + ControllerHandle, + MtftpServiceBindingGuid, + NULL, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_TEST_PROTOCOL + ); } // @@ -1375,20 +1372,20 @@ PxeBcStart ( IN UINT8 IpVersion ) { - PXEBC_PRIVATE_DATA *Private; - EFI_STATUS Status; - PXEBC_PRIVATE_PROTOCOL *Id; - BOOLEAN FirstStart; + PXEBC_PRIVATE_DATA *Private; + EFI_STATUS Status; + PXEBC_PRIVATE_PROTOCOL *Id; + BOOLEAN FirstStart; FirstStart = FALSE; - Status = gBS->OpenProtocol ( - ControllerHandle, - &gEfiCallerIdGuid, - (VOID **) &Id, - This->DriverBindingHandle, - ControllerHandle, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); + Status = gBS->OpenProtocol ( + ControllerHandle, + &gEfiCallerIdGuid, + (VOID **)&Id, + This->DriverBindingHandle, + ControllerHandle, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); if (!EFI_ERROR (Status)) { // // Skip the initialization if the driver has been started already. @@ -1425,7 +1422,7 @@ PxeBcStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiDevicePathProtocolGuid, - (VOID **) &Private->DevicePath, + (VOID **)&Private->DevicePath, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1441,7 +1438,7 @@ PxeBcStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiNetworkInterfaceIdentifierProtocolGuid_31, - (VOID **) &Private->Nii, + (VOID **)&Private->Nii, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1469,7 +1466,7 @@ PxeBcStart ( // // Try to locate SNP protocol. // - NetLibGetSnpHandle(ControllerHandle, &Private->Snp); + NetLibGetSnpHandle (ControllerHandle, &Private->Snp); } if (IpVersion == IP_VERSION_4) { @@ -1483,6 +1480,7 @@ PxeBcStart ( // Status = PxeBcCreateIp6Children (This, ControllerHandle, Private); } + if (EFI_ERROR (Status)) { // // Failed to start PXE driver if IPv4 and IPv6 stack are both not available. @@ -1508,14 +1506,13 @@ ON_ERROR: PxeBcDestroyIp6Children (This, Private); } - if (FirstStart && Private != NULL) { + if (FirstStart && (Private != NULL)) { FreePool (Private); } return Status; } - /** Stop this driver on ControllerHandle. This is the worker function for PxeBcIp4(6)DriverBindingStop. @@ -1542,12 +1539,12 @@ PxeBcStop ( IN UINT8 IpVersion ) { - PXEBC_PRIVATE_DATA *Private; - PXEBC_VIRTUAL_NIC *VirtualNic; - EFI_LOAD_FILE_PROTOCOL *LoadFile; - EFI_STATUS Status; - EFI_HANDLE NicHandle; - PXEBC_PRIVATE_PROTOCOL *Id; + PXEBC_PRIVATE_DATA *Private; + PXEBC_VIRTUAL_NIC *VirtualNic; + EFI_LOAD_FILE_PROTOCOL *LoadFile; + EFI_STATUS Status; + EFI_HANDLE NicHandle; + PXEBC_PRIVATE_PROTOCOL *Id; Private = NULL; NicHandle = NULL; @@ -1558,7 +1555,7 @@ PxeBcStop ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiLoadFileProtocolGuid, - (VOID **) &LoadFile, + (VOID **)&LoadFile, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1572,6 +1569,7 @@ PxeBcStop ( } else { NicHandle = PxeBcGetNicByIp6Children (ControllerHandle); } + if (NicHandle == NULL) { return EFI_SUCCESS; } @@ -1582,7 +1580,7 @@ PxeBcStop ( Status = gBS->OpenProtocol ( NicHandle, &gEfiCallerIdGuid, - (VOID **) &Id, + (VOID **)&Id, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1590,8 +1588,8 @@ PxeBcStop ( if (EFI_ERROR (Status)) { return Status; } - Private = PXEBC_PRIVATE_DATA_FROM_ID (Id); + Private = PXEBC_PRIVATE_DATA_FROM_ID (Id); } else { // // It's a virtual handle with LoadFileProtocol. @@ -1599,7 +1597,7 @@ PxeBcStop ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiLoadFileProtocolGuid, - (VOID **) &LoadFile, + (VOID **)&LoadFile, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -1617,20 +1615,19 @@ PxeBcStop ( // Stop functionality of PXE Base Code protocol // Status = Private->PxeBc.Stop (&Private->PxeBc); - if (Status != EFI_SUCCESS && Status != EFI_NOT_STARTED) { + if ((Status != EFI_SUCCESS) && (Status != EFI_NOT_STARTED)) { return Status; } - - if (Private->Ip4Nic != NULL && IpVersion == IP_VERSION_4) { + if ((Private->Ip4Nic != NULL) && (IpVersion == IP_VERSION_4)) { PxeBcDestroyIp4Children (This, Private); } - if (Private->Ip6Nic != NULL && IpVersion == IP_VERSION_6) { + if ((Private->Ip6Nic != NULL) && (IpVersion == IP_VERSION_6)) { PxeBcDestroyIp6Children (This, Private); } - if (Private->Ip4Nic == NULL && Private->Ip6Nic == NULL) { + if ((Private->Ip4Nic == NULL) && (Private->Ip6Nic == NULL)) { gBS->UninstallProtocolInterface ( NicHandle, &gEfiCallerIdGuid, diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.h b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.h index 6bb907732b..a724729e11 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.h +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcDriver.h @@ -10,8 +10,8 @@ #ifndef __EFI_PXEBC_DRIVER_H__ #define __EFI_PXEBC_DRIVER_H__ -extern EFI_COMPONENT_NAME_PROTOCOL gPxeBcComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gPxeBcComponentName2; +extern EFI_COMPONENT_NAME_PROTOCOL gPxeBcComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gPxeBcComponentName2; /** Test to see if this driver supports ControllerHandle. This service @@ -64,7 +64,6 @@ PxeBcIp4DriverBindingStart ( IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ); - /** Stop this driver on ControllerHandle. This service is called by the EFI boot service DisconnectController(). In order to @@ -171,5 +170,5 @@ PxeBcIp6DriverBindingStop ( IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer ); -#endif +#endif diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c b/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c index 2e9d31547d..0a4baf6f90 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c @@ -9,7 +9,6 @@ #include "PxeBcImpl.h" - /** Enables the use of the PXE Base Code Protocol functions. @@ -42,8 +41,8 @@ EFI_STATUS EFIAPI EfiPxeBcStart ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This, - IN BOOLEAN UseIpv6 + IN EFI_PXE_BASE_CODE_PROTOCOL *This, + IN BOOLEAN UseIpv6 ) { PXEBC_PRIVATE_DATA *Private; @@ -65,9 +64,9 @@ EfiPxeBcStart ( // // Detect whether using IPv6 or not, and set it into mode data. // - if (UseIpv6 && Mode->Ipv6Available && Mode->Ipv6Supported && Private->Ip6Nic != NULL) { + if (UseIpv6 && Mode->Ipv6Available && Mode->Ipv6Supported && (Private->Ip6Nic != NULL)) { Mode->UsingIpv6 = TRUE; - } else if (!UseIpv6 && Private->Ip4Nic != NULL) { + } else if (!UseIpv6 && (Private->Ip4Nic != NULL)) { Mode->UsingIpv6 = FALSE; } else { return EFI_UNSUPPORTED; @@ -90,7 +89,7 @@ EfiPxeBcStart ( // Configure block size for TFTP as a default value to handle all link layers. // Private->BlockSize = Private->Ip6MaxPacketSize - - PXEBC_DEFAULT_UDP_OVERHEAD_SIZE - PXEBC_DEFAULT_TFTP_OVERHEAD_SIZE; + PXEBC_DEFAULT_UDP_OVERHEAD_SIZE - PXEBC_DEFAULT_TFTP_OVERHEAD_SIZE; // // PXE over IPv6 starts here, initialize the fields and list header. @@ -108,13 +107,13 @@ EfiPxeBcStart ( // Create event and set status for token to capture ICMP6 error message. // Private->Icmp6Token.Status = EFI_NOT_READY; - Status = gBS->CreateEvent ( - EVT_NOTIFY_SIGNAL, - TPL_NOTIFY, - PxeBcIcmp6ErrorUpdate, - Private, - &Private->Icmp6Token.Event - ); + Status = gBS->CreateEvent ( + EVT_NOTIFY_SIGNAL, + TPL_NOTIFY, + PxeBcIcmp6ErrorUpdate, + Private, + &Private->Icmp6Token.Event + ); if (EFI_ERROR (Status)) { goto ON_ERROR; } @@ -143,7 +142,7 @@ EfiPxeBcStart ( // Configure block size for TFTP as a default value to handle all link layers. // Private->BlockSize = Private->Ip4MaxPacketSize - - PXEBC_DEFAULT_UDP_OVERHEAD_SIZE - PXEBC_DEFAULT_TFTP_OVERHEAD_SIZE; + PXEBC_DEFAULT_UDP_OVERHEAD_SIZE - PXEBC_DEFAULT_TFTP_OVERHEAD_SIZE; // // PXE over IPv4 starts here, initialize the fields. @@ -188,23 +187,23 @@ EfiPxeBcStart ( // Create event and set status for token to capture ICMP error message. // Private->Icmp6Token.Status = EFI_NOT_READY; - Status = gBS->CreateEvent ( - EVT_NOTIFY_SIGNAL, - TPL_NOTIFY, - PxeBcIcmpErrorUpdate, - Private, - &Private->IcmpToken.Event - ); + Status = gBS->CreateEvent ( + EVT_NOTIFY_SIGNAL, + TPL_NOTIFY, + PxeBcIcmpErrorUpdate, + Private, + &Private->IcmpToken.Event + ); if (EFI_ERROR (Status)) { goto ON_ERROR; } // - //DHCP4 service allows only one of its children to be configured in - //the active state, If the DHCP4 D.O.R.A started by IP4 auto - //configuration and has not been completed, the Dhcp4 state machine - //will not be in the right state for the PXE to start a new round D.O.R.A. - //so we need to switch its policy to static. + // DHCP4 service allows only one of its children to be configured in + // the active state, If the DHCP4 D.O.R.A started by IP4 auto + // configuration and has not been completed, the Dhcp4 state machine + // will not be in the right state for the PXE to start a new round D.O.R.A. + // so we need to switch its policy to static. // Status = PxeBcSetIp4Policy (Private); if (EFI_ERROR (Status)) { @@ -216,7 +215,7 @@ EfiPxeBcStart ( // If PcdTftpBlockSize is set to non-zero, override the default value. // if (PcdGet64 (PcdTftpBlockSize) != 0) { - Private->BlockSize = (UINTN) PcdGet64 (PcdTftpBlockSize); + Private->BlockSize = (UINTN)PcdGet64 (PcdTftpBlockSize); } // @@ -244,6 +243,7 @@ ON_ERROR: gBS->CloseEvent (Private->Icmp6Token.Event); Private->Icmp6Token.Event = NULL; } + Private->Udp6Read->Configure (Private->Udp6Read, NULL); Private->Ip6->Configure (Private->Ip6, NULL); } else { @@ -251,17 +251,19 @@ ON_ERROR: gBS->CloseEvent (Private->ArpUpdateEvent); Private->ArpUpdateEvent = NULL; } + if (Private->IcmpToken.Event != NULL) { gBS->CloseEvent (Private->IcmpToken.Event); Private->IcmpToken.Event = NULL; } + Private->Udp4Read->Configure (Private->Udp4Read, NULL); Private->Ip4->Configure (Private->Ip4, NULL); } + return Status; } - /** Disable the use of the PXE Base Code Protocol functions. @@ -282,7 +284,7 @@ ON_ERROR: EFI_STATUS EFIAPI EfiPxeBcStop ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This + IN EFI_PXE_BASE_CODE_PROTOCOL *This ) { PXEBC_PRIVATE_DATA *Private; @@ -321,10 +323,12 @@ EfiPxeBcStop ( gBS->CloseEvent (Private->Icmp6Token.Event); Private->Icmp6Token.Event = NULL; } + if (Private->Dhcp6Request != NULL) { FreePool (Private->Dhcp6Request); Private->Dhcp6Request = NULL; } + if (Private->BootFileName != NULL) { FreePool (Private->BootFileName); Private->BootFileName = NULL; @@ -348,10 +352,12 @@ EfiPxeBcStop ( gBS->CloseEvent (Private->ArpUpdateEvent); Private->ArpUpdateEvent = NULL; } + if (Private->IcmpToken.Event != NULL) { gBS->CloseEvent (Private->IcmpToken.Event); Private->IcmpToken.Event = NULL; } + Private->BootFileName = NULL; } @@ -378,7 +384,6 @@ EfiPxeBcStop ( return EFI_SUCCESS; } - /** Attempts to complete a DHCPv4 D.O.R.A. (discover / offer / request / acknowledge) or DHCPv6 S.A.R.R (solicit / advertise / request / reply) sequence. @@ -410,8 +415,8 @@ EfiPxeBcStop ( EFI_STATUS EFIAPI EfiPxeBcDhcp ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This, - IN BOOLEAN SortOffers + IN EFI_PXE_BASE_CODE_PROTOCOL *This, + IN BOOLEAN SortOffers ) { PXEBC_PRIVATE_DATA *Private; @@ -437,7 +442,6 @@ EfiPxeBcDhcp ( } if (Mode->UsingIpv6) { - // // Stop Udp6Read instance // @@ -448,7 +452,6 @@ EfiPxeBcDhcp ( // Status = PxeBcDhcp6Sarr (Private, Private->Dhcp6); } else { - // // Stop Udp4Read instance // @@ -468,18 +471,18 @@ EfiPxeBcDhcp ( } else { Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData); } + // // Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP // receive filter list emptied and the filter set to EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP. // - ZeroMem(&IpFilter, sizeof (EFI_PXE_BASE_CODE_IP_FILTER)); + ZeroMem (&IpFilter, sizeof (EFI_PXE_BASE_CODE_IP_FILTER)); IpFilter.Filters = EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP; This->SetIpFilter (This, &IpFilter); return Status; } - /** Attempts to complete the PXE Boot Server and/or boot image discovery sequence. @@ -534,15 +537,15 @@ EfiPxeBcDiscover ( IN EFI_PXE_BASE_CODE_DISCOVER_INFO *Info OPTIONAL ) { - PXEBC_PRIVATE_DATA *Private; - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_PXE_BASE_CODE_DISCOVER_INFO DefaultInfo; - EFI_PXE_BASE_CODE_SRVLIST *SrvList; - PXEBC_BOOT_SVR_ENTRY *BootSvrEntry; - UINT16 Index; - EFI_STATUS Status; - EFI_PXE_BASE_CODE_IP_FILTER IpFilter; - EFI_PXE_BASE_CODE_DISCOVER_INFO *NewCreatedInfo; + PXEBC_PRIVATE_DATA *Private; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_PXE_BASE_CODE_DISCOVER_INFO DefaultInfo; + EFI_PXE_BASE_CODE_SRVLIST *SrvList; + PXEBC_BOOT_SVR_ENTRY *BootSvrEntry; + UINT16 Index; + EFI_STATUS Status; + EFI_PXE_BASE_CODE_IP_FILTER IpFilter; + EFI_PXE_BASE_CODE_DISCOVER_INFO *NewCreatedInfo; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -569,13 +572,11 @@ EfiPxeBcDiscover ( } if (Mode->UsingIpv6) { - // // Stop Udp6Read instance // Private->Udp6Read->Configure (Private->Udp6Read, NULL); } else { - // // Stop Udp4Read instance // @@ -592,7 +593,8 @@ EfiPxeBcDiscover ( // if (!Mode->PxeDiscoverValid || !Mode->PxeReplyReceived || - (!Mode->PxeBisReplyReceived && UseBis)) { + (!Mode->PxeBisReplyReceived && UseBis)) + { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } @@ -605,16 +607,16 @@ EfiPxeBcDiscover ( SrvList[0].AcceptAnyResponse = FALSE; CopyMem (&SrvList->IpAddr, &Private->ServerIp, sizeof (EFI_IP_ADDRESS)); - } else if (Info == NULL) { // // 2. Extract the discover information from the cached packets if unspecified. // NewCreatedInfo = &DefaultInfo; - Status = PxeBcExtractDiscoverInfo (Private, Type, &NewCreatedInfo, &BootSvrEntry, &SrvList); + Status = PxeBcExtractDiscoverInfo (Private, Type, &NewCreatedInfo, &BootSvrEntry, &SrvList); if (EFI_ERROR (Status)) { goto ON_EXIT; } + ASSERT (NewCreatedInfo != NULL); Info = NewCreatedInfo; } else { @@ -629,6 +631,7 @@ EfiPxeBcDiscover ( break; } } + if (Index != Info->IpCnt) { // // It's invalid if the first server doesn't accept any response @@ -644,7 +647,8 @@ EfiPxeBcDiscover ( // Info and BootSvrEntry/SrvList are all ready by now, so execute discover by UniCast/BroadCast/MultiCast. // if ((!Info->UseUCast && !Info->UseBCast && !Info->UseMCast) || - (Info->MustUseList && Info->IpCnt == 0)) { + (Info->MustUseList && (Info->IpCnt == 0))) + { Status = EFI_INVALID_PARAMETER; goto ON_EXIT; } @@ -664,7 +668,6 @@ EfiPxeBcDiscover ( Info->IpCnt, SrvList ); - } else if (Info->UseBCast) { // // Do discover by broadcast, but only valid for IPv4. @@ -679,7 +682,6 @@ EfiPxeBcDiscover ( Info->IpCnt, SrvList ); - } else if (Info->UseUCast) { // // Do discover by unicast. @@ -702,7 +704,7 @@ EfiPxeBcDiscover ( Info->IpCnt, SrvList ); - } + } } if (!EFI_ERROR (Status)) { @@ -736,7 +738,7 @@ EfiPxeBcDiscover ( ON_EXIT: - if (NewCreatedInfo != NULL && NewCreatedInfo != &DefaultInfo) { + if ((NewCreatedInfo != NULL) && (NewCreatedInfo != &DefaultInfo)) { FreePool (NewCreatedInfo); } @@ -750,14 +752,13 @@ ON_EXIT: // Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP // receive filter list emptied and the filter set to EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP. // - ZeroMem(&IpFilter, sizeof (EFI_PXE_BASE_CODE_IP_FILTER)); + ZeroMem (&IpFilter, sizeof (EFI_PXE_BASE_CODE_IP_FILTER)); IpFilter.Filters = EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP; This->SetIpFilter (This, &IpFilter); return Status; } - /** Used to perform TFTP and MTFTP services. @@ -824,60 +825,62 @@ ON_EXIT: EFI_STATUS EFIAPI EfiPxeBcMtftp ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This, - IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation, - IN OUT VOID *BufferPtr OPTIONAL, - IN BOOLEAN Overwrite, - IN OUT UINT64 *BufferSize, - IN UINTN *BlockSize OPTIONAL, - IN EFI_IP_ADDRESS *ServerIp, - IN UINT8 *Filename, - IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL, - IN BOOLEAN DontUseBuffer + IN EFI_PXE_BASE_CODE_PROTOCOL *This, + IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation, + IN OUT VOID *BufferPtr OPTIONAL, + IN BOOLEAN Overwrite, + IN OUT UINT64 *BufferSize, + IN UINTN *BlockSize OPTIONAL, + IN EFI_IP_ADDRESS *ServerIp, + IN UINT8 *Filename, + IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL, + IN BOOLEAN DontUseBuffer ) { - PXEBC_PRIVATE_DATA *Private; - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_MTFTP4_CONFIG_DATA Mtftp4Config; - EFI_MTFTP6_CONFIG_DATA Mtftp6Config; - VOID *Config; - EFI_STATUS Status; - EFI_PXE_BASE_CODE_IP_FILTER IpFilter; - UINTN WindowSize; + PXEBC_PRIVATE_DATA *Private; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_MTFTP4_CONFIG_DATA Mtftp4Config; + EFI_MTFTP6_CONFIG_DATA Mtftp6Config; + VOID *Config; + EFI_STATUS Status; + EFI_PXE_BASE_CODE_IP_FILTER IpFilter; + UINTN WindowSize; if ((This == NULL) || (Filename == NULL) || (BufferSize == NULL) || (ServerIp == NULL) || - ((BlockSize != NULL) && (*BlockSize < PXE_MTFTP_DEFAULT_BLOCK_SIZE))) { + ((BlockSize != NULL) && (*BlockSize < PXE_MTFTP_DEFAULT_BLOCK_SIZE))) + { return EFI_INVALID_PARAMETER; } - if (Operation == EFI_PXE_BASE_CODE_TFTP_READ_FILE || - Operation == EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY || - Operation == EFI_PXE_BASE_CODE_MTFTP_READ_FILE || - Operation == EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY) { - if (BufferPtr == NULL && !DontUseBuffer) { + if ((Operation == EFI_PXE_BASE_CODE_TFTP_READ_FILE) || + (Operation == EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY) || + (Operation == EFI_PXE_BASE_CODE_MTFTP_READ_FILE) || + (Operation == EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY)) + { + if ((BufferPtr == NULL) && !DontUseBuffer) { return EFI_INVALID_PARAMETER; } } - Config = NULL; - Status = EFI_DEVICE_ERROR; - Private = PXEBC_PRIVATE_DATA_FROM_PXEBC (This); - Mode = Private->PxeBc.Mode; + Config = NULL; + Status = EFI_DEVICE_ERROR; + Private = PXEBC_PRIVATE_DATA_FROM_PXEBC (This); + Mode = Private->PxeBc.Mode; // // Get PcdPxeTftpWindowSize. // - WindowSize = (UINTN) PcdGet64 (PcdPxeTftpWindowSize); + WindowSize = (UINTN)PcdGet64 (PcdPxeTftpWindowSize); if (Mode->UsingIpv6) { if (!NetIp6IsValidUnicast (&ServerIp->v6)) { return EFI_INVALID_PARAMETER; } } else { - if (IP4_IS_UNSPECIFIED (NTOHL (ServerIp->Addr[0])) || IP4_IS_LOCAL_BROADCAST (NTOHL (ServerIp->Addr[0]))) { + if (IP4_IS_UNSPECIFIED (NTOHL (ServerIp->Addr[0])) || IP4_IS_LOCAL_BROADCAST (NTOHL (ServerIp->Addr[0]))) { return EFI_INVALID_PARAMETER; } } @@ -887,9 +890,9 @@ EfiPxeBcMtftp ( // Set configuration data for Mtftp6 instance. // ZeroMem (&Mtftp6Config, sizeof (EFI_MTFTP6_CONFIG_DATA)); - Config = &Mtftp6Config; - Mtftp6Config.TimeoutValue = PXEBC_MTFTP_TIMEOUT; - Mtftp6Config.TryCount = PXEBC_MTFTP_RETRIES; + Config = &Mtftp6Config; + Mtftp6Config.TimeoutValue = PXEBC_MTFTP_TIMEOUT; + Mtftp6Config.TryCount = PXEBC_MTFTP_RETRIES; CopyMem (&Mtftp6Config.StationIp, &Private->StationIp.v6, sizeof (EFI_IPv6_ADDRESS)); CopyMem (&Mtftp6Config.ServerIp, &ServerIp->v6, sizeof (EFI_IPv6_ADDRESS)); // @@ -919,83 +922,82 @@ EfiPxeBcMtftp ( Mode->IcmpErrorReceived = FALSE; switch (Operation) { + case EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE: + // + // Send TFTP request to get file size. + // + Status = PxeBcTftpGetFileSize ( + Private, + Config, + Filename, + BlockSize, + (WindowSize > 1) ? &WindowSize : NULL, + BufferSize + ); - case EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE: - // - // Send TFTP request to get file size. - // - Status = PxeBcTftpGetFileSize ( - Private, - Config, - Filename, - BlockSize, - (WindowSize > 1) ? &WindowSize : NULL, - BufferSize - ); - - break; + break; - case EFI_PXE_BASE_CODE_TFTP_READ_FILE: - // - // Send TFTP request to read file. - // - Status = PxeBcTftpReadFile ( - Private, - Config, - Filename, - BlockSize, - (WindowSize > 1) ? &WindowSize : NULL, - BufferPtr, - BufferSize, - DontUseBuffer - ); + case EFI_PXE_BASE_CODE_TFTP_READ_FILE: + // + // Send TFTP request to read file. + // + Status = PxeBcTftpReadFile ( + Private, + Config, + Filename, + BlockSize, + (WindowSize > 1) ? &WindowSize : NULL, + BufferPtr, + BufferSize, + DontUseBuffer + ); - break; + break; - case EFI_PXE_BASE_CODE_TFTP_WRITE_FILE: - // - // Send TFTP request to write file. - // - Status = PxeBcTftpWriteFile ( - Private, - Config, - Filename, - Overwrite, - BlockSize, - BufferPtr, - BufferSize - ); + case EFI_PXE_BASE_CODE_TFTP_WRITE_FILE: + // + // Send TFTP request to write file. + // + Status = PxeBcTftpWriteFile ( + Private, + Config, + Filename, + Overwrite, + BlockSize, + BufferPtr, + BufferSize + ); - break; + break; - case EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY: - // - // Send TFTP request to read directory. - // - Status = PxeBcTftpReadDirectory ( - Private, - Config, - Filename, - BlockSize, - (WindowSize > 1) ? &WindowSize : NULL, - BufferPtr, - BufferSize, - DontUseBuffer - ); + case EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY: + // + // Send TFTP request to read directory. + // + Status = PxeBcTftpReadDirectory ( + Private, + Config, + Filename, + BlockSize, + (WindowSize > 1) ? &WindowSize : NULL, + BufferPtr, + BufferSize, + DontUseBuffer + ); - break; + break; - case EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE: - case EFI_PXE_BASE_CODE_MTFTP_READ_FILE: - case EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY: - Status = EFI_UNSUPPORTED; + case EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE: + case EFI_PXE_BASE_CODE_MTFTP_READ_FILE: + case EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY: + Status = EFI_UNSUPPORTED; - break; + break; - default: - Status = EFI_INVALID_PARAMETER; + default: + Status = EFI_INVALID_PARAMETER; - break; + break; } if (Status == EFI_ICMP_ERROR) { @@ -1010,18 +1012,18 @@ EfiPxeBcMtftp ( } else { Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData); } + // // Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP // receive filter list emptied and the filter set to EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP. // - ZeroMem(&IpFilter, sizeof (EFI_PXE_BASE_CODE_IP_FILTER)); + ZeroMem (&IpFilter, sizeof (EFI_PXE_BASE_CODE_IP_FILTER)); IpFilter.Filters = EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP; This->SetIpFilter (This, &IpFilter); return Status; } - /** Writes a UDP packet to the network interface. @@ -1062,27 +1064,27 @@ EfiPxeBcMtftp ( EFI_STATUS EFIAPI EfiPxeBcUdpWrite ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This, - IN UINT16 OpFlags, - IN EFI_IP_ADDRESS *DestIp, - IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort, - IN EFI_IP_ADDRESS *GatewayIp OPTIONAL, - IN EFI_IP_ADDRESS *SrcIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL, - IN UINTN *HeaderSize OPTIONAL, - IN VOID *HeaderPtr OPTIONAL, - IN UINTN *BufferSize, - IN VOID *BufferPtr + IN EFI_PXE_BASE_CODE_PROTOCOL *This, + IN UINT16 OpFlags, + IN EFI_IP_ADDRESS *DestIp, + IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort, + IN EFI_IP_ADDRESS *GatewayIp OPTIONAL, + IN EFI_IP_ADDRESS *SrcIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL, + IN UINTN *HeaderSize OPTIONAL, + IN VOID *HeaderPtr OPTIONAL, + IN UINTN *BufferSize, + IN VOID *BufferPtr ) { - PXEBC_PRIVATE_DATA *Private; - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_UDP4_SESSION_DATA Udp4Session; - EFI_UDP6_SESSION_DATA Udp6Session; - EFI_STATUS Status; - BOOLEAN DoNotFragment; - - if (This == NULL || DestIp == NULL || DestPort == NULL) { + PXEBC_PRIVATE_DATA *Private; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_UDP4_SESSION_DATA Udp4Session; + EFI_UDP6_SESSION_DATA Udp6Session; + EFI_STATUS Status; + BOOLEAN DoNotFragment; + + if ((This == NULL) || (DestIp == NULL) || (DestPort == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1095,19 +1097,20 @@ EfiPxeBcUdpWrite ( DoNotFragment = TRUE; } - if (!Mode->UsingIpv6 && GatewayIp != NULL && Mode->SubnetMask.Addr[0] != 0 && - !NetIp4IsUnicast (NTOHL (GatewayIp->Addr[0]), EFI_NTOHL(Mode->SubnetMask))) { + if (!Mode->UsingIpv6 && (GatewayIp != NULL) && (Mode->SubnetMask.Addr[0] != 0) && + !NetIp4IsUnicast (NTOHL (GatewayIp->Addr[0]), EFI_NTOHL (Mode->SubnetMask))) + { // // Gateway is provided but it's not a unicast IPv4 address, while it will be ignored for IPv6. // return EFI_INVALID_PARAMETER; } - if (HeaderSize != NULL && (*HeaderSize == 0 || HeaderPtr == NULL)) { + if ((HeaderSize != NULL) && ((*HeaderSize == 0) || (HeaderPtr == NULL))) { return EFI_INVALID_PARAMETER; } - if (BufferSize == NULL || (*BufferSize != 0 && BufferPtr == NULL)) { + if ((BufferSize == NULL) || ((*BufferSize != 0) && (BufferPtr == NULL))) { return EFI_INVALID_PARAMETER; } @@ -1115,12 +1118,13 @@ EfiPxeBcUdpWrite ( return EFI_NOT_STARTED; } - if (!Private->IsAddressOk && SrcIp == NULL) { + if (!Private->IsAddressOk && (SrcIp == NULL)) { return EFI_INVALID_PARAMETER; } - if (Private->CurSrcPort == 0 || - (SrcPort != NULL && *SrcPort != Private->CurSrcPort)) { + if ((Private->CurSrcPort == 0) || + ((SrcPort != NULL) && (*SrcPort != Private->CurSrcPort))) + { // // Reconfigure UDPv4/UDPv6 for UdpWrite if the source port changed. // @@ -1173,6 +1177,7 @@ EfiPxeBcUdpWrite ( if (SrcIp != NULL) { CopyMem (&Udp6Session.SourceAddress, SrcIp, sizeof (EFI_IPv6_ADDRESS)); } + if (SrcPort != NULL) { Udp6Session.SourcePort = *SrcPort; } @@ -1196,9 +1201,11 @@ EfiPxeBcUdpWrite ( if (SrcIp != NULL) { CopyMem (&Udp4Session.SourceAddress, SrcIp, sizeof (EFI_IPv4_ADDRESS)); } + if (SrcPort != NULL) { Udp4Session.SourcePort = *SrcPort; } + // // Override the gateway information if user specified. // @@ -1206,7 +1213,7 @@ EfiPxeBcUdpWrite ( Private->Udp4Write, &Udp4Session, Private->UdpTimeOutEvent, - (EFI_IPv4_ADDRESS *) GatewayIp, + (EFI_IPv4_ADDRESS *)GatewayIp, HeaderSize, HeaderPtr, BufferSize, @@ -1216,7 +1223,6 @@ EfiPxeBcUdpWrite ( gBS->SetTimer (Private->UdpTimeOutEvent, TimerCancel, 0); - // // Reset the UdpWrite instance. // @@ -1229,7 +1235,6 @@ EfiPxeBcUdpWrite ( return Status; } - /** Reads a UDP packet from the network interface. + @@ -1270,34 +1275,34 @@ EfiPxeBcUdpWrite ( EFI_STATUS EFIAPI EfiPxeBcUdpRead ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This, - IN UINT16 OpFlags, - IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, - IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL, - IN UINTN *HeaderSize OPTIONAL, - IN VOID *HeaderPtr OPTIONAL, - IN OUT UINTN *BufferSize, - IN VOID *BufferPtr + IN EFI_PXE_BASE_CODE_PROTOCOL *This, + IN UINT16 OpFlags, + IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, + IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL, + IN UINTN *HeaderSize OPTIONAL, + IN VOID *HeaderPtr OPTIONAL, + IN OUT UINTN *BufferSize, + IN VOID *BufferPtr ) { - PXEBC_PRIVATE_DATA *Private; - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_UDP4_COMPLETION_TOKEN Udp4Token; - EFI_UDP6_COMPLETION_TOKEN Udp6Token; - EFI_UDP4_RECEIVE_DATA *Udp4Rx; - EFI_UDP6_RECEIVE_DATA *Udp6Rx; - EFI_STATUS Status; - BOOLEAN IsDone; - BOOLEAN IsMatched; - UINTN CopiedLen; - UINTN HeaderLen; - UINTN HeaderCopiedLen; - UINTN BufferCopiedLen; - UINT32 FragmentLength; - UINTN FragmentIndex; - UINT8 *FragmentBuffer; + PXEBC_PRIVATE_DATA *Private; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_UDP4_COMPLETION_TOKEN Udp4Token; + EFI_UDP6_COMPLETION_TOKEN Udp6Token; + EFI_UDP4_RECEIVE_DATA *Udp4Rx; + EFI_UDP6_RECEIVE_DATA *Udp6Rx; + EFI_STATUS Status; + BOOLEAN IsDone; + BOOLEAN IsMatched; + UINTN CopiedLen; + UINTN HeaderLen; + UINTN HeaderCopiedLen; + UINTN BufferCopiedLen; + UINT32 FragmentLength; + UINTN FragmentIndex; + UINT8 *FragmentBuffer; if (This == NULL) { return EFI_INVALID_PARAMETER; @@ -1310,13 +1315,14 @@ EfiPxeBcUdpRead ( Udp4Rx = NULL; Udp6Rx = NULL; - if (((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT) == 0 && DestPort == NULL) || - ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP) == 0 && SrcIp == NULL) || - ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT) == 0 && SrcPort == NULL)) { + if ((((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT) == 0) && (DestPort == NULL)) || + (((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP) == 0) && (SrcIp == NULL)) || + (((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT) == 0) && (SrcPort == NULL))) + { return EFI_INVALID_PARAMETER; } - if ((HeaderSize != NULL && *HeaderSize == 0) || (HeaderSize != NULL && HeaderPtr == NULL)) { + if (((HeaderSize != NULL) && (*HeaderSize == 0)) || ((HeaderSize != NULL) && (HeaderPtr == NULL))) { return EFI_INVALID_PARAMETER; } @@ -1396,16 +1402,18 @@ EfiPxeBcUdpRead ( } } - if (Status == EFI_ICMP_ERROR || - Status == EFI_NETWORK_UNREACHABLE || - Status == EFI_HOST_UNREACHABLE || - Status == EFI_PROTOCOL_UNREACHABLE || - Status == EFI_PORT_UNREACHABLE) { + if ((Status == EFI_ICMP_ERROR) || + (Status == EFI_NETWORK_UNREACHABLE) || + (Status == EFI_HOST_UNREACHABLE) || + (Status == EFI_PROTOCOL_UNREACHABLE) || + (Status == EFI_PORT_UNREACHABLE)) + { // // Get different return status for icmp error from Udp, refers to UEFI spec. // Mode->IcmpErrorReceived = TRUE; } + gBS->SetTimer (Private->UdpTimeOutEvent, TimerCancel, 0); if (IsMatched) { @@ -1427,6 +1435,7 @@ EfiPxeBcUdpRead ( if (HeaderSize != NULL) { *HeaderSize = HeaderLen; } + *BufferSize = Udp6Rx->DataLength - HeaderLen; HeaderCopiedLen = 0; @@ -1438,30 +1447,31 @@ EfiPxeBcUdpRead ( // // Copy the header part of received data. // - CopyMem ((UINT8 *) HeaderPtr + HeaderCopiedLen, FragmentBuffer, FragmentLength); + CopyMem ((UINT8 *)HeaderPtr + HeaderCopiedLen, FragmentBuffer, FragmentLength); HeaderCopiedLen += FragmentLength; } else if (HeaderCopiedLen < HeaderLen) { // // Copy the header part of received data. // CopiedLen = HeaderLen - HeaderCopiedLen; - CopyMem ((UINT8 *) HeaderPtr + HeaderCopiedLen, FragmentBuffer, CopiedLen); + CopyMem ((UINT8 *)HeaderPtr + HeaderCopiedLen, FragmentBuffer, CopiedLen); HeaderCopiedLen += CopiedLen; // // Copy the other part of received data. // - CopyMem ((UINT8 *) BufferPtr + BufferCopiedLen, FragmentBuffer + CopiedLen, FragmentLength - CopiedLen); + CopyMem ((UINT8 *)BufferPtr + BufferCopiedLen, FragmentBuffer + CopiedLen, FragmentLength - CopiedLen); BufferCopiedLen += (FragmentLength - CopiedLen); } else { // // Copy the other part of received data. // - CopyMem ((UINT8 *) BufferPtr + BufferCopiedLen, FragmentBuffer, FragmentLength); + CopyMem ((UINT8 *)BufferPtr + BufferCopiedLen, FragmentBuffer, FragmentLength); BufferCopiedLen += FragmentLength; } } } + // // Recycle the receiving buffer after copy to user. // @@ -1481,6 +1491,7 @@ EfiPxeBcUdpRead ( if (HeaderSize != NULL) { *HeaderSize = HeaderLen; } + *BufferSize = Udp4Rx->DataLength - HeaderLen; HeaderCopiedLen = 0; @@ -1492,30 +1503,31 @@ EfiPxeBcUdpRead ( // // Copy the header part of received data. // - CopyMem ((UINT8 *) HeaderPtr + HeaderCopiedLen, FragmentBuffer, FragmentLength); + CopyMem ((UINT8 *)HeaderPtr + HeaderCopiedLen, FragmentBuffer, FragmentLength); HeaderCopiedLen += FragmentLength; } else if (HeaderCopiedLen < HeaderLen) { // // Copy the header part of received data. // CopiedLen = HeaderLen - HeaderCopiedLen; - CopyMem ((UINT8 *) HeaderPtr + HeaderCopiedLen, FragmentBuffer, CopiedLen); + CopyMem ((UINT8 *)HeaderPtr + HeaderCopiedLen, FragmentBuffer, CopiedLen); HeaderCopiedLen += CopiedLen; // // Copy the other part of received data. // - CopyMem ((UINT8 *) BufferPtr + BufferCopiedLen, FragmentBuffer + CopiedLen, FragmentLength - CopiedLen); + CopyMem ((UINT8 *)BufferPtr + BufferCopiedLen, FragmentBuffer + CopiedLen, FragmentLength - CopiedLen); BufferCopiedLen += (FragmentLength - CopiedLen); } else { // // Copy the other part of received data. // - CopyMem ((UINT8 *) BufferPtr + BufferCopiedLen, FragmentBuffer, FragmentLength); + CopyMem ((UINT8 *)BufferPtr + BufferCopiedLen, FragmentBuffer, FragmentLength); BufferCopiedLen += FragmentLength; } } } + // // Recycle the receiving buffer after copy to user. // @@ -1534,7 +1546,6 @@ EfiPxeBcUdpRead ( return Status; } - /** Updates the IP receive filters of a network device and enables software filtering. @@ -1570,22 +1581,22 @@ EfiPxeBcUdpRead ( EFI_STATUS EFIAPI EfiPxeBcSetIpFilter ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This, - IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter + IN EFI_PXE_BASE_CODE_PROTOCOL *This, + IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter ) { - EFI_STATUS Status; - PXEBC_PRIVATE_DATA *Private; - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_UDP4_CONFIG_DATA *Udp4Cfg; - EFI_UDP6_CONFIG_DATA *Udp6Cfg; - UINTN Index; - BOOLEAN NeedPromiscuous; - BOOLEAN AcceptPromiscuous; - BOOLEAN AcceptBroadcast; - BOOLEAN MultiCastUpdate; - - if (This == NULL || NewFilter == NULL) { + EFI_STATUS Status; + PXEBC_PRIVATE_DATA *Private; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_UDP4_CONFIG_DATA *Udp4Cfg; + EFI_UDP6_CONFIG_DATA *Udp6Cfg; + UINTN Index; + BOOLEAN NeedPromiscuous; + BOOLEAN AcceptPromiscuous; + BOOLEAN AcceptBroadcast; + BOOLEAN MultiCastUpdate; + + if ((This == NULL) || (NewFilter == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1601,22 +1612,26 @@ EfiPxeBcSetIpFilter ( for (Index = 0; Index < NewFilter->IpCnt; Index++) { ASSERT (Index < EFI_PXE_BASE_CODE_MAX_IPCNT); if (!Mode->UsingIpv6 && - IP4_IS_LOCAL_BROADCAST (EFI_IP4 (NewFilter->IpList[Index].v4))) { + IP4_IS_LOCAL_BROADCAST (EFI_IP4 (NewFilter->IpList[Index].v4))) + { // // IPv4 broadcast address should not be in IP filter. // return EFI_INVALID_PARAMETER; } + if (Mode->UsingIpv6) { - if ((NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0 && - NetIp6IsValidUnicast (&NewFilter->IpList[Index].v6)) { + if (((NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0) && + NetIp6IsValidUnicast (&NewFilter->IpList[Index].v6)) + { NeedPromiscuous = TRUE; } - } else if ((EFI_NTOHL(Mode->StationIp) != 0) && - (EFI_NTOHL(Mode->SubnetMask) != 0) && - IP4_NET_EQUAL(EFI_NTOHL(Mode->StationIp), EFI_NTOHL(NewFilter->IpList[Index].v4), EFI_NTOHL(Mode->SubnetMask.v4)) && - NetIp4IsUnicast (EFI_IP4 (NewFilter->IpList[Index].v4), EFI_NTOHL(Mode->SubnetMask)) && - ((NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0)) { + } else if ((EFI_NTOHL (Mode->StationIp) != 0) && + (EFI_NTOHL (Mode->SubnetMask) != 0) && + IP4_NET_EQUAL (EFI_NTOHL (Mode->StationIp), EFI_NTOHL (NewFilter->IpList[Index].v4), EFI_NTOHL (Mode->SubnetMask.v4)) && + NetIp4IsUnicast (EFI_IP4 (NewFilter->IpList[Index].v4), EFI_NTOHL (Mode->SubnetMask)) && + ((NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0)) + { NeedPromiscuous = TRUE; } } @@ -1626,8 +1641,9 @@ EfiPxeBcSetIpFilter ( MultiCastUpdate = FALSE; if (NeedPromiscuous || - (NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS) != 0 || - (NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST) != 0) { + ((NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS) != 0) || + ((NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST) != 0)) + { // // Configure UDPv4/UDPv6 as promiscuous mode to receive all packets. // @@ -1636,7 +1652,7 @@ EfiPxeBcSetIpFilter ( // // Configure UDPv4 to receive all broadcast packets. // - AcceptBroadcast = TRUE; + AcceptBroadcast = TRUE; } // @@ -1661,7 +1677,8 @@ EfiPxeBcSetIpFilter ( // Udp4Cfg = &Private->Udp4CfgData; if ((AcceptPromiscuous != Udp4Cfg->AcceptPromiscuous) || - (AcceptBroadcast != Udp4Cfg->AcceptBroadcast) || MultiCastUpdate) { + (AcceptBroadcast != Udp4Cfg->AcceptBroadcast) || MultiCastUpdate) + { // // Clear the UDP4 instance configuration, all joined groups will be left // during the operation. @@ -1673,7 +1690,7 @@ EfiPxeBcSetIpFilter ( // Udp4Cfg->AcceptPromiscuous = AcceptPromiscuous; Udp4Cfg->AcceptBroadcast = AcceptBroadcast; - Status = Private->Udp4Read->Configure (Private->Udp4Read, Udp4Cfg); + Status = Private->Udp4Read->Configure (Private->Udp4Read, Udp4Cfg); if (EFI_ERROR (Status)) { return Status; } @@ -1711,7 +1728,7 @@ EfiPxeBcSetIpFilter ( // Configure the UDP instance with the new configuration. // Udp6Cfg->AcceptPromiscuous = AcceptPromiscuous; - Status = Private->Udp6Read->Configure (Private->Udp6Read, Udp6Cfg); + Status = Private->Udp6Read->Configure (Private->Udp6Read, Udp6Cfg); if (EFI_ERROR (Status)) { return Status; } @@ -1743,7 +1760,6 @@ EfiPxeBcSetIpFilter ( return Status; } - /** Uses the ARP protocol to resolve a MAC address. It is not supported for IPv6. @@ -1772,9 +1788,9 @@ EfiPxeBcSetIpFilter ( EFI_STATUS EFIAPI EfiPxeBcArp ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This, - IN EFI_IP_ADDRESS *IpAddr, - IN EFI_MAC_ADDRESS *MacAddr OPTIONAL + IN EFI_PXE_BASE_CODE_PROTOCOL *This, + IN EFI_IP_ADDRESS *IpAddr, + IN EFI_MAC_ADDRESS *MacAddr OPTIONAL ) { PXEBC_PRIVATE_DATA *Private; @@ -1785,7 +1801,7 @@ EfiPxeBcArp ( EFI_MAC_ADDRESS ZeroMac; BOOLEAN IsResolved; - if (This == NULL || IpAddr == NULL) { + if ((This == NULL) || (IpAddr == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1839,7 +1855,7 @@ EfiPxeBcArp ( // If AutoArp is TRUE, try to send Arp request on initiative. // Status = Private->Arp->Request (Private->Arp, &IpAddr->v4, ResolvedEvent, &TempMac); - if (EFI_ERROR (Status) && Status != EFI_NOT_READY) { + if (EFI_ERROR (Status) && (Status != EFI_NOT_READY)) { goto ON_EXIT; } @@ -1848,6 +1864,7 @@ EfiPxeBcArp ( break; } } + if (CompareMem (&TempMac, &ZeroMac, sizeof (EFI_MAC_ADDRESS)) != 0) { Status = EFI_SUCCESS; } else { @@ -1858,7 +1875,7 @@ EfiPxeBcArp ( // // Copy the Mac address to user if needed. // - if (MacAddr != NULL && !EFI_ERROR (Status)) { + if ((MacAddr != NULL) && !EFI_ERROR (Status)) { CopyMem (MacAddr, &TempMac, sizeof (EFI_MAC_ADDRESS)); } @@ -1866,10 +1883,10 @@ ON_EXIT: if (ResolvedEvent != NULL) { gBS->CloseEvent (ResolvedEvent); } + return Status; } - /** Updates the parameters that affect the operation of the PXE Base Code Protocol. @@ -1905,12 +1922,12 @@ ON_EXIT: EFI_STATUS EFIAPI EfiPxeBcSetParameters ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This, - IN BOOLEAN *NewAutoArp OPTIONAL, - IN BOOLEAN *NewSendGUID OPTIONAL, - IN UINT8 *NewTTL OPTIONAL, - IN UINT8 *NewToS OPTIONAL, - IN BOOLEAN *NewMakeCallback OPTIONAL + IN EFI_PXE_BASE_CODE_PROTOCOL *This, + IN BOOLEAN *NewAutoArp OPTIONAL, + IN BOOLEAN *NewSendGUID OPTIONAL, + IN UINT8 *NewTTL OPTIONAL, + IN UINT8 *NewToS OPTIONAL, + IN BOOLEAN *NewMakeCallback OPTIONAL ) { PXEBC_PRIVATE_DATA *Private; @@ -1937,7 +1954,7 @@ EfiPxeBcSetParameters ( Status = gBS->HandleProtocol ( Mode->UsingIpv6 ? Private->Ip6Nic->Controller : Private->Ip4Nic->Controller, &gEfiPxeBaseCodeCallbackProtocolGuid, - (VOID **) &Private->PxeBcCallback + (VOID **)&Private->PxeBcCallback ); if (EFI_ERROR (Status) || (Private->PxeBcCallback->Callback == NULL)) { @@ -1946,6 +1963,7 @@ EfiPxeBcSetParameters ( } else { Private->PxeBcCallback = NULL; } + Mode->MakeCallbacks = *NewMakeCallback; } @@ -1954,6 +1972,7 @@ EfiPxeBcSetParameters ( DEBUG ((DEBUG_WARN, "PXE: Failed to read system GUID from the smbios table!\n")); return EFI_INVALID_PARAMETER; } + Mode->SendGUID = *NewSendGUID; } @@ -1972,7 +1991,6 @@ EfiPxeBcSetParameters ( return EFI_SUCCESS; } - /** Updates the station IP address and/or subnet mask values of a network device. @@ -1997,9 +2015,9 @@ EfiPxeBcSetParameters ( EFI_STATUS EFIAPI EfiPxeBcSetStationIP ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This, - IN EFI_IP_ADDRESS *NewStationIp OPTIONAL, - IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL + IN EFI_PXE_BASE_CODE_PROTOCOL *This, + IN EFI_IP_ADDRESS *NewStationIp OPTIONAL, + IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL ) { EFI_STATUS Status; @@ -2010,7 +2028,7 @@ EfiPxeBcSetStationIP ( return EFI_INVALID_PARAMETER; } - if (NewStationIp != NULL && !NetIp6IsValidUnicast (&NewStationIp->v6)) { + if ((NewStationIp != NULL) && !NetIp6IsValidUnicast (&NewStationIp->v6)) { return EFI_INVALID_PARAMETER; } @@ -2019,15 +2037,17 @@ EfiPxeBcSetStationIP ( Status = EFI_SUCCESS; if (!Mode->UsingIpv6 && - NewSubnetMask != NULL && - !IP4_IS_VALID_NETMASK (NTOHL (NewSubnetMask->Addr[0]))) { + (NewSubnetMask != NULL) && + !IP4_IS_VALID_NETMASK (NTOHL (NewSubnetMask->Addr[0]))) + { return EFI_INVALID_PARAMETER; } - if (!Mode->UsingIpv6 && NewStationIp != NULL) { - if (IP4_IS_UNSPECIFIED(NTOHL (NewStationIp->Addr[0])) || - IP4_IS_LOCAL_BROADCAST(NTOHL (NewStationIp->Addr[0])) || - (NewSubnetMask != NULL && NewSubnetMask->Addr[0] != 0 && !NetIp4IsUnicast (NTOHL (NewStationIp->Addr[0]), NTOHL (NewSubnetMask->Addr[0])))) { + if (!Mode->UsingIpv6 && (NewStationIp != NULL)) { + if (IP4_IS_UNSPECIFIED (NTOHL (NewStationIp->Addr[0])) || + IP4_IS_LOCAL_BROADCAST (NTOHL (NewStationIp->Addr[0])) || + ((NewSubnetMask != NULL) && (NewSubnetMask->Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (NewStationIp->Addr[0]), NTOHL (NewSubnetMask->Addr[0])))) + { return EFI_INVALID_PARAMETER; } } @@ -2036,7 +2056,7 @@ EfiPxeBcSetStationIP ( return EFI_NOT_STARTED; } - if (Mode->UsingIpv6 && NewStationIp != NULL) { + if (Mode->UsingIpv6 && (NewStationIp != NULL)) { // // Set the IPv6 address by Ip6Config protocol. // @@ -2051,9 +2071,9 @@ EfiPxeBcSetStationIP ( CopyMem (&Private->StationIp, NewStationIp, sizeof (EFI_IP_ADDRESS)); } - if (!Mode->UsingIpv6 && NewSubnetMask != NULL) { + if (!Mode->UsingIpv6 && (NewSubnetMask != NULL)) { CopyMem (&Mode->SubnetMask, NewSubnetMask, sizeof (EFI_IP_ADDRESS)); - CopyMem (&Private->SubnetMask ,NewSubnetMask, sizeof (EFI_IP_ADDRESS)); + CopyMem (&Private->SubnetMask, NewSubnetMask, sizeof (EFI_IP_ADDRESS)); } Status = PxeBcFlushStationIp (Private, NewStationIp, NewSubnetMask); @@ -2065,7 +2085,6 @@ ON_EXIT: return Status; } - /** Updates the contents of the cached DHCP and Discover packets. @@ -2101,19 +2120,19 @@ ON_EXIT: EFI_STATUS EFIAPI EfiPxeBcSetPackets ( - IN EFI_PXE_BASE_CODE_PROTOCOL *This, - IN BOOLEAN *NewDhcpDiscoverValid OPTIONAL, - IN BOOLEAN *NewDhcpAckReceived OPTIONAL, - IN BOOLEAN *NewProxyOfferReceived OPTIONAL, - IN BOOLEAN *NewPxeDiscoverValid OPTIONAL, - IN BOOLEAN *NewPxeReplyReceived OPTIONAL, - IN BOOLEAN *NewPxeBisReplyReceived OPTIONAL, - IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover OPTIONAL, - IN EFI_PXE_BASE_CODE_PACKET *NewDhcpAck OPTIONAL, - IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer OPTIONAL, - IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover OPTIONAL, - IN EFI_PXE_BASE_CODE_PACKET *NewPxeReply OPTIONAL, - IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL + IN EFI_PXE_BASE_CODE_PROTOCOL *This, + IN BOOLEAN *NewDhcpDiscoverValid OPTIONAL, + IN BOOLEAN *NewDhcpAckReceived OPTIONAL, + IN BOOLEAN *NewProxyOfferReceived OPTIONAL, + IN BOOLEAN *NewPxeDiscoverValid OPTIONAL, + IN BOOLEAN *NewPxeReplyReceived OPTIONAL, + IN BOOLEAN *NewPxeBisReplyReceived OPTIONAL, + IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover OPTIONAL, + IN EFI_PXE_BASE_CODE_PACKET *NewDhcpAck OPTIONAL, + IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer OPTIONAL, + IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover OPTIONAL, + IN EFI_PXE_BASE_CODE_PACKET *NewPxeReply OPTIONAL, + IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL ) { PXEBC_PRIVATE_DATA *Private; @@ -2198,7 +2217,6 @@ EFI_PXE_BASE_CODE_PROTOCOL gPxeBcProtocolTemplate = { NULL }; - /** Callback function that is invoked when the PXE Base Code Protocol is about to transmit, has received, or is waiting to receive a packet. @@ -2236,8 +2254,8 @@ EfiPxeLoadFileCallback ( IN EFI_PXE_BASE_CODE_PACKET *PacketPtr OPTIONAL ) { - EFI_INPUT_KEY Key; - EFI_STATUS Status; + EFI_INPUT_KEY Key; + EFI_STATUS Status; // // Catch Ctrl-C or ESC to abort. @@ -2245,43 +2263,43 @@ EfiPxeLoadFileCallback ( Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key); if (!EFI_ERROR (Status)) { - - if (Key.ScanCode == SCAN_ESC || Key.UnicodeChar == (0x1F & 'c')) { - + if ((Key.ScanCode == SCAN_ESC) || (Key.UnicodeChar == (0x1F & 'c'))) { return EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT; } } + // // No print if receive packet // if (Received) { return EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE; } + // // Print only for three functions // switch (Function) { - - case EFI_PXE_BASE_CODE_FUNCTION_MTFTP: - // - // Print only for open MTFTP packets, not every MTFTP packets - // - if (PacketLength != 0 && PacketPtr != NULL) { - if (PacketPtr->Raw[0x1C] != 0x00 || PacketPtr->Raw[0x1D] != 0x01) { - return EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE; + case EFI_PXE_BASE_CODE_FUNCTION_MTFTP: + // + // Print only for open MTFTP packets, not every MTFTP packets + // + if ((PacketLength != 0) && (PacketPtr != NULL)) { + if ((PacketPtr->Raw[0x1C] != 0x00) || (PacketPtr->Raw[0x1D] != 0x01)) { + return EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE; + } } - } - break; - case EFI_PXE_BASE_CODE_FUNCTION_DHCP: - case EFI_PXE_BASE_CODE_FUNCTION_DISCOVER: - break; + break; - default: - return EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE; + case EFI_PXE_BASE_CODE_FUNCTION_DHCP: + case EFI_PXE_BASE_CODE_FUNCTION_DISCOVER: + break; + + default: + return EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE; } - if (PacketLength != 0 && PacketPtr != NULL) { + if ((PacketLength != 0) && (PacketPtr != NULL)) { // // Print '.' when transmit a packet // @@ -2291,12 +2309,11 @@ EfiPxeLoadFileCallback ( return EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE; } -EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL gPxeBcCallBackTemplate = { +EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL gPxeBcCallBackTemplate = { EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_REVISION, EfiPxeLoadFileCallback }; - /** Causes the driver to load a specified file. @@ -2328,11 +2345,11 @@ EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL gPxeBcCallBackTemplate = { EFI_STATUS EFIAPI EfiPxeLoadFile ( - IN EFI_LOAD_FILE_PROTOCOL *This, - IN EFI_DEVICE_PATH_PROTOCOL *FilePath, - IN BOOLEAN BootPolicy, - IN OUT UINTN *BufferSize, - IN VOID *Buffer OPTIONAL + IN EFI_LOAD_FILE_PROTOCOL *This, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath, + IN BOOLEAN BootPolicy, + IN OUT UINTN *BufferSize, + IN VOID *Buffer OPTIONAL ) { PXEBC_PRIVATE_DATA *Private; @@ -2342,7 +2359,7 @@ EfiPxeLoadFile ( EFI_STATUS Status; EFI_STATUS MediaStatus; - if (This == NULL || BufferSize == NULL || FilePath == NULL || !IsDevicePathEnd (FilePath)) { + if ((This == NULL) || (BufferSize == NULL) || (FilePath == NULL) || !IsDevicePathEnd (FilePath)) { return EFI_INVALID_PARAMETER; } @@ -2379,7 +2396,7 @@ EfiPxeLoadFile ( // Start Pxe Base Code to initialize PXE boot. // Status = PxeBc->Start (PxeBc, UsingIpv6); - if (Status == EFI_ALREADY_STARTED && UsingIpv6 != PxeBc->Mode->UsingIpv6) { + if ((Status == EFI_ALREADY_STARTED) && (UsingIpv6 != PxeBc->Mode->UsingIpv6)) { // // PxeBc protocol has already been started but not on the required IP version, restart it. // @@ -2388,13 +2405,15 @@ EfiPxeLoadFile ( Status = PxeBc->Start (PxeBc, UsingIpv6); } } - if (Status == EFI_SUCCESS || Status == EFI_ALREADY_STARTED) { + + if ((Status == EFI_SUCCESS) || (Status == EFI_ALREADY_STARTED)) { Status = PxeBcLoadBootFile (Private, BufferSize, Buffer); } - if (Status != EFI_SUCCESS && - Status != EFI_UNSUPPORTED && - Status != EFI_BUFFER_TOO_SMALL) { + if ((Status != EFI_SUCCESS) && + (Status != EFI_UNSUPPORTED) && + (Status != EFI_BUFFER_TOO_SMALL)) + { // // There are three cases, which needn't stop pxebc here. // 1. success to download file. diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.h b/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.h index fa4950c623..732889f23d 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.h +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcImpl.h @@ -49,9 +49,9 @@ #include #include -typedef struct _PXEBC_PRIVATE_DATA PXEBC_PRIVATE_DATA; -typedef struct _PXEBC_PRIVATE_PROTOCOL PXEBC_PRIVATE_PROTOCOL; -typedef struct _PXEBC_VIRTUAL_NIC PXEBC_VIRTUAL_NIC; +typedef struct _PXEBC_PRIVATE_DATA PXEBC_PRIVATE_DATA; +typedef struct _PXEBC_PRIVATE_PROTOCOL PXEBC_PRIVATE_PROTOCOL; +typedef struct _PXEBC_VIRTUAL_NIC PXEBC_VIRTUAL_NIC; #include "PxeBcDriver.h" #include "PxeBcDhcp4.h" @@ -60,131 +60,131 @@ typedef struct _PXEBC_VIRTUAL_NIC PXEBC_VIRTUAL_NIC; #include "PxeBcBoot.h" #include "PxeBcSupport.h" -#define PXEBC_DEFAULT_HOPLIMIT 64 -#define PXEBC_DEFAULT_LIFETIME 50000 // 50 ms, unit is microsecond -#define PXEBC_UDP_TIMEOUT 30000000 // 3 seconds, unit is 100nanosecond -#define PXEBC_DAD_ADDITIONAL_DELAY 30000000 // 3 seconds -#define PXEBC_MTFTP_TIMEOUT 4 -#define PXEBC_MTFTP_RETRIES 6 -#define PXEBC_DHCP_RETRIES 4 // refers to mPxeDhcpTimeout, also by PXE2.1 spec. -#define PXEBC_MENU_MAX_NUM 24 -#define PXEBC_OFFER_MAX_NUM 16 +#define PXEBC_DEFAULT_HOPLIMIT 64 +#define PXEBC_DEFAULT_LIFETIME 50000 // 50 ms, unit is microsecond +#define PXEBC_UDP_TIMEOUT 30000000 // 3 seconds, unit is 100nanosecond +#define PXEBC_DAD_ADDITIONAL_DELAY 30000000 // 3 seconds +#define PXEBC_MTFTP_TIMEOUT 4 +#define PXEBC_MTFTP_RETRIES 6 +#define PXEBC_DHCP_RETRIES 4 // refers to mPxeDhcpTimeout, also by PXE2.1 spec. +#define PXEBC_MENU_MAX_NUM 24 +#define PXEBC_OFFER_MAX_NUM 16 -#define PXEBC_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) +#define PXEBC_CHECK_MEDIA_WAITING_TIME EFI_TIMER_PERIOD_SECONDS(20) -#define PXEBC_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('P', 'X', 'E', 'P') -#define PXEBC_VIRTUAL_NIC_SIGNATURE SIGNATURE_32 ('P', 'X', 'E', 'V') -#define PXEBC_PRIVATE_DATA_FROM_PXEBC(a) CR (a, PXEBC_PRIVATE_DATA, PxeBc, PXEBC_PRIVATE_DATA_SIGNATURE) -#define PXEBC_PRIVATE_DATA_FROM_ID(a) CR (a, PXEBC_PRIVATE_DATA, Id, PXEBC_PRIVATE_DATA_SIGNATURE) -#define PXEBC_VIRTUAL_NIC_FROM_LOADFILE(a) CR (a, PXEBC_VIRTUAL_NIC, LoadFile, PXEBC_VIRTUAL_NIC_SIGNATURE) +#define PXEBC_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('P', 'X', 'E', 'P') +#define PXEBC_VIRTUAL_NIC_SIGNATURE SIGNATURE_32 ('P', 'X', 'E', 'V') +#define PXEBC_PRIVATE_DATA_FROM_PXEBC(a) CR (a, PXEBC_PRIVATE_DATA, PxeBc, PXEBC_PRIVATE_DATA_SIGNATURE) +#define PXEBC_PRIVATE_DATA_FROM_ID(a) CR (a, PXEBC_PRIVATE_DATA, Id, PXEBC_PRIVATE_DATA_SIGNATURE) +#define PXEBC_VIRTUAL_NIC_FROM_LOADFILE(a) CR (a, PXEBC_VIRTUAL_NIC, LoadFile, PXEBC_VIRTUAL_NIC_SIGNATURE) -#define PXE_ENABLED 0x01 -#define PXE_DISABLED 0x00 +#define PXE_ENABLED 0x01 +#define PXE_DISABLED 0x00 typedef union { - PXEBC_DHCP4_PACKET_CACHE Dhcp4; - PXEBC_DHCP6_PACKET_CACHE Dhcp6; + PXEBC_DHCP4_PACKET_CACHE Dhcp4; + PXEBC_DHCP6_PACKET_CACHE Dhcp6; } PXEBC_DHCP_PACKET_CACHE; struct _PXEBC_PRIVATE_PROTOCOL { - UINT64 Reserved; + UINT64 Reserved; }; struct _PXEBC_VIRTUAL_NIC { - UINT32 Signature; - EFI_HANDLE Controller; - EFI_LOAD_FILE_PROTOCOL LoadFile; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - PXEBC_PRIVATE_DATA *Private; + UINT32 Signature; + EFI_HANDLE Controller; + EFI_LOAD_FILE_PROTOCOL LoadFile; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + PXEBC_PRIVATE_DATA *Private; }; struct _PXEBC_PRIVATE_DATA { - UINT32 Signature; - EFI_HANDLE Controller; - EFI_HANDLE Image; - - PXEBC_PRIVATE_PROTOCOL Id; - EFI_SIMPLE_NETWORK_PROTOCOL *Snp; - - PXEBC_VIRTUAL_NIC *Ip4Nic; - PXEBC_VIRTUAL_NIC *Ip6Nic; - - EFI_HANDLE ArpChild; - EFI_HANDLE Ip4Child; - EFI_HANDLE Dhcp4Child; - EFI_HANDLE Mtftp4Child; - EFI_HANDLE Udp4ReadChild; - EFI_HANDLE Udp4WriteChild; - - EFI_ARP_PROTOCOL *Arp; - EFI_IP4_PROTOCOL *Ip4; - EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; - EFI_DHCP4_PROTOCOL *Dhcp4; - EFI_MTFTP4_PROTOCOL *Mtftp4; - EFI_UDP4_PROTOCOL *Udp4Read; - EFI_UDP4_PROTOCOL *Udp4Write; - - EFI_HANDLE Ip6Child; - EFI_HANDLE Dhcp6Child; - EFI_HANDLE Mtftp6Child; - EFI_HANDLE Udp6ReadChild; - EFI_HANDLE Udp6WriteChild; - - EFI_IP6_PROTOCOL *Ip6; - EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; - EFI_DHCP6_PROTOCOL *Dhcp6; - EFI_MTFTP6_PROTOCOL *Mtftp6; - EFI_UDP6_PROTOCOL *Udp6Read; - EFI_UDP6_PROTOCOL *Udp6Write; - EFI_DNS6_PROTOCOL *Dns6; - - EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii; - EFI_PXE_BASE_CODE_PROTOCOL PxeBc; - EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL LoadFileCallback; - EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *PxeBcCallback; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - - EFI_PXE_BASE_CODE_MODE Mode; - EFI_PXE_BASE_CODE_FUNCTION Function; - UINT32 Ip6Policy; - UINT32 SolicitTimes; - UINT64 ElapsedTime; - - EFI_UDP4_CONFIG_DATA Udp4CfgData; - EFI_UDP6_CONFIG_DATA Udp6CfgData; - EFI_IP4_CONFIG_DATA Ip4CfgData; - EFI_IP6_CONFIG_DATA Ip6CfgData; - - EFI_EVENT UdpTimeOutEvent; - EFI_EVENT ArpUpdateEvent; - EFI_IP4_COMPLETION_TOKEN IcmpToken; - EFI_IP6_COMPLETION_TOKEN Icmp6Token; - - BOOLEAN IsAddressOk; - BOOLEAN IsOfferSorted; - BOOLEAN IsProxyRecved; - BOOLEAN IsDoDiscover; - - EFI_IP_ADDRESS TmpStationIp; - EFI_IP_ADDRESS StationIp; - EFI_IP_ADDRESS SubnetMask; - EFI_IP_ADDRESS GatewayIp; - EFI_IP_ADDRESS ServerIp; - EFI_IPv6_ADDRESS *DnsServer; - UINT16 CurSrcPort; - UINT32 IaId; - - UINT32 Ip4MaxPacketSize; - UINT32 Ip6MaxPacketSize; - UINT8 *BootFileName; - UINTN BootFileSize; - UINTN BlockSize; - - PXEBC_DHCP_PACKET_CACHE ProxyOffer; - PXEBC_DHCP_PACKET_CACHE DhcpAck; - PXEBC_DHCP_PACKET_CACHE PxeReply; - EFI_DHCP6_PACKET *Dhcp6Request; - EFI_DHCP4_PACKET SeedPacket; + UINT32 Signature; + EFI_HANDLE Controller; + EFI_HANDLE Image; + + PXEBC_PRIVATE_PROTOCOL Id; + EFI_SIMPLE_NETWORK_PROTOCOL *Snp; + + PXEBC_VIRTUAL_NIC *Ip4Nic; + PXEBC_VIRTUAL_NIC *Ip6Nic; + + EFI_HANDLE ArpChild; + EFI_HANDLE Ip4Child; + EFI_HANDLE Dhcp4Child; + EFI_HANDLE Mtftp4Child; + EFI_HANDLE Udp4ReadChild; + EFI_HANDLE Udp4WriteChild; + + EFI_ARP_PROTOCOL *Arp; + EFI_IP4_PROTOCOL *Ip4; + EFI_IP4_CONFIG2_PROTOCOL *Ip4Config2; + EFI_DHCP4_PROTOCOL *Dhcp4; + EFI_MTFTP4_PROTOCOL *Mtftp4; + EFI_UDP4_PROTOCOL *Udp4Read; + EFI_UDP4_PROTOCOL *Udp4Write; + + EFI_HANDLE Ip6Child; + EFI_HANDLE Dhcp6Child; + EFI_HANDLE Mtftp6Child; + EFI_HANDLE Udp6ReadChild; + EFI_HANDLE Udp6WriteChild; + + EFI_IP6_PROTOCOL *Ip6; + EFI_IP6_CONFIG_PROTOCOL *Ip6Cfg; + EFI_DHCP6_PROTOCOL *Dhcp6; + EFI_MTFTP6_PROTOCOL *Mtftp6; + EFI_UDP6_PROTOCOL *Udp6Read; + EFI_UDP6_PROTOCOL *Udp6Write; + EFI_DNS6_PROTOCOL *Dns6; + + EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL *Nii; + EFI_PXE_BASE_CODE_PROTOCOL PxeBc; + EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL LoadFileCallback; + EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *PxeBcCallback; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + + EFI_PXE_BASE_CODE_MODE Mode; + EFI_PXE_BASE_CODE_FUNCTION Function; + UINT32 Ip6Policy; + UINT32 SolicitTimes; + UINT64 ElapsedTime; + + EFI_UDP4_CONFIG_DATA Udp4CfgData; + EFI_UDP6_CONFIG_DATA Udp6CfgData; + EFI_IP4_CONFIG_DATA Ip4CfgData; + EFI_IP6_CONFIG_DATA Ip6CfgData; + + EFI_EVENT UdpTimeOutEvent; + EFI_EVENT ArpUpdateEvent; + EFI_IP4_COMPLETION_TOKEN IcmpToken; + EFI_IP6_COMPLETION_TOKEN Icmp6Token; + + BOOLEAN IsAddressOk; + BOOLEAN IsOfferSorted; + BOOLEAN IsProxyRecved; + BOOLEAN IsDoDiscover; + + EFI_IP_ADDRESS TmpStationIp; + EFI_IP_ADDRESS StationIp; + EFI_IP_ADDRESS SubnetMask; + EFI_IP_ADDRESS GatewayIp; + EFI_IP_ADDRESS ServerIp; + EFI_IPv6_ADDRESS *DnsServer; + UINT16 CurSrcPort; + UINT32 IaId; + + UINT32 Ip4MaxPacketSize; + UINT32 Ip6MaxPacketSize; + UINT8 *BootFileName; + UINTN BootFileSize; + UINTN BlockSize; + + PXEBC_DHCP_PACKET_CACHE ProxyOffer; + PXEBC_DHCP_PACKET_CACHE DhcpAck; + PXEBC_DHCP_PACKET_CACHE PxeReply; + EFI_DHCP6_PACKET *Dhcp6Request; + EFI_DHCP4_PACKET SeedPacket; // // OfferIndex records the index of DhcpOffer[] buffer, and OfferCount records the num of each type of offer. @@ -213,12 +213,12 @@ struct _PXEBC_PRIVATE_DATA { // (OfferIndex is 0-based.) // // - UINT32 SelectIndex; - UINT32 SelectProxyType; - PXEBC_DHCP_PACKET_CACHE OfferBuffer[PXEBC_OFFER_MAX_NUM]; - UINT32 OfferNum; - UINT32 OfferCount[PxeOfferTypeMax]; - UINT32 OfferIndex[PxeOfferTypeMax][PXEBC_OFFER_MAX_NUM]; + UINT32 SelectIndex; + UINT32 SelectProxyType; + PXEBC_DHCP_PACKET_CACHE OfferBuffer[PXEBC_OFFER_MAX_NUM]; + UINT32 OfferNum; + UINT32 OfferCount[PxeOfferTypeMax]; + UINT32 OfferIndex[PxeOfferTypeMax][PXEBC_OFFER_MAX_NUM]; }; extern EFI_PXE_BASE_CODE_PROTOCOL gPxeBcProtocolTemplate; diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcMtftp.c b/NetworkPkg/UefiPxeBcDxe/PxeBcMtftp.c index addcafc0c8..3ac9c7a8aa 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcMtftp.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcMtftp.c @@ -9,7 +9,7 @@ #include "PxeBcImpl.h" -CHAR8 *mMtftpOptions[PXE_MTFTP_OPTION_MAXIMUM_INDEX] = { +CHAR8 *mMtftpOptions[PXE_MTFTP_OPTION_MAXIMUM_INDEX] = { "blksize", "timeout", "tsize", @@ -17,7 +17,6 @@ CHAR8 *mMtftpOptions[PXE_MTFTP_OPTION_MAXIMUM_INDEX] = { "windowsize" }; - /** This is a callback function when packets are received or transmitted in Mtftp driver. @@ -39,30 +38,30 @@ CHAR8 *mMtftpOptions[PXE_MTFTP_OPTION_MAXIMUM_INDEX] = { EFI_STATUS EFIAPI PxeBcMtftp6CheckPacket ( - IN EFI_MTFTP6_PROTOCOL *This, - IN EFI_MTFTP6_TOKEN *Token, - IN UINT16 PacketLen, - IN EFI_MTFTP6_PACKET *Packet + IN EFI_MTFTP6_PROTOCOL *This, + IN EFI_MTFTP6_TOKEN *Token, + IN UINT16 PacketLen, + IN EFI_MTFTP6_PACKET *Packet ) { - PXEBC_PRIVATE_DATA *Private; - EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *Callback; - EFI_STATUS Status; + PXEBC_PRIVATE_DATA *Private; + EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *Callback; + EFI_STATUS Status; - Private = (PXEBC_PRIVATE_DATA *) Token->Context; - Callback = Private->PxeBcCallback; - Status = EFI_SUCCESS; + Private = (PXEBC_PRIVATE_DATA *)Token->Context; + Callback = Private->PxeBcCallback; + Status = EFI_SUCCESS; if (Packet->OpCode == EFI_MTFTP6_OPCODE_ERROR) { // // Store the tftp error message into mode data and set the received flag. // Private->Mode.TftpErrorReceived = TRUE; - Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode; + Private->Mode.TftpError.ErrorCode = (UINT8)Packet->Error.ErrorCode; AsciiStrnCpyS ( Private->Mode.TftpError.ErrorString, PXE_MTFTP_ERROR_STRING_LENGTH, - (CHAR8 *) Packet->Error.ErrorMessage, + (CHAR8 *)Packet->Error.ErrorMessage, PXE_MTFTP_ERROR_STRING_LENGTH - 1 ); Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0'; @@ -73,12 +72,12 @@ PxeBcMtftp6CheckPacket ( // Callback to user if has when received any tftp packet. // Status = Callback->Callback ( - Callback, - Private->Function, - TRUE, - PacketLen, - (EFI_PXE_BASE_CODE_PACKET *) Packet - ); + Callback, + Private->Function, + TRUE, + PacketLen, + (EFI_PXE_BASE_CODE_PACKET *)Packet + ); if (Status != EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE) { // // User wants to abort current process if not EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE. @@ -95,7 +94,6 @@ PxeBcMtftp6CheckPacket ( return Status; } - /** This function is to get the size of a file using Tftp. @@ -114,23 +112,23 @@ PxeBcMtftp6CheckPacket ( **/ EFI_STATUS PxeBcMtftp6GetFileSize ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_MTFTP6_CONFIG_DATA *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN OUT UINT64 *BufferSize + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_MTFTP6_CONFIG_DATA *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN OUT UINT64 *BufferSize ) { - EFI_MTFTP6_PROTOCOL *Mtftp6; - EFI_MTFTP6_OPTION ReqOpt[3]; - EFI_MTFTP6_PACKET *Packet; - EFI_MTFTP6_OPTION *Option; - UINT32 PktLen; - UINT8 OptBuf[PXE_MTFTP_OPTBUF_MAXNUM_INDEX]; - UINTN OptBufSize; - UINT32 OptCnt; - EFI_STATUS Status; + EFI_MTFTP6_PROTOCOL *Mtftp6; + EFI_MTFTP6_OPTION ReqOpt[3]; + EFI_MTFTP6_PACKET *Packet; + EFI_MTFTP6_OPTION *Option; + UINT32 PktLen; + UINT8 OptBuf[PXE_MTFTP_OPTBUF_MAXNUM_INDEX]; + UINTN OptBufSize; + UINT32 OptCnt; + EFI_STATUS Status; *BufferSize = 0; Status = EFI_DEVICE_ERROR; @@ -150,22 +148,22 @@ PxeBcMtftp6GetFileSize ( // // Build the required options for get info. // - ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_TSIZE_INDEX]; + ReqOpt[0].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_TSIZE_INDEX]; PxeBcUintnToAscDec (0, OptBuf, OptBufSize); - ReqOpt[0].ValueStr = OptBuf; + ReqOpt[0].ValueStr = OptBuf; if (BlockSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; - ReqOpt[OptCnt].ValueStr = (UINT8 *) (ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1); - OptBufSize -= (AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1); + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; + ReqOpt[OptCnt].ValueStr = (UINT8 *)(ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *)ReqOpt[OptCnt-1].ValueStr) + 1); + OptBufSize -= (AsciiStrLen ((CHAR8 *)ReqOpt[OptCnt-1].ValueStr) + 1); PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, OptBufSize); OptCnt++; } if (WindowSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; - ReqOpt[OptCnt].ValueStr = (UINT8 *) (ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1); - OptBufSize -= (AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1); + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; + ReqOpt[OptCnt].ValueStr = (UINT8 *)(ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *)ReqOpt[OptCnt-1].ValueStr) + 1); + OptBufSize -= (AsciiStrLen ((CHAR8 *)ReqOpt[OptCnt-1].ValueStr) + 1); PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, OptBufSize); OptCnt++; } @@ -175,7 +173,7 @@ PxeBcMtftp6GetFileSize ( NULL, Filename, NULL, - (UINT8) OptCnt, + (UINT8)OptCnt, ReqOpt, &PktLen, &Packet @@ -186,15 +184,16 @@ PxeBcMtftp6GetFileSize ( // Store the tftp error message into mode data and set the received flag. // Private->Mode.TftpErrorReceived = TRUE; - Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode; + Private->Mode.TftpError.ErrorCode = (UINT8)Packet->Error.ErrorCode; AsciiStrnCpyS ( Private->Mode.TftpError.ErrorString, PXE_MTFTP_ERROR_STRING_LENGTH, - (CHAR8 *) Packet->Error.ErrorMessage, + (CHAR8 *)Packet->Error.ErrorMessage, PXE_MTFTP_ERROR_STRING_LENGTH - 1 ); Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0'; } + goto ON_ERROR; } @@ -206,7 +205,7 @@ PxeBcMtftp6GetFileSize ( Mtftp6, PktLen, Packet, - (UINT32 *) &OptCnt, + (UINT32 *)&OptCnt, &Option ); if (EFI_ERROR (Status)) { @@ -218,24 +217,26 @@ PxeBcMtftp6GetFileSize ( // Status = EFI_NOT_FOUND; while (OptCnt != 0) { - if (AsciiStrnCmp ((CHAR8 *) Option[OptCnt - 1].OptionStr, "tsize", 5) == 0) { - *BufferSize = AsciiStrDecimalToUint64 ((CHAR8 *) (Option[OptCnt - 1].ValueStr)); + if (AsciiStrnCmp ((CHAR8 *)Option[OptCnt - 1].OptionStr, "tsize", 5) == 0) { + *BufferSize = AsciiStrDecimalToUint64 ((CHAR8 *)(Option[OptCnt - 1].ValueStr)); Status = EFI_SUCCESS; } + OptCnt--; } + FreePool (Option); ON_ERROR: if (Packet != NULL) { FreePool (Packet); } + Mtftp6->Configure (Mtftp6, NULL); return Status; } - /** This function is to get data of a file using Tftp. @@ -255,23 +256,23 @@ ON_ERROR: **/ EFI_STATUS PxeBcMtftp6ReadFile ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_MTFTP6_CONFIG_DATA *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize, - IN BOOLEAN DontUseBuffer + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_MTFTP6_CONFIG_DATA *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize, + IN BOOLEAN DontUseBuffer ) { - EFI_MTFTP6_PROTOCOL *Mtftp6; - EFI_MTFTP6_TOKEN Token; - EFI_MTFTP6_OPTION ReqOpt[2]; - UINT32 OptCnt; - UINT8 BlksizeBuf[10]; - UINT8 WindowsizeBuf[10]; - EFI_STATUS Status; + EFI_MTFTP6_PROTOCOL *Mtftp6; + EFI_MTFTP6_TOKEN Token; + EFI_MTFTP6_OPTION ReqOpt[2]; + UINT32 OptCnt; + UINT8 BlksizeBuf[10]; + UINT8 WindowsizeBuf[10]; + EFI_STATUS Status; Status = EFI_DEVICE_ERROR; Mtftp6 = Private->Mtftp6; @@ -284,34 +285,33 @@ PxeBcMtftp6ReadFile ( } if (BlockSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; ReqOpt[OptCnt].ValueStr = BlksizeBuf; PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, sizeof (BlksizeBuf)); OptCnt++; } if (WindowSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; ReqOpt[OptCnt].ValueStr = WindowsizeBuf; PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, sizeof (WindowsizeBuf)); OptCnt++; } - - Token.Event = NULL; - Token.OverrideData = NULL; - Token.Filename = Filename; - Token.ModeStr = NULL; - Token.OptionCount = OptCnt; - Token.OptionList = ReqOpt; - Token.Context = Private; + Token.Event = NULL; + Token.OverrideData = NULL; + Token.Filename = Filename; + Token.ModeStr = NULL; + Token.OptionCount = OptCnt; + Token.OptionList = ReqOpt; + Token.Context = Private; if (DontUseBuffer) { - Token.BufferSize = 0; - Token.Buffer = NULL; + Token.BufferSize = 0; + Token.Buffer = NULL; } else { - Token.BufferSize = *BufferSize; - Token.Buffer = BufferPtr; + Token.BufferSize = *BufferSize; + Token.Buffer = BufferPtr; } Token.CheckPacket = PxeBcMtftp6CheckPacket; @@ -329,7 +329,6 @@ PxeBcMtftp6ReadFile ( return Status; } - /** This function is used to write the data of a file using Tftp. @@ -348,21 +347,21 @@ PxeBcMtftp6ReadFile ( **/ EFI_STATUS PxeBcMtftp6WriteFile ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_MTFTP6_CONFIG_DATA *Config, - IN UINT8 *Filename, - IN BOOLEAN Overwrite, - IN UINTN *BlockSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_MTFTP6_CONFIG_DATA *Config, + IN UINT8 *Filename, + IN BOOLEAN Overwrite, + IN UINTN *BlockSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize ) { - EFI_MTFTP6_PROTOCOL *Mtftp6; - EFI_MTFTP6_TOKEN Token; - EFI_MTFTP6_OPTION ReqOpt[1]; - UINT32 OptCnt; - UINT8 OptBuf[128]; - EFI_STATUS Status; + EFI_MTFTP6_PROTOCOL *Mtftp6; + EFI_MTFTP6_TOKEN Token; + EFI_MTFTP6_OPTION ReqOpt[1]; + UINT32 OptCnt; + UINT8 OptBuf[128]; + EFI_STATUS Status; Status = EFI_DEVICE_ERROR; Mtftp6 = Private->Mtftp6; @@ -375,7 +374,7 @@ PxeBcMtftp6WriteFile ( } if (BlockSize != NULL) { - ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; + ReqOpt[0].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; ReqOpt[0].ValueStr = OptBuf; PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX); OptCnt++; @@ -404,7 +403,6 @@ PxeBcMtftp6WriteFile ( return Status; } - /** This function is to read the data (file) from a directory using Tftp. @@ -424,23 +422,23 @@ PxeBcMtftp6WriteFile ( **/ EFI_STATUS PxeBcMtftp6ReadDirectory ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_MTFTP6_CONFIG_DATA *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize, - IN BOOLEAN DontUseBuffer + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_MTFTP6_CONFIG_DATA *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize, + IN BOOLEAN DontUseBuffer ) { - EFI_MTFTP6_PROTOCOL *Mtftp6; - EFI_MTFTP6_TOKEN Token; - EFI_MTFTP6_OPTION ReqOpt[2]; - UINT32 OptCnt; - UINT8 BlksizeBuf[10]; - UINT8 WindowsizeBuf[10]; - EFI_STATUS Status; + EFI_MTFTP6_PROTOCOL *Mtftp6; + EFI_MTFTP6_TOKEN Token; + EFI_MTFTP6_OPTION ReqOpt[2]; + UINT32 OptCnt; + UINT8 BlksizeBuf[10]; + UINT8 WindowsizeBuf[10]; + EFI_STATUS Status; Status = EFI_DEVICE_ERROR; Mtftp6 = Private->Mtftp6; @@ -453,33 +451,33 @@ PxeBcMtftp6ReadDirectory ( } if (BlockSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; ReqOpt[OptCnt].ValueStr = BlksizeBuf; PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, sizeof (BlksizeBuf)); OptCnt++; } if (WindowSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; ReqOpt[OptCnt].ValueStr = WindowsizeBuf; PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, sizeof (WindowsizeBuf)); OptCnt++; } - Token.Event = NULL; - Token.OverrideData = NULL; - Token.Filename = Filename; - Token.ModeStr = NULL; - Token.OptionCount = OptCnt; - Token.OptionList = ReqOpt; - Token.Context = Private; + Token.Event = NULL; + Token.OverrideData = NULL; + Token.Filename = Filename; + Token.ModeStr = NULL; + Token.OptionCount = OptCnt; + Token.OptionList = ReqOpt; + Token.Context = Private; if (DontUseBuffer) { - Token.BufferSize = 0; - Token.Buffer = NULL; + Token.BufferSize = 0; + Token.Buffer = NULL; } else { - Token.BufferSize = *BufferSize; - Token.Buffer = BufferPtr; + Token.BufferSize = *BufferSize; + Token.Buffer = BufferPtr; } Token.CheckPacket = PxeBcMtftp6CheckPacket; @@ -497,7 +495,6 @@ PxeBcMtftp6ReadDirectory ( return Status; } - /** This is a callback function when packets are received or transmitted in Mtftp driver. @@ -519,30 +516,30 @@ PxeBcMtftp6ReadDirectory ( EFI_STATUS EFIAPI PxeBcMtftp4CheckPacket ( - IN EFI_MTFTP4_PROTOCOL *This, - IN EFI_MTFTP4_TOKEN *Token, - IN UINT16 PacketLen, - IN EFI_MTFTP4_PACKET *Packet + IN EFI_MTFTP4_PROTOCOL *This, + IN EFI_MTFTP4_TOKEN *Token, + IN UINT16 PacketLen, + IN EFI_MTFTP4_PACKET *Packet ) { - PXEBC_PRIVATE_DATA *Private; - EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *Callback; - EFI_STATUS Status; + PXEBC_PRIVATE_DATA *Private; + EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *Callback; + EFI_STATUS Status; - Private = (PXEBC_PRIVATE_DATA *) Token->Context; - Callback = Private->PxeBcCallback; - Status = EFI_SUCCESS; + Private = (PXEBC_PRIVATE_DATA *)Token->Context; + Callback = Private->PxeBcCallback; + Status = EFI_SUCCESS; if (Packet->OpCode == EFI_MTFTP4_OPCODE_ERROR) { // // Store the tftp error message into mode data and set the received flag. // Private->Mode.TftpErrorReceived = TRUE; - Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode; + Private->Mode.TftpError.ErrorCode = (UINT8)Packet->Error.ErrorCode; AsciiStrnCpyS ( Private->Mode.TftpError.ErrorString, PXE_MTFTP_ERROR_STRING_LENGTH, - (CHAR8 *) Packet->Error.ErrorMessage, + (CHAR8 *)Packet->Error.ErrorMessage, PXE_MTFTP_ERROR_STRING_LENGTH - 1 ); Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0'; @@ -553,12 +550,12 @@ PxeBcMtftp4CheckPacket ( // Callback to user if has when received any tftp packet. // Status = Callback->Callback ( - Callback, - Private->Function, - TRUE, - PacketLen, - (EFI_PXE_BASE_CODE_PACKET *) Packet - ); + Callback, + Private->Function, + TRUE, + PacketLen, + (EFI_PXE_BASE_CODE_PACKET *)Packet + ); if (Status != EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE) { // // User wants to abort current process if not EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE. @@ -575,7 +572,6 @@ PxeBcMtftp4CheckPacket ( return Status; } - /** This function is to get size of a file using Tftp. @@ -594,23 +590,23 @@ PxeBcMtftp4CheckPacket ( **/ EFI_STATUS PxeBcMtftp4GetFileSize ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_MTFTP4_CONFIG_DATA *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN OUT UINT64 *BufferSize + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_MTFTP4_CONFIG_DATA *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN OUT UINT64 *BufferSize ) { - EFI_MTFTP4_PROTOCOL *Mtftp4; - EFI_MTFTP4_OPTION ReqOpt[3]; - EFI_MTFTP4_PACKET *Packet; - EFI_MTFTP4_OPTION *Option; - UINT32 PktLen; - UINT8 OptBuf[PXE_MTFTP_OPTBUF_MAXNUM_INDEX]; - UINTN OptBufSize; - UINT32 OptCnt; - EFI_STATUS Status; + EFI_MTFTP4_PROTOCOL *Mtftp4; + EFI_MTFTP4_OPTION ReqOpt[3]; + EFI_MTFTP4_PACKET *Packet; + EFI_MTFTP4_OPTION *Option; + UINT32 PktLen; + UINT8 OptBuf[PXE_MTFTP_OPTBUF_MAXNUM_INDEX]; + UINTN OptBufSize; + UINT32 OptCnt; + EFI_STATUS Status; *BufferSize = 0; Status = EFI_DEVICE_ERROR; @@ -630,22 +626,22 @@ PxeBcMtftp4GetFileSize ( // // Build the required options for get info. // - ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_TSIZE_INDEX]; + ReqOpt[0].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_TSIZE_INDEX]; PxeBcUintnToAscDec (0, OptBuf, OptBufSize); - ReqOpt[0].ValueStr = OptBuf; + ReqOpt[0].ValueStr = OptBuf; if (BlockSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; - ReqOpt[OptCnt].ValueStr = (UINT8 *) (ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1); - OptBufSize -= (AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1); + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; + ReqOpt[OptCnt].ValueStr = (UINT8 *)(ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *)ReqOpt[OptCnt-1].ValueStr) + 1); + OptBufSize -= (AsciiStrLen ((CHAR8 *)ReqOpt[OptCnt-1].ValueStr) + 1); PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, OptBufSize); OptCnt++; } if (WindowSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; - ReqOpt[OptCnt].ValueStr = (UINT8 *) (ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1); - OptBufSize -= (AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1); + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; + ReqOpt[OptCnt].ValueStr = (UINT8 *)(ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *)ReqOpt[OptCnt-1].ValueStr) + 1); + OptBufSize -= (AsciiStrLen ((CHAR8 *)ReqOpt[OptCnt-1].ValueStr) + 1); PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, OptBufSize); OptCnt++; } @@ -655,7 +651,7 @@ PxeBcMtftp4GetFileSize ( NULL, Filename, NULL, - (UINT8) OptCnt, + (UINT8)OptCnt, ReqOpt, &PktLen, &Packet @@ -666,15 +662,16 @@ PxeBcMtftp4GetFileSize ( // Store the tftp error message into mode data and set the received flag. // Private->Mode.TftpErrorReceived = TRUE; - Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode; + Private->Mode.TftpError.ErrorCode = (UINT8)Packet->Error.ErrorCode; AsciiStrnCpyS ( Private->Mode.TftpError.ErrorString, PXE_MTFTP_ERROR_STRING_LENGTH, - (CHAR8 *) Packet->Error.ErrorMessage, + (CHAR8 *)Packet->Error.ErrorMessage, PXE_MTFTP_ERROR_STRING_LENGTH - 1 ); Private->Mode.TftpError.ErrorString[PXE_MTFTP_ERROR_STRING_LENGTH - 1] = '\0'; } + goto ON_ERROR; } @@ -686,7 +683,7 @@ PxeBcMtftp4GetFileSize ( Mtftp4, PktLen, Packet, - (UINT32 *) &OptCnt, + (UINT32 *)&OptCnt, &Option ); if (EFI_ERROR (Status)) { @@ -698,24 +695,26 @@ PxeBcMtftp4GetFileSize ( // Status = EFI_NOT_FOUND; while (OptCnt != 0) { - if (AsciiStrnCmp ((CHAR8 *) Option[OptCnt - 1].OptionStr, "tsize", 5) == 0) { - *BufferSize = AsciiStrDecimalToUint64 ((CHAR8 *) (Option[OptCnt - 1].ValueStr)); + if (AsciiStrnCmp ((CHAR8 *)Option[OptCnt - 1].OptionStr, "tsize", 5) == 0) { + *BufferSize = AsciiStrDecimalToUint64 ((CHAR8 *)(Option[OptCnt - 1].ValueStr)); Status = EFI_SUCCESS; } + OptCnt--; } + FreePool (Option); ON_ERROR: if (Packet != NULL) { FreePool (Packet); } + Mtftp4->Configure (Mtftp4, NULL); return Status; } - /** This function is to read the data of a file using Tftp. @@ -735,23 +734,23 @@ ON_ERROR: **/ EFI_STATUS PxeBcMtftp4ReadFile ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_MTFTP4_CONFIG_DATA *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize, - IN BOOLEAN DontUseBuffer + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_MTFTP4_CONFIG_DATA *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize, + IN BOOLEAN DontUseBuffer ) { - EFI_MTFTP4_PROTOCOL *Mtftp4; - EFI_MTFTP4_TOKEN Token; - EFI_MTFTP4_OPTION ReqOpt[2]; - UINT32 OptCnt; - UINT8 BlksizeBuf[10]; - UINT8 WindowsizeBuf[10]; - EFI_STATUS Status; + EFI_MTFTP4_PROTOCOL *Mtftp4; + EFI_MTFTP4_TOKEN Token; + EFI_MTFTP4_OPTION ReqOpt[2]; + UINT32 OptCnt; + UINT8 BlksizeBuf[10]; + UINT8 WindowsizeBuf[10]; + EFI_STATUS Status; Status = EFI_DEVICE_ERROR; Mtftp4 = Private->Mtftp4; @@ -764,33 +763,33 @@ PxeBcMtftp4ReadFile ( } if (BlockSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; ReqOpt[OptCnt].ValueStr = BlksizeBuf; PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, sizeof (BlksizeBuf)); OptCnt++; } if (WindowSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; ReqOpt[OptCnt].ValueStr = WindowsizeBuf; PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, sizeof (WindowsizeBuf)); OptCnt++; } - Token.Event = NULL; - Token.OverrideData = NULL; - Token.Filename = Filename; - Token.ModeStr = NULL; - Token.OptionCount = OptCnt; - Token.OptionList = ReqOpt; - Token.Context = Private; + Token.Event = NULL; + Token.OverrideData = NULL; + Token.Filename = Filename; + Token.ModeStr = NULL; + Token.OptionCount = OptCnt; + Token.OptionList = ReqOpt; + Token.Context = Private; if (DontUseBuffer) { - Token.BufferSize = 0; - Token.Buffer = NULL; + Token.BufferSize = 0; + Token.Buffer = NULL; } else { - Token.BufferSize = *BufferSize; - Token.Buffer = BufferPtr; + Token.BufferSize = *BufferSize; + Token.Buffer = BufferPtr; } Token.CheckPacket = PxeBcMtftp4CheckPacket; @@ -808,7 +807,6 @@ PxeBcMtftp4ReadFile ( return Status; } - /** This function is to write the data of a file using Tftp. @@ -827,34 +825,34 @@ PxeBcMtftp4ReadFile ( **/ EFI_STATUS PxeBcMtftp4WriteFile ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_MTFTP4_CONFIG_DATA *Config, - IN UINT8 *Filename, - IN BOOLEAN Overwrite, - IN UINTN *BlockSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_MTFTP4_CONFIG_DATA *Config, + IN UINT8 *Filename, + IN BOOLEAN Overwrite, + IN UINTN *BlockSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize ) { - EFI_MTFTP4_PROTOCOL *Mtftp4; - EFI_MTFTP4_TOKEN Token; - EFI_MTFTP4_OPTION ReqOpt[1]; - UINT32 OptCnt; - UINT8 OptBuf[128]; - EFI_STATUS Status; + EFI_MTFTP4_PROTOCOL *Mtftp4; + EFI_MTFTP4_TOKEN Token; + EFI_MTFTP4_OPTION ReqOpt[1]; + UINT32 OptCnt; + UINT8 OptBuf[128]; + EFI_STATUS Status; Status = EFI_DEVICE_ERROR; Mtftp4 = Private->Mtftp4; OptCnt = 0; Config->InitialServerPort = PXEBC_BS_DOWNLOAD_PORT; - Status = Mtftp4->Configure (Mtftp4, Config); + Status = Mtftp4->Configure (Mtftp4, Config); if (EFI_ERROR (Status)) { return Status; } if (BlockSize != NULL) { - ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; + ReqOpt[0].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; ReqOpt[0].ValueStr = OptBuf; PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX); OptCnt++; @@ -883,7 +881,6 @@ PxeBcMtftp4WriteFile ( return Status; } - /** This function is to get data (file) from a directory using Tftp. @@ -903,23 +900,23 @@ PxeBcMtftp4WriteFile ( **/ EFI_STATUS PxeBcMtftp4ReadDirectory ( - IN PXEBC_PRIVATE_DATA *Private, - IN EFI_MTFTP4_CONFIG_DATA *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize, - IN BOOLEAN DontUseBuffer + IN PXEBC_PRIVATE_DATA *Private, + IN EFI_MTFTP4_CONFIG_DATA *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize, + IN BOOLEAN DontUseBuffer ) { - EFI_MTFTP4_PROTOCOL *Mtftp4; - EFI_MTFTP4_TOKEN Token; - EFI_MTFTP4_OPTION ReqOpt[2]; - UINT32 OptCnt; - UINT8 BlksizeBuf[10]; - UINT8 WindowsizeBuf[10]; - EFI_STATUS Status; + EFI_MTFTP4_PROTOCOL *Mtftp4; + EFI_MTFTP4_TOKEN Token; + EFI_MTFTP4_OPTION ReqOpt[2]; + UINT32 OptCnt; + UINT8 BlksizeBuf[10]; + UINT8 WindowsizeBuf[10]; + EFI_STATUS Status; Status = EFI_DEVICE_ERROR; Mtftp4 = Private->Mtftp4; @@ -932,33 +929,33 @@ PxeBcMtftp4ReadDirectory ( } if (BlockSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX]; ReqOpt[OptCnt].ValueStr = BlksizeBuf; PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, sizeof (BlksizeBuf)); OptCnt++; } if (WindowSize != NULL) { - ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; + ReqOpt[OptCnt].OptionStr = (UINT8 *)mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX]; ReqOpt[OptCnt].ValueStr = WindowsizeBuf; PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, sizeof (WindowsizeBuf)); OptCnt++; } - Token.Event = NULL; - Token.OverrideData = NULL; - Token.Filename = Filename; - Token.ModeStr = NULL; - Token.OptionCount = OptCnt; - Token.OptionList = ReqOpt; - Token.Context = Private; + Token.Event = NULL; + Token.OverrideData = NULL; + Token.Filename = Filename; + Token.ModeStr = NULL; + Token.OptionCount = OptCnt; + Token.OptionList = ReqOpt; + Token.Context = Private; if (DontUseBuffer) { - Token.BufferSize = 0; - Token.Buffer = NULL; + Token.BufferSize = 0; + Token.Buffer = NULL; } else { - Token.BufferSize = *BufferSize; - Token.Buffer = BufferPtr; + Token.BufferSize = *BufferSize; + Token.Buffer = BufferPtr; } Token.CheckPacket = PxeBcMtftp4CheckPacket; @@ -976,7 +973,6 @@ PxeBcMtftp4ReadDirectory ( return Status; } - /** This function is wrapper to get the file size using TFTP. @@ -995,18 +991,18 @@ PxeBcMtftp4ReadDirectory ( **/ EFI_STATUS PxeBcTftpGetFileSize ( - IN PXEBC_PRIVATE_DATA *Private, - IN VOID *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN OUT UINT64 *BufferSize + IN PXEBC_PRIVATE_DATA *Private, + IN VOID *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN OUT UINT64 *BufferSize ) { if (Private->PxeBc.Mode->UsingIpv6) { return PxeBcMtftp6GetFileSize ( Private, - (EFI_MTFTP6_CONFIG_DATA *) Config, + (EFI_MTFTP6_CONFIG_DATA *)Config, Filename, BlockSize, WindowSize, @@ -1015,7 +1011,7 @@ PxeBcTftpGetFileSize ( } else { return PxeBcMtftp4GetFileSize ( Private, - (EFI_MTFTP4_CONFIG_DATA *) Config, + (EFI_MTFTP4_CONFIG_DATA *)Config, Filename, BlockSize, WindowSize, @@ -1024,7 +1020,6 @@ PxeBcTftpGetFileSize ( } } - /** This function is a wrapper to get file using TFTP. @@ -1044,20 +1039,20 @@ PxeBcTftpGetFileSize ( **/ EFI_STATUS PxeBcTftpReadFile ( - IN PXEBC_PRIVATE_DATA *Private, - IN VOID *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize, - IN BOOLEAN DontUseBuffer + IN PXEBC_PRIVATE_DATA *Private, + IN VOID *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize, + IN BOOLEAN DontUseBuffer ) { if (Private->PxeBc.Mode->UsingIpv6) { return PxeBcMtftp6ReadFile ( Private, - (EFI_MTFTP6_CONFIG_DATA *) Config, + (EFI_MTFTP6_CONFIG_DATA *)Config, Filename, BlockSize, WindowSize, @@ -1068,7 +1063,7 @@ PxeBcTftpReadFile ( } else { return PxeBcMtftp4ReadFile ( Private, - (EFI_MTFTP4_CONFIG_DATA *) Config, + (EFI_MTFTP4_CONFIG_DATA *)Config, Filename, BlockSize, WindowSize, @@ -1079,7 +1074,6 @@ PxeBcTftpReadFile ( } } - /** This function is a wrapper to write file using TFTP. @@ -1098,19 +1092,19 @@ PxeBcTftpReadFile ( **/ EFI_STATUS PxeBcTftpWriteFile ( - IN PXEBC_PRIVATE_DATA *Private, - IN VOID *Config, - IN UINT8 *Filename, - IN BOOLEAN Overwrite, - IN UINTN *BlockSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize + IN PXEBC_PRIVATE_DATA *Private, + IN VOID *Config, + IN UINT8 *Filename, + IN BOOLEAN Overwrite, + IN UINTN *BlockSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize ) { if (Private->PxeBc.Mode->UsingIpv6) { return PxeBcMtftp6WriteFile ( Private, - (EFI_MTFTP6_CONFIG_DATA *) Config, + (EFI_MTFTP6_CONFIG_DATA *)Config, Filename, Overwrite, BlockSize, @@ -1120,7 +1114,7 @@ PxeBcTftpWriteFile ( } else { return PxeBcMtftp4WriteFile ( Private, - (EFI_MTFTP4_CONFIG_DATA *) Config, + (EFI_MTFTP4_CONFIG_DATA *)Config, Filename, Overwrite, BlockSize, @@ -1130,7 +1124,6 @@ PxeBcTftpWriteFile ( } } - /** This function is a wrapper to get the data (file) from a directory using TFTP. @@ -1150,20 +1143,20 @@ PxeBcTftpWriteFile ( **/ EFI_STATUS PxeBcTftpReadDirectory ( - IN PXEBC_PRIVATE_DATA *Private, - IN VOID *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize, - IN BOOLEAN DontUseBuffer + IN PXEBC_PRIVATE_DATA *Private, + IN VOID *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize, + IN BOOLEAN DontUseBuffer ) { if (Private->PxeBc.Mode->UsingIpv6) { return PxeBcMtftp6ReadDirectory ( Private, - (EFI_MTFTP6_CONFIG_DATA *) Config, + (EFI_MTFTP6_CONFIG_DATA *)Config, Filename, BlockSize, WindowSize, @@ -1174,7 +1167,7 @@ PxeBcTftpReadDirectory ( } else { return PxeBcMtftp4ReadDirectory ( Private, - (EFI_MTFTP4_CONFIG_DATA *) Config, + (EFI_MTFTP4_CONFIG_DATA *)Config, Filename, BlockSize, WindowSize, @@ -1184,4 +1177,3 @@ PxeBcTftpReadDirectory ( ); } } - diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcMtftp.h b/NetworkPkg/UefiPxeBcDxe/PxeBcMtftp.h index 7356c0ae9e..0b0cfd195b 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcMtftp.h +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcMtftp.h @@ -18,9 +18,8 @@ #define PXE_MTFTP_OPTION_MAXIMUM_INDEX 5 #define PXE_MTFTP_OPTBUF_MAXNUM_INDEX 128 -#define PXE_MTFTP_ERROR_STRING_LENGTH 127 // refer to definition of struct EFI_PXE_BASE_CODE_TFTP_ERROR. -#define PXE_MTFTP_DEFAULT_BLOCK_SIZE 512 // refer to rfc-1350. - +#define PXE_MTFTP_ERROR_STRING_LENGTH 127 // refer to definition of struct EFI_PXE_BASE_CODE_TFTP_ERROR. +#define PXE_MTFTP_DEFAULT_BLOCK_SIZE 512 // refer to rfc-1350. /** This function is wrapper to get the file size using TFTP. @@ -40,15 +39,14 @@ **/ EFI_STATUS PxeBcTftpGetFileSize ( - IN PXEBC_PRIVATE_DATA *Private, - IN VOID *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN OUT UINT64 *BufferSize + IN PXEBC_PRIVATE_DATA *Private, + IN VOID *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN OUT UINT64 *BufferSize ); - /** This function is a wrapper to get a file using TFTP. @@ -68,17 +66,16 @@ PxeBcTftpGetFileSize ( **/ EFI_STATUS PxeBcTftpReadFile ( - IN PXEBC_PRIVATE_DATA *Private, - IN VOID *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize, - IN BOOLEAN DontUseBuffer + IN PXEBC_PRIVATE_DATA *Private, + IN VOID *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize, + IN BOOLEAN DontUseBuffer ); - /** This function is a wrapper to put file with TFTP. @@ -97,16 +94,15 @@ PxeBcTftpReadFile ( **/ EFI_STATUS PxeBcTftpWriteFile ( - IN PXEBC_PRIVATE_DATA *Private, - IN VOID *Config, - IN UINT8 *Filename, - IN BOOLEAN Overwrite, - IN UINTN *BlockSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize + IN PXEBC_PRIVATE_DATA *Private, + IN VOID *Config, + IN UINT8 *Filename, + IN BOOLEAN Overwrite, + IN UINTN *BlockSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize ); - /** This function is a wrapper to get the data (file) from a directory using TFTP. @@ -126,13 +122,14 @@ PxeBcTftpWriteFile ( **/ EFI_STATUS PxeBcTftpReadDirectory ( - IN PXEBC_PRIVATE_DATA *Private, - IN VOID *Config, - IN UINT8 *Filename, - IN UINTN *BlockSize, - IN UINTN *WindowSize, - IN UINT8 *BufferPtr, - IN OUT UINT64 *BufferSize, - IN BOOLEAN DontUseBuffer + IN PXEBC_PRIVATE_DATA *Private, + IN VOID *Config, + IN UINT8 *Filename, + IN UINTN *BlockSize, + IN UINTN *WindowSize, + IN UINT8 *BufferPtr, + IN OUT UINT64 *BufferSize, + IN BOOLEAN DontUseBuffer ); + #endif diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcSupport.c b/NetworkPkg/UefiPxeBcDxe/PxeBcSupport.c index 5579494c5b..887ea3e7d7 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcSupport.c +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcSupport.c @@ -9,7 +9,6 @@ #include "PxeBcImpl.h" - /** Flush the previous configuration using the new station Ip address. @@ -23,20 +22,20 @@ **/ EFI_STATUS PxeBcFlushStationIp ( - PXEBC_PRIVATE_DATA *Private, - EFI_IP_ADDRESS *StationIp OPTIONAL, - EFI_IP_ADDRESS *SubnetMask OPTIONAL + PXEBC_PRIVATE_DATA *Private, + EFI_IP_ADDRESS *StationIp OPTIONAL, + EFI_IP_ADDRESS *SubnetMask OPTIONAL ) { - EFI_PXE_BASE_CODE_MODE *Mode; - EFI_STATUS Status; - EFI_ARP_CONFIG_DATA ArpConfigData; + EFI_PXE_BASE_CODE_MODE *Mode; + EFI_STATUS Status; + EFI_ARP_CONFIG_DATA ArpConfigData; Mode = Private->PxeBc.Mode; Status = EFI_SUCCESS; ZeroMem (&ArpConfigData, sizeof (EFI_ARP_CONFIG_DATA)); - if (Mode->UsingIpv6 && StationIp != NULL) { + if (Mode->UsingIpv6 && (StationIp != NULL)) { // // Overwrite Udp6CfgData/Ip6CfgData StationAddress. // @@ -61,8 +60,8 @@ PxeBcFlushStationIp ( // Reconfigure the ARP instance with station Ip address. // ArpConfigData.SwAddressType = 0x0800; - ArpConfigData.SwAddressLength = (UINT8) sizeof (EFI_IPv4_ADDRESS); - ArpConfigData.StationAddress = StationIp; + ArpConfigData.SwAddressLength = (UINT8)sizeof (EFI_IPv4_ADDRESS); + ArpConfigData.StationAddress = StationIp; Private->Arp->Configure (Private->Arp, NULL); Private->Arp->Configure (Private->Arp, &ArpConfigData); @@ -82,7 +81,7 @@ PxeBcFlushStationIp ( CopyMem (&Private->Ip4CfgData.SubnetMask, SubnetMask, sizeof (EFI_IPv4_ADDRESS)); } - if (StationIp != NULL && SubnetMask != NULL) { + if ((StationIp != NULL) && (SubnetMask != NULL)) { // // Updated the route table. // @@ -92,7 +91,7 @@ PxeBcFlushStationIp ( Mode->RouteTable[0].GwAddr.Addr[0] = 0; } - if (StationIp != NULL || SubnetMask != NULL) { + if ((StationIp != NULL) || (SubnetMask != NULL)) { // // Reconfigure the Ip4 instance to capture background ICMP packets with new station Ip address. // @@ -112,7 +111,6 @@ ON_EXIT: return Status; } - /** Notify the callback function when an event is triggered. @@ -123,14 +121,13 @@ ON_EXIT: VOID EFIAPI PxeBcCommonNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - *((BOOLEAN *) Context) = TRUE; + *((BOOLEAN *)Context) = TRUE; } - /** Do arp resolution from arp cache in PxeBcMode. @@ -145,12 +142,12 @@ PxeBcCommonNotify ( **/ BOOLEAN PxeBcCheckArpCache ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN EFI_IPv4_ADDRESS *Ip4Addr, - OUT EFI_MAC_ADDRESS *MacAddress + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN EFI_IPv4_ADDRESS *Ip4Addr, + OUT EFI_MAC_ADDRESS *MacAddress ) { - UINT32 Index; + UINT32 Index; ASSERT (!Mode->UsingIpv6); @@ -171,7 +168,6 @@ PxeBcCheckArpCache ( return FALSE; } - /** Update the arp cache periodically. @@ -182,8 +178,8 @@ PxeBcCheckArpCache ( VOID EFIAPI PxeBcArpCacheUpdate ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { PXEBC_PRIVATE_DATA *Private; @@ -194,7 +190,7 @@ PxeBcArpCacheUpdate ( UINT32 Index; EFI_STATUS Status; - Private = (PXEBC_PRIVATE_DATA *) Context; + Private = (PXEBC_PRIVATE_DATA *)Context; Mode = Private->PxeBc.Mode; ASSERT (!Mode->UsingIpv6); @@ -228,14 +224,13 @@ PxeBcArpCacheUpdate ( ); CopyMem ( &Mode->ArpCache[Index].MacAddr, - (UINT8 *) (ArpEntry + 1) + ArpEntry->SwAddressLength, + (UINT8 *)(ArpEntry + 1) + ArpEntry->SwAddressLength, ArpEntry->HwAddressLength ); - ArpEntry = (EFI_ARP_FIND_DATA *) ((UINT8 *) ArpEntry + EntryLength); + ArpEntry = (EFI_ARP_FIND_DATA *)((UINT8 *)ArpEntry + EntryLength); } } - /** Notify function to handle the received ICMP message in DPC. @@ -245,20 +240,20 @@ PxeBcArpCacheUpdate ( VOID EFIAPI PxeBcIcmpErrorDpcHandle ( - IN VOID *Context + IN VOID *Context ) { - EFI_STATUS Status; - EFI_IP4_RECEIVE_DATA *RxData; - EFI_IP4_PROTOCOL *Ip4; - PXEBC_PRIVATE_DATA *Private; - EFI_PXE_BASE_CODE_MODE *Mode; - UINT8 Type; - UINTN Index; - UINT32 CopiedLen; - UINT8 *IcmpError; - - Private = (PXEBC_PRIVATE_DATA *) Context; + EFI_STATUS Status; + EFI_IP4_RECEIVE_DATA *RxData; + EFI_IP4_PROTOCOL *Ip4; + PXEBC_PRIVATE_DATA *Private; + EFI_PXE_BASE_CODE_MODE *Mode; + UINT8 Type; + UINTN Index; + UINT32 CopiedLen; + UINT8 *IcmpError; + + Private = (PXEBC_PRIVATE_DATA *)Context; Mode = &Private->Mode; Status = Private->IcmpToken.Status; RxData = Private->IcmpToken.Packet.RxData; @@ -284,10 +279,11 @@ PxeBcIcmpErrorDpcHandle ( goto ON_RECYCLE; } - if (EFI_IP4 (RxData->Header->SourceAddress) != 0 && + if ((EFI_IP4 (RxData->Header->SourceAddress) != 0) && (NTOHL (Mode->SubnetMask.Addr[0]) != 0) && - IP4_NET_EQUAL (NTOHL(Mode->StationIp.Addr[0]), EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0])) && - !NetIp4IsUnicast (EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0]))) { + IP4_NET_EQUAL (NTOHL (Mode->StationIp.Addr[0]), EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0])) && + !NetIp4IsUnicast (EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0]))) + { // // The source address of the received packet should be a valid unicast address. // @@ -306,13 +302,14 @@ PxeBcIcmpErrorDpcHandle ( // ASSERT (RxData->Header->Protocol == EFI_IP_PROTO_ICMP); - Type = *((UINT8 *) RxData->FragmentTable[0].FragmentBuffer); + Type = *((UINT8 *)RxData->FragmentTable[0].FragmentBuffer); - if (Type != ICMP_DEST_UNREACHABLE && - Type != ICMP_SOURCE_QUENCH && - Type != ICMP_REDIRECT && - Type != ICMP_TIME_EXCEEDED && - Type != ICMP_PARAMETER_PROBLEM) { + if ((Type != ICMP_DEST_UNREACHABLE) && + (Type != ICMP_SOURCE_QUENCH) && + (Type != ICMP_REDIRECT) && + (Type != ICMP_TIME_EXCEEDED) && + (Type != ICMP_PARAMETER_PROBLEM)) + { // // The type of the receveid ICMP message should be ICMP_ERROR_MESSAGE. // @@ -323,7 +320,7 @@ PxeBcIcmpErrorDpcHandle ( // Copy the right ICMP error message into mode data. // CopiedLen = 0; - IcmpError = (UINT8 *) &Mode->IcmpError; + IcmpError = (UINT8 *)&Mode->IcmpError; for (Index = 0; Index < RxData->FragmentCount; Index++) { CopiedLen += RxData->FragmentTable[Index].FragmentLength; @@ -340,6 +337,7 @@ PxeBcIcmpErrorDpcHandle ( CopiedLen - sizeof (EFI_PXE_BASE_CODE_ICMP_ERROR) ); } + IcmpError += CopiedLen; } @@ -351,7 +349,6 @@ ON_EXIT: Ip4->Receive (Ip4, &Private->IcmpToken); } - /** Callback function to update the latest ICMP6 error message. @@ -362,14 +359,13 @@ ON_EXIT: VOID EFIAPI PxeBcIcmpErrorUpdate ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { QueueDpc (TPL_CALLBACK, PxeBcIcmpErrorDpcHandle, Context); } - /** Notify function to handle the received ICMP6 message in DPC. @@ -379,7 +375,7 @@ PxeBcIcmpErrorUpdate ( VOID EFIAPI PxeBcIcmp6ErrorDpcHandle ( - IN VOID *Context + IN VOID *Context ) { PXEBC_PRIVATE_DATA *Private; @@ -392,7 +388,7 @@ PxeBcIcmp6ErrorDpcHandle ( UINT32 CopiedLen; UINT8 *Icmp6Error; - Private = (PXEBC_PRIVATE_DATA *) Context; + Private = (PXEBC_PRIVATE_DATA *)Context; Mode = &Private->Mode; Status = Private->Icmp6Token.Status; RxData = Private->Icmp6Token.Packet.RxData; @@ -426,7 +422,8 @@ PxeBcIcmp6ErrorDpcHandle ( } if (!NetIp6IsUnspecifiedAddr (&Mode->StationIp.v6) && - !EFI_IP6_EQUAL (&RxData->Header->DestinationAddress, &Mode->StationIp.v6)) { + !EFI_IP6_EQUAL (&RxData->Header->DestinationAddress, &Mode->StationIp.v6)) + { // // The destination address of the received packet should be equal to the host address. // @@ -438,12 +435,13 @@ PxeBcIcmp6ErrorDpcHandle ( // ASSERT (RxData->Header->NextHeader == IP6_ICMP); - Type = *((UINT8 *) RxData->FragmentTable[0].FragmentBuffer); + Type = *((UINT8 *)RxData->FragmentTable[0].FragmentBuffer); - if (Type != ICMP_V6_DEST_UNREACHABLE && - Type != ICMP_V6_PACKET_TOO_BIG && - Type != ICMP_V6_TIME_EXCEEDED && - Type != ICMP_V6_PARAMETER_PROBLEM) { + if ((Type != ICMP_V6_DEST_UNREACHABLE) && + (Type != ICMP_V6_PACKET_TOO_BIG) && + (Type != ICMP_V6_TIME_EXCEEDED) && + (Type != ICMP_V6_PARAMETER_PROBLEM)) + { // // The type of the receveid packet should be an ICMP6 error message. // @@ -454,7 +452,7 @@ PxeBcIcmp6ErrorDpcHandle ( // Copy the right ICMP6 error message into mode data. // CopiedLen = 0; - Icmp6Error = (UINT8 *) &Mode->IcmpError; + Icmp6Error = (UINT8 *)&Mode->IcmpError; for (Index = 0; Index < RxData->FragmentCount; Index++) { CopiedLen += RxData->FragmentTable[Index].FragmentLength; @@ -471,6 +469,7 @@ PxeBcIcmp6ErrorDpcHandle ( CopiedLen - sizeof (EFI_PXE_BASE_CODE_ICMP_ERROR) ); } + Icmp6Error += CopiedLen; } @@ -482,7 +481,6 @@ ON_EXIT: Ip6->Receive (Ip6, &Private->Icmp6Token); } - /** Callback function to update the latest ICMP6 error message. @@ -493,14 +491,13 @@ ON_EXIT: VOID EFIAPI PxeBcIcmp6ErrorUpdate ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { QueueDpc (TPL_CALLBACK, PxeBcIcmp6ErrorDpcHandle, Context); } - /** This function is to configure a UDPv4 instance for UdpWrite. @@ -563,7 +560,7 @@ PxeBcConfigUdp4Write ( } } - if (!EFI_ERROR (Status) && *SrcPort == 0) { + if (!EFI_ERROR (Status) && (*SrcPort == 0)) { Udp4->GetModeData (Udp4, &Udp4CfgData, NULL, NULL, NULL); *SrcPort = Udp4CfgData.StationPort; } @@ -571,7 +568,6 @@ PxeBcConfigUdp4Write ( return Status; } - /** This function is to configure a UDPv6 instance for UdpWrite. @@ -613,7 +609,7 @@ PxeBcConfigUdp6Write ( return Status; } - if (!EFI_ERROR (Status) && *SrcPort == 0) { + if (!EFI_ERROR (Status) && (*SrcPort == 0)) { Udp6->GetModeData (Udp6, &CfgData, NULL, NULL, NULL); *SrcPort = CfgData.StationPort; } @@ -621,7 +617,6 @@ PxeBcConfigUdp6Write ( return Status; } - /** This function is to configure a UDPv4 instance for UdpWrite. @@ -642,54 +637,54 @@ PxeBcConfigUdp6Write ( **/ EFI_STATUS PxeBcUdp4Write ( - IN EFI_UDP4_PROTOCOL *Udp4, - IN EFI_UDP4_SESSION_DATA *Session, - IN EFI_EVENT TimeoutEvent, - IN EFI_IPv4_ADDRESS *Gateway OPTIONAL, - IN UINTN *HeaderSize OPTIONAL, - IN VOID *HeaderPtr OPTIONAL, - IN UINTN *BufferSize, - IN VOID *BufferPtr + IN EFI_UDP4_PROTOCOL *Udp4, + IN EFI_UDP4_SESSION_DATA *Session, + IN EFI_EVENT TimeoutEvent, + IN EFI_IPv4_ADDRESS *Gateway OPTIONAL, + IN UINTN *HeaderSize OPTIONAL, + IN VOID *HeaderPtr OPTIONAL, + IN UINTN *BufferSize, + IN VOID *BufferPtr ) { - EFI_UDP4_COMPLETION_TOKEN Token; - EFI_UDP4_TRANSMIT_DATA *TxData; - UINT32 TxLength; - UINT32 FragCount; - UINT32 DataLength; - BOOLEAN IsDone; - EFI_STATUS Status; + EFI_UDP4_COMPLETION_TOKEN Token; + EFI_UDP4_TRANSMIT_DATA *TxData; + UINT32 TxLength; + UINT32 FragCount; + UINT32 DataLength; + BOOLEAN IsDone; + EFI_STATUS Status; // // Arrange one fragment buffer for data, and another fragment buffer for header if has. // FragCount = (HeaderSize != NULL) ? 2 : 1; TxLength = sizeof (EFI_UDP4_TRANSMIT_DATA) + (FragCount - 1) * sizeof (EFI_UDP4_FRAGMENT_DATA); - TxData = (EFI_UDP4_TRANSMIT_DATA *) AllocateZeroPool (TxLength); + TxData = (EFI_UDP4_TRANSMIT_DATA *)AllocateZeroPool (TxLength); if (TxData == NULL) { return EFI_OUT_OF_RESOURCES; } TxData->FragmentCount = FragCount; - TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32) *BufferSize; + TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32)*BufferSize; TxData->FragmentTable[FragCount - 1].FragmentBuffer = BufferPtr; - DataLength = (UINT32) *BufferSize; + DataLength = (UINT32)*BufferSize; if (HeaderSize != NULL) { - TxData->FragmentTable[0].FragmentLength = (UINT32) *HeaderSize; + TxData->FragmentTable[0].FragmentLength = (UINT32)*HeaderSize; TxData->FragmentTable[0].FragmentBuffer = HeaderPtr; - DataLength += (UINT32) *HeaderSize; + DataLength += (UINT32)*HeaderSize; } if (Gateway != NULL) { - TxData->GatewayAddress = Gateway; + TxData->GatewayAddress = Gateway; } - TxData->UdpSessionData = Session; - TxData->DataLength = DataLength; - Token.Packet.TxData = TxData; - Token.Status = EFI_NOT_READY; - IsDone = FALSE; + TxData->UdpSessionData = Session; + TxData->DataLength = DataLength; + Token.Packet.TxData = TxData; + Token.Status = EFI_NOT_READY; + IsDone = FALSE; Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, @@ -712,7 +707,8 @@ PxeBcUdp4Write ( // while (!IsDone && Token.Status == EFI_NOT_READY && - EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) { + EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) + { Udp4->Poll (Udp4); } @@ -722,12 +718,12 @@ ON_EXIT: if (Token.Event != NULL) { gBS->CloseEvent (Token.Event); } + FreePool (TxData); return Status; } - /** This function is to configure a UDPv4 instance for UdpWrite. @@ -747,49 +743,49 @@ ON_EXIT: **/ EFI_STATUS PxeBcUdp6Write ( - IN EFI_UDP6_PROTOCOL *Udp6, - IN EFI_UDP6_SESSION_DATA *Session, - IN EFI_EVENT TimeoutEvent, - IN UINTN *HeaderSize OPTIONAL, - IN VOID *HeaderPtr OPTIONAL, - IN UINTN *BufferSize, - IN VOID *BufferPtr + IN EFI_UDP6_PROTOCOL *Udp6, + IN EFI_UDP6_SESSION_DATA *Session, + IN EFI_EVENT TimeoutEvent, + IN UINTN *HeaderSize OPTIONAL, + IN VOID *HeaderPtr OPTIONAL, + IN UINTN *BufferSize, + IN VOID *BufferPtr ) { - EFI_UDP6_COMPLETION_TOKEN Token; - EFI_UDP6_TRANSMIT_DATA *TxData; - UINT32 TxLength; - UINT32 FragCount; - UINT32 DataLength; - BOOLEAN IsDone; - EFI_STATUS Status; + EFI_UDP6_COMPLETION_TOKEN Token; + EFI_UDP6_TRANSMIT_DATA *TxData; + UINT32 TxLength; + UINT32 FragCount; + UINT32 DataLength; + BOOLEAN IsDone; + EFI_STATUS Status; // // Arrange one fragment buffer for data, and another fragment buffer for header if has. // FragCount = (HeaderSize != NULL) ? 2 : 1; TxLength = sizeof (EFI_UDP6_TRANSMIT_DATA) + (FragCount - 1) * sizeof (EFI_UDP6_FRAGMENT_DATA); - TxData = (EFI_UDP6_TRANSMIT_DATA *) AllocateZeroPool (TxLength); + TxData = (EFI_UDP6_TRANSMIT_DATA *)AllocateZeroPool (TxLength); if (TxData == NULL) { return EFI_OUT_OF_RESOURCES; } TxData->FragmentCount = FragCount; - TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32) *BufferSize; + TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32)*BufferSize; TxData->FragmentTable[FragCount - 1].FragmentBuffer = BufferPtr; - DataLength = (UINT32) *BufferSize; + DataLength = (UINT32)*BufferSize; if (HeaderSize != NULL) { - TxData->FragmentTable[0].FragmentLength = (UINT32) *HeaderSize; + TxData->FragmentTable[0].FragmentLength = (UINT32)*HeaderSize; TxData->FragmentTable[0].FragmentBuffer = HeaderPtr; - DataLength += (UINT32) *HeaderSize; + DataLength += (UINT32)*HeaderSize; } - TxData->UdpSessionData = Session; - TxData->DataLength = DataLength; - Token.Packet.TxData = TxData; - Token.Status = EFI_NOT_READY; - IsDone = FALSE; + TxData->UdpSessionData = Session; + TxData->DataLength = DataLength; + Token.Packet.TxData = TxData; + Token.Status = EFI_NOT_READY; + IsDone = FALSE; Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, @@ -812,7 +808,8 @@ PxeBcUdp6Write ( // while (!IsDone && Token.Status == EFI_NOT_READY && - EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) { + EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) + { Udp6->Poll (Udp6); } @@ -822,12 +819,12 @@ ON_EXIT: if (Token.Event != NULL) { gBS->CloseEvent (Token.Event); } + FreePool (TxData); return Status; } - /** Check the received packet using the Ip filter. @@ -841,13 +838,13 @@ ON_EXIT: **/ BOOLEAN PxeBcCheckByIpFilter ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN VOID *Session, - IN UINT16 OpFlags + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN VOID *Session, + IN UINT16 OpFlags ) { - EFI_IP_ADDRESS DestinationIp; - UINTN Index; + EFI_IP_ADDRESS DestinationIp; + UINTN Index; if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER) == 0) { return TRUE; @@ -863,7 +860,7 @@ PxeBcCheckByIpFilter ( if (Mode->UsingIpv6) { CopyMem ( &DestinationIp, - &((EFI_UDP6_SESSION_DATA *) Session)->DestinationAddress, + &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress, sizeof (EFI_IPv6_ADDRESS) ); NTOHLLL (&DestinationIp.v6); @@ -871,27 +868,30 @@ PxeBcCheckByIpFilter ( ZeroMem (&DestinationIp, sizeof (EFI_IP_ADDRESS)); CopyMem ( &DestinationIp, - &((EFI_UDP4_SESSION_DATA *) Session)->DestinationAddress, + &((EFI_UDP4_SESSION_DATA *)Session)->DestinationAddress, sizeof (EFI_IPv4_ADDRESS) ); EFI_NTOHL (DestinationIp); } - if ((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST) != 0 && + if (((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST) != 0) && (IP4_IS_MULTICAST (DestinationIp.Addr[0]) || - IP6_IS_MULTICAST (&DestinationIp))) { + IP6_IS_MULTICAST (&DestinationIp))) + { return TRUE; } - if ((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST) != 0 && - IP4_IS_LOCAL_BROADCAST (DestinationIp.Addr[0])) { + if (((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST) != 0) && + IP4_IS_LOCAL_BROADCAST (DestinationIp.Addr[0])) + { ASSERT (!Mode->UsingIpv6); return TRUE; } - if ((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0 && + if (((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0) && (EFI_IP4_EQUAL (&Mode->StationIp.v4, &DestinationIp) || - EFI_IP6_EQUAL (&Mode->StationIp.v6, &DestinationIp))) { + EFI_IP6_EQUAL (&Mode->StationIp.v6, &DestinationIp))) + { // // Matched if the dest address is equal to the station address. // @@ -901,7 +901,8 @@ PxeBcCheckByIpFilter ( for (Index = 0; Index < Mode->IpFilter.IpCnt; Index++) { ASSERT (Index < EFI_PXE_BASE_CODE_MAX_IPCNT); if (EFI_IP4_EQUAL (&Mode->IpFilter.IpList[Index].v4, &DestinationIp) || - EFI_IP6_EQUAL (&Mode->IpFilter.IpList[Index].v6, &DestinationIp)) { + EFI_IP6_EQUAL (&Mode->IpFilter.IpList[Index].v6, &DestinationIp)) + { // // Matched if the dest address is equal to any of address in the filter list. // @@ -912,7 +913,6 @@ PxeBcCheckByIpFilter ( return FALSE; } - /** Filter the received packet using the destination Ip. @@ -927,10 +927,10 @@ PxeBcCheckByIpFilter ( **/ BOOLEAN PxeBcCheckByDestIp ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN VOID *Session, - IN OUT EFI_IP_ADDRESS *DestIp, - IN UINT16 OpFlags + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN VOID *Session, + IN OUT EFI_IP_ADDRESS *DestIp, + IN UINT16 OpFlags ) { if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP) != 0) { @@ -952,18 +952,20 @@ PxeBcCheckByDestIp ( sizeof (EFI_IPv4_ADDRESS) ); } - } + return TRUE; - } else if (DestIp != NULL && + } else if ((DestIp != NULL) && (EFI_IP4_EQUAL (DestIp, &((EFI_UDP4_SESSION_DATA *)Session)->DestinationAddress) || - EFI_IP6_EQUAL (DestIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress))) { + EFI_IP6_EQUAL (DestIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress))) + { // // The destination address in the received packet is matched if present. // return TRUE; } else if (EFI_IP4_EQUAL (&Mode->StationIp, &((EFI_UDP4_SESSION_DATA *)Session)->DestinationAddress) || - EFI_IP6_EQUAL (&Mode->StationIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress)) { + EFI_IP6_EQUAL (&Mode->StationIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress)) + { // // The destination address in the received packet is equal to the host address. // @@ -973,7 +975,6 @@ PxeBcCheckByDestIp ( return FALSE; } - /** Check the received packet using the destination port. @@ -988,18 +989,18 @@ PxeBcCheckByDestIp ( **/ BOOLEAN PxeBcCheckByDestPort ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN VOID *Session, - IN OUT UINT16 *DestPort, - IN UINT16 OpFlags + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN VOID *Session, + IN OUT UINT16 *DestPort, + IN UINT16 OpFlags ) { - UINT16 Port; + UINT16 Port; if (Mode->UsingIpv6) { - Port = ((EFI_UDP6_SESSION_DATA *) Session)->DestinationPort; + Port = ((EFI_UDP6_SESSION_DATA *)Session)->DestinationPort; } else { - Port = ((EFI_UDP4_SESSION_DATA *) Session)->DestinationPort; + Port = ((EFI_UDP4_SESSION_DATA *)Session)->DestinationPort; } if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT) != 0) { @@ -1009,8 +1010,9 @@ PxeBcCheckByDestPort ( if (DestPort != NULL) { *DestPort = Port; } + return TRUE; - } else if (DestPort != NULL && *DestPort == Port) { + } else if ((DestPort != NULL) && (*DestPort == Port)) { // // The destination port in the received packet is matched if present. // @@ -1020,7 +1022,6 @@ PxeBcCheckByDestPort ( return FALSE; } - /** Filter the received packet using the source Ip. @@ -1035,10 +1036,10 @@ PxeBcCheckByDestPort ( **/ BOOLEAN PxeBcFilterBySrcIp ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN VOID *Session, - IN OUT EFI_IP_ADDRESS *SrcIp, - IN UINT16 OpFlags + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN VOID *Session, + IN OUT EFI_IP_ADDRESS *SrcIp, + IN UINT16 OpFlags ) { if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP) != 0) { @@ -1060,12 +1061,13 @@ PxeBcFilterBySrcIp ( sizeof (EFI_IPv4_ADDRESS) ); } - } + return TRUE; - } else if (SrcIp != NULL && + } else if ((SrcIp != NULL) && (EFI_IP4_EQUAL (SrcIp, &((EFI_UDP4_SESSION_DATA *)Session)->SourceAddress) || - EFI_IP6_EQUAL (SrcIp, &((EFI_UDP6_SESSION_DATA *)Session)->SourceAddress))) { + EFI_IP6_EQUAL (SrcIp, &((EFI_UDP6_SESSION_DATA *)Session)->SourceAddress))) + { // // The source address in the received packet is matched if present. // @@ -1075,7 +1077,6 @@ PxeBcFilterBySrcIp ( return FALSE; } - /** Filter the received packet using the source port. @@ -1090,18 +1091,18 @@ PxeBcFilterBySrcIp ( **/ BOOLEAN PxeBcFilterBySrcPort ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN VOID *Session, - IN OUT UINT16 *SrcPort, - IN UINT16 OpFlags + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN VOID *Session, + IN OUT UINT16 *SrcPort, + IN UINT16 OpFlags ) { - UINT16 Port; + UINT16 Port; if (Mode->UsingIpv6) { - Port = ((EFI_UDP6_SESSION_DATA *) Session)->SourcePort; + Port = ((EFI_UDP6_SESSION_DATA *)Session)->SourcePort; } else { - Port = ((EFI_UDP4_SESSION_DATA *) Session)->SourcePort; + Port = ((EFI_UDP4_SESSION_DATA *)Session)->SourcePort; } if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT) != 0) { @@ -1111,8 +1112,9 @@ PxeBcFilterBySrcPort ( if (SrcPort != NULL) { *SrcPort = Port; } + return TRUE; - } else if (SrcPort != NULL && *SrcPort == Port) { + } else if ((SrcPort != NULL) && (*SrcPort == Port)) { // // The source port in the received packet is matched if present. // @@ -1122,7 +1124,6 @@ PxeBcFilterBySrcPort ( return FALSE; } - /** This function is to receive packet using Udp4Read. @@ -1144,22 +1145,22 @@ PxeBcFilterBySrcPort ( **/ EFI_STATUS PxeBcUdp4Read ( - IN EFI_UDP4_PROTOCOL *Udp4, - IN EFI_UDP4_COMPLETION_TOKEN *Token, - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN EFI_EVENT TimeoutEvent, - IN UINT16 OpFlags, - IN BOOLEAN *IsDone, - OUT BOOLEAN *IsMatched, - IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, - IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL + IN EFI_UDP4_PROTOCOL *Udp4, + IN EFI_UDP4_COMPLETION_TOKEN *Token, + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN EFI_EVENT TimeoutEvent, + IN UINT16 OpFlags, + IN BOOLEAN *IsDone, + OUT BOOLEAN *IsMatched, + IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, + IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL ) { - EFI_UDP4_RECEIVE_DATA *RxData; - EFI_UDP4_SESSION_DATA *Session; - EFI_STATUS Status; + EFI_UDP4_RECEIVE_DATA *RxData; + EFI_UDP4_SESSION_DATA *Session; + EFI_STATUS Status; Token->Status = EFI_NOT_READY; *IsDone = FALSE; @@ -1174,16 +1175,18 @@ PxeBcUdp4Read ( // while (!(*IsDone) && Token->Status == EFI_NOT_READY && - EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) { + EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) + { // // Poll the token until reply/ICMPv6 error message received or timeout. // Udp4->Poll (Udp4); - if (Token->Status == EFI_ICMP_ERROR || - Token->Status == EFI_NETWORK_UNREACHABLE || - Token->Status == EFI_HOST_UNREACHABLE || - Token->Status == EFI_PROTOCOL_UNREACHABLE || - Token->Status == EFI_PORT_UNREACHABLE) { + if ((Token->Status == EFI_ICMP_ERROR) || + (Token->Status == EFI_NETWORK_UNREACHABLE) || + (Token->Status == EFI_HOST_UNREACHABLE) || + (Token->Status == EFI_PROTOCOL_UNREACHABLE) || + (Token->Status == EFI_PORT_UNREACHABLE)) + { break; } } @@ -1194,8 +1197,8 @@ PxeBcUdp4Read ( // // check whether this packet matches the filters // - RxData = Token->Packet.RxData; - Session = &RxData->UdpSession; + RxData = Token->Packet.RxData; + Session = &RxData->UdpSession; *IsMatched = PxeBcCheckByIpFilter (Mode, Session, OpFlags); @@ -1226,7 +1229,6 @@ PxeBcUdp4Read ( return Status; } - /** This function is to receive packets using Udp6Read. @@ -1248,22 +1250,22 @@ PxeBcUdp4Read ( **/ EFI_STATUS PxeBcUdp6Read ( - IN EFI_UDP6_PROTOCOL *Udp6, - IN EFI_UDP6_COMPLETION_TOKEN *Token, - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN EFI_EVENT TimeoutEvent, - IN UINT16 OpFlags, - IN BOOLEAN *IsDone, - OUT BOOLEAN *IsMatched, - IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, - IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL + IN EFI_UDP6_PROTOCOL *Udp6, + IN EFI_UDP6_COMPLETION_TOKEN *Token, + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN EFI_EVENT TimeoutEvent, + IN UINT16 OpFlags, + IN BOOLEAN *IsDone, + OUT BOOLEAN *IsMatched, + IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, + IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL ) { - EFI_UDP6_RECEIVE_DATA *RxData; - EFI_UDP6_SESSION_DATA *Session; - EFI_STATUS Status; + EFI_UDP6_RECEIVE_DATA *RxData; + EFI_UDP6_SESSION_DATA *Session; + EFI_STATUS Status; Token->Status = EFI_NOT_READY; *IsDone = FALSE; @@ -1278,16 +1280,18 @@ PxeBcUdp6Read ( // while (!(*IsDone) && Token->Status == EFI_NOT_READY && - EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) { + EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) + { // // Poll the token until reply/ICMPv6 error message received or timeout. // Udp6->Poll (Udp6); - if (Token->Status == EFI_ICMP_ERROR || - Token->Status == EFI_NETWORK_UNREACHABLE || - Token->Status == EFI_HOST_UNREACHABLE || - Token->Status == EFI_PROTOCOL_UNREACHABLE || - Token->Status == EFI_PORT_UNREACHABLE) { + if ((Token->Status == EFI_ICMP_ERROR) || + (Token->Status == EFI_NETWORK_UNREACHABLE) || + (Token->Status == EFI_HOST_UNREACHABLE) || + (Token->Status == EFI_PROTOCOL_UNREACHABLE) || + (Token->Status == EFI_PORT_UNREACHABLE)) + { break; } } @@ -1298,8 +1302,8 @@ PxeBcUdp6Read ( // // check whether this packet matches the filters // - RxData = Token->Packet.RxData; - Session = &RxData->UdpSession; + RxData = Token->Packet.RxData; + Session = &RxData->UdpSession; *IsMatched = PxeBcCheckByIpFilter (Mode, Session, OpFlags); @@ -1330,7 +1334,6 @@ PxeBcUdp6Read ( return Status; } - /** This function is to display the IPv4 address. @@ -1339,10 +1342,10 @@ PxeBcUdp6Read ( **/ VOID PxeBcShowIp4Addr ( - IN EFI_IPv4_ADDRESS *Ip + IN EFI_IPv4_ADDRESS *Ip ) { - UINTN Index; + UINTN Index; for (Index = 0; Index < 4; Index++) { AsciiPrint ("%d", Ip->Addr[Index]); @@ -1352,7 +1355,6 @@ PxeBcShowIp4Addr ( } } - /** This function is to display the IPv6 address. @@ -1361,23 +1363,25 @@ PxeBcShowIp4Addr ( **/ VOID PxeBcShowIp6Addr ( - IN EFI_IPv6_ADDRESS *Ip + IN EFI_IPv6_ADDRESS *Ip ) { - UINTN Index; + UINTN Index; for (Index = 0; Index < 16; Index++) { - if (Ip->Addr[Index] != 0) { AsciiPrint ("%x", Ip->Addr[Index]); } + Index++; if (Index > 15) { return; } + if (((Ip->Addr[Index] & 0xf0) == 0) && (Ip->Addr[Index - 1] != 0)) { AsciiPrint ("0"); } + AsciiPrint ("%x", Ip->Addr[Index]); if (Index < 15) { AsciiPrint (":"); @@ -1385,7 +1389,6 @@ PxeBcShowIp6Addr ( } } - /** This function is to convert UINTN to ASCII string with the required formatting. @@ -1396,21 +1399,20 @@ PxeBcShowIp6Addr ( **/ VOID PxeBcUintnToAscDecWithFormat ( - IN UINTN Number, - IN UINT8 *Buffer, - IN INTN Length + IN UINTN Number, + IN UINT8 *Buffer, + IN INTN Length ) { - UINTN Remainder; + UINTN Remainder; - for (; Length > 0; Length--) { - Remainder = Number % 10; - Number /= 10; - Buffer[Length - 1] = (UINT8) ('0' + Remainder); + for ( ; Length > 0; Length--) { + Remainder = Number % 10; + Number /= 10; + Buffer[Length - 1] = (UINT8)('0' + Remainder); } } - /** This function is to convert a UINTN to a ASCII string, and return the actual length of the buffer. @@ -1424,32 +1426,31 @@ PxeBcUintnToAscDecWithFormat ( **/ UINTN PxeBcUintnToAscDec ( - IN UINTN Number, - IN UINT8 *Buffer, - IN UINTN BufferSize + IN UINTN Number, + IN UINT8 *Buffer, + IN UINTN BufferSize ) { - UINTN Index; - UINTN Length; - CHAR8 TempStr[64]; + UINTN Index; + UINTN Length; + CHAR8 TempStr[64]; - Index = 63; - TempStr[Index] = 0; + Index = 63; + TempStr[Index] = 0; do { Index--; - TempStr[Index] = (CHAR8) ('0' + (Number % 10)); - Number = (UINTN) (Number / 10); + TempStr[Index] = (CHAR8)('0' + (Number % 10)); + Number = (UINTN)(Number / 10); } while (Number != 0); - AsciiStrCpyS ((CHAR8 *) Buffer, BufferSize, &TempStr[Index]); + AsciiStrCpyS ((CHAR8 *)Buffer, BufferSize, &TempStr[Index]); - Length = AsciiStrLen ((CHAR8 *) Buffer); + Length = AsciiStrLen ((CHAR8 *)Buffer); return Length; } - /** This function is to convert unicode hex number to a UINT8. @@ -1462,22 +1463,22 @@ PxeBcUintnToAscDec ( **/ EFI_STATUS PxeBcUniHexToUint8 ( - OUT UINT8 *Digit, - IN CHAR16 Char + OUT UINT8 *Digit, + IN CHAR16 Char ) { if ((Char >= L'0') && (Char <= L'9')) { - *Digit = (UINT8) (Char - L'0'); + *Digit = (UINT8)(Char - L'0'); return EFI_SUCCESS; } if ((Char >= L'A') && (Char <= L'F')) { - *Digit = (UINT8) (Char - L'A' + 0x0A); + *Digit = (UINT8)(Char - L'A' + 0x0A); return EFI_SUCCESS; } if ((Char >= L'a') && (Char <= L'f')) { - *Digit = (UINT8) (Char - L'a' + 0x0A); + *Digit = (UINT8)(Char - L'a' + 0x0A); return EFI_SUCCESS; } @@ -1492,12 +1493,12 @@ PxeBcUniHexToUint8 ( **/ VOID CalcElapsedTime ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ) { - EFI_TIME Time; - UINT64 CurrentStamp; - UINT64 ElapsedTimeValue; + EFI_TIME Time; + UINT64 CurrentStamp; + UINT64 ElapsedTimeValue; // // Generate a time stamp of the centiseconds from 1900/1/1, assume 30day/month. @@ -1529,6 +1530,7 @@ CalcElapsedTime ( if (ElapsedTimeValue > 0xffff) { ElapsedTimeValue = 0xffff; } + // // Save the elapsed time // diff --git a/NetworkPkg/UefiPxeBcDxe/PxeBcSupport.h b/NetworkPkg/UefiPxeBcDxe/PxeBcSupport.h index 8405f6fad3..a885b9660e 100644 --- a/NetworkPkg/UefiPxeBcDxe/PxeBcSupport.h +++ b/NetworkPkg/UefiPxeBcDxe/PxeBcSupport.h @@ -10,15 +10,12 @@ #ifndef __EFI_PXEBC_SUPPORT_H__ #define __EFI_PXEBC_SUPPORT_H__ - -#define ICMP_DEST_UNREACHABLE 3 -#define ICMP_SOURCE_QUENCH 4 -#define ICMP_REDIRECT 5 -#define ICMP_ECHO_REQUEST 8 -#define ICMP_TIME_EXCEEDED 11 -#define ICMP_PARAMETER_PROBLEM 12 - - +#define ICMP_DEST_UNREACHABLE 3 +#define ICMP_SOURCE_QUENCH 4 +#define ICMP_REDIRECT 5 +#define ICMP_ECHO_REQUEST 8 +#define ICMP_TIME_EXCEEDED 11 +#define ICMP_PARAMETER_PROBLEM 12 /** Flush the previous configuration using the new station Ip address. @@ -33,12 +30,11 @@ **/ EFI_STATUS PxeBcFlushStationIp ( - PXEBC_PRIVATE_DATA *Private, - EFI_IP_ADDRESS *StationIp OPTIONAL, - EFI_IP_ADDRESS *SubnetMask OPTIONAL + PXEBC_PRIVATE_DATA *Private, + EFI_IP_ADDRESS *StationIp OPTIONAL, + EFI_IP_ADDRESS *SubnetMask OPTIONAL ); - /** Notify callback function when an event is triggered. @@ -49,11 +45,10 @@ PxeBcFlushStationIp ( VOID EFIAPI PxeBcCommonNotify ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); - /** Perform arp resolution from the arp cache in PxeBcMode. @@ -68,12 +63,11 @@ PxeBcCommonNotify ( **/ BOOLEAN PxeBcCheckArpCache ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN EFI_IPv4_ADDRESS *Ip4Addr, - OUT EFI_MAC_ADDRESS *MacAddress + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN EFI_IPv4_ADDRESS *Ip4Addr, + OUT EFI_MAC_ADDRESS *MacAddress ); - /** Update arp cache periodically. @@ -84,11 +78,10 @@ PxeBcCheckArpCache ( VOID EFIAPI PxeBcArpCacheUpdate ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); - /** xxx @@ -99,11 +92,10 @@ PxeBcArpCacheUpdate ( VOID EFIAPI PxeBcIcmpErrorUpdate ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); - /** xxx @@ -114,11 +106,10 @@ PxeBcIcmpErrorUpdate ( VOID EFIAPI PxeBcIcmp6ErrorUpdate ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); - /** This function is to configure a UDPv4 instance for UdpWrite. @@ -148,7 +139,6 @@ PxeBcConfigUdp4Write ( IN UINT8 ToS ); - /** This function is to configure a UDPv6 instance for UdpWrite. @@ -187,17 +177,16 @@ PxeBcConfigUdp6Write ( **/ EFI_STATUS PxeBcUdp4Write ( - IN EFI_UDP4_PROTOCOL *Udp4, - IN EFI_UDP4_SESSION_DATA *Session, - IN EFI_EVENT TimeoutEvent, - IN EFI_IPv4_ADDRESS *Gateway OPTIONAL, - IN UINTN *HeaderSize OPTIONAL, - IN VOID *HeaderPtr OPTIONAL, - IN UINTN *BufferSize, - IN VOID *BufferPtr + IN EFI_UDP4_PROTOCOL *Udp4, + IN EFI_UDP4_SESSION_DATA *Session, + IN EFI_EVENT TimeoutEvent, + IN EFI_IPv4_ADDRESS *Gateway OPTIONAL, + IN UINTN *HeaderSize OPTIONAL, + IN VOID *HeaderPtr OPTIONAL, + IN UINTN *BufferSize, + IN VOID *BufferPtr ); - /** This function is to configure a UDPv6 instance for UdpWrite. @@ -217,16 +206,15 @@ PxeBcUdp4Write ( **/ EFI_STATUS PxeBcUdp6Write ( - IN EFI_UDP6_PROTOCOL *Udp6, - IN EFI_UDP6_SESSION_DATA *Session, - IN EFI_EVENT TimeoutEvent, - IN UINTN *HeaderSize OPTIONAL, - IN VOID *HeaderPtr OPTIONAL, - IN UINTN *BufferSize, - IN VOID *BufferPtr + IN EFI_UDP6_PROTOCOL *Udp6, + IN EFI_UDP6_SESSION_DATA *Session, + IN EFI_EVENT TimeoutEvent, + IN UINTN *HeaderSize OPTIONAL, + IN VOID *HeaderPtr OPTIONAL, + IN UINTN *BufferSize, + IN VOID *BufferPtr ); - /** Check the received packet with the Ip filter. @@ -240,12 +228,11 @@ PxeBcUdp6Write ( **/ BOOLEAN PxeBcCheckByIpFilter ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN VOID *Session, - IN UINT16 OpFlags + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN VOID *Session, + IN UINT16 OpFlags ); - /** Filter the received packet with the destination Ip. @@ -260,13 +247,12 @@ PxeBcCheckByIpFilter ( **/ BOOLEAN PxeBcCheckByDestIp ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN VOID *Session, - IN OUT EFI_IP_ADDRESS *DestIp, - IN UINT16 OpFlags + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN VOID *Session, + IN OUT EFI_IP_ADDRESS *DestIp, + IN UINT16 OpFlags ); - /** Check the received packet with the destination port. @@ -281,13 +267,12 @@ PxeBcCheckByDestIp ( **/ BOOLEAN PxeBcCheckByDestPort ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN VOID *Session, - IN OUT UINT16 *DestPort, - IN UINT16 OpFlags + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN VOID *Session, + IN OUT UINT16 *DestPort, + IN UINT16 OpFlags ); - /** Filter the received packet with the source Ip. @@ -302,13 +287,12 @@ PxeBcCheckByDestPort ( **/ BOOLEAN PxeBcFilterBySrcIp ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN VOID *Session, - IN OUT EFI_IP_ADDRESS *SrcIp, - IN UINT16 OpFlags + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN VOID *Session, + IN OUT EFI_IP_ADDRESS *SrcIp, + IN UINT16 OpFlags ); - /** Filter the received packet with the source port. @@ -323,13 +307,12 @@ PxeBcFilterBySrcIp ( **/ BOOLEAN PxeBcFilterBySrcPort ( - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN VOID *Session, - IN OUT UINT16 *SrcPort, - IN UINT16 OpFlags + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN VOID *Session, + IN OUT UINT16 *SrcPort, + IN UINT16 OpFlags ); - /** This function is to receive packet with Udp4Read. @@ -351,20 +334,19 @@ PxeBcFilterBySrcPort ( **/ EFI_STATUS PxeBcUdp4Read ( - IN EFI_UDP4_PROTOCOL *Udp4, - IN EFI_UDP4_COMPLETION_TOKEN *Token, - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN EFI_EVENT TimeoutEvent, - IN UINT16 OpFlags, - IN BOOLEAN *IsDone, - OUT BOOLEAN *IsMatched, - IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, - IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL + IN EFI_UDP4_PROTOCOL *Udp4, + IN EFI_UDP4_COMPLETION_TOKEN *Token, + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN EFI_EVENT TimeoutEvent, + IN UINT16 OpFlags, + IN BOOLEAN *IsDone, + OUT BOOLEAN *IsMatched, + IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, + IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL ); - /** This function is to receive packet with Udp6Read. @@ -386,20 +368,19 @@ PxeBcUdp4Read ( **/ EFI_STATUS PxeBcUdp6Read ( - IN EFI_UDP6_PROTOCOL *Udp6, - IN EFI_UDP6_COMPLETION_TOKEN *Token, - IN EFI_PXE_BASE_CODE_MODE *Mode, - IN EFI_EVENT TimeoutEvent, - IN UINT16 OpFlags, - IN BOOLEAN *IsDone, - OUT BOOLEAN *IsMatched, - IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, - IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, - IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL + IN EFI_UDP6_PROTOCOL *Udp6, + IN EFI_UDP6_COMPLETION_TOKEN *Token, + IN EFI_PXE_BASE_CODE_MODE *Mode, + IN EFI_EVENT TimeoutEvent, + IN UINT16 OpFlags, + IN BOOLEAN *IsDone, + OUT BOOLEAN *IsMatched, + IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL, + IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL, + IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL ); - /** This function is to display the IPv4 address. @@ -408,10 +389,9 @@ PxeBcUdp6Read ( **/ VOID PxeBcShowIp4Addr ( - IN EFI_IPv4_ADDRESS *Ip + IN EFI_IPv4_ADDRESS *Ip ); - /** This function is to display the IPv6 address. @@ -420,10 +400,9 @@ PxeBcShowIp4Addr ( **/ VOID PxeBcShowIp6Addr ( - IN EFI_IPv6_ADDRESS *Ip + IN EFI_IPv6_ADDRESS *Ip ); - /** This function is to convert UINTN to ASCII string with required format. @@ -434,12 +413,11 @@ PxeBcShowIp6Addr ( **/ VOID PxeBcUintnToAscDecWithFormat ( - IN UINTN Number, - IN UINT8 *Buffer, - IN INTN Length + IN UINTN Number, + IN UINT8 *Buffer, + IN INTN Length ); - /** This function is to convert a UINTN to a ASCII string, and return the actual length of the buffer. @@ -453,9 +431,9 @@ PxeBcUintnToAscDecWithFormat ( **/ UINTN PxeBcUintnToAscDec ( - IN UINTN Number, - IN UINT8 *Buffer, - IN UINTN BufferSize + IN UINTN Number, + IN UINT8 *Buffer, + IN UINTN BufferSize ); /** @@ -470,8 +448,8 @@ PxeBcUintnToAscDec ( **/ EFI_STATUS PxeBcUniHexToUint8 ( - OUT UINT8 *Digit, - IN CHAR16 Char + OUT UINT8 *Digit, + IN CHAR16 Char ); /** @@ -482,7 +460,7 @@ PxeBcUniHexToUint8 ( **/ VOID CalcElapsedTime ( - IN PXEBC_PRIVATE_DATA *Private + IN PXEBC_PRIVATE_DATA *Private ); /** @@ -495,7 +473,7 @@ CalcElapsedTime ( **/ EFI_HANDLE PxeBcGetNicByIp4Children ( - IN EFI_HANDLE ControllerHandle + IN EFI_HANDLE ControllerHandle ); /** @@ -508,6 +486,7 @@ PxeBcGetNicByIp4Children ( **/ EFI_HANDLE PxeBcGetNicByIp6Children ( - IN EFI_HANDLE ControllerHandle + IN EFI_HANDLE ControllerHandle ); + #endif diff --git a/NetworkPkg/VlanConfigDxe/ComponentName.c b/NetworkPkg/VlanConfigDxe/ComponentName.c index f36d29f8bd..9bb46bb1b5 100644 --- a/NetworkPkg/VlanConfigDxe/ComponentName.c +++ b/NetworkPkg/VlanConfigDxe/ComponentName.c @@ -11,7 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent // // EFI Component Name Protocol // -GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gVlanConfigComponentName = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gVlanConfigComponentName = { VlanConfigComponentNameGetDriverName, VlanConfigComponentNameGetControllerName, "eng" @@ -21,12 +21,12 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gVlanConfigComponent // EFI Component Name 2 Protocol // GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gVlanConfigComponentName2 = { - (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) VlanConfigComponentNameGetDriverName, - (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) VlanConfigComponentNameGetControllerName, + (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)VlanConfigComponentNameGetDriverName, + (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)VlanConfigComponentNameGetControllerName, "en" }; -GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mVlanConfigDriverNameTable[] = { +GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mVlanConfigDriverNameTable[] = { { "eng;en", L"VLAN Configuration Driver" @@ -78,9 +78,9 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mVlanConfigDriverNam EFI_STATUS EFIAPI VlanConfigComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName ) { return LookupUnicodeString2 ( @@ -153,11 +153,11 @@ VlanConfigComponentNameGetDriverName ( EFI_STATUS EFIAPI VlanConfigComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ) { return EFI_UNSUPPORTED; diff --git a/NetworkPkg/VlanConfigDxe/VlanConfigDriver.c b/NetworkPkg/VlanConfigDxe/VlanConfigDriver.c index ae636b763f..705aa31e0f 100644 --- a/NetworkPkg/VlanConfigDxe/VlanConfigDriver.c +++ b/NetworkPkg/VlanConfigDxe/VlanConfigDriver.c @@ -8,7 +8,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "VlanConfigImpl.h" -EFI_DRIVER_BINDING_PROTOCOL gVlanConfigDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gVlanConfigDriverBinding = { VlanConfigDriverBindingSupported, VlanConfigDriverBindingStart, VlanConfigDriverBindingStop, @@ -31,8 +31,8 @@ EFI_DRIVER_BINDING_PROTOCOL gVlanConfigDriverBinding = { EFI_STATUS EFIAPI VlanConfigDriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { return EfiLibInstallDriverBindingComponentName2 ( @@ -45,7 +45,6 @@ VlanConfigDriverEntryPoint ( ); } - /** Test to see if this driver supports ControllerHandle. @@ -62,9 +61,9 @@ VlanConfigDriverEntryPoint ( EFI_STATUS EFIAPI VlanConfigDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { EFI_STATUS Status; @@ -73,7 +72,7 @@ VlanConfigDriverBindingSupported ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiVlanConfigProtocolGuid, - (VOID **) &VlanConfig, + (VOID **)&VlanConfig, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -95,7 +94,6 @@ VlanConfigDriverBindingSupported ( return Status; } - /** Start this driver on ControllerHandle. @@ -112,9 +110,9 @@ VlanConfigDriverBindingSupported ( EFI_STATUS EFIAPI VlanConfigDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { EFI_STATUS Status; @@ -128,7 +126,7 @@ VlanConfigDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiCallerIdGuid, - (VOID **) &PrivateData, + (VOID **)&PrivateData, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -143,7 +141,7 @@ VlanConfigDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiVlanConfigProtocolGuid, - (VOID **) &VlanConfig, + (VOID **)&VlanConfig, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -158,7 +156,7 @@ VlanConfigDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiDevicePathProtocolGuid, - (VOID **) &DevicePath, + (VOID **)&DevicePath, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -176,9 +174,9 @@ VlanConfigDriverBindingStart ( goto ErrorExit; } - PrivateData->ImageHandle = This->DriverBindingHandle; + PrivateData->ImageHandle = This->DriverBindingHandle; PrivateData->ControllerHandle = ControllerHandle; - PrivateData->VlanConfig = VlanConfig; + PrivateData->VlanConfig = VlanConfig; PrivateData->ParentDevicePath = DevicePath; // @@ -201,6 +199,7 @@ VlanConfigDriverBindingStart ( if (EFI_ERROR (Status)) { goto ErrorExit; } + return Status; ErrorExit: @@ -226,7 +225,6 @@ ErrorExit: return Status; } - /** Stop this driver on ControllerHandle. @@ -243,10 +241,10 @@ ErrorExit: EFI_STATUS EFIAPI VlanConfigDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer ) { EFI_STATUS Status; @@ -258,7 +256,7 @@ VlanConfigDriverBindingStop ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiCallerIdGuid, - (VOID **) &PrivateData, + (VOID **)&PrivateData, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -266,10 +264,11 @@ VlanConfigDriverBindingStop ( if (EFI_ERROR (Status)) { return Status; } + ASSERT (PrivateData->Signature == VLAN_CONFIG_PRIVATE_DATA_SIGNATURE); if (NumberOfChildren != 0) { - if (NumberOfChildren != 1 || ChildHandleBuffer[0] != PrivateData->DriverHandle) { + if ((NumberOfChildren != 1) || (ChildHandleBuffer[0] != PrivateData->DriverHandle)) { return EFI_DEVICE_ERROR; } diff --git a/NetworkPkg/VlanConfigDxe/VlanConfigImpl.c b/NetworkPkg/VlanConfigDxe/VlanConfigImpl.c index 24d844cbf1..13b77b2c00 100644 --- a/NetworkPkg/VlanConfigDxe/VlanConfigImpl.c +++ b/NetworkPkg/VlanConfigDxe/VlanConfigImpl.c @@ -8,10 +8,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "VlanConfigImpl.h" -CHAR16 mVlanStorageName[] = L"VlanNvData"; -EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRouting = NULL; +CHAR16 mVlanStorageName[] = L"VlanNvData"; +EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRouting = NULL; -VLAN_CONFIG_PRIVATE_DATA mVlanConfigPrivateDateTemplate = { +VLAN_CONFIG_PRIVATE_DATA mVlanConfigPrivateDateTemplate = { VLAN_CONFIG_PRIVATE_DATA_SIGNATURE, { VlanExtractConfig, @@ -20,13 +20,13 @@ VLAN_CONFIG_PRIVATE_DATA mVlanConfigPrivateDateTemplate = { } }; -VENDOR_DEVICE_PATH mHiiVendorDevicePathNode = { +VENDOR_DEVICE_PATH mHiiVendorDevicePathNode = { { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { - (UINT8) (sizeof (VENDOR_DEVICE_PATH)), - (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + (UINT8)(sizeof (VENDOR_DEVICE_PATH)), + (UINT8)((sizeof (VENDOR_DEVICE_PATH)) >> 8) } }, VLAN_CONFIG_FORM_SET_GUID @@ -61,22 +61,22 @@ VENDOR_DEVICE_PATH mHiiVendorDevicePathNode = { EFI_STATUS EFIAPI VlanExtractConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Request, - OUT EFI_STRING *Progress, - OUT EFI_STRING *Results + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results ) { - EFI_STATUS Status; - UINTN BufferSize; - VLAN_CONFIGURATION Configuration; + EFI_STATUS Status; + UINTN BufferSize; + VLAN_CONFIGURATION Configuration; VLAN_CONFIG_PRIVATE_DATA *PrivateData; - EFI_STRING ConfigRequestHdr; - EFI_STRING ConfigRequest; - BOOLEAN AllocatedRequest; - UINTN Size; + EFI_STRING ConfigRequestHdr; + EFI_STRING ConfigRequest; + BOOLEAN AllocatedRequest; + UINTN Size; - if (Progress == NULL || Results == NULL) { + if ((Progress == NULL) || (Results == NULL)) { return EFI_INVALID_PARAMETER; } @@ -94,8 +94,9 @@ VlanExtractConfig ( // Retrieve the pointer to the UEFI HII Config Routing Protocol // if (mHiiConfigRouting == NULL) { - gBS->LocateProtocol (&gEfiHiiConfigRoutingProtocolGuid, NULL, (VOID **) &mHiiConfigRouting); + gBS->LocateProtocol (&gEfiHiiConfigRoutingProtocolGuid, NULL, (VOID **)&mHiiConfigRouting); } + ASSERT (mHiiConfigRouting != NULL); // @@ -103,7 +104,7 @@ VlanExtractConfig ( // PrivateData = VLAN_CONFIG_PRIVATE_DATA_FROM_THIS (This); ZeroMem (&Configuration, sizeof (VLAN_CONFIGURATION)); - BufferSize = sizeof (Configuration); + BufferSize = sizeof (Configuration); ConfigRequest = Request; if ((Request == NULL) || (StrStr (Request, L"OFFSET") == NULL)) { // @@ -112,8 +113,8 @@ VlanExtractConfig ( // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator // ConfigRequestHdr = HiiConstructConfigHdr (&gVlanConfigFormSetGuid, mVlanStorageName, PrivateData->DriverHandle); - Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); - ConfigRequest = AllocateZeroPool (Size); + Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); + ConfigRequest = AllocateZeroPool (Size); ASSERT (ConfigRequest != NULL); AllocatedRequest = TRUE; UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize); @@ -123,7 +124,7 @@ VlanExtractConfig ( Status = mHiiConfigRouting->BlockToConfig ( mHiiConfigRouting, ConfigRequest, - (UINT8 *) &Configuration, + (UINT8 *)&Configuration, BufferSize, Results, Progress @@ -135,6 +136,7 @@ VlanExtractConfig ( FreePool (ConfigRequest); ConfigRequest = NULL; } + // // Set Progress string to the original request string. // @@ -147,7 +149,6 @@ VlanExtractConfig ( return Status; } - /** This function processes the results of changes in configuration. @@ -169,12 +170,12 @@ VlanExtractConfig ( EFI_STATUS EFIAPI VlanRouteConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Configuration, - OUT EFI_STRING *Progress + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress ) { - if (Configuration == NULL || Progress == NULL) { + if ((Configuration == NULL) || (Progress == NULL)) { return EFI_INVALID_PARAMETER; } @@ -212,12 +213,12 @@ VlanRouteConfig ( EFI_STATUS EFIAPI VlanCallback ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN EFI_BROWSER_ACTION Action, - IN EFI_QUESTION_ID QuestionId, - IN UINT8 Type, - IN EFI_IFR_TYPE_VALUE *Value, - OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest ) { VLAN_CONFIG_PRIVATE_DATA *PrivateData; @@ -244,89 +245,89 @@ VlanCallback ( // Configuration = AllocateZeroPool (sizeof (VLAN_CONFIGURATION)); ASSERT (Configuration != NULL); - HiiGetBrowserData (&gVlanConfigFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration); + HiiGetBrowserData (&gVlanConfigFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *)Configuration); VlanConfig = PrivateData->VlanConfig; if (Action == EFI_BROWSER_ACTION_CHANGED) { switch (QuestionId) { - case VLAN_ADD_QUESTION_ID: - // - // Add a VLAN - // - VlanConfig->Set (VlanConfig, Configuration->VlanId, Configuration->Priority); - VlanUpdateForm (PrivateData); - - // - // Connect the newly created VLAN device - // - VlanHandle = NetLibGetVlanHandle (PrivateData->ControllerHandle, Configuration->VlanId); - if (VlanHandle == NULL) { + case VLAN_ADD_QUESTION_ID: + // + // Add a VLAN // - // There may be no child handle created for VLAN ID 0, connect the parent handle + VlanConfig->Set (VlanConfig, Configuration->VlanId, Configuration->Priority); + VlanUpdateForm (PrivateData); + + // + // Connect the newly created VLAN device // - VlanHandle = PrivateData->ControllerHandle; - } - gBS->ConnectController (VlanHandle, NULL, NULL, TRUE); - - // - // Clear UI data - // - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; - Configuration->VlanId = 0; - Configuration->Priority = 0; - break; - - case VLAN_REMOVE_QUESTION_ID: - // - // Remove VLAN - // - ASSERT (PrivateData->NumberOfVlan <= MAX_VLAN_NUMBER); - for (Index = 0; Index < PrivateData->NumberOfVlan; Index++) { - if (Configuration->VlanList[Index] != 0) { + VlanHandle = NetLibGetVlanHandle (PrivateData->ControllerHandle, Configuration->VlanId); + if (VlanHandle == NULL) { // - // Checkbox is selected, need remove this VLAN + // There may be no child handle created for VLAN ID 0, connect the parent handle // - VlanConfig->Remove (VlanConfig, PrivateData->VlanId[Index]); + VlanHandle = PrivateData->ControllerHandle; } - } - VlanUpdateForm (PrivateData); - if (PrivateData->NumberOfVlan == 0) { + gBS->ConnectController (VlanHandle, NULL, NULL, TRUE); + // - // No VLAN device now, connect the physical NIC handle. - // Note: PrivateData->NumberOfVlan has been updated by VlanUpdateForm() + // Clear UI data // - gBS->ConnectController (PrivateData->ControllerHandle, NULL, NULL, TRUE); - } + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; + Configuration->VlanId = 0; + Configuration->Priority = 0; + break; + + case VLAN_REMOVE_QUESTION_ID: + // + // Remove VLAN + // + ASSERT (PrivateData->NumberOfVlan <= MAX_VLAN_NUMBER); + for (Index = 0; Index < PrivateData->NumberOfVlan; Index++) { + if (Configuration->VlanList[Index] != 0) { + // + // Checkbox is selected, need remove this VLAN + // + VlanConfig->Remove (VlanConfig, PrivateData->VlanId[Index]); + } + } + + VlanUpdateForm (PrivateData); + if (PrivateData->NumberOfVlan == 0) { + // + // No VLAN device now, connect the physical NIC handle. + // Note: PrivateData->NumberOfVlan has been updated by VlanUpdateForm() + // + gBS->ConnectController (PrivateData->ControllerHandle, NULL, NULL, TRUE); + } - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; - ZeroMem (Configuration->VlanList, MAX_VLAN_NUMBER); - break; + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; + ZeroMem (Configuration->VlanList, MAX_VLAN_NUMBER); + break; - default: - break; + default: + break; } } else if (Action == EFI_BROWSER_ACTION_CHANGING) { switch (QuestionId) { - case VLAN_UPDATE_QUESTION_ID: - // - // Update current VLAN list into Form. - // - VlanUpdateForm (PrivateData); - break; - - default: - break; + case VLAN_UPDATE_QUESTION_ID: + // + // Update current VLAN list into Form. + // + VlanUpdateForm (PrivateData); + break; + + default: + break; } } - HiiSetBrowserData (&gVlanConfigFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration, NULL); + HiiSetBrowserData (&gVlanConfigFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *)Configuration, NULL); FreePool (Configuration); return EFI_SUCCESS; } - /** This function update VLAN list in the VLAN configuration Form. @@ -335,7 +336,7 @@ VlanCallback ( **/ VOID VlanUpdateForm ( - IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData + IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData ) { EFI_VLAN_CONFIG_PROTOCOL *VlanConfig; @@ -355,9 +356,9 @@ VlanUpdateForm ( // // Find current VLAN configuration // - VlanData = NULL; + VlanData = NULL; NumberOfVlan = 0; - VlanConfig = PrivateData->VlanConfig; + VlanConfig = PrivateData->VlanConfig; VlanConfig->Find (VlanConfig, NULL, &NumberOfVlan, &VlanData); // @@ -366,6 +367,7 @@ VlanUpdateForm ( if (NumberOfVlan > MAX_VLAN_NUMBER) { NumberOfVlan = MAX_VLAN_NUMBER; } + PrivateData->NumberOfVlan = NumberOfVlan; // @@ -380,24 +382,24 @@ VlanUpdateForm ( // // Create Hii Extend Label OpCode as the start opcode // - StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - StartOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + StartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + StartOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; StartLabel->Number = LABEL_VLAN_LIST; // // Create Hii Extend Label OpCode as the end opcode // - EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - EndOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + EndLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + EndOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; EndLabel->Number = LABEL_END; @@ -416,7 +418,7 @@ VlanUpdateForm ( StrCpyS (String + 4 - DigitalCount, (sizeof (VlanStr) /sizeof (CHAR16)) - 10 - (4 - DigitalCount), VlanIdStr); String += 4; - StrCpyS (String, (sizeof (VlanStr) /sizeof (CHAR16)) - 10 - (4 - DigitalCount) - 4, L", Priority:"); + StrCpyS (String, (sizeof (VlanStr) /sizeof (CHAR16)) - 10 - (4 - DigitalCount) - 4, L", Priority:"); String += 11; UnicodeValueToStringS ( String, @@ -433,9 +435,9 @@ VlanUpdateForm ( HiiCreateCheckBoxOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (VLAN_LIST_VAR_OFFSET + Index), + (EFI_QUESTION_ID)(VLAN_LIST_VAR_OFFSET + Index), VLAN_CONFIGURATION_VARSTORE_ID, - (UINT16) (VLAN_LIST_VAR_OFFSET + Index), + (UINT16)(VLAN_LIST_VAR_OFFSET + Index), StringId, STRING_TOKEN (STR_VLAN_VLAN_LIST_HELP), 0, @@ -465,7 +467,6 @@ VlanUpdateForm ( } } - /** This function publish the VLAN configuration Form for a network device. The HII Config Access protocol will be installed on a child handle of the network @@ -480,7 +481,7 @@ VlanUpdateForm ( **/ EFI_STATUS InstallVlanConfigForm ( - IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData + IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData ) { EFI_STATUS Status; @@ -497,26 +498,28 @@ InstallVlanConfigForm ( // ChildDevicePath = AppendDevicePathNode ( PrivateData->ParentDevicePath, - (CONST EFI_DEVICE_PATH_PROTOCOL *) &mHiiVendorDevicePathNode + (CONST EFI_DEVICE_PATH_PROTOCOL *)&mHiiVendorDevicePathNode ); if (ChildDevicePath == NULL) { return EFI_OUT_OF_RESOURCES; } + PrivateData->ChildDevicePath = ChildDevicePath; DriverHandle = NULL; ConfigAccess = &PrivateData->ConfigAccess; - Status = gBS->InstallMultipleProtocolInterfaces ( - &DriverHandle, - &gEfiDevicePathProtocolGuid, - ChildDevicePath, - &gEfiHiiConfigAccessProtocolGuid, - ConfigAccess, - NULL - ); + Status = gBS->InstallMultipleProtocolInterfaces ( + &DriverHandle, + &gEfiDevicePathProtocolGuid, + ChildDevicePath, + &gEfiHiiConfigAccessProtocolGuid, + ConfigAccess, + NULL + ); if (EFI_ERROR (Status)) { return Status; } + PrivateData->DriverHandle = DriverHandle; // @@ -548,16 +551,18 @@ InstallVlanConfigForm ( if (HiiHandle == NULL) { return EFI_OUT_OF_RESOURCES; } + PrivateData->HiiHandle = HiiHandle; // // Update formset title help string. // MacString = NULL; - Status = NetLibGetMacString (PrivateData->ControllerHandle, PrivateData->ImageHandle, &MacString); + Status = NetLibGetMacString (PrivateData->ControllerHandle, PrivateData->ImageHandle, &MacString); if (EFI_ERROR (Status)) { return Status; } + PrivateData->MacString = MacString; StrCpyS (Str, sizeof (Str) / sizeof (CHAR16), L"VLAN Configuration (MAC:"); @@ -595,11 +600,11 @@ InstallVlanConfigForm ( **/ EFI_STATUS UninstallVlanConfigForm ( - IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData + IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData ) { - EFI_STATUS Status; - EFI_VLAN_CONFIG_PROTOCOL *VlanConfig; + EFI_STATUS Status; + EFI_VLAN_CONFIG_PROTOCOL *VlanConfig; // // End the parent-child relationship. @@ -637,6 +642,7 @@ UninstallVlanConfigForm ( ); return Status; } + PrivateData->DriverHandle = NULL; if (PrivateData->ChildDevicePath != NULL) { @@ -660,5 +666,6 @@ UninstallVlanConfigForm ( HiiRemovePackages (PrivateData->HiiHandle); PrivateData->HiiHandle = NULL; } + return EFI_SUCCESS; } diff --git a/NetworkPkg/VlanConfigDxe/VlanConfigImpl.h b/NetworkPkg/VlanConfigDxe/VlanConfigImpl.h index 2f1f17e6ef..c8fe9b097c 100644 --- a/NetworkPkg/VlanConfigDxe/VlanConfigImpl.h +++ b/NetworkPkg/VlanConfigDxe/VlanConfigImpl.h @@ -32,40 +32,39 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include "VlanConfigNvData.h" -extern EFI_COMPONENT_NAME2_PROTOCOL gVlanConfigComponentName2; -extern EFI_COMPONENT_NAME_PROTOCOL gVlanConfigComponentName; +extern EFI_COMPONENT_NAME2_PROTOCOL gVlanConfigComponentName2; +extern EFI_COMPONENT_NAME_PROTOCOL gVlanConfigComponentName; // // Tool generated IFR binary data and String package data // -extern UINT8 VlanConfigBin[]; -extern UINT8 VlanConfigDxeStrings[]; +extern UINT8 VlanConfigBin[]; +extern UINT8 VlanConfigDxeStrings[]; -#define VLAN_LIST_VAR_OFFSET ((UINT16) OFFSET_OF (VLAN_CONFIGURATION, VlanList)) +#define VLAN_LIST_VAR_OFFSET ((UINT16) OFFSET_OF (VLAN_CONFIGURATION, VlanList)) typedef struct { - UINTN Signature; + UINTN Signature; - EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; - EFI_HII_HANDLE HiiHandle; - EFI_HANDLE DriverHandle; - EFI_DEVICE_PATH_PROTOCOL *ChildDevicePath; + EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; + EFI_HII_HANDLE HiiHandle; + EFI_HANDLE DriverHandle; + EFI_DEVICE_PATH_PROTOCOL *ChildDevicePath; - EFI_HANDLE ControllerHandle; - EFI_HANDLE ImageHandle; - EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; - EFI_VLAN_CONFIG_PROTOCOL *VlanConfig; - CHAR16 *MacString; + EFI_HANDLE ControllerHandle; + EFI_HANDLE ImageHandle; + EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath; + EFI_VLAN_CONFIG_PROTOCOL *VlanConfig; + CHAR16 *MacString; - UINT16 NumberOfVlan; - UINT16 VlanId[MAX_VLAN_NUMBER]; + UINT16 NumberOfVlan; + UINT16 VlanId[MAX_VLAN_NUMBER]; } VLAN_CONFIG_PRIVATE_DATA; -#define VLAN_CONFIG_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('V', 'C', 'P', 'D') +#define VLAN_CONFIG_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('V', 'C', 'P', 'D') #define VLAN_CONFIG_PRIVATE_DATA_FROM_THIS(a) CR (a, VLAN_CONFIG_PRIVATE_DATA, ConfigAccess, VLAN_CONFIG_PRIVATE_DATA_SIGNATURE) -extern VLAN_CONFIG_PRIVATE_DATA mVlanConfigPrivateDateTemplate; - +extern VLAN_CONFIG_PRIVATE_DATA mVlanConfigPrivateDateTemplate; /** Retrieves a Unicode string that is the user readable name of the driver. @@ -104,9 +103,9 @@ extern VLAN_CONFIG_PRIVATE_DATA mVlanConfigPrivateDateTemplate; EFI_STATUS EFIAPI VlanConfigComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN CHAR8 *Language, + OUT CHAR16 **DriverName ); /** @@ -170,11 +169,11 @@ VlanConfigComponentNameGetDriverName ( EFI_STATUS EFIAPI VlanConfigComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName + IN EFI_COMPONENT_NAME_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE ChildHandle OPTIONAL, + IN CHAR8 *Language, + OUT CHAR16 **ControllerName ); /** @@ -193,9 +192,9 @@ VlanConfigComponentNameGetControllerName ( EFI_STATUS EFIAPI VlanConfigDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ); /** @@ -214,9 +213,9 @@ VlanConfigDriverBindingSupported ( EFI_STATUS EFIAPI VlanConfigDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ); /** @@ -235,10 +234,10 @@ VlanConfigDriverBindingStart ( EFI_STATUS EFIAPI VlanConfigDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer ); /** @@ -249,7 +248,7 @@ VlanConfigDriverBindingStop ( **/ VOID VlanUpdateForm ( - IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData + IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData ); /** @@ -266,7 +265,7 @@ VlanUpdateForm ( **/ EFI_STATUS InstallVlanConfigForm ( - IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData + IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData ); /** @@ -281,7 +280,7 @@ InstallVlanConfigForm ( **/ EFI_STATUS UninstallVlanConfigForm ( - IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData + IN OUT VLAN_CONFIG_PRIVATE_DATA *PrivateData ); /** @@ -313,10 +312,10 @@ UninstallVlanConfigForm ( EFI_STATUS EFIAPI VlanExtractConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Request, - OUT EFI_STRING *Progress, - OUT EFI_STRING *Results + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results ); /** @@ -340,9 +339,9 @@ VlanExtractConfig ( EFI_STATUS EFIAPI VlanRouteConfig ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN CONST EFI_STRING Configuration, - OUT EFI_STRING *Progress + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress ); /** @@ -370,12 +369,12 @@ VlanRouteConfig ( EFI_STATUS EFIAPI VlanCallback ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN EFI_BROWSER_ACTION Action, - IN EFI_QUESTION_ID QuestionId, - IN UINT8 Type, - IN EFI_IFR_TYPE_VALUE *Value, - OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest ); #endif diff --git a/NetworkPkg/VlanConfigDxe/VlanConfigNvData.h b/NetworkPkg/VlanConfigDxe/VlanConfigNvData.h index 00b5486901..9f059c7192 100644 --- a/NetworkPkg/VlanConfigDxe/VlanConfigNvData.h +++ b/NetworkPkg/VlanConfigDxe/VlanConfigNvData.h @@ -16,25 +16,25 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #define VLAN_CONFIGURATION_FORM_ID 0x0001 #define VLAN_HEAD_FORM_ID 0x0002 -#define VLAN_ADD_QUESTION_ID 0x1000 -#define VLAN_REMOVE_QUESTION_ID 0x2000 -#define VLAN_UPDATE_QUESTION_ID 0x3000 +#define VLAN_ADD_QUESTION_ID 0x1000 +#define VLAN_REMOVE_QUESTION_ID 0x2000 +#define VLAN_UPDATE_QUESTION_ID 0x3000 -#define LABEL_VLAN_LIST 0x0001 -#define LABEL_END 0xffff +#define LABEL_VLAN_LIST 0x0001 +#define LABEL_END 0xffff // // The maximum number of VLAN that will be displayed on the menu // -#define MAX_VLAN_NUMBER 100 +#define MAX_VLAN_NUMBER 100 // // Nv Data structure referenced by IFR // typedef struct { - UINT16 VlanId; - UINT8 Priority; - UINT8 VlanList[MAX_VLAN_NUMBER]; + UINT16 VlanId; + UINT8 Priority; + UINT8 VlanList[MAX_VLAN_NUMBER]; } VLAN_CONFIGURATION; #endif diff --git a/NetworkPkg/WifiConnectionManagerDxe/EapContext.h b/NetworkPkg/WifiConnectionManagerDxe/EapContext.h index 9b3801926a..8b18988f7f 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/EapContext.h +++ b/NetworkPkg/WifiConnectionManagerDxe/EapContext.h @@ -11,12 +11,10 @@ #define __EFI_WIFI_EAP_CONTEXT_H__ typedef struct { - - BOOLEAN IsEncrypted; - CHAR16 EncryptPassword[PASSWORD_STORAGE_SIZE]; - UINTN KeySize; - UINT8 KeyData[1]; - + BOOLEAN IsEncrypted; + CHAR16 EncryptPassword[PASSWORD_STORAGE_SIZE]; + UINTN KeySize; + UINT8 KeyData[1]; } EFI_EAP_PRIVATE_KEY; #endif diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrComponentName.c b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrComponentName.c index 1bcd3daa23..c72f9f7095 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrComponentName.c +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrComponentName.c @@ -9,15 +9,15 @@ #include "WifiConnectionMgrDxe.h" -extern EFI_GUID mEfiWifiMgrPrivateGuid; +extern EFI_GUID mEfiWifiMgrPrivateGuid; /// /// Component Name Protocol instance /// GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gWifiMgrDxeComponentName = { - (EFI_COMPONENT_NAME_GET_DRIVER_NAME) WifiMgrDxeComponentNameGetDriverName, - (EFI_COMPONENT_NAME_GET_CONTROLLER_NAME) WifiMgrDxeComponentNameGetControllerName, + (EFI_COMPONENT_NAME_GET_DRIVER_NAME)WifiMgrDxeComponentNameGetDriverName, + (EFI_COMPONENT_NAME_GET_CONTROLLER_NAME)WifiMgrDxeComponentNameGetControllerName, "eng" }; @@ -35,7 +35,7 @@ EFI_COMPONENT_NAME2_PROTOCOL gWifiMgrDxeComponentName2 = { /// Table of driver names /// GLOBAL_REMOVE_IF_UNREFERENCED -EFI_UNICODE_STRING_TABLE mWifiMgrDxeDriverNameTable[] = { +EFI_UNICODE_STRING_TABLE mWifiMgrDxeDriverNameTable[] = { { "eng;en", L"UEFI WiFi Connection Manager" @@ -50,7 +50,7 @@ EFI_UNICODE_STRING_TABLE mWifiMgrDxeDriverNameTable[] = { /// Table of controller names /// GLOBAL_REMOVE_IF_UNREFERENCED -EFI_UNICODE_STRING_TABLE mWifiMgrDxeControllerNameTable[] = { +EFI_UNICODE_STRING_TABLE mWifiMgrDxeControllerNameTable[] = { { "eng;en", L"UEFI WiFi Connection Manager Controller" @@ -150,13 +150,13 @@ WifiMgrDxeComponentNameGetControllerName ( OUT CHAR16 **ControllerName ) { - EFI_STATUS Status; - WIFI_MGR_PRIVATE_PROTOCOL *WifiMgrPrivate; + EFI_STATUS Status; + WIFI_MGR_PRIVATE_PROTOCOL *WifiMgrPrivate; // // ChildHandle must be NULL for a Device Driver // - if (ControllerHandle == NULL || ChildHandle != NULL) { + if ((ControllerHandle == NULL) || (ChildHandle != NULL)) { return EFI_UNSUPPORTED; } @@ -166,7 +166,7 @@ WifiMgrDxeComponentNameGetControllerName ( Status = gBS->OpenProtocol ( ControllerHandle, &mEfiWifiMgrPrivateGuid, - (VOID **) &WifiMgrPrivate, + (VOID **)&WifiMgrPrivate, NULL, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfig.h b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfig.h index c0b440fd25..a1ed09af71 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfig.h +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfig.h @@ -12,8 +12,8 @@ #include "WifiConnectionMgrConfigNVDataStruct.h" -extern UINT8 WifiConnectionManagerDxeBin[]; -extern UINT8 WifiConnectionManagerDxeStrings[]; +extern UINT8 WifiConnectionManagerDxeBin[]; +extern UINT8 WifiConnectionManagerDxeStrings[]; typedef struct { UINT32 Signature; @@ -40,7 +40,7 @@ typedef struct { CHAR16 PrivateKeyName[WIFI_FILENAME_STR_MAX_SIZE]; VOID *PrivateKeyData; UINTN PrivateKeyDataSize; - CHAR16 PrivateKeyPassword[PASSWORD_STORAGE_SIZE]; //Password to protect private key file + CHAR16 PrivateKeyPassword[PASSWORD_STORAGE_SIZE]; // Password to protect private key file CHAR16 EapIdentity[EAP_IDENTITY_SIZE]; CHAR16 EapPassword[PASSWORD_STORAGE_SIZE]; UINT8 EapSecondAuthMethod; @@ -60,8 +60,8 @@ typedef struct { /// HII specific Vendor Device Path definition. /// typedef struct { - VENDOR_DEVICE_PATH VendorDevicePath; - EFI_DEVICE_PATH_PROTOCOL End; + VENDOR_DEVICE_PATH VendorDevicePath; + EFI_DEVICE_PATH_PROTOCOL End; } HII_VENDOR_DEVICE_PATH; #pragma pack() diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfigNVDataStruct.h b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfigNVDataStruct.h index cffc51f592..69878bc457 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfigNVDataStruct.h +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrConfigNVDataStruct.h @@ -13,139 +13,137 @@ #include #include "WifiConnectionMgrConfigHii.h" -#define MANAGER_VARSTORE_ID 0x0802 +#define MANAGER_VARSTORE_ID 0x0802 -#define WIFI_STR_MAX_SIZE 224 -#define WIFI_FILENAME_STR_MAX_SIZE 224 -#define WIFI_MGR_MAX_MAC_STRING_LEN 96 +#define WIFI_STR_MAX_SIZE 224 +#define WIFI_FILENAME_STR_MAX_SIZE 224 +#define WIFI_MGR_MAX_MAC_STRING_LEN 96 -#define SSID_MIN_LEN 1 -#define SSID_MAX_LEN 32 -#define SSID_STORAGE_SIZE 33 +#define SSID_MIN_LEN 1 +#define SSID_MAX_LEN 32 +#define SSID_STORAGE_SIZE 33 -#define PASSWORD_MIN_LEN 8 -#define PASSWORD_MAX_LEN 63 -#define PASSWORD_STORAGE_SIZE 64 +#define PASSWORD_MIN_LEN 8 +#define PASSWORD_MAX_LEN 63 +#define PASSWORD_STORAGE_SIZE 64 -#define EAP_IDENTITY_LEN 63 -#define EAP_IDENTITY_SIZE 64 +#define EAP_IDENTITY_LEN 63 +#define EAP_IDENTITY_SIZE 64 -#define FORMID_NONE_FORM 0 -#define FORMID_MAC_SELECTION 1 -#define FORMID_WIFI_MAINPAGE 2 -#define FORMID_NETWORK_LIST 3 -#define FORMID_CONNECT_NETWORK 4 -#define FORMID_ENROLL_CERT 5 -#define FORMID_CA_LIST 6 -#define FORMID_ENROLL_PRIVATE_KEY 7 -#define FORMID_PRIVATE_KEY_LIST 8 -#define FORMID_WIFI_SETTINGS 9 -#define FORMID_HIDDEN_NETWORK_LIST 10 +#define FORMID_NONE_FORM 0 +#define FORMID_MAC_SELECTION 1 +#define FORMID_WIFI_MAINPAGE 2 +#define FORMID_NETWORK_LIST 3 +#define FORMID_CONNECT_NETWORK 4 +#define FORMID_ENROLL_CERT 5 +#define FORMID_CA_LIST 6 +#define FORMID_ENROLL_PRIVATE_KEY 7 +#define FORMID_PRIVATE_KEY_LIST 8 +#define FORMID_WIFI_SETTINGS 9 +#define FORMID_HIDDEN_NETWORK_LIST 10 // // Mac List Form Key // -#define KEY_MAC_LIST 0x100 +#define KEY_MAC_LIST 0x100 // // Main Form Key // -#define KEY_REFRESH_TITLE_CONNECTION_STATUS 0x101 +#define KEY_REFRESH_TITLE_CONNECTION_STATUS 0x101 // // Network List Form Key // -#define KEY_NETWORK_LIST 0x102 -#define KEY_REFRESH_NETWORK_LIST 0x103 -#define KEY_WIFI_SETTINGS 0x104 +#define KEY_NETWORK_LIST 0x102 +#define KEY_REFRESH_NETWORK_LIST 0x103 +#define KEY_WIFI_SETTINGS 0x104 // // Connect Network Form Key // -#define KEY_PASSWORD_CONNECT_NETWORK 0x201 -#define KEY_CONNECT_ACTION 0x202 -#define KEY_REFRESH_CONNECT_CONFIGURATION 0x203 -#define KEY_EAP_AUTH_METHOD_CONNECT_NETWORK 0x204 -#define KEY_EAP_SEAUTH_METHOD_CONNECT_NETWORK 0x205 -#define KEY_ENROLL_CA_CERT_CONNECT_NETWORK 0x206 -#define KEY_ENROLL_CLIENT_CERT_CONNECT_NETWORK 0x207 -#define KEY_ENROLL_PRIVATE_KEY_CONNECT_NETWORK 0x208 -#define KEY_EAP_IDENTITY_CONNECT_NETWORK 0x209 -#define KEY_EAP_PASSWORD_CONNECT_NETWORK 0x210 +#define KEY_PASSWORD_CONNECT_NETWORK 0x201 +#define KEY_CONNECT_ACTION 0x202 +#define KEY_REFRESH_CONNECT_CONFIGURATION 0x203 +#define KEY_EAP_AUTH_METHOD_CONNECT_NETWORK 0x204 +#define KEY_EAP_SEAUTH_METHOD_CONNECT_NETWORK 0x205 +#define KEY_ENROLL_CA_CERT_CONNECT_NETWORK 0x206 +#define KEY_ENROLL_CLIENT_CERT_CONNECT_NETWORK 0x207 +#define KEY_ENROLL_PRIVATE_KEY_CONNECT_NETWORK 0x208 +#define KEY_EAP_IDENTITY_CONNECT_NETWORK 0x209 +#define KEY_EAP_PASSWORD_CONNECT_NETWORK 0x210 // -//Cert Form And Private Key Form +// Cert Form And Private Key Form // -#define KEY_EAP_ENROLL_CERT_FROM_FILE 0x301 -#define KEY_EAP_ENROLL_PRIVATE_KEY_FROM_FILE 0x302 -#define KEY_SAVE_CERT_TO_MEM 0x303 -#define KEY_NO_SAVE_CERT_TO_MEM 0x304 -#define KEY_SAVE_PRIVATE_KEY_TO_MEM 0x305 -#define KEY_NO_SAVE_PRIVATE_KEY_TO_MEM 0x306 -#define KEY_PRIVATE_KEY_PASSWORD 0x307 -#define KEY_ENROLLED_CERT_NAME 0x308 -#define KEY_ENROLLED_PRIVATE_KEY_NAME 0x309 +#define KEY_EAP_ENROLL_CERT_FROM_FILE 0x301 +#define KEY_EAP_ENROLL_PRIVATE_KEY_FROM_FILE 0x302 +#define KEY_SAVE_CERT_TO_MEM 0x303 +#define KEY_NO_SAVE_CERT_TO_MEM 0x304 +#define KEY_SAVE_PRIVATE_KEY_TO_MEM 0x305 +#define KEY_NO_SAVE_PRIVATE_KEY_TO_MEM 0x306 +#define KEY_PRIVATE_KEY_PASSWORD 0x307 +#define KEY_ENROLLED_CERT_NAME 0x308 +#define KEY_ENROLLED_PRIVATE_KEY_NAME 0x309 // // Hidden Network Configuration Form // -#define KEY_HIDDEN_NETWORK 0x401 -#define KEY_ADD_HIDDEN_NETWORK 0x402 -#define KEY_REMOVE_HIDDEN_NETWORK 0x403 +#define KEY_HIDDEN_NETWORK 0x401 +#define KEY_ADD_HIDDEN_NETWORK 0x402 +#define KEY_REMOVE_HIDDEN_NETWORK 0x403 // // Dynamic Lists // -#define MAC_LIST_COUNT_MAX 255 -#define LABEL_MAC_ENTRY 0x1000 -#define KEY_MAC_ENTRY_BASE 0x1100 +#define MAC_LIST_COUNT_MAX 255 +#define LABEL_MAC_ENTRY 0x1000 +#define KEY_MAC_ENTRY_BASE 0x1100 -#define NETWORK_LIST_COUNT_MAX 4095 -#define LABEL_NETWORK_LIST_ENTRY 0x2000 -#define KEY_AVAILABLE_NETWORK_ENTRY_BASE 0x3000 +#define NETWORK_LIST_COUNT_MAX 4095 +#define LABEL_NETWORK_LIST_ENTRY 0x2000 +#define KEY_AVAILABLE_NETWORK_ENTRY_BASE 0x3000 -#define HIDDEN_NETWORK_LIST_COUNT_MAX 255 -#define LABEL_HIDDEN_NETWORK_ENTRY 0x4000 -#define KEY_HIDDEN_NETWORK_ENTRY_BASE 0x4100 +#define HIDDEN_NETWORK_LIST_COUNT_MAX 255 +#define LABEL_HIDDEN_NETWORK_ENTRY 0x4000 +#define KEY_HIDDEN_NETWORK_ENTRY_BASE 0x4100 -#define LABEL_END 0xffff +#define LABEL_END 0xffff // // Network Security Type // -#define SECURITY_TYPE_NONE 0 -#define SECURITY_TYPE_WPA_ENTERPRISE 1 -#define SECURITY_TYPE_WPA2_ENTERPRISE 2 -#define SECURITY_TYPE_WPA_PERSONAL 3 -#define SECURITY_TYPE_WPA2_PERSONAL 4 -#define SECURITY_TYPE_WEP 5 -#define SECURITY_TYPE_UNKNOWN 6 -#define SECURITY_TYPE_MAX 7 +#define SECURITY_TYPE_NONE 0 +#define SECURITY_TYPE_WPA_ENTERPRISE 1 +#define SECURITY_TYPE_WPA2_ENTERPRISE 2 +#define SECURITY_TYPE_WPA_PERSONAL 3 +#define SECURITY_TYPE_WPA2_PERSONAL 4 +#define SECURITY_TYPE_WEP 5 +#define SECURITY_TYPE_UNKNOWN 6 +#define SECURITY_TYPE_MAX 7 -#define EAP_AUTH_METHOD_TTLS 0 -#define EAP_AUTH_METHOD_PEAP 1 -#define EAP_AUTH_METHOD_TLS 2 -#define EAP_AUTH_METHOD_MAX 3 +#define EAP_AUTH_METHOD_TTLS 0 +#define EAP_AUTH_METHOD_PEAP 1 +#define EAP_AUTH_METHOD_TLS 2 +#define EAP_AUTH_METHOD_MAX 3 -#define EAP_SEAUTH_METHOD_MSCHAPV2 0 -#define EAP_SEAUTH_METHOD_MAX 1 +#define EAP_SEAUTH_METHOD_MSCHAPV2 0 +#define EAP_SEAUTH_METHOD_MAX 1 -#define HIDDEN_NETWORK_LIST_VAR_OFFSET ((UINT16) OFFSET_OF (WIFI_MANAGER_IFR_NVDATA, HiddenNetworkList)) +#define HIDDEN_NETWORK_LIST_VAR_OFFSET ((UINT16) OFFSET_OF (WIFI_MANAGER_IFR_NVDATA, HiddenNetworkList)) #pragma pack(1) typedef struct _WIFI_MANAGER_IFR_NVDATA { - - UINT32 ProfileCount; - CHAR16 SSId[SSID_STORAGE_SIZE]; - CHAR16 Password[PASSWORD_STORAGE_SIZE]; - CHAR16 PrivateKeyPassword[PASSWORD_STORAGE_SIZE]; - CHAR16 EapIdentity[EAP_IDENTITY_SIZE]; - CHAR16 EapPassword[PASSWORD_STORAGE_SIZE]; - UINT8 SecurityType; - UINT8 EapAuthMethod; - UINT8 EapSecondAuthMethod; - UINT8 HiddenNetworkList[HIDDEN_NETWORK_LIST_COUNT_MAX]; - + UINT32 ProfileCount; + CHAR16 SSId[SSID_STORAGE_SIZE]; + CHAR16 Password[PASSWORD_STORAGE_SIZE]; + CHAR16 PrivateKeyPassword[PASSWORD_STORAGE_SIZE]; + CHAR16 EapIdentity[EAP_IDENTITY_SIZE]; + CHAR16 EapPassword[PASSWORD_STORAGE_SIZE]; + UINT8 SecurityType; + UINT8 EapAuthMethod; + UINT8 EapSecondAuthMethod; + UINT8 HiddenNetworkList[HIDDEN_NETWORK_LIST_COUNT_MAX]; } WIFI_MANAGER_IFR_NVDATA; #pragma pack() diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDriver.c b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDriver.c index 841ff52588..67a01ca058 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDriver.c +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDriver.c @@ -12,7 +12,7 @@ /// /// Driver Binding Protocol instance /// -EFI_DRIVER_BINDING_PROTOCOL gWifiMgrDxeDriverBinding = { +EFI_DRIVER_BINDING_PROTOCOL gWifiMgrDxeDriverBinding = { WifiMgrDxeDriverBindingSupported, WifiMgrDxeDriverBindingStart, WifiMgrDxeDriverBindingStop, @@ -22,22 +22,22 @@ EFI_DRIVER_BINDING_PROTOCOL gWifiMgrDxeDriverBinding = { }; // -//The private global data for WiFi Connection Manager +// The private global data for WiFi Connection Manager // -WIFI_MGR_PRIVATE_DATA *mPrivate = NULL; +WIFI_MGR_PRIVATE_DATA *mPrivate = NULL; // -//The private guid to identify WiFi Connection Manager +// The private guid to identify WiFi Connection Manager // -EFI_GUID mEfiWifiMgrPrivateGuid = EFI_WIFIMGR_PRIVATE_GUID; +EFI_GUID mEfiWifiMgrPrivateGuid = EFI_WIFIMGR_PRIVATE_GUID; // -//The Hii config guids +// The Hii config guids // -EFI_GUID gWifiConfigFormSetGuid = WIFI_CONNECTION_MANAGER_CONFIG_GUID; -EFI_GUID mWifiConfigNetworkListRefreshGuid = WIFI_CONFIG_NETWORK_LIST_REFRESH_GUID; -EFI_GUID mWifiConfigConnectFormRefreshGuid = WIFI_CONFIG_CONNECT_FORM_REFRESH_GUID; -EFI_GUID mWifiConfigMainFormRefreshGuid = WIFI_CONFIG_MAIN_FORM_REFRESH_GUID; +EFI_GUID gWifiConfigFormSetGuid = WIFI_CONNECTION_MANAGER_CONFIG_GUID; +EFI_GUID mWifiConfigNetworkListRefreshGuid = WIFI_CONFIG_NETWORK_LIST_REFRESH_GUID; +EFI_GUID mWifiConfigConnectFormRefreshGuid = WIFI_CONFIG_CONNECT_FORM_REFRESH_GUID; +EFI_GUID mWifiConfigMainFormRefreshGuid = WIFI_CONFIG_MAIN_FORM_REFRESH_GUID; /** Tests to see if this driver supports a given controller. If a child device is provided, @@ -85,12 +85,12 @@ EFI_GUID mWifiConfigMainFormRefreshGuid = WIFI_CONFIG_MAIN_FORM_REFRESH_GUID; EFI_STATUS EFIAPI WifiMgrDxeDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = gBS->OpenProtocol ( ControllerHandle, @@ -155,28 +155,28 @@ WifiMgrDxeDriverBindingSupported ( EFI_STATUS EFIAPI WifiMgrDxeDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - UINTN AddressSize; - WIFI_MGR_DEVICE_DATA *Nic; - EFI_WIRELESS_MAC_CONNECTION_II_PROTOCOL *Wmp; - EFI_SUPPLICANT_PROTOCOL *Supplicant; - EFI_EAP_CONFIGURATION_PROTOCOL *EapConfig; + EFI_STATUS Status; + EFI_TPL OldTpl; + UINTN AddressSize; + WIFI_MGR_DEVICE_DATA *Nic; + EFI_WIRELESS_MAC_CONNECTION_II_PROTOCOL *Wmp; + EFI_SUPPLICANT_PROTOCOL *Supplicant; + EFI_EAP_CONFIGURATION_PROTOCOL *EapConfig; Nic = NULL; // - //Open Protocols + // Open Protocols // Status = gBS->OpenProtocol ( ControllerHandle, &gEfiWiFi2ProtocolGuid, - (VOID**) &Wmp, + (VOID **)&Wmp, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -188,7 +188,7 @@ WifiMgrDxeDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiSupplicantProtocolGuid, - (VOID**) &Supplicant, + (VOID **)&Supplicant, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -200,7 +200,7 @@ WifiMgrDxeDriverBindingStart ( Status = gBS->OpenProtocol ( ControllerHandle, &gEfiEapConfigurationProtocolGuid, - (VOID**) &EapConfig, + (VOID **)&EapConfig, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER @@ -210,26 +210,27 @@ WifiMgrDxeDriverBindingStart ( } // - //Initialize Nic device data + // Initialize Nic device data // Nic = AllocateZeroPool (sizeof (WIFI_MGR_DEVICE_DATA)); if (Nic == NULL) { Status = EFI_OUT_OF_RESOURCES; goto ERROR1; } - Nic->Signature = WIFI_MGR_DEVICE_DATA_SIGNATURE; - Nic->DriverHandle = This->DriverBindingHandle; - Nic->ControllerHandle = ControllerHandle; - Nic->Private = mPrivate; - Nic->Wmp = Wmp; - Nic->Supplicant = Supplicant; - Nic->EapConfig = EapConfig; - Nic->UserSelectedProfile = NULL; - Nic->OneTimeScanRequest = FALSE; - Nic->ScanTickTime = WIFI_SCAN_FREQUENCY; //Initialize the first scan + + Nic->Signature = WIFI_MGR_DEVICE_DATA_SIGNATURE; + Nic->DriverHandle = This->DriverBindingHandle; + Nic->ControllerHandle = ControllerHandle; + Nic->Private = mPrivate; + Nic->Wmp = Wmp; + Nic->Supplicant = Supplicant; + Nic->EapConfig = EapConfig; + Nic->UserSelectedProfile = NULL; + Nic->OneTimeScanRequest = FALSE; + Nic->ScanTickTime = WIFI_SCAN_FREQUENCY; // Initialize the first scan if (Nic->Supplicant != NULL) { - WifiMgrGetSupportedSuites(Nic); + WifiMgrGetSupportedSuites (Nic); } InitializeListHead (&Nic->ProfileList); @@ -239,7 +240,7 @@ WifiMgrDxeDriverBindingStart ( // Status = NetLibGetMacAddress ( ControllerHandle, - (EFI_MAC_ADDRESS*) &Nic->MacAddress, + (EFI_MAC_ADDRESS *)&Nic->MacAddress, &AddressSize ); if (EFI_ERROR (Status)) { @@ -260,7 +261,7 @@ WifiMgrDxeDriverBindingStart ( goto ERROR2; } - Status = gBS->SetTimer (Nic->TickTimer, TimerPeriodic, EFI_TIMER_PERIOD_MILLISECONDS(500)); + Status = gBS->SetTimer (Nic->TickTimer, TimerPeriodic, EFI_TIMER_PERIOD_MILLISECONDS (500)); if (EFI_ERROR (Status)) { goto ERROR3; } @@ -270,10 +271,11 @@ WifiMgrDxeDriverBindingStart ( OldTpl = gBS->RaiseTPL (TPL_CALLBACK); InsertTailList (&mPrivate->NicList, &Nic->Link); - Nic->NicIndex = mPrivate->NicCount ++; + Nic->NicIndex = mPrivate->NicCount++; if (mPrivate->CurrentNic == NULL) { mPrivate->CurrentNic = Nic; } + gBS->RestoreTPL (OldTpl); Status = gBS->InstallProtocolInterface ( @@ -306,13 +308,16 @@ ERROR2: if (Nic->SupportedSuites.SupportedAKMSuites != NULL) { FreePool (Nic->SupportedSuites.SupportedAKMSuites); } + if (Nic->SupportedSuites.SupportedSwCipherSuites != NULL) { FreePool (Nic->SupportedSuites.SupportedSwCipherSuites); } + if (Nic->SupportedSuites.SupportedHwCipherSuites != NULL) { FreePool (Nic->SupportedSuites.SupportedHwCipherSuites); } } + FreePool (Nic); ERROR1: @@ -374,21 +379,21 @@ ERROR1: EFI_STATUS EFIAPI WifiMgrDxeDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer OPTIONAL + IN EFI_DRIVER_BINDING_PROTOCOL *This, + IN EFI_HANDLE ControllerHandle, + IN UINTN NumberOfChildren, + IN EFI_HANDLE *ChildHandleBuffer OPTIONAL ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - WIFI_MGR_PRIVATE_PROTOCOL *WifiMgrIdentifier; - WIFI_MGR_DEVICE_DATA *Nic; + EFI_STATUS Status; + EFI_TPL OldTpl; + WIFI_MGR_PRIVATE_PROTOCOL *WifiMgrIdentifier; + WIFI_MGR_DEVICE_DATA *Nic; Status = gBS->OpenProtocol ( ControllerHandle, &mEfiWifiMgrPrivateGuid, - (VOID **) &WifiMgrIdentifier, + (VOID **)&WifiMgrIdentifier, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -415,9 +420,11 @@ WifiMgrDxeDriverBindingStop ( if (Nic->SupportedSuites.SupportedAKMSuites != NULL) { FreePool (Nic->SupportedSuites.SupportedAKMSuites); } + if (Nic->SupportedSuites.SupportedSwCipherSuites != NULL) { FreePool (Nic->SupportedSuites.SupportedSwCipherSuites); } + if (Nic->SupportedSuites.SupportedHwCipherSuites != NULL) { FreePool (Nic->SupportedSuites.SupportedHwCipherSuites); } @@ -427,31 +434,31 @@ WifiMgrDxeDriverBindingStop ( // Close Protocols // Status = gBS->UninstallProtocolInterface ( - ControllerHandle, - &mEfiWifiMgrPrivateGuid, - &Nic->WifiMgrIdentifier - ); + ControllerHandle, + &mEfiWifiMgrPrivateGuid, + &Nic->WifiMgrIdentifier + ); if (EFI_ERROR (Status)) { return Status; } Status = gBS->CloseProtocol ( - ControllerHandle, - &gEfiWiFi2ProtocolGuid, - Nic->DriverHandle, - Nic->ControllerHandle - ); + ControllerHandle, + &gEfiWiFi2ProtocolGuid, + Nic->DriverHandle, + Nic->ControllerHandle + ); if (EFI_ERROR (Status)) { return Status; } if (Nic->Supplicant != NULL) { Status = gBS->CloseProtocol ( - ControllerHandle, - &gEfiSupplicantProtocolGuid, - Nic->DriverHandle, - Nic->ControllerHandle - ); + ControllerHandle, + &gEfiSupplicantProtocolGuid, + Nic->DriverHandle, + Nic->ControllerHandle + ); if (EFI_ERROR (Status)) { return Status; } @@ -459,11 +466,11 @@ WifiMgrDxeDriverBindingStop ( if (Nic->EapConfig != NULL) { Status = gBS->CloseProtocol ( - ControllerHandle, - &gEfiEapConfigurationProtocolGuid, - Nic->DriverHandle, - Nic->ControllerHandle - ); + ControllerHandle, + &gEfiEapConfigurationProtocolGuid, + Nic->DriverHandle, + Nic->ControllerHandle + ); if (EFI_ERROR (Status)) { return Status; } @@ -505,11 +512,11 @@ WifiMgrDxeDriverBindingStop ( EFI_STATUS EFIAPI WifiMgrDxeDriverEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = EfiLibInstallDriverBindingComponentName2 ( ImageHandle, @@ -531,16 +538,17 @@ WifiMgrDxeDriverEntryPoint ( Status = EFI_OUT_OF_RESOURCES; goto ERROR1; } + mPrivate->Signature = WIFI_MGR_PRIVATE_DATA_SIGNATURE; mPrivate->DriverHandle = ImageHandle; InitializeListHead (&mPrivate->NicList); - mPrivate->NicCount = 0; + mPrivate->NicCount = 0; mPrivate->CurrentNic = NULL; InitializeListHead (&mPrivate->HiddenNetworkList); mPrivate->HiddenNetworkCount = 0; // - //Create events for page refresh + // Create events for page refresh // Status = gBS->CreateEventEx ( EVT_NOTIFY_SIGNAL, diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h index 170991253e..c3c70b2752 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h @@ -73,31 +73,31 @@ // #define WIFI_MGR_DXE_VERSION 0xb -#define OUI_IEEE_80211I 0xAC0F00 +#define OUI_IEEE_80211I 0xAC0F00 typedef enum { Ieee80211PairwiseCipherSuiteUseGroupCipherSuite = 0, - Ieee80211PairwiseCipherSuiteWEP40 = 1, - Ieee80211PairwiseCipherSuiteTKIP = 2, - Ieee80211PairwiseCipherSuiteCCMP = 4, - Ieee80211PairwiseCipherSuiteWEP104 = 5, - Ieee80211PairwiseCipherSuiteBIP = 6, - //... + Ieee80211PairwiseCipherSuiteWEP40 = 1, + Ieee80211PairwiseCipherSuiteTKIP = 2, + Ieee80211PairwiseCipherSuiteCCMP = 4, + Ieee80211PairwiseCipherSuiteWEP104 = 5, + Ieee80211PairwiseCipherSuiteBIP = 6, + // ... } IEEE_80211_PAIRWISE_CIPHER_SUITE; -#define IEEE_80211_PAIRWISE_CIPHER_SUITE_USE_GROUP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteUseGroupCipherSuite << 24)) -#define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP40 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP40 << 24)) -#define IEEE_80211_PAIRWISE_CIPHER_SUITE_TKIP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteTKIP << 24)) -#define IEEE_80211_PAIRWISE_CIPHER_SUITE_CCMP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteCCMP << 24)) -#define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP104 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP104 << 24)) -#define IEEE_80211_PAIRWISE_CIPHER_SUITE_BIP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteBIP << 24)) +#define IEEE_80211_PAIRWISE_CIPHER_SUITE_USE_GROUP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteUseGroupCipherSuite << 24)) +#define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP40 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP40 << 24)) +#define IEEE_80211_PAIRWISE_CIPHER_SUITE_TKIP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteTKIP << 24)) +#define IEEE_80211_PAIRWISE_CIPHER_SUITE_CCMP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteCCMP << 24)) +#define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP104 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP104 << 24)) +#define IEEE_80211_PAIRWISE_CIPHER_SUITE_BIP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteBIP << 24)) typedef enum { Ieee80211AkmSuite8021XOrPMKSA = 1, Ieee80211AkmSuitePSK = 2, Ieee80211AkmSuite8021XOrPMKSASHA256 = 5, Ieee80211AkmSuitePSKSHA256 = 6 - //... + // ... } IEEE_80211_AKM_SUITE; #define IEEE_80211_AKM_SUITE_8021X_OR_PMKSA (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XOrPMKSA << 24)) @@ -108,10 +108,10 @@ typedef enum { // // Protocol instances // -extern EFI_DRIVER_BINDING_PROTOCOL gWifiMgrDxeDriverBinding; -extern EFI_COMPONENT_NAME2_PROTOCOL gWifiMgrDxeComponentName2; -extern EFI_COMPONENT_NAME_PROTOCOL gWifiMgrDxeComponentName; -extern EFI_HII_CONFIG_ACCESS_PROTOCOL gWifiMgrDxeHiiConfigAccess; +extern EFI_DRIVER_BINDING_PROTOCOL gWifiMgrDxeDriverBinding; +extern EFI_COMPONENT_NAME2_PROTOCOL gWifiMgrDxeComponentName2; +extern EFI_COMPONENT_NAME_PROTOCOL gWifiMgrDxeComponentName; +extern EFI_HII_CONFIG_ACCESS_PROTOCOL gWifiMgrDxeHiiConfigAccess; // // Private Context Data Structure @@ -130,12 +130,12 @@ typedef enum { WifiMgrScanStateMaximum } WIFI_MGR_SCAN_STATE; -#define WIFI_SCAN_FREQUENCY 30 +#define WIFI_SCAN_FREQUENCY 30 typedef struct _WIFI_MGR_SUPPORTED_SUITES { - EFI_80211_AKM_SUITE_SELECTOR *SupportedAKMSuites; - EFI_80211_CIPHER_SUITE_SELECTOR *SupportedSwCipherSuites; - EFI_80211_CIPHER_SUITE_SELECTOR *SupportedHwCipherSuites; + EFI_80211_AKM_SUITE_SELECTOR *SupportedAKMSuites; + EFI_80211_CIPHER_SUITE_SELECTOR *SupportedSwCipherSuites; + EFI_80211_CIPHER_SUITE_SELECTOR *SupportedHwCipherSuites; } WIFI_MGR_SUPPORTED_SUITES; #define EFI_WIFIMGR_PRIVATE_GUID \ @@ -143,15 +143,15 @@ typedef struct _WIFI_MGR_SUPPORTED_SUITES { 0x99b7c019, 0x4789, 0x4829, { 0xa7, 0xbd, 0x0d, 0x4b, 0xaa, 0x62, 0x28, 0x72 } \ } -typedef struct _WIFI_MGR_PRIVATE_DATA WIFI_MGR_PRIVATE_DATA; +typedef struct _WIFI_MGR_PRIVATE_DATA WIFI_MGR_PRIVATE_DATA; typedef struct _WIFI_MGR_PRIVATE_PROTOCOL { - UINT32 Reserved; + UINT32 Reserved; } WIFI_MGR_PRIVATE_PROTOCOL; typedef struct _WIFI_MGR_FILE_CONTEXT { - EFI_FILE_HANDLE FHandle; - UINT16 *FileName; + EFI_FILE_HANDLE FHandle; + UINT16 *FileName; } WIFI_MGR_FILE_CONTEXT; typedef enum { @@ -177,43 +177,43 @@ typedef struct { // // Produced protocols // - WIFI_MGR_PRIVATE_PROTOCOL WifiMgrIdentifier; + WIFI_MGR_PRIVATE_PROTOCOL WifiMgrIdentifier; // // Private functions and data fields // - LIST_ENTRY Link; // Link to the NicList in global private data structure. - UINT32 NicIndex; - EFI_80211_MAC_ADDRESS MacAddress; - WIFI_MGR_SUPPORTED_SUITES SupportedSuites; - EFI_ADAPTER_INFO_MEDIA_STATE LastLinkState; + LIST_ENTRY Link; // Link to the NicList in global private data structure. + UINT32 NicIndex; + EFI_80211_MAC_ADDRESS MacAddress; + WIFI_MGR_SUPPORTED_SUITES SupportedSuites; + EFI_ADAPTER_INFO_MEDIA_STATE LastLinkState; // // The network is currently connected, connecting or disconnecting. // Only one network can be operated at one time. // - WIFI_MGR_NETWORK_PROFILE *CurrentOperateNetwork; - WIFI_MGR_NETWORK_PROFILE *ConnectPendingNetwork; - BOOLEAN HasDisconnectPendingNetwork; + WIFI_MGR_NETWORK_PROFILE *CurrentOperateNetwork; + WIFI_MGR_NETWORK_PROFILE *ConnectPendingNetwork; + BOOLEAN HasDisconnectPendingNetwork; // - //Profile related data fields + // Profile related data fields // - LIST_ENTRY ProfileList; // List of WIFI_MGR_NETWORK_PROFILE - UINT32 AvailableCount; - UINT32 MaxProfileIndex; - WIFI_MGR_NETWORK_PROFILE *UserSelectedProfile; + LIST_ENTRY ProfileList; // List of WIFI_MGR_NETWORK_PROFILE + UINT32 AvailableCount; + UINT32 MaxProfileIndex; + WIFI_MGR_NETWORK_PROFILE *UserSelectedProfile; // // Data fields for Hii functionlity // - BOOLEAN OneTimeScanRequest; - BOOLEAN OneTimeConnectRequest; - BOOLEAN OneTimeDisconnectRequest; - WIFI_MGR_SCAN_STATE ScanState; - UINTN ScanTickTime; - WIFI_MGR_CONNECT_STATE ConnectState; - BOOLEAN ConnectStateChanged; + BOOLEAN OneTimeScanRequest; + BOOLEAN OneTimeConnectRequest; + BOOLEAN OneTimeDisconnectRequest; + WIFI_MGR_SCAN_STATE ScanState; + UINTN ScanTickTime; + WIFI_MGR_CONNECT_STATE ConnectState; + BOOLEAN ConnectStateChanged; } WIFI_MGR_DEVICE_DATA; #define WIFI_MGR_DEVICE_DATA_SIGNATURE SIGNATURE_32 ('W','M','D','D') @@ -227,9 +227,9 @@ typedef struct { ) typedef struct { - UINT32 Signature; - LIST_ENTRY Link; - CHAR16 SSId[SSID_STORAGE_SIZE]; + UINT32 Signature; + LIST_ENTRY Link; + CHAR16 SSId[SSID_STORAGE_SIZE]; } WIFI_HIDDEN_NETWORK_DATA; #define WIFI_MGR_HIDDEN_NETWORK_SIGNATURE SIGNATURE_32 ('W','M','H','N') @@ -246,7 +246,6 @@ typedef struct { // Global private data struct // struct _WIFI_MGR_PRIVATE_DATA { - UINT32 Signature; EFI_HANDLE DriverHandle; EFI_HII_HANDLE RegisteredHandle; @@ -264,7 +263,7 @@ struct _WIFI_MGR_PRIVATE_DATA { EFI_EVENT MainPageRefreshEvent; // Event to refresh the main page // - //User Input Record + // User Input Record // UINT8 SecurityType; UINT8 EapAuthMethod; @@ -287,7 +286,7 @@ struct _WIFI_MGR_PRIVATE_DATA { ConfigAccess, \ WIFI_MGR_PRIVATE_DATA_SIGNATURE \ ) -extern WIFI_MGR_PRIVATE_DATA *mPrivate; +extern WIFI_MGR_PRIVATE_DATA *mPrivate; typedef enum { TokenTypeGetNetworksToken, @@ -297,15 +296,15 @@ typedef enum { } WIFI_MGR_MAC_CONFIG_TOKEN_TYPE; typedef union { - EFI_80211_GET_NETWORKS_TOKEN *GetNetworksToken; - EFI_80211_CONNECT_NETWORK_TOKEN *ConnectNetworkToken; - EFI_80211_DISCONNECT_NETWORK_TOKEN *DisconnectNetworkToken; + EFI_80211_GET_NETWORKS_TOKEN *GetNetworksToken; + EFI_80211_CONNECT_NETWORK_TOKEN *ConnectNetworkToken; + EFI_80211_DISCONNECT_NETWORK_TOKEN *DisconnectNetworkToken; } MAC_CONNECTION2_ADAPTER_TOKEN; typedef struct { - WIFI_MGR_DEVICE_DATA *Nic; - WIFI_MGR_MAC_CONFIG_TOKEN_TYPE Type; - MAC_CONNECTION2_ADAPTER_TOKEN Token; + WIFI_MGR_DEVICE_DATA *Nic; + WIFI_MGR_MAC_CONFIG_TOKEN_TYPE Type; + MAC_CONNECTION2_ADAPTER_TOKEN Token; } WIFI_MGR_MAC_CONFIG_TOKEN; // diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.c b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.c index c0e0de1b86..82ef92dd1c 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.c +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.c @@ -9,7 +9,7 @@ #include "WifiConnectionMgrFileUtil.h" -CHAR16* mDerPemEncodedSuffix[] = { +CHAR16 *mDerPemEncodedSuffix[] = { L".cer", L".der", L".crt", @@ -28,15 +28,17 @@ CHAR16* mDerPemEncodedSuffix[] = { **/ BOOLEAN IsDerPemEncodeCertificate ( - IN CONST CHAR16 *FileSuffix -) + IN CONST CHAR16 *FileSuffix + ) { - UINTN Index; + UINTN Index; + for (Index = 0; mDerPemEncodedSuffix[Index] != NULL; Index++) { if (StrCmp (FileSuffix, mDerPemEncodedSuffix[Index]) == 0) { return TRUE; } } + return FALSE; } @@ -58,16 +60,16 @@ IsDerPemEncodeCertificate ( **/ EFI_STATUS ReadFileContent ( - IN EFI_FILE_HANDLE FileHandle, - IN OUT VOID **BufferPtr, - OUT UINTN *FileSize, - IN UINTN AddtionAllocateSize + IN EFI_FILE_HANDLE FileHandle, + IN OUT VOID **BufferPtr, + OUT UINTN *FileSize, + IN UINTN AddtionAllocateSize ) { - UINTN BufferSize; - UINT64 SourceFileSize; - VOID *Buffer; - EFI_STATUS Status; + UINTN BufferSize; + UINT64 SourceFileSize; + VOID *Buffer; + EFI_STATUS Status; if ((FileHandle == NULL) || (FileSize == NULL)) { return EFI_INVALID_PARAMETER; @@ -78,7 +80,7 @@ ReadFileContent ( // // Get the file size // - Status = FileHandle->SetPosition (FileHandle, (UINT64) -1); + Status = FileHandle->SetPosition (FileHandle, (UINT64)-1); if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -93,20 +95,20 @@ ReadFileContent ( goto ON_EXIT; } - BufferSize = (UINTN) SourceFileSize + AddtionAllocateSize; - Buffer = AllocateZeroPool(BufferSize); + BufferSize = (UINTN)SourceFileSize + AddtionAllocateSize; + Buffer = AllocateZeroPool (BufferSize); if (Buffer == NULL) { return EFI_OUT_OF_RESOURCES; } - BufferSize = (UINTN) SourceFileSize; + BufferSize = (UINTN)SourceFileSize; *FileSize = BufferSize; Status = FileHandle->Read (FileHandle, &BufferSize, Buffer); - if (EFI_ERROR (Status) || BufferSize != *FileSize) { + if (EFI_ERROR (Status) || (BufferSize != *FileSize)) { FreePool (Buffer); Buffer = NULL; - Status = EFI_BAD_BUFFER_SIZE; + Status = EFI_BAD_BUFFER_SIZE; goto ON_EXIT; } @@ -127,7 +129,7 @@ ON_EXIT: CHAR16 * EFIAPI DevicePathToStr ( - IN EFI_DEVICE_PATH_PROTOCOL *DevPath + IN EFI_DEVICE_PATH_PROTOCOL *DevPath ) { return ConvertDevicePathToText ( @@ -150,37 +152,38 @@ DevicePathToStr ( **/ CHAR16 * ExtractFileNameFromDevicePath ( - IN EFI_DEVICE_PATH_PROTOCOL *DevicePath + IN EFI_DEVICE_PATH_PROTOCOL *DevicePath ) { - CHAR16 *String; - CHAR16 *MatchString; - CHAR16 *LastMatch; - CHAR16 *FileName; - UINTN Length; + CHAR16 *String; + CHAR16 *MatchString; + CHAR16 *LastMatch; + CHAR16 *FileName; + UINTN Length; - ASSERT(DevicePath != NULL); + ASSERT (DevicePath != NULL); - String = DevicePathToStr(DevicePath); + String = DevicePathToStr (DevicePath); if (String == NULL) { return NULL; } + MatchString = String; LastMatch = String; FileName = NULL; - while(MatchString != NULL){ + while (MatchString != NULL) { LastMatch = MatchString + 1; - MatchString = StrStr(LastMatch,L"\\"); + MatchString = StrStr (LastMatch, L"\\"); } - Length = StrLen(LastMatch); - FileName = AllocateCopyPool ((Length + 1) * sizeof(CHAR16), LastMatch); + Length = StrLen (LastMatch); + FileName = AllocateCopyPool ((Length + 1) * sizeof (CHAR16), LastMatch); if (FileName != NULL) { *(FileName + Length) = 0; } - FreePool(String); + FreePool (String); return FileName; } @@ -197,20 +200,21 @@ ExtractFileNameFromDevicePath ( **/ BOOLEAN -UpdatePage( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN EFI_DEVICE_PATH_PROTOCOL *FilePath, - IN EFI_FORM_ID FormId +UpdatePage ( + IN WIFI_MGR_PRIVATE_DATA *Private, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath, + IN EFI_FORM_ID FormId ) { - CHAR16 *FileName; - EFI_STATUS Status; + CHAR16 *FileName; + EFI_STATUS Status; FileName = NULL; if (FilePath != NULL) { - FileName = ExtractFileNameFromDevicePath(FilePath); + FileName = ExtractFileNameFromDevicePath (FilePath); } + if (FileName == NULL) { // // FileName = NULL has two cases: @@ -227,6 +231,7 @@ UpdatePage( if (Private->FileContext->FHandle != NULL) { Private->FileContext->FHandle->Close (Private->FileContext->FHandle); } + Private->FileContext->FHandle = NULL; Status = EfiOpenFileByDevicePath ( @@ -237,26 +242,42 @@ UpdatePage( ); if (EFI_ERROR (Status)) { if (FormId == FORMID_ENROLL_CERT) { - HiiSetString (Private->RegisteredHandle, - STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), L"", NULL); - } else if (FormId == FORMID_ENROLL_PRIVATE_KEY){ - HiiSetString (Private->RegisteredHandle, - STRING_TOKEN (STR_EAP_ENROLLED_PRIVATE_KEY_NAME), L"", NULL); + HiiSetString ( + Private->RegisteredHandle, + STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), + L"", + NULL + ); + } else if (FormId == FORMID_ENROLL_PRIVATE_KEY) { + HiiSetString ( + Private->RegisteredHandle, + STRING_TOKEN (STR_EAP_ENROLLED_PRIVATE_KEY_NAME), + L"", + NULL + ); } } else { - if (Private->FileContext->FileName != NULL) { FreePool (Private->FileContext->FileName); Private->FileContext->FileName = NULL; } + Private->FileContext->FileName = FileName; if (FormId == FORMID_ENROLL_CERT) { - HiiSetString (Private->RegisteredHandle, - STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), FileName, NULL); - } else if (FormId == FORMID_ENROLL_PRIVATE_KEY){ - HiiSetString (Private->RegisteredHandle, - STRING_TOKEN (STR_EAP_ENROLLED_PRIVATE_KEY_NAME), FileName, NULL); + HiiSetString ( + Private->RegisteredHandle, + STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), + FileName, + NULL + ); + } else if (FormId == FORMID_ENROLL_PRIVATE_KEY) { + HiiSetString ( + Private->RegisteredHandle, + STRING_TOKEN (STR_EAP_ENROLLED_PRIVATE_KEY_NAME), + FileName, + NULL + ); } } @@ -275,11 +296,11 @@ UpdatePage( **/ BOOLEAN UpdateCAFromFile ( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN EFI_DEVICE_PATH_PROTOCOL *FilePath + IN WIFI_MGR_PRIVATE_DATA *Private, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath ) { - return UpdatePage(Private, FilePath, FORMID_ENROLL_CERT); + return UpdatePage (Private, FilePath, FORMID_ENROLL_CERT); } /** @@ -294,10 +315,9 @@ UpdateCAFromFile ( **/ BOOLEAN UpdatePrivateKeyFromFile ( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN EFI_DEVICE_PATH_PROTOCOL *FilePath + IN WIFI_MGR_PRIVATE_DATA *Private, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath ) { - return UpdatePage(Private, FilePath, FORMID_ENROLL_PRIVATE_KEY); + return UpdatePage (Private, FilePath, FORMID_ENROLL_PRIVATE_KEY); } - diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.h b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.h index 9d9e909d68..a5ac239fdf 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.h +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrFileUtil.h @@ -30,10 +30,10 @@ **/ EFI_STATUS ReadFileContent ( - IN EFI_FILE_HANDLE FileHandle, - IN OUT VOID **BufferPtr, - OUT UINTN *FileSize, - IN UINTN AddtionAllocateSize + IN EFI_FILE_HANDLE FileHandle, + IN OUT VOID **BufferPtr, + OUT UINTN *FileSize, + IN UINTN AddtionAllocateSize ); /** @@ -48,8 +48,8 @@ ReadFileContent ( **/ BOOLEAN UpdateCAFromFile ( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN EFI_DEVICE_PATH_PROTOCOL *FilePath + IN WIFI_MGR_PRIVATE_DATA *Private, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath ); /** @@ -64,8 +64,8 @@ UpdateCAFromFile ( **/ BOOLEAN UpdatePrivateKeyFromFile ( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN EFI_DEVICE_PATH_PROTOCOL *FilePath + IN WIFI_MGR_PRIVATE_DATA *Private, + IN EFI_DEVICE_PATH_PROTOCOL *FilePath ); #endif diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c index 881592efd9..b49825bcb7 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.c @@ -17,8 +17,8 @@ HII_VENDOR_DEVICE_PATH mWifiMgrDxeHiiVendorDevicePath = { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { - (UINT8) (sizeof (VENDOR_DEVICE_PATH)), - (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) + (UINT8)(sizeof (VENDOR_DEVICE_PATH)), + (UINT8)((sizeof (VENDOR_DEVICE_PATH)) >> 8) } }, WIFI_CONNECTION_MANAGER_CONFIG_GUID @@ -27,8 +27,8 @@ HII_VENDOR_DEVICE_PATH mWifiMgrDxeHiiVendorDevicePath = { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, { - (UINT8) (END_DEVICE_PATH_LENGTH), - (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8) + (UINT8)(END_DEVICE_PATH_LENGTH), + (UINT8)((END_DEVICE_PATH_LENGTH) >> 8) } } }; @@ -37,13 +37,13 @@ HII_VENDOR_DEVICE_PATH mWifiMgrDxeHiiVendorDevicePath = { // HII Config Access Protocol instance // GLOBAL_REMOVE_IF_UNREFERENCED -EFI_HII_CONFIG_ACCESS_PROTOCOL gWifiMgrDxeHiiConfigAccess = { +EFI_HII_CONFIG_ACCESS_PROTOCOL gWifiMgrDxeHiiConfigAccess = { WifiMgrDxeHiiConfigAccessExtractConfig, WifiMgrDxeHiiConfigAccessRouteConfig, WifiMgrDxeHiiConfigAccessCallback }; -CHAR16* mSecurityType[] = { +CHAR16 *mSecurityType[] = { L"OPEN ", L"WPA-Enterprise ", L"WPA2-Enterprise", @@ -53,7 +53,7 @@ CHAR16* mSecurityType[] = { L"UnKnown " }; -CHAR16* mSignalStrengthBar[] = { +CHAR16 *mSignalStrengthBar[] = { L"[-----]", L"[*----]", L"[**---]", @@ -67,7 +67,7 @@ CHAR16* mSignalStrengthBar[] = { #define NET_LIST_FOR_EACH_FROM_NODE(Entry, Node, ListHead) \ for(Entry = Node->ForwardLink; Entry != (ListHead); Entry = Entry->ForwardLink) -extern EFI_GUID gWifiConfigFormSetGuid; +extern EFI_GUID gWifiConfigFormSetGuid; /** Create Hii Extend Label OpCode as the start opcode and end opcode. @@ -86,16 +86,16 @@ extern EFI_GUID gWifiConfigFormSetGuid; **/ EFI_STATUS WifiMgrCreateOpCode ( - IN UINT16 StartLabelNumber, - OUT VOID **StartOpCodeHandle, - OUT VOID **EndOpCodeHandle + IN UINT16 StartLabelNumber, + OUT VOID **StartOpCodeHandle, + OUT VOID **EndOpCodeHandle ) { - EFI_STATUS Status; - EFI_IFR_GUID_LABEL *InternalStartLabel; - EFI_IFR_GUID_LABEL *InternalEndLabel; + EFI_STATUS Status; + EFI_IFR_GUID_LABEL *InternalStartLabel; + EFI_IFR_GUID_LABEL *InternalEndLabel; - if (StartOpCodeHandle == NULL || EndOpCodeHandle == NULL) { + if ((StartOpCodeHandle == NULL) || (EndOpCodeHandle == NULL)) { return EFI_INVALID_PARAMETER; } @@ -110,6 +110,7 @@ WifiMgrCreateOpCode ( if (*StartOpCodeHandle == NULL) { goto Exit; } + *EndOpCodeHandle = HiiAllocateOpCodeHandle (); if (*EndOpCodeHandle == NULL) { goto Exit; @@ -118,30 +119,32 @@ WifiMgrCreateOpCode ( // // Create Hii Extend Label OpCode as the start opcode. // - InternalStartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - *StartOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + InternalStartLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + *StartOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); if (InternalStartLabel == NULL) { goto Exit; } + InternalStartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; InternalStartLabel->Number = StartLabelNumber; // // Create Hii Extend Label OpCode as the end opcode. // - InternalEndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode ( - *EndOpCodeHandle, - &gEfiIfrTianoGuid, - NULL, - sizeof (EFI_IFR_GUID_LABEL) - ); + InternalEndLabel = (EFI_IFR_GUID_LABEL *)HiiCreateGuidOpCode ( + *EndOpCodeHandle, + &gEfiIfrTianoGuid, + NULL, + sizeof (EFI_IFR_GUID_LABEL) + ); if (InternalEndLabel == NULL) { goto Exit; } + InternalEndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; InternalEndLabel->Number = LABEL_END; @@ -152,9 +155,11 @@ Exit: if (*StartOpCodeHandle != NULL) { HiiFreeOpCodeHandle (*StartOpCodeHandle); } + if (*EndOpCodeHandle != NULL) { HiiFreeOpCodeHandle (*EndOpCodeHandle); } + return Status; } @@ -169,18 +174,18 @@ Exit: **/ EFI_STATUS WifiMgrShowNicList ( - IN WIFI_MGR_PRIVATE_DATA *Private -) + IN WIFI_MGR_PRIVATE_DATA *Private + ) { - EFI_STATUS Status; - CHAR16 MacString[WIFI_MGR_MAX_MAC_STRING_LEN]; - CHAR16 PortString[WIFI_STR_MAX_SIZE]; - EFI_STRING_ID PortTitleToken; - EFI_STRING_ID PortTitleHelpToken; - WIFI_MGR_DEVICE_DATA *Nic; - LIST_ENTRY *Entry; - VOID *StartOpCodeHandle; - VOID *EndOpCodeHandle; + EFI_STATUS Status; + CHAR16 MacString[WIFI_MGR_MAX_MAC_STRING_LEN]; + CHAR16 PortString[WIFI_STR_MAX_SIZE]; + EFI_STRING_ID PortTitleToken; + EFI_STRING_ID PortTitleHelpToken; + WIFI_MGR_DEVICE_DATA *Nic; + LIST_ENTRY *Entry; + VOID *StartOpCodeHandle; + VOID *EndOpCodeHandle; if (Private == NULL) { return EFI_INVALID_PARAMETER; @@ -228,7 +233,7 @@ WifiMgrShowNicList ( PortTitleToken, PortTitleHelpToken, EFI_IFR_FLAG_CALLBACK, - (UINT16) (KEY_MAC_ENTRY_BASE + Nic->NicIndex) + (UINT16)(KEY_MAC_ENTRY_BASE + Nic->NicIndex) ); } @@ -256,29 +261,28 @@ Exit: @return the unicode string of AKM suite list or "None". **/ -CHAR16* +CHAR16 * WifiMgrGetStrAKMList ( - IN WIFI_MGR_NETWORK_PROFILE *Profile -) + IN WIFI_MGR_NETWORK_PROFILE *Profile + ) { - UINT8 Index; - UINT16 AKMSuiteCount; - CHAR16 *AKMListDisplay; + UINT8 Index; + UINT16 AKMSuiteCount; + CHAR16 *AKMListDisplay; AKMListDisplay = NULL; - if (Profile == NULL || Profile->Network.AKMSuite == NULL) { + if ((Profile == NULL) || (Profile->Network.AKMSuite == NULL)) { goto Exit; } AKMSuiteCount = Profile->Network.AKMSuite->AKMSuiteCount; if (AKMSuiteCount != 0) { - // // Current AKM Suite is between 1-9 // - AKMListDisplay = (CHAR16 *) AllocateZeroPool(sizeof (CHAR16) * AKMSuiteCount * 2); + AKMListDisplay = (CHAR16 *)AllocateZeroPool (sizeof (CHAR16) * AKMSuiteCount * 2); if (AKMListDisplay != NULL) { - for (Index = 0; Index < AKMSuiteCount; Index ++) { + for (Index = 0; Index < AKMSuiteCount; Index++) { UnicodeSPrint ( AKMListDisplay + (Index * 2), sizeof (CHAR16) * 2, @@ -297,6 +301,7 @@ Exit: if (AKMListDisplay == NULL) { AKMListDisplay = AllocateCopyPool (sizeof (L"None"), L"None"); } + return AKMListDisplay; } @@ -309,29 +314,28 @@ Exit: @return the unicode string of Cipher suite list or "None". **/ -CHAR16* +CHAR16 * WifiMgrGetStrCipherList ( - IN WIFI_MGR_NETWORK_PROFILE *Profile -) + IN WIFI_MGR_NETWORK_PROFILE *Profile + ) { - UINT8 Index; - UINT16 CipherSuiteCount; - CHAR16 *CipherListDisplay; + UINT8 Index; + UINT16 CipherSuiteCount; + CHAR16 *CipherListDisplay; CipherListDisplay = NULL; - if (Profile == NULL || Profile->Network.CipherSuite == NULL) { + if ((Profile == NULL) || (Profile->Network.CipherSuite == NULL)) { goto Exit; } - CipherSuiteCount = Profile->Network.CipherSuite->CipherSuiteCount; + CipherSuiteCount = Profile->Network.CipherSuite->CipherSuiteCount; if (CipherSuiteCount != 0) { - // // Current Cipher Suite is between 1-9 // - CipherListDisplay = (CHAR16 *) AllocateZeroPool(sizeof (CHAR16) * CipherSuiteCount * 2); + CipherListDisplay = (CHAR16 *)AllocateZeroPool (sizeof (CHAR16) * CipherSuiteCount * 2); if (CipherListDisplay != NULL) { - for (Index = 0; Index < CipherSuiteCount; Index ++) { + for (Index = 0; Index < CipherSuiteCount; Index++) { UnicodeSPrint ( CipherListDisplay + (Index * 2), sizeof (CHAR16) * 2, @@ -350,6 +354,7 @@ Exit: if (CipherListDisplay == NULL) { CipherListDisplay = AllocateCopyPool (sizeof (L"None"), L"None"); } + return CipherListDisplay; } @@ -367,25 +372,25 @@ Exit: **/ EFI_STATUS WifiMgrRefreshNetworkList ( - IN WIFI_MGR_PRIVATE_DATA *Private, - OUT WIFI_MANAGER_IFR_NVDATA *IfrNvData + IN WIFI_MGR_PRIVATE_DATA *Private, + OUT WIFI_MANAGER_IFR_NVDATA *IfrNvData ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - UINT32 AvailableCount; - EFI_STRING_ID PortPromptToken; - EFI_STRING_ID PortTextToken; - EFI_STRING_ID PortHelpToken; - WIFI_MGR_NETWORK_PROFILE *Profile; - LIST_ENTRY *Entry; - VOID *StartOpCodeHandle; - VOID *EndOpCodeHandle; - CHAR16 *AKMListDisplay; - CHAR16 *CipherListDisplay; - CHAR16 PortString[WIFI_STR_MAX_SIZE]; - UINTN PortStringSize; - WIFI_MGR_NETWORK_PROFILE *ConnectedProfile; + EFI_STATUS Status; + EFI_TPL OldTpl; + UINT32 AvailableCount; + EFI_STRING_ID PortPromptToken; + EFI_STRING_ID PortTextToken; + EFI_STRING_ID PortHelpToken; + WIFI_MGR_NETWORK_PROFILE *Profile; + LIST_ENTRY *Entry; + VOID *StartOpCodeHandle; + VOID *EndOpCodeHandle; + CHAR16 *AKMListDisplay; + CHAR16 *CipherListDisplay; + CHAR16 PortString[WIFI_STR_MAX_SIZE]; + UINTN PortStringSize; + WIFI_MGR_NETWORK_PROFILE *ConnectedProfile; if (Private->CurrentNic == NULL) { return EFI_SUCCESS; @@ -400,7 +405,7 @@ WifiMgrRefreshNetworkList ( return Status; } - OldTpl = gBS->RaiseTPL (TPL_CALLBACK); + OldTpl = gBS->RaiseTPL (TPL_CALLBACK); AvailableCount = 0; PortStringSize = sizeof (PortString); ConnectedProfile = NULL; @@ -408,23 +413,23 @@ WifiMgrRefreshNetworkList ( CipherListDisplay = NULL; if (Private->CurrentNic->ConnectState == WifiMgrConnectedToAp) { - // // Display the current connected network. // Find the current operate network under connected status. // - if (Private->CurrentNic->CurrentOperateNetwork != NULL && - Private->CurrentNic->CurrentOperateNetwork->IsAvailable) { - + if ((Private->CurrentNic->CurrentOperateNetwork != NULL) && + Private->CurrentNic->CurrentOperateNetwork->IsAvailable) + { Profile = Private->CurrentNic->CurrentOperateNetwork; - AvailableCount ++; + AvailableCount++; AKMListDisplay = WifiMgrGetStrAKMList (Profile); if (AKMListDisplay == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; } - CipherListDisplay = WifiMgrGetStrCipherList(Profile); + + CipherListDisplay = WifiMgrGetStrCipherList (Profile); if (CipherListDisplay == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; @@ -439,6 +444,7 @@ WifiMgrRefreshNetworkList ( UnicodeSPrint (PortString, PortStringSize, L"AKMSuite: %s CipherSuite: %s", AKMListDisplay, CipherListDisplay); PortHelpToken = HiiSetString (Private->RegisteredHandle, 0, PortString, NULL); } + FreePool (AKMListDisplay); FreePool (CipherListDisplay); AKMListDisplay = NULL; @@ -450,7 +456,7 @@ WifiMgrRefreshNetworkList ( PortPromptToken, PortHelpToken, EFI_IFR_FLAG_CALLBACK, - (UINT16) (KEY_AVAILABLE_NETWORK_ENTRY_BASE + Profile->ProfileIndex) + (UINT16)(KEY_AVAILABLE_NETWORK_ENTRY_BASE + Profile->ProfileIndex) ); UnicodeSPrint ( @@ -459,7 +465,7 @@ WifiMgrRefreshNetworkList ( L"%s %s %s", (Profile->SecurityType != SECURITY_TYPE_NONE ? L"Secured" : L"Open "), mSecurityType[Profile->SecurityType], - RSSI_TO_SIGNAL_STRENGTH_BAR(Profile->NetworkQuality) + RSSI_TO_SIGNAL_STRENGTH_BAR (Profile->NetworkQuality) ); PortTextToken = HiiSetString (Private->RegisteredHandle, 0, PortString, NULL); @@ -468,7 +474,7 @@ WifiMgrRefreshNetworkList ( PortTextToken, 0, 0 - ); + ); ConnectedProfile = Profile; } else { @@ -480,7 +486,6 @@ WifiMgrRefreshNetworkList ( // Display all supported available networks. // NET_LIST_FOR_EACH (Entry, &Private->CurrentNic->ProfileList) { - Profile = NET_LIST_USER_STRUCT_S ( Entry, WIFI_MGR_NETWORK_PROFILE, @@ -490,16 +495,17 @@ WifiMgrRefreshNetworkList ( if (ConnectedProfile == Profile) { continue; } - if (Profile->IsAvailable && Profile->CipherSuiteSupported) { - AvailableCount ++; + if (Profile->IsAvailable && Profile->CipherSuiteSupported) { + AvailableCount++; AKMListDisplay = WifiMgrGetStrAKMList (Profile); if (AKMListDisplay == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; } - CipherListDisplay = WifiMgrGetStrCipherList(Profile); + + CipherListDisplay = WifiMgrGetStrCipherList (Profile); if (CipherListDisplay == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; @@ -518,7 +524,8 @@ WifiMgrRefreshNetworkList ( PortString, PortStringSize, L"AKMSuite: %s CipherSuite: %s", - AKMListDisplay, CipherListDisplay + AKMListDisplay, + CipherListDisplay ); PortHelpToken = HiiSetString (Private->RegisteredHandle, 0, PortString, NULL); if (PortHelpToken == 0) { @@ -526,6 +533,7 @@ WifiMgrRefreshNetworkList ( goto Exit; } } + FreePool (AKMListDisplay); FreePool (CipherListDisplay); AKMListDisplay = NULL; @@ -537,7 +545,7 @@ WifiMgrRefreshNetworkList ( PortPromptToken, PortHelpToken, EFI_IFR_FLAG_CALLBACK, - (UINT16) (KEY_AVAILABLE_NETWORK_ENTRY_BASE + Profile->ProfileIndex) + (UINT16)(KEY_AVAILABLE_NETWORK_ENTRY_BASE + Profile->ProfileIndex) ); UnicodeSPrint ( @@ -546,13 +554,14 @@ WifiMgrRefreshNetworkList ( L"%s %s %s", (Profile->SecurityType != SECURITY_TYPE_NONE ? L"Secured" : L"Open "), mSecurityType[Profile->SecurityType], - RSSI_TO_SIGNAL_STRENGTH_BAR(Profile->NetworkQuality) + RSSI_TO_SIGNAL_STRENGTH_BAR (Profile->NetworkQuality) ); PortTextToken = HiiSetString (Private->RegisteredHandle, 0, PortString, NULL); if (PortTextToken == 0) { Status = EFI_OUT_OF_RESOURCES; goto Exit; } + HiiCreateTextOpCode ( StartOpCodeHandle, PortTextToken, @@ -566,7 +575,6 @@ WifiMgrRefreshNetworkList ( // Display all Unsupported available networks. // NET_LIST_FOR_EACH (Entry, &Private->CurrentNic->ProfileList) { - Profile = NET_LIST_USER_STRUCT_S ( Entry, WIFI_MGR_NETWORK_PROFILE, @@ -576,16 +584,17 @@ WifiMgrRefreshNetworkList ( if (ConnectedProfile == Profile) { continue; } - if (Profile->IsAvailable && !Profile->CipherSuiteSupported) { - AvailableCount ++; + if (Profile->IsAvailable && !Profile->CipherSuiteSupported) { + AvailableCount++; AKMListDisplay = WifiMgrGetStrAKMList (Profile); if (AKMListDisplay == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; } - CipherListDisplay = WifiMgrGetStrCipherList(Profile); + + CipherListDisplay = WifiMgrGetStrCipherList (Profile); if (CipherListDisplay == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Exit; @@ -598,16 +607,19 @@ WifiMgrRefreshNetworkList ( PortString, PortStringSize, L"AKMSuite: %s CipherSuite(UnSupported): %s", - AKMListDisplay, CipherListDisplay + AKMListDisplay, + CipherListDisplay ); } else { UnicodeSPrint ( PortString, PortStringSize, L"AKMSuite(UnSupported): %s CipherSuite(UnSupported): %s", - AKMListDisplay, CipherListDisplay + AKMListDisplay, + CipherListDisplay ); } + FreePool (AKMListDisplay); FreePool (CipherListDisplay); AKMListDisplay = NULL; @@ -621,7 +633,7 @@ WifiMgrRefreshNetworkList ( PortPromptToken, PortHelpToken, EFI_IFR_FLAG_CALLBACK, - (UINT16) (KEY_AVAILABLE_NETWORK_ENTRY_BASE + Profile->ProfileIndex) + (UINT16)(KEY_AVAILABLE_NETWORK_ENTRY_BASE + Profile->ProfileIndex) ); UnicodeSPrint ( @@ -630,7 +642,7 @@ WifiMgrRefreshNetworkList ( L"%s %s %s", L"UnSupported", mSecurityType[Profile->SecurityType], - RSSI_TO_SIGNAL_STRENGTH_BAR(Profile->NetworkQuality) + RSSI_TO_SIGNAL_STRENGTH_BAR (Profile->NetworkQuality) ); PortTextToken = HiiSetString (Private->RegisteredHandle, 0, PortString, NULL); @@ -658,6 +670,7 @@ Exit: if (AKMListDisplay != NULL) { FreePool (AKMListDisplay); } + if (CipherListDisplay != NULL) { FreePool (CipherListDisplay); } @@ -680,17 +693,17 @@ Exit: **/ EFI_STATUS WifiMgrRefreshHiddenList ( - IN WIFI_MGR_PRIVATE_DATA *Private + IN WIFI_MGR_PRIVATE_DATA *Private ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - UINTN Index; - EFI_STRING_ID StringId; - VOID *StartOpCodeHandle; - VOID *EndOpCodeHandle; - WIFI_HIDDEN_NETWORK_DATA *HiddenNetwork; - LIST_ENTRY *Entry; + EFI_STATUS Status; + EFI_TPL OldTpl; + UINTN Index; + EFI_STRING_ID StringId; + VOID *StartOpCodeHandle; + VOID *EndOpCodeHandle; + WIFI_HIDDEN_NETWORK_DATA *HiddenNetwork; + LIST_ENTRY *Entry; if (Private == NULL) { return EFI_SUCCESS; @@ -709,7 +722,6 @@ WifiMgrRefreshHiddenList ( Index = 0; NET_LIST_FOR_EACH (Entry, &Private->HiddenNetworkList) { - HiddenNetwork = NET_LIST_USER_STRUCT_S ( Entry, WIFI_HIDDEN_NETWORK_DATA, @@ -720,16 +732,16 @@ WifiMgrRefreshHiddenList ( HiiCreateCheckBoxOpCode ( StartOpCodeHandle, - (EFI_QUESTION_ID) (KEY_HIDDEN_NETWORK_ENTRY_BASE + Index), + (EFI_QUESTION_ID)(KEY_HIDDEN_NETWORK_ENTRY_BASE + Index), MANAGER_VARSTORE_ID, - (UINT16) (HIDDEN_NETWORK_LIST_VAR_OFFSET + Index), + (UINT16)(HIDDEN_NETWORK_LIST_VAR_OFFSET + Index), StringId, 0, 0, 0, NULL ); - Index ++; + Index++; } Status = HiiUpdateForm ( @@ -746,7 +758,6 @@ WifiMgrRefreshHiddenList ( return Status; } - /** Callback function for user to select a Nic. @@ -759,23 +770,24 @@ WifiMgrRefreshHiddenList ( **/ EFI_STATUS WifiMgrSelectNic ( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN EFI_QUESTION_ID KeyValue + IN WIFI_MGR_PRIVATE_DATA *Private, + IN EFI_QUESTION_ID KeyValue ) { - WIFI_MGR_DEVICE_DATA *Nic; - UINT32 NicIndex; - CHAR16 MacString[WIFI_MGR_MAX_MAC_STRING_LEN]; + WIFI_MGR_DEVICE_DATA *Nic; + UINT32 NicIndex; + CHAR16 MacString[WIFI_MGR_MAX_MAC_STRING_LEN]; NicIndex = KeyValue - KEY_MAC_ENTRY_BASE; Nic = WifiMgrGetNicByIndex (Private, NicIndex); if (Nic == NULL) { return EFI_NOT_FOUND; } + Private->CurrentNic = Nic; WifiMgrMacAddrToStr (&Nic->MacAddress, sizeof (MacString), MacString); - HiiSetString (Private->RegisteredHandle, STRING_TOKEN(STR_MAC_ADDRESS), MacString, NULL); + HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_MAC_ADDRESS), MacString, NULL); return EFI_SUCCESS; } @@ -788,7 +800,7 @@ WifiMgrSelectNic ( **/ VOID WifiMgrCleanUserInput ( - IN WIFI_MGR_PRIVATE_DATA *Private + IN WIFI_MGR_PRIVATE_DATA *Private ) { Private->SecurityType = SECURITY_TYPE_NONE; @@ -809,13 +821,13 @@ WifiMgrCleanUserInput ( **/ EFI_STATUS -WifiMgrUserSelectProfileToConnect( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN UINT32 ProfileIndex +WifiMgrUserSelectProfileToConnect ( + IN WIFI_MGR_PRIVATE_DATA *Private, + IN UINT32 ProfileIndex ) { - WIFI_MGR_NETWORK_PROFILE *Profile; - WIFI_MGR_DEVICE_DATA *Nic; + WIFI_MGR_NETWORK_PROFILE *Profile; + WIFI_MGR_DEVICE_DATA *Nic; Nic = Private->CurrentNic; if (Nic == NULL) { @@ -823,14 +835,15 @@ WifiMgrUserSelectProfileToConnect( } // - //Initialize the connection page + // Initialize the connection page // - WifiMgrCleanUserInput(Private); + WifiMgrCleanUserInput (Private); Profile = WifiMgrGetProfileByProfileIndex (ProfileIndex, &Nic->ProfileList); if (Profile == NULL) { return EFI_NOT_FOUND; } + Private->CurrentNic->UserSelectedProfile = Profile; return EFI_SUCCESS; @@ -851,15 +864,15 @@ WifiMgrUserSelectProfileToConnect( **/ EFI_STATUS WifiMgrRecordPassword ( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN EFI_STRING_ID StringId, - IN CHAR16 *StringBuffer, - IN UINTN StringBufferLen + IN WIFI_MGR_PRIVATE_DATA *Private, + IN EFI_STRING_ID StringId, + IN CHAR16 *StringBuffer, + IN UINTN StringBufferLen ) { - CHAR16 *Password; + CHAR16 *Password; - if (StringId == 0 || StringBuffer == NULL || StringBufferLen <= 0) { + if ((StringId == 0) || (StringBuffer == NULL) || (StringBufferLen <= 0)) { return EFI_INVALID_PARAMETER; } @@ -867,10 +880,12 @@ WifiMgrRecordPassword ( if (Password == NULL) { return EFI_NOT_FOUND; } + if (StrLen (Password) > StringBufferLen) { FreePool (Password); return EFI_NOT_FOUND; } + StrnCpyS (StringBuffer, StringBufferLen, Password, StrLen (Password)); ZeroMem (Password, (StrLen (Password) + 1) * sizeof (CHAR16)); FreePool (Password); @@ -896,16 +911,16 @@ WifiMgrRecordPassword ( **/ VOID WifiMgrUpdateConnectMessage ( - IN WIFI_MGR_DEVICE_DATA *Nic, - IN BOOLEAN ConnectStateChanged, - IN EFI_STRING ConnectStatusMessage + IN WIFI_MGR_DEVICE_DATA *Nic, + IN BOOLEAN ConnectStateChanged, + IN EFI_STRING ConnectStatusMessage ) { - CHAR16 ConnectStatusStr[WIFI_STR_MAX_SIZE]; - WIFI_MGR_PRIVATE_DATA *Private; + CHAR16 ConnectStatusStr[WIFI_STR_MAX_SIZE]; + WIFI_MGR_PRIVATE_DATA *Private; Private = Nic->Private; - if (Private == NULL || Private->CurrentNic != Nic) { + if ((Private == NULL) || (Private->CurrentNic != Nic)) { return; } @@ -916,22 +931,30 @@ WifiMgrUpdateConnectMessage ( HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_CONNECT_STATUS), ConnectStatusMessage, NULL); } else { if (Nic->ConnectState == WifiMgrConnectedToAp) { - - UnicodeSPrint (ConnectStatusStr, sizeof (ConnectStatusStr), L"Connected to %s", - Nic->CurrentOperateNetwork->SSId); + UnicodeSPrint ( + ConnectStatusStr, + sizeof (ConnectStatusStr), + L"Connected to %s", + Nic->CurrentOperateNetwork->SSId + ); HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_CONNECT_STATUS), ConnectStatusStr, NULL); } else if (Nic->ConnectState == WifiMgrDisconnected) { - HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_CONNECT_STATUS), L"Disconnected", NULL); } else if (Nic->ConnectState == WifiMgrConnectingToAp) { - - UnicodeSPrint (ConnectStatusStr, sizeof (ConnectStatusStr), L"Connecting to %s ...", - Nic->CurrentOperateNetwork->SSId); + UnicodeSPrint ( + ConnectStatusStr, + sizeof (ConnectStatusStr), + L"Connecting to %s ...", + Nic->CurrentOperateNetwork->SSId + ); HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_CONNECT_STATUS), ConnectStatusStr, NULL); } else if (Nic->ConnectState == WifiMgrDisconnectingToAp) { - - UnicodeSPrint (ConnectStatusStr, sizeof (ConnectStatusStr), L"Disconnecting from %s ...", - Nic->CurrentOperateNetwork->SSId); + UnicodeSPrint ( + ConnectStatusStr, + sizeof (ConnectStatusStr), + L"Disconnecting from %s ...", + Nic->CurrentOperateNetwork->SSId + ); HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_CONNECT_STATUS), ConnectStatusStr, NULL); } else { return; @@ -941,25 +964,31 @@ WifiMgrUpdateConnectMessage ( // // Update Connect Button // - if (Nic->ConnectState == WifiMgrConnectedToAp && Nic->UserSelectedProfile == Nic->CurrentOperateNetwork) { - - HiiSetString (Private->RegisteredHandle, - STRING_TOKEN (STR_CONNECT_NOW), L"Disconnect from this Network", NULL); + if ((Nic->ConnectState == WifiMgrConnectedToAp) && (Nic->UserSelectedProfile == Nic->CurrentOperateNetwork)) { + HiiSetString ( + Private->RegisteredHandle, + STRING_TOKEN (STR_CONNECT_NOW), + L"Disconnect from this Network", + NULL + ); } else { HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_CONNECT_NOW), L"Connect to this Network", NULL); } + gBS->SignalEvent (Private->ConnectFormRefreshEvent); // // Update Main Page and Network List // if (ConnectStateChanged) { - if (Nic->ConnectState == WifiMgrConnectedToAp) { - HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_CONNECTION_INFO), L"Connected to", NULL); - HiiSetString (Private->RegisteredHandle, - STRING_TOKEN (STR_CONNECTED_SSID), Nic->CurrentOperateNetwork->SSId, NULL); + HiiSetString ( + Private->RegisteredHandle, + STRING_TOKEN (STR_CONNECTED_SSID), + Nic->CurrentOperateNetwork->SSId, + NULL + ); } else { HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_CONNECTION_INFO), L"Disconnected", NULL); HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_CONNECTED_SSID), L"", NULL); @@ -981,8 +1010,8 @@ WifiMgrUpdateConnectMessage ( **/ EFI_STATUS WifiMgrConvertConfigDataToIfrNvData ( - IN WIFI_MGR_PRIVATE_DATA *Private, - OUT WIFI_MANAGER_IFR_NVDATA *IfrNvData + IN WIFI_MGR_PRIVATE_DATA *Private, + OUT WIFI_MANAGER_IFR_NVDATA *IfrNvData ) { // @@ -1010,8 +1039,8 @@ WifiMgrConvertConfigDataToIfrNvData ( **/ EFI_STATUS WifiMgrConvertIfrNvDataToConfigData ( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN OUT WIFI_MANAGER_IFR_NVDATA *IfrNvData + IN WIFI_MGR_PRIVATE_DATA *Private, + IN OUT WIFI_MANAGER_IFR_NVDATA *IfrNvData ) { return EFI_SUCCESS; @@ -1096,22 +1125,23 @@ WifiMgrDxeHiiConfigAccessExtractConfig ( OUT EFI_STRING *Results ) { - WIFI_MGR_PRIVATE_DATA *Private; - WIFI_MANAGER_IFR_NVDATA *IfrNvData; - EFI_STRING ConfigRequestHdr; - EFI_STRING ConfigRequest; - UINTN Size; - BOOLEAN AllocatedRequest; - UINTN BufferSize; - EFI_STATUS Status; - - if (This == NULL || Progress == NULL || Results == NULL) { + WIFI_MGR_PRIVATE_DATA *Private; + WIFI_MANAGER_IFR_NVDATA *IfrNvData; + EFI_STRING ConfigRequestHdr; + EFI_STRING ConfigRequest; + UINTN Size; + BOOLEAN AllocatedRequest; + UINTN BufferSize; + EFI_STATUS Status; + + if ((This == NULL) || (Progress == NULL) || (Results == NULL)) { return EFI_INVALID_PARAMETER; } *Progress = Request; if ((Request != NULL) && - !HiiIsConfigHdrMatch (Request, &gWifiConfigFormSetGuid, mVendorStorageName)) { + !HiiIsConfigHdrMatch (Request, &gWifiConfigFormSetGuid, mVendorStorageName)) + { return EFI_NOT_FOUND; } @@ -1120,10 +1150,10 @@ WifiMgrDxeHiiConfigAccessExtractConfig ( AllocatedRequest = FALSE; Size = 0; - Private = WIFI_MGR_PRIVATE_DATA_FROM_CONFIG_ACCESS (This); + Private = WIFI_MGR_PRIVATE_DATA_FROM_CONFIG_ACCESS (This); BufferSize = sizeof (WIFI_MANAGER_IFR_NVDATA); - IfrNvData = AllocateZeroPool (BufferSize); + IfrNvData = AllocateZeroPool (BufferSize); if (IfrNvData == NULL) { return EFI_OUT_OF_RESOURCES; } @@ -1140,16 +1170,16 @@ WifiMgrDxeHiiConfigAccessExtractConfig ( ConfigRequestHdr = HiiConstructConfigHdr ( &gWifiConfigFormSetGuid, mVendorStorageName, - Private->DriverHandle); + Private->DriverHandle + ); if (ConfigRequestHdr == NULL) { FreePool (IfrNvData); return EFI_OUT_OF_RESOURCES; } - Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); + Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16); ConfigRequest = AllocateZeroPool (Size); if (ConfigRequest == NULL) { - FreePool (IfrNvData); FreePool (ConfigRequestHdr); return EFI_OUT_OF_RESOURCES; @@ -1161,7 +1191,7 @@ WifiMgrDxeHiiConfigAccessExtractConfig ( Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, - (UINT64) BufferSize + (UINT64)BufferSize ); FreePool (ConfigRequestHdr); } @@ -1172,7 +1202,7 @@ WifiMgrDxeHiiConfigAccessExtractConfig ( Status = gHiiConfigRouting->BlockToConfig ( gHiiConfigRouting, ConfigRequest, - (UINT8 *) IfrNvData, + (UINT8 *)IfrNvData, BufferSize, Results, Progress @@ -1186,6 +1216,7 @@ WifiMgrDxeHiiConfigAccessExtractConfig ( FreePool (ConfigRequest); ConfigRequest = NULL; } + // // Set Progress string to the original request string. // @@ -1245,12 +1276,12 @@ WifiMgrDxeHiiConfigAccessRouteConfig ( OUT EFI_STRING *Progress ) { - EFI_STATUS Status; - UINTN BufferSize; - WIFI_MGR_PRIVATE_DATA *Private; - WIFI_MANAGER_IFR_NVDATA *IfrNvData; + EFI_STATUS Status; + UINTN BufferSize; + WIFI_MGR_PRIVATE_DATA *Private; + WIFI_MANAGER_IFR_NVDATA *IfrNvData; - if (Configuration == NULL || Progress == NULL) { + if ((Configuration == NULL) || (Progress == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1273,7 +1304,7 @@ WifiMgrDxeHiiConfigAccessRouteConfig ( Status = gHiiConfigRouting->ConfigToBlock ( gHiiConfigRouting, Configuration, - (UINT8*) IfrNvData, + (UINT8 *)IfrNvData, &BufferSize, Progress ); @@ -1316,39 +1347,40 @@ WifiMgrDxeHiiConfigAccessRouteConfig ( EFI_STATUS EFIAPI WifiMgrDxeHiiConfigAccessCallback ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN EFI_BROWSER_ACTION Action, - IN EFI_QUESTION_ID QuestionId, - IN UINT8 Type, - IN OUT EFI_IFR_TYPE_VALUE *Value, - OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN OUT EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest ) { - EFI_STATUS Status; - EFI_INPUT_KEY Key; - UINTN BufferSize; - WIFI_MGR_PRIVATE_DATA *Private; - WIFI_MANAGER_IFR_NVDATA *IfrNvData; - EFI_DEVICE_PATH_PROTOCOL *FilePath; - WIFI_MGR_NETWORK_PROFILE *Profile; - WIFI_MGR_NETWORK_PROFILE *ProfileToConnect; - WIFI_HIDDEN_NETWORK_DATA *HiddenNetwork; - UINTN TempDataSize; - VOID *TempData; - LIST_ENTRY *Entry; - UINT32 Index; - UINT32 RemoveCount; - CHAR16 *TempPassword; - CHAR16 *ErrorMessage; - - if (Action != EFI_BROWSER_ACTION_FORM_OPEN && - Action != EFI_BROWSER_ACTION_FORM_CLOSE && - Action != EFI_BROWSER_ACTION_CHANGING && - Action != EFI_BROWSER_ACTION_CHANGED && - Action != EFI_BROWSER_ACTION_RETRIEVE) { - + EFI_STATUS Status; + EFI_INPUT_KEY Key; + UINTN BufferSize; + WIFI_MGR_PRIVATE_DATA *Private; + WIFI_MANAGER_IFR_NVDATA *IfrNvData; + EFI_DEVICE_PATH_PROTOCOL *FilePath; + WIFI_MGR_NETWORK_PROFILE *Profile; + WIFI_MGR_NETWORK_PROFILE *ProfileToConnect; + WIFI_HIDDEN_NETWORK_DATA *HiddenNetwork; + UINTN TempDataSize; + VOID *TempData; + LIST_ENTRY *Entry; + UINT32 Index; + UINT32 RemoveCount; + CHAR16 *TempPassword; + CHAR16 *ErrorMessage; + + if ((Action != EFI_BROWSER_ACTION_FORM_OPEN) && + (Action != EFI_BROWSER_ACTION_FORM_CLOSE) && + (Action != EFI_BROWSER_ACTION_CHANGING) && + (Action != EFI_BROWSER_ACTION_CHANGED) && + (Action != EFI_BROWSER_ACTION_RETRIEVE)) + { return EFI_UNSUPPORTED; } + if ((Value == NULL) || (ActionRequest == NULL)) { return EFI_INVALID_PARAMETER; } @@ -1363,525 +1395,531 @@ WifiMgrDxeHiiConfigAccessCallback ( // Retrieve uncommitted data from Browser // BufferSize = sizeof (WIFI_MANAGER_IFR_NVDATA); - IfrNvData = AllocateZeroPool (BufferSize); + IfrNvData = AllocateZeroPool (BufferSize); if (IfrNvData == NULL) { return EFI_OUT_OF_RESOURCES; } - HiiGetBrowserData (&gWifiConfigFormSetGuid, mVendorStorageName, BufferSize, (UINT8 *) IfrNvData); + + HiiGetBrowserData (&gWifiConfigFormSetGuid, mVendorStorageName, BufferSize, (UINT8 *)IfrNvData); if (Action == EFI_BROWSER_ACTION_FORM_OPEN) { switch (QuestionId) { + case KEY_MAC_LIST: - case KEY_MAC_LIST: + Status = WifiMgrShowNicList (Private); + break; - Status = WifiMgrShowNicList (Private); - break; + case KEY_REFRESH_NETWORK_LIST: - case KEY_REFRESH_NETWORK_LIST: + if (Private->CurrentNic->UserSelectedProfile != NULL) { + Profile = Private->CurrentNic->UserSelectedProfile; - if (Private->CurrentNic->UserSelectedProfile != NULL) { + // + // Erase secrets since user has left Connection Page + // Connection Page may direct to Network List Page or Eap Configuration Page, + // secrets only need to be erased when head to Network List Page + // + WifiMgrCleanProfileSecrets (Profile); + + Private->CurrentNic->UserSelectedProfile = NULL; + } + + break; + + case KEY_CONNECT_ACTION: + + if (Private->CurrentNic->UserSelectedProfile == NULL) { + break; + } Profile = Private->CurrentNic->UserSelectedProfile; // - // Erase secrets since user has left Connection Page - // Connection Page may direct to Network List Page or Eap Configuration Page, - // secrets only need to be erased when head to Network List Page + // Enter the network connection configuration page + // Recovery from restored data // - WifiMgrCleanProfileSecrets (Profile); - - Private->CurrentNic->UserSelectedProfile = NULL; - } + if (HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_SSID), Profile->SSId, NULL) == 0) { + return EFI_OUT_OF_RESOURCES; + } - break; + IfrNvData->SecurityType = Profile->SecurityType; + if (HiiSetString ( + Private->RegisteredHandle, + STRING_TOKEN (STR_SECURITY_TYPE), + mSecurityType[IfrNvData->SecurityType], + NULL + ) == 0) + { + return EFI_OUT_OF_RESOURCES; + } - case KEY_CONNECT_ACTION: + if (IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) { + IfrNvData->EapAuthMethod = Profile->EapAuthMethod; + IfrNvData->EapSecondAuthMethod = Profile->EapSecondAuthMethod; + StrCpyS (IfrNvData->EapIdentity, EAP_IDENTITY_SIZE, Profile->EapIdentity); + } - if (Private->CurrentNic->UserSelectedProfile == NULL) { break; - } - Profile = Private->CurrentNic->UserSelectedProfile; - - // - //Enter the network connection configuration page - //Recovery from restored data - // - if (HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_SSID), Profile->SSId, NULL) == 0) { - return EFI_OUT_OF_RESOURCES; - } - IfrNvData->SecurityType = Profile->SecurityType; - if (HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_SECURITY_TYPE), - mSecurityType[IfrNvData->SecurityType], NULL) == 0) { - return EFI_OUT_OF_RESOURCES; - } - if (IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) { + case KEY_ENROLLED_CERT_NAME: - IfrNvData->EapAuthMethod = Profile->EapAuthMethod; - IfrNvData->EapSecondAuthMethod = Profile->EapSecondAuthMethod; - StrCpyS (IfrNvData->EapIdentity, EAP_IDENTITY_SIZE, Profile->EapIdentity); - } + if (Private->CurrentNic->UserSelectedProfile == NULL) { + break; + } - break; + Profile = Private->CurrentNic->UserSelectedProfile; - case KEY_ENROLLED_CERT_NAME: + // + // Enter the key enrollment page + // For TTLS and PEAP, only CA cert needs to be cared + // + if (Private->FileType == FileTypeCACert) { + if (Profile->CACertData != NULL) { + HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), Profile->CACertName, NULL); + } else { + HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), L"", NULL); + } + } else if (Private->FileType == FileTypeClientCert) { + if (Profile->ClientCertData != NULL) { + HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), Profile->ClientCertName, NULL); + } else { + HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), L"", NULL); + } + } - if (Private->CurrentNic->UserSelectedProfile == NULL) { break; - } - Profile = Private->CurrentNic->UserSelectedProfile; - // - //Enter the key enrollment page - //For TTLS and PEAP, only CA cert needs to be cared - // - if (Private->FileType == FileTypeCACert) { + case KEY_ENROLLED_PRIVATE_KEY_NAME: - if (Profile->CACertData != NULL) { - HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), Profile->CACertName, NULL); - } else { - HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), L"", NULL); + if (Private->CurrentNic->UserSelectedProfile == NULL) { + break; } - } else if (Private->FileType == FileTypeClientCert) { - if (Profile->ClientCertData != NULL) { - HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), Profile->ClientCertName, NULL); + Profile = Private->CurrentNic->UserSelectedProfile; + + if (Profile->PrivateKeyData != NULL) { + HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_PRIVATE_KEY_NAME), Profile->PrivateKeyName, NULL); } else { - HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_CERT_NAME), L"", NULL); + HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_PRIVATE_KEY_NAME), L"", NULL); } - } - break; - case KEY_ENROLLED_PRIVATE_KEY_NAME: - - if (Private->CurrentNic->UserSelectedProfile == NULL) { break; - } - Profile = Private->CurrentNic->UserSelectedProfile; - if (Profile->PrivateKeyData != NULL) { - HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_PRIVATE_KEY_NAME), Profile->PrivateKeyName, NULL); - } else { - HiiSetString (Private->RegisteredHandle, STRING_TOKEN (STR_EAP_ENROLLED_PRIVATE_KEY_NAME), L"", NULL); - } - break; - - default: - break; + default: + break; } } else if (Action == EFI_BROWSER_ACTION_FORM_CLOSE) { switch (QuestionId) { + case KEY_CONNECT_ACTION: - case KEY_CONNECT_ACTION: + if (Private->CurrentNic->UserSelectedProfile == NULL) { + break; + } - if (Private->CurrentNic->UserSelectedProfile == NULL) { - break; - } - Profile = Private->CurrentNic->UserSelectedProfile; + Profile = Private->CurrentNic->UserSelectedProfile; - // - //Restore User Config Data for Page recovery - // - if (IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) { + // + // Restore User Config Data for Page recovery + // + if (IfrNvData->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) { + Profile->EapAuthMethod = IfrNvData->EapAuthMethod; + Profile->EapSecondAuthMethod = IfrNvData->EapSecondAuthMethod; + StrCpyS (Profile->EapIdentity, EAP_IDENTITY_SIZE, IfrNvData->EapIdentity); + } - Profile->EapAuthMethod = IfrNvData->EapAuthMethod; - Profile->EapSecondAuthMethod = IfrNvData->EapSecondAuthMethod; - StrCpyS (Profile->EapIdentity, EAP_IDENTITY_SIZE, IfrNvData->EapIdentity); - } - break; + break; - default: - break; + default: + break; } } else if (Action == EFI_BROWSER_ACTION_CHANGING) { switch (QuestionId) { + case KEY_NETWORK_LIST: - case KEY_NETWORK_LIST: - - // - //User triggered a scan process. - // - Private->CurrentNic->OneTimeScanRequest = TRUE; - break; - - case KEY_PASSWORD_CONNECT_NETWORK: - case KEY_EAP_PASSWORD_CONNECT_NETWORK: - case KEY_PRIVATE_KEY_PASSWORD: - - if (Private->CurrentNic->UserSelectedProfile == NULL) { - break; - } - Profile = Private->CurrentNic->UserSelectedProfile; - - if (QuestionId == KEY_PASSWORD_CONNECT_NETWORK) { - TempPassword = Profile->Password; - } else if (QuestionId == KEY_EAP_PASSWORD_CONNECT_NETWORK) { - TempPassword = Profile->EapPassword; - } else { - TempPassword = Profile->PrivateKeyPassword; - } - - Status = WifiMgrRecordPassword (Private, Value->string, TempPassword, PASSWORD_STORAGE_SIZE); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "[WiFi Connection Manager] Error: Failed to input password!")); + // + // User triggered a scan process. + // + Private->CurrentNic->OneTimeScanRequest = TRUE; break; - } - // - // This password is not a new created password, so no need to confirm. - // - Status = EFI_NOT_FOUND; - break; + case KEY_PASSWORD_CONNECT_NETWORK: + case KEY_EAP_PASSWORD_CONNECT_NETWORK: + case KEY_PRIVATE_KEY_PASSWORD: - case KEY_CONNECT_ACTION: + if (Private->CurrentNic->UserSelectedProfile == NULL) { + break; + } - ErrorMessage = NULL; - ProfileToConnect = NULL; + Profile = Private->CurrentNic->UserSelectedProfile; - if (Private->CurrentNic->UserSelectedProfile == NULL) { - break; - } - Profile = Private->CurrentNic->UserSelectedProfile; + if (QuestionId == KEY_PASSWORD_CONNECT_NETWORK) { + TempPassword = Profile->Password; + } else if (QuestionId == KEY_EAP_PASSWORD_CONNECT_NETWORK) { + TempPassword = Profile->EapPassword; + } else { + TempPassword = Profile->PrivateKeyPassword; + } - if (Private->CurrentNic->ConnectState == WifiMgrDisconnected || - Profile != Private->CurrentNic->CurrentOperateNetwork) { + Status = WifiMgrRecordPassword (Private, Value->string, TempPassword, PASSWORD_STORAGE_SIZE); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "[WiFi Connection Manager] Error: Failed to input password!")); + break; + } // - // When this network is not currently connected, pend it to connect. + // This password is not a new created password, so no need to confirm. // - if (Profile->AKMSuiteSupported && Profile->CipherSuiteSupported) { - - if (Profile->SecurityType == SECURITY_TYPE_NONE || Profile->SecurityType == SECURITY_TYPE_WPA2_PERSONAL) { + Status = EFI_NOT_FOUND; + break; - // - // For Open network, connect directly. - // - ProfileToConnect = Profile; + case KEY_CONNECT_ACTION: - } else if (Profile->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) { + ErrorMessage = NULL; + ProfileToConnect = NULL; - // - // For WPA/WPA2-Enterprise network, conduct eap configuration first. - // Only EAP-TLS, TTLS and PEAP is supported now! - // - Profile->EapAuthMethod = IfrNvData->EapAuthMethod; - StrCpyS (Profile->EapIdentity, EAP_IDENTITY_SIZE, IfrNvData->EapIdentity); + if (Private->CurrentNic->UserSelectedProfile == NULL) { + break; + } - if (IfrNvData->EapAuthMethod == EAP_AUTH_METHOD_TTLS || IfrNvData->EapAuthMethod == EAP_AUTH_METHOD_PEAP) { + Profile = Private->CurrentNic->UserSelectedProfile; - Profile->EapSecondAuthMethod = IfrNvData->EapSecondAuthMethod; - ProfileToConnect = Profile; - } else if (IfrNvData->EapAuthMethod == EAP_AUTH_METHOD_TLS) { + if ((Private->CurrentNic->ConnectState == WifiMgrDisconnected) || + (Profile != Private->CurrentNic->CurrentOperateNetwork)) + { + // + // When this network is not currently connected, pend it to connect. + // + if (Profile->AKMSuiteSupported && Profile->CipherSuiteSupported) { + if ((Profile->SecurityType == SECURITY_TYPE_NONE) || (Profile->SecurityType == SECURITY_TYPE_WPA2_PERSONAL)) { + // + // For Open network, connect directly. + // ProfileToConnect = Profile; + } else if (Profile->SecurityType == SECURITY_TYPE_WPA2_ENTERPRISE) { + // + // For WPA/WPA2-Enterprise network, conduct eap configuration first. + // Only EAP-TLS, TTLS and PEAP is supported now! + // + Profile->EapAuthMethod = IfrNvData->EapAuthMethod; + StrCpyS (Profile->EapIdentity, EAP_IDENTITY_SIZE, IfrNvData->EapIdentity); + + if ((IfrNvData->EapAuthMethod == EAP_AUTH_METHOD_TTLS) || (IfrNvData->EapAuthMethod == EAP_AUTH_METHOD_PEAP)) { + Profile->EapSecondAuthMethod = IfrNvData->EapSecondAuthMethod; + ProfileToConnect = Profile; + } else if (IfrNvData->EapAuthMethod == EAP_AUTH_METHOD_TLS) { + ProfileToConnect = Profile; + } else { + ErrorMessage = L"ERROR: Only EAP-TLS, TTLS or PEAP is supported now!"; + } } else { - ErrorMessage = L"ERROR: Only EAP-TLS, TTLS or PEAP is supported now!"; + ErrorMessage = L"ERROR: Can't connect to this network!"; } } else { - ErrorMessage = L"ERROR: Can't connect to this network!"; + ErrorMessage = L"ERROR: This network is not supported!"; } - } else { - ErrorMessage = L"ERROR: This network is not supported!"; - } - - if (ErrorMessage != NULL) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - ErrorMessage, - NULL - ); - } - if (ProfileToConnect != NULL) { + if (ErrorMessage != NULL) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + ErrorMessage, + NULL + ); + } - Private->CurrentNic->OneTimeConnectRequest = TRUE; - Private->CurrentNic->ConnectPendingNetwork = ProfileToConnect; + if (ProfileToConnect != NULL) { + Private->CurrentNic->OneTimeConnectRequest = TRUE; + Private->CurrentNic->ConnectPendingNetwork = ProfileToConnect; + } + } else if (Private->CurrentNic->ConnectState == WifiMgrConnectedToAp) { + // + // This network is currently connected, just disconnect from it. + // + Private->CurrentNic->OneTimeDisconnectRequest = TRUE; + Private->CurrentNic->HasDisconnectPendingNetwork = TRUE; } - } else if (Private->CurrentNic->ConnectState == WifiMgrConnectedToAp) { - // - // This network is currently connected, just disconnect from it. - // - Private->CurrentNic->OneTimeDisconnectRequest = TRUE; - Private->CurrentNic->HasDisconnectPendingNetwork = TRUE; - } - break; - - case KEY_ENROLL_CA_CERT_CONNECT_NETWORK: - - Private->FileType = FileTypeCACert; - break; - - case KEY_ENROLL_CLIENT_CERT_CONNECT_NETWORK: - - Private->FileType = FileTypeClientCert; - break; - - case KEY_EAP_ENROLL_PRIVATE_KEY_FROM_FILE: + break; - FilePath = NULL; - ChooseFile (NULL, NULL, NULL, &FilePath); + case KEY_ENROLL_CA_CERT_CONNECT_NETWORK: - if (FilePath != NULL) { + Private->FileType = FileTypeCACert; + break; - UpdatePrivateKeyFromFile(Private, FilePath); - FreePool (FilePath); - } - break; + case KEY_ENROLL_CLIENT_CERT_CONNECT_NETWORK: - case KEY_EAP_ENROLL_CERT_FROM_FILE: + Private->FileType = FileTypeClientCert; + break; - // - //User will select a cert file from File Explore - // - FilePath = NULL; - ChooseFile( NULL, NULL, NULL, &FilePath); + case KEY_EAP_ENROLL_PRIVATE_KEY_FROM_FILE: - if (FilePath != NULL) { + FilePath = NULL; + ChooseFile (NULL, NULL, NULL, &FilePath); - UpdateCAFromFile(Private, FilePath); - FreePool (FilePath); - } - break; + if (FilePath != NULL) { + UpdatePrivateKeyFromFile (Private, FilePath); + FreePool (FilePath); + } - case KEY_SAVE_PRIVATE_KEY_TO_MEM: + break; - if (Private->FileContext != NULL && Private->FileContext->FHandle != NULL && - Private->CurrentNic->UserSelectedProfile != NULL) { + case KEY_EAP_ENROLL_CERT_FROM_FILE: // - // Read Private Key file to Buffer + // User will select a cert file from File Explore // - Profile = Private->CurrentNic->UserSelectedProfile; - if (Profile->PrivateKeyData != NULL) { + FilePath = NULL; + ChooseFile (NULL, NULL, NULL, &FilePath); - ZeroMem (Profile->PrivateKeyData, Profile->PrivateKeyDataSize); - FreePool (Profile->PrivateKeyData); - Profile->PrivateKeyData = NULL; + if (FilePath != NULL) { + UpdateCAFromFile (Private, FilePath); + FreePool (FilePath); } - Status = WifiMgrReadFileToBuffer ( - Private->FileContext, - &TempData, - &TempDataSize - ); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"ERROR: Can't read this private key file!", - NULL - ); - } else { - - ASSERT (Private->FileContext->FileName != NULL); - - Profile->PrivateKeyData = TempData; - Profile->PrivateKeyDataSize = TempDataSize; - StrCpyS(Profile->PrivateKeyName, WIFI_FILENAME_STR_MAX_SIZE, Private->FileContext->FileName); - - DEBUG ((DEBUG_INFO, "[WiFi Connection Manager] Private Key: %s has been enrolled! Size: %d\n", - Profile->PrivateKeyName, Profile->PrivateKeyDataSize)); - } - } - break; - - case KEY_SAVE_CERT_TO_MEM: - - if (Private->FileContext != NULL && Private->FileContext->FHandle != NULL && - Private->CurrentNic->UserSelectedProfile != NULL) { - - // - // Read Cert file to Buffer - // - Profile = Private->CurrentNic->UserSelectedProfile; - - if (Private->FileType == FileTypeCACert) { - if (Profile->CACertData != NULL) { + break; - ZeroMem (Profile->CACertData, Profile->CACertSize); - FreePool (Profile->CACertData); - Profile->CACertData = NULL; + case KEY_SAVE_PRIVATE_KEY_TO_MEM: + + if ((Private->FileContext != NULL) && (Private->FileContext->FHandle != NULL) && + (Private->CurrentNic->UserSelectedProfile != NULL)) + { + // + // Read Private Key file to Buffer + // + Profile = Private->CurrentNic->UserSelectedProfile; + if (Profile->PrivateKeyData != NULL) { + ZeroMem (Profile->PrivateKeyData, Profile->PrivateKeyDataSize); + FreePool (Profile->PrivateKeyData); + Profile->PrivateKeyData = NULL; } - } else if (Private->FileType == FileTypeClientCert) { - if (Profile->ClientCertData != NULL) { - ZeroMem (Profile->ClientCertData, Profile->ClientCertSize); - FreePool (Profile->ClientCertData); - Profile->ClientCertData = NULL; + Status = WifiMgrReadFileToBuffer ( + Private->FileContext, + &TempData, + &TempDataSize + ); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"ERROR: Can't read this private key file!", + NULL + ); + } else { + ASSERT (Private->FileContext->FileName != NULL); + + Profile->PrivateKeyData = TempData; + Profile->PrivateKeyDataSize = TempDataSize; + StrCpyS (Profile->PrivateKeyName, WIFI_FILENAME_STR_MAX_SIZE, Private->FileContext->FileName); + + DEBUG (( + DEBUG_INFO, + "[WiFi Connection Manager] Private Key: %s has been enrolled! Size: %d\n", + Profile->PrivateKeyName, + Profile->PrivateKeyDataSize + )); } - } else { - break; } - Status = WifiMgrReadFileToBuffer ( - Private->FileContext, - &TempData, - &TempDataSize - ); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"ERROR: Can't read this certificate file!", - NULL - ); - } else { + break; - ASSERT (Private->FileContext->FileName != NULL); - if (Private->FileType == FileTypeCACert) { + case KEY_SAVE_CERT_TO_MEM: + + if ((Private->FileContext != NULL) && (Private->FileContext->FHandle != NULL) && + (Private->CurrentNic->UserSelectedProfile != NULL)) + { + // + // Read Cert file to Buffer + // + Profile = Private->CurrentNic->UserSelectedProfile; - Profile->CACertData = TempData; - Profile->CACertSize = TempDataSize; - StrCpyS(Profile->CACertName, WIFI_FILENAME_STR_MAX_SIZE, Private->FileContext->FileName); - DEBUG ((DEBUG_INFO, "[WiFi Connection Manager] CA Cert: %s has been enrolled! Size: %d\n", - Profile->CACertName, Profile->CACertSize)); + if (Private->FileType == FileTypeCACert) { + if (Profile->CACertData != NULL) { + ZeroMem (Profile->CACertData, Profile->CACertSize); + FreePool (Profile->CACertData); + Profile->CACertData = NULL; + } + } else if (Private->FileType == FileTypeClientCert) { + if (Profile->ClientCertData != NULL) { + ZeroMem (Profile->ClientCertData, Profile->ClientCertSize); + FreePool (Profile->ClientCertData); + Profile->ClientCertData = NULL; + } } else { + break; + } - Profile->ClientCertData = TempData; - Profile->ClientCertSize = TempDataSize; - StrCpyS(Profile->ClientCertName, WIFI_FILENAME_STR_MAX_SIZE, Private->FileContext->FileName); - DEBUG ((DEBUG_INFO, "[WiFi Connection Manager] Client Cert: %s has been enrolled! Size: %d\n", - Profile->ClientCertName, Profile->ClientCertSize)); + Status = WifiMgrReadFileToBuffer ( + Private->FileContext, + &TempData, + &TempDataSize + ); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"ERROR: Can't read this certificate file!", + NULL + ); + } else { + ASSERT (Private->FileContext->FileName != NULL); + if (Private->FileType == FileTypeCACert) { + Profile->CACertData = TempData; + Profile->CACertSize = TempDataSize; + StrCpyS (Profile->CACertName, WIFI_FILENAME_STR_MAX_SIZE, Private->FileContext->FileName); + DEBUG (( + DEBUG_INFO, + "[WiFi Connection Manager] CA Cert: %s has been enrolled! Size: %d\n", + Profile->CACertName, + Profile->CACertSize + )); + } else { + Profile->ClientCertData = TempData; + Profile->ClientCertSize = TempDataSize; + StrCpyS (Profile->ClientCertName, WIFI_FILENAME_STR_MAX_SIZE, Private->FileContext->FileName); + DEBUG (( + DEBUG_INFO, + "[WiFi Connection Manager] Client Cert: %s has been enrolled! Size: %d\n", + Profile->ClientCertName, + Profile->ClientCertSize + )); + } } } - } - break; - case KEY_ADD_HIDDEN_NETWORK: - - // - // Add a Hidden Network - // - if (StrLen (IfrNvData->SSId) < SSID_MIN_LEN || - Private->HiddenNetworkCount >= HIDDEN_NETWORK_LIST_COUNT_MAX) { - - Status = EFI_ABORTED; break; - } else { + + case KEY_ADD_HIDDEN_NETWORK: // - // Check if this SSId is already in Hidden Network List + // Add a Hidden Network // - NET_LIST_FOR_EACH (Entry, &Private->HiddenNetworkList) { - - HiddenNetwork = NET_LIST_USER_STRUCT_S (Entry, WIFI_HIDDEN_NETWORK_DATA, - Link, WIFI_MGR_HIDDEN_NETWORK_SIGNATURE); - if (StrCmp (HiddenNetwork->SSId, IfrNvData->SSId) == 0) { - - Status = EFI_ABORTED; - break; + if ((StrLen (IfrNvData->SSId) < SSID_MIN_LEN) || + (Private->HiddenNetworkCount >= HIDDEN_NETWORK_LIST_COUNT_MAX)) + { + Status = EFI_ABORTED; + break; + } else { + // + // Check if this SSId is already in Hidden Network List + // + NET_LIST_FOR_EACH (Entry, &Private->HiddenNetworkList) { + HiddenNetwork = NET_LIST_USER_STRUCT_S ( + Entry, + WIFI_HIDDEN_NETWORK_DATA, + Link, + WIFI_MGR_HIDDEN_NETWORK_SIGNATURE + ); + if (StrCmp (HiddenNetwork->SSId, IfrNvData->SSId) == 0) { + Status = EFI_ABORTED; + break; + } } } - } - - HiddenNetwork = (WIFI_HIDDEN_NETWORK_DATA *) AllocateZeroPool (sizeof (WIFI_HIDDEN_NETWORK_DATA)); - if (HiddenNetwork == NULL) { - - Status = EFI_OUT_OF_RESOURCES; - break; - } - HiddenNetwork->Signature = WIFI_MGR_HIDDEN_NETWORK_SIGNATURE; - StrCpyS (HiddenNetwork->SSId, SSID_STORAGE_SIZE, IfrNvData->SSId); - - InsertTailList (&Private->HiddenNetworkList, &HiddenNetwork->Link); - Private->HiddenNetworkCount ++; - WifiMgrRefreshHiddenList (Private); - break; - - case KEY_REMOVE_HIDDEN_NETWORK: - - // - // Remove Hidden Networks - // - Entry = GetFirstNode (&Private->HiddenNetworkList); - RemoveCount = 0; - for (Index = 0; Index < Private->HiddenNetworkCount; Index ++) { - if (IfrNvData->HiddenNetworkList[Index] != 0) { + HiddenNetwork = (WIFI_HIDDEN_NETWORK_DATA *)AllocateZeroPool (sizeof (WIFI_HIDDEN_NETWORK_DATA)); + if (HiddenNetwork == NULL) { + Status = EFI_OUT_OF_RESOURCES; + break; + } - HiddenNetwork = NET_LIST_USER_STRUCT_S (Entry, WIFI_HIDDEN_NETWORK_DATA, Link, WIFI_MGR_HIDDEN_NETWORK_SIGNATURE); - Entry = RemoveEntryList (Entry); - RemoveCount ++; + HiddenNetwork->Signature = WIFI_MGR_HIDDEN_NETWORK_SIGNATURE; + StrCpyS (HiddenNetwork->SSId, SSID_STORAGE_SIZE, IfrNvData->SSId); - FreePool (HiddenNetwork); - } else { - Entry = GetNextNode (&Private->HiddenNetworkList, Entry); - } - } + InsertTailList (&Private->HiddenNetworkList, &HiddenNetwork->Link); + Private->HiddenNetworkCount++; - Private->HiddenNetworkCount -= RemoveCount; - WifiMgrRefreshHiddenList (Private); - break; + WifiMgrRefreshHiddenList (Private); + break; - default: + case KEY_REMOVE_HIDDEN_NETWORK: - if (QuestionId >= KEY_MAC_ENTRY_BASE && QuestionId < KEY_MAC_ENTRY_BASE + Private->NicCount) { // - // User selects a wireless NIC. + // Remove Hidden Networks // - Status = WifiMgrSelectNic (Private, QuestionId); - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"ERROR: Fail to operate the wireless NIC!", - NULL - ); + Entry = GetFirstNode (&Private->HiddenNetworkList); + RemoveCount = 0; + for (Index = 0; Index < Private->HiddenNetworkCount; Index++) { + if (IfrNvData->HiddenNetworkList[Index] != 0) { + HiddenNetwork = NET_LIST_USER_STRUCT_S (Entry, WIFI_HIDDEN_NETWORK_DATA, Link, WIFI_MGR_HIDDEN_NETWORK_SIGNATURE); + Entry = RemoveEntryList (Entry); + RemoveCount++; + + FreePool (HiddenNetwork); + } else { + Entry = GetNextNode (&Private->HiddenNetworkList, Entry); + } } - } else if (Private->CurrentNic != NULL) { - if (QuestionId >= KEY_AVAILABLE_NETWORK_ENTRY_BASE && - QuestionId <= KEY_AVAILABLE_NETWORK_ENTRY_BASE + Private->CurrentNic->MaxProfileIndex) { - Status = WifiMgrUserSelectProfileToConnect (Private, QuestionId - KEY_AVAILABLE_NETWORK_ENTRY_BASE); - if (!EFI_ERROR (Status)) { - WifiMgrUpdateConnectMessage(Private->CurrentNic, FALSE, NULL); + Private->HiddenNetworkCount -= RemoveCount; + WifiMgrRefreshHiddenList (Private); + break; + + default: + + if ((QuestionId >= KEY_MAC_ENTRY_BASE) && (QuestionId < KEY_MAC_ENTRY_BASE + Private->NicCount)) { + // + // User selects a wireless NIC. + // + Status = WifiMgrSelectNic (Private, QuestionId); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"ERROR: Fail to operate the wireless NIC!", + NULL + ); + } + } else if (Private->CurrentNic != NULL) { + if ((QuestionId >= KEY_AVAILABLE_NETWORK_ENTRY_BASE) && + (QuestionId <= KEY_AVAILABLE_NETWORK_ENTRY_BASE + Private->CurrentNic->MaxProfileIndex)) + { + Status = WifiMgrUserSelectProfileToConnect (Private, QuestionId - KEY_AVAILABLE_NETWORK_ENTRY_BASE); + if (!EFI_ERROR (Status)) { + WifiMgrUpdateConnectMessage (Private->CurrentNic, FALSE, NULL); + } } - } - if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"ERROR: Fail to operate this profile!", - NULL - ); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"ERROR: Fail to operate this profile!", + NULL + ); + } } - } - break; + break; } } else if (Action == EFI_BROWSER_ACTION_CHANGED) { switch (QuestionId) { + case KEY_SAVE_CERT_TO_MEM: + case KEY_SAVE_PRIVATE_KEY_TO_MEM: - case KEY_SAVE_CERT_TO_MEM: - case KEY_SAVE_PRIVATE_KEY_TO_MEM: - - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT; - break; + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT; + break; - case KEY_NO_SAVE_CERT_TO_MEM: - case KEY_NO_SAVE_PRIVATE_KEY_TO_MEM: + case KEY_NO_SAVE_CERT_TO_MEM: + case KEY_NO_SAVE_PRIVATE_KEY_TO_MEM: - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT; - break; + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT; + break; - default: + default: - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; - break; + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY; + break; } } else if (Action == EFI_BROWSER_ACTION_RETRIEVE) { - switch (QuestionId) { + case KEY_REFRESH_NETWORK_LIST: - case KEY_REFRESH_NETWORK_LIST: - - WifiMgrRefreshNetworkList (Private, IfrNvData); - break; + WifiMgrRefreshNetworkList (Private, IfrNvData); + break; - default: - break; + default: + break; } } @@ -1890,7 +1928,7 @@ WifiMgrDxeHiiConfigAccessCallback ( // Pass changed uncommitted data back to Form Browser. // BufferSize = sizeof (WIFI_MANAGER_IFR_NVDATA); - HiiSetBrowserData (&gWifiConfigFormSetGuid, mVendorStorageName, BufferSize, (UINT8 *) IfrNvData, NULL); + HiiSetBrowserData (&gWifiConfigFormSetGuid, mVendorStorageName, BufferSize, (UINT8 *)IfrNvData, NULL); } ZeroMem (IfrNvData, sizeof (WIFI_MANAGER_IFR_NVDATA)); @@ -1911,10 +1949,10 @@ WifiMgrDxeHiiConfigAccessCallback ( **/ EFI_STATUS WifiMgrDxeConfigFormInit ( - WIFI_MGR_PRIVATE_DATA *Private -) + WIFI_MGR_PRIVATE_DATA *Private + ) { - EFI_STATUS Status; + EFI_STATUS Status; if (Private == NULL) { return EFI_INVALID_PARAMETER; @@ -1981,17 +2019,16 @@ WifiMgrDxeConfigFormInit ( **/ EFI_STATUS WifiMgrDxeConfigFormUnload ( - WIFI_MGR_PRIVATE_DATA *Private -) + WIFI_MGR_PRIVATE_DATA *Private + ) { - EFI_STATUS Status; + EFI_STATUS Status; if (Private == NULL) { return EFI_INVALID_PARAMETER; } if (Private->FileContext != NULL) { - if (Private->FileContext->FHandle != NULL) { Private->FileContext->FHandle->Close (Private->FileContext->FHandle); } @@ -1999,19 +2036,20 @@ WifiMgrDxeConfigFormUnload ( if (Private->FileContext->FileName != NULL) { FreePool (Private->FileContext->FileName); } + FreePool (Private->FileContext); } - HiiRemovePackages(Private->RegisteredHandle); + HiiRemovePackages (Private->RegisteredHandle); Status = gBS->UninstallMultipleProtocolInterfaces ( - Private->DriverHandle, - &gEfiDevicePathProtocolGuid, - &mWifiMgrDxeHiiVendorDevicePath, - &gEfiHiiConfigAccessProtocolGuid, - &Private->ConfigAccess, - NULL - ); + Private->DriverHandle, + &gEfiDevicePathProtocolGuid, + &mWifiMgrDxeHiiVendorDevicePath, + &gEfiHiiConfigAccessProtocolGuid, + &Private->ConfigAccess, + NULL + ); return Status; } diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.h b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.h index ebb18e1a98..029cb55ac5 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.h +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrHiiConfigAccess.h @@ -24,9 +24,9 @@ **/ VOID WifiMgrUpdateConnectMessage ( - IN WIFI_MGR_DEVICE_DATA *Nic, - IN BOOLEAN ConnectStateChanged, - IN EFI_STRING ConnectStatusMessage + IN WIFI_MGR_DEVICE_DATA *Nic, + IN BOOLEAN ConnectStateChanged, + IN EFI_STRING ConnectStatusMessage ); /** @@ -183,12 +183,12 @@ WifiMgrDxeHiiConfigAccessRouteConfig ( EFI_STATUS EFIAPI WifiMgrDxeHiiConfigAccessCallback ( - IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, - IN EFI_BROWSER_ACTION Action, - IN EFI_QUESTION_ID QuestionId, - IN UINT8 Type, - IN OUT EFI_IFR_TYPE_VALUE *Value, - OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN OUT EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest ); /** @@ -203,7 +203,7 @@ WifiMgrDxeHiiConfigAccessCallback ( **/ EFI_STATUS WifiMgrDxeConfigFormInit ( - WIFI_MGR_PRIVATE_DATA *Private + WIFI_MGR_PRIVATE_DATA *Private ); /** @@ -217,7 +217,7 @@ WifiMgrDxeConfigFormInit ( **/ EFI_STATUS WifiMgrDxeConfigFormUnload ( - WIFI_MGR_PRIVATE_DATA *Private + WIFI_MGR_PRIVATE_DATA *Private ); /** @@ -234,8 +234,8 @@ WifiMgrDxeConfigFormUnload ( **/ EFI_STATUS WifiMgrRefreshNetworkList ( - IN WIFI_MGR_PRIVATE_DATA *Private, - OUT WIFI_MANAGER_IFR_NVDATA *IfrNvData + IN WIFI_MGR_PRIVATE_DATA *Private, + OUT WIFI_MANAGER_IFR_NVDATA *IfrNvData ); #endif diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c index 2fbd3ebad2..7630c0695c 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.c @@ -9,13 +9,13 @@ #include "WifiConnectionMgrDxe.h" -EFI_EAP_TYPE mEapAuthMethod[] = { +EFI_EAP_TYPE mEapAuthMethod[] = { EFI_EAP_TYPE_TTLS, EFI_EAP_TYPE_PEAP, EFI_EAP_TYPE_EAPTLS }; -EFI_EAP_TYPE mEapSecondAuthMethod[] = { +EFI_EAP_TYPE mEapSecondAuthMethod[] = { EFI_EAP_TYPE_MSCHAPV2 }; @@ -32,28 +32,28 @@ EFI_EAP_TYPE mEapSecondAuthMethod[] = { VOID EFIAPI WifiMgrOnScanFinished ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - EFI_STATUS Status; - WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; - WIFI_MGR_DEVICE_DATA *Nic; - WIFI_MGR_NETWORK_PROFILE *Profile; - EFI_80211_NETWORK *Network; - UINTN DataSize; - EFI_80211_NETWORK_DESCRIPTION *NetworkDescription; - EFI_80211_GET_NETWORKS_RESULT *Result; - LIST_ENTRY *Entry; - UINT8 SecurityType; - BOOLEAN AKMSuiteSupported; - BOOLEAN CipherSuiteSupported; - CHAR8 *AsciiSSId; - UINTN Index; + EFI_STATUS Status; + WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; + WIFI_MGR_DEVICE_DATA *Nic; + WIFI_MGR_NETWORK_PROFILE *Profile; + EFI_80211_NETWORK *Network; + UINTN DataSize; + EFI_80211_NETWORK_DESCRIPTION *NetworkDescription; + EFI_80211_GET_NETWORKS_RESULT *Result; + LIST_ENTRY *Entry; + UINT8 SecurityType; + BOOLEAN AKMSuiteSupported; + BOOLEAN CipherSuiteSupported; + CHAR8 *AsciiSSId; + UINTN Index; ASSERT (Context != NULL); - ConfigToken = (WIFI_MGR_MAC_CONFIG_TOKEN *) Context; + ConfigToken = (WIFI_MGR_MAC_CONFIG_TOKEN *)Context; ASSERT (ConfigToken->Nic != NULL); ASSERT (ConfigToken->Type == TokenTypeGetNetworksToken); @@ -69,29 +69,32 @@ WifiMgrOnScanFinished ( // // Clean previous result, and update network list according to the scan result // - Nic->AvailableCount = 0; + Nic->AvailableCount = 0; NET_LIST_FOR_EACH (Entry, &Nic->ProfileList) { - Profile = NET_LIST_USER_STRUCT_S (Entry, WIFI_MGR_NETWORK_PROFILE, - Link, WIFI_MGR_PROFILE_SIGNATURE); + Profile = NET_LIST_USER_STRUCT_S ( + Entry, + WIFI_MGR_NETWORK_PROFILE, + Link, + WIFI_MGR_PROFILE_SIGNATURE + ); Profile->IsAvailable = FALSE; } if (Result == NULL) { gBS->SignalEvent (Nic->Private->NetworkListRefreshEvent); - WifiMgrFreeToken(ConfigToken); + WifiMgrFreeToken (ConfigToken); return; } - for (Index = 0; Index < Result->NumOfNetworkDesc; Index ++) { - + for (Index = 0; Index < Result->NumOfNetworkDesc; Index++) { NetworkDescription = Result->NetworkDesc + Index; if (NetworkDescription == NULL) { continue; } Network = &NetworkDescription->Network; - if (Network == NULL || Network->SSId.SSIdLen == 0) { + if ((Network == NULL) || (Network->SSId.SSIdLen == 0)) { continue; } @@ -104,22 +107,21 @@ WifiMgrOnScanFinished ( &CipherSuiteSupported ); if (EFI_ERROR (Status)) { - - SecurityType = SECURITY_TYPE_UNKNOWN; - AKMSuiteSupported = FALSE; - CipherSuiteSupported = FALSE; + SecurityType = SECURITY_TYPE_UNKNOWN; + AKMSuiteSupported = FALSE; + CipherSuiteSupported = FALSE; } - AsciiSSId = (CHAR8*) AllocateZeroPool(sizeof (CHAR8) * (Network->SSId.SSIdLen + 1)); + AsciiSSId = (CHAR8 *)AllocateZeroPool (sizeof (CHAR8) * (Network->SSId.SSIdLen + 1)); if (AsciiSSId == NULL) { continue; } - CopyMem(AsciiSSId, (CHAR8 *) Network->SSId.SSId, sizeof (CHAR8) * Network->SSId.SSIdLen); + + CopyMem (AsciiSSId, (CHAR8 *)Network->SSId.SSId, sizeof (CHAR8) * Network->SSId.SSIdLen); *(AsciiSSId + Network->SSId.SSIdLen) = '\0'; Profile = WifiMgrGetProfileByAsciiSSId (AsciiSSId, SecurityType, &Nic->ProfileList); if (Profile == NULL) { - if (Nic->MaxProfileIndex >= NETWORK_LIST_COUNT_MAX) { FreePool (AsciiSSId); continue; @@ -133,66 +135,69 @@ WifiMgrOnScanFinished ( FreePool (AsciiSSId); continue; } + Profile->Signature = WIFI_MGR_PROFILE_SIGNATURE; Profile->NicIndex = Nic->NicIndex; Profile->ProfileIndex = Nic->MaxProfileIndex + 1; AsciiStrToUnicodeStrS (AsciiSSId, Profile->SSId, SSID_STORAGE_SIZE); InsertTailList (&Nic->ProfileList, &Profile->Link); - Nic->MaxProfileIndex ++; + Nic->MaxProfileIndex++; } + FreePool (AsciiSSId); // - //May receive duplicate networks in scan results, check if it has already - //been processed. + // May receive duplicate networks in scan results, check if it has already + // been processed. // if (!Profile->IsAvailable) { - Profile->IsAvailable = TRUE; Profile->SecurityType = SecurityType; Profile->AKMSuiteSupported = AKMSuiteSupported; Profile->CipherSuiteSupported = CipherSuiteSupported; Profile->NetworkQuality = NetworkDescription->NetworkQuality; - Nic->AvailableCount ++; + Nic->AvailableCount++; // - //Copy BSSType and SSId + // Copy BSSType and SSId // - CopyMem(&Profile->Network, Network, sizeof (EFI_80211_NETWORK)); + CopyMem (&Profile->Network, Network, sizeof (EFI_80211_NETWORK)); // - //Copy AKMSuite list + // Copy AKMSuite list // if (Network->AKMSuite != NULL) { - if (Network->AKMSuite->AKMSuiteCount == 0) { DataSize = sizeof (EFI_80211_AKM_SUITE_SELECTOR); } else { DataSize = sizeof (EFI_80211_AKM_SUITE_SELECTOR) + sizeof (EFI_80211_SUITE_SELECTOR) - * (Network->AKMSuite->AKMSuiteCount - 1); + * (Network->AKMSuite->AKMSuiteCount - 1); } - Profile->Network.AKMSuite = (EFI_80211_AKM_SUITE_SELECTOR *) AllocateZeroPool (DataSize); + + Profile->Network.AKMSuite = (EFI_80211_AKM_SUITE_SELECTOR *)AllocateZeroPool (DataSize); if (Profile->Network.AKMSuite == NULL) { continue; } + CopyMem (Profile->Network.AKMSuite, Network->AKMSuite, DataSize); } // - //Copy CipherSuite list + // Copy CipherSuite list // if (Network->CipherSuite != NULL) { - if (Network->CipherSuite->CipherSuiteCount == 0) { DataSize = sizeof (EFI_80211_CIPHER_SUITE_SELECTOR); } else { DataSize = sizeof (EFI_80211_CIPHER_SUITE_SELECTOR) + sizeof (EFI_80211_SUITE_SELECTOR) - * (Network->CipherSuite->CipherSuiteCount - 1); + * (Network->CipherSuite->CipherSuiteCount - 1); } - Profile->Network.CipherSuite = (EFI_80211_CIPHER_SUITE_SELECTOR *) AllocateZeroPool (DataSize); + + Profile->Network.CipherSuite = (EFI_80211_CIPHER_SUITE_SELECTOR *)AllocateZeroPool (DataSize); if (Profile->Network.CipherSuite == NULL) { continue; } + CopyMem (Profile->Network.CipherSuite, Network->CipherSuite, DataSize); } } else { @@ -202,6 +207,7 @@ WifiMgrOnScanFinished ( if (Profile->NetworkQuality < NetworkDescription->NetworkQuality) { Profile->NetworkQuality = NetworkDescription->NetworkQuality; } + continue; } } @@ -212,14 +218,14 @@ WifiMgrOnScanFinished ( // The current connected network should always be available until disconnection // happens in Wifi FW layer, even when it is not in this time's scan result. // - if (Nic->ConnectState == WifiMgrConnectedToAp && Nic->CurrentOperateNetwork != NULL) { + if ((Nic->ConnectState == WifiMgrConnectedToAp) && (Nic->CurrentOperateNetwork != NULL)) { if (!Nic->CurrentOperateNetwork->IsAvailable) { Nic->CurrentOperateNetwork->IsAvailable = TRUE; - Nic->AvailableCount ++; + Nic->AvailableCount++; } } - WifiMgrFreeToken(ConfigToken); + WifiMgrFreeToken (ConfigToken); } /** @@ -236,20 +242,20 @@ WifiMgrOnScanFinished ( **/ EFI_STATUS WifiMgrStartScan ( - IN WIFI_MGR_DEVICE_DATA *Nic + IN WIFI_MGR_DEVICE_DATA *Nic ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; - EFI_80211_GET_NETWORKS_TOKEN *GetNetworksToken; - UINT32 HiddenSSIdIndex; - UINT32 HiddenSSIdCount; - EFI_80211_SSID *HiddenSSIdList; - WIFI_HIDDEN_NETWORK_DATA *HiddenNetwork; - LIST_ENTRY *Entry; - - if (Nic == NULL || Nic->Wmp == NULL) { + EFI_STATUS Status; + EFI_TPL OldTpl; + WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; + EFI_80211_GET_NETWORKS_TOKEN *GetNetworksToken; + UINT32 HiddenSSIdIndex; + UINT32 HiddenSSIdCount; + EFI_80211_SSID *HiddenSSIdList; + WIFI_HIDDEN_NETWORK_DATA *HiddenNetwork; + LIST_ENTRY *Entry; + + if ((Nic == NULL) || (Nic->Wmp == NULL)) { return EFI_INVALID_PARAMETER; } @@ -265,61 +271,70 @@ WifiMgrStartScan ( HiddenSSIdIndex = 0; // - //create a new get network token + // create a new get network token // - ConfigToken = AllocateZeroPool (sizeof (WIFI_MGR_MAC_CONFIG_TOKEN)); + ConfigToken = AllocateZeroPool (sizeof (WIFI_MGR_MAC_CONFIG_TOKEN)); if (ConfigToken == NULL) { gBS->RestoreTPL (OldTpl); return EFI_OUT_OF_RESOURCES; } - ConfigToken->Type = TokenTypeGetNetworksToken; - ConfigToken->Nic = Nic; + ConfigToken->Type = TokenTypeGetNetworksToken; + ConfigToken->Nic = Nic; ConfigToken->Token.GetNetworksToken = AllocateZeroPool (sizeof (EFI_80211_GET_NETWORKS_TOKEN)); if (ConfigToken->Token.GetNetworksToken == NULL) { - WifiMgrFreeToken(ConfigToken); + WifiMgrFreeToken (ConfigToken); gBS->RestoreTPL (OldTpl); return EFI_OUT_OF_RESOURCES; } + GetNetworksToken = ConfigToken->Token.GetNetworksToken; // // There are some hidden networks to scan, add them into scan list // if (HiddenSSIdCount > 0) { - HiddenSSIdList = AllocateZeroPool(HiddenSSIdCount * sizeof (EFI_80211_SSID)); + HiddenSSIdList = AllocateZeroPool (HiddenSSIdCount * sizeof (EFI_80211_SSID)); if (HiddenSSIdList == NULL) { - WifiMgrFreeToken(ConfigToken); + WifiMgrFreeToken (ConfigToken); gBS->RestoreTPL (OldTpl); return EFI_OUT_OF_RESOURCES; } HiddenSSIdIndex = 0; NET_LIST_FOR_EACH (Entry, &Nic->Private->HiddenNetworkList) { - - HiddenNetwork = NET_LIST_USER_STRUCT_S (Entry, WIFI_HIDDEN_NETWORK_DATA, - Link, WIFI_MGR_HIDDEN_NETWORK_SIGNATURE); - HiddenSSIdList[HiddenSSIdIndex].SSIdLen = (UINT8) StrLen (HiddenNetwork->SSId); - UnicodeStrToAsciiStrS(HiddenNetwork->SSId, - (CHAR8 *) HiddenSSIdList[HiddenSSIdIndex].SSId, SSID_STORAGE_SIZE); - HiddenSSIdIndex ++; + HiddenNetwork = NET_LIST_USER_STRUCT_S ( + Entry, + WIFI_HIDDEN_NETWORK_DATA, + Link, + WIFI_MGR_HIDDEN_NETWORK_SIGNATURE + ); + HiddenSSIdList[HiddenSSIdIndex].SSIdLen = (UINT8)StrLen (HiddenNetwork->SSId); + UnicodeStrToAsciiStrS ( + HiddenNetwork->SSId, + (CHAR8 *)HiddenSSIdList[HiddenSSIdIndex].SSId, + SSID_STORAGE_SIZE + ); + HiddenSSIdIndex++; } - GetNetworksToken->Data = AllocateZeroPool (sizeof (EFI_80211_GET_NETWORKS_DATA) + - (HiddenSSIdCount - 1) * sizeof (EFI_80211_SSID)); + GetNetworksToken->Data = AllocateZeroPool ( + sizeof (EFI_80211_GET_NETWORKS_DATA) + + (HiddenSSIdCount - 1) * sizeof (EFI_80211_SSID) + ); if (GetNetworksToken->Data == NULL) { FreePool (HiddenSSIdList); - WifiMgrFreeToken(ConfigToken); + WifiMgrFreeToken (ConfigToken); gBS->RestoreTPL (OldTpl); return EFI_OUT_OF_RESOURCES; } + GetNetworksToken->Data->NumOfSSID = HiddenSSIdCount; - CopyMem(GetNetworksToken->Data->SSIDList, HiddenSSIdList, HiddenSSIdCount * sizeof (EFI_80211_SSID)); - FreePool(HiddenSSIdList); + CopyMem (GetNetworksToken->Data->SSIDList, HiddenSSIdList, HiddenSSIdCount * sizeof (EFI_80211_SSID)); + FreePool (HiddenSSIdList); } else { - GetNetworksToken->Data = AllocateZeroPool (sizeof (EFI_80211_GET_NETWORKS_DATA)); if (GetNetworksToken->Data == NULL) { - WifiMgrFreeToken(ConfigToken); + WifiMgrFreeToken (ConfigToken); gBS->RestoreTPL (OldTpl); return EFI_OUT_OF_RESOURCES; } @@ -328,7 +343,7 @@ WifiMgrStartScan ( } // - //Create a handle when scan process ends + // Create a handle when scan process ends // Status = gBS->CreateEvent ( EVT_NOTIFY_SIGNAL, @@ -338,18 +353,18 @@ WifiMgrStartScan ( &GetNetworksToken->Event ); if (EFI_ERROR (Status)) { - WifiMgrFreeToken(ConfigToken); + WifiMgrFreeToken (ConfigToken); gBS->RestoreTPL (OldTpl); return Status; } // - //Start scan ... + // Start scan ... // Status = Nic->Wmp->GetNetworks (Nic->Wmp, GetNetworksToken); if (EFI_ERROR (Status)) { - Nic->ScanState = WifiMgrScanFinished; - WifiMgrFreeToken(ConfigToken); + Nic->ScanState = WifiMgrScanFinished; + WifiMgrFreeToken (ConfigToken); gBS->RestoreTPL (OldTpl); return Status; } @@ -373,45 +388,56 @@ WifiMgrStartScan ( **/ EFI_STATUS WifiMgrConfigPassword ( - IN WIFI_MGR_DEVICE_DATA *Nic, - IN WIFI_MGR_NETWORK_PROFILE *Profile + IN WIFI_MGR_DEVICE_DATA *Nic, + IN WIFI_MGR_NETWORK_PROFILE *Profile ) { - EFI_STATUS Status; - EFI_SUPPLICANT_PROTOCOL *Supplicant; - EFI_80211_SSID SSId; - UINT8 *AsciiPassword; + EFI_STATUS Status; + EFI_SUPPLICANT_PROTOCOL *Supplicant; + EFI_80211_SSID SSId; + UINT8 *AsciiPassword; - if (Nic == NULL || Nic->Supplicant == NULL || Profile == NULL) { + if ((Nic == NULL) || (Nic->Supplicant == NULL) || (Profile == NULL)) { return EFI_INVALID_PARAMETER; } + Supplicant = Nic->Supplicant; // - //Set SSId to supplicant + // Set SSId to supplicant // SSId.SSIdLen = Profile->Network.SSId.SSIdLen; - CopyMem(SSId.SSId, Profile->Network.SSId.SSId, sizeof (Profile->Network.SSId.SSId)); - Status = Supplicant->SetData(Supplicant,EfiSupplicant80211TargetSSIDName, - (VOID *)&SSId, sizeof(EFI_80211_SSID)); - if (EFI_ERROR(Status)) { + CopyMem (SSId.SSId, Profile->Network.SSId.SSId, sizeof (Profile->Network.SSId.SSId)); + Status = Supplicant->SetData ( + Supplicant, + EfiSupplicant80211TargetSSIDName, + (VOID *)&SSId, + sizeof (EFI_80211_SSID) + ); + if (EFI_ERROR (Status)) { return Status; } // - //Set password to supplicant + // Set password to supplicant // if (StrLen (Profile->Password) < PASSWORD_MIN_LEN) { return EFI_NOT_FOUND; } - AsciiPassword = AllocateZeroPool ((StrLen(Profile->Password) + 1) * sizeof (UINT8)); + + AsciiPassword = AllocateZeroPool ((StrLen (Profile->Password) + 1) * sizeof (UINT8)); if (AsciiPassword == NULL) { return EFI_OUT_OF_RESOURCES; } - UnicodeStrToAsciiStrS (Profile->Password, (CHAR8 *) AsciiPassword, PASSWORD_STORAGE_SIZE); - Status = Supplicant->SetData (Supplicant, EfiSupplicant80211PskPassword, - AsciiPassword, (StrLen(Profile->Password) + 1) * sizeof (UINT8)); - ZeroMem (AsciiPassword, AsciiStrLen ((CHAR8 *) AsciiPassword) + 1); - FreePool(AsciiPassword); + + UnicodeStrToAsciiStrS (Profile->Password, (CHAR8 *)AsciiPassword, PASSWORD_STORAGE_SIZE); + Status = Supplicant->SetData ( + Supplicant, + EfiSupplicant80211PskPassword, + AsciiPassword, + (StrLen (Profile->Password) + 1) * sizeof (UINT8) + ); + ZeroMem (AsciiPassword, AsciiStrLen ((CHAR8 *)AsciiPassword) + 1); + FreePool (AsciiPassword); return Status; } @@ -435,51 +461,59 @@ WifiMgrConfigPassword ( **/ EFI_STATUS WifiMgrConfigEap ( - IN WIFI_MGR_DEVICE_DATA *Nic, - IN WIFI_MGR_NETWORK_PROFILE *Profile + IN WIFI_MGR_DEVICE_DATA *Nic, + IN WIFI_MGR_NETWORK_PROFILE *Profile ) { - EFI_STATUS Status; - EFI_EAP_CONFIGURATION_PROTOCOL *EapConfig; - EFI_EAP_TYPE EapAuthMethod; - EFI_EAP_TYPE EapSecondAuthMethod; - EFI_EAP_TYPE *AuthMethodList; - CHAR8 *Identity; - UINTN IdentitySize; - CHAR16 *Password; - UINTN PasswordSize; - UINTN EncryptPasswordLen; - CHAR8 *AsciiEncryptPassword; - UINTN AuthMethodListSize; - UINTN Index; - - if (Nic == NULL || Nic->EapConfig == NULL || Profile == NULL) { + EFI_STATUS Status; + EFI_EAP_CONFIGURATION_PROTOCOL *EapConfig; + EFI_EAP_TYPE EapAuthMethod; + EFI_EAP_TYPE EapSecondAuthMethod; + EFI_EAP_TYPE *AuthMethodList; + CHAR8 *Identity; + UINTN IdentitySize; + CHAR16 *Password; + UINTN PasswordSize; + UINTN EncryptPasswordLen; + CHAR8 *AsciiEncryptPassword; + UINTN AuthMethodListSize; + UINTN Index; + + if ((Nic == NULL) || (Nic->EapConfig == NULL) || (Profile == NULL)) { return EFI_INVALID_PARAMETER; } + EapConfig = Nic->EapConfig; if (Profile->EapAuthMethod >= EAP_AUTH_METHOD_MAX) { return EFI_INVALID_PARAMETER; } + EapAuthMethod = mEapAuthMethod[Profile->EapAuthMethod]; if (EapAuthMethod != EFI_EAP_TYPE_EAPTLS) { if (Profile->EapSecondAuthMethod >= EAP_SEAUTH_METHOD_MAX) { return EFI_INVALID_PARAMETER; } + EapSecondAuthMethod = mEapSecondAuthMethod[Profile->EapSecondAuthMethod]; } // - //The first time to get Supported Auth Method list, return the size. + // The first time to get Supported Auth Method list, return the size. // - AuthMethodListSize = 0; - AuthMethodList = NULL; - Status = EapConfig->GetData (EapConfig, EFI_EAP_TYPE_ATTRIBUTE, EfiEapConfigEapSupportedAuthMethod, - (VOID *) AuthMethodList, &AuthMethodListSize); + AuthMethodListSize = 0; + AuthMethodList = NULL; + Status = EapConfig->GetData ( + EapConfig, + EFI_EAP_TYPE_ATTRIBUTE, + EfiEapConfigEapSupportedAuthMethod, + (VOID *)AuthMethodList, + &AuthMethodListSize + ); if (Status == EFI_SUCCESS) { // - //No Supported Eap Auth Method + // No Supported Eap Auth Method // return EFI_UNSUPPORTED; } else if (Status != EFI_BUFFER_TOO_SMALL) { @@ -490,48 +524,62 @@ WifiMgrConfigEap ( // The second time to get Supported Auth Method list, return the list. // In current design, only EAPTLS, TTLS and PEAP are supported // - AuthMethodList = (EFI_EAP_TYPE *) AllocateZeroPool(AuthMethodListSize); + AuthMethodList = (EFI_EAP_TYPE *)AllocateZeroPool (AuthMethodListSize); if (AuthMethodList == NULL) { return EFI_OUT_OF_RESOURCES; } - Status = EapConfig->GetData (EapConfig, EFI_EAP_TYPE_ATTRIBUTE, EfiEapConfigEapSupportedAuthMethod, - (VOID *) AuthMethodList, &AuthMethodListSize); + + Status = EapConfig->GetData ( + EapConfig, + EFI_EAP_TYPE_ATTRIBUTE, + EfiEapConfigEapSupportedAuthMethod, + (VOID *)AuthMethodList, + &AuthMethodListSize + ); if (EFI_ERROR (Status)) { FreePool (AuthMethodList); return Status; } // - //Check if EapAuthMethod is in supported Auth Method list, if found, skip the loop. + // Check if EapAuthMethod is in supported Auth Method list, if found, skip the loop. // - for (Index = 0; Index < AuthMethodListSize / sizeof (EFI_EAP_TYPE); Index ++) { + for (Index = 0; Index < AuthMethodListSize / sizeof (EFI_EAP_TYPE); Index++) { if (EapAuthMethod == AuthMethodList[Index]) { break; } } + if (Index == AuthMethodListSize / sizeof (EFI_EAP_TYPE)) { FreePool (AuthMethodList); return EFI_UNSUPPORTED; } + FreePool (AuthMethodList); // // Set Identity to Eap peer, Mandatory field for PEAP and TTLS // if (StrLen (Profile->EapIdentity) > 0) { - - IdentitySize = sizeof(CHAR8) * (StrLen(Profile->EapIdentity) + 1); - Identity = AllocateZeroPool (IdentitySize); + IdentitySize = sizeof (CHAR8) * (StrLen (Profile->EapIdentity) + 1); + Identity = AllocateZeroPool (IdentitySize); if (Identity == NULL) { return EFI_OUT_OF_RESOURCES; } - UnicodeStrToAsciiStrS(Profile->EapIdentity, Identity, IdentitySize); - Status = EapConfig->SetData (EapConfig, EFI_EAP_TYPE_IDENTITY, EfiEapConfigIdentityString, - (VOID *) Identity, IdentitySize - 1); - if (EFI_ERROR(Status)) { + + UnicodeStrToAsciiStrS (Profile->EapIdentity, Identity, IdentitySize); + Status = EapConfig->SetData ( + EapConfig, + EFI_EAP_TYPE_IDENTITY, + EfiEapConfigIdentityString, + (VOID *)Identity, + IdentitySize - 1 + ); + if (EFI_ERROR (Status)) { FreePool (Identity); return Status; } + FreePool (Identity); } else { if (EapAuthMethod != EFI_EAP_TYPE_EAPTLS) { @@ -540,19 +588,28 @@ WifiMgrConfigEap ( } // - //Set Auth Method to Eap peer, Mandatory field + // Set Auth Method to Eap peer, Mandatory field // - Status = EapConfig->SetData (EapConfig, EFI_EAP_TYPE_ATTRIBUTE, EfiEapConfigEapAuthMethod, - (VOID *) &EapAuthMethod, sizeof (EapAuthMethod)); - if (EFI_ERROR(Status)) { + Status = EapConfig->SetData ( + EapConfig, + EFI_EAP_TYPE_ATTRIBUTE, + EfiEapConfigEapAuthMethod, + (VOID *)&EapAuthMethod, + sizeof (EapAuthMethod) + ); + if (EFI_ERROR (Status)) { return Status; } - if (EapAuthMethod == EFI_EAP_TYPE_TTLS || EapAuthMethod == EFI_EAP_TYPE_PEAP) { - - Status = EapConfig->SetData (EapConfig, EapAuthMethod, EfiEapConfigEap2ndAuthMethod, - (VOID *) &EapSecondAuthMethod, sizeof (EapSecondAuthMethod)); - if (EFI_ERROR(Status)) { + if ((EapAuthMethod == EFI_EAP_TYPE_TTLS) || (EapAuthMethod == EFI_EAP_TYPE_PEAP)) { + Status = EapConfig->SetData ( + EapConfig, + EapAuthMethod, + EfiEapConfigEap2ndAuthMethod, + (VOID *)&EapSecondAuthMethod, + sizeof (EapSecondAuthMethod) + ); + if (EFI_ERROR (Status)) { return Status; } @@ -560,19 +617,24 @@ WifiMgrConfigEap ( // Set Password to Eap peer // if (StrLen (Profile->EapPassword) < PASSWORD_MIN_LEN) { - DEBUG ((DEBUG_ERROR, "[WiFi Connection Manager] Error: No Eap Password for Network: %s.\n", Profile->SSId)); return EFI_INVALID_PARAMETER; } PasswordSize = sizeof (CHAR16) * (StrLen (Profile->EapPassword) + 1); - Password = AllocateZeroPool (PasswordSize); + Password = AllocateZeroPool (PasswordSize); if (Password == NULL) { return EFI_OUT_OF_RESOURCES; } - StrCpyS (Password, PasswordSize, Profile->EapPassword);; - Status = EapConfig->SetData (EapConfig, EFI_EAP_TYPE_MSCHAPV2, EfiEapConfigEapMSChapV2Password, - (VOID *) Password, PasswordSize); + + StrCpyS (Password, PasswordSize, Profile->EapPassword); + Status = EapConfig->SetData ( + EapConfig, + EFI_EAP_TYPE_MSCHAPV2, + EfiEapConfigEapMSChapV2Password, + (VOID *)Password, + PasswordSize + ); ZeroMem (Password, PasswordSize); FreePool (Password); if (EFI_ERROR (Status)) { @@ -580,72 +642,94 @@ WifiMgrConfigEap ( } // - //If CA cert is required, set it to Eap peer + // If CA cert is required, set it to Eap peer // if (Profile->CACertData != NULL) { - - Status = EapConfig->SetData (EapConfig, EapAuthMethod, EfiEapConfigEapTlsCACert, - Profile->CACertData, Profile->CACertSize); - if (EFI_ERROR(Status)) { + Status = EapConfig->SetData ( + EapConfig, + EapAuthMethod, + EfiEapConfigEapTlsCACert, + Profile->CACertData, + Profile->CACertSize + ); + if (EFI_ERROR (Status)) { return Status; } } else { return EFI_INVALID_PARAMETER; } } else if (EapAuthMethod == EFI_EAP_TYPE_EAPTLS) { - // - //Set CA cert to Eap peer + // Set CA cert to Eap peer // if (Profile->CACertData == NULL) { return EFI_INVALID_PARAMETER; } - Status = EapConfig->SetData (EapConfig, EFI_EAP_TYPE_EAPTLS, EfiEapConfigEapTlsCACert, - Profile->CACertData, Profile->CACertSize); - if (EFI_ERROR(Status)) { + + Status = EapConfig->SetData ( + EapConfig, + EFI_EAP_TYPE_EAPTLS, + EfiEapConfigEapTlsCACert, + Profile->CACertData, + Profile->CACertSize + ); + if (EFI_ERROR (Status)) { return Status; } // - //Set Client cert to Eap peer + // Set Client cert to Eap peer // if (Profile->ClientCertData == NULL) { return EFI_INVALID_PARAMETER; } - Status = EapConfig->SetData (EapConfig, EFI_EAP_TYPE_EAPTLS, EfiEapConfigEapTlsClientCert, - Profile->ClientCertData, Profile->ClientCertSize); - if (EFI_ERROR(Status)) { + + Status = EapConfig->SetData ( + EapConfig, + EFI_EAP_TYPE_EAPTLS, + EfiEapConfigEapTlsClientCert, + Profile->ClientCertData, + Profile->ClientCertSize + ); + if (EFI_ERROR (Status)) { return Status; } // - //Set Private key to Eap peer + // Set Private key to Eap peer // if (Profile->PrivateKeyData == NULL) { - DEBUG ((DEBUG_ERROR, "[WiFi Connection Manager] Error: No Private Key for Network: %s.\n", Profile->SSId)); return EFI_INVALID_PARAMETER; } - Status = EapConfig->SetData (EapConfig, EFI_EAP_TYPE_EAPTLS, EfiEapConfigEapTlsClientPrivateKeyFile, - Profile->PrivateKeyData, Profile->PrivateKeyDataSize); - if (EFI_ERROR(Status)) { + Status = EapConfig->SetData ( + EapConfig, + EFI_EAP_TYPE_EAPTLS, + EfiEapConfigEapTlsClientPrivateKeyFile, + Profile->PrivateKeyData, + Profile->PrivateKeyDataSize + ); + if (EFI_ERROR (Status)) { return Status; } if (StrLen (Profile->PrivateKeyPassword) > 0) { - - EncryptPasswordLen = StrLen (Profile->PrivateKeyPassword); - AsciiEncryptPassword = AllocateZeroPool(EncryptPasswordLen + 1); + EncryptPasswordLen = StrLen (Profile->PrivateKeyPassword); + AsciiEncryptPassword = AllocateZeroPool (EncryptPasswordLen + 1); if (AsciiEncryptPassword == NULL) { return EFI_OUT_OF_RESOURCES; } - UnicodeStrToAsciiStrS(Profile->PrivateKeyPassword, AsciiEncryptPassword, EncryptPasswordLen + 1); - Status = EapConfig->SetData(EapConfig, EFI_EAP_TYPE_EAPTLS, - EfiEapConfigEapTlsClientPrivateKeyFilePassword, - (VOID *) AsciiEncryptPassword, EncryptPasswordLen + 1); - if (EFI_ERROR(Status)) { + UnicodeStrToAsciiStrS (Profile->PrivateKeyPassword, AsciiEncryptPassword, EncryptPasswordLen + 1); + Status = EapConfig->SetData ( + EapConfig, + EFI_EAP_TYPE_EAPTLS, + EfiEapConfigEapTlsClientPrivateKeyFilePassword, + (VOID *)AsciiEncryptPassword, + EncryptPasswordLen + 1 + ); + if (EFI_ERROR (Status)) { ZeroMem (AsciiEncryptPassword, EncryptPasswordLen + 1); FreePool (AsciiEncryptPassword); return Status; @@ -675,17 +759,17 @@ WifiMgrConfigEap ( **/ EFI_STATUS WifiMgrGetLinkState ( - IN WIFI_MGR_DEVICE_DATA *Nic, - OUT EFI_ADAPTER_INFO_MEDIA_STATE *LinkState + IN WIFI_MGR_DEVICE_DATA *Nic, + OUT EFI_ADAPTER_INFO_MEDIA_STATE *LinkState ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - UINTN DataSize; - EFI_ADAPTER_INFO_MEDIA_STATE *UndiState; - EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; + EFI_STATUS Status; + EFI_TPL OldTpl; + UINTN DataSize; + EFI_ADAPTER_INFO_MEDIA_STATE *UndiState; + EFI_ADAPTER_INFORMATION_PROTOCOL *Aip; - if (Nic == NULL || LinkState == NULL) { + if ((Nic == NULL) || (LinkState == NULL)) { return EFI_INVALID_PARAMETER; } @@ -693,7 +777,7 @@ WifiMgrGetLinkState ( Status = gBS->OpenProtocol ( Nic->ControllerHandle, &gEfiAdapterInformationProtocolGuid, - (VOID**) &Aip, + (VOID **)&Aip, Nic->DriverHandle, Nic->ControllerHandle, EFI_OPEN_PROTOCOL_GET_PROTOCOL @@ -703,16 +787,17 @@ WifiMgrGetLinkState ( return EFI_UNSUPPORTED; } - Status = Aip->GetInformation( + Status = Aip->GetInformation ( Aip, &gEfiAdapterInfoMediaStateGuid, - (VOID **) &UndiState, + (VOID **)&UndiState, &DataSize ); if (EFI_ERROR (Status)) { gBS->RestoreTPL (OldTpl); return Status; } + gBS->RestoreTPL (OldTpl); CopyMem (LinkState, UndiState, sizeof (EFI_ADAPTER_INFO_MEDIA_STATE)); @@ -735,21 +820,27 @@ WifiMgrGetLinkState ( **/ EFI_STATUS WifiMgrPrepareConnection ( - IN WIFI_MGR_DEVICE_DATA *Nic, - IN WIFI_MGR_NETWORK_PROFILE *Profile + IN WIFI_MGR_DEVICE_DATA *Nic, + IN WIFI_MGR_NETWORK_PROFILE *Profile ) { - EFI_STATUS Status; - UINT8 SecurityType; - BOOLEAN AKMSuiteSupported; - BOOLEAN CipherSuiteSupported; + EFI_STATUS Status; + UINT8 SecurityType; + BOOLEAN AKMSuiteSupported; + BOOLEAN CipherSuiteSupported; - if (Profile == NULL || Nic == NULL) { + if ((Profile == NULL) || (Nic == NULL)) { return EFI_INVALID_PARAMETER; } - Status = WifiMgrCheckRSN (Profile->Network.AKMSuite, Profile->Network.CipherSuite, - Nic, &SecurityType, &AKMSuiteSupported, &CipherSuiteSupported); + Status = WifiMgrCheckRSN ( + Profile->Network.AKMSuite, + Profile->Network.CipherSuite, + Nic, + &SecurityType, + &AKMSuiteSupported, + &CipherSuiteSupported + ); if (EFI_ERROR (Status)) { return Status; } @@ -765,8 +856,10 @@ WifiMgrPrepareConnection ( WifiMgrUpdateConnectMessage (Nic, FALSE, L"Connect Failed: Invalid Password!"); } } + return Status; } + break; case SECURITY_TYPE_WPA2_ENTERPRISE: @@ -778,8 +871,10 @@ WifiMgrPrepareConnection ( WifiMgrUpdateConnectMessage (Nic, FALSE, L"Connect Failed: Invalid Configuration!"); } } + return Status; } + break; case SECURITY_TYPE_NONE: @@ -807,21 +902,21 @@ WifiMgrPrepareConnection ( VOID EFIAPI WifiMgrOnConnectFinished ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - EFI_STATUS Status; - WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; - WIFI_MGR_NETWORK_PROFILE *ConnectedProfile; - UINT8 SecurityType; - UINT8 SSIdLen; - CHAR8 *AsciiSSId; + EFI_STATUS Status; + WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; + WIFI_MGR_NETWORK_PROFILE *ConnectedProfile; + UINT8 SecurityType; + UINT8 SSIdLen; + CHAR8 *AsciiSSId; ASSERT (Context != NULL); ConnectedProfile = NULL; - ConfigToken = (WIFI_MGR_MAC_CONFIG_TOKEN*) Context; + ConfigToken = (WIFI_MGR_MAC_CONFIG_TOKEN *)Context; ASSERT (ConfigToken->Nic != NULL); ConfigToken->Nic->ConnectState = WifiMgrDisconnected; @@ -829,39 +924,38 @@ WifiMgrOnConnectFinished ( ASSERT (ConfigToken->Token.ConnectNetworkToken != NULL); if (ConfigToken->Token.ConnectNetworkToken->Status != EFI_SUCCESS) { - if (ConfigToken->Nic->OneTimeConnectRequest) { // // Only update message for user triggered connection // if (ConfigToken->Token.ConnectNetworkToken->Status == EFI_ACCESS_DENIED) { - WifiMgrUpdateConnectMessage (ConfigToken->Nic, FALSE, L"Connect Failed: Permission Denied!"); } else { WifiMgrUpdateConnectMessage (ConfigToken->Nic, FALSE, L"Connect Failed!"); } + ConfigToken->Nic->OneTimeConnectRequest = FALSE; } + ConfigToken->Nic->CurrentOperateNetwork = NULL; return; } if (ConfigToken->Token.ConnectNetworkToken->ResultCode != ConnectSuccess) { - if (ConfigToken->Nic->OneTimeConnectRequest) { - if (ConfigToken->Token.ConnectNetworkToken->ResultCode == ConnectFailedReasonUnspecified) { WifiMgrUpdateConnectMessage (ConfigToken->Nic, FALSE, L"Connect Failed: Wrong Password or Unexpected Error!"); } else { WifiMgrUpdateConnectMessage (ConfigToken->Nic, FALSE, L"Connect Failed!"); } } + goto Exit; } - if (ConfigToken->Token.ConnectNetworkToken->Data == NULL || - ConfigToken->Token.ConnectNetworkToken->Data->Network == NULL) { - + if ((ConfigToken->Token.ConnectNetworkToken->Data == NULL) || + (ConfigToken->Token.ConnectNetworkToken->Data->Network == NULL)) + { // // An unexpected error occurs, tell low layer to perform a disconnect // @@ -873,26 +967,31 @@ WifiMgrOnConnectFinished ( // // A correct connect token received, terminate the connection process // - Status = WifiMgrCheckRSN(ConfigToken->Token.ConnectNetworkToken->Data->Network->AKMSuite, + Status = WifiMgrCheckRSN ( + ConfigToken->Token.ConnectNetworkToken->Data->Network->AKMSuite, ConfigToken->Token.ConnectNetworkToken->Data->Network->CipherSuite, - ConfigToken->Nic, &SecurityType, NULL, NULL); - if (EFI_ERROR(Status)) { + ConfigToken->Nic, + &SecurityType, + NULL, + NULL + ); + if (EFI_ERROR (Status)) { SecurityType = SECURITY_TYPE_UNKNOWN; } SSIdLen = ConfigToken->Token.ConnectNetworkToken->Data->Network->SSId.SSIdLen; - AsciiSSId = (CHAR8*) AllocateZeroPool(sizeof (CHAR8) * (SSIdLen + 1)); + AsciiSSId = (CHAR8 *)AllocateZeroPool (sizeof (CHAR8) * (SSIdLen + 1)); if (AsciiSSId == NULL) { ConfigToken->Nic->HasDisconnectPendingNetwork = TRUE; WifiMgrUpdateConnectMessage (ConfigToken->Nic, FALSE, NULL); goto Exit; } - CopyMem(AsciiSSId, ConfigToken->Token.ConnectNetworkToken->Data->Network->SSId.SSId, SSIdLen); + CopyMem (AsciiSSId, ConfigToken->Token.ConnectNetworkToken->Data->Network->SSId.SSId, SSIdLen); *(AsciiSSId + SSIdLen) = '\0'; - ConnectedProfile = WifiMgrGetProfileByAsciiSSId(AsciiSSId, SecurityType, &ConfigToken->Nic->ProfileList); - FreePool(AsciiSSId); + ConnectedProfile = WifiMgrGetProfileByAsciiSSId (AsciiSSId, SecurityType, &ConfigToken->Nic->ProfileList); + FreePool (AsciiSSId); if (ConnectedProfile == NULL) { ConfigToken->Nic->HasDisconnectPendingNetwork = TRUE; WifiMgrUpdateConnectMessage (ConfigToken->Nic, FALSE, NULL); @@ -907,8 +1006,9 @@ Exit: if (ConfigToken->Nic->ConnectState == WifiMgrDisconnected) { ConfigToken->Nic->CurrentOperateNetwork = NULL; } + ConfigToken->Nic->OneTimeConnectRequest = FALSE; - WifiMgrFreeToken(ConfigToken); + WifiMgrFreeToken (ConfigToken); } /** @@ -927,17 +1027,17 @@ Exit: **/ EFI_STATUS WifiMgrConnectToNetwork ( - IN WIFI_MGR_DEVICE_DATA *Nic, - IN WIFI_MGR_NETWORK_PROFILE *Profile + IN WIFI_MGR_DEVICE_DATA *Nic, + IN WIFI_MGR_NETWORK_PROFILE *Profile ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - EFI_ADAPTER_INFO_MEDIA_STATE LinkState; - WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; - EFI_80211_CONNECT_NETWORK_TOKEN *ConnectToken; + EFI_STATUS Status; + EFI_TPL OldTpl; + EFI_ADAPTER_INFO_MEDIA_STATE LinkState; + WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; + EFI_80211_CONNECT_NETWORK_TOKEN *ConnectToken; - if (Nic == NULL || Nic->Wmp == NULL || Profile == NULL) { + if ((Nic == NULL) || (Nic->Wmp == NULL) || (Profile == NULL)) { return EFI_INVALID_PARAMETER; } @@ -945,6 +1045,7 @@ WifiMgrConnectToNetwork ( if (EFI_ERROR (Status)) { return Status; } + if (LinkState.MediaState == EFI_SUCCESS) { return EFI_ALREADY_STARTED; } @@ -965,15 +1066,15 @@ WifiMgrConnectToNetwork ( goto Exit; } - ConfigToken->Type = TokenTypeConnectNetworkToken; - ConfigToken->Nic = Nic; - ConfigToken->Token.ConnectNetworkToken = AllocateZeroPool (sizeof (EFI_80211_CONNECT_NETWORK_TOKEN)); + ConfigToken->Type = TokenTypeConnectNetworkToken; + ConfigToken->Nic = Nic; + ConfigToken->Token.ConnectNetworkToken = AllocateZeroPool (sizeof (EFI_80211_CONNECT_NETWORK_TOKEN)); if (ConfigToken->Token.ConnectNetworkToken == NULL) { goto Exit; } - ConnectToken = ConfigToken->Token.ConnectNetworkToken; - ConnectToken->Data = AllocateZeroPool (sizeof (EFI_80211_CONNECT_NETWORK_DATA)); + ConnectToken = ConfigToken->Token.ConnectNetworkToken; + ConnectToken->Data = AllocateZeroPool (sizeof (EFI_80211_CONNECT_NETWORK_DATA)); if (ConnectToken->Data == NULL) { goto Exit; } @@ -982,7 +1083,8 @@ WifiMgrConnectToNetwork ( if (ConnectToken->Data->Network == NULL) { goto Exit; } - CopyMem(ConnectToken->Data->Network, &Profile->Network, sizeof (EFI_80211_NETWORK)); + + CopyMem (ConnectToken->Data->Network, &Profile->Network, sizeof (EFI_80211_NETWORK)); // // Add event handle and start to connect @@ -998,12 +1100,12 @@ WifiMgrConnectToNetwork ( goto Exit; } - Nic->ConnectState = WifiMgrConnectingToAp; + Nic->ConnectState = WifiMgrConnectingToAp; Nic->CurrentOperateNetwork = Profile; WifiMgrUpdateConnectMessage (Nic, FALSE, NULL); // - //Start Connecting ... + // Start Connecting ... // Status = Nic->Wmp->ConnectNetwork (Nic->Wmp, ConnectToken); @@ -1017,7 +1119,6 @@ WifiMgrConnectToNetwork ( Nic->ConnectState = WifiMgrConnectedToAp; WifiMgrUpdateConnectMessage (Nic, TRUE, NULL); } else { - Nic->ConnectState = WifiMgrDisconnected; Nic->CurrentOperateNetwork = NULL; @@ -1029,6 +1130,7 @@ WifiMgrConnectToNetwork ( } } } + goto Exit; } @@ -1037,6 +1139,7 @@ Exit: if (EFI_ERROR (Status)) { WifiMgrFreeToken (ConfigToken); } + gBS->RestoreTPL (OldTpl); DEBUG ((DEBUG_INFO, "[WiFi Connection Manager] WifiMgrConnectToNetwork: %r\n", Status)); @@ -1055,21 +1158,21 @@ Exit: VOID EFIAPI WifiMgrOnDisconnectFinished ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; + WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; ASSERT (Context != NULL); - ConfigToken = (WIFI_MGR_MAC_CONFIG_TOKEN*) Context; + ConfigToken = (WIFI_MGR_MAC_CONFIG_TOKEN *)Context; ASSERT (ConfigToken->Nic != NULL); ASSERT (ConfigToken->Type == TokenTypeDisconnectNetworkToken); ASSERT (ConfigToken->Token.DisconnectNetworkToken != NULL); if (ConfigToken->Token.DisconnectNetworkToken->Status != EFI_SUCCESS) { - ConfigToken->Nic->ConnectState = WifiMgrConnectedToAp; + ConfigToken->Nic->ConnectState = WifiMgrConnectedToAp; WifiMgrUpdateConnectMessage (ConfigToken->Nic, FALSE, NULL); ConfigToken->Nic->OneTimeDisconnectRequest = FALSE; goto Exit; @@ -1083,11 +1186,11 @@ WifiMgrOnDisconnectFinished ( // // Disconnected network may not be in network list now, trigger a scan again! // - ConfigToken->Nic->OneTimeScanRequest = TRUE; + ConfigToken->Nic->OneTimeScanRequest = TRUE; - Exit: - WifiMgrFreeToken(ConfigToken); - return; +Exit: + WifiMgrFreeToken (ConfigToken); + return; } /** @@ -1104,13 +1207,13 @@ WifiMgrOnDisconnectFinished ( **/ EFI_STATUS WifiMgrDisconnectToNetwork ( - IN WIFI_MGR_DEVICE_DATA *Nic + IN WIFI_MGR_DEVICE_DATA *Nic ) { - EFI_STATUS Status; - EFI_TPL OldTpl; - WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; - EFI_80211_DISCONNECT_NETWORK_TOKEN *DisconnectToken; + EFI_STATUS Status; + EFI_TPL OldTpl; + WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken; + EFI_80211_DISCONNECT_NETWORK_TOKEN *DisconnectToken; if (Nic == NULL) { return EFI_INVALID_PARAMETER; @@ -1124,11 +1227,11 @@ WifiMgrDisconnectToNetwork ( return EFI_OUT_OF_RESOURCES; } - ConfigToken->Type = TokenTypeDisconnectNetworkToken; - ConfigToken->Nic = Nic; + ConfigToken->Type = TokenTypeDisconnectNetworkToken; + ConfigToken->Nic = Nic; ConfigToken->Token.DisconnectNetworkToken = AllocateZeroPool (sizeof (EFI_80211_DISCONNECT_NETWORK_TOKEN)); if (ConfigToken->Token.DisconnectNetworkToken == NULL) { - WifiMgrFreeToken(ConfigToken); + WifiMgrFreeToken (ConfigToken); gBS->RestoreTPL (OldTpl); return EFI_OUT_OF_RESOURCES; } @@ -1143,7 +1246,7 @@ WifiMgrDisconnectToNetwork ( &DisconnectToken->Event ); if (EFI_ERROR (Status)) { - WifiMgrFreeToken(ConfigToken); + WifiMgrFreeToken (ConfigToken); gBS->RestoreTPL (OldTpl); return Status; } @@ -1154,30 +1257,29 @@ WifiMgrDisconnectToNetwork ( Status = Nic->Wmp->DisconnectNetwork (Nic->Wmp, DisconnectToken); if (EFI_ERROR (Status)) { if (Status == EFI_NOT_FOUND) { - Nic->ConnectState = WifiMgrDisconnected; Nic->CurrentOperateNetwork = NULL; // // This network is not in network list now, trigger a scan again! // - Nic->OneTimeScanRequest = TRUE; + Nic->OneTimeScanRequest = TRUE; // // State has been changed from Connected to Disconnected // WifiMgrUpdateConnectMessage (ConfigToken->Nic, TRUE, NULL); - Status = EFI_SUCCESS; + Status = EFI_SUCCESS; } else { if (Nic->OneTimeDisconnectRequest) { - WifiMgrUpdateConnectMessage (ConfigToken->Nic, FALSE, L"Disconnect Failed: Unexpected Error!"); } - Nic->ConnectState = WifiMgrConnectedToAp; + Nic->ConnectState = WifiMgrConnectedToAp; WifiMgrUpdateConnectMessage (ConfigToken->Nic, FALSE, NULL); } - WifiMgrFreeToken(ConfigToken); + + WifiMgrFreeToken (ConfigToken); } gBS->RestoreTPL (OldTpl); @@ -1195,20 +1297,20 @@ WifiMgrDisconnectToNetwork ( VOID EFIAPI WifiMgrOnTimerTick ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { - WIFI_MGR_DEVICE_DATA *Nic; - EFI_STATUS Status; - EFI_ADAPTER_INFO_MEDIA_STATE LinkState; - WIFI_MGR_NETWORK_PROFILE *Profile; + WIFI_MGR_DEVICE_DATA *Nic; + EFI_STATUS Status; + EFI_ADAPTER_INFO_MEDIA_STATE LinkState; + WIFI_MGR_NETWORK_PROFILE *Profile; if (Context == NULL) { return; } - Nic = (WIFI_MGR_DEVICE_DATA*) Context; + Nic = (WIFI_MGR_DEVICE_DATA *)Context; NET_CHECK_SIGNATURE (Nic, WIFI_MGR_DEVICE_DATA_SIGNATURE); Status = WifiMgrGetLinkState (Nic, &LinkState); @@ -1218,68 +1320,68 @@ WifiMgrOnTimerTick ( } if (Nic->LastLinkState.MediaState != LinkState.MediaState) { - if (Nic->LastLinkState.MediaState == EFI_SUCCESS && LinkState.MediaState == EFI_NO_MEDIA) { + if ((Nic->LastLinkState.MediaState == EFI_SUCCESS) && (LinkState.MediaState == EFI_NO_MEDIA)) { Nic->HasDisconnectPendingNetwork = TRUE; } + Nic->LastLinkState.MediaState = LinkState.MediaState; } - Nic->ScanTickTime ++; - if ((Nic->ScanTickTime > WIFI_SCAN_FREQUENCY || Nic->OneTimeScanRequest) && - Nic->ScanState == WifiMgrScanFinished) { - + Nic->ScanTickTime++; + if (((Nic->ScanTickTime > WIFI_SCAN_FREQUENCY) || Nic->OneTimeScanRequest) && + (Nic->ScanState == WifiMgrScanFinished)) + { Nic->OneTimeScanRequest = FALSE; - Nic->ScanTickTime = 0; + Nic->ScanTickTime = 0; DEBUG ((DEBUG_INFO, "[WiFi Connection Manager] Scan is triggered.\n")); WifiMgrStartScan (Nic); } - if (Nic->AvailableCount > 0 && Nic->ScanState == WifiMgrScanFinished) { - + if ((Nic->AvailableCount > 0) && (Nic->ScanState == WifiMgrScanFinished)) { switch (Nic->ConnectState) { - case WifiMgrDisconnected: + case WifiMgrDisconnected: - if (Nic->HasDisconnectPendingNetwork) { - Nic->HasDisconnectPendingNetwork = FALSE; - } - - if (Nic->ConnectPendingNetwork != NULL) { + if (Nic->HasDisconnectPendingNetwork) { + Nic->HasDisconnectPendingNetwork = FALSE; + } - Profile = Nic->ConnectPendingNetwork; - Status = WifiMgrConnectToNetwork(Nic, Profile); - Nic->ConnectPendingNetwork = NULL; - if (EFI_ERROR (Status)) { - // - // Some error happened, don't wait for a return connect token! - // - Nic->OneTimeConnectRequest = FALSE; + if (Nic->ConnectPendingNetwork != NULL) { + Profile = Nic->ConnectPendingNetwork; + Status = WifiMgrConnectToNetwork (Nic, Profile); + Nic->ConnectPendingNetwork = NULL; + if (EFI_ERROR (Status)) { + // + // Some error happened, don't wait for a return connect token! + // + Nic->OneTimeConnectRequest = FALSE; + } } - } - break; - case WifiMgrConnectingToAp: - break; + break; - case WifiMgrDisconnectingToAp: - break; + case WifiMgrConnectingToAp: + break; - case WifiMgrConnectedToAp: + case WifiMgrDisconnectingToAp: + break; - if (Nic->ConnectPendingNetwork != NULL || Nic->HasDisconnectPendingNetwork) { + case WifiMgrConnectedToAp: - Status = WifiMgrDisconnectToNetwork(Nic); - if (EFI_ERROR (Status)) { - // - // Some error happened, don't wait for a return disconnect token! - // - Nic->OneTimeDisconnectRequest = FALSE; + if ((Nic->ConnectPendingNetwork != NULL) || Nic->HasDisconnectPendingNetwork) { + Status = WifiMgrDisconnectToNetwork (Nic); + if (EFI_ERROR (Status)) { + // + // Some error happened, don't wait for a return disconnect token! + // + Nic->OneTimeDisconnectRequest = FALSE; + } } - } - break; - default: - break; + break; + + default: + break; } } } diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.h b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.h index d6b7ded8e6..b29150f7e9 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.h +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrImpl.h @@ -24,7 +24,7 @@ **/ EFI_STATUS WifiMgrStartScan ( - IN WIFI_MGR_DEVICE_DATA *Nic + IN WIFI_MGR_DEVICE_DATA *Nic ); /** @@ -61,8 +61,8 @@ WifiMgrGetLinkState ( **/ EFI_STATUS WifiMgrConnectToNetwork ( - IN WIFI_MGR_DEVICE_DATA *Nic, - IN WIFI_MGR_NETWORK_PROFILE *Profile + IN WIFI_MGR_DEVICE_DATA *Nic, + IN WIFI_MGR_NETWORK_PROFILE *Profile ); /** @@ -78,7 +78,7 @@ WifiMgrConnectToNetwork ( **/ EFI_STATUS WifiMgrDisconnectToNetwork ( - IN WIFI_MGR_DEVICE_DATA *Nic + IN WIFI_MGR_DEVICE_DATA *Nic ); /** @@ -92,8 +92,8 @@ WifiMgrDisconnectToNetwork ( VOID EFIAPI WifiMgrOnTimerTick ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); #endif diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.c b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.c index 9295b8b33b..4e7c241718 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.c +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.c @@ -19,8 +19,8 @@ VOID EFIAPI WifiMgrInternalEmptyFunction ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ) { return; @@ -41,7 +41,7 @@ WifiMgrMacAddrToStr ( OUT CHAR16 *Str ) { - if (Mac == NULL || Str == NULL) { + if ((Mac == NULL) || (Str == NULL)) { return; } @@ -49,8 +49,12 @@ WifiMgrMacAddrToStr ( Str, StrSize, L"%02X:%02X:%02X:%02X:%02X:%02X", - Mac->Addr[0], Mac->Addr[1], Mac->Addr[2], - Mac->Addr[3], Mac->Addr[4], Mac->Addr[5] + Mac->Addr[0], + Mac->Addr[1], + Mac->Addr[2], + Mac->Addr[3], + Mac->Addr[4], + Mac->Addr[5] ); } @@ -68,15 +72,14 @@ WifiMgrMacAddrToStr ( **/ EFI_STATUS WifiMgrReadFileToBuffer ( - IN WIFI_MGR_FILE_CONTEXT *FileContext, - OUT VOID **DataAddr, - OUT UINTN *DataSize + IN WIFI_MGR_FILE_CONTEXT *FileContext, + OUT VOID **DataAddr, + OUT UINTN *DataSize ) { - EFI_STATUS Status; - - if (FileContext != NULL && FileContext->FHandle != NULL) { + EFI_STATUS Status; + if ((FileContext != NULL) && (FileContext->FHandle != NULL)) { Status = ReadFileContent ( FileContext->FHandle, DataAddr, @@ -87,6 +90,7 @@ WifiMgrReadFileToBuffer ( if (FileContext->FHandle != NULL) { FileContext->FHandle->Close (FileContext->FHandle); } + FileContext->FHandle = NULL; return Status; } @@ -105,20 +109,24 @@ WifiMgrReadFileToBuffer ( **/ WIFI_MGR_DEVICE_DATA * WifiMgrGetNicByIndex ( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN UINT32 NicIndex + IN WIFI_MGR_PRIVATE_DATA *Private, + IN UINT32 NicIndex ) { - LIST_ENTRY *Entry; - WIFI_MGR_DEVICE_DATA *Nic; + LIST_ENTRY *Entry; + WIFI_MGR_DEVICE_DATA *Nic; if (Private == NULL) { return NULL; } NET_LIST_FOR_EACH (Entry, &Private->NicList) { - Nic = NET_LIST_USER_STRUCT_S (Entry, WIFI_MGR_DEVICE_DATA, - Link, WIFI_MGR_DEVICE_DATA_SIGNATURE); + Nic = NET_LIST_USER_STRUCT_S ( + Entry, + WIFI_MGR_DEVICE_DATA, + Link, + WIFI_MGR_DEVICE_DATA_SIGNATURE + ); if (Nic->NicIndex == NicIndex) { return Nic; } @@ -139,22 +147,26 @@ WifiMgrGetNicByIndex ( **/ WIFI_MGR_NETWORK_PROFILE * WifiMgrGetProfileByUnicodeSSId ( - IN CHAR16 *SSId, - IN UINT8 SecurityType, - IN LIST_ENTRY *ProfileList + IN CHAR16 *SSId, + IN UINT8 SecurityType, + IN LIST_ENTRY *ProfileList ) { - LIST_ENTRY *Entry; - WIFI_MGR_NETWORK_PROFILE *Profile; + LIST_ENTRY *Entry; + WIFI_MGR_NETWORK_PROFILE *Profile; - if (SSId == NULL || ProfileList == NULL) { + if ((SSId == NULL) || (ProfileList == NULL)) { return NULL; } NET_LIST_FOR_EACH (Entry, ProfileList) { - Profile = NET_LIST_USER_STRUCT_S (Entry, WIFI_MGR_NETWORK_PROFILE, - Link, WIFI_MGR_PROFILE_SIGNATURE); - if (StrCmp (SSId, Profile->SSId) == 0 && SecurityType == Profile->SecurityType) { + Profile = NET_LIST_USER_STRUCT_S ( + Entry, + WIFI_MGR_NETWORK_PROFILE, + Link, + WIFI_MGR_PROFILE_SIGNATURE + ); + if ((StrCmp (SSId, Profile->SSId) == 0) && (SecurityType == Profile->SecurityType)) { return Profile; } } @@ -174,16 +186,17 @@ WifiMgrGetProfileByUnicodeSSId ( **/ WIFI_MGR_NETWORK_PROFILE * WifiMgrGetProfileByAsciiSSId ( - IN CHAR8 *SSId, - IN UINT8 SecurityType, - IN LIST_ENTRY *ProfileList + IN CHAR8 *SSId, + IN UINT8 SecurityType, + IN LIST_ENTRY *ProfileList ) { - CHAR16 SSIdUniCode[SSID_STORAGE_SIZE]; + CHAR16 SSIdUniCode[SSID_STORAGE_SIZE]; if (SSId == NULL) { return NULL; } + if (AsciiStrToUnicodeStrS (SSId, SSIdUniCode, SSID_STORAGE_SIZE) != RETURN_SUCCESS) { return NULL; } @@ -202,19 +215,24 @@ WifiMgrGetProfileByAsciiSSId ( **/ WIFI_MGR_NETWORK_PROFILE * WifiMgrGetProfileByProfileIndex ( - IN UINT32 ProfileIndex, - IN LIST_ENTRY *ProfileList + IN UINT32 ProfileIndex, + IN LIST_ENTRY *ProfileList ) { - WIFI_MGR_NETWORK_PROFILE *Profile; - LIST_ENTRY *Entry; + WIFI_MGR_NETWORK_PROFILE *Profile; + LIST_ENTRY *Entry; if (ProfileList == NULL) { return NULL; } + NET_LIST_FOR_EACH (Entry, ProfileList) { - Profile = NET_LIST_USER_STRUCT_S (Entry, WIFI_MGR_NETWORK_PROFILE, - Link, WIFI_MGR_PROFILE_SIGNATURE); + Profile = NET_LIST_USER_STRUCT_S ( + Entry, + WIFI_MGR_NETWORK_PROFILE, + Link, + WIFI_MGR_PROFILE_SIGNATURE + ); if (Profile->ProfileIndex == ProfileIndex) { return Profile; } @@ -234,19 +252,20 @@ WifiMgrGetProfileByProfileIndex ( **/ BOOLEAN WifiMgrSupportAKMSuite ( - IN UINT16 SupportedAKMSuiteCount, - IN UINT32 *SupportedAKMSuiteList, - IN UINT32 *AKMSuite + IN UINT16 SupportedAKMSuiteCount, + IN UINT32 *SupportedAKMSuiteList, + IN UINT32 *AKMSuite ) { - UINT16 Index; + UINT16 Index; - if (AKMSuite == NULL || SupportedAKMSuiteList == NULL || - SupportedAKMSuiteCount == 0) { + if ((AKMSuite == NULL) || (SupportedAKMSuiteList == NULL) || + (SupportedAKMSuiteCount == 0)) + { return FALSE; } - for (Index = 0; Index < SupportedAKMSuiteCount; Index ++) { + for (Index = 0; Index < SupportedAKMSuiteCount; Index++) { if (SupportedAKMSuiteList[Index] == *AKMSuite) { return TRUE; } @@ -267,19 +286,20 @@ WifiMgrSupportAKMSuite ( **/ BOOLEAN WifiMgrSupportCipherSuite ( - IN UINT16 SupportedCipherSuiteCount, - IN UINT32 *SupportedCipherSuiteList, - IN UINT32 *CipherSuite + IN UINT16 SupportedCipherSuiteCount, + IN UINT32 *SupportedCipherSuiteList, + IN UINT32 *CipherSuite ) { UINT16 Index; - if (CipherSuite == NULL || SupportedCipherSuiteCount == 0 || - SupportedCipherSuiteList == NULL) { + if ((CipherSuite == NULL) || (SupportedCipherSuiteCount == 0) || + (SupportedCipherSuiteList == NULL)) + { return FALSE; } - for (Index = 0; Index < SupportedCipherSuiteCount; Index ++) { + for (Index = 0; Index < SupportedCipherSuiteCount; Index++) { if (SupportedCipherSuiteList[Index] == *CipherSuite) { return TRUE; } @@ -309,23 +329,23 @@ WifiMgrSupportCipherSuite ( **/ EFI_STATUS WifiMgrCheckRSN ( - IN EFI_80211_AKM_SUITE_SELECTOR *AKMList, - IN EFI_80211_CIPHER_SUITE_SELECTOR *CipherList, - IN WIFI_MGR_DEVICE_DATA *Nic, - OUT UINT8 *SecurityType, - OUT BOOLEAN *AKMSuiteSupported, - OUT BOOLEAN *CipherSuiteSupported + IN EFI_80211_AKM_SUITE_SELECTOR *AKMList, + IN EFI_80211_CIPHER_SUITE_SELECTOR *CipherList, + IN WIFI_MGR_DEVICE_DATA *Nic, + OUT UINT8 *SecurityType, + OUT BOOLEAN *AKMSuiteSupported, + OUT BOOLEAN *CipherSuiteSupported ) { - EFI_80211_AKM_SUITE_SELECTOR *SupportedAKMSuites; - EFI_80211_CIPHER_SUITE_SELECTOR *SupportedSwCipherSuites; - EFI_80211_CIPHER_SUITE_SELECTOR *SupportedHwCipherSuites; - EFI_80211_SUITE_SELECTOR *AKMSuite; - EFI_80211_SUITE_SELECTOR *CipherSuite; - UINT16 AKMIndex; - UINT16 CipherIndex; - - if (Nic == NULL || AKMList == NULL || CipherList == NULL|| SecurityType == NULL) { + EFI_80211_AKM_SUITE_SELECTOR *SupportedAKMSuites; + EFI_80211_CIPHER_SUITE_SELECTOR *SupportedSwCipherSuites; + EFI_80211_CIPHER_SUITE_SELECTOR *SupportedHwCipherSuites; + EFI_80211_SUITE_SELECTOR *AKMSuite; + EFI_80211_SUITE_SELECTOR *CipherSuite; + UINT16 AKMIndex; + UINT16 CipherIndex; + + if ((Nic == NULL) || (AKMList == NULL) || (CipherList == NULL) || (SecurityType == NULL)) { return EFI_INVALID_PARAMETER; } @@ -334,7 +354,7 @@ WifiMgrCheckRSN ( SupportedHwCipherSuites = Nic->SupportedSuites.SupportedHwCipherSuites; *SecurityType = SECURITY_TYPE_UNKNOWN; - if (AKMSuiteSupported != NULL && CipherSuiteSupported != NULL) { + if ((AKMSuiteSupported != NULL) && (CipherSuiteSupported != NULL)) { *AKMSuiteSupported = FALSE; *CipherSuiteSupported = FALSE; } @@ -342,7 +362,7 @@ WifiMgrCheckRSN ( if (AKMList->AKMSuiteCount == 0) { if (CipherList->CipherSuiteCount == 0) { *SecurityType = SECURITY_TYPE_NONE; - if (AKMSuiteSupported != NULL && CipherSuiteSupported != NULL) { + if ((AKMSuiteSupported != NULL) && (CipherSuiteSupported != NULL)) { *AKMSuiteSupported = TRUE; *CipherSuiteSupported = TRUE; } @@ -351,48 +371,54 @@ WifiMgrCheckRSN ( return EFI_SUCCESS; } - for (AKMIndex = 0; AKMIndex < AKMList->AKMSuiteCount; AKMIndex ++) { - + for (AKMIndex = 0; AKMIndex < AKMList->AKMSuiteCount; AKMIndex++) { AKMSuite = AKMList->AKMSuiteList + AKMIndex; - if (WifiMgrSupportAKMSuite(SupportedAKMSuites->AKMSuiteCount, - (UINT32*) SupportedAKMSuites->AKMSuiteList, (UINT32*) AKMSuite)) { - - if (AKMSuiteSupported != NULL && CipherSuiteSupported != NULL) { + if (WifiMgrSupportAKMSuite ( + SupportedAKMSuites->AKMSuiteCount, + (UINT32 *)SupportedAKMSuites->AKMSuiteList, + (UINT32 *)AKMSuite + )) + { + if ((AKMSuiteSupported != NULL) && (CipherSuiteSupported != NULL)) { *AKMSuiteSupported = TRUE; } - for (CipherIndex = 0; CipherIndex < CipherList->CipherSuiteCount; CipherIndex ++) { + for (CipherIndex = 0; CipherIndex < CipherList->CipherSuiteCount; CipherIndex++) { CipherSuite = CipherList->CipherSuiteList + CipherIndex; if (SupportedSwCipherSuites != NULL) { - - if (WifiMgrSupportCipherSuite(SupportedSwCipherSuites->CipherSuiteCount, - (UINT32*) SupportedSwCipherSuites->CipherSuiteList, (UINT32*) CipherSuite)) { - - *SecurityType = WifiMgrGetSecurityType ((UINT32*) AKMSuite, (UINT32*) CipherSuite); + if (WifiMgrSupportCipherSuite ( + SupportedSwCipherSuites->CipherSuiteCount, + (UINT32 *)SupportedSwCipherSuites->CipherSuiteList, + (UINT32 *)CipherSuite + )) + { + *SecurityType = WifiMgrGetSecurityType ((UINT32 *)AKMSuite, (UINT32 *)CipherSuite); if (*SecurityType != SECURITY_TYPE_UNKNOWN) { - - if (AKMSuiteSupported != NULL && CipherSuiteSupported != NULL) { + if ((AKMSuiteSupported != NULL) && (CipherSuiteSupported != NULL)) { *CipherSuiteSupported = TRUE; } + return EFI_SUCCESS; } } } if (SupportedHwCipherSuites != NULL) { - - if (WifiMgrSupportCipherSuite(SupportedHwCipherSuites->CipherSuiteCount, - (UINT32*) SupportedHwCipherSuites->CipherSuiteList, (UINT32*) CipherSuite)) { - - *SecurityType = WifiMgrGetSecurityType ((UINT32*) AKMSuite, (UINT32*) CipherSuite); + if (WifiMgrSupportCipherSuite ( + SupportedHwCipherSuites->CipherSuiteCount, + (UINT32 *)SupportedHwCipherSuites->CipherSuiteList, + (UINT32 *)CipherSuite + )) + { + *SecurityType = WifiMgrGetSecurityType ((UINT32 *)AKMSuite, (UINT32 *)CipherSuite); if (*SecurityType != SECURITY_TYPE_UNKNOWN) { - - if (AKMSuiteSupported != NULL && CipherSuiteSupported != NULL) { + if ((AKMSuiteSupported != NULL) && (CipherSuiteSupported != NULL)) { *CipherSuiteSupported = TRUE; } + return EFI_SUCCESS; } } @@ -401,8 +427,10 @@ WifiMgrCheckRSN ( } } - *SecurityType = WifiMgrGetSecurityType ((UINT32*) AKMList->AKMSuiteList, - (UINT32*) CipherList->CipherSuiteList); + *SecurityType = WifiMgrGetSecurityType ( + (UINT32 *)AKMList->AKMSuiteList, + (UINT32 *)CipherList->CipherSuiteList + ); return EFI_SUCCESS; } @@ -418,60 +446,56 @@ WifiMgrCheckRSN ( **/ UINT8 WifiMgrGetSecurityType ( - IN UINT32 *AKMSuite, - IN UINT32 *CipherSuite + IN UINT32 *AKMSuite, + IN UINT32 *CipherSuite ) { if (CipherSuite == NULL) { - if (AKMSuite == NULL) { return SECURITY_TYPE_NONE; } else { return SECURITY_TYPE_UNKNOWN; } } else if (*CipherSuite == IEEE_80211_PAIRWISE_CIPHER_SUITE_USE_GROUP) { - if (AKMSuite == NULL) { return SECURITY_TYPE_NONE; } else { return SECURITY_TYPE_UNKNOWN; } - } else if (*CipherSuite == IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP40 || - *CipherSuite == IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP104) { - + } else if ((*CipherSuite == IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP40) || + (*CipherSuite == IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP104)) + { return SECURITY_TYPE_WEP; } else if (*CipherSuite == IEEE_80211_PAIRWISE_CIPHER_SUITE_CCMP) { - if (AKMSuite == NULL) { return SECURITY_TYPE_UNKNOWN; } - if (*AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA || - *AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256) { - + if ((*AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA) || + (*AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256)) + { return SECURITY_TYPE_WPA2_ENTERPRISE; - } else if (*AKMSuite == IEEE_80211_AKM_SUITE_PSK || - *AKMSuite == IEEE_80211_AKM_SUITE_PSK_SHA256){ - + } else if ((*AKMSuite == IEEE_80211_AKM_SUITE_PSK) || + (*AKMSuite == IEEE_80211_AKM_SUITE_PSK_SHA256)) + { return SECURITY_TYPE_WPA2_PERSONAL; - }else { + } else { return SECURITY_TYPE_UNKNOWN; } } else if (*CipherSuite == IEEE_80211_PAIRWISE_CIPHER_SUITE_TKIP) { - if (AKMSuite == NULL) { return SECURITY_TYPE_UNKNOWN; } - if (*AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA || - *AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256) { - + if ((*AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA) || + (*AKMSuite == IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256)) + { return SECURITY_TYPE_WPA_ENTERPRISE; - } else if (*AKMSuite == IEEE_80211_AKM_SUITE_PSK || - *AKMSuite == IEEE_80211_AKM_SUITE_PSK_SHA256){ - + } else if ((*AKMSuite == IEEE_80211_AKM_SUITE_PSK) || + (*AKMSuite == IEEE_80211_AKM_SUITE_PSK_SHA256)) + { return SECURITY_TYPE_WPA_PERSONAL; - }else { + } else { return SECURITY_TYPE_UNKNOWN; } } else { @@ -490,36 +514,40 @@ WifiMgrGetSecurityType ( **/ EFI_STATUS WifiMgrGetSupportedSuites ( - IN WIFI_MGR_DEVICE_DATA *Nic + IN WIFI_MGR_DEVICE_DATA *Nic ) { - EFI_STATUS Status; - EFI_SUPPLICANT_PROTOCOL *Supplicant; - EFI_80211_AKM_SUITE_SELECTOR *SupportedAKMSuites; - EFI_80211_CIPHER_SUITE_SELECTOR *SupportedSwCipherSuites; - EFI_80211_CIPHER_SUITE_SELECTOR *SupportedHwCipherSuites; - UINTN DataSize; + EFI_STATUS Status; + EFI_SUPPLICANT_PROTOCOL *Supplicant; + EFI_80211_AKM_SUITE_SELECTOR *SupportedAKMSuites; + EFI_80211_CIPHER_SUITE_SELECTOR *SupportedSwCipherSuites; + EFI_80211_CIPHER_SUITE_SELECTOR *SupportedHwCipherSuites; + UINTN DataSize; SupportedAKMSuites = NULL; SupportedSwCipherSuites = NULL; SupportedHwCipherSuites = NULL; - if (Nic == NULL || Nic->Supplicant == NULL) { + if ((Nic == NULL) || (Nic->Supplicant == NULL)) { return EFI_INVALID_PARAMETER; } Supplicant = Nic->Supplicant; - DataSize = 0; - Status = Supplicant->GetData (Supplicant, EfiSupplicant80211SupportedAKMSuites, NULL, &DataSize); - if (Status == EFI_BUFFER_TOO_SMALL && DataSize > 0) { - - SupportedAKMSuites = AllocateZeroPool(DataSize); + DataSize = 0; + Status = Supplicant->GetData (Supplicant, EfiSupplicant80211SupportedAKMSuites, NULL, &DataSize); + if ((Status == EFI_BUFFER_TOO_SMALL) && (DataSize > 0)) { + SupportedAKMSuites = AllocateZeroPool (DataSize); if (SupportedAKMSuites == NULL) { return EFI_OUT_OF_RESOURCES; } - Status = Supplicant->GetData (Supplicant, EfiSupplicant80211SupportedAKMSuites, - (UINT8 *) SupportedAKMSuites, &DataSize); + + Status = Supplicant->GetData ( + Supplicant, + EfiSupplicant80211SupportedAKMSuites, + (UINT8 *)SupportedAKMSuites, + &DataSize + ); if (!EFI_ERROR (Status)) { Nic->SupportedSuites.SupportedAKMSuites = SupportedAKMSuites; } else { @@ -529,17 +557,20 @@ WifiMgrGetSupportedSuites ( SupportedAKMSuites = NULL; } - DataSize = 0; - Status = Supplicant->GetData (Supplicant, EfiSupplicant80211SupportedSoftwareCipherSuites, NULL, &DataSize); - if (Status == EFI_BUFFER_TOO_SMALL && DataSize > 0) { - - - SupportedSwCipherSuites = AllocateZeroPool(DataSize); + DataSize = 0; + Status = Supplicant->GetData (Supplicant, EfiSupplicant80211SupportedSoftwareCipherSuites, NULL, &DataSize); + if ((Status == EFI_BUFFER_TOO_SMALL) && (DataSize > 0)) { + SupportedSwCipherSuites = AllocateZeroPool (DataSize); if (SupportedSwCipherSuites == NULL) { return EFI_OUT_OF_RESOURCES; } - Status = Supplicant->GetData (Supplicant, EfiSupplicant80211SupportedSoftwareCipherSuites, - (UINT8 *) SupportedSwCipherSuites, &DataSize); + + Status = Supplicant->GetData ( + Supplicant, + EfiSupplicant80211SupportedSoftwareCipherSuites, + (UINT8 *)SupportedSwCipherSuites, + &DataSize + ); if (!EFI_ERROR (Status)) { Nic->SupportedSuites.SupportedSwCipherSuites = SupportedSwCipherSuites; } else { @@ -549,16 +580,20 @@ WifiMgrGetSupportedSuites ( SupportedSwCipherSuites = NULL; } - DataSize = 0; - Status = Supplicant->GetData (Supplicant, EfiSupplicant80211SupportedHardwareCipherSuites, NULL, &DataSize); - if (Status == EFI_BUFFER_TOO_SMALL && DataSize > 0) { - - SupportedHwCipherSuites = AllocateZeroPool(DataSize); + DataSize = 0; + Status = Supplicant->GetData (Supplicant, EfiSupplicant80211SupportedHardwareCipherSuites, NULL, &DataSize); + if ((Status == EFI_BUFFER_TOO_SMALL) && (DataSize > 0)) { + SupportedHwCipherSuites = AllocateZeroPool (DataSize); if (SupportedHwCipherSuites == NULL) { return EFI_OUT_OF_RESOURCES; } - Status = Supplicant->GetData (Supplicant, EfiSupplicant80211SupportedHardwareCipherSuites, - (UINT8 *) SupportedHwCipherSuites, &DataSize); + + Status = Supplicant->GetData ( + Supplicant, + EfiSupplicant80211SupportedHardwareCipherSuites, + (UINT8 *)SupportedHwCipherSuites, + &DataSize + ); if (!EFI_ERROR (Status)) { Nic->SupportedSuites.SupportedHwCipherSuites = SupportedHwCipherSuites; } else { @@ -579,7 +614,7 @@ WifiMgrGetSupportedSuites ( **/ VOID WifiMgrCleanProfileSecrets ( - IN WIFI_MGR_NETWORK_PROFILE *Profile + IN WIFI_MGR_NETWORK_PROFILE *Profile ) { ZeroMem (Profile->Password, sizeof (CHAR16) * PASSWORD_STORAGE_SIZE); @@ -587,26 +622,26 @@ WifiMgrCleanProfileSecrets ( ZeroMem (Profile->PrivateKeyPassword, sizeof (CHAR16) * PASSWORD_STORAGE_SIZE); if (Profile->CACertData != NULL) { - ZeroMem (Profile->CACertData, Profile->CACertSize); FreePool (Profile->CACertData); } + Profile->CACertData = NULL; Profile->CACertSize = 0; if (Profile->ClientCertData != NULL) { - ZeroMem (Profile->ClientCertData, Profile->ClientCertSize); FreePool (Profile->ClientCertData); } + Profile->ClientCertData = NULL; Profile->ClientCertSize = 0; if (Profile->PrivateKeyData != NULL) { - ZeroMem (Profile->PrivateKeyData, Profile->PrivateKeyDataSize); FreePool (Profile->PrivateKeyData); } + Profile->PrivateKeyData = NULL; Profile->PrivateKeyDataSize = 0; } @@ -619,30 +654,33 @@ WifiMgrCleanProfileSecrets ( **/ VOID WifiMgrFreeProfileList ( - IN LIST_ENTRY *ProfileList + IN LIST_ENTRY *ProfileList ) { - WIFI_MGR_NETWORK_PROFILE *Profile; - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; + WIFI_MGR_NETWORK_PROFILE *Profile; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; if (ProfileList == NULL) { return; } NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, ProfileList) { - - Profile = NET_LIST_USER_STRUCT_S (Entry, WIFI_MGR_NETWORK_PROFILE, - Link, WIFI_MGR_PROFILE_SIGNATURE); + Profile = NET_LIST_USER_STRUCT_S ( + Entry, + WIFI_MGR_NETWORK_PROFILE, + Link, + WIFI_MGR_PROFILE_SIGNATURE + ); WifiMgrCleanProfileSecrets (Profile); if (Profile->Network.AKMSuite != NULL) { - FreePool(Profile->Network.AKMSuite); + FreePool (Profile->Network.AKMSuite); } if (Profile->Network.CipherSuite != NULL) { - FreePool(Profile->Network.CipherSuite); + FreePool (Profile->Network.CipherSuite); } FreePool (Profile); @@ -657,26 +695,28 @@ WifiMgrFreeProfileList ( **/ VOID WifiMgrFreeHiddenList ( - IN LIST_ENTRY *HiddenList + IN LIST_ENTRY *HiddenList ) { - WIFI_HIDDEN_NETWORK_DATA *HiddenNetwork; - LIST_ENTRY *Entry; - LIST_ENTRY *NextEntry; + WIFI_HIDDEN_NETWORK_DATA *HiddenNetwork; + LIST_ENTRY *Entry; + LIST_ENTRY *NextEntry; if (HiddenList == NULL) { return; } NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, HiddenList) { - - HiddenNetwork = NET_LIST_USER_STRUCT_S (Entry, WIFI_HIDDEN_NETWORK_DATA, - Link, WIFI_MGR_HIDDEN_NETWORK_SIGNATURE); + HiddenNetwork = NET_LIST_USER_STRUCT_S ( + Entry, + WIFI_HIDDEN_NETWORK_DATA, + Link, + WIFI_MGR_HIDDEN_NETWORK_SIGNATURE + ); FreePool (HiddenNetwork); } } - /** Free the resources of a config token. @@ -684,24 +724,22 @@ WifiMgrFreeHiddenList ( **/ VOID WifiMgrFreeToken ( - IN WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken + IN WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken ) { - EFI_80211_GET_NETWORKS_RESULT *Result; + EFI_80211_GET_NETWORKS_RESULT *Result; if (ConfigToken == NULL) { return; } switch (ConfigToken->Type) { - case TokenTypeGetNetworksToken: if (ConfigToken->Token.GetNetworksToken != NULL) { - gBS->CloseEvent (ConfigToken->Token.GetNetworksToken->Event); if (ConfigToken->Token.GetNetworksToken->Data != NULL) { - FreePool(ConfigToken->Token.GetNetworksToken->Data); + FreePool (ConfigToken->Token.GetNetworksToken->Data); } Result = ConfigToken->Token.GetNetworksToken->Result; @@ -709,7 +747,7 @@ WifiMgrFreeToken ( FreePool (Result); } - FreePool(ConfigToken->Token.GetNetworksToken); + FreePool (ConfigToken->Token.GetNetworksToken); } FreePool (ConfigToken); @@ -718,27 +756,27 @@ WifiMgrFreeToken ( case TokenTypeConnectNetworkToken: if (ConfigToken->Token.ConnectNetworkToken != NULL) { - gBS->CloseEvent (ConfigToken->Token.ConnectNetworkToken->Event); if (ConfigToken->Token.ConnectNetworkToken->Data != NULL) { - FreePool(ConfigToken->Token.ConnectNetworkToken->Data); + FreePool (ConfigToken->Token.ConnectNetworkToken->Data); } - FreePool(ConfigToken->Token.ConnectNetworkToken); + + FreePool (ConfigToken->Token.ConnectNetworkToken); } + FreePool (ConfigToken); break; case TokenTypeDisconnectNetworkToken: if (ConfigToken->Token.DisconnectNetworkToken != NULL) { - - FreePool(ConfigToken->Token.DisconnectNetworkToken); + FreePool (ConfigToken->Token.DisconnectNetworkToken); } FreePool (ConfigToken); break; - default : + default: break; } } diff --git a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.h b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.h index ef5b9e5da6..71ad007ef6 100644 --- a/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.h +++ b/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrMisc.h @@ -20,8 +20,8 @@ VOID EFIAPI WifiMgrInternalEmptyFunction ( - IN EFI_EVENT Event, - IN VOID *Context + IN EFI_EVENT Event, + IN VOID *Context ); /** @@ -34,9 +34,9 @@ WifiMgrInternalEmptyFunction ( **/ VOID WifiMgrMacAddrToStr ( - IN EFI_80211_MAC_ADDRESS *Mac, - IN UINT32 StrSize, - OUT CHAR16 *Str + IN EFI_80211_MAC_ADDRESS *Mac, + IN UINT32 StrSize, + OUT CHAR16 *Str ); /** @@ -53,12 +53,11 @@ WifiMgrMacAddrToStr ( **/ EFI_STATUS WifiMgrReadFileToBuffer ( - IN WIFI_MGR_FILE_CONTEXT *FileContext, - OUT VOID **PrivateKeyDataAddr, - OUT UINTN *PrivateKeyDataSize + IN WIFI_MGR_FILE_CONTEXT *FileContext, + OUT VOID **PrivateKeyDataAddr, + OUT UINTN *PrivateKeyDataSize ); - /** Get the Nic data by the NicIndex. @@ -70,8 +69,8 @@ WifiMgrReadFileToBuffer ( **/ WIFI_MGR_DEVICE_DATA * WifiMgrGetNicByIndex ( - IN WIFI_MGR_PRIVATE_DATA *Private, - IN UINT32 NicIndex + IN WIFI_MGR_PRIVATE_DATA *Private, + IN UINT32 NicIndex ); /** @@ -86,9 +85,9 @@ WifiMgrGetNicByIndex ( **/ WIFI_MGR_NETWORK_PROFILE * WifiMgrGetProfileByUnicodeSSId ( - IN CHAR16 *SSId, - IN UINT8 SecurityType, - IN LIST_ENTRY *ProfileList + IN CHAR16 *SSId, + IN UINT8 SecurityType, + IN LIST_ENTRY *ProfileList ); /** @@ -103,9 +102,9 @@ WifiMgrGetProfileByUnicodeSSId ( **/ WIFI_MGR_NETWORK_PROFILE * WifiMgrGetProfileByAsciiSSId ( - IN CHAR8 *SSId, - IN UINT8 SecurityType, - IN LIST_ENTRY *ProfileList + IN CHAR8 *SSId, + IN UINT8 SecurityType, + IN LIST_ENTRY *ProfileList ); /** @@ -119,8 +118,8 @@ WifiMgrGetProfileByAsciiSSId ( **/ WIFI_MGR_NETWORK_PROFILE * WifiMgrGetProfileByProfileIndex ( - IN UINT32 ProfileIndex, - IN LIST_ENTRY *ProfileList + IN UINT32 ProfileIndex, + IN LIST_ENTRY *ProfileList ); /** @@ -135,9 +134,9 @@ WifiMgrGetProfileByProfileIndex ( **/ BOOLEAN WifiMgrSupportAKMSuite ( - IN UINT16 SupportedAKMSuiteCount, - IN UINT32 *SupportedAKMSuiteList, - IN UINT32 *AKMSuite + IN UINT16 SupportedAKMSuiteCount, + IN UINT32 *SupportedAKMSuiteList, + IN UINT32 *AKMSuite ); /** @@ -152,9 +151,9 @@ WifiMgrSupportAKMSuite ( **/ BOOLEAN WifiMgrSupportCipherSuite ( - IN UINT16 SupportedCipherSuiteCount, - IN UINT32 *SupportedCipherSuiteList, - IN UINT32 *CipherSuite + IN UINT16 SupportedCipherSuiteCount, + IN UINT32 *SupportedCipherSuiteList, + IN UINT32 *CipherSuite ); /** @@ -178,12 +177,12 @@ WifiMgrSupportCipherSuite ( **/ EFI_STATUS WifiMgrCheckRSN ( - IN EFI_80211_AKM_SUITE_SELECTOR *AKMList, - IN EFI_80211_CIPHER_SUITE_SELECTOR *CipherList, - IN WIFI_MGR_DEVICE_DATA *Nic, - OUT UINT8 *SecurityType, - OUT BOOLEAN *AKMSuiteSupported, - OUT BOOLEAN *CipherSuiteSupported + IN EFI_80211_AKM_SUITE_SELECTOR *AKMList, + IN EFI_80211_CIPHER_SUITE_SELECTOR *CipherList, + IN WIFI_MGR_DEVICE_DATA *Nic, + OUT UINT8 *SecurityType, + OUT BOOLEAN *AKMSuiteSupported, + OUT BOOLEAN *CipherSuiteSupported ); /** @@ -197,8 +196,8 @@ WifiMgrCheckRSN ( **/ UINT8 WifiMgrGetSecurityType ( - IN UINT32 *AKMSuite, - IN UINT32 *CipherSuite + IN UINT32 *AKMSuite, + IN UINT32 *CipherSuite ); /** @@ -212,7 +211,7 @@ WifiMgrGetSecurityType ( **/ EFI_STATUS WifiMgrGetSupportedSuites ( - IN WIFI_MGR_DEVICE_DATA *Nic + IN WIFI_MGR_DEVICE_DATA *Nic ); /** @@ -223,7 +222,7 @@ WifiMgrGetSupportedSuites ( **/ VOID WifiMgrCleanProfileSecrets ( - IN WIFI_MGR_NETWORK_PROFILE *Profile + IN WIFI_MGR_NETWORK_PROFILE *Profile ); /** @@ -234,7 +233,7 @@ WifiMgrCleanProfileSecrets ( **/ VOID WifiMgrFreeProfileList ( - IN LIST_ENTRY *ProfileList + IN LIST_ENTRY *ProfileList ); /** @@ -245,7 +244,7 @@ WifiMgrFreeProfileList ( **/ VOID WifiMgrFreeHiddenList ( - IN LIST_ENTRY *HiddenList + IN LIST_ENTRY *HiddenList ); /** @@ -256,7 +255,7 @@ WifiMgrFreeHiddenList ( **/ VOID WifiMgrFreeToken ( - IN WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken + IN WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken ); #endif -- 2.39.2