\r
#include "PxeBcImpl.h"\r
\r
-\r
/**\r
Flush the previous configuration using the new station Ip address.\r
\r
**/\r
EFI_STATUS\r
PxeBcFlushStationIp (\r
- PXEBC_PRIVATE_DATA *Private,\r
- EFI_IP_ADDRESS *StationIp, OPTIONAL\r
- EFI_IP_ADDRESS *SubnetMask OPTIONAL\r
+ PXEBC_PRIVATE_DATA *Private,\r
+ EFI_IP_ADDRESS *StationIp OPTIONAL,\r
+ EFI_IP_ADDRESS *SubnetMask OPTIONAL\r
)\r
{\r
- EFI_PXE_BASE_CODE_MODE *Mode;\r
- EFI_STATUS Status;\r
- EFI_ARP_CONFIG_DATA ArpConfigData;\r
+ EFI_PXE_BASE_CODE_MODE *Mode;\r
+ EFI_STATUS Status;\r
+ EFI_ARP_CONFIG_DATA ArpConfigData;\r
\r
Mode = Private->PxeBc.Mode;\r
Status = EFI_SUCCESS;\r
ZeroMem (&ArpConfigData, sizeof (EFI_ARP_CONFIG_DATA));\r
\r
- if (Mode->UsingIpv6 && StationIp != NULL) {\r
+ if (Mode->UsingIpv6 && (StationIp != NULL)) {\r
//\r
// Overwrite Udp6CfgData/Ip6CfgData StationAddress.\r
//\r
// Reconfigure the ARP instance with station Ip address.\r
//\r
ArpConfigData.SwAddressType = 0x0800;\r
- ArpConfigData.SwAddressLength = (UINT8) sizeof (EFI_IPv4_ADDRESS);\r
- ArpConfigData.StationAddress = StationIp;\r
+ ArpConfigData.SwAddressLength = (UINT8)sizeof (EFI_IPv4_ADDRESS);\r
+ ArpConfigData.StationAddress = StationIp;\r
\r
Private->Arp->Configure (Private->Arp, NULL);\r
Private->Arp->Configure (Private->Arp, &ArpConfigData);\r
CopyMem (&Private->Ip4CfgData.SubnetMask, SubnetMask, sizeof (EFI_IPv4_ADDRESS));\r
}\r
\r
- if (StationIp != NULL && SubnetMask != NULL) {\r
+ if ((StationIp != NULL) && (SubnetMask != NULL)) {\r
//\r
// Updated the route table.\r
//\r
Mode->RouteTable[0].GwAddr.Addr[0] = 0;\r
}\r
\r
- if (StationIp != NULL || SubnetMask != NULL) {\r
+ if ((StationIp != NULL) || (SubnetMask != NULL)) {\r
//\r
// Reconfigure the Ip4 instance to capture background ICMP packets with new station Ip address.\r
//\r
return Status;\r
}\r
\r
-\r
/**\r
Notify the callback function when an event is triggered.\r
\r
VOID\r
EFIAPI\r
PxeBcCommonNotify (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- *((BOOLEAN *) Context) = TRUE;\r
+ *((BOOLEAN *)Context) = TRUE;\r
}\r
\r
-\r
/**\r
Do arp resolution from arp cache in PxeBcMode.\r
\r
**/\r
BOOLEAN\r
PxeBcCheckArpCache (\r
- IN EFI_PXE_BASE_CODE_MODE *Mode,\r
- IN EFI_IPv4_ADDRESS *Ip4Addr,\r
- OUT EFI_MAC_ADDRESS *MacAddress\r
+ IN EFI_PXE_BASE_CODE_MODE *Mode,\r
+ IN EFI_IPv4_ADDRESS *Ip4Addr,\r
+ OUT EFI_MAC_ADDRESS *MacAddress\r
)\r
{\r
- UINT32 Index;\r
+ UINT32 Index;\r
\r
ASSERT (!Mode->UsingIpv6);\r
\r
return FALSE;\r
}\r
\r
-\r
/**\r
Update the arp cache periodically.\r
\r
VOID\r
EFIAPI\r
PxeBcArpCacheUpdate (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
PXEBC_PRIVATE_DATA *Private;\r
UINT32 Index;\r
EFI_STATUS Status;\r
\r
- Private = (PXEBC_PRIVATE_DATA *) Context;\r
+ Private = (PXEBC_PRIVATE_DATA *)Context;\r
Mode = Private->PxeBc.Mode;\r
\r
ASSERT (!Mode->UsingIpv6);\r
);\r
CopyMem (\r
&Mode->ArpCache[Index].MacAddr,\r
- (UINT8 *) (ArpEntry + 1) + ArpEntry->SwAddressLength,\r
+ (UINT8 *)(ArpEntry + 1) + ArpEntry->SwAddressLength,\r
ArpEntry->HwAddressLength\r
);\r
- ArpEntry = (EFI_ARP_FIND_DATA *) ((UINT8 *) ArpEntry + EntryLength);\r
+ ArpEntry = (EFI_ARP_FIND_DATA *)((UINT8 *)ArpEntry + EntryLength);\r
}\r
}\r
\r
-\r
/**\r
Notify function to handle the received ICMP message in DPC.\r
\r
VOID\r
EFIAPI\r
PxeBcIcmpErrorDpcHandle (\r
- IN VOID *Context\r
+ IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_IP4_RECEIVE_DATA *RxData;\r
- EFI_IP4_PROTOCOL *Ip4;\r
- PXEBC_PRIVATE_DATA *Private;\r
- EFI_PXE_BASE_CODE_MODE *Mode;\r
- UINT8 Type;\r
- UINTN Index;\r
- UINT32 CopiedLen;\r
- UINT8 *IcmpError;\r
-\r
- Private = (PXEBC_PRIVATE_DATA *) Context;\r
+ EFI_STATUS Status;\r
+ EFI_IP4_RECEIVE_DATA *RxData;\r
+ EFI_IP4_PROTOCOL *Ip4;\r
+ PXEBC_PRIVATE_DATA *Private;\r
+ EFI_PXE_BASE_CODE_MODE *Mode;\r
+ UINT8 Type;\r
+ UINTN Index;\r
+ UINT32 CopiedLen;\r
+ UINT8 *IcmpError;\r
+\r
+ Private = (PXEBC_PRIVATE_DATA *)Context;\r
Mode = &Private->Mode;\r
Status = Private->IcmpToken.Status;\r
RxData = Private->IcmpToken.Packet.RxData;\r
goto ON_RECYCLE;\r
}\r
\r
- if (EFI_IP4 (RxData->Header->SourceAddress) != 0 &&\r
+ if ((EFI_IP4 (RxData->Header->SourceAddress) != 0) &&\r
(NTOHL (Mode->SubnetMask.Addr[0]) != 0) &&\r
- IP4_NET_EQUAL (NTOHL(Mode->StationIp.Addr[0]), EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0])) &&\r
- !NetIp4IsUnicast (EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0]))) {\r
+ IP4_NET_EQUAL (NTOHL (Mode->StationIp.Addr[0]), EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0])) &&\r
+ !NetIp4IsUnicast (EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0])))\r
+ {\r
//\r
// The source address of the received packet should be a valid unicast address.\r
//\r
//\r
ASSERT (RxData->Header->Protocol == EFI_IP_PROTO_ICMP);\r
\r
- Type = *((UINT8 *) RxData->FragmentTable[0].FragmentBuffer);\r
+ Type = *((UINT8 *)RxData->FragmentTable[0].FragmentBuffer);\r
\r
- if (Type != ICMP_DEST_UNREACHABLE &&\r
- Type != ICMP_SOURCE_QUENCH &&\r
- Type != ICMP_REDIRECT &&\r
- Type != ICMP_TIME_EXCEEDED &&\r
- Type != ICMP_PARAMETER_PROBLEM) {\r
+ if ((Type != ICMP_DEST_UNREACHABLE) &&\r
+ (Type != ICMP_SOURCE_QUENCH) &&\r
+ (Type != ICMP_REDIRECT) &&\r
+ (Type != ICMP_TIME_EXCEEDED) &&\r
+ (Type != ICMP_PARAMETER_PROBLEM))\r
+ {\r
//\r
// The type of the receveid ICMP message should be ICMP_ERROR_MESSAGE.\r
//\r
// Copy the right ICMP error message into mode data.\r
//\r
CopiedLen = 0;\r
- IcmpError = (UINT8 *) &Mode->IcmpError;\r
+ IcmpError = (UINT8 *)&Mode->IcmpError;\r
\r
for (Index = 0; Index < RxData->FragmentCount; Index++) {\r
CopiedLen += RxData->FragmentTable[Index].FragmentLength;\r
CopiedLen - sizeof (EFI_PXE_BASE_CODE_ICMP_ERROR)\r
);\r
}\r
+\r
IcmpError += CopiedLen;\r
}\r
\r
Ip4->Receive (Ip4, &Private->IcmpToken);\r
}\r
\r
-\r
/**\r
Callback function to update the latest ICMP6 error message.\r
\r
VOID\r
EFIAPI\r
PxeBcIcmpErrorUpdate (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
QueueDpc (TPL_CALLBACK, PxeBcIcmpErrorDpcHandle, Context);\r
}\r
\r
-\r
/**\r
Notify function to handle the received ICMP6 message in DPC.\r
\r
VOID\r
EFIAPI\r
PxeBcIcmp6ErrorDpcHandle (\r
- IN VOID *Context\r
+ IN VOID *Context\r
)\r
{\r
PXEBC_PRIVATE_DATA *Private;\r
UINT32 CopiedLen;\r
UINT8 *Icmp6Error;\r
\r
- Private = (PXEBC_PRIVATE_DATA *) Context;\r
+ Private = (PXEBC_PRIVATE_DATA *)Context;\r
Mode = &Private->Mode;\r
Status = Private->Icmp6Token.Status;\r
RxData = Private->Icmp6Token.Packet.RxData;\r
}\r
\r
if (!NetIp6IsUnspecifiedAddr (&Mode->StationIp.v6) &&\r
- !EFI_IP6_EQUAL (&RxData->Header->DestinationAddress, &Mode->StationIp.v6)) {\r
+ !EFI_IP6_EQUAL (&RxData->Header->DestinationAddress, &Mode->StationIp.v6))\r
+ {\r
//\r
// The destination address of the received packet should be equal to the host address.\r
//\r
//\r
ASSERT (RxData->Header->NextHeader == IP6_ICMP);\r
\r
- Type = *((UINT8 *) RxData->FragmentTable[0].FragmentBuffer);\r
+ Type = *((UINT8 *)RxData->FragmentTable[0].FragmentBuffer);\r
\r
- if (Type != ICMP_V6_DEST_UNREACHABLE &&\r
- Type != ICMP_V6_PACKET_TOO_BIG &&\r
- Type != ICMP_V6_TIME_EXCEEDED &&\r
- Type != ICMP_V6_PARAMETER_PROBLEM) {\r
+ if ((Type != ICMP_V6_DEST_UNREACHABLE) &&\r
+ (Type != ICMP_V6_PACKET_TOO_BIG) &&\r
+ (Type != ICMP_V6_TIME_EXCEEDED) &&\r
+ (Type != ICMP_V6_PARAMETER_PROBLEM))\r
+ {\r
//\r
// The type of the receveid packet should be an ICMP6 error message.\r
//\r
// Copy the right ICMP6 error message into mode data.\r
//\r
CopiedLen = 0;\r
- Icmp6Error = (UINT8 *) &Mode->IcmpError;\r
+ Icmp6Error = (UINT8 *)&Mode->IcmpError;\r
\r
for (Index = 0; Index < RxData->FragmentCount; Index++) {\r
CopiedLen += RxData->FragmentTable[Index].FragmentLength;\r
CopiedLen - sizeof (EFI_PXE_BASE_CODE_ICMP_ERROR)\r
);\r
}\r
+\r
Icmp6Error += CopiedLen;\r
}\r
\r
Ip6->Receive (Ip6, &Private->Icmp6Token);\r
}\r
\r
-\r
/**\r
Callback function to update the latest ICMP6 error message.\r
\r
VOID\r
EFIAPI\r
PxeBcIcmp6ErrorUpdate (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
QueueDpc (TPL_CALLBACK, PxeBcIcmp6ErrorDpcHandle, Context);\r
}\r
\r
-\r
/**\r
This function is to configure a UDPv4 instance for UdpWrite.\r
\r
}\r
}\r
\r
- if (!EFI_ERROR (Status) && *SrcPort == 0) {\r
+ if (!EFI_ERROR (Status) && (*SrcPort == 0)) {\r
Udp4->GetModeData (Udp4, &Udp4CfgData, NULL, NULL, NULL);\r
*SrcPort = Udp4CfgData.StationPort;\r
}\r
return Status;\r
}\r
\r
-\r
/**\r
This function is to configure a UDPv6 instance for UdpWrite.\r
\r
return Status;\r
}\r
\r
- if (!EFI_ERROR (Status) && *SrcPort == 0) {\r
+ if (!EFI_ERROR (Status) && (*SrcPort == 0)) {\r
Udp6->GetModeData (Udp6, &CfgData, NULL, NULL, NULL);\r
*SrcPort = CfgData.StationPort;\r
}\r
return Status;\r
}\r
\r
-\r
/**\r
This function is to configure a UDPv4 instance for UdpWrite.\r
\r
**/\r
EFI_STATUS\r
PxeBcUdp4Write (\r
- IN EFI_UDP4_PROTOCOL *Udp4,\r
- IN EFI_UDP4_SESSION_DATA *Session,\r
- IN EFI_EVENT TimeoutEvent,\r
- IN EFI_IPv4_ADDRESS *Gateway OPTIONAL,\r
- IN UINTN *HeaderSize OPTIONAL,\r
- IN VOID *HeaderPtr OPTIONAL,\r
- IN UINTN *BufferSize,\r
- IN VOID *BufferPtr\r
+ IN EFI_UDP4_PROTOCOL *Udp4,\r
+ IN EFI_UDP4_SESSION_DATA *Session,\r
+ IN EFI_EVENT TimeoutEvent,\r
+ IN EFI_IPv4_ADDRESS *Gateway OPTIONAL,\r
+ IN UINTN *HeaderSize OPTIONAL,\r
+ IN VOID *HeaderPtr OPTIONAL,\r
+ IN UINTN *BufferSize,\r
+ IN VOID *BufferPtr\r
)\r
{\r
- EFI_UDP4_COMPLETION_TOKEN Token;\r
- EFI_UDP4_TRANSMIT_DATA *TxData;\r
- UINT32 TxLength;\r
- UINT32 FragCount;\r
- UINT32 DataLength;\r
- BOOLEAN IsDone;\r
- EFI_STATUS Status;\r
+ EFI_UDP4_COMPLETION_TOKEN Token;\r
+ EFI_UDP4_TRANSMIT_DATA *TxData;\r
+ UINT32 TxLength;\r
+ UINT32 FragCount;\r
+ UINT32 DataLength;\r
+ BOOLEAN IsDone;\r
+ EFI_STATUS Status;\r
\r
//\r
// Arrange one fragment buffer for data, and another fragment buffer for header if has.\r
//\r
FragCount = (HeaderSize != NULL) ? 2 : 1;\r
TxLength = sizeof (EFI_UDP4_TRANSMIT_DATA) + (FragCount - 1) * sizeof (EFI_UDP4_FRAGMENT_DATA);\r
- TxData = (EFI_UDP4_TRANSMIT_DATA *) AllocateZeroPool (TxLength);\r
+ TxData = (EFI_UDP4_TRANSMIT_DATA *)AllocateZeroPool (TxLength);\r
if (TxData == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
TxData->FragmentCount = FragCount;\r
- TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32) *BufferSize;\r
+ TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32)*BufferSize;\r
TxData->FragmentTable[FragCount - 1].FragmentBuffer = BufferPtr;\r
- DataLength = (UINT32) *BufferSize;\r
+ DataLength = (UINT32)*BufferSize;\r
\r
if (HeaderSize != NULL) {\r
- TxData->FragmentTable[0].FragmentLength = (UINT32) *HeaderSize;\r
+ TxData->FragmentTable[0].FragmentLength = (UINT32)*HeaderSize;\r
TxData->FragmentTable[0].FragmentBuffer = HeaderPtr;\r
- DataLength += (UINT32) *HeaderSize;\r
+ DataLength += (UINT32)*HeaderSize;\r
}\r
\r
if (Gateway != NULL) {\r
- TxData->GatewayAddress = Gateway;\r
+ TxData->GatewayAddress = Gateway;\r
}\r
\r
- TxData->UdpSessionData = Session;\r
- TxData->DataLength = DataLength;\r
- Token.Packet.TxData = TxData;\r
- Token.Status = EFI_NOT_READY;\r
- IsDone = FALSE;\r
+ TxData->UdpSessionData = Session;\r
+ TxData->DataLength = DataLength;\r
+ Token.Packet.TxData = TxData;\r
+ Token.Status = EFI_NOT_READY;\r
+ IsDone = FALSE;\r
\r
Status = gBS->CreateEvent (\r
EVT_NOTIFY_SIGNAL,\r
//\r
while (!IsDone &&\r
Token.Status == EFI_NOT_READY &&\r
- EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) {\r
+ EFI_ERROR (gBS->CheckEvent (TimeoutEvent)))\r
+ {\r
Udp4->Poll (Udp4);\r
}\r
\r
if (Token.Event != NULL) {\r
gBS->CloseEvent (Token.Event);\r
}\r
+\r
FreePool (TxData);\r
\r
return Status;\r
}\r
\r
-\r
/**\r
This function is to configure a UDPv4 instance for UdpWrite.\r
\r
**/\r
EFI_STATUS\r
PxeBcUdp6Write (\r
- IN EFI_UDP6_PROTOCOL *Udp6,\r
- IN EFI_UDP6_SESSION_DATA *Session,\r
- IN EFI_EVENT TimeoutEvent,\r
- IN UINTN *HeaderSize OPTIONAL,\r
- IN VOID *HeaderPtr OPTIONAL,\r
- IN UINTN *BufferSize,\r
- IN VOID *BufferPtr\r
+ IN EFI_UDP6_PROTOCOL *Udp6,\r
+ IN EFI_UDP6_SESSION_DATA *Session,\r
+ IN EFI_EVENT TimeoutEvent,\r
+ IN UINTN *HeaderSize OPTIONAL,\r
+ IN VOID *HeaderPtr OPTIONAL,\r
+ IN UINTN *BufferSize,\r
+ IN VOID *BufferPtr\r
)\r
{\r
- EFI_UDP6_COMPLETION_TOKEN Token;\r
- EFI_UDP6_TRANSMIT_DATA *TxData;\r
- UINT32 TxLength;\r
- UINT32 FragCount;\r
- UINT32 DataLength;\r
- BOOLEAN IsDone;\r
- EFI_STATUS Status;\r
+ EFI_UDP6_COMPLETION_TOKEN Token;\r
+ EFI_UDP6_TRANSMIT_DATA *TxData;\r
+ UINT32 TxLength;\r
+ UINT32 FragCount;\r
+ UINT32 DataLength;\r
+ BOOLEAN IsDone;\r
+ EFI_STATUS Status;\r
\r
//\r
// Arrange one fragment buffer for data, and another fragment buffer for header if has.\r
//\r
FragCount = (HeaderSize != NULL) ? 2 : 1;\r
TxLength = sizeof (EFI_UDP6_TRANSMIT_DATA) + (FragCount - 1) * sizeof (EFI_UDP6_FRAGMENT_DATA);\r
- TxData = (EFI_UDP6_TRANSMIT_DATA *) AllocateZeroPool (TxLength);\r
+ TxData = (EFI_UDP6_TRANSMIT_DATA *)AllocateZeroPool (TxLength);\r
if (TxData == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
TxData->FragmentCount = FragCount;\r
- TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32) *BufferSize;\r
+ TxData->FragmentTable[FragCount - 1].FragmentLength = (UINT32)*BufferSize;\r
TxData->FragmentTable[FragCount - 1].FragmentBuffer = BufferPtr;\r
- DataLength = (UINT32) *BufferSize;\r
+ DataLength = (UINT32)*BufferSize;\r
\r
if (HeaderSize != NULL) {\r
- TxData->FragmentTable[0].FragmentLength = (UINT32) *HeaderSize;\r
+ TxData->FragmentTable[0].FragmentLength = (UINT32)*HeaderSize;\r
TxData->FragmentTable[0].FragmentBuffer = HeaderPtr;\r
- DataLength += (UINT32) *HeaderSize;\r
+ DataLength += (UINT32)*HeaderSize;\r
}\r
\r
- TxData->UdpSessionData = Session;\r
- TxData->DataLength = DataLength;\r
- Token.Packet.TxData = TxData;\r
- Token.Status = EFI_NOT_READY;\r
- IsDone = FALSE;\r
+ TxData->UdpSessionData = Session;\r
+ TxData->DataLength = DataLength;\r
+ Token.Packet.TxData = TxData;\r
+ Token.Status = EFI_NOT_READY;\r
+ IsDone = FALSE;\r
\r
Status = gBS->CreateEvent (\r
EVT_NOTIFY_SIGNAL,\r
//\r
while (!IsDone &&\r
Token.Status == EFI_NOT_READY &&\r
- EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) {\r
+ EFI_ERROR (gBS->CheckEvent (TimeoutEvent)))\r
+ {\r
Udp6->Poll (Udp6);\r
}\r
\r
if (Token.Event != NULL) {\r
gBS->CloseEvent (Token.Event);\r
}\r
+\r
FreePool (TxData);\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Check the received packet using the Ip filter.\r
\r
**/\r
BOOLEAN\r
PxeBcCheckByIpFilter (\r
- IN EFI_PXE_BASE_CODE_MODE *Mode,\r
- IN VOID *Session,\r
- IN UINT16 OpFlags\r
+ IN EFI_PXE_BASE_CODE_MODE *Mode,\r
+ IN VOID *Session,\r
+ IN UINT16 OpFlags\r
)\r
{\r
- EFI_IP_ADDRESS DestinationIp;\r
- UINTN Index;\r
+ EFI_IP_ADDRESS DestinationIp;\r
+ UINTN Index;\r
\r
if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER) == 0) {\r
return TRUE;\r
if (Mode->UsingIpv6) {\r
CopyMem (\r
&DestinationIp,\r
- &((EFI_UDP6_SESSION_DATA *) Session)->DestinationAddress,\r
+ &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress,\r
sizeof (EFI_IPv6_ADDRESS)\r
);\r
NTOHLLL (&DestinationIp.v6);\r
ZeroMem (&DestinationIp, sizeof (EFI_IP_ADDRESS));\r
CopyMem (\r
&DestinationIp,\r
- &((EFI_UDP4_SESSION_DATA *) Session)->DestinationAddress,\r
+ &((EFI_UDP4_SESSION_DATA *)Session)->DestinationAddress,\r
sizeof (EFI_IPv4_ADDRESS)\r
);\r
EFI_NTOHL (DestinationIp);\r
}\r
\r
- if ((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST) != 0 &&\r
+ if (((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST) != 0) &&\r
(IP4_IS_MULTICAST (DestinationIp.Addr[0]) ||\r
- IP6_IS_MULTICAST (&DestinationIp))) {\r
+ IP6_IS_MULTICAST (&DestinationIp)))\r
+ {\r
return TRUE;\r
}\r
\r
- if ((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST) != 0 &&\r
- IP4_IS_LOCAL_BROADCAST (DestinationIp.Addr[0])) {\r
+ if (((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST) != 0) &&\r
+ IP4_IS_LOCAL_BROADCAST (DestinationIp.Addr[0]))\r
+ {\r
ASSERT (!Mode->UsingIpv6);\r
return TRUE;\r
}\r
\r
- if ((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0 &&\r
+ if (((Mode->IpFilter.Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0) &&\r
(EFI_IP4_EQUAL (&Mode->StationIp.v4, &DestinationIp) ||\r
- EFI_IP6_EQUAL (&Mode->StationIp.v6, &DestinationIp))) {\r
+ EFI_IP6_EQUAL (&Mode->StationIp.v6, &DestinationIp)))\r
+ {\r
//\r
// Matched if the dest address is equal to the station address.\r
//\r
for (Index = 0; Index < Mode->IpFilter.IpCnt; Index++) {\r
ASSERT (Index < EFI_PXE_BASE_CODE_MAX_IPCNT);\r
if (EFI_IP4_EQUAL (&Mode->IpFilter.IpList[Index].v4, &DestinationIp) ||\r
- EFI_IP6_EQUAL (&Mode->IpFilter.IpList[Index].v6, &DestinationIp)) {\r
+ EFI_IP6_EQUAL (&Mode->IpFilter.IpList[Index].v6, &DestinationIp))\r
+ {\r
//\r
// Matched if the dest address is equal to any of address in the filter list.\r
//\r
return FALSE;\r
}\r
\r
-\r
/**\r
Filter the received packet using the destination Ip.\r
\r
**/\r
BOOLEAN\r
PxeBcCheckByDestIp (\r
- IN EFI_PXE_BASE_CODE_MODE *Mode,\r
- IN VOID *Session,\r
- IN OUT EFI_IP_ADDRESS *DestIp,\r
- IN UINT16 OpFlags\r
+ IN EFI_PXE_BASE_CODE_MODE *Mode,\r
+ IN VOID *Session,\r
+ IN OUT EFI_IP_ADDRESS *DestIp,\r
+ IN UINT16 OpFlags\r
)\r
{\r
if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP) != 0) {\r
sizeof (EFI_IPv4_ADDRESS)\r
);\r
}\r
-\r
}\r
+\r
return TRUE;\r
- } else if (DestIp != NULL &&\r
+ } else if ((DestIp != NULL) &&\r
(EFI_IP4_EQUAL (DestIp, &((EFI_UDP4_SESSION_DATA *)Session)->DestinationAddress) ||\r
- EFI_IP6_EQUAL (DestIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress))) {\r
+ EFI_IP6_EQUAL (DestIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress)))\r
+ {\r
//\r
// The destination address in the received packet is matched if present.\r
//\r
return TRUE;\r
} else if (EFI_IP4_EQUAL (&Mode->StationIp, &((EFI_UDP4_SESSION_DATA *)Session)->DestinationAddress) ||\r
- EFI_IP6_EQUAL (&Mode->StationIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress)) {\r
+ EFI_IP6_EQUAL (&Mode->StationIp, &((EFI_UDP6_SESSION_DATA *)Session)->DestinationAddress))\r
+ {\r
//\r
// The destination address in the received packet is equal to the host address.\r
//\r
return FALSE;\r
}\r
\r
-\r
/**\r
Check the received packet using the destination port.\r
\r
**/\r
BOOLEAN\r
PxeBcCheckByDestPort (\r
- IN EFI_PXE_BASE_CODE_MODE *Mode,\r
- IN VOID *Session,\r
- IN OUT UINT16 *DestPort,\r
- IN UINT16 OpFlags\r
+ IN EFI_PXE_BASE_CODE_MODE *Mode,\r
+ IN VOID *Session,\r
+ IN OUT UINT16 *DestPort,\r
+ IN UINT16 OpFlags\r
)\r
{\r
- UINT16 Port;\r
+ UINT16 Port;\r
\r
if (Mode->UsingIpv6) {\r
- Port = ((EFI_UDP6_SESSION_DATA *) Session)->DestinationPort;\r
+ Port = ((EFI_UDP6_SESSION_DATA *)Session)->DestinationPort;\r
} else {\r
- Port = ((EFI_UDP4_SESSION_DATA *) Session)->DestinationPort;\r
+ Port = ((EFI_UDP4_SESSION_DATA *)Session)->DestinationPort;\r
}\r
\r
if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT) != 0) {\r
if (DestPort != NULL) {\r
*DestPort = Port;\r
}\r
+\r
return TRUE;\r
- } else if (DestPort != NULL && *DestPort == Port) {\r
+ } else if ((DestPort != NULL) && (*DestPort == Port)) {\r
//\r
// The destination port in the received packet is matched if present.\r
//\r
return FALSE;\r
}\r
\r
-\r
/**\r
Filter the received packet using the source Ip.\r
\r
**/\r
BOOLEAN\r
PxeBcFilterBySrcIp (\r
- IN EFI_PXE_BASE_CODE_MODE *Mode,\r
- IN VOID *Session,\r
- IN OUT EFI_IP_ADDRESS *SrcIp,\r
- IN UINT16 OpFlags\r
+ IN EFI_PXE_BASE_CODE_MODE *Mode,\r
+ IN VOID *Session,\r
+ IN OUT EFI_IP_ADDRESS *SrcIp,\r
+ IN UINT16 OpFlags\r
)\r
{\r
if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP) != 0) {\r
sizeof (EFI_IPv4_ADDRESS)\r
);\r
}\r
-\r
}\r
+\r
return TRUE;\r
- } else if (SrcIp != NULL &&\r
+ } else if ((SrcIp != NULL) &&\r
(EFI_IP4_EQUAL (SrcIp, &((EFI_UDP4_SESSION_DATA *)Session)->SourceAddress) ||\r
- EFI_IP6_EQUAL (SrcIp, &((EFI_UDP6_SESSION_DATA *)Session)->SourceAddress))) {\r
+ EFI_IP6_EQUAL (SrcIp, &((EFI_UDP6_SESSION_DATA *)Session)->SourceAddress)))\r
+ {\r
//\r
// The source address in the received packet is matched if present.\r
//\r
return FALSE;\r
}\r
\r
-\r
/**\r
Filter the received packet using the source port.\r
\r
**/\r
BOOLEAN\r
PxeBcFilterBySrcPort (\r
- IN EFI_PXE_BASE_CODE_MODE *Mode,\r
- IN VOID *Session,\r
- IN OUT UINT16 *SrcPort,\r
- IN UINT16 OpFlags\r
+ IN EFI_PXE_BASE_CODE_MODE *Mode,\r
+ IN VOID *Session,\r
+ IN OUT UINT16 *SrcPort,\r
+ IN UINT16 OpFlags\r
)\r
{\r
- UINT16 Port;\r
+ UINT16 Port;\r
\r
if (Mode->UsingIpv6) {\r
- Port = ((EFI_UDP6_SESSION_DATA *) Session)->SourcePort;\r
+ Port = ((EFI_UDP6_SESSION_DATA *)Session)->SourcePort;\r
} else {\r
- Port = ((EFI_UDP4_SESSION_DATA *) Session)->SourcePort;\r
+ Port = ((EFI_UDP4_SESSION_DATA *)Session)->SourcePort;\r
}\r
\r
if ((OpFlags & EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT) != 0) {\r
if (SrcPort != NULL) {\r
*SrcPort = Port;\r
}\r
+\r
return TRUE;\r
- } else if (SrcPort != NULL && *SrcPort == Port) {\r
+ } else if ((SrcPort != NULL) && (*SrcPort == Port)) {\r
//\r
// The source port in the received packet is matched if present.\r
//\r
return FALSE;\r
}\r
\r
-\r
/**\r
This function is to receive packet using Udp4Read.\r
\r
**/\r
EFI_STATUS\r
PxeBcUdp4Read (\r
- IN EFI_UDP4_PROTOCOL *Udp4,\r
- IN EFI_UDP4_COMPLETION_TOKEN *Token,\r
- IN EFI_PXE_BASE_CODE_MODE *Mode,\r
- IN EFI_EVENT TimeoutEvent,\r
- IN UINT16 OpFlags,\r
- IN BOOLEAN *IsDone,\r
- OUT BOOLEAN *IsMatched,\r
- IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL,\r
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL,\r
- IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL,\r
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL\r
+ IN EFI_UDP4_PROTOCOL *Udp4,\r
+ IN EFI_UDP4_COMPLETION_TOKEN *Token,\r
+ IN EFI_PXE_BASE_CODE_MODE *Mode,\r
+ IN EFI_EVENT TimeoutEvent,\r
+ IN UINT16 OpFlags,\r
+ IN BOOLEAN *IsDone,\r
+ OUT BOOLEAN *IsMatched,\r
+ IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL,\r
+ IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL,\r
+ IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL,\r
+ IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL\r
)\r
{\r
- EFI_UDP4_RECEIVE_DATA *RxData;\r
- EFI_UDP4_SESSION_DATA *Session;\r
- EFI_STATUS Status;\r
+ EFI_UDP4_RECEIVE_DATA *RxData;\r
+ EFI_UDP4_SESSION_DATA *Session;\r
+ EFI_STATUS Status;\r
\r
Token->Status = EFI_NOT_READY;\r
*IsDone = FALSE;\r
//\r
while (!(*IsDone) &&\r
Token->Status == EFI_NOT_READY &&\r
- EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) {\r
+ EFI_ERROR (gBS->CheckEvent (TimeoutEvent)))\r
+ {\r
//\r
// Poll the token until reply/ICMPv6 error message received or timeout.\r
//\r
Udp4->Poll (Udp4);\r
- if (Token->Status == EFI_ICMP_ERROR ||\r
- Token->Status == EFI_NETWORK_UNREACHABLE ||\r
- Token->Status == EFI_HOST_UNREACHABLE ||\r
- Token->Status == EFI_PROTOCOL_UNREACHABLE ||\r
- Token->Status == EFI_PORT_UNREACHABLE) {\r
+ if ((Token->Status == EFI_ICMP_ERROR) ||\r
+ (Token->Status == EFI_NETWORK_UNREACHABLE) ||\r
+ (Token->Status == EFI_HOST_UNREACHABLE) ||\r
+ (Token->Status == EFI_PROTOCOL_UNREACHABLE) ||\r
+ (Token->Status == EFI_PORT_UNREACHABLE))\r
+ {\r
break;\r
}\r
}\r
//\r
// check whether this packet matches the filters\r
//\r
- RxData = Token->Packet.RxData;\r
- Session = &RxData->UdpSession;\r
+ RxData = Token->Packet.RxData;\r
+ Session = &RxData->UdpSession;\r
\r
*IsMatched = PxeBcCheckByIpFilter (Mode, Session, OpFlags);\r
\r
return Status;\r
}\r
\r
-\r
/**\r
This function is to receive packets using Udp6Read.\r
\r
**/\r
EFI_STATUS\r
PxeBcUdp6Read (\r
- IN EFI_UDP6_PROTOCOL *Udp6,\r
- IN EFI_UDP6_COMPLETION_TOKEN *Token,\r
- IN EFI_PXE_BASE_CODE_MODE *Mode,\r
- IN EFI_EVENT TimeoutEvent,\r
- IN UINT16 OpFlags,\r
- IN BOOLEAN *IsDone,\r
- OUT BOOLEAN *IsMatched,\r
- IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL,\r
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL,\r
- IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL,\r
- IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL\r
+ IN EFI_UDP6_PROTOCOL *Udp6,\r
+ IN EFI_UDP6_COMPLETION_TOKEN *Token,\r
+ IN EFI_PXE_BASE_CODE_MODE *Mode,\r
+ IN EFI_EVENT TimeoutEvent,\r
+ IN UINT16 OpFlags,\r
+ IN BOOLEAN *IsDone,\r
+ OUT BOOLEAN *IsMatched,\r
+ IN OUT EFI_IP_ADDRESS *DestIp OPTIONAL,\r
+ IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort OPTIONAL,\r
+ IN OUT EFI_IP_ADDRESS *SrcIp OPTIONAL,\r
+ IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort OPTIONAL\r
)\r
{\r
- EFI_UDP6_RECEIVE_DATA *RxData;\r
- EFI_UDP6_SESSION_DATA *Session;\r
- EFI_STATUS Status;\r
+ EFI_UDP6_RECEIVE_DATA *RxData;\r
+ EFI_UDP6_SESSION_DATA *Session;\r
+ EFI_STATUS Status;\r
\r
Token->Status = EFI_NOT_READY;\r
*IsDone = FALSE;\r
//\r
while (!(*IsDone) &&\r
Token->Status == EFI_NOT_READY &&\r
- EFI_ERROR (gBS->CheckEvent (TimeoutEvent))) {\r
+ EFI_ERROR (gBS->CheckEvent (TimeoutEvent)))\r
+ {\r
//\r
// Poll the token until reply/ICMPv6 error message received or timeout.\r
//\r
Udp6->Poll (Udp6);\r
- if (Token->Status == EFI_ICMP_ERROR ||\r
- Token->Status == EFI_NETWORK_UNREACHABLE ||\r
- Token->Status == EFI_HOST_UNREACHABLE ||\r
- Token->Status == EFI_PROTOCOL_UNREACHABLE ||\r
- Token->Status == EFI_PORT_UNREACHABLE) {\r
+ if ((Token->Status == EFI_ICMP_ERROR) ||\r
+ (Token->Status == EFI_NETWORK_UNREACHABLE) ||\r
+ (Token->Status == EFI_HOST_UNREACHABLE) ||\r
+ (Token->Status == EFI_PROTOCOL_UNREACHABLE) ||\r
+ (Token->Status == EFI_PORT_UNREACHABLE))\r
+ {\r
break;\r
}\r
}\r
//\r
// check whether this packet matches the filters\r
//\r
- RxData = Token->Packet.RxData;\r
- Session = &RxData->UdpSession;\r
+ RxData = Token->Packet.RxData;\r
+ Session = &RxData->UdpSession;\r
\r
*IsMatched = PxeBcCheckByIpFilter (Mode, Session, OpFlags);\r
\r
return Status;\r
}\r
\r
-\r
/**\r
This function is to display the IPv4 address.\r
\r
**/\r
VOID\r
PxeBcShowIp4Addr (\r
- IN EFI_IPv4_ADDRESS *Ip\r
+ IN EFI_IPv4_ADDRESS *Ip\r
)\r
{\r
- UINTN Index;\r
+ UINTN Index;\r
\r
for (Index = 0; Index < 4; Index++) {\r
AsciiPrint ("%d", Ip->Addr[Index]);\r
}\r
}\r
\r
-\r
/**\r
This function is to display the IPv6 address.\r
\r
**/\r
VOID\r
PxeBcShowIp6Addr (\r
- IN EFI_IPv6_ADDRESS *Ip\r
+ IN EFI_IPv6_ADDRESS *Ip\r
)\r
{\r
- UINTN Index;\r
+ UINTN Index;\r
\r
for (Index = 0; Index < 16; Index++) {\r
-\r
if (Ip->Addr[Index] != 0) {\r
AsciiPrint ("%x", Ip->Addr[Index]);\r
}\r
+\r
Index++;\r
if (Index > 15) {\r
return;\r
}\r
+\r
if (((Ip->Addr[Index] & 0xf0) == 0) && (Ip->Addr[Index - 1] != 0)) {\r
AsciiPrint ("0");\r
}\r
+\r
AsciiPrint ("%x", Ip->Addr[Index]);\r
if (Index < 15) {\r
AsciiPrint (":");\r
}\r
}\r
\r
-\r
/**\r
This function is to convert UINTN to ASCII string with the required formatting.\r
\r
**/\r
VOID\r
PxeBcUintnToAscDecWithFormat (\r
- IN UINTN Number,\r
- IN UINT8 *Buffer,\r
- IN INTN Length\r
+ IN UINTN Number,\r
+ IN UINT8 *Buffer,\r
+ IN INTN Length\r
)\r
{\r
- UINTN Remainder;\r
+ UINTN Remainder;\r
\r
- for (; Length > 0; Length--) {\r
- Remainder = Number % 10;\r
- Number /= 10;\r
- Buffer[Length - 1] = (UINT8) ('0' + Remainder);\r
+ for ( ; Length > 0; Length--) {\r
+ Remainder = Number % 10;\r
+ Number /= 10;\r
+ Buffer[Length - 1] = (UINT8)('0' + Remainder);\r
}\r
}\r
\r
-\r
/**\r
This function is to convert a UINTN to a ASCII string, and return the\r
actual length of the buffer.\r
**/\r
UINTN\r
PxeBcUintnToAscDec (\r
- IN UINTN Number,\r
- IN UINT8 *Buffer,\r
- IN UINTN BufferSize\r
+ IN UINTN Number,\r
+ IN UINT8 *Buffer,\r
+ IN UINTN BufferSize\r
)\r
{\r
- UINTN Index;\r
- UINTN Length;\r
- CHAR8 TempStr[64];\r
+ UINTN Index;\r
+ UINTN Length;\r
+ CHAR8 TempStr[64];\r
\r
- Index = 63;\r
- TempStr[Index] = 0;\r
+ Index = 63;\r
+ TempStr[Index] = 0;\r
\r
do {\r
Index--;\r
- TempStr[Index] = (CHAR8) ('0' + (Number % 10));\r
- Number = (UINTN) (Number / 10);\r
+ TempStr[Index] = (CHAR8)('0' + (Number % 10));\r
+ Number = (UINTN)(Number / 10);\r
} while (Number != 0);\r
\r
- AsciiStrCpyS ((CHAR8 *) Buffer, BufferSize, &TempStr[Index]);\r
+ AsciiStrCpyS ((CHAR8 *)Buffer, BufferSize, &TempStr[Index]);\r
\r
- Length = AsciiStrLen ((CHAR8 *) Buffer);\r
+ Length = AsciiStrLen ((CHAR8 *)Buffer);\r
\r
return Length;\r
}\r
\r
-\r
/**\r
This function is to convert unicode hex number to a UINT8.\r
\r
**/\r
EFI_STATUS\r
PxeBcUniHexToUint8 (\r
- OUT UINT8 *Digit,\r
- IN CHAR16 Char\r
+ OUT UINT8 *Digit,\r
+ IN CHAR16 Char\r
)\r
{\r
if ((Char >= L'0') && (Char <= L'9')) {\r
- *Digit = (UINT8) (Char - L'0');\r
+ *Digit = (UINT8)(Char - L'0');\r
return EFI_SUCCESS;\r
}\r
\r
if ((Char >= L'A') && (Char <= L'F')) {\r
- *Digit = (UINT8) (Char - L'A' + 0x0A);\r
+ *Digit = (UINT8)(Char - L'A' + 0x0A);\r
return EFI_SUCCESS;\r
}\r
\r
if ((Char >= L'a') && (Char <= L'f')) {\r
- *Digit = (UINT8) (Char - L'a' + 0x0A);\r
+ *Digit = (UINT8)(Char - L'a' + 0x0A);\r
return EFI_SUCCESS;\r
}\r
\r
**/\r
VOID\r
CalcElapsedTime (\r
- IN PXEBC_PRIVATE_DATA *Private\r
+ IN PXEBC_PRIVATE_DATA *Private\r
)\r
{\r
- EFI_TIME Time;\r
- UINT64 CurrentStamp;\r
- UINT64 ElapsedTimeValue;\r
+ EFI_TIME Time;\r
+ UINT64 CurrentStamp;\r
+ UINT64 ElapsedTimeValue;\r
\r
//\r
// Generate a time stamp of the centiseconds from 1900/1/1, assume 30day/month.\r
if (ElapsedTimeValue > 0xffff) {\r
ElapsedTimeValue = 0xffff;\r
}\r
+\r
//\r
// Save the elapsed time\r
//\r
Private->ElapsedTime = ElapsedTimeValue;\r
}\r
}\r
-\r