iPXE
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
Dhcp6.h File Reference

UEFI Dynamic Host Configuration Protocol 6 Definition, which is used to get IPv6 addresses and other configuration parameters from DHCPv6 servers. More...

Go to the source code of this file.

Data Structures

struct  EFI_DHCP6_PACKET_OPTION
 EFI_DHCP6_PACKET_OPTION defines the format of the DHCPv6 option, See RFC 3315 for more information. More...
 
struct  EFI_DHCP6_HEADER
 EFI_DHCP6_HEADER defines the format of the DHCPv6 header. More...
 
struct  EFI_DHCP6_PACKET
 EFI_DHCP6_PACKET defines the format of the DHCPv6 packet. More...
 
struct  EFI_DHCP6_DUID
 
struct  EFI_DHCP6_RETRANSMISSION
 
struct  EFI_DHCP6_IA_ADDRESS
 
struct  EFI_DHCP6_IA_DESCRIPTOR
 
struct  EFI_DHCP6_IA
 
struct  EFI_DHCP6_MODE_DATA
 
struct  EFI_DHCP6_CONFIG_DATA
 
struct  _EFI_DHCP6_PROTOCOL
 The EFI DHCPv6 Protocol is used to get IPv6 addresses and other configuration parameters from DHCPv6 servers. More...
 

Macros

#define EFI_DHCP6_PROTOCOL_GUID
 
#define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID
 
#define EFI_DHCP6_IA_TYPE_NA   3
 An IA which carries assigned not temporary address. More...
 
#define EFI_DHCP6_IA_TYPE_TA   4
 An IA which carries assigned temporary address. More...
 

Typedefs

typedef struct _EFI_DHCP6_PROTOCOL EFI_DHCP6_PROTOCOL
 
typedef EFI_STATUS(EFIAPIEFI_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)
 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. More...
 
typedef EFI_STATUS(EFIAPIEFI_DHCP6_INFO_CALLBACK) (IN EFI_DHCP6_PROTOCOL *This, IN VOID *Context, IN EFI_DHCP6_PACKET *Packet)
 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. More...
 
typedef EFI_STATUS(EFIAPIEFI_DHCP6_GET_MODE_DATA) (IN EFI_DHCP6_PROTOCOL *This, OUT EFI_DHCP6_MODE_DATA *Dhcp6ModeData OPTIONAL, OUT EFI_DHCP6_CONFIG_DATA *Dhcp6ConfigData OPTIONAL)
 Retrieve the current operating mode data and configuration data for the EFI DHCPv6 Protocol instance. More...
 
typedef EFI_STATUS(EFIAPIEFI_DHCP6_CONFIGURE) (IN EFI_DHCP6_PROTOCOL *This, IN EFI_DHCP6_CONFIG_DATA *Dhcp6CfgData OPTIONAL)
 Initialize or clean up the configuration data for the EFI DHCPv6 Protocol instance. More...
 
typedef EFI_STATUS(EFIAPIEFI_DHCP6_START) (IN EFI_DHCP6_PROTOCOL *This)
 Start the DHCPv6 S.A.R.R process. More...
 
typedef EFI_STATUS(EFIAPIEFI_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)
 Request configuration information without the assignment of any IA addresses of the client. More...
 
typedef EFI_STATUS(EFIAPIEFI_DHCP6_RENEW_REBIND) (IN EFI_DHCP6_PROTOCOL *This, IN BOOLEAN RebindRequest)
 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. More...
 
typedef EFI_STATUS(EFIAPIEFI_DHCP6_DECLINE) (IN EFI_DHCP6_PROTOCOL *This, IN UINT32 AddressCount, IN EFI_IPv6_ADDRESS *Addresses)
 Inform that one or more IPv6 addresses assigned by a server are already in use by another node. More...
 
typedef EFI_STATUS(EFIAPIEFI_DHCP6_RELEASE) (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. More...
 
typedef EFI_STATUS(EFIAPIEFI_DHCP6_STOP) (IN EFI_DHCP6_PROTOCOL *This)
 Stop the DHCPv6 S.A.R.R process. More...
 
typedef EFI_STATUS(EFIAPIEFI_DHCP6_PARSE) (IN EFI_DHCP6_PROTOCOL *This, IN EFI_DHCP6_PACKET *Packet, IN OUT UINT32 *OptionCount, OUT EFI_DHCP6_PACKET_OPTION *PacketOptionList[] OPTIONAL)
 Parse the option data in the DHCPv6 packet. More...
 

Enumerations

enum  EFI_DHCP6_STATE {
  Dhcp6Init = 0x0, Dhcp6Selecting = 0x1, Dhcp6Requesting = 0x2, Dhcp6Declining = 0x3,
  Dhcp6Confirming = 0x4, Dhcp6Releasing = 0x5, Dhcp6Bound = 0x6, Dhcp6Renewing = 0x7,
  Dhcp6Rebinding = 0x8
}
 
enum  EFI_DHCP6_EVENT {
  Dhcp6SendSolicit = 0x0, Dhcp6RcvdAdvertise = 0x1, Dhcp6SelectAdvertise = 0x2, Dhcp6SendRequest = 0x3,
  Dhcp6RcvdReply = 0x4, Dhcp6RcvdReconfigure = 0x5, Dhcp6SendDecline = 0x6, Dhcp6SendConfirm = 0x7,
  Dhcp6SendRelease = 0x8, Dhcp6EnterRenewing = 0x9, Dhcp6EnterRebinding = 0xa
}
 

Functions

 FILE_LICENCE (BSD2_PATENT)
 

Variables

EFI_GUID gEfiDhcp6ProtocolGuid
 
EFI_GUID gEfiDhcp6ServiceBindingProtocolGuid
 

Detailed Description

UEFI Dynamic Host Configuration Protocol 6 Definition, which is used to get IPv6 addresses and other configuration parameters from DHCPv6 servers.

Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Revision Reference:
This Protocol is introduced in UEFI Specification 2.2

Definition in file Dhcp6.h.

Macro Definition Documentation

◆ EFI_DHCP6_PROTOCOL_GUID

#define EFI_DHCP6_PROTOCOL_GUID
Value:
{ \
0x87c8bad7, 0x595, 0x4053, {0x82, 0x97, 0xde, 0xde, 0x39, 0x5f, 0x5d, 0x5b } \
}

Definition at line 18 of file Dhcp6.h.

◆ EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID

#define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID
Value:
{ \
0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, 0xd5 } \
}

Definition at line 23 of file Dhcp6.h.

◆ EFI_DHCP6_IA_TYPE_NA

#define EFI_DHCP6_IA_TYPE_NA   3

An IA which carries assigned not temporary address.

Definition at line 136 of file Dhcp6.h.

◆ EFI_DHCP6_IA_TYPE_TA

#define EFI_DHCP6_IA_TYPE_TA   4

An IA which carries assigned temporary address.

Definition at line 140 of file Dhcp6.h.

Typedef Documentation

◆ EFI_DHCP6_PROTOCOL

Definition at line 28 of file Dhcp6.h.

◆ EFI_DHCP6_CALLBACK

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)

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.

Parameters
[in]ThisPointer to the EFI_DHCP6_PROTOCOL instance that is used to configure this callback function.
[in]ContextPointer to the context that is initialized by EFI_DHCP6_PROTOCOL.Configure().
[in]CurrentStateThe current state of the configured IA.
[in]Dhcp6EventThe event that occurs in the current state, which usually means a state transition.
[in]PacketPointer 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.
[out]NewPacketPointer 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.
Return values
EFI_SUCCESSTell the EFI DHCPv6 Protocol instance to continue the DHCPv6 S.A.R.R process.
EFI_ABORTEDTell 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.

Definition at line 320 of file Dhcp6.h.

◆ EFI_DHCP6_INFO_CALLBACK

typedef EFI_STATUS(EFIAPI * EFI_DHCP6_INFO_CALLBACK) (IN EFI_DHCP6_PROTOCOL *This, IN VOID *Context, IN EFI_DHCP6_PACKET *Packet)

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.

Parameters
[in]ThisPointer to the EFI_DHCP6_PROTOCOL instance that is used to configure this callback function.
[in]ContextPointer to the context that is initialized in the EFI_DHCP6_PROTOCOL.InfoRequest().
[in]PacketPointer to Reply packet that has been received. The EFI DHCPv6 Protocol instance is responsible for freeing the buffer.
Return values
EFI_SUCCESSTell the EFI DHCPv6 Protocol instance to finish Information Request exchange process.
EFI_NOT_READYTell the EFI DHCPv6 Protocol instance to continue Information Request exchange process.
EFI_ABORTEDTell the EFI DHCPv6 Protocol instance to abort the Information Request exchange process.

Definition at line 399 of file Dhcp6.h.

◆ EFI_DHCP6_GET_MODE_DATA

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)

Retrieve the current operating mode data and configuration data for the EFI DHCPv6 Protocol instance.

Parameters
[in]ThisPointer to the EFI_DHCP6_PROTOCOL instance.
[out]Dhcp6ModeDataPointer to the DHCPv6 mode data structure. The caller is responsible for freeing this structure and each reference buffer.
[out]Dhcp6ConfigDataPointer to the DHCPv6 configuration data structure. The caller is responsible for freeing this structure and each reference buffer.
Return values
EFI_SUCCESSThe mode data was returned.
EFI_ACCESS_DENIEDThe EFI DHCPv6 Protocol instance has not been configured when Dhcp6ConfigData is not NULL.
EFI_INVALID_PARAMETEROne or more following conditions are TRUE:
  • This is NULL.
  • Both Dhcp6ConfigData and Dhcp6ModeData are NULL.

Definition at line 423 of file Dhcp6.h.

◆ EFI_DHCP6_CONFIGURE

typedef EFI_STATUS(EFIAPI * EFI_DHCP6_CONFIGURE) (IN EFI_DHCP6_PROTOCOL *This, IN EFI_DHCP6_CONFIG_DATA *Dhcp6CfgData 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.

Parameters
[in]ThisPointer to the EFI_DHCP6_PROTOCOL instance.
[in]Dhcp6CfgDataPointer to the DHCPv6 configuration data structure.
Return values
EFI_SUCCESSThe mode data was returned.
EFI_INVALID_PARAMETEROne 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.
EFI_ACCESS_DENIEDThe 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.
EFI_OUT_OF_RESOURCESRequired system resources could not be allocated.
EFI_DEVICE_ERRORAn unexpected system or network error occurred.

Definition at line 467 of file Dhcp6.h.

◆ EFI_DHCP6_START

typedef EFI_STATUS(EFIAPI * EFI_DHCP6_START) (IN EFI_DHCP6_PROTOCOL *This)

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.

Parameters
[in]ThisPointer to the EFI_DHCP6_PROTOCOL instance.
Return values
EFI_SUCCESSThe 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.
EFI_ACCESS_DENIEDThe EFI DHCPv6 Child instance hasn't been configured.
EFI_INVALID_PARAMETERThis is NULL.
EFI_OUT_OF_RESOURCESRequired system resources could not be allocated.
EFI_ALREADY_STARTEDThe DHCPv6 S.A.R.R process has already started.
EFI_DEVICE_ERRORAn unexpected network or system error occurred.
EFI_NO_RESPONSEThe DHCPv6 S.A.R.R process failed because of no response.
EFI_NO_MAPPINGNo IPv6 address has been bound to the configured IA after the DHCPv6 S.A.R.R process.
EFI_ABORTEDThe DHCPv6 S.A.R.R process aborted by user.
EFI_NO_MEDIAThere was a media error.

Definition at line 508 of file Dhcp6.h.

◆ EFI_DHCP6_INFO_REQUEST

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)

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.

Parameters
[in]ThisPointer to the EFI_DHCP6_PROTOCOL instance.
[in]SendClientIdIf 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.
[in]OptionRequestPointer to the Option Request option in the Information Request packet. Option Request option can not be specified through OptionList parameter.
[in]OptionCountNumber of options in OptionList.
[in]OptionListList 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().
[in]RetransmissionParameter to control Information Request packet retransmission behavior. The buffer can be freed after EFI_DHCP6_PROTOCOL.InfoRequest() returns.
[in]TimeoutEventIf 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.
[in]ReplyCallbackThe callback function is to intercept various events that occur in the Information Request exchange process. It should not be set to NULL.
[in]CallbackContextPointer to the context that will be passed to ReplyCallback.
Return values
EFI_SUCCESSThe DHCPv6 S.A.R.R process is completed and at least one IPv6
EFI_SUCCESSThe DHCPv6 information request exchange process completed when TimeoutEvent is NULL. Information Request packet has been sent to DHCPv6 server when TimeoutEvent is not NULL.
EFI_INVALID_PARAMETEROne 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.
EFI_DEVICE_ERRORAn unexpected network or system error occurred.
EFI_NO_RESPONSEThe DHCPv6 information request exchange process failed because of no response, or not all requested-options are responded by DHCPv6 servers when Timeout happened.
EFI_ABORTEDThe DHCPv6 information request exchange process aborted by user.

Definition at line 571 of file Dhcp6.h.

◆ EFI_DHCP6_RENEW_REBIND

typedef EFI_STATUS(EFIAPI * EFI_DHCP6_RENEW_REBIND) (IN EFI_DHCP6_PROTOCOL *This, IN BOOLEAN RebindRequest)

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.
Parameters
[in]ThisPointer to the EFI_DHCP4_PROTOCOL instance.
[in]RebindRequestIf TRUE, it will send Rebind packet and enter the Dhcp6Rebinding state. Otherwise, it will send Renew packet and enter the Dhcp6Renewing state.
Return values
EFI_SUCCESSThe 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.
EFI_ACCESS_DENIEDThe EFI DHCPv6 Child instance hasn't been configured, or the state of the configured IA is not in Dhcp6Bound.
EFI_ALREADY_STARTEDThe 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.
EFI_INVALID_PARAMETERThis is NULL.
EFI_DEVICE_ERRORAn unexpected system or system error occurred.
EFI_NO_RESPONSEThe DHCPv6 renew/rebind exchange process failed because of no response.
EFI_NO_MAPPINGNo IPv6 address has been bound to the configured IA after the DHCPv6 renew/rebind exchange process.
EFI_ABORTEDThe DHCPv6 renew/rebind exchange process aborted by user.

Definition at line 625 of file Dhcp6.h.

◆ EFI_DHCP6_DECLINE

typedef EFI_STATUS(EFIAPI * EFI_DHCP6_DECLINE) (IN EFI_DHCP6_PROTOCOL *This, IN UINT32 AddressCount, IN EFI_IPv6_ADDRESS *Addresses)

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.

Parameters
[in]ThisPointer to the EFI_DHCP4_PROTOCOL instance.
[in]AddressCountNumber of declining IPv6 addresses.
[in]AddressesPointer to the buffer stored all the declining IPv6 addresses.
Return values
EFI_SUCCESSThe 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.
EFI_INVALID_PARAMETEROne or more following conditions are TRUE
  • This is NULL.
  • AddressCount is zero or Addresses is NULL.
EFI_NOT_FOUNDAny specified IPv6 address is not correlated with the configured IA for this instance.
EFI_ACCESS_DENIEDThe EFI DHCPv6 Child instance hasn't been configured, or the state of the configured IA is not in Dhcp6Bound.
EFI_DEVICE_ERRORAn unexpected network or system error occurred.
EFI_ABORTEDThe DHCPv6 decline exchange process aborted by user.

Definition at line 663 of file Dhcp6.h.

◆ EFI_DHCP6_RELEASE

typedef EFI_STATUS(EFIAPI * EFI_DHCP6_RELEASE) (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.

Parameters
[in]ThisPointer to the EFI_DHCP6_PROTOCOL instance.
[in]AddressCountNumber of releasing IPv6 addresses.
[in]AddressesPointer to the buffer stored all the releasing IPv6 addresses. Ignored if AddressCount is zero.
Return values
EFI_SUCCESSThe 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.
EFI_INVALID_PARAMETEROne or more following conditions are TRUE
  • This is NULL.
  • AddressCount is not zero or Addresses is NULL.
EFI_NOT_FOUNDAny specified IPv6 address is not correlated with the configured IA for this instance.
EFI_ACCESS_DENIEDThe EFI DHCPv6 Child instance hasn't been configured, or the state of the configured IA is not in Dhcp6Bound.
EFI_DEVICE_ERRORAn unexpected network or system error occurred.
EFI_ABORTEDThe DHCPv6 release exchange process aborted by user.

Definition at line 701 of file Dhcp6.h.

◆ EFI_DHCP6_STOP

typedef EFI_STATUS(EFIAPI * EFI_DHCP6_STOP) (IN EFI_DHCP6_PROTOCOL *This)

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.

Parameters
[in]ThisPointer to the EFI_DHCP6_PROTOCOL instance.
Return values
EFI_SUCCESSThe 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.
EFI_INVALID_PARAMETERThis is NULL.

Definition at line 726 of file Dhcp6.h.

◆ EFI_DHCP6_PARSE

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)

Parse the option data in the DHCPv6 packet.

The Parse() function is used to retrieve the option list in the DHCPv6 packet.

Parameters
[in]ThisPointer to the EFI_DHCP6_PROTOCOL instance.
[in]PacketPointer to packet to be parsed.
[in]OptionCountOn input, the number of entries in the PacketOptionList. On output, the number of DHCPv6 options in the Packet.
[in]PacketOptionListList 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.
Return values
EFI_SUCCESSThe packet was successfully parsed.
EFI_INVALID_PARAMETEROne 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.
EFI_BUFFER_TOO_SMALL*OptionCount is smaller than the number of options that were found in the Packet.

Definition at line 756 of file Dhcp6.h.

Enumeration Type Documentation

◆ EFI_DHCP6_STATE

Enumerator
Dhcp6Init 

The EFI DHCPv6 Protocol instance is configured, and start() needs to be called.

Dhcp6Selecting 

A Solicit packet is sent out to discover DHCPv6 server, and the EFI DHCPv6 Protocol instance is collecting Advertise packets.

Dhcp6Requesting 

A Request is sent out to the DHCPv6 server, and the EFI DHCPv6 Protocol instance is waiting for Reply packet.

Dhcp6Declining 

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.

Dhcp6Confirming 

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.

Dhcp6Releasing 

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.

Dhcp6Bound 

The DHCPv6 S.A.R.R process is completed for the configured IA.

Dhcp6Renewing 

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.

Dhcp6Rebinding 

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.

Definition at line 30 of file Dhcp6.h.

30  {
31  ///
32  /// The EFI DHCPv6 Protocol instance is configured, and start() needs
33  /// to be called
34  ///
35  Dhcp6Init = 0x0,
36  ///
37  /// A Solicit packet is sent out to discover DHCPv6 server, and the EFI
38  /// DHCPv6 Protocol instance is collecting Advertise packets.
39  ///
40  Dhcp6Selecting = 0x1,
41  ///
42  /// A Request is sent out to the DHCPv6 server, and the EFI DHCPv6
43  /// Protocol instance is waiting for Reply packet.
44  ///
45  Dhcp6Requesting = 0x2,
46  ///
47  /// A Decline packet is sent out to indicate one or more addresses of the
48  /// configured IA are in use by another node, and the EFI DHCPv6.
49  /// Protocol instance is waiting for Reply packet.
50  ///
51  Dhcp6Declining = 0x3,
52  ///
53  /// A Confirm packet is sent out to confirm the IPv6 addresses of the
54  /// configured IA, and the EFI DHCPv6 Protocol instance is waiting for Reply packet.
55  ///
56  Dhcp6Confirming = 0x4,
57  ///
58  /// A Release packet is sent out to release one or more IPv6 addresses of
59  /// the configured IA, and the EFI DHCPv6 Protocol instance is waiting for Reply packet.
60  ///
61  Dhcp6Releasing = 0x5,
62  ///
63  /// The DHCPv6 S.A.R.R process is completed for the configured IA.
64  ///
65  Dhcp6Bound = 0x6,
66  ///
67  /// A Renew packet is sent out to extend lifetime for the IPv6 addresses of
68  /// the configured IA, and the EFI DHCPv6 Protocol instance is waiting for Reply packet.
69  ///
70  Dhcp6Renewing = 0x7,
71  ///
72  /// A Rebind packet is sent out to extend lifetime for the IPv6 addresses of
73  /// the configured IA, and the EFI DHCPv6 Protocol instance is waiting for Reply packet.
74  ///
75  Dhcp6Rebinding = 0x8
The DHCPv6 S.A.R.R process is completed for the configured IA.
Definition: Dhcp6.h:65
A Release packet is sent out to release one or more IPv6 addresses of the configured IA,...
Definition: Dhcp6.h:61
A Renew packet is sent out to extend lifetime for the IPv6 addresses of the configured IA,...
Definition: Dhcp6.h:70
EFI_DHCP6_STATE
Definition: Dhcp6.h:30
A Confirm packet is sent out to confirm the IPv6 addresses of the configured IA, and the EFI DHCPv6 P...
Definition: Dhcp6.h:56
A Solicit packet is sent out to discover DHCPv6 server, and the EFI DHCPv6 Protocol instance is colle...
Definition: Dhcp6.h:40
A Request is sent out to the DHCPv6 server, and the EFI DHCPv6 Protocol instance is waiting for Reply...
Definition: Dhcp6.h:45
The EFI DHCPv6 Protocol instance is configured, and start() needs to be called.
Definition: Dhcp6.h:35
A Decline packet is sent out to indicate one or more addresses of the configured IA are in use by ano...
Definition: Dhcp6.h:51
A Rebind packet is sent out to extend lifetime for the IPv6 addresses of the configured IA,...
Definition: Dhcp6.h:75

◆ EFI_DHCP6_EVENT

Enumerator
Dhcp6SendSolicit 

A Solicit packet is about to be sent.

The packet is passed to Dhcp6Callback and can be modified or replaced in Dhcp6Callback.

Dhcp6RcvdAdvertise 

An Advertise packet is received and will be passed to Dhcp6Callback.

Dhcp6SelectAdvertise 

It is time for Dhcp6Callback to determine whether select the default Advertise packet by RFC 3315 policy, or overwrite it by specific user policy.

Dhcp6SendRequest 

A Request packet is about to be sent.

The packet is passed to Dhcp6Callback and can be modified or replaced in Dhcp6Callback.

Dhcp6RcvdReply 

A Reply packet is received and will be passed to Dhcp6Callback.

Dhcp6RcvdReconfigure 

A Reconfigure packet is received and will be passed to Dhcp6Callback.

Dhcp6SendDecline 

A Decline packet is about to be sent.

The packet is passed to Dhcp6Callback and can be modified or replaced in Dhcp6Callback.

Dhcp6SendConfirm 

A Confirm packet is about to be sent.

The packet is passed to Dhcp6Callback and can be modified or replaced in Dhcp6Callback.

Dhcp6SendRelease 

A Release packet is about to be sent.

The packet is passed to Dhcp6Callback and can be modified or replaced in Dhcp6Callback.

Dhcp6EnterRenewing 

A Renew packet is about to be sent.

The packet is passed to Dhcp6Callback and can be modified or replaced in Dhcp6Callback.

Dhcp6EnterRebinding 

A Rebind packet is about to be sent.

The packet is passed to Dhcp6Callback and can be modified or replaced in Dhcp6Callback.

Definition at line 78 of file Dhcp6.h.

78  {
79  ///
80  /// A Solicit packet is about to be sent. The packet is passed to Dhcp6Callback and
81  /// can be modified or replaced in Dhcp6Callback.
82  ///
83  Dhcp6SendSolicit = 0x0,
84  ///
85  /// An Advertise packet is received and will be passed to Dhcp6Callback.
86  ///
87  Dhcp6RcvdAdvertise = 0x1,
88  ///
89  /// It is time for Dhcp6Callback to determine whether select the default Advertise
90  /// packet by RFC 3315 policy, or overwrite it by specific user policy.
91  ///
93  ///
94  /// A Request packet is about to be sent. The packet is passed to Dhcp6Callback and
95  /// can be modified or replaced in Dhcp6Callback.
96  ///
97  Dhcp6SendRequest = 0x3,
98  ///
99  /// A Reply packet is received and will be passed to Dhcp6Callback.
100  ///
101  Dhcp6RcvdReply = 0x4,
102  ///
103  /// A Reconfigure packet is received and will be passed to Dhcp6Callback.
104  ///
105  Dhcp6RcvdReconfigure = 0x5,
106  ///
107  /// A Decline packet is about to be sent. The packet is passed to Dhcp6Callback and
108  /// can be modified or replaced in Dhcp6Callback.
109  ///
110  Dhcp6SendDecline = 0x6,
111  ///
112  /// A Confirm packet is about to be sent. The packet is passed to Dhcp6Callback and
113  /// can be modified or replaced in Dhcp6Callback.
114  ///
115  Dhcp6SendConfirm = 0x7,
116  ///
117  /// A Release packet is about to be sent. The packet is passed to Dhcp6Callback and
118  /// can be modified or replaced in Dhcp6Callback.
119  ///
120  Dhcp6SendRelease = 0x8,
121  ///
122  /// A Renew packet is about to be sent. The packet is passed to Dhcp6Callback and
123  /// can be modified or replaced in Dhcp6Callback.
124  ///
125  Dhcp6EnterRenewing = 0x9,
126  ///
127  /// A Rebind packet is about to be sent. The packet is passed to Dhcp6Callback and
128  /// can be modified or replaced in Dhcp6Callback.
129  ///
130  Dhcp6EnterRebinding = 0xa
A Reconfigure packet is received and will be passed to Dhcp6Callback.
Definition: Dhcp6.h:105
A Decline packet is about to be sent.
Definition: Dhcp6.h:110
A Release packet is about to be sent.
Definition: Dhcp6.h:120
A Confirm packet is about to be sent.
Definition: Dhcp6.h:115
A Request packet is about to be sent.
Definition: Dhcp6.h:97
EFI_DHCP6_EVENT
Definition: Dhcp6.h:78
A Rebind packet is about to be sent.
Definition: Dhcp6.h:130
A Reply packet is received and will be passed to Dhcp6Callback.
Definition: Dhcp6.h:101
It is time for Dhcp6Callback to determine whether select the default Advertise packet by RFC 3315 pol...
Definition: Dhcp6.h:92
An Advertise packet is received and will be passed to Dhcp6Callback.
Definition: Dhcp6.h:87
A Renew packet is about to be sent.
Definition: Dhcp6.h:125
A Solicit packet is about to be sent.
Definition: Dhcp6.h:83

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( BSD2_PATENT  )

Variable Documentation

◆ gEfiDhcp6ProtocolGuid

EFI_GUID gEfiDhcp6ProtocolGuid

◆ gEfiDhcp6ServiceBindingProtocolGuid

EFI_GUID gEfiDhcp6ServiceBindingProtocolGuid