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