IScsiConfig.h revision 6c7a807a54b14827a6510baa5edfdbe8b5f1f085
112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian/** @file 212618416ec7a468bc7e47d9739cf973a0bb418fceric_tian The header file of IScsiConfig.c 36a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 412618416ec7a468bc7e47d9739cf973a0bb418fceric_tianCopyright (c) 2004 - 2008, Intel Corporation 57a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianAll rights reserved. This program and the accompanying materials 67a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianare licensed and made available under the terms and conditions of the BSD License 77a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianwhich accompanies this distribution. The full text of the license may be found at 87a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianhttp://opensource.org/licenses/bsd-license.php 97a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tian 107a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 117a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 126a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 136a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianModule Name: 146a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 156a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian IScsiConfig.h 166a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 176a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianAbstract: 186a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 1912618416ec7a468bc7e47d9739cf973a0bb418fceric_tian The header file of IScsiConfig.c 206a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 2112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian**/ 226a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 236a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#ifndef _ISCSI_CONFIG_H_ 246a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#define _ISCSI_CONFIG_H_ 256a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 2693e3992d1ea50fb30c48f498d257d4e66252dd9bqwang#include <Library/HiiLib.h> 279226efe5ebb83ad0d5882e3eb7a54f3d63f81e9dqwang#include <Library/ExtendedHiiLib.h> 2893e3992d1ea50fb30c48f498d257d4e66252dd9bqwang#include <Library/IfrSupportLib.h> 299226efe5ebb83ad0d5882e3eb7a54f3d63f81e9dqwang#include <Library/ExtendedIfrSupportLib.h> 306a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#include <Library/DebugLib.h> 316a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#include <Library/BaseLib.h> 326a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#include <Library/NetLib.h> 336a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#include "IScsiConfigNVDataStruc.h" 346a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 356a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianextern UINT8 IScsiConfigDxeBin[]; 367a444476b4ffb405006ee36d0f2cec80c2d4b348eric_tianextern UINT8 IScsiDxeStrings[]; 376a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 386a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#define ISCSI_INITATOR_NAME_VAR_NAME L"I_NAME" 396a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 406a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#define ISCSI_CONFIG_VAR_ATTR (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE) 416a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 426a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#define ISCSI_FORM_CALLBACK_INFO_SIGNATURE EFI_SIGNATURE_32 ('I', 'f', 'c', 'i') 436a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 446a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#define ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \ 456a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian CR ( \ 466a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian Callback, \ 476a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian ISCSI_FORM_CALLBACK_INFO, \ 4893e3992d1ea50fb30c48f498d257d4e66252dd9bqwang ConfigAccess, \ 496a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian ISCSI_FORM_CALLBACK_INFO_SIGNATURE \ 506a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian ) 516a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 526a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#pragma pack(1) 536a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 546a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tiantypedef struct _ISCSI_MAC_INFO { 556a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian EFI_MAC_ADDRESS Mac; 566a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian UINT8 Len; 576a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian} ISCSI_MAC_INFO; 586a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 596a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tiantypedef struct _ISCSI_DEVICE_LIST { 606a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian UINT8 NumDevice; 616a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian ISCSI_MAC_INFO MacInfo[1]; 626a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian} ISCSI_DEVICE_LIST; 636a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 646a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#pragma pack() 656a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 666a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tiantypedef struct _ISCSI_CONFIG_FORM_ENTRY { 67e48e37fce2611df7a52aff271835ff72ee396d9bvanjeff LIST_ENTRY Link; 686a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian EFI_HANDLE Controller; 696a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian CHAR16 MacString[95]; 706c7a807a54b14827a6510baa5edfdbe8b5f1f085qwang EFI_STRING_ID PortTitleToken; 716c7a807a54b14827a6510baa5edfdbe8b5f1f085qwang EFI_STRING_ID PortTitleHelpToken; 726a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 736a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian ISCSI_SESSION_CONFIG_NVDATA SessionConfigData; 746a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian ISCSI_CHAP_AUTH_CONFIG_NVDATA AuthConfigData; 756a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian} ISCSI_CONFIG_FORM_ENTRY; 766a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 776a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tiantypedef struct _ISCSI_FORM_CALLBACK_INFO { 7893e3992d1ea50fb30c48f498d257d4e66252dd9bqwang UINTN Signature; 7993e3992d1ea50fb30c48f498d257d4e66252dd9bqwang EFI_HANDLE DriverHandle; 8093e3992d1ea50fb30c48f498d257d4e66252dd9bqwang EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; 8193e3992d1ea50fb30c48f498d257d4e66252dd9bqwang EFI_HII_DATABASE_PROTOCOL *HiiDatabase; 8293e3992d1ea50fb30c48f498d257d4e66252dd9bqwang EFI_HII_CONFIG_ROUTING_PROTOCOL *ConfigRouting; 8393e3992d1ea50fb30c48f498d257d4e66252dd9bqwang UINT16 *KeyList; 8493e3992d1ea50fb30c48f498d257d4e66252dd9bqwang VOID *FormBuffer; 8593e3992d1ea50fb30c48f498d257d4e66252dd9bqwang EFI_HII_HANDLE RegisteredHandle; 8693e3992d1ea50fb30c48f498d257d4e66252dd9bqwang ISCSI_CONFIG_FORM_ENTRY *Current; 876a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian} ISCSI_FORM_CALLBACK_INFO; 886a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 8912618416ec7a468bc7e47d9739cf973a0bb418fceric_tian/** 9012618416ec7a468bc7e47d9739cf973a0bb418fceric_tian Updates the iSCSI configuration form to add/delete an entry for the iSCSI 9112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian device specified by the Controller. 9212618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 9312618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @param DriverBindingHandle[in] The driverbinding handle. 9412618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 9512618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @param Controller[in] The controller handle of the iSCSI device. 9612618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 9712618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @param AddForm[in] Whether to add or delete a form entry. 9812618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 9912618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @retval EFI_SUCCESS The iSCSI configuration form is updated. 10012618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 10112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. 10212618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 10312618416ec7a468bc7e47d9739cf973a0bb418fceric_tian**/ 1046a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianEFI_STATUS 1056a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianIScsiConfigUpdateForm ( 1066a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian IN EFI_HANDLE DriverBindingHandle, 1076a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian IN EFI_HANDLE Controller, 1086a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian IN BOOLEAN AddForm 1096a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian ); 1106a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 11112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian/** 11212618416ec7a468bc7e47d9739cf973a0bb418fceric_tian Initialize the iSCSI configuration form. 11312618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 11412618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @param DriverBindingHandle[in] The iSCSI driverbinding handle. 11512618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 11612618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @retval EFI_SUCCESS The iSCSI configuration form is initialized. 11712618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 11812618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. 11912618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 12012618416ec7a468bc7e47d9739cf973a0bb418fceric_tian**/ 1216a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianEFI_STATUS 1226a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianIScsiConfigFormInit ( 1236a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian IN EFI_HANDLE DriverBindingHandle 1246a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian ); 1256a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 12612618416ec7a468bc7e47d9739cf973a0bb418fceric_tian/** 12712618416ec7a468bc7e47d9739cf973a0bb418fceric_tian Unload the iSCSI configuration form, this includes: delete all the iSCSI 12812618416ec7a468bc7e47d9739cf973a0bb418fceric_tian device configuration entries, uninstall the form callback protocol and 12912618416ec7a468bc7e47d9739cf973a0bb418fceric_tian free the resources used. 13012618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 13112618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @param DriverBindingHandle[in] The iSCSI driverbinding handle. 13212618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 13312618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @retval EFI_SUCCESS The iSCSI configuration form is unloaded. 13412618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 13512618416ec7a468bc7e47d9739cf973a0bb418fceric_tian @retval EFI_OUT_OF_RESOURCES Failed to allocate memory. 13612618416ec7a468bc7e47d9739cf973a0bb418fceric_tian 13712618416ec7a468bc7e47d9739cf973a0bb418fceric_tian**/ 1386a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianEFI_STATUS 1396a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tianIScsiConfigFormUnload ( 1406a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian IN EFI_HANDLE DriverBindingHandle 1416a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian ); 1426a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian 1436a690e23d7fb7fa710f6816ee23c17dadfe617b6eric_tian#endif 144