4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Definitions for EFI IPv6 Configuartion Protocol implementation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __IP6_CONFIG_IMPL_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __IP6_CONFIG_IMPL_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IP6_CONFIG_INSTANCE_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'C')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IP6_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'F', 'C', 'I')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IP6_CONFIG_VARIABLE_ATTRIBUTE (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IP6_CONFIG_DEFAULT_DAD_XMITS 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IP6_CONFIG_DHCP6_OPTION_ORO 6
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IP6_CONFIG_DHCP6_OPTION_DNS_SERVERS 23
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DATA_ATTRIB_SIZE_FIXED 0x1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DATA_ATTRIB_VOLATILE 0x2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DATA_ATTRIB_SET(Attrib, Bits) (BOOLEAN)((Attrib) & (Bits))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SET_DATA_ATTRIB(Attrib, Bits) ((Attrib) |= (Bits))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _IP6_CONFIG_INSTANCE IP6_CONFIG_INSTANCE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IP6_CONFIG_INSTANCE_FROM_PROTOCOL(Proto) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CR ((Proto), \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_CONFIG_INSTANCE, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip6Config, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_CONFIG_INSTANCE_SIGNATURE \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IP6_CONFIG_INSTANCE_FROM_FORM_CALLBACK(Callback) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CR ((Callback), \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_CONFIG_INSTANCE, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CallbackInfo, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_CONFIG_INSTANCE_SIGNATURE \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IP6_SERVICE_FROM_IP6_CONFIG_INSTANCE(Instance) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CR ((Instance), \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_SERVICE, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ip6ConfigInstance, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_SERVICE_SIGNATURE \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IP6_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS(ConfigAccess) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CR ((ConfigAccess), \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_FORM_CALLBACK_INFO, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HiiConfigAccess, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_FORM_CALLBACK_INFO_SIGNATURE \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The prototype of work function for EfiIp6ConfigSetData().
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Instance The pointer to the IP6 config instance data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DataSize In bytes, the size of the buffer pointed to by Data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Data The data buffer to set.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_BAD_BUFFER_SIZE The DataSize does not match the size of the type,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 8 bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The specified configuration data for the EFI IPv6
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync network stack was set successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(*IP6_CONFIG_SET_DATA) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN IP6_CONFIG_INSTANCE *Instance,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN DataSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Data
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The prototype of work function for EfiIp6ConfigGetData().
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Instance The pointer to the IP6 config instance data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] DataSize On input, in bytes, the size of Data. On output, in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync bytes, the size of buffer required to store the specified
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Data The data buffer in which the configuration data is returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Ignored if DataSize is ZERO.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_BUFFER_TOO_SMALL The size of Data is too small for the specified
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration data, and the required size is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned in DataSize.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The specified configuration data was obtained successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(*IP6_CONFIG_GET_DATA) (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN IP6_CONFIG_INSTANCE *Instance,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINTN *DataSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Data OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef union {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID *Ptr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_INTERFACE_INFO *IfInfo;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_INTERFACE_ID *AltIfId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_POLICY *Policy;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS *DadXmits;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_MANUAL_ADDRESS *ManualAddress;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS *Gateway;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS *DnsServers;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} IP6_CONFIG_DATA;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_CONFIG_SET_DATA SetData;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_CONFIG_GET_DATA GetData;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_STATUS Status;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Attribute;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NET_MAP EventMap;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_CONFIG_DATA Data;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN DataSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} IP6_CONFIG_DATA_ITEM;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Offset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN DataSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_DATA_TYPE DataType;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} IP6_CONFIG_DATA_RECORD;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack(1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// heap data that contains the data for each data record.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// BOOLEAN IsAltIfIdSet;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_IP6_CONFIG_POLICY Policy;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// UINT32 ManualaddressCount;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// UINT32 GatewayCount;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// UINT32 DnsServersCount;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_IP6_CONFIG_INTERFACE_ID AltIfId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_IP6_CONFIG_MANUAL_ADDRESS ManualAddress[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_IPv6_ADDRESS Gateway[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI_IPv6_ADDRESS DnsServers[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 IaId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Checksum;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 DataRecordCount;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_CONFIG_DATA_RECORD DataRecord[1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} IP6_CONFIG_VARIABLE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY Link;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_ADDRESS_INFO AddrInfo;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} IP6_ADDRESS_INFO_ENTRY;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_POLICY Policy; ///< manual or automatic
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadTransmitCount; ///< dad transmits count
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_INTERFACE_ID InterfaceId; ///< alternative interface id
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY ManualAddress; ///< IP addresses
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 ManualAddressCount; ///< IP addresses count
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY GatewayAddress; ///< Gateway address
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 GatewayAddressCount; ///< Gateway address count
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY DnsAddress; ///< DNS server address
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 DnsAddressCount; ///< DNS server address count
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} IP6_CONFIG_NVDATA;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _IP6_FORM_CALLBACK_INFO {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Signature;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HANDLE ChildHandle;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HII_CONFIG_ACCESS_PROTOCOL HiiConfigAccess;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DEVICE_PATH_PROTOCOL *HiiVendorDevicePath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HII_HANDLE RegisteredHandle;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} IP6_FORM_CALLBACK_INFO;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _IP6_CONFIG_INSTANCE {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Signature;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN Configured;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY Link;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 IfIndex;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_INTERFACE_INFO InterfaceInfo;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_INTERFACE_ID AltIfId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_POLICY Policy;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_DUP_ADDR_DETECT_TRANSMITS DadXmits;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_CONFIG_DATA_ITEM DataItem[Ip6ConfigDataTypeMaximum];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NET_MAP DadFailedMap;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NET_MAP DadPassedMap;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP6_CONFIG_PROTOCOL Ip6Config;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_EVENT Dhcp6SbNotifyEvent;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID *Registration;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HANDLE Dhcp6Handle;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DHCP6_PROTOCOL *Dhcp6;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN OtherInfoOnly;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 IaId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_EVENT Dhcp6Event;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 FailedIaAddressCount;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IPv6_ADDRESS *DeclineAddress;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 DeclineAddressCount;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_FORM_CALLBACK_INFO CallbackInfo;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IP6_CONFIG_NVDATA Ip6NvData;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The event process routine when the DHCPv6 server is answered with a reply packet
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for an information request.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Points to the EFI_DHCP6_PROTOCOL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Context The pointer to the IP6 configuration instance data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Packet The DHCPv6 reply packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The DNS server address was retrieved from the reply packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_READY The reply packet does not contain the DNS server option, or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the DNS server address is not valid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIp6ConfigOnDhcp6Reply (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DHCP6_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Context,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DHCP6_PACKET *Packet
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The work function to trigger the DHCPv6 process to perform a stateful autoconfiguration.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Instance Pointer to the IP6 config instance data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] OtherInfoOnly If FALSE, get stateful address and other information
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync via DHCPv6. Otherwise, only get the other information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The operation finished successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The DHCP6 driver is not available.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIp6ConfigStartStatefulAutoConfig (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN IP6_CONFIG_INSTANCE *Instance,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN OtherInfoOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Initialize an IP6_CONFIG_INSTANCE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] Instance The buffer of IP6_CONFIG_INSTANCE to be initialized.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Failed to allocate resources to complete the operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The IP6_CONFIG_INSTANCE initialized successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIp6ConfigInitInstance (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT IP6_CONFIG_INSTANCE *Instance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Release an IP6_CONFIG_INSTANCE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Instance The buffer of IP6_CONFIG_INSTANCE to be freed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIp6ConfigCleanInstance (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT IP6_CONFIG_INSTANCE *Instance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Destory the Dhcp6 child in IP6_CONFIG_INSTANCE and release the resources.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Instance The buffer of IP6_CONFIG_INSTANCE to be freed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The child was successfully destroyed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Failed to destory the child.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIp6ConfigDestroyDhcp6 (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT IP6_CONFIG_INSTANCE *Instance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif