4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Dhcp6 support functions declaration.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2009 - 2011, 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 __EFI_DHCP6_UTILITY_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __EFI_DHCP6_UTILITY_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DHCP6_10_BIT_MASK 0x3ff
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Generate client Duid in the format of Duid-llt.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Mode The pointer to the mode of SNP.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL if failed to generate client Id.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others The pointer to the new client id.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_DHCP6_DUID *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6GenerateClientId (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_SIMPLE_NETWORK_MODE *Mode
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copy the Dhcp6 configure data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DstCfg The pointer to the destination configure data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] SorCfg The pointer to the source configure data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Copy the content from SorCfg from DstCfg successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6CopyConfigData (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DHCP6_CONFIG_DATA *DstCfg,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DHCP6_CONFIG_DATA *SorCfg
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Clean up the configure data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] CfgData The pointer to the configure data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6CleanupConfigData (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_DHCP6_CONFIG_DATA *CfgData
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Clean up the mode data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] ModeData The pointer to the mode data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6CleanupModeData (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_DHCP6_MODE_DATA *ModeData
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Calculate the expire time by the algorithm defined in rfc.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Base The base value of the time.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IsFirstRt If TRUE, it is the first time to calculate expire time.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] NeedSigned If TRUE, the the signed factor is needed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return Expire The calculated result for the new expire time.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUINT32
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6CalculateExpireTime (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 Base,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN IsFirstRt,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN NeedSigned
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Calculate the lease time by the algorithm defined in rfc.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IaCb The pointer to the Ia control block.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6CalculateLeaseTime (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN DHCP6_IA_CB *IaCb
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Check whether the addresses are all included by the configured Ia.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Ia The pointer to the Ia.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] AddressCount The number of addresses.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Addresses The pointer to the addresses buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The addresses are all included by the configured IA.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The addresses are not included by the configured IA.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6CheckAddress (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DHCP6_IA *Ia,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 AddressCount,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_IPv6_ADDRESS *Addresses
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Deprive the addresses from current Ia, and generate another eliminated Ia.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Ia The pointer to the Ia.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] AddressCount The number of addresses.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Addresses The pointer to the addresses buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL If failed to generate the deprived Ia.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval others The pointer to the deprived Ia.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_DHCP6_IA *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6DepriveAddress (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DHCP6_IA *Ia,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 AddressCount,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_IPv6_ADDRESS *Addresses
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The dummy ext buffer free callback routine.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Arg The pointer to the parameter.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6DummyExtFree (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Arg
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The callback routine once message transmitted.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Wrap The pointer to the received net buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] EndPoint The pointer to the udp end point.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IoStatus The return status from udp io.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Context The opaque parameter to the function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6OnTransmitted (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN NET_BUF *Wrap,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UDP_END_POINT *EndPoint,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_STATUS IoStatus,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *Context
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Append the appointed option to the buf, and move the buf to the end.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Buf The pointer to buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] OptType The option type.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] OptLen The lenght of option content.s
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Data The pointer to the option content.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return Buf The position to append the next option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUINT8 *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6AppendOption (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINT8 *Buf,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT16 OptType,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT16 OptLen,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *Data
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Append the Ia option to Buf, and move Buf to the end.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Buf The pointer to the position to append.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Ia The pointer to the Ia.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] T1 The time of T1.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] T2 The time of T2.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return Buf The position to append the next Ia option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUINT8 *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6AppendIaOption (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINT8 *Buf,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DHCP6_IA *Ia,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 T1,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 T2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Append the appointed Elapsed time option to Buf, and move Buf to the end.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] Buf The pointer to the position to append.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Instance The pointer to the Dhcp6 instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] Elapsed The pointer to the elapsed time value in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the generated packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return Buf The position to append the next Ia option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUINT8 *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6AppendETOption (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINT8 *Buf,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN DHCP6_INSTANCE *Instance,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT16 **Elapsed
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Set the elapsed time based on the given instance and the pointer to the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync elapsed time option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Elapsed The pointer to the position to append.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Instance The pointer to the Dhcp6 instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncSetElapsedTime (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT16 *Elapsed,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN DHCP6_INSTANCE *Instance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Seek the address of the first byte of the option header.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Buf The pointer to buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] SeekLen The length to seek.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] OptType The option type.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL If failed to seek the option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval others The position to the option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUINT8 *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6SeekOption (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *Buf,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 SeekLen,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT16 OptType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Seek the address of the first byte of the Ia option header.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Buf The pointer to the buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] SeekLen The length to seek.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IaDesc The pointer to the Ia descriptor.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL If failed to seek the Ia option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval others The position to the Ia option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUINT8 *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6SeekIaOption (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *Buf,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 SeekLen,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DHCP6_IA_DESCRIPTOR *IaDesc
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parse the address option and update the address info.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IaInnerOpt The pointer to the buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IaInnerLen The length to parse.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] AddrNum The number of addresses.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] AddrBuf The pointer to the address buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6ParseAddrOption (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *IaInnerOpt,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT16 IaInnerLen,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT32 *AddrNum,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_DHCP6_IA_ADDRESS *AddrBuf
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Create a control blcok for the Ia according to the corresponding options.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Instance The pointer to DHCP6 Instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IaInnerOpt The pointer to the inner options in the Ia option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] IaInnerLen The length of all the inner options in the Ia option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] T1 T1 time in the Ia option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] T2 T2 time in the Ia option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND No valid IA option is found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Create an IA control block successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6GenerateIaCb (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN DHCP6_INSTANCE *Instance,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *IaInnerOpt,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT16 IaInnerLen,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 T1,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 T2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Cache the current IA configuration information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Instance The pointer to DHCP6 Instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Cache the current IA successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6CacheIa (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN DHCP6_INSTANCE *Instance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Append CacheIa to the currrent IA. Meanwhile, clear CacheIa.ValidLifetime to 0.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Instance The pointer to DHCP6 instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDhcp6AppendCacheIa (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN DHCP6_INSTANCE *Instance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif