14c5a5e0cfecf23526493bf9a05c0530805bf10ectye/** @file 24c5a5e0cfecf23526493bf9a05c0530805bf10ectye The header file of functions for configuring or getting the parameters 34c5a5e0cfecf23526493bf9a05c0530805bf10ectye relating to iSCSI. 44c5a5e0cfecf23526493bf9a05c0530805bf10ectye 587ce4210f52c0a9cf3f97937ec03c7155398e190Ye TingCopyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR> 64c5a5e0cfecf23526493bf9a05c0530805bf10ectyeThis program and the accompanying materials 74c5a5e0cfecf23526493bf9a05c0530805bf10ectyeare licensed and made available under the terms and conditions of the BSD License 84c5a5e0cfecf23526493bf9a05c0530805bf10ectyewhich accompanies this distribution. The full text of the license may be found at 94c5a5e0cfecf23526493bf9a05c0530805bf10ectyehttp://opensource.org/licenses/bsd-license.php 104c5a5e0cfecf23526493bf9a05c0530805bf10ectye 114c5a5e0cfecf23526493bf9a05c0530805bf10ectyeTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 124c5a5e0cfecf23526493bf9a05c0530805bf10ectyeWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 134c5a5e0cfecf23526493bf9a05c0530805bf10ectye 144c5a5e0cfecf23526493bf9a05c0530805bf10ectye**/ 154c5a5e0cfecf23526493bf9a05c0530805bf10ectye 164c5a5e0cfecf23526493bf9a05c0530805bf10ectye#ifndef _ISCSI_CONFIG_H_ 174c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define _ISCSI_CONFIG_H_ 184c5a5e0cfecf23526493bf9a05c0530805bf10ectye 194c5a5e0cfecf23526493bf9a05c0530805bf10ectye#include "IScsiConfigNVDataStruc.h" 204c5a5e0cfecf23526493bf9a05c0530805bf10ectye 214c5a5e0cfecf23526493bf9a05c0530805bf10ectyetypedef struct _ISCSI_FORM_CALLBACK_INFO ISCSI_FORM_CALLBACK_INFO; 224c5a5e0cfecf23526493bf9a05c0530805bf10ectye 234c5a5e0cfecf23526493bf9a05c0530805bf10ectyeextern UINT8 IScsiConfigVfrBin[]; 244c5a5e0cfecf23526493bf9a05c0530805bf10ectyeextern UINT8 IScsiDxeStrings[]; 254c5a5e0cfecf23526493bf9a05c0530805bf10ectyeextern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo; 264c5a5e0cfecf23526493bf9a05c0530805bf10ectye 274c5a5e0cfecf23526493bf9a05c0530805bf10ectye 284c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define VAR_OFFSET(Field) \ 294c5a5e0cfecf23526493bf9a05c0530805bf10ectye ((UINT16) ((UINTN) &(((ISCSI_CONFIG_IFR_NVDATA *) 0)->Field))) 304c5a5e0cfecf23526493bf9a05c0530805bf10ectye 314c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define QUESTION_ID(Field) \ 324c5a5e0cfecf23526493bf9a05c0530805bf10ectye ((UINT16) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)) 334c5a5e0cfecf23526493bf9a05c0530805bf10ectye 344c5a5e0cfecf23526493bf9a05c0530805bf10ectye 354c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define DYNAMIC_ONE_OF_VAR_OFFSET VAR_OFFSET (Enabled) 364c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define DYNAMIC_ORDERED_LIST_QUESTION_ID QUESTION_ID (DynamicOrderedList) 374c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define DYNAMIC_ORDERED_LIST_VAR_OFFSET VAR_OFFSET (DynamicOrderedList) 384c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define ATTEMPT_DEL_QUESTION_ID QUESTION_ID (DeleteAttemptList) 394c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define ATTEMPT_DEL_VAR_OFFSET VAR_OFFSET (DeleteAttemptList) 404c5a5e0cfecf23526493bf9a05c0530805bf10ectye 414c5a5e0cfecf23526493bf9a05c0530805bf10ectye// 424c5a5e0cfecf23526493bf9a05c0530805bf10ectye// sizeof (EFI_MAC_ADDRESS) * 3 434c5a5e0cfecf23526493bf9a05c0530805bf10ectye// 444c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define ISCSI_MAX_MAC_STRING_LEN 96 454c5a5e0cfecf23526493bf9a05c0530805bf10ectye 464c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define ISCSI_INITATOR_NAME_VAR_NAME L"I_NAME" 474c5a5e0cfecf23526493bf9a05c0530805bf10ectye 484c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define ISCSI_CONFIG_VAR_ATTR (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE) 494c5a5e0cfecf23526493bf9a05c0530805bf10ectye 504c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define ISCSI_FORM_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('I', 'f', 'c', 'i') 514c5a5e0cfecf23526493bf9a05c0530805bf10ectye 524c5a5e0cfecf23526493bf9a05c0530805bf10ectye#define ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \ 534c5a5e0cfecf23526493bf9a05c0530805bf10ectye CR ( \ 544c5a5e0cfecf23526493bf9a05c0530805bf10ectye Callback, \ 554c5a5e0cfecf23526493bf9a05c0530805bf10ectye ISCSI_FORM_CALLBACK_INFO, \ 564c5a5e0cfecf23526493bf9a05c0530805bf10ectye ConfigAccess, \ 574c5a5e0cfecf23526493bf9a05c0530805bf10ectye ISCSI_FORM_CALLBACK_INFO_SIGNATURE \ 584c5a5e0cfecf23526493bf9a05c0530805bf10ectye ) 594c5a5e0cfecf23526493bf9a05c0530805bf10ectye 604c5a5e0cfecf23526493bf9a05c0530805bf10ectye#pragma pack(1) 614c5a5e0cfecf23526493bf9a05c0530805bf10ectyestruct _ISCSI_ATTEMPT_CONFIG_NVDATA { 624c5a5e0cfecf23526493bf9a05c0530805bf10ectye LIST_ENTRY Link; 634c5a5e0cfecf23526493bf9a05c0530805bf10ectye UINT8 NicIndex; 644c5a5e0cfecf23526493bf9a05c0530805bf10ectye UINT8 AttemptConfigIndex; 654c5a5e0cfecf23526493bf9a05c0530805bf10ectye BOOLEAN DhcpSuccess; 664c5a5e0cfecf23526493bf9a05c0530805bf10ectye BOOLEAN ValidiBFTPath; 674c5a5e0cfecf23526493bf9a05c0530805bf10ectye BOOLEAN ValidPath; 684c5a5e0cfecf23526493bf9a05c0530805bf10ectye UINT8 AutoConfigureMode; 694c5a5e0cfecf23526493bf9a05c0530805bf10ectye EFI_STRING_ID AttemptTitleToken; 704c5a5e0cfecf23526493bf9a05c0530805bf10ectye EFI_STRING_ID AttemptTitleHelpToken; 714c5a5e0cfecf23526493bf9a05c0530805bf10ectye CHAR8 AttemptName[ATTEMPT_NAME_MAX_SIZE]; 724c5a5e0cfecf23526493bf9a05c0530805bf10ectye CHAR8 MacString[ISCSI_MAX_MAC_STRING_LEN]; 734c5a5e0cfecf23526493bf9a05c0530805bf10ectye EFI_IP_ADDRESS PrimaryDns; 744c5a5e0cfecf23526493bf9a05c0530805bf10ectye EFI_IP_ADDRESS SecondaryDns; 754c5a5e0cfecf23526493bf9a05c0530805bf10ectye EFI_IP_ADDRESS DhcpServer; 764c5a5e0cfecf23526493bf9a05c0530805bf10ectye ISCSI_SESSION_CONFIG_NVDATA SessionConfigData; 774c5a5e0cfecf23526493bf9a05c0530805bf10ectye UINT8 AuthenticationType; 784c5a5e0cfecf23526493bf9a05c0530805bf10ectye union { 794c5a5e0cfecf23526493bf9a05c0530805bf10ectye ISCSI_CHAP_AUTH_CONFIG_NVDATA CHAP; 804c5a5e0cfecf23526493bf9a05c0530805bf10ectye } AuthConfigData; 8187ce4210f52c0a9cf3f97937ec03c7155398e190Ye Ting BOOLEAN AutoConfigureSuccess; 824c5a5e0cfecf23526493bf9a05c0530805bf10ectye}; 834c5a5e0cfecf23526493bf9a05c0530805bf10ectye 844c5a5e0cfecf23526493bf9a05c0530805bf10ectye/// 854c5a5e0cfecf23526493bf9a05c0530805bf10ectye/// HII specific Vendor Device Path definition. 864c5a5e0cfecf23526493bf9a05c0530805bf10ectye/// 874c5a5e0cfecf23526493bf9a05c0530805bf10ectyetypedef struct { 884c5a5e0cfecf23526493bf9a05c0530805bf10ectye VENDOR_DEVICE_PATH VendorDevicePath; 894c5a5e0cfecf23526493bf9a05c0530805bf10ectye EFI_DEVICE_PATH_PROTOCOL End; 904c5a5e0cfecf23526493bf9a05c0530805bf10ectye} HII_VENDOR_DEVICE_PATH; 914c5a5e0cfecf23526493bf9a05c0530805bf10ectye 924c5a5e0cfecf23526493bf9a05c0530805bf10ectye#pragma pack() 934c5a5e0cfecf23526493bf9a05c0530805bf10ectye 944c5a5e0cfecf23526493bf9a05c0530805bf10ectyestruct _ISCSI_FORM_CALLBACK_INFO { 954c5a5e0cfecf23526493bf9a05c0530805bf10ectye UINT32 Signature; 964c5a5e0cfecf23526493bf9a05c0530805bf10ectye EFI_HANDLE DriverHandle; 974c5a5e0cfecf23526493bf9a05c0530805bf10ectye EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; 984c5a5e0cfecf23526493bf9a05c0530805bf10ectye UINT16 *KeyList; 994c5a5e0cfecf23526493bf9a05c0530805bf10ectye VOID *FormBuffer; 1004c5a5e0cfecf23526493bf9a05c0530805bf10ectye EFI_HII_HANDLE RegisteredHandle; 1014c5a5e0cfecf23526493bf9a05c0530805bf10ectye ISCSI_ATTEMPT_CONFIG_NVDATA *Current; 1024c5a5e0cfecf23526493bf9a05c0530805bf10ectye}; 1034c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1044c5a5e0cfecf23526493bf9a05c0530805bf10ectye/** 1054c5a5e0cfecf23526493bf9a05c0530805bf10ectye Initialize the iSCSI configuration form. 1064c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1074c5a5e0cfecf23526493bf9a05c0530805bf10ectye @param[in] DriverBindingHandle The iSCSI driverbinding handle. 1084c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1094c5a5e0cfecf23526493bf9a05c0530805bf10ectye @retval EFI_SUCCESS The iSCSI configuration form is initialized. 1104c5a5e0cfecf23526493bf9a05c0530805bf10ectye @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. 1114c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1124c5a5e0cfecf23526493bf9a05c0530805bf10ectye**/ 1134c5a5e0cfecf23526493bf9a05c0530805bf10ectyeEFI_STATUS 1144c5a5e0cfecf23526493bf9a05c0530805bf10ectyeIScsiConfigFormInit ( 1154c5a5e0cfecf23526493bf9a05c0530805bf10ectye IN EFI_HANDLE DriverBindingHandle 1164c5a5e0cfecf23526493bf9a05c0530805bf10ectye ); 1174c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1184c5a5e0cfecf23526493bf9a05c0530805bf10ectye/** 1194c5a5e0cfecf23526493bf9a05c0530805bf10ectye Unload the iSCSI configuration form, this includes: delete all the iSCSI 1204c5a5e0cfecf23526493bf9a05c0530805bf10ectye configuration entries, uninstall the form callback protocol, and 1214c5a5e0cfecf23526493bf9a05c0530805bf10ectye free the resources used. 1224c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1234c5a5e0cfecf23526493bf9a05c0530805bf10ectye @param[in] DriverBindingHandle The iSCSI driverbinding handle. 1244c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1254c5a5e0cfecf23526493bf9a05c0530805bf10ectye @retval EFI_SUCCESS The iSCSI configuration form is unloaded. 1264c5a5e0cfecf23526493bf9a05c0530805bf10ectye @retval Others Failed to unload the form. 1274c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1284c5a5e0cfecf23526493bf9a05c0530805bf10ectye**/ 1294c5a5e0cfecf23526493bf9a05c0530805bf10ectyeEFI_STATUS 1304c5a5e0cfecf23526493bf9a05c0530805bf10ectyeIScsiConfigFormUnload ( 1314c5a5e0cfecf23526493bf9a05c0530805bf10ectye IN EFI_HANDLE DriverBindingHandle 1324c5a5e0cfecf23526493bf9a05c0530805bf10ectye ); 1334c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1344c5a5e0cfecf23526493bf9a05c0530805bf10ectye/** 1354c5a5e0cfecf23526493bf9a05c0530805bf10ectye Update the MAIN form to display the configured attempts. 1364c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1374c5a5e0cfecf23526493bf9a05c0530805bf10ectye**/ 1384c5a5e0cfecf23526493bf9a05c0530805bf10ectyeVOID 1394c5a5e0cfecf23526493bf9a05c0530805bf10ectyeIScsiConfigUpdateAttempt ( 1404c5a5e0cfecf23526493bf9a05c0530805bf10ectye VOID 1414c5a5e0cfecf23526493bf9a05c0530805bf10ectye ); 1424c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1434c5a5e0cfecf23526493bf9a05c0530805bf10ectye/** 1444c5a5e0cfecf23526493bf9a05c0530805bf10ectye Get the attempt config data from global structure by the ConfigIndex. 1454c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1464c5a5e0cfecf23526493bf9a05c0530805bf10ectye @param[in] AttemptConfigIndex The unique index indicates the attempt. 1474c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1484c5a5e0cfecf23526493bf9a05c0530805bf10ectye @return Pointer to the attempt config data. 1494c5a5e0cfecf23526493bf9a05c0530805bf10ectye @retval NULL The attempt configuration data can not be found. 1504c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1514c5a5e0cfecf23526493bf9a05c0530805bf10ectye**/ 1524c5a5e0cfecf23526493bf9a05c0530805bf10ectyeISCSI_ATTEMPT_CONFIG_NVDATA * 1534c5a5e0cfecf23526493bf9a05c0530805bf10ectyeIScsiConfigGetAttemptByConfigIndex ( 1544c5a5e0cfecf23526493bf9a05c0530805bf10ectye IN UINT8 AttemptConfigIndex 1554c5a5e0cfecf23526493bf9a05c0530805bf10ectye ); 1564c5a5e0cfecf23526493bf9a05c0530805bf10ectye 1574c5a5e0cfecf23526493bf9a05c0530805bf10ectye#endif 158