git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10986 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			109 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Header file for ICMPv6 protocol.
 | |
| 
 | |
|   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 __EFI_IP6_ICMP_H__
 | |
| #define __EFI_IP6_ICMP_H__
 | |
| 
 | |
| #define ICMP_V6_DEFAULT_CODE          0
 | |
| 
 | |
| #define ICMP_V6_ERROR_MAX             127
 | |
| 
 | |
| //
 | |
| // ICMPv6 message classes, each class of ICMPv6 message shares
 | |
| // a common message format. INVALID_MESSAGE is only a flag.
 | |
| //
 | |
| #define ICMP_V6_INVALID_MESSAGE       0
 | |
| #define ICMP_V6_ERROR_MESSAGE         1
 | |
| #define ICMP_V6_INFORMATION_MESSAGE   2
 | |
| 
 | |
| 
 | |
| extern EFI_IP6_ICMP_TYPE  mIp6SupportedIcmp[];
 | |
| 
 | |
| /**
 | |
|   Handle the ICMPv6 packet. First validate the message format,
 | |
|   then, according to the message types, process it as an informational packet or
 | |
|   an error packet.
 | |
| 
 | |
|   @param[in]  IpSb               The IP service that received the packet.
 | |
|   @param[in]  Head               The IP head of the ICMPv6 packet.
 | |
|   @param[in]  Packet             The content of the ICMPv6 packet with IP head
 | |
|                                  removed.
 | |
| 
 | |
|   @retval EFI_INVALID_PARAMETER  The packet is malformated.
 | |
|   @retval EFI_SUCCESS            The ICMPv6 message successfully processed.
 | |
|   @retval Others                 Failed to handle the ICMPv6 packet.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| Ip6IcmpHandle (
 | |
|   IN IP6_SERVICE            *IpSb,
 | |
|   IN EFI_IP6_HEADER         *Head,
 | |
|   IN NET_BUF                *Packet
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Check whether the DestinationAddress is an anycast address.
 | |
| 
 | |
|   @param[in]  IpSb               The IP service that received the packet.
 | |
|   @param[in]  DestinationAddress Points to the Destination Address of the packet.
 | |
| 
 | |
|   @retval TRUE                   The DestinationAddress is anycast address.
 | |
|   @retval FALSE                  The DestinationAddress is not anycast address.
 | |
| 
 | |
| **/
 | |
| BOOLEAN
 | |
| Ip6IsAnycast (
 | |
|   IN IP6_SERVICE            *IpSb,
 | |
|   IN EFI_IPv6_ADDRESS       *DestinationAddress
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Generate ICMPv6 error message and send it out to DestinationAddress. Currently
 | |
|   Destination Unreachable message, Time Exceeded message and Parameter Problem
 | |
|   message are supported.
 | |
| 
 | |
|   @param[in]  IpSb               The IP service that received the packet.
 | |
|   @param[in]  Packet             The packet which invoking ICMPv6 error.
 | |
|   @param[in]  SourceAddress      If not NULL, points to the SourceAddress.
 | |
|                                  Otherwise, the IP layer will select a source address
 | |
|                                  according to the DestinationAddress.
 | |
|   @param[in]  DestinationAddress Points to the Destination Address of the ICMPv6
 | |
|                                  error message.
 | |
|   @param[in]  Type               The type of the ICMPv6 message.
 | |
|   @param[in]  Code               The additional level of the ICMPv6 message.
 | |
|   @param[in]  Pointer            If not NULL, identifies the octet offset within
 | |
|                                  the invoking packet where the error was detected.
 | |
| 
 | |
|   @retval EFI_INVALID_PARAMETER  The packet is malformated.
 | |
|   @retval EFI_OUT_OF_RESOURCES   There is no sufficient resource to complete the
 | |
|                                  operation.
 | |
|   @retval EFI_SUCCESS            The ICMPv6 message was successfully sent out.
 | |
|   @retval Others                 Failed to generate the ICMPv6 packet.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| Ip6SendIcmpError (
 | |
|   IN IP6_SERVICE            *IpSb,
 | |
|   IN NET_BUF                *Packet,
 | |
|   IN EFI_IPv6_ADDRESS       *SourceAddress       OPTIONAL,
 | |
|   IN EFI_IPv6_ADDRESS       *DestinationAddress,
 | |
|   IN UINT8                  Type,
 | |
|   IN UINT8                  Code,
 | |
|   IN UINT32                 *Pointer             OPTIONAL
 | |
|   );
 | |
| 
 | |
| #endif
 | |
| 
 |