4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The header file of functions for configuring or getting the parameters
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync relating to iSCSI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwhich accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _ISCSI_CONFIG_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _ISCSI_CONFIG_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "IScsiConfigNVDataStruc.h"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _ISCSI_FORM_CALLBACK_INFO ISCSI_FORM_CALLBACK_INFO;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern UINT8 IScsiConfigVfrBin[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern UINT8 IScsiDxeStrings[];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define VAR_OFFSET(Field) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((UINT16) ((UINTN) &(((ISCSI_CONFIG_IFR_NVDATA *) 0)->Field)))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define QUESTION_ID(Field) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((UINT16) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DYNAMIC_ONE_OF_VAR_OFFSET VAR_OFFSET (Enabled)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DYNAMIC_ORDERED_LIST_QUESTION_ID QUESTION_ID (DynamicOrderedList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define DYNAMIC_ORDERED_LIST_VAR_OFFSET VAR_OFFSET (DynamicOrderedList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATTEMPT_DEL_QUESTION_ID QUESTION_ID (DeleteAttemptList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ATTEMPT_DEL_VAR_OFFSET VAR_OFFSET (DeleteAttemptList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// sizeof (EFI_MAC_ADDRESS) * 3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_MAX_MAC_STRING_LEN 96
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_INITATOR_NAME_VAR_NAME L"I_NAME"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_CONFIG_VAR_ATTR (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'f', 'c', 'i')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CR ( \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Callback, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ISCSI_FORM_CALLBACK_INFO, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ConfigAccess, \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ISCSI_FORM_CALLBACK_INFO_SIGNATURE \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack(1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _ISCSI_ATTEMPT_CONFIG_NVDATA {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LIST_ENTRY Link;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 NicIndex;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 AttemptConfigIndex;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN DhcpSuccess;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN ValidiBFTPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN ValidPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 AutoConfigureMode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_STRING_ID AttemptTitleToken;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_STRING_ID AttemptTitleHelpToken;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 AttemptName[ATTEMPT_NAME_MAX_SIZE];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 MacString[ISCSI_MAX_MAC_STRING_LEN];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP_ADDRESS PrimaryDns;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP_ADDRESS SecondaryDns;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_IP_ADDRESS DhcpServer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ISCSI_SESSION_CONFIG_NVDATA SessionConfigData;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 AuthenticationType;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync union {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ISCSI_CHAP_AUTH_CONFIG_NVDATA CHAP;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } AuthConfigData;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// HII specific Vendor Device Path definition.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VENDOR_DEVICE_PATH VendorDevicePath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DEVICE_PATH_PROTOCOL End;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} HII_VENDOR_DEVICE_PATH;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#pragma pack()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _ISCSI_FORM_CALLBACK_INFO {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 Signature;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HANDLE DriverHandle;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 *KeyList;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID *FormBuffer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HII_HANDLE RegisteredHandle;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ISCSI_ATTEMPT_CONFIG_NVDATA *Current;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Initialize the iSCSI configuration form.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DriverBindingHandle The iSCSI driverbinding handle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The iSCSI configuration form is initialized.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIScsiConfigFormInit (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE DriverBindingHandle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Unload the iSCSI configuration form, this includes: delete all the iSCSI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync configuration entries, uninstall the form callback protocol, and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync free the resources used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DriverBindingHandle The iSCSI driverbinding handle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The iSCSI configuration form is unloaded.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval Others Failed to unload the form.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIScsiConfigFormUnload (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HANDLE DriverBindingHandle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Update the MAIN form to display the configured attempts.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIScsiConfigUpdateAttempt (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Get the attempt config data from global structure by the ConfigIndex.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] AttemptConfigIndex The unique index indicates the attempt.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return Pointer to the attempt config data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval NULL The attempt configuration data can not be found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncISCSI_ATTEMPT_CONFIG_NVDATA *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncIScsiConfigGetAttemptByConfigIndex (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 AttemptConfigIndex
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif