/** @file\r
- \r
This file defines the EFI IPv6 (Internet Protocol version 6)\r
Protocol interface. It is split into the following three main\r
sections:\r
Listener Discovery Protocol (MLD), and a subset of the Internet Control\r
Message Protocol (ICMPv6).\r
\r
- Copyright (c) 2008 - 2009, Intel Corporation \r
+ Copyright (c) 2008 - 2010, Intel Corporation \r
All rights reserved. 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
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+ @par Revision Reference: \r
+ This Protocol is introduced in UEFI Specification 2.2 \r
\r
**/\r
\r
\r
typedef struct _EFI_IP6_PROTOCOL EFI_IP6_PROTOCOL;\r
\r
+///\r
+/// EFI_IP6_ADDRESS_PAIR \r
+/// which is not defined in the UEFI 2.3 Specification.\r
+///\r
+typedef struct{ \r
+ ///\r
+ /// The EFI IPv6 Protocol instance handle that is using this address/prefix pair.\r
+ ///\r
+ EFI_HANDLE InstanceHandle;\r
+ ///\r
+ /// IPv6 address in network byte order.\r
+ ///\r
+ EFI_IPv6_ADDRESS Ip6Address;\r
+ ///\r
+ /// The length of the prefix associated with the Ip6Address.\r
+ ///\r
+ UINT8 PrefixLength;\r
+} EFI_IP6_ADDRESS_PAIR; \r
+\r
+///\r
+/// EFI_IP6_VARIABLE_DATA\r
+/// which is not defined in the UEFI 2.3 Specification.\r
+///\r
+typedef struct {\r
+ ///\r
+ /// The handle of the driver that creates this entry.\r
+ ///\r
+ EFI_HANDLE DriverHandle;\r
+ ///\r
+ /// The number of IPv6 address pairs that follow this data structure.\r
+ ///\r
+ UINT32 AddressCount;\r
+ ///\r
+ /// List of IPv6 address pairs that are currently in use.\r
+ ///\r
+ EFI_IP6_ADDRESS_PAIR AddressPairs[1];\r
+} EFI_IP6_VARIABLE_DATA;\r
+\r
///\r
/// ICMPv6 type definitions for error messages\r
///\r
EFI_IPv6_ADDRESS SourceAddress;\r
EFI_IPv6_ADDRESS DestinationAddress;\r
} EFI_IP6_HEADER;\r
-#pragma pack\r
+#pragma pack()\r
\r
///\r
/// EFI_IP6_FRAGMENT_DATA\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_IP6_GET_MODE_DATA) (\r
+(EFIAPI *EFI_IP6_GET_MODE_DATA)(\r
IN EFI_IP6_PROTOCOL *This,\r
OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL,\r
OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_IP6_CONFIGURE) (\r
+(EFIAPI *EFI_IP6_CONFIGURE)(\r
IN EFI_IP6_PROTOCOL *This,\r
IN EFI_IP6_CONFIG_DATA *Ip6ConfigData OPTIONAL\r
);\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_IP6_GROUPS) (\r
+(EFIAPI *EFI_IP6_GROUPS)(\r
IN EFI_IP6_PROTOCOL *This,\r
IN BOOLEAN JoinFlag,\r
IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_IP6_ROUTES) (\r
+(EFIAPI *EFI_IP6_ROUTES)(\r
IN EFI_IP6_PROTOCOL *This,\r
IN BOOLEAN DeleteRoute,\r
- IN EFI_IPv6_ADDRESS *Destination, OPTIONAL\r
+ IN EFI_IPv6_ADDRESS *Destination OPTIONAL,\r
IN UINT8 PrefixLength,\r
IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL \r
);\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_IP6_NEIGHBORS) (\r
+(EFIAPI *EFI_IP6_NEIGHBORS)(\r
IN EFI_IP6_PROTOCOL *This,\r
IN BOOLEAN DeleteFlag,\r
IN EFI_IPv6_ADDRESS *TargetIp6Address,\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_IP6_TRANSMIT) (\r
+(EFIAPI *EFI_IP6_TRANSMIT)(\r
IN EFI_IP6_PROTOCOL *This,\r
IN EFI_IP6_COMPLETION_TOKEN *Token\r
);\r
is signaled.\r
\r
@param[in] This Pointer to the EFI_IP6_PROTOCOL instance.\r
- @param]in] Token Pointer to a token that is associated with the receive data descriptor.\r
+ @param[in] Token Pointer to a token that is associated with the receive data descriptor.\r
\r
@retval EFI_SUCCESS The receive completion token was cached.\r
@retval EFI_NOT_STARTED This EFI IPv6 Protocol instance has not been started.\r
**/ \r
typedef \r
EFI_STATUS \r
-(EFIAPI *EFI_IP6_RECEIVE) ( \r
+(EFIAPI *EFI_IP6_RECEIVE)( \r
IN EFI_IP6_PROTOCOL *This,\r
IN EFI_IP6_COMPLETION_TOKEN *Token\r
);\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_IP6_POLL) (\r
+(EFIAPI *EFI_IP6_POLL)(\r
IN EFI_IP6_PROTOCOL *This\r
);\r
\r
/// The EFI IPv6 Protocol implements a simple packet-oriented interface that can be\r
/// used by drivers, daemons, and applications to transmit and receive network packets.\r
///\r
-typedef struct _EFI_IP6_PROTOCOL {\r
+struct _EFI_IP6_PROTOCOL {\r
EFI_IP6_GET_MODE_DATA GetModeData;\r
EFI_IP6_CONFIGURE Configure;\r
EFI_IP6_GROUPS Groups;\r
EFI_IP6_RECEIVE Receive;\r
EFI_IP6_CANCEL Cancel;\r
EFI_IP6_POLL Poll;\r
-} EFI_IP6_PROTOCOL;\r
+};\r
\r
extern EFI_GUID gEfiIp6ServiceBindingProtocolGuid;\r
extern EFI_GUID gEfiIp6ProtocolGuid;\r