--- /dev/null
+/** @file\r
+ The interface function declaration of shell application Ping6 (Ping for v6 series).\r
+\r
+ Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php.\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#ifndef _PING6_H_\r
+#define _PING6_H_\r
+\r
+#define EFI_PING6_GUID \\r
+ { \\r
+ 0x3f0b2478, 0x3619, 0x46c5, {0x81, 0x50, 0xa5, 0xab, 0xdd, 0xb6, 0x6b, 0xd9} \\r
+ }\r
+\r
+#define PING6_DEFAULT_TIMEOUT 5000\r
+#define PING6_MAX_SEND_NUMBER 10000\r
+#define PING6_MAX_BUFFER_SIZE 32768\r
+#define PING6_ONE_SECOND 10000000\r
+\r
+//\r
+// A similar amount of time that passes in femtoseconds\r
+// for each increment of TimerValue. It is for NT32 only.\r
+//\r
+#define NTTIMERPERIOD 358049\r
+\r
+#pragma pack(1)\r
+\r
+typedef struct _ICMP6_ECHO_REQUEST_REPLY {\r
+ UINT8 Type;\r
+ UINT8 Code;\r
+ UINT16 Checksum;\r
+ UINT16 Identifier;\r
+ UINT16 SequenceNum;\r
+ UINT64 TimeStamp;\r
+ UINT8 Data[1];\r
+} ICMP6_ECHO_REQUEST_REPLY;\r
+\r
+#pragma pack()\r
+\r
+typedef struct _PING6_ICMP6_TX_INFO {\r
+ LIST_ENTRY Link;\r
+ UINT16 SequenceNum;\r
+ UINT64 TimeStamp;\r
+ EFI_IP6_COMPLETION_TOKEN *Token;\r
+} PING6_ICMP6_TX_INFO;\r
+\r
+typedef struct _PING6_PRIVATE_DATA {\r
+ EFI_HANDLE ImageHandle;\r
+ EFI_HANDLE NicHandle;\r
+ EFI_HANDLE Ip6ChildHandle;\r
+ EFI_IP6_PROTOCOL *Ip6;\r
+ EFI_EVENT Timer;\r
+\r
+ EFI_STATUS Status;\r
+ LIST_ENTRY TxList;\r
+ EFI_IP6_COMPLETION_TOKEN RxToken;\r
+ UINT16 RxCount;\r
+ UINT16 TxCount;\r
+ UINT32 RttSum;\r
+ UINT32 RttMin;\r
+ UINT32 RttMax;\r
+ UINT32 SequenceNum;\r
+\r
+ EFI_IPv6_ADDRESS SrcAddress;\r
+ EFI_IPv6_ADDRESS DstAddress;\r
+ UINT32 SendNum;\r
+ UINT32 BufferSize;\r
+} PING6_PRIVATE_DATA;\r
+\r
+/**\r
+ Reads and returns the current value of register.\r
+ In IA64, the register is the Interval Timer Vector (ITV).\r
+ In X86(IA32/X64), the register is the Time Stamp Counter (TSC)\r
+\r
+ @return The current value of the register.\r
+\r
+**/\r
+UINT64\r
+ReadTime (\r
+ VOID\r
+ );\r
+\r
+#endif\r