4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Functions declaration related with DHCPv6 for UefiPxeBc Driver.
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 __EFI_PXEBC_DHCP6_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __EFI_PXEBC_DHCP6_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPTION_MAX_NUM 16
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPTION_MAX_SIZE 312
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_PACKET_MAX_SIZE 1472
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_MAPPING_TIMEOUT 50000000 // 5 seconds, unit is 10nanosecond.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_IP6_POLICY_MAX 0xff
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_S_PORT 547
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_C_PORT 546
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_CLIENT_ID 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_SERVER_ID 2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_IA_NA 3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_IA_TA 4
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_IAADDR 5
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_ORO 6
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_PREFERENCE 7
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_ELAPSED_TIME 8
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_REPLAY_MSG 9
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_AUTH 11
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_UNICAST 12
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_STATUS_CODE 13
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_RAPID_COMMIT 14
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_USER_CLASS 15
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_VENDOR_CLASS 16
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_VENDOR_OPTS 17
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_INTERFACE_ID 18
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_RECONFIG_MSG 19
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_RECONFIG_ACCEPT 20
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_BOOT_FILE_URL 59 // Assigned by IANA, RFC 5970
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_BOOT_FILE_PARAM 60 // Assigned by IANA, RFC 5970
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_ARCH 61 // Assigned by IANA, RFC 5970
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_OPT_UNDI 62 // Assigned by IANA, RFC 5970
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_ENTERPRISE_NUM 343 // TODO: IANA TBD: temporarily using Intel's
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_MAX_BOOT_FILE_SIZE 65535 // It's a limitation of bit length, 65535*512 bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_IDX_IA_NA 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_IDX_BOOT_FILE_URL 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_IDX_BOOT_FILE_PARAM 2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_IDX_VENDOR_CLASS 3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_IDX_MAX 4
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_DHCP6_BOOT_FILE_URL_PREFIX "tftp://"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_TFTP_URL_SEPARATOR '/'
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_ADDR_START_DELIMITER '['
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PXEBC_ADDR_END_DELIMITER ']'
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define GET_NEXT_DHCP6_OPTION(Opt) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (EFI_DHCP6_PACKET_OPTION *) ((UINT8 *) (Opt) + \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sizeof (EFI_DHCP6_PACKET_OPTION) + (NTOHS ((Opt)->OpLen)) - 1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define GET_DHCP6_OPTION_SIZE(Pkt) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((Pkt)->Length - sizeof (EFI_DHCP6_HEADER))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define IS_PROXY_OFFER(Type) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((Type) == PxeOfferTypeProxyBinl || \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (Type) == PxeOfferTypeProxyPxe10 || \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (Type) == PxeOfferTypeProxyWfm11a)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack(1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 OpCode[256];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PXEBC_DHCP6_OPTION_ORO;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Type;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 MajorVer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 MinorVer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PXEBC_DHCP6_OPTION_UNDI;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Type;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PXEBC_DHCP6_OPTION_ARCH;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 ClassIdentifier[10];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 ArchitecturePrefix[5];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 ArchitectureType[5];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Lit3[1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 InterfaceName[4];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Lit4[1];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 UndiMajor[3];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 UndiMinor[3];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PXEBC_CLASS_ID;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Vendor;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 ClassLen;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PXEBC_CLASS_ID ClassId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PXEBC_DHCP6_OPTION_VENDOR_CLASS;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef union {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PXEBC_DHCP6_OPTION_ORO *Oro;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PXEBC_DHCP6_OPTION_UNDI *Undi;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PXEBC_DHCP6_OPTION_ARCH *Arch;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PXEBC_DHCP6_OPTION_VENDOR_CLASS *VendorClass;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PXEBC_DHCP6_OPTION_ENTRY;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY Link;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DHCP6_PACKET_OPTION *Option;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Precedence;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PXEBC_DHCP6_OPTION_NODE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef union {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DHCP6_PACKET Offer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DHCP6_PACKET Ack;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 Buffer[PXEBC_DHCP6_PACKET_MAX_SIZE];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PXEBC_DHCP6_PACKET;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PXEBC_DHCP6_PACKET Packet;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PXEBC_OFFER_TYPE OfferType;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DHCP6_PACKET_OPTION *OptList[PXEBC_DHCP6_IDX_MAX];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} PXEBC_DHCP6_PACKET_CACHE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Free all the nodes in the boot file list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Head The pointer to the head of the list.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcFreeBootFileOption (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN LIST_ENTRY *Head
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parse the Boot File URL option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] FileName The pointer to the boot file name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] SrvAddr The pointer to the boot server address.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] BootFile The pointer to the boot file URL option data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Length Length of the boot file URL option data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_ABORTED User canceled the operation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Selected the boot menu successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_READY Read the input key from the keybroad has not finish.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcExtractBootFileUrl (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT8 **FileName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_IPv6_ADDRESS *SrvAddr,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR8 *BootFile,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT16 Length
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parse the Boot File Parameter option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] BootFilePara The pointer to the boot file parameter option data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] BootFileSize The pointer to the parsed boot file size.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Successfully obtained the boot file size from parameter option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND Failed to extract the boot file size from parameter option.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcExtractBootFileParam (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR8 *BootFilePara,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT16 *BootFileSize
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parse the cached DHCPv6 packet, including all the options.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Cache6 The pointer to a cached DHCPv6 packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Parsed the DHCPv6 packet successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR Failed to parse and invalid packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcParseDhcp6Packet (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PXEBC_DHCP6_PACKET_CACHE *Cache6
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Register the ready address by Ip6Config protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Private The pointer to the PxeBc private data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Address The pointer to the ready address.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Registered the address succesfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Failed to register the address.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcRegisterIp6Address (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PXEBC_PRIVATE_DATA *Private,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_IPv6_ADDRESS *Address
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Unregister the address by Ip6Config protocol.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Private The pointer to the PxeBc private data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcUnregisterIp6Address (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PXEBC_PRIVATE_DATA *Private
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Build and send out the request packet for the bootfile, and parse the reply.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Private The pointer to the PxeBc private data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Type PxeBc option boot item type.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Layer The pointer to the option boot item layer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] UseBis Use BIS or not.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DestIp The pointer to the server address.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS Successfully discovered theboot file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Failed to allocate resource.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND Can't get the PXE reply packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Failed to discover boot file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcDhcp6Discover (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PXEBC_PRIVATE_DATA *Private,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT16 Type,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT16 *Layer,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN UseBis,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_IP_ADDRESS *DestIp
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Start the DHCPv6 S.A.R.R. process to acquire the IPv6 address and other PXE boot information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Private The pointer to the PxeBc private data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Dhcp6 The pointer to EFI_DHCP6_PROTOCOL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The S.A.R.R. process successfully finished.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Failed to finish the S.A.R.R. process.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncPxeBcDhcp6Sarr (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PXEBC_PRIVATE_DATA *Private,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_DHCP6_PROTOCOL *Dhcp6
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync