]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/Application/Ping6/Ping6.h
Add NetworkPkg (P.UDK2010.UP3.Network.P1)
[mirror_edk2.git] / NetworkPkg / Application / Ping6 / Ping6.h
diff --git a/NetworkPkg/Application/Ping6/Ping6.h b/NetworkPkg/Application/Ping6/Ping6.h
new file mode 100644 (file)
index 0000000..02271e1
--- /dev/null
@@ -0,0 +1,92 @@
+/** @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