/** @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
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
**/ \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