\r
#include "UefiShellNetwork1CommandsLib.h"\r
\r
-#define PING_IP4_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv4_ADDRESS)))\r
+#define PING_IP4_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv4_ADDRESS)))\r
\r
-UINT64 mCurrentTick = 0;\r
+UINT64 mCurrentTick = 0;\r
\r
//\r
// Function templates to match the IPv4 and IPv6 commands that we use.\r
/// Unknown which one to the ping command.\r
///\r
typedef struct {\r
- PING_IPX_TRANSMIT Transmit;\r
- PING_IPX_RECEIVE Receive;\r
- PING_IPX_CANCEL Cancel;\r
- PING_IPX_POLL Poll;\r
-}PING_IPX_PROTOCOL;\r
-\r
+ PING_IPX_TRANSMIT Transmit;\r
+ PING_IPX_RECEIVE Receive;\r
+ PING_IPX_CANCEL Cancel;\r
+ PING_IPX_POLL Poll;\r
+} PING_IPX_PROTOCOL;\r
\r
typedef union {\r
- VOID *RxData;\r
- VOID *TxData;\r
+ VOID *RxData;\r
+ VOID *TxData;\r
} PING_PACKET;\r
\r
//\r
// This version is IP-unaware.\r
//\r
typedef struct {\r
- EFI_EVENT Event;\r
- EFI_STATUS Status;\r
- PING_PACKET Packet;\r
+ EFI_EVENT Event;\r
+ EFI_STATUS Status;\r
+ PING_PACKET Packet;\r
} PING_IPX_COMPLETION_TOKEN;\r
\r
#pragma pack(1)\r
typedef struct _ICMPX_ECHO_REQUEST_REPLY {\r
- UINT8 Type;\r
- UINT8 Code;\r
- UINT16 Checksum;\r
- UINT16 Identifier;\r
- UINT16 SequenceNum;\r
- UINT32 TimeStamp;\r
- UINT8 Data[1];\r
+ UINT8 Type;\r
+ UINT8 Code;\r
+ UINT16 Checksum;\r
+ UINT16 Identifier;\r
+ UINT16 SequenceNum;\r
+ UINT32 TimeStamp;\r
+ UINT8 Data[1];\r
} ICMPX_ECHO_REQUEST_REPLY;\r
#pragma pack()\r
\r
typedef struct _PING_ICMP_TX_INFO {\r
- LIST_ENTRY Link;\r
- UINT16 SequenceNum;\r
- UINT32 TimeStamp;\r
- PING_IPX_COMPLETION_TOKEN *Token;\r
+ LIST_ENTRY Link;\r
+ UINT16 SequenceNum;\r
+ UINT32 TimeStamp;\r
+ PING_IPX_COMPLETION_TOKEN *Token;\r
} PING_ICMPX_TX_INFO;\r
\r
#define DEFAULT_TIMEOUT 5000\r
\r
#define PING_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('P', 'i', 'n', 'g')\r
typedef struct _PING_PRIVATE_DATA {\r
- UINT32 Signature;\r
- EFI_HANDLE NicHandle;\r
- EFI_HANDLE IpChildHandle;\r
- EFI_EVENT Timer;\r
-\r
- UINT32 TimerPeriod;\r
- UINT32 RttTimerTick;\r
- EFI_EVENT RttTimer;\r
-\r
- EFI_STATUS Status;\r
- LIST_ENTRY TxList;\r
- UINT16 RxCount;\r
- UINT16 TxCount;\r
- UINT64 RttSum;\r
- UINT64 RttMin;\r
- UINT64 RttMax;\r
- UINT32 SequenceNum;\r
-\r
- UINT32 SendNum;\r
- UINT32 BufferSize;\r
- UINT32 IpChoice;\r
-\r
- PING_IPX_PROTOCOL ProtocolPointers;\r
- VOID *IpProtocol;\r
- UINT8 SrcAddress[MAX(sizeof(EFI_IPv6_ADDRESS) , sizeof(EFI_IPv4_ADDRESS) )];\r
- UINT8 DstAddress[MAX(sizeof(EFI_IPv6_ADDRESS) , sizeof(EFI_IPv4_ADDRESS) )];\r
- PING_IPX_COMPLETION_TOKEN RxToken;\r
- UINT16 FailedCount;\r
+ UINT32 Signature;\r
+ EFI_HANDLE NicHandle;\r
+ EFI_HANDLE IpChildHandle;\r
+ EFI_EVENT Timer;\r
+\r
+ UINT32 TimerPeriod;\r
+ UINT32 RttTimerTick;\r
+ EFI_EVENT RttTimer;\r
+\r
+ EFI_STATUS Status;\r
+ LIST_ENTRY TxList;\r
+ UINT16 RxCount;\r
+ UINT16 TxCount;\r
+ UINT64 RttSum;\r
+ UINT64 RttMin;\r
+ UINT64 RttMax;\r
+ UINT32 SequenceNum;\r
+\r
+ UINT32 SendNum;\r
+ UINT32 BufferSize;\r
+ UINT32 IpChoice;\r
+\r
+ PING_IPX_PROTOCOL ProtocolPointers;\r
+ VOID *IpProtocol;\r
+ UINT8 SrcAddress[MAX (sizeof (EFI_IPv6_ADDRESS), sizeof (EFI_IPv4_ADDRESS))];\r
+ UINT8 DstAddress[MAX (sizeof (EFI_IPv6_ADDRESS), sizeof (EFI_IPv4_ADDRESS))];\r
+ PING_IPX_COMPLETION_TOKEN RxToken;\r
+ UINT16 FailedCount;\r
} PING_PRIVATE_DATA;\r
\r
/**\r
UINT8 Odd;\r
UINT16 *Packet;\r
\r
- Packet = (UINT16 *) Buffer;\r
+ Packet = (UINT16 *)Buffer;\r
\r
- Sum = 0;\r
- Odd = (UINT8) (Length & 1);\r
+ Sum = 0;\r
+ Odd = (UINT8)(Length & 1);\r
Length >>= 1;\r
while ((Length--) != 0) {\r
Sum += *Packet++;\r
}\r
\r
if (Odd != 0) {\r
- Sum += *(UINT8 *) Packet;\r
+ Sum += *(UINT8 *)Packet;\r
}\r
\r
Sum = (Sum & 0xffff) + (Sum >> 16);\r
//\r
Sum += Sum >> 16;\r
\r
- return (UINT16) Sum;\r
+ return (UINT16)Sum;\r
}\r
\r
/**\r
\r
**/\r
\r
-STATIC CONST SHELL_PARAM_ITEM PingParamList[] = {\r
+STATIC CONST SHELL_PARAM_ITEM PingParamList[] = {\r
{\r
L"-l",\r
TypeValue\r
//\r
// Global Variables in Ping command.\r
//\r
-STATIC CONST CHAR16 *mDstString;\r
-STATIC CONST CHAR16 *mSrcString;\r
+STATIC CONST CHAR16 *mDstString;\r
+STATIC CONST CHAR16 *mSrcString;\r
\r
/**\r
RTT timer tick routine.\r
VOID\r
EFIAPI\r
RttTimerTickRoutine (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- UINT32 *RttTimerTick;\r
+ UINT32 *RttTimerTick;\r
\r
- RttTimerTick = (UINT32*) Context;\r
+ RttTimerTick = (UINT32 *)Context;\r
(*RttTimerTick)++;\r
}\r
\r
\r
**/\r
UINT32\r
-GetTimerPeriod(\r
+GetTimerPeriod (\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- UINT32 RttTimerTick;\r
- EFI_EVENT TimerEvent;\r
- UINT32 StallCounter;\r
- EFI_TPL OldTpl;\r
+ EFI_STATUS Status;\r
+ UINT32 RttTimerTick;\r
+ EFI_EVENT TimerEvent;\r
+ UINT32 StallCounter;\r
+ EFI_TPL OldTpl;\r
\r
RttTimerTick = 0;\r
- StallCounter = 0;\r
+ StallCounter = 0;\r
\r
Status = gBS->CreateEvent (\r
EVT_TIMER | EVT_NOTIFY_SIGNAL,\r
**/\r
EFI_STATUS\r
PingInitRttTimer (\r
- PING_PRIVATE_DATA *Private\r
+ PING_PRIVATE_DATA *Private\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
Private->TimerPeriod = GetTimerPeriod ();\r
if (Private->TimerPeriod == 0) {\r
}\r
\r
Private->RttTimerTick = 0;\r
- Status = gBS->CreateEvent (\r
- EVT_TIMER | EVT_NOTIFY_SIGNAL,\r
- TPL_NOTIFY,\r
- RttTimerTickRoutine,\r
- &Private->RttTimerTick,\r
- &Private->RttTimer\r
- );\r
+ Status = gBS->CreateEvent (\r
+ EVT_TIMER | EVT_NOTIFY_SIGNAL,\r
+ TPL_NOTIFY,\r
+ RttTimerTickRoutine,\r
+ &Private->RttTimerTick,\r
+ &Private->RttTimer\r
+ );\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
**/\r
VOID\r
PingFreeRttTimer (\r
- PING_PRIVATE_DATA *Private\r
+ PING_PRIVATE_DATA *Private\r
)\r
{\r
if (Private->RttTimer != NULL) {\r
**/\r
UINT32\r
ReadTime (\r
- PING_PRIVATE_DATA *Private\r
+ PING_PRIVATE_DATA *Private\r
)\r
{\r
return Private->RttTimerTick;\r
**/\r
UINT32\r
CalculateTick (\r
- PING_PRIVATE_DATA *Private,\r
- IN UINT32 Begin,\r
- IN UINT32 End\r
+ PING_PRIVATE_DATA *Private,\r
+ IN UINT32 Begin,\r
+ IN UINT32 End\r
)\r
{\r
if (End < Begin) {\r
**/\r
VOID\r
PingDestroyTxInfo (\r
- IN PING_ICMPX_TX_INFO *TxInfo,\r
- IN UINT32 IpChoice\r
+ IN PING_ICMPX_TX_INFO *TxInfo,\r
+ IN UINT32 IpChoice\r
)\r
{\r
- EFI_IP6_TRANSMIT_DATA *Ip6TxData;\r
- EFI_IP4_TRANSMIT_DATA *Ip4TxData;\r
- EFI_IP6_FRAGMENT_DATA *FragData;\r
- UINTN Index;\r
+ EFI_IP6_TRANSMIT_DATA *Ip6TxData;\r
+ EFI_IP4_TRANSMIT_DATA *Ip4TxData;\r
+ EFI_IP6_FRAGMENT_DATA *FragData;\r
+ UINTN Index;\r
\r
if (TxInfo == NULL) {\r
return;\r
}\r
\r
if (TxInfo->Token != NULL) {\r
-\r
if (TxInfo->Token->Event != NULL) {\r
gBS->CloseEvent (TxInfo->Token->Event);\r
}\r
**/\r
EFI_STATUS\r
Ping6MatchEchoReply (\r
- IN PING_PRIVATE_DATA *Private,\r
- IN ICMPX_ECHO_REQUEST_REPLY *Packet\r
+ IN PING_PRIVATE_DATA *Private,\r
+ IN ICMPX_ECHO_REQUEST_REPLY *Packet\r
)\r
{\r
- PING_ICMPX_TX_INFO *TxInfo;\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *NextEntry;\r
+ PING_ICMPX_TX_INFO *TxInfo;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *NextEntry;\r
\r
NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &Private->TxList) {\r
TxInfo = BASE_CR (Entry, PING_ICMPX_TX_INFO, Link);\r
VOID\r
EFIAPI\r
Ping6OnEchoRequestSent (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
}\r
VOID\r
EFIAPI\r
Ping6OnEchoReplyReceived (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
- PING_PRIVATE_DATA *Private;\r
- ICMPX_ECHO_REQUEST_REPLY *Reply;\r
- UINT32 PayLoad;\r
- UINT32 Rtt;\r
+ EFI_STATUS Status;\r
+ PING_PRIVATE_DATA *Private;\r
+ ICMPX_ECHO_REQUEST_REPLY *Reply;\r
+ UINT32 PayLoad;\r
+ UINT32 Rtt;\r
\r
- Private = (PING_PRIVATE_DATA *) Context;\r
+ Private = (PING_PRIVATE_DATA *)Context;\r
\r
- if (Private == NULL || Private->Status == EFI_ABORTED || Private->Signature != PING_PRIVATE_DATA_SIGNATURE) {\r
+ if ((Private == NULL) || (Private->Status == EFI_ABORTED) || (Private->Signature != PING_PRIVATE_DATA_SIGNATURE)) {\r
return;\r
}\r
\r
}\r
\r
if (Private->IpChoice == PING_IP_CHOICE_IP6) {\r
- Reply = ((EFI_IP6_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->FragmentTable[0].FragmentBuffer;\r
- PayLoad = ((EFI_IP6_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->DataLength;\r
- if (((EFI_IP6_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->Header->NextHeader != IP6_ICMP) {\r
+ Reply = ((EFI_IP6_RECEIVE_DATA *)Private->RxToken.Packet.RxData)->FragmentTable[0].FragmentBuffer;\r
+ PayLoad = ((EFI_IP6_RECEIVE_DATA *)Private->RxToken.Packet.RxData)->DataLength;\r
+ if (((EFI_IP6_RECEIVE_DATA *)Private->RxToken.Packet.RxData)->Header->NextHeader != IP6_ICMP) {\r
goto ON_EXIT;\r
}\r
- if (!IP6_IS_MULTICAST ((EFI_IPv6_ADDRESS*)&Private->DstAddress) &&\r
- !EFI_IP6_EQUAL (&((EFI_IP6_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->Header->SourceAddress, (EFI_IPv6_ADDRESS*)&Private->DstAddress)) {\r
+\r
+ if (!IP6_IS_MULTICAST ((EFI_IPv6_ADDRESS *)&Private->DstAddress) &&\r
+ !EFI_IP6_EQUAL (&((EFI_IP6_RECEIVE_DATA *)Private->RxToken.Packet.RxData)->Header->SourceAddress, (EFI_IPv6_ADDRESS *)&Private->DstAddress))\r
+ {\r
goto ON_EXIT;\r
}\r
\r
goto ON_EXIT;\r
}\r
} else {\r
- Reply = ((EFI_IP4_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->FragmentTable[0].FragmentBuffer;\r
- PayLoad = ((EFI_IP4_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->DataLength;\r
- if (!IP4_IS_MULTICAST (EFI_IP4(*(EFI_IPv4_ADDRESS*)Private->DstAddress)) &&\r
- !EFI_IP4_EQUAL (&((EFI_IP4_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->Header->SourceAddress, (EFI_IPv4_ADDRESS*)&Private->DstAddress)) {\r
+ Reply = ((EFI_IP4_RECEIVE_DATA *)Private->RxToken.Packet.RxData)->FragmentTable[0].FragmentBuffer;\r
+ PayLoad = ((EFI_IP4_RECEIVE_DATA *)Private->RxToken.Packet.RxData)->DataLength;\r
+ if (!IP4_IS_MULTICAST (EFI_IP4 (*(EFI_IPv4_ADDRESS *)Private->DstAddress)) &&\r
+ !EFI_IP4_EQUAL (&((EFI_IP4_RECEIVE_DATA *)Private->RxToken.Packet.RxData)->Header->SourceAddress, (EFI_IPv4_ADDRESS *)&Private->DstAddress))\r
+ {\r
goto ON_EXIT;\r
}\r
\r
}\r
}\r
\r
-\r
if (PayLoad != Private->BufferSize) {\r
goto ON_EXIT;\r
}\r
+\r
//\r
// Check whether the reply matches the sent request before.\r
//\r
Status = Ping6MatchEchoReply (Private, Reply);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
goto ON_EXIT;\r
}\r
+\r
//\r
// Display statistics on this icmp6 echo reply packet.\r
//\r
- Rtt = CalculateTick (Private, Reply->TimeStamp, ReadTime (Private));\r
+ Rtt = CalculateTick (Private, Reply->TimeStamp, ReadTime (Private));\r
\r
Private->RttSum += Rtt;\r
Private->RttMin = Private->RttMin > Rtt ? Rtt : Private->RttMin;\r
PayLoad,\r
mDstString,\r
Reply->SequenceNum,\r
- Private->IpChoice == PING_IP_CHOICE_IP6?((EFI_IP6_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->Header->HopLimit:0,\r
+ Private->IpChoice == PING_IP_CHOICE_IP6 ? ((EFI_IP6_RECEIVE_DATA *)Private->RxToken.Packet.RxData)->Header->HopLimit : 0,\r
Rtt,\r
Rtt + Private->TimerPeriod\r
);\r
//\r
// Recycle the packet before reusing RxToken\r
//\r
- gBS->SignalEvent (Private->IpChoice == PING_IP_CHOICE_IP6?((EFI_IP6_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->RecycleSignal:((EFI_IP4_RECEIVE_DATA*)Private->RxToken.Packet.RxData)->RecycleSignal);\r
+ gBS->SignalEvent (Private->IpChoice == PING_IP_CHOICE_IP6 ? ((EFI_IP6_RECEIVE_DATA *)Private->RxToken.Packet.RxData)->RecycleSignal : ((EFI_IP4_RECEIVE_DATA *)Private->RxToken.Packet.RxData)->RecycleSignal);\r
\r
if (Private->RxCount < Private->SendNum) {\r
//\r
**/\r
PING_IPX_COMPLETION_TOKEN *\r
PingGenerateToken (\r
- IN PING_PRIVATE_DATA *Private,\r
- IN UINT32 TimeStamp,\r
- IN UINT16 SequenceNum\r
+ IN PING_PRIVATE_DATA *Private,\r
+ IN UINT32 TimeStamp,\r
+ IN UINT16 SequenceNum\r
)\r
{\r
- EFI_STATUS Status;\r
- PING_IPX_COMPLETION_TOKEN *Token;\r
- VOID *TxData;\r
- ICMPX_ECHO_REQUEST_REPLY *Request;\r
- UINT16 HeadSum;\r
- UINT16 TempChecksum;\r
+ EFI_STATUS Status;\r
+ PING_IPX_COMPLETION_TOKEN *Token;\r
+ VOID *TxData;\r
+ ICMPX_ECHO_REQUEST_REPLY *Request;\r
+ UINT16 HeadSum;\r
+ UINT16 TempChecksum;\r
\r
Request = AllocateZeroPool (Private->BufferSize);\r
if (Request == NULL) {\r
return NULL;\r
}\r
- TxData = AllocateZeroPool (Private->IpChoice==PING_IP_CHOICE_IP6?sizeof (EFI_IP6_TRANSMIT_DATA):sizeof (EFI_IP4_TRANSMIT_DATA));\r
+\r
+ TxData = AllocateZeroPool (Private->IpChoice == PING_IP_CHOICE_IP6 ? sizeof (EFI_IP6_TRANSMIT_DATA) : sizeof (EFI_IP4_TRANSMIT_DATA));\r
if (TxData == NULL) {\r
FreePool (Request);\r
return NULL;\r
}\r
+\r
Token = AllocateZeroPool (sizeof (PING_IPX_COMPLETION_TOKEN));\r
if (Token == NULL) {\r
FreePool (Request);\r
//\r
// Assembly echo request packet.\r
//\r
- Request->Type = (UINT8)(Private->IpChoice==PING_IP_CHOICE_IP6?ICMP_V6_ECHO_REQUEST:ICMP_V4_ECHO_REQUEST);\r
+ Request->Type = (UINT8)(Private->IpChoice == PING_IP_CHOICE_IP6 ? ICMP_V6_ECHO_REQUEST : ICMP_V4_ECHO_REQUEST);\r
Request->Code = 0;\r
Request->SequenceNum = SequenceNum;\r
Request->Identifier = 0;\r
//\r
// Assembly token for transmit.\r
//\r
- if (Private->IpChoice==PING_IP_CHOICE_IP6) {\r
- Request->TimeStamp = TimeStamp;\r
- ((EFI_IP6_TRANSMIT_DATA*)TxData)->ExtHdrsLength = 0;\r
- ((EFI_IP6_TRANSMIT_DATA*)TxData)->ExtHdrs = NULL;\r
- ((EFI_IP6_TRANSMIT_DATA*)TxData)->OverrideData = 0;\r
- ((EFI_IP6_TRANSMIT_DATA*)TxData)->DataLength = Private->BufferSize;\r
- ((EFI_IP6_TRANSMIT_DATA*)TxData)->FragmentCount = 1;\r
- ((EFI_IP6_TRANSMIT_DATA*)TxData)->FragmentTable[0].FragmentBuffer = (VOID *) Request;\r
- ((EFI_IP6_TRANSMIT_DATA*)TxData)->FragmentTable[0].FragmentLength = Private->BufferSize;\r
+ if (Private->IpChoice == PING_IP_CHOICE_IP6) {\r
+ Request->TimeStamp = TimeStamp;\r
+ ((EFI_IP6_TRANSMIT_DATA *)TxData)->ExtHdrsLength = 0;\r
+ ((EFI_IP6_TRANSMIT_DATA *)TxData)->ExtHdrs = NULL;\r
+ ((EFI_IP6_TRANSMIT_DATA *)TxData)->OverrideData = 0;\r
+ ((EFI_IP6_TRANSMIT_DATA *)TxData)->DataLength = Private->BufferSize;\r
+ ((EFI_IP6_TRANSMIT_DATA *)TxData)->FragmentCount = 1;\r
+ ((EFI_IP6_TRANSMIT_DATA *)TxData)->FragmentTable[0].FragmentBuffer = (VOID *)Request;\r
+ ((EFI_IP6_TRANSMIT_DATA *)TxData)->FragmentTable[0].FragmentLength = Private->BufferSize;\r
} else {\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->OptionsLength = 0;\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->OptionsBuffer = NULL;\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->OverrideData = 0;\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->TotalDataLength = Private->BufferSize;\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->FragmentCount = 1;\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->FragmentTable[0].FragmentBuffer = (VOID *) Request;\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->FragmentTable[0].FragmentLength = Private->BufferSize;\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->DestinationAddress.Addr[0] = Private->DstAddress[0];\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->DestinationAddress.Addr[1] = Private->DstAddress[1];\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->DestinationAddress.Addr[2] = Private->DstAddress[2];\r
- ((EFI_IP4_TRANSMIT_DATA*)TxData)->DestinationAddress.Addr[3] = Private->DstAddress[3];\r
-\r
- HeadSum = NetChecksum ((UINT8 *) Request, Private->BufferSize);\r
- Request->TimeStamp = TimeStamp;\r
- TempChecksum = NetChecksum ((UINT8 *) &Request->TimeStamp, sizeof (UINT64));\r
- Request->Checksum = (UINT16)(~NetAddChecksum (HeadSum, TempChecksum));\r
- }\r
-\r
-\r
- Token->Status = EFI_ABORTED;\r
- Token->Packet.TxData = TxData;\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->OptionsLength = 0;\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->OptionsBuffer = NULL;\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->OverrideData = 0;\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->TotalDataLength = Private->BufferSize;\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->FragmentCount = 1;\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->FragmentTable[0].FragmentBuffer = (VOID *)Request;\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->FragmentTable[0].FragmentLength = Private->BufferSize;\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->DestinationAddress.Addr[0] = Private->DstAddress[0];\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->DestinationAddress.Addr[1] = Private->DstAddress[1];\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->DestinationAddress.Addr[2] = Private->DstAddress[2];\r
+ ((EFI_IP4_TRANSMIT_DATA *)TxData)->DestinationAddress.Addr[3] = Private->DstAddress[3];\r
+\r
+ HeadSum = NetChecksum ((UINT8 *)Request, Private->BufferSize);\r
+ Request->TimeStamp = TimeStamp;\r
+ TempChecksum = NetChecksum ((UINT8 *)&Request->TimeStamp, sizeof (UINT64));\r
+ Request->Checksum = (UINT16)(~NetAddChecksum (HeadSum, TempChecksum));\r
+ }\r
+\r
+ Token->Status = EFI_ABORTED;\r
+ Token->Packet.TxData = TxData;\r
\r
Status = gBS->CreateEvent (\r
EVT_NOTIFY_SIGNAL,\r
**/\r
EFI_STATUS\r
PingSendEchoRequest (\r
- IN PING_PRIVATE_DATA *Private\r
+ IN PING_PRIVATE_DATA *Private\r
)\r
{\r
- EFI_STATUS Status;\r
- PING_ICMPX_TX_INFO *TxInfo;\r
+ EFI_STATUS Status;\r
+ PING_ICMPX_TX_INFO *TxInfo;\r
\r
TxInfo = AllocateZeroPool (sizeof (PING_ICMPX_TX_INFO));\r
\r
}\r
\r
TxInfo->TimeStamp = ReadTime (Private);\r
- TxInfo->SequenceNum = (UINT16) (Private->TxCount + 1);\r
+ TxInfo->SequenceNum = (UINT16)(Private->TxCount + 1);\r
TxInfo->Token = PingGenerateToken (\r
Private,\r
TxInfo->TimeStamp,\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- ASSERT(Private->ProtocolPointers.Transmit != NULL);\r
+ ASSERT (Private->ProtocolPointers.Transmit != NULL);\r
\r
InsertTailList (&Private->TxList, &TxInfo->Link);\r
\r
**/\r
EFI_STATUS\r
Ping6ReceiveEchoReply (\r
- IN PING_PRIVATE_DATA *Private\r
+ IN PING_PRIVATE_DATA *Private\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
ZeroMem (&Private->RxToken, sizeof (PING_IPX_COMPLETION_TOKEN));\r
\r
if (EFI_ERROR (Status)) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_RECEIVE), gShellNetwork1HiiHandle, Status);\r
}\r
+\r
return Status;\r
}\r
\r
VOID\r
EFIAPI\r
Ping6OnTimerRoutine (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
- PING_PRIVATE_DATA *Private;\r
- PING_ICMPX_TX_INFO *TxInfo;\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *NextEntry;\r
- UINT64 Time;\r
-\r
- Private = (PING_PRIVATE_DATA *) Context;\r
+ EFI_STATUS Status;\r
+ PING_PRIVATE_DATA *Private;\r
+ PING_ICMPX_TX_INFO *TxInfo;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *NextEntry;\r
+ UINT64 Time;\r
+\r
+ Private = (PING_PRIVATE_DATA *)Context;\r
if (Private->Signature != PING_PRIVATE_DATA_SIGNATURE) {\r
Private->Status = EFI_NOT_FOUND;\r
return;\r
// Retransmit icmp6 echo request packets per second in sendnumber times.\r
//\r
if (Private->TxCount < Private->SendNum) {\r
-\r
Status = PingSendEchoRequest (Private);\r
- if (Private->TxCount != 0){\r
+ if (Private->TxCount != 0) {\r
if (EFI_ERROR (Status)) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_SEND_REQUEST), gShellNetwork1HiiHandle, Private->TxCount + 1);\r
}\r
}\r
}\r
+\r
//\r
// Check whether any icmp6 echo request in the list timeout.\r
//\r
// Remove the timeout echo request from txlist.\r
//\r
if (Time > DEFAULT_TIMEOUT) {\r
-\r
if (EFI_ERROR (TxInfo->Token->Status)) {\r
Private->ProtocolPointers.Cancel (Private->IpProtocol, TxInfo->Token);\r
}\r
+\r
//\r
// Remove the timeout icmp6 echo request from list.\r
//\r
**/\r
BOOLEAN\r
PingNetIp4IsLinkLocalAddr (\r
- IN CONST EFI_IPv4_ADDRESS *Address\r
+ IN CONST EFI_IPv4_ADDRESS *Address\r
)\r
{\r
return ((BOOLEAN)(Address->Addr[0] == 169 && Address->Addr[1] == 254 && Address->Addr[2] >= 1 && Address->Addr[2] <= 254));\r
**/\r
BOOLEAN\r
PingNetIp4IsUnspecifiedAddr (\r
- IN CONST EFI_IPv4_ADDRESS *Address\r
+ IN CONST EFI_IPv4_ADDRESS *Address\r
)\r
{\r
- return ((BOOLEAN)((ReadUnaligned32 ((UINT32*)&Address->Addr[0])) == 0x00000000));\r
+ return ((BOOLEAN)((ReadUnaligned32 ((UINT32 *)&Address->Addr[0])) == 0x00000000));\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
PingCreateIpInstance (\r
- IN PING_PRIVATE_DATA *Private\r
+ IN PING_PRIVATE_DATA *Private\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN HandleIndex;\r
- UINTN HandleNum;\r
- EFI_HANDLE *HandleBuffer;\r
- BOOLEAN UnspecifiedSrc;\r
- EFI_STATUS MediaStatus;\r
- EFI_SERVICE_BINDING_PROTOCOL *EfiSb;\r
- VOID *IpXCfg;\r
- EFI_IP6_CONFIG_DATA Ip6Config;\r
- EFI_IP4_CONFIG_DATA Ip4Config;\r
- VOID *IpXInterfaceInfo;\r
- UINTN IfInfoSize;\r
- EFI_IPv6_ADDRESS *Addr;\r
- UINTN AddrIndex;\r
-\r
- HandleBuffer = NULL;\r
- UnspecifiedSrc = FALSE;\r
- MediaStatus = EFI_SUCCESS;\r
- EfiSb = NULL;\r
- IpXInterfaceInfo = NULL;\r
- IfInfoSize = 0;\r
+ EFI_STATUS Status;\r
+ UINTN HandleIndex;\r
+ UINTN HandleNum;\r
+ EFI_HANDLE *HandleBuffer;\r
+ BOOLEAN UnspecifiedSrc;\r
+ EFI_STATUS MediaStatus;\r
+ EFI_SERVICE_BINDING_PROTOCOL *EfiSb;\r
+ VOID *IpXCfg;\r
+ EFI_IP6_CONFIG_DATA Ip6Config;\r
+ EFI_IP4_CONFIG_DATA Ip4Config;\r
+ VOID *IpXInterfaceInfo;\r
+ UINTN IfInfoSize;\r
+ EFI_IPv6_ADDRESS *Addr;\r
+ UINTN AddrIndex;\r
+\r
+ HandleBuffer = NULL;\r
+ UnspecifiedSrc = FALSE;\r
+ MediaStatus = EFI_SUCCESS;\r
+ EfiSb = NULL;\r
+ IpXInterfaceInfo = NULL;\r
+ IfInfoSize = 0;\r
\r
//\r
// Locate all the handles with ip6 service binding protocol.\r
//\r
Status = gBS->LocateHandleBuffer (\r
ByProtocol,\r
- Private->IpChoice == PING_IP_CHOICE_IP6?&gEfiIp6ServiceBindingProtocolGuid:&gEfiIp4ServiceBindingProtocolGuid,\r
+ Private->IpChoice == PING_IP_CHOICE_IP6 ? &gEfiIp6ServiceBindingProtocolGuid : &gEfiIp4ServiceBindingProtocolGuid,\r
NULL,\r
&HandleNum,\r
&HandleBuffer\r
return EFI_ABORTED;\r
}\r
\r
- if (Private->IpChoice == PING_IP_CHOICE_IP6 ? NetIp6IsUnspecifiedAddr ((EFI_IPv6_ADDRESS*)&Private->SrcAddress) : \\r
- PingNetIp4IsUnspecifiedAddr ((EFI_IPv4_ADDRESS*)&Private->SrcAddress)) {\r
+ if ((Private->IpChoice == PING_IP_CHOICE_IP6) ? NetIp6IsUnspecifiedAddr ((EFI_IPv6_ADDRESS *)&Private->SrcAddress) : \\r
+ PingNetIp4IsUnspecifiedAddr ((EFI_IPv4_ADDRESS *)&Private->SrcAddress))\r
+ {\r
//\r
// SrcAddress is unspecified. So, both connected and configured interface will be automatic selected.\r
//\r
// Source address is required when pinging a link-local address.\r
//\r
if (Private->IpChoice == PING_IP_CHOICE_IP6) {\r
- if (NetIp6IsLinkLocalAddr ((EFI_IPv6_ADDRESS*)&Private->DstAddress) && UnspecifiedSrc) {\r
+ if (NetIp6IsLinkLocalAddr ((EFI_IPv6_ADDRESS *)&Private->DstAddress) && UnspecifiedSrc) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_INVALID_SOURCE), gShellNetwork1HiiHandle);\r
Status = EFI_INVALID_PARAMETER;\r
goto ON_ERROR;\r
}\r
} else {\r
- ASSERT(Private->IpChoice == PING_IP_CHOICE_IP4);\r
- if (PingNetIp4IsLinkLocalAddr ((EFI_IPv4_ADDRESS*)&Private->DstAddress) && UnspecifiedSrc) {\r
+ ASSERT (Private->IpChoice == PING_IP_CHOICE_IP4);\r
+ if (PingNetIp4IsLinkLocalAddr ((EFI_IPv4_ADDRESS *)&Private->DstAddress) && UnspecifiedSrc) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_INVALID_SOURCE), gShellNetwork1HiiHandle);\r
Status = EFI_INVALID_PARAMETER;\r
goto ON_ERROR;\r
// For each ip6 protocol, check interface addresses list.\r
//\r
for (HandleIndex = 0; HandleIndex < HandleNum; HandleIndex++) {\r
- EfiSb = NULL;\r
- IpXInterfaceInfo = NULL;\r
- IfInfoSize = 0;\r
+ EfiSb = NULL;\r
+ IpXInterfaceInfo = NULL;\r
+ IfInfoSize = 0;\r
\r
if (UnspecifiedSrc) {\r
//\r
\r
Status = gBS->HandleProtocol (\r
HandleBuffer[HandleIndex],\r
- Private->IpChoice == PING_IP_CHOICE_IP6?&gEfiIp6ServiceBindingProtocolGuid:&gEfiIp4ServiceBindingProtocolGuid,\r
- (VOID **) &EfiSb\r
+ Private->IpChoice == PING_IP_CHOICE_IP6 ? &gEfiIp6ServiceBindingProtocolGuid : &gEfiIp4ServiceBindingProtocolGuid,\r
+ (VOID **)&EfiSb\r
);\r
if (EFI_ERROR (Status)) {\r
goto ON_ERROR;\r
//\r
Status = gBS->HandleProtocol (\r
HandleBuffer[HandleIndex],\r
- Private->IpChoice == PING_IP_CHOICE_IP6?&gEfiIp6ConfigProtocolGuid:&gEfiIp4Config2ProtocolGuid,\r
- (VOID **) &IpXCfg\r
+ Private->IpChoice == PING_IP_CHOICE_IP6 ? &gEfiIp6ConfigProtocolGuid : &gEfiIp4Config2ProtocolGuid,\r
+ (VOID **)&IpXCfg\r
);\r
\r
if (EFI_ERROR (Status)) {\r
goto ON_ERROR;\r
}\r
+\r
//\r
// Get the interface information size.\r
//\r
if (Private->IpChoice == PING_IP_CHOICE_IP6) {\r
- Status = ((EFI_IP6_CONFIG_PROTOCOL*)IpXCfg)->GetData (\r
- IpXCfg,\r
- Ip6ConfigDataTypeInterfaceInfo,\r
- &IfInfoSize,\r
- NULL\r
- );\r
+ Status = ((EFI_IP6_CONFIG_PROTOCOL *)IpXCfg)->GetData (\r
+ IpXCfg,\r
+ Ip6ConfigDataTypeInterfaceInfo,\r
+ &IfInfoSize,\r
+ NULL\r
+ );\r
} else {\r
- Status = ((EFI_IP4_CONFIG2_PROTOCOL*)IpXCfg)->GetData (\r
- IpXCfg,\r
- Ip4Config2DataTypeInterfaceInfo,\r
- &IfInfoSize,\r
- NULL\r
- );\r
+ Status = ((EFI_IP4_CONFIG2_PROTOCOL *)IpXCfg)->GetData (\r
+ IpXCfg,\r
+ Ip4Config2DataTypeInterfaceInfo,\r
+ &IfInfoSize,\r
+ NULL\r
+ );\r
}\r
\r
//\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ON_ERROR;\r
}\r
+\r
//\r
// Get the interface info.\r
//\r
if (Private->IpChoice == PING_IP_CHOICE_IP6) {\r
- Status = ((EFI_IP6_CONFIG_PROTOCOL*)IpXCfg)->GetData (\r
- IpXCfg,\r
- Ip6ConfigDataTypeInterfaceInfo,\r
- &IfInfoSize,\r
- IpXInterfaceInfo\r
- );\r
+ Status = ((EFI_IP6_CONFIG_PROTOCOL *)IpXCfg)->GetData (\r
+ IpXCfg,\r
+ Ip6ConfigDataTypeInterfaceInfo,\r
+ &IfInfoSize,\r
+ IpXInterfaceInfo\r
+ );\r
} else {\r
- Status = ((EFI_IP4_CONFIG2_PROTOCOL*)IpXCfg)->GetData (\r
- IpXCfg,\r
- Ip4Config2DataTypeInterfaceInfo,\r
- &IfInfoSize,\r
- IpXInterfaceInfo\r
- );\r
+ Status = ((EFI_IP4_CONFIG2_PROTOCOL *)IpXCfg)->GetData (\r
+ IpXCfg,\r
+ Ip4Config2DataTypeInterfaceInfo,\r
+ &IfInfoSize,\r
+ IpXInterfaceInfo\r
+ );\r
}\r
\r
if (EFI_ERROR (Status)) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_GETDATA), gShellNetwork1HiiHandle, Status);\r
goto ON_ERROR;\r
}\r
+\r
//\r
// Check whether the source address is one of the interface addresses.\r
//\r
if (Private->IpChoice == PING_IP_CHOICE_IP6) {\r
- for (AddrIndex = 0; AddrIndex < ((EFI_IP6_CONFIG_INTERFACE_INFO*)IpXInterfaceInfo)->AddressInfoCount; AddrIndex++) {\r
- Addr = &(((EFI_IP6_CONFIG_INTERFACE_INFO*)IpXInterfaceInfo)->AddressInfo[AddrIndex].Address);\r
+ for (AddrIndex = 0; AddrIndex < ((EFI_IP6_CONFIG_INTERFACE_INFO *)IpXInterfaceInfo)->AddressInfoCount; AddrIndex++) {\r
+ Addr = &(((EFI_IP6_CONFIG_INTERFACE_INFO *)IpXInterfaceInfo)->AddressInfo[AddrIndex].Address);\r
\r
if (UnspecifiedSrc) {\r
if (!NetIp6IsUnspecifiedAddr (Addr) && !NetIp6IsLinkLocalAddr (Addr)) {\r
//\r
// Select the interface automatically.\r
//\r
- CopyMem(&Private->SrcAddress, Addr, sizeof(Private->SrcAddress));\r
+ CopyMem (&Private->SrcAddress, Addr, sizeof (Private->SrcAddress));\r
break;\r
}\r
} else if (EFI_IP6_EQUAL (&Private->SrcAddress, Addr)) {\r
}\r
}\r
\r
- if (AddrIndex < ((EFI_IP6_CONFIG_INTERFACE_INFO*)IpXInterfaceInfo)->AddressInfoCount) {\r
+ if (AddrIndex < ((EFI_IP6_CONFIG_INTERFACE_INFO *)IpXInterfaceInfo)->AddressInfoCount) {\r
//\r
// Found a nic handle with right interface address.\r
//\r
}\r
} else {\r
if (UnspecifiedSrc) {\r
- if (!PingNetIp4IsUnspecifiedAddr (&((EFI_IP4_CONFIG2_INTERFACE_INFO*)IpXInterfaceInfo)->StationAddress) &&\r
- !PingNetIp4IsLinkLocalAddr (&((EFI_IP4_CONFIG2_INTERFACE_INFO*)IpXInterfaceInfo)->StationAddress)) {\r
+ if (!PingNetIp4IsUnspecifiedAddr (&((EFI_IP4_CONFIG2_INTERFACE_INFO *)IpXInterfaceInfo)->StationAddress) &&\r
+ !PingNetIp4IsLinkLocalAddr (&((EFI_IP4_CONFIG2_INTERFACE_INFO *)IpXInterfaceInfo)->StationAddress))\r
+ {\r
//\r
// Select the interface automatically.\r
//\r
break;\r
}\r
- } else if (EFI_IP4_EQUAL (&Private->SrcAddress, &((EFI_IP4_CONFIG2_INTERFACE_INFO*)IpXInterfaceInfo)->StationAddress)) {\r
+ } else if (EFI_IP4_EQUAL (&Private->SrcAddress, &((EFI_IP4_CONFIG2_INTERFACE_INFO *)IpXInterfaceInfo)->StationAddress)) {\r
//\r
// Match a certain interface address.\r
//\r
FreePool (IpXInterfaceInfo);\r
IpXInterfaceInfo = NULL;\r
}\r
+\r
//\r
// No exact interface address matched.\r
//\r
if (EFI_ERROR (Status)) {\r
goto ON_ERROR;\r
}\r
+\r
if (Private->IpChoice == PING_IP_CHOICE_IP6) {\r
Status = gBS->OpenProtocol (\r
Private->IpChildHandle,\r
goto ON_ERROR;\r
}\r
\r
-\r
ZeroMem (&Ip6Config, sizeof (EFI_IP6_CONFIG_DATA));\r
\r
//\r
Ip6Config.ReceiveTimeout = 0;\r
Ip6Config.TransmitTimeout = 0;\r
\r
- IP6_COPY_ADDRESS (&Ip6Config.StationAddress, &Private->SrcAddress);\r
+ IP6_COPY_ADDRESS (&Ip6Config.StationAddress, &Private->SrcAddress);\r
IP6_COPY_ADDRESS (&Ip6Config.DestinationAddress, &Private->DstAddress);\r
\r
- Status = ((EFI_IP6_PROTOCOL*)(Private->IpProtocol))->Configure (Private->IpProtocol, &Ip6Config);\r
+ Status = ((EFI_IP6_PROTOCOL *)(Private->IpProtocol))->Configure (Private->IpProtocol, &Ip6Config);\r
\r
if (EFI_ERROR (Status)) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_CONFIG), gShellNetwork1HiiHandle, Status);\r
goto ON_ERROR;\r
}\r
\r
- Private->ProtocolPointers.Transmit = (PING_IPX_TRANSMIT )((EFI_IP6_PROTOCOL*)Private->IpProtocol)->Transmit;\r
- Private->ProtocolPointers.Receive = (PING_IPX_RECEIVE )((EFI_IP6_PROTOCOL*)Private->IpProtocol)->Receive;\r
- Private->ProtocolPointers.Cancel = (PING_IPX_CANCEL )((EFI_IP6_PROTOCOL*)Private->IpProtocol)->Cancel;\r
- Private->ProtocolPointers.Poll = (PING_IPX_POLL )((EFI_IP6_PROTOCOL*)Private->IpProtocol)->Poll;\r
+ Private->ProtocolPointers.Transmit = (PING_IPX_TRANSMIT)((EFI_IP6_PROTOCOL *)Private->IpProtocol)->Transmit;\r
+ Private->ProtocolPointers.Receive = (PING_IPX_RECEIVE)((EFI_IP6_PROTOCOL *)Private->IpProtocol)->Receive;\r
+ Private->ProtocolPointers.Cancel = (PING_IPX_CANCEL)((EFI_IP6_PROTOCOL *)Private->IpProtocol)->Cancel;\r
+ Private->ProtocolPointers.Poll = (PING_IPX_POLL)((EFI_IP6_PROTOCOL *)Private->IpProtocol)->Poll;\r
} else {\r
Status = gBS->OpenProtocol (\r
Private->IpChildHandle,\r
goto ON_ERROR;\r
}\r
\r
-\r
ZeroMem (&Ip4Config, sizeof (EFI_IP4_CONFIG_DATA));\r
\r
//\r
Ip4Config.TimeToLive = 128;\r
Ip4Config.TypeOfService = 0;\r
\r
- Status = ((EFI_IP4_PROTOCOL*)(Private->IpProtocol))->Configure (Private->IpProtocol, &Ip4Config);\r
+ Status = ((EFI_IP4_PROTOCOL *)(Private->IpProtocol))->Configure (Private->IpProtocol, &Ip4Config);\r
\r
if (EFI_ERROR (Status)) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_CONFIG), gShellNetwork1HiiHandle, Status);\r
goto ON_ERROR;\r
}\r
\r
- Private->ProtocolPointers.Transmit = (PING_IPX_TRANSMIT )((EFI_IP4_PROTOCOL*)Private->IpProtocol)->Transmit;\r
- Private->ProtocolPointers.Receive = (PING_IPX_RECEIVE )((EFI_IP4_PROTOCOL*)Private->IpProtocol)->Receive;\r
- Private->ProtocolPointers.Cancel = (PING_IPX_CANCEL )((EFI_IP4_PROTOCOL*)Private->IpProtocol)->Cancel;\r
- Private->ProtocolPointers.Poll = (PING_IPX_POLL )((EFI_IP4_PROTOCOL*)Private->IpProtocol)->Poll;\r
+ Private->ProtocolPointers.Transmit = (PING_IPX_TRANSMIT)((EFI_IP4_PROTOCOL *)Private->IpProtocol)->Transmit;\r
+ Private->ProtocolPointers.Receive = (PING_IPX_RECEIVE)((EFI_IP4_PROTOCOL *)Private->IpProtocol)->Receive;\r
+ Private->ProtocolPointers.Cancel = (PING_IPX_CANCEL)((EFI_IP4_PROTOCOL *)Private->IpProtocol)->Cancel;\r
+ Private->ProtocolPointers.Poll = (PING_IPX_POLL)((EFI_IP4_PROTOCOL *)Private->IpProtocol)->Poll;\r
}\r
\r
if (HandleBuffer != NULL) {\r
**/\r
VOID\r
Ping6DestroyIp6Instance (\r
- IN PING_PRIVATE_DATA *Private\r
+ IN PING_PRIVATE_DATA *Private\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_SERVICE_BINDING_PROTOCOL *IpSb;\r
+ EFI_STATUS Status;\r
+ EFI_SERVICE_BINDING_PROTOCOL *IpSb;\r
\r
gBS->CloseProtocol (\r
Private->IpChildHandle,\r
- Private->IpChoice == PING_IP_CHOICE_IP6?&gEfiIp6ProtocolGuid:&gEfiIp4ProtocolGuid,\r
+ Private->IpChoice == PING_IP_CHOICE_IP6 ? &gEfiIp6ProtocolGuid : &gEfiIp4ProtocolGuid,\r
gImageHandle,\r
Private->IpChildHandle\r
);\r
\r
Status = gBS->HandleProtocol (\r
Private->NicHandle,\r
- Private->IpChoice == PING_IP_CHOICE_IP6?&gEfiIp6ServiceBindingProtocolGuid:&gEfiIp4ServiceBindingProtocolGuid,\r
- (VOID **) &IpSb\r
+ Private->IpChoice == PING_IP_CHOICE_IP6 ? &gEfiIp6ServiceBindingProtocolGuid : &gEfiIp4ServiceBindingProtocolGuid,\r
+ (VOID **)&IpSb\r
);\r
\r
- if (!EFI_ERROR(Status)) {\r
+ if (!EFI_ERROR (Status)) {\r
IpSb->DestroyChild (IpSb, Private->IpChildHandle);\r
}\r
}\r
\r
-\r
/**\r
The Ping Process.\r
\r
**/\r
SHELL_STATUS\r
ShellPing (\r
- IN UINT32 SendNumber,\r
- IN UINT32 BufferSize,\r
- IN EFI_IPv6_ADDRESS *SrcAddress,\r
- IN EFI_IPv6_ADDRESS *DstAddress,\r
- IN UINT32 IpChoice\r
+ IN UINT32 SendNumber,\r
+ IN UINT32 BufferSize,\r
+ IN EFI_IPv6_ADDRESS *SrcAddress,\r
+ IN EFI_IPv6_ADDRESS *DstAddress,\r
+ IN UINT32 IpChoice\r
)\r
{\r
- EFI_STATUS Status;\r
- PING_PRIVATE_DATA *Private;\r
- PING_ICMPX_TX_INFO *TxInfo;\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *NextEntry;\r
- SHELL_STATUS ShellStatus;\r
+ EFI_STATUS Status;\r
+ PING_PRIVATE_DATA *Private;\r
+ PING_ICMPX_TX_INFO *TxInfo;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *NextEntry;\r
+ SHELL_STATUS ShellStatus;\r
\r
ShellStatus = SHELL_SUCCESS;\r
Private = AllocateZeroPool (sizeof (PING_PRIVATE_DATA));\r
return (SHELL_OUT_OF_RESOURCES);\r
}\r
\r
- Private->IpChoice = IpChoice;\r
- Private->Signature = PING_PRIVATE_DATA_SIGNATURE;\r
- Private->SendNum = SendNumber;\r
- Private->BufferSize = BufferSize;\r
- Private->RttMin = ~((UINT64 )(0x0));\r
- Private->Status = EFI_NOT_READY;\r
+ Private->IpChoice = IpChoice;\r
+ Private->Signature = PING_PRIVATE_DATA_SIGNATURE;\r
+ Private->SendNum = SendNumber;\r
+ Private->BufferSize = BufferSize;\r
+ Private->RttMin = ~((UINT64)(0x0));\r
+ Private->Status = EFI_NOT_READY;\r
\r
- CopyMem(&Private->SrcAddress, SrcAddress, sizeof(Private->SrcAddress));\r
- CopyMem(&Private->DstAddress, DstAddress, sizeof(Private->DstAddress));\r
+ CopyMem (&Private->SrcAddress, SrcAddress, sizeof (Private->SrcAddress));\r
+ CopyMem (&Private->DstAddress, DstAddress, sizeof (Private->DstAddress));\r
\r
InitializeListHead (&Private->TxList);\r
\r
ShellStatus = SHELL_ACCESS_DENIED;\r
goto ON_EXIT;\r
}\r
+\r
//\r
// Print the command line itself.\r
//\r
ShellStatus = SHELL_ACCESS_DENIED;\r
goto ON_EXIT;\r
}\r
+\r
//\r
// Create and start timer to send icmp6 echo request packet per second.\r
//\r
//\r
if (EFI_ERROR (Status) && (Status != EFI_NOT_READY)) {\r
ShellStatus = SHELL_ACCESS_DENIED;\r
- if(Status == EFI_NOT_FOUND) {\r
+ if (Status == EFI_NOT_FOUND) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_NOSOURCE_INDO), gShellNetwork1HiiHandle, mDstString);\r
} else if (Status == RETURN_NO_MAPPING) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING_NOROUTE_FOUND), gShellNetwork1HiiHandle, mDstString, mSrcString);\r
ShellStatus = SHELL_ACCESS_DENIED;\r
goto ON_EXIT;\r
}\r
+\r
//\r
// Control the ping6 process by two factors:\r
// 1. Hot key\r
//\r
while (Private->Status == EFI_NOT_READY) {\r
Status = Private->ProtocolPointers.Poll (Private->IpProtocol);\r
- if (ShellGetExecutionBreakFlag()) {\r
+ if (ShellGetExecutionBreakFlag ()) {\r
Private->Status = EFI_ABORTED;\r
goto ON_STAT;\r
}\r
ON_EXIT:\r
\r
if (Private != NULL) {\r
-\r
NET_LIST_FOR_EACH_SAFE (Entry, NextEntry, &Private->TxList) {\r
TxInfo = BASE_CR (Entry, PING_ICMPX_TX_INFO, Link);\r
\r
- if (Private->IpProtocol != NULL && Private->ProtocolPointers.Cancel != NULL) {\r
+ if ((Private->IpProtocol != NULL) && (Private->ProtocolPointers.Cancel != NULL)) {\r
Status = Private->ProtocolPointers.Cancel (Private->IpProtocol, TxInfo->Token);\r
}\r
\r
gBS->CloseEvent (Private->Timer);\r
}\r
\r
- if (Private->IpProtocol != NULL && Private->ProtocolPointers.Cancel != NULL) {\r
+ if ((Private->IpProtocol != NULL) && (Private->ProtocolPointers.Cancel != NULL)) {\r
Status = Private->ProtocolPointers.Cancel (Private->IpProtocol, &Private->RxToken);\r
}\r
\r
IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
- SHELL_STATUS ShellStatus;\r
- EFI_IPv6_ADDRESS DstAddress;\r
- EFI_IPv6_ADDRESS SrcAddress;\r
- UINT64 BufferSize;\r
- UINTN SendNumber;\r
- LIST_ENTRY *ParamPackage;\r
- CONST CHAR16 *ValueStr;\r
- UINTN NonOptionCount;\r
- UINT32 IpChoice;\r
- CHAR16 *ProblemParam;\r
+ EFI_STATUS Status;\r
+ SHELL_STATUS ShellStatus;\r
+ EFI_IPv6_ADDRESS DstAddress;\r
+ EFI_IPv6_ADDRESS SrcAddress;\r
+ UINT64 BufferSize;\r
+ UINTN SendNumber;\r
+ LIST_ENTRY *ParamPackage;\r
+ CONST CHAR16 *ValueStr;\r
+ UINTN NonOptionCount;\r
+ UINT32 IpChoice;\r
+ CHAR16 *ProblemParam;\r
\r
//\r
// we use IPv6 buffers to hold items...\r
// make sure this is enough space!\r
//\r
- ASSERT(sizeof(EFI_IPv4_ADDRESS ) <= sizeof(EFI_IPv6_ADDRESS ));\r
- ASSERT(sizeof(EFI_IP4_COMPLETION_TOKEN) <= sizeof(EFI_IP6_COMPLETION_TOKEN ));\r
+ ASSERT (sizeof (EFI_IPv4_ADDRESS) <= sizeof (EFI_IPv6_ADDRESS));\r
+ ASSERT (sizeof (EFI_IP4_COMPLETION_TOKEN) <= sizeof (EFI_IP6_COMPLETION_TOKEN));\r
\r
IpChoice = PING_IP_CHOICE_IP4;\r
\r
- ShellStatus = SHELL_SUCCESS;\r
+ ShellStatus = SHELL_SUCCESS;\r
ProblemParam = NULL;\r
\r
Status = ShellCommandLineParseEx (PingParamList, &ParamPackage, &ProblemParam, TRUE, FALSE);\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ProblemParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
goto ON_EXIT;\r
} else {\r
SendNumber = DEFAULT_SEND_COUNT;\r
}\r
+\r
//\r
// Parse the parameter of buffer size.\r
//\r
if (IpChoice == PING_IP_CHOICE_IP6) {\r
Status = NetLibStrToIp6 (ValueStr, &SrcAddress);\r
} else {\r
- Status = NetLibStrToIp4 (ValueStr, (EFI_IPv4_ADDRESS*)&SrcAddress);\r
+ Status = NetLibStrToIp4 (ValueStr, (EFI_IPv4_ADDRESS *)&SrcAddress);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ValueStr);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
goto ON_EXIT;\r
}\r
}\r
+\r
//\r
// Parse the parameter of destination ip address.\r
//\r
- NonOptionCount = ShellCommandLineGetCount(ParamPackage);\r
+ NonOptionCount = ShellCommandLineGetCount (ParamPackage);\r
if (NonOptionCount < 2) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellNetwork1HiiHandle, L"ping");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
goto ON_EXIT;\r
}\r
+\r
if (NonOptionCount > 2) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellNetwork1HiiHandle, L"ping");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
goto ON_EXIT;\r
}\r
+\r
ValueStr = ShellCommandLineGetRawValue (ParamPackage, 1);\r
if (ValueStr != NULL) {\r
mDstString = ValueStr;\r
if (IpChoice == PING_IP_CHOICE_IP6) {\r
Status = NetLibStrToIp6 (ValueStr, &DstAddress);\r
} else {\r
- Status = NetLibStrToIp4 (ValueStr, (EFI_IPv4_ADDRESS*)&DstAddress);\r
+ Status = NetLibStrToIp4 (ValueStr, (EFI_IPv4_ADDRESS *)&DstAddress);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellNetwork1HiiHandle, L"ping", ValueStr);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
// Enter into ping process.\r
//\r
ShellStatus = ShellPing (\r
- (UINT32)SendNumber,\r
- (UINT32)BufferSize,\r
- &SrcAddress,\r
- &DstAddress,\r
- IpChoice\r
- );\r
+ (UINT32)SendNumber,\r
+ (UINT32)BufferSize,\r
+ &SrcAddress,\r
+ &DstAddress,\r
+ IpChoice\r
+ );\r
\r
ON_EXIT:\r
ShellCommandLineFreeVarList (ParamPackage);\r