diff options
Diffstat (limited to 'MdePkg/Include/Protocol/Dhcp6.h')
-rw-r--r-- | MdePkg/Include/Protocol/Dhcp6.h | 786 |
1 files changed, 0 insertions, 786 deletions
diff --git a/MdePkg/Include/Protocol/Dhcp6.h b/MdePkg/Include/Protocol/Dhcp6.h deleted file mode 100644 index 42c70632be..0000000000 --- a/MdePkg/Include/Protocol/Dhcp6.h +++ /dev/null @@ -1,786 +0,0 @@ -/** @file
- UEFI Dynamic Host Configuration Protocol 6 Definition, which is used to get IPv6
- addresses and other configuration parameters from DHCPv6 servers.
-
- Copyright (c) 2008 - 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.
-
- @par Revision Reference:
- This Protocol is introduced in UEFI Specification 2.2
-
-**/
-
-#ifndef __EFI_DHCP6_PROTOCOL_H__
-#define __EFI_DHCP6_PROTOCOL_H__
-
-#define EFI_DHCP6_PROTOCOL_GUID \
- { \
- 0x87c8bad7, 0x595, 0x4053, {0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b } \
- }
-
-#define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID \
- { \
- 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5 } \
- }
-
-typedef struct _EFI_DHCP6_PROTOCOL EFI_DHCP6_PROTOCOL;
-
-typedef enum {
- ///
- /// The EFI DHCPv6 Protocol instance is configured, and start() needs
- /// to be called
- ///
- Dhcp6Init = 0x0,
- ///
- /// A Solicit packet is sent out to discover DHCPv6 server, and the EFI
- /// DHCPv6 Protocol instance is collecting Advertise packets.
- ///
- Dhcp6Selecting = 0x1,
- ///
- /// A Request is sent out to the DHCPv6 server, and the EFI DHCPv6
- /// Protocol instance is waiting for Reply packet.
- ///
- Dhcp6Requesting = 0x2,
- ///
- /// A Decline packet is sent out to indicate one or more addresses of the
- /// configured IA are in use by another node, and the EFI DHCPv6.
- /// Protocol instance is waiting for Reply packet.
- ///
- Dhcp6Declining = 0x3,
- ///
- /// A Confirm packet is sent out to confirm the IPv6 addresses of the
- /// configured IA, and the EFI DHCPv6 Protocol instance is waiting for Reply packet.
- ///
- Dhcp6Confirming = 0x4,
- ///
- /// A Release packet is sent out to release one or more IPv6 addresses of
- /// the configured IA, and the EFI DHCPv6 Protocol instance is waiting for Reply packet.
- ///
- Dhcp6Releasing = 0x5,
- ///
- /// The DHCPv6 S.A.R.R process is completed for the configured IA.
- ///
- Dhcp6Bound = 0x6,
- ///
- /// A Renew packet is sent out to extend lifetime for the IPv6 addresses of
- /// the configured IA, and the EFI DHCPv6 Protocol instance is waiting for Reply packet.
- ///
- Dhcp6Renewing = 0x7,
- ///
- /// A Rebind packet is sent out to extend lifetime for the IPv6 addresses of
- /// the configured IA, and the EFI DHCPv6 Protocol instance is waiting for Reply packet.
- ///
- Dhcp6Rebinding = 0x8
-} EFI_DHCP6_STATE;
-
-typedef enum {
- ///
- /// A Solicit packet is about to be sent. The packet is passed to Dhcp6Callback and
- /// can be modified or replaced in Dhcp6Callback.
- ///
- Dhcp6SendSolicit = 0x0,
- ///
- /// An Advertise packet is received and will be passed to Dhcp6Callback.
- ///
- Dhcp6RcvdAdvertise = 0x1,
- ///
- /// It is time for Dhcp6Callback to determine whether select the default Advertise
- /// packet by RFC 3315 policy, or overwrite it by specific user policy.
- ///
- Dhcp6SelectAdvertise = 0x2,
- ///
- /// A Request packet is about to be sent. The packet is passed to Dhcp6Callback and
- /// can be modified or replaced in Dhcp6Callback.
- ///
- Dhcp6SendRequest = 0x3,
- ///
- /// A Reply packet is received and will be passed to Dhcp6Callback.
- ///
- Dhcp6RcvdReply = 0x4,
- ///
- /// A Reconfigure packet is received and will be passed to Dhcp6Callback.
- ///
- Dhcp6RcvdReconfigure = 0x5,
- ///
- /// A Decline packet is about to be sent. The packet is passed to Dhcp6Callback and
- /// can be modified or replaced in Dhcp6Callback.
- ///
- Dhcp6SendDecline = 0x6,
- ///
- /// A Confirm packet is about to be sent. The packet is passed to Dhcp6Callback and
- /// can be modified or replaced in Dhcp6Callback.
- ///
- Dhcp6SendConfirm = 0x7,
- ///
- /// A Release packet is about to be sent. The packet is passed to Dhcp6Callback and
- /// can be modified or replaced in Dhcp6Callback.
- ///
- Dhcp6SendRelease = 0x8,
- ///
- /// A Renew packet is about to be sent. The packet is passed to Dhcp6Callback and
- /// can be modified or replaced in Dhcp6Callback.
- ///
- Dhcp6EnterRenewing = 0x9,
- ///
- /// A Rebind packet is about to be sent. The packet is passed to Dhcp6Callback and
- /// can be modified or replaced in Dhcp6Callback.
- ///
- Dhcp6EnterRebinding = 0xa
-} EFI_DHCP6_EVENT;
-
-///
-/// An IA which carries assigned not temporary address.
-///
-#define EFI_DHCP6_IA_TYPE_NA 3
-///
-/// An IA which carries assigned temporary address.
-///
-#define EFI_DHCP6_IA_TYPE_TA 4
-
-#pragma pack(1)
-///
-/// EFI_DHCP6_PACKET_OPTION
-/// defines the format of the DHCPv6 option, See RFC 3315 for more information.
-/// This data structure is used to reference option data that is packed in the DHCPv6 packet.
-///
-typedef struct {
- ///
- /// The DHCPv6 option code, stored in network order.
- ///
- UINT16 OpCode;
- ///
- /// Length of the DHCPv6 option data, stored in network order.
- /// From the first byte to the last byte of the Data field.
- ///
- UINT16 OpLen;
- ///
- /// The data for the DHCPv6 option, stored in network order.
- ///
- UINT8 Data[1];
-} EFI_DHCP6_PACKET_OPTION;
-
-///
-/// EFI_DHCP6_HEADER
-/// defines the format of the DHCPv6 header. See RFC 3315 for more information.
-///
-typedef struct{
- ///
- /// The DHCPv6 transaction ID.
- ///
- UINT32 MessageType:8;
- ///
- /// The DHCPv6 message type.
- ///
- UINT32 TransactionId:24;
-} EFI_DHCP6_HEADER;
-
-///
-/// EFI_DHCP6_PACKET
-/// defines the format of the DHCPv6 packet. See RFC 3315 for more information.
-///
-typedef struct {
- ///
- /// Size of the EFI_DHCP6_PACKET buffer.
- ///
- UINT32 Size;
- ///
- /// Length of the EFI_DHCP6_PACKET from the first byte of the Header field to the last
- /// byte of the Option[] field.
- ///
- UINT32 Length;
- struct{
- ///
- /// The DHCPv6 packet header.
- ///
- EFI_DHCP6_HEADER Header;
- ///
- /// Start of the DHCPv6 packed option data.
- ///
- UINT8 Option[1];
- } Dhcp6;
-} EFI_DHCP6_PACKET;
-
-#pragma pack()
-
-typedef struct {
- ///
- /// Length of DUID in octects.
- ///
- UINT16 Length;
- ///
- /// Array of DUID octects.
- ///
- UINT8 Duid[1];
-} EFI_DHCP6_DUID;
-
-typedef struct {
- ///
- /// Initial retransmission timeout.
- ///
- UINT32 Irt;
- ///
- /// Maximum retransmission count for one packet. If Mrc is zero, there's no upper limit
- /// for retransmission count.
- ///
- UINT32 Mrc;
- ///
- /// Maximum retransmission timeout for each retry. It's the upper bound of the number of
- /// retransmission timeout. If Mrt is zero, there is no upper limit for retransmission
- /// timeout.
- ///
- UINT32 Mrt;
- ///
- /// Maximum retransmission duration for one packet. It's the upper bound of the numbers
- /// the client may retransmit a message. If Mrd is zero, there's no upper limit for
- /// retransmission duration.
- ///
- UINT32 Mrd;
-} EFI_DHCP6_RETRANSMISSION;
-
-typedef struct {
- ///
- /// The IPv6 address.
- ///
- EFI_IPv6_ADDRESS IpAddress;
- ///
- /// The preferred lifetime in unit of seconds for the IPv6 address.
- ///
- UINT32 PreferredLifetime;
- ///
- /// The valid lifetime in unit of seconds for the IPv6 address.
- ///
- UINT32 ValidLifetime;
-} EFI_DHCP6_IA_ADDRESS;
-
-typedef struct {
- UINT16 Type; ///< Type for an IA.
- UINT32 IaId; ///< The identifier for an IA.
-} EFI_DHCP6_IA_DESCRIPTOR;
-
-typedef struct {
- ///
- /// The descriptor for IA.
- ///
- EFI_DHCP6_IA_DESCRIPTOR Descriptor;
- ///
- /// The state of the configured IA.
- ///
- EFI_DHCP6_STATE State;
- ///
- /// Pointer to the cached latest Reply packet. May be NULL if no packet is cached.
- ///
- EFI_DHCP6_PACKET *ReplyPacket;
- ///
- /// Number of IPv6 addresses of the configured IA.
- ///
- UINT32 IaAddressCount;
- ///
- /// List of the IPv6 addresses of the configured IA. When the state of the configured IA is
- /// in Dhcp6Bound, Dhcp6Renewing and Dhcp6Rebinding, the IPv6 addresses are usable.
- ///
- EFI_DHCP6_IA_ADDRESS IaAddress[1];
-} EFI_DHCP6_IA;
-
-typedef struct {
- ///
- /// Pointer to the DHCPv6 unique identifier. The caller is responsible for freeing this buffer.
- ///
- EFI_DHCP6_DUID *ClientId;
- ///
- /// Pointer to the configured IA of current instance. The caller can free this buffer after
- /// using it.
- ///
- EFI_DHCP6_IA *Ia;
-} EFI_DHCP6_MODE_DATA;
-
-/**
- EFI_DHCP6_CALLBACK is provided by the consumer of the EFI DHCPv6 Protocol instance to
- intercept events that occurs in the DHCPv6 S.A.R.R process.
-
- @param[in] This Pointer to the EFI_DHCP6_PROTOCOL instance that is used to configure this
- callback function.
- @param[in] Context Pointer to the context that is initialized by EFI_DHCP6_PROTOCOL.Configure().
- @param[in] CurrentState The current state of the configured IA.
- @param[in] Dhcp6Event The event that occurs in the current state, which usually means a state transition.
- @param[in] Packet Pointer to the DHCPv6 packet that is about to be sent or has been received.
- The EFI DHCPv6 Protocol instance is responsible for freeing the buffer.
- @param[out] NewPacket Pointer to the new DHCPv6 packet to overwrite the Packet. NewPacket can not
- share the buffer with Packet. If *NewPacket is not NULL, the EFI DHCPv6
- Protocol instance is responsible for freeing the buffer.
-
- @retval EFI_SUCCESS Tell the EFI DHCPv6 Protocol instance to continue the DHCPv6 S.A.R.R process.
- @retval EFI_ABORTED Tell the EFI DHCPv6 Protocol instance to abort the DHCPv6 S.A.R.R process,
- and the state of the configured IA will be transferred to Dhcp6Init.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_CALLBACK)(
- IN EFI_DHCP6_PROTOCOL *This,
- IN VOID *Context,
- IN EFI_DHCP6_STATE CurrentState,
- IN EFI_DHCP6_EVENT Dhcp6Event,
- IN EFI_DHCP6_PACKET *Packet,
- OUT EFI_DHCP6_PACKET **NewPacket OPTIONAL
- );
-
-typedef struct {
- ///
- /// The callback function is to intercept various events that occur in the DHCPv6 S.A.R.R
- /// process. Set to NULL to ignore all those events.
- ///
- EFI_DHCP6_CALLBACK Dhcp6Callback;
- ///
- /// Pointer to the context that will be passed to Dhcp6Callback.
- ///
- VOID *CallbackContext;
- ///
- /// Number of the DHCPv6 options in the OptionList.
- ///
- UINT32 OptionCount;
- ///
- /// List of the DHCPv6 options to be included in Solicit and Request packet. The buffer
- /// can be freed after EFI_DHCP6_PROTOCOL.Configure() returns. Ignored if
- /// OptionCount is zero. OptionList should not contain Client Identifier option
- /// and any IA option, which will be appended by EFI DHCPv6 Protocol instance
- /// automatically.
- ///
- EFI_DHCP6_PACKET_OPTION **OptionList;
- ///
- /// The descriptor for the IA of the EFI DHCPv6 Protocol instance.
- ///
- EFI_DHCP6_IA_DESCRIPTOR IaDescriptor;
- ///
- /// If not NULL, the event will be signaled when any IPv6 address information of the
- /// configured IA is updated, including IPv6 address, preferred lifetime and valid
- /// lifetime, or the DHCPv6 S.A.R.R process fails. Otherwise, Start(),
- /// renewrebind(), decline(), release() and stop() will be blocking
- /// operations, and they will wait for the exchange process completion or failure.
- ///
- EFI_EVENT IaInfoEvent;
- ///
- /// If TRUE, the EFI DHCPv6 Protocol instance is willing to accept Reconfigure packet.
- /// Otherwise, it will ignore it. Reconfigure Accept option can not be specified through
- /// OptionList parameter.
- ///
- BOOLEAN ReconfigureAccept;
- ///
- /// If TRUE, the EFI DHCPv6 Protocol instance will send Solicit packet with Rapid
- /// Commit option. Otherwise, Rapid Commit option will not be included in Solicit
- /// packet. Rapid Commit option can not be specified through OptionList parameter.
- ///
- BOOLEAN RapidCommit;
- ///
- /// Parameter to control Solicit packet retransmission behavior. The
- /// buffer can be freed after EFI_DHCP6_PROTOCOL.Configure() returns.
- ///
- EFI_DHCP6_RETRANSMISSION *SolicitRetransmission;
-} EFI_DHCP6_CONFIG_DATA;
-
-/**
- EFI_DHCP6_INFO_CALLBACK is provided by the consumer of the EFI DHCPv6 Protocol
- instance to intercept events that occurs in the DHCPv6 Information Request exchange process.
-
- @param[in] This Pointer to the EFI_DHCP6_PROTOCOL instance that is used to configure this
- callback function.
- @param[in] Context Pointer to the context that is initialized in the EFI_DHCP6_PROTOCOL.InfoRequest().
- @param[in] Packet Pointer to Reply packet that has been received. The EFI DHCPv6 Protocol instance is
- responsible for freeing the buffer.
-
- @retval EFI_SUCCESS Tell the EFI DHCPv6 Protocol instance to finish Information Request exchange process.
- @retval EFI_NOT_READY Tell the EFI DHCPv6 Protocol instance to continue Information Request exchange process.
- @retval EFI_ABORTED Tell the EFI DHCPv6 Protocol instance to abort the Information Request exchange process.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_INFO_CALLBACK)(
- IN EFI_DHCP6_PROTOCOL *This,
- IN VOID *Context,
- IN EFI_DHCP6_PACKET *Packet
- );
-
-/**
- Retrieve the current operating mode data and configuration data for the EFI DHCPv6 Protocol instance.
-
- @param[in] This Pointer to the EFI_DHCP6_PROTOCOL instance.
- @param[out] Dhcp6ModeData Pointer to the DHCPv6 mode data structure. The caller is responsible for freeing this
- structure and each reference buffer.
- @param[out] Dhcp6ConfigData Pointer to the DHCPv6 configuration data structure. The caller is responsible for
- freeing this structure and each reference buffer.
-
- @retval EFI_SUCCESS The mode data was returned.
- @retval EFI_ACCESS_DENIED The EFI DHCPv6 Protocol instance has not been configured when Dhcp6ConfigData is not NULL.
- @retval EFI_INVALID_PARAMETER One or more following conditions are TRUE:
- - This is NULL.
- - Both Dhcp6ConfigData and Dhcp6ModeData are NULL.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_GET_MODE_DATA)(
- IN EFI_DHCP6_PROTOCOL *This,
- OUT EFI_DHCP6_MODE_DATA *Dhcp6ModeData OPTIONAL,
- OUT EFI_DHCP6_CONFIG_DATA *Dhcp6ConfigData OPTIONAL
- );
-
-/**
- Initialize or clean up the configuration data for the EFI DHCPv6 Protocol instance.
-
- The Configure() function is used to initialize or clean up the configuration data of the EFI
- DHCPv6 Protocol instance.
- - When Dhcp6CfgData is not NULL and Configure() is called successfully, the
- configuration data will be initialized in the EFI DHCPv6 Protocol instance and the state of the
- configured IA will be transferred into Dhcp6Init.
- - When Dhcp6CfgData is NULL and Configure() is called successfully, the configuration
- data will be cleaned up and no IA will be associated with the EFI DHCPv6 Protocol instance.
-
- To update the configuration data for an EFI DCHPv6 Protocol instance, the original data must be
- cleaned up before setting the new configuration data.
-
- @param[in] This Pointer to the EFI_DHCP6_PROTOCOL instance.
- @param[in] Dhcp6CfgData Pointer to the DHCPv6 configuration data structure.
-
- @retval EFI_SUCCESS The mode data was returned.
- @retval EFI_INVALID_PARAMETER One or more following conditions are TRUE
- - This is NULL.
- - OptionCount > 0 and OptionList is NULL.
- - OptionList is not NULL, and Client Id option, Reconfigure Accept option,
- Rapid Commit option or any IA option is specified in the OptionList.
- - IaDescriptor.Type is neither EFI_DHCP6_IA_TYPE_NA nor EFI_DHCP6_IA_TYPE_NA.
- - IaDescriptor is not unique.
- - Both IaInfoEvent and SolicitRetransimssion are NULL.
- - SolicitRetransmission is not NULL, and both SolicitRetransimssion->Mrc and
- SolicitRetransmission->Mrd are zero.
- @retval EFI_ACCESS_DENIED The EFI DHCPv6 Protocol instance has been already configured
- when Dhcp6CfgData is not NULL.
- The EFI DHCPv6 Protocol instance has already started the
- DHCPv6 S.A.R.R when Dhcp6CfgData is NULL.
- @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.
- @retval EFI_DEVICE_ERROR An unexpected system or network error occurred.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_CONFIGURE)(
- IN EFI_DHCP6_PROTOCOL *This,
- IN EFI_DHCP6_CONFIG_DATA *Dhcp6CfgData OPTIONAL
- );
-
-/**
- Start the DHCPv6 S.A.R.R process.
-
- The Start() function starts the DHCPv6 S.A.R.R process. This function can be called only when
- the state of the configured IA is in the Dhcp6Init state. If the DHCPv6 S.A.R.R process completes
- successfully, the state of the configured IA will be transferred through Dhcp6Selecting and
- Dhcp6Requesting to Dhcp6Bound state. The update of the IPv6 addresses will be notified through
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent. At the time when each event occurs in this process, the
- callback function set by EFI_DHCP6_PROTOCOL.Configure() will be called and the user can take
- this opportunity to control the process. If EFI_DHCP6_CONFIG_DATA.IaInfoEvent is NULL, the
- Start() function call is a blocking operation. It will return after the DHCPv6 S.A.R.R process
- completes or aborted by users. If the process is aborted by system or network error, the state of
- the configured IA will be transferred to Dhcp6Init. The Start() function can be called again to
- restart the process.
-
- @param[in] This Pointer to the EFI_DHCP6_PROTOCOL instance.
-
- @retval EFI_SUCCESS The DHCPv6 S.A.R.R process is completed and at least one IPv6
- address has been bound to the configured IA when
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent is NULL.
- The DHCPv6 S.A.R.R process is started when
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent is not NULL.
- @retval EFI_ACCESS_DENIED The EFI DHCPv6 Child instance hasn't been configured.
- @retval EFI_INVALID_PARAMETER This is NULL.
- @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.
- @retval EFI_ALREADY_STARTED The DHCPv6 S.A.R.R process has already started.
- @retval EFI_DEVICE_ERROR An unexpected network or system error occurred.
- @retval EFI_NO_RESPONSE The DHCPv6 S.A.R.R process failed because of no response.
- @retval EFI_NO_MAPPING No IPv6 address has been bound to the configured IA after the
- DHCPv6 S.A.R.R process.
- @retval EFI_ABORTED The DHCPv6 S.A.R.R process aborted by user.
- @retval EFI_NO_MEDIA There was a media error.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_START)(
- IN EFI_DHCP6_PROTOCOL *This
- );
-
-/**
- Request configuration information without the assignment of any IA addresses of the client.
-
- The InfoRequest() function is used to request configuration information without the assignment
- of any IPv6 address of the client. Client sends out Information Request packet to obtain
- the required configuration information, and DHCPv6 server responds with Reply packet containing
- the information for the client. The received Reply packet will be passed to the user by
- ReplyCallback function. If user returns EFI_NOT_READY from ReplyCallback, the EFI DHCPv6
- Protocol instance will continue to receive other Reply packets unless timeout according to
- the Retransmission parameter. Otherwise, the Information Request exchange process will be
- finished successfully if user returns EFI_SUCCESS from ReplyCallback.
-
- @param[in] This Pointer to the EFI_DHCP6_PROTOCOL instance.
- @param[in] SendClientId If TRUE, the EFI DHCPv6 Protocol instance will build Client
- Identifier option and include it into Information Request
- packet. If FALSE, Client Identifier option will not be included.
- Client Identifier option can not be specified through OptionList
- parameter.
- @param[in] OptionRequest Pointer to the Option Request option in the Information Request
- packet. Option Request option can not be specified through
- OptionList parameter.
- @param[in] OptionCount Number of options in OptionList.
- @param[in] OptionList List of other DHCPv6 options. These options will be appended
- to the Option Request option. The caller is responsible for
- freeing this buffer. Type is defined in EFI_DHCP6_PROTOCOL.GetModeData().
- @param[in] Retransmission Parameter to control Information Request packet retransmission
- behavior. The buffer can be freed after EFI_DHCP6_PROTOCOL.InfoRequest()
- returns.
- @param[in] TimeoutEvent If not NULL, this event is signaled when the information request
- exchange aborted because of no response. If NULL, the function
- call is a blocking operation; and it will return after the
- information-request exchange process finish or aborted by users.
- @param[in] ReplyCallback The callback function is to intercept various events that occur
- in the Information Request exchange process. It should not be
- set to NULL.
- @param[in] CallbackContext Pointer to the context that will be passed to ReplyCallback.
-
- @retval EFI_SUCCESS The DHCPv6 S.A.R.R process is completed and at least one IPv6
- @retval EFI_SUCCESS The DHCPv6 information request exchange process completed
- when TimeoutEvent is NULL. Information Request packet has been
- sent to DHCPv6 server when TimeoutEvent is not NULL.
- @retval EFI_INVALID_PARAMETER One or more following conditions are TRUE:
- - This is NULL.
- - OptionRequest is NULL or OptionRequest->OpCode is invalid.
- - OptionCount > 0 and OptionList is NULL.
- - OptionList is not NULL, and Client Identify option or
- Option Request option is specified in the OptionList.
- - Retransimssion is NULL.
- - Both Retransimssion->Mrc and Retransmission->Mrd are zero.
- - ReplyCallback is NULL.
- @retval EFI_DEVICE_ERROR An unexpected network or system error occurred.
- @retval EFI_NO_RESPONSE The DHCPv6 information request exchange process failed
- because of no response, or not all requested-options are
- responded by DHCPv6 servers when Timeout happened.
- @retval EFI_ABORTED The DHCPv6 information request exchange process aborted by user.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_INFO_REQUEST)(
- IN EFI_DHCP6_PROTOCOL *This,
- IN BOOLEAN SendClientId,
- IN EFI_DHCP6_PACKET_OPTION *OptionRequest,
- IN UINT32 OptionCount,
- IN EFI_DHCP6_PACKET_OPTION *OptionList[] OPTIONAL,
- IN EFI_DHCP6_RETRANSMISSION *Retransmission,
- IN EFI_EVENT TimeoutEvent OPTIONAL,
- IN EFI_DHCP6_INFO_CALLBACK ReplyCallback,
- IN VOID *CallbackContext OPTIONAL
- );
-
-/**
- Manually extend the valid and preferred lifetimes for the IPv6 addresses of the configured
- IA and update other configuration parameters by sending Renew or Rebind packet.
-
- The RenewRebind() function is used to manually extend the valid and preferred lifetimes for the
- IPv6 addresses of the configured IA and update other configuration parameters by sending Renew or
- Rebind packet.
- - When RebindRequest is FALSE and the state of the configured IA is Dhcp6Bound, it
- will send Renew packet to the previously DHCPv6 server and transfer the state of the configured
- IA to Dhcp6Renewing. If valid Reply packet received, the state transfers to Dhcp6Bound
- and the valid and preferred timer restarts. If fails, the state transfers to Dhcp6Bound but the
- timer continues.
- - When RebindRequest is TRUE and the state of the configured IA is Dhcp6Bound, it will
- send Rebind packet. If valid Reply packet received, the state transfers to Dhcp6Bound and the
- valid and preferred timer restarts. If fails, the state transfers to Dhcp6Init and the IA can't
- be used.
-
- @param[in] This Pointer to the EFI_DHCP4_PROTOCOL instance.
- @param[in] RebindRequest If TRUE, it will send Rebind packet and enter the Dhcp6Rebinding state.
- Otherwise, it will send Renew packet and enter the Dhcp6Renewing state.
-
- @retval EFI_SUCCESS The DHCPv6 renew/rebind exchange process has completed and at
- least one IPv6 address of the configured IA has been bound again
- when EFI_DHCP6_CONFIG_DATA.IaInfoEvent is NULL.
- The EFI DHCPv6 Protocol instance has sent Renew or Rebind packet
- when EFI_DHCP6_CONFIG_DATA.IaInfoEvent is not NULL.
- @retval EFI_ACCESS_DENIED The EFI DHCPv6 Child instance hasn't been configured, or the state
- of the configured IA is not in Dhcp6Bound.
- @retval EFI_ALREADY_STARTED The state of the configured IA has already entered Dhcp6Renewing
- when RebindRequest is FALSE.
- The state of the configured IA has already entered Dhcp6Rebinding
- when RebindRequest is TRUE.
- @retval EFI_INVALID_PARAMETER This is NULL.
- @retval EFI_DEVICE_ERROR An unexpected system or system error occurred.
- @retval EFI_NO_RESPONSE The DHCPv6 renew/rebind exchange process failed because of no response.
- @retval EFI_NO_MAPPING No IPv6 address has been bound to the configured IA after the DHCPv6
- renew/rebind exchange process.
- @retval EFI_ABORTED The DHCPv6 renew/rebind exchange process aborted by user.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_RENEW_REBIND)(
- IN EFI_DHCP6_PROTOCOL *This,
- IN BOOLEAN RebindRequest
- );
-
-/**
- Inform that one or more IPv6 addresses assigned by a server are already in use by
- another node.
-
- The Decline() function is used to manually decline the assignment of IPv6 addresses, which
- have been already used by another node. If all IPv6 addresses of the configured IA are declined
- through this function, the state of the IA will switch through Dhcp6Declining to Dhcp6Init,
- otherwise, the state of the IA will restore to Dhcp6Bound after the declining process. The
- Decline() can only be called when the IA is in Dhcp6Bound state. If the
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent is NULL, this function is a blocking operation. It
- will return after the declining process finishes, or aborted by user.
-
- @param[in] This Pointer to the EFI_DHCP4_PROTOCOL instance.
- @param[in] AddressCount Number of declining IPv6 addresses.
- @param[in] Addresses Pointer to the buffer stored all the declining IPv6 addresses.
-
- @retval EFI_SUCCESS The DHCPv6 decline exchange process has completed when
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent is NULL.
- The EFI DHCPv6 Protocol instance has sent Decline packet when
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent is not NULL.
- @retval EFI_INVALID_PARAMETER One or more following conditions are TRUE
- - This is NULL.
- - AddressCount is zero or Addresses is NULL.
- @retval EFI_NOT_FOUND Any specified IPv6 address is not correlated with the configured IA
- for this instance.
- @retval EFI_ACCESS_DENIED The EFI DHCPv6 Child instance hasn't been configured, or the
- state of the configured IA is not in Dhcp6Bound.
- @retval EFI_DEVICE_ERROR An unexpected network or system error occurred.
- @retval EFI_ABORTED The DHCPv6 decline exchange process aborted by user.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_DECLINE)(
- IN EFI_DHCP6_PROTOCOL *This,
- IN UINT32 AddressCount,
- IN EFI_IPv6_ADDRESS *Addresses
- );
-
-/**
- Release one or more IPv6 addresses associated with the configured IA for current instance.
-
- The Release() function is used to manually release the one or more IPv6 address. If AddressCount
- is zero, it will release all IPv6 addresses of the configured IA. If all IPv6 addresses of the IA
- are released through this function, the state of the IA will switch through Dhcp6Releasing to
- Dhcp6Init, otherwise, the state of the IA will restore to Dhcp6Bound after the releasing process.
- The Release() can only be called when the IA is in Dhcp6Bound state. If the
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent is NULL, the function is a blocking operation. It will return
- after the releasing process finishes, or aborted by user.
-
- @param[in] This Pointer to the EFI_DHCP6_PROTOCOL instance.
- @param[in] AddressCount Number of releasing IPv6 addresses.
- @param[in] Addresses Pointer to the buffer stored all the releasing IPv6 addresses.
- Ignored if AddressCount is zero.
- @retval EFI_SUCCESS The DHCPv6 release exchange process has completed when
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent is NULL.
- The EFI DHCPv6 Protocol instance has sent Release packet when
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent is not NULL.
- @retval EFI_INVALID_PARAMETER One or more following conditions are TRUE
- - This is NULL.
- - AddressCount is not zero or Addresses is NULL.
- @retval EFI_NOT_FOUND Any specified IPv6 address is not correlated with the configured
- IA for this instance.
- @retval EFI_ACCESS_DENIED The EFI DHCPv6 Child instance hasn't been configured, or the
- state of the configured IA is not in Dhcp6Bound.
- @retval EFI_DEVICE_ERROR An unexpected network or system error occurred.
- @retval EFI_ABORTED The DHCPv6 release exchange process aborted by user.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_RELEASE)(
- IN EFI_DHCP6_PROTOCOL *This,
- IN UINT32 AddressCount,
- IN EFI_IPv6_ADDRESS *Addresses
- );
-
-/**
- Stop the DHCPv6 S.A.R.R process.
-
- The Stop() function is used to stop the DHCPv6 S.A.R.R process. If this function is called
- successfully, all the IPv6 addresses of the configured IA will be released and the state of
- the configured IA will be transferred to Dhcp6Init.
-
- @param[in] This Pointer to the EFI_DHCP6_PROTOCOL instance.
-
- @retval EFI_SUCCESS The DHCPv6 S.A.R.R process has been stopped when
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent is NULL.
- The EFI DHCPv6 Protocol instance has sent Release packet if
- need release or has been stopped if needn't, when
- EFI_DHCP6_CONFIG_DATA.IaInfoEvent is not NULL.
- @retval EFI_INVALID_PARAMETER This is NULL.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_STOP)(
- IN EFI_DHCP6_PROTOCOL *This
- );
-
-/**
- Parse the option data in the DHCPv6 packet.
-
- The Parse() function is used to retrieve the option list in the DHCPv6 packet.
-
- @param[in] This Pointer to the EFI_DHCP6_PROTOCOL instance.
-
- @param[in] Packet Pointer to packet to be parsed.
- @param[in] OptionCount On input, the number of entries in the PacketOptionList.
- On output, the number of DHCPv6 options in the Packet.
- @param[in] PacketOptionList List of pointers to the DHCPv6 options in the Packet.
- The OpCode and OpLen in EFI_DHCP6_PACKET_OPTION are
- both stored in network byte order.
- @retval EFI_SUCCESS The packet was successfully parsed.
- @retval EFI_INVALID_PARAMETER One or more following conditions are TRUE
- - This is NULL.
- - Packet is NULL.
- - Packet is not a well-formed DHCPv6 packet.
- - OptionCount is NULL.
- - *OptionCount is not zero and PacketOptionList is NULL.
- @retval EFI_BUFFER_TOO_SMALL *OptionCount is smaller than the number of options that were
- found in the Packet.
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_DHCP6_PARSE)(
- IN EFI_DHCP6_PROTOCOL *This,
- IN EFI_DHCP6_PACKET *Packet,
- IN OUT UINT32 *OptionCount,
- OUT EFI_DHCP6_PACKET_OPTION *PacketOptionList[] OPTIONAL
-);
-
-///
-/// The EFI DHCPv6 Protocol is used to get IPv6 addresses and other configuration parameters
-/// from DHCPv6 servers.
-///
-struct _EFI_DHCP6_PROTOCOL {
- EFI_DHCP6_GET_MODE_DATA GetModeData;
- EFI_DHCP6_CONFIGURE Configure;
- EFI_DHCP6_START Start;
- EFI_DHCP6_INFO_REQUEST InfoRequest;
- EFI_DHCP6_RENEW_REBIND RenewRebind;
- EFI_DHCP6_DECLINE Decline;
- EFI_DHCP6_RELEASE Release;
- EFI_DHCP6_STOP Stop;
- EFI_DHCP6_PARSE Parse;
-};
-
-extern EFI_GUID gEfiDhcp6ProtocolGuid;
-extern EFI_GUID gEfiDhcp6ServiceBindingProtocolGuid;
-
-#endif
|