]> git.proxmox.com Git - mirror_edk2.git/blob - NetworkPkg/Application/Ping6/Ping6.h
Clean up the private GUID definition in module Level.
[mirror_edk2.git] / NetworkPkg / Application / Ping6 / Ping6.h
1 /** @file
2 The interface function declaration of shell application Ping6 (Ping for v6 series).
3
4 Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
5
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php.
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 **/
15
16 #ifndef _PING6_H_
17 #define _PING6_H_
18
19 #define PING6_DEFAULT_TIMEOUT 5000
20 #define PING6_MAX_SEND_NUMBER 10000
21 #define PING6_MAX_BUFFER_SIZE 32768
22 #define PING6_ONE_SECOND 10000000
23
24 //
25 // A similar amount of time that passes in femtoseconds
26 // for each increment of TimerValue. It is for NT32 only.
27 //
28 #define NTTIMERPERIOD 358049
29
30 #pragma pack(1)
31
32 typedef struct _ICMP6_ECHO_REQUEST_REPLY {
33 UINT8 Type;
34 UINT8 Code;
35 UINT16 Checksum;
36 UINT16 Identifier;
37 UINT16 SequenceNum;
38 UINT64 TimeStamp;
39 UINT8 Data[1];
40 } ICMP6_ECHO_REQUEST_REPLY;
41
42 #pragma pack()
43
44 typedef struct _PING6_ICMP6_TX_INFO {
45 LIST_ENTRY Link;
46 UINT16 SequenceNum;
47 UINT64 TimeStamp;
48 EFI_IP6_COMPLETION_TOKEN *Token;
49 } PING6_ICMP6_TX_INFO;
50
51 typedef struct _PING6_PRIVATE_DATA {
52 EFI_HANDLE ImageHandle;
53 EFI_HANDLE NicHandle;
54 EFI_HANDLE Ip6ChildHandle;
55 EFI_IP6_PROTOCOL *Ip6;
56 EFI_EVENT Timer;
57
58 EFI_STATUS Status;
59 LIST_ENTRY TxList;
60 EFI_IP6_COMPLETION_TOKEN RxToken;
61 UINT16 RxCount;
62 UINT16 TxCount;
63 UINT64 RttSum;
64 UINT64 RttMin;
65 UINT64 RttMax;
66 UINT32 SequenceNum;
67
68 EFI_IPv6_ADDRESS SrcAddress;
69 EFI_IPv6_ADDRESS DstAddress;
70 UINT32 SendNum;
71 UINT32 BufferSize;
72 } PING6_PRIVATE_DATA;
73
74 /**
75 Reads and returns the current value of register.
76 In IA64, the register is the Interval Timer Vector (ITV).
77 In X86(IA32/X64), the register is the Time Stamp Counter (TSC)
78
79 @return The current value of the register.
80
81 **/
82 UINT64
83 ReadTime (
84 VOID
85 );
86
87 #endif