/** @file | |
The header file of functions for configuring or getting the parameters | |
relating to iSCSI. | |
Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef _ISCSI_CONFIG_H_ | |
#define _ISCSI_CONFIG_H_ | |
#include "IScsiConfigNVDataStruc.h" | |
typedef struct _ISCSI_FORM_CALLBACK_INFO ISCSI_FORM_CALLBACK_INFO; | |
extern UINT8 IScsiConfigVfrBin[]; | |
extern UINT8 IScsiDxeStrings[]; | |
extern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo; | |
#define VAR_OFFSET(Field) \ | |
((UINT16) ((UINTN) &(((ISCSI_CONFIG_IFR_NVDATA *) 0)->Field))) | |
#define QUESTION_ID(Field) \ | |
((UINT16) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)) | |
#define DYNAMIC_ONE_OF_VAR_OFFSET VAR_OFFSET (Enabled) | |
#define DYNAMIC_ORDERED_LIST_QUESTION_ID QUESTION_ID (DynamicOrderedList) | |
#define DYNAMIC_ORDERED_LIST_VAR_OFFSET VAR_OFFSET (DynamicOrderedList) | |
#define ATTEMPT_DEL_QUESTION_ID QUESTION_ID (DeleteAttemptList) | |
#define ATTEMPT_DEL_VAR_OFFSET VAR_OFFSET (DeleteAttemptList) | |
#define ATTEMPT_ADD_QUESTION_ID QUESTION_ID (AddAttemptList) | |
#define ATTEMPT_ADD_VAR_OFFSET VAR_OFFSET (AddAttemptList) | |
// | |
// Define QuestionId and OffSet for Keywords. | |
// | |
#define ATTEMPT_MAC_ADDR_VAR_OFFSET VAR_OFFSET (ISCSIMacAddr) | |
#define ATTEMPT_ATTEMPT_NAME_QUESTION_ID QUESTION_ID (ISCSIAttemptName) | |
#define ATTEMPT_ATTEMPT_NAME_VAR_OFFSET VAR_OFFSET (ISCSIAttemptName) | |
#define ATTEMPT_BOOTENABLE_QUESTION_ID QUESTION_ID (ISCSIBootEnableList) | |
#define ATTEMPT_BOOTENABLE_VAR_OFFSET VAR_OFFSET (ISCSIBootEnableList) | |
#define ATTEMPT_ADDRESS_TYPE_QUESTION_ID QUESTION_ID (ISCSIIpAddressTypeList) | |
#define ATTEMPT_ADDRESS_TYPE_VAR_OFFSET VAR_OFFSET (ISCSIIpAddressTypeList) | |
#define ATTEMPT_CONNECT_RETRY_QUESTION_ID QUESTION_ID (ISCSIConnectRetry) | |
#define ATTEMPT_CONNECT_RETRY_VAR_OFFSET VAR_OFFSET (ISCSIConnectRetry) | |
#define ATTEMPT_CONNECT_TIMEOUT_QUESTION_ID QUESTION_ID (ISCSIConnectTimeout) | |
#define ATTEMPT_CONNECT_TIMEOUT_VAR_OFFSET VAR_OFFSET (ISCSIConnectTimeout) | |
#define ATTEMPT_ISID_QUESTION_ID QUESTION_ID (Keyword->ISCSIIsId) | |
#define ATTEMPT_ISID_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIIsId) | |
#define ATTEMPT_INITIATOR_VIA_DHCP_QUESTION_ID QUESTION_ID (ISCSIInitiatorInfoViaDHCP) | |
#define ATTEMPT_INITIATOR_VIA_DHCP_VAR_OFFSET VAR_OFFSET (ISCSIInitiatorInfoViaDHCP) | |
#define ATTEMPT_INITIATOR_IP_ADDRESS_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorIpAddress) | |
#define ATTEMPT_INITIATOR_IP_ADDRESS_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorIpAddress) | |
#define ATTEMPT_INITIATOR_NET_MASK_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorNetmask) | |
#define ATTEMPT_INITIATOR_NET_MASK_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorNetmask) | |
#define ATTEMPT_INITIATOR_GATE_WAY_QUESTION_ID QUESTION_ID (Keyword->ISCSIInitiatorGateway) | |
#define ATTEMPT_INITIATOR_GATE_WAY_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIInitiatorGateway) | |
#define ATTEMPT_TARGET_VIA_DHCP_QUESTION_ID QUESTION_ID (ISCSITargetInfoViaDHCP) | |
#define ATTEMPT_TARGET_VIA_DHCP_VAR_OFFSET VAR_OFFSET (ISCSITargetInfoViaDHCP) | |
#define ATTEMPT_TARGET_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSITargetName) | |
#define ATTEMPT_TARGET_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSITargetName) | |
#define ATTEMPT_TARGET_IP_ADDRESS_QUESTION_ID QUESTION_ID (Keyword->ISCSITargetIpAddress) | |
#define ATTEMPT_TARGET_IP_ADDRESS_VAR_OFFSET VAR_OFFSET (Keyword->ISCSITargetIpAddress) | |
#define ATTEMPT_TARGET_TCP_PORT_QUESTION_ID QUESTION_ID (ISCSITargetTcpPort) | |
#define ATTEMPT_TARGET_TCP_PORT_VAR_OFFSET VAR_OFFSET (ISCSITargetTcpPort) | |
#define ATTEMPT_LUN_QUESTION_ID QUESTION_ID (Keyword->ISCSILun) | |
#define ATTEMPT_LUN_VAR_OFFSET VAR_OFFSET (Keyword->ISCSILun) | |
#define ATTEMPT_AUTHENTICATION_METHOD_QUESTION_ID QUESTION_ID (ISCSIAuthenticationMethod) | |
#define ATTEMPT_AUTHENTICATION_METHOD_VAR_OFFSET VAR_OFFSET (ISCSIAuthenticationMethod) | |
#define ATTEMPT_CHARTYPE_QUESTION_ID QUESTION_ID (ISCSIChapType) | |
#define ATTEMPT_CHARTYPE_VAR_OFFSET VAR_OFFSET (ISCSIChapType) | |
#define ATTEMPT_CHAR_USER_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSIChapUsername) | |
#define ATTEMPT_CHAR_USER_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIChapUsername) | |
#define ATTEMPT_CHAR_SECRET_QUESTION_ID QUESTION_ID (Keyword->ISCSIChapSecret) | |
#define ATTEMPT_CHAR_SECRET_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIChapSecret) | |
#define ATTEMPT_CHAR_REVERSE_USER_NAME_QUESTION_ID QUESTION_ID (Keyword->ISCSIReverseChapUsername) | |
#define ATTEMPT_CHAR_REVERSE_USER_NAME_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIReverseChapUsername) | |
#define ATTEMPT_CHAR_REVERSE_SECRET_QUESTION_ID QUESTION_ID (Keyword->ISCSIReverseChapSecret) | |
#define ATTEMPT_CHAR_REVERSE_SECRET_VAR_OFFSET VAR_OFFSET (Keyword->ISCSIReverseChapSecret) | |
#define ISCSI_INITATOR_NAME_VAR_NAME L"I_NAME" | |
#define ISCSI_CONFIG_VAR_ATTR (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE) | |
#define ISCSI_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'f', 'c', 'i') | |
#define ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \ | |
CR ( \ | |
Callback, \ | |
ISCSI_FORM_CALLBACK_INFO, \ | |
ConfigAccess, \ | |
ISCSI_FORM_CALLBACK_INFO_SIGNATURE \ | |
) | |
#pragma pack(1) | |
struct _ISCSI_ATTEMPT_CONFIG_NVDATA { | |
LIST_ENTRY Link; | |
UINT8 NicIndex; | |
UINT8 AttemptConfigIndex; | |
BOOLEAN DhcpSuccess; | |
BOOLEAN ValidiBFTPath; | |
BOOLEAN ValidPath; | |
UINT8 AutoConfigureMode; | |
EFI_STRING_ID AttemptTitleToken; | |
EFI_STRING_ID AttemptTitleHelpToken; | |
CHAR8 AttemptName[ATTEMPT_NAME_SIZE]; | |
CHAR8 MacString[ISCSI_MAX_MAC_STRING_LEN]; | |
EFI_IP_ADDRESS PrimaryDns; | |
EFI_IP_ADDRESS SecondaryDns; | |
EFI_IP_ADDRESS DhcpServer; | |
ISCSI_SESSION_CONFIG_NVDATA SessionConfigData; | |
UINT8 AuthenticationType; | |
union { | |
ISCSI_CHAP_AUTH_CONFIG_NVDATA CHAP; | |
} AuthConfigData; | |
BOOLEAN AutoConfigureSuccess; | |
UINT8 Actived; | |
}; | |
/// | |
/// HII specific Vendor Device Path definition. | |
/// | |
typedef struct { | |
VENDOR_DEVICE_PATH VendorDevicePath; | |
EFI_DEVICE_PATH_PROTOCOL End; | |
} HII_VENDOR_DEVICE_PATH; | |
#pragma pack() | |
struct _ISCSI_FORM_CALLBACK_INFO { | |
UINT32 Signature; | |
EFI_HANDLE DriverHandle; | |
EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; | |
UINT16 *KeyList; | |
VOID *FormBuffer; | |
EFI_HII_HANDLE RegisteredHandle; | |
ISCSI_ATTEMPT_CONFIG_NVDATA *Current; | |
}; | |
/** | |
Create Hii Extend Label OpCode as the start opcode and end opcode. It is | |
a help function. | |
@param[in] StartLabelNumber The number of start label. | |
@param[out] StartOpCodeHandle Points to the start opcode handle. | |
@param[out] StartLabel Points to the created start opcode. | |
@param[out] EndOpCodeHandle Points to the end opcode handle. | |
@param[out] EndLabel Points to the created end opcode. | |
@retval EFI_OUT_OF_RESOURCES Do not have sufficient resource to finish this | |
operation. | |
@retval EFI_INVALID_PARAMETER Any input parameter is invalid. | |
@retval EFI_SUCCESS The operation is completed successfully. | |
**/ | |
EFI_STATUS | |
IScsiCreateOpCode ( | |
IN UINT16 StartLabelNumber, | |
OUT VOID **StartOpCodeHandle, | |
OUT EFI_IFR_GUID_LABEL **StartLabel, | |
OUT VOID **EndOpCodeHandle, | |
OUT EFI_IFR_GUID_LABEL **EndLabel | |
); | |
/** | |
Initialize the iSCSI configuration form. | |
@param[in] DriverBindingHandle The iSCSI driverbinding handle. | |
@retval EFI_SUCCESS The iSCSI configuration form is initialized. | |
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory. | |
**/ | |
EFI_STATUS | |
IScsiConfigFormInit ( | |
IN EFI_HANDLE DriverBindingHandle | |
); | |
/** | |
Unload the iSCSI configuration form, this includes: delete all the iSCSI | |
configuration entries, uninstall the form callback protocol, and | |
free the resources used. | |
@param[in] DriverBindingHandle The iSCSI driverbinding handle. | |
@retval EFI_SUCCESS The iSCSI configuration form is unloaded. | |
@retval Others Failed to unload the form. | |
**/ | |
EFI_STATUS | |
IScsiConfigFormUnload ( | |
IN EFI_HANDLE DriverBindingHandle | |
); | |
/** | |
Update the MAIN form to display the configured attempts. | |
**/ | |
VOID | |
IScsiConfigUpdateAttempt ( | |
VOID | |
); | |
/** | |
Get the attempt config data from global structure by the ConfigIndex. | |
@param[in] AttemptConfigIndex The unique index indicates the attempt. | |
@return Pointer to the attempt config data. | |
@retval NULL The attempt configuration data can not be found. | |
**/ | |
ISCSI_ATTEMPT_CONFIG_NVDATA * | |
IScsiConfigGetAttemptByConfigIndex ( | |
IN UINT8 AttemptConfigIndex | |
); | |
#endif |