Home | History | Annotate | Download | only in IScsiDxe
      1 /** @file
      2   The header file of functions for configuring or getting the parameters
      3   relating to iSCSI.
      4 
      5 Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
      6 This program and the accompanying materials
      7 are licensed and made available under the terms and conditions of the BSD License
      8 which accompanies this distribution.  The full text of the license may be found at
      9 http://opensource.org/licenses/bsd-license.php
     10 
     11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 **/
     15 
     16 #ifndef _ISCSI_CONFIG_H_
     17 #define _ISCSI_CONFIG_H_
     18 
     19 #include "IScsiConfigNVDataStruc.h"
     20 
     21 typedef struct _ISCSI_FORM_CALLBACK_INFO ISCSI_FORM_CALLBACK_INFO;
     22 
     23 extern UINT8                       IScsiConfigVfrBin[];
     24 extern UINT8                       IScsiDxeStrings[];
     25 extern ISCSI_FORM_CALLBACK_INFO    *mCallbackInfo;
     26 
     27 
     28 #define VAR_OFFSET(Field)    \
     29   ((UINT16) ((UINTN) &(((ISCSI_CONFIG_IFR_NVDATA *) 0)->Field)))
     30 
     31 #define QUESTION_ID(Field)   \
     32   ((UINT16) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET))
     33 
     34 
     35 #define DYNAMIC_ONE_OF_VAR_OFFSET           VAR_OFFSET  (Enabled)
     36 #define DYNAMIC_ORDERED_LIST_QUESTION_ID    QUESTION_ID (DynamicOrderedList)
     37 #define DYNAMIC_ORDERED_LIST_VAR_OFFSET     VAR_OFFSET  (DynamicOrderedList)
     38 #define ATTEMPT_DEL_QUESTION_ID             QUESTION_ID (DeleteAttemptList)
     39 #define ATTEMPT_DEL_VAR_OFFSET              VAR_OFFSET  (DeleteAttemptList)
     40 
     41 //
     42 // sizeof (EFI_MAC_ADDRESS) * 3
     43 //
     44 #define ISCSI_MAX_MAC_STRING_LEN            96
     45 
     46 #define ISCSI_INITATOR_NAME_VAR_NAME        L"I_NAME"
     47 
     48 #define ISCSI_CONFIG_VAR_ATTR               (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE)
     49 
     50 #define ISCSI_FORM_CALLBACK_INFO_SIGNATURE  SIGNATURE_32 ('I', 'f', 'c', 'i')
     51 
     52 #define ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK(Callback) \
     53   CR ( \
     54   Callback, \
     55   ISCSI_FORM_CALLBACK_INFO, \
     56   ConfigAccess, \
     57   ISCSI_FORM_CALLBACK_INFO_SIGNATURE \
     58   )
     59 
     60 #pragma pack(1)
     61 struct _ISCSI_ATTEMPT_CONFIG_NVDATA {
     62   LIST_ENTRY                       Link;
     63   UINT8                            NicIndex;
     64   UINT8                            AttemptConfigIndex;
     65   BOOLEAN                          DhcpSuccess;
     66   BOOLEAN                          ValidiBFTPath;
     67   BOOLEAN                          ValidPath;
     68   UINT8                            AutoConfigureMode;
     69   EFI_STRING_ID                    AttemptTitleToken;
     70   EFI_STRING_ID                    AttemptTitleHelpToken;
     71   CHAR8                            AttemptName[ATTEMPT_NAME_MAX_SIZE];
     72   CHAR8                            MacString[ISCSI_MAX_MAC_STRING_LEN];
     73   EFI_IP_ADDRESS                   PrimaryDns;
     74   EFI_IP_ADDRESS                   SecondaryDns;
     75   EFI_IP_ADDRESS                   DhcpServer;
     76   ISCSI_SESSION_CONFIG_NVDATA      SessionConfigData;
     77   UINT8                            AuthenticationType;
     78   union {
     79     ISCSI_CHAP_AUTH_CONFIG_NVDATA  CHAP;
     80   } AuthConfigData;
     81   BOOLEAN                          AutoConfigureSuccess;
     82 };
     83 
     84 ///
     85 /// HII specific Vendor Device Path definition.
     86 ///
     87 typedef struct {
     88   VENDOR_DEVICE_PATH               VendorDevicePath;
     89   EFI_DEVICE_PATH_PROTOCOL         End;
     90 } HII_VENDOR_DEVICE_PATH;
     91 
     92 #pragma pack()
     93 
     94 struct _ISCSI_FORM_CALLBACK_INFO {
     95   UINT32                           Signature;
     96   EFI_HANDLE                       DriverHandle;
     97   EFI_HII_CONFIG_ACCESS_PROTOCOL   ConfigAccess;
     98   UINT16                           *KeyList;
     99   VOID                             *FormBuffer;
    100   EFI_HII_HANDLE                   RegisteredHandle;
    101   ISCSI_ATTEMPT_CONFIG_NVDATA      *Current;
    102 };
    103 
    104 /**
    105   Initialize the iSCSI configuration form.
    106 
    107   @param[in]  DriverBindingHandle The iSCSI driverbinding handle.
    108 
    109   @retval EFI_SUCCESS             The iSCSI configuration form is initialized.
    110   @retval EFI_OUT_OF_RESOURCES    Failed to allocate memory.
    111 
    112 **/
    113 EFI_STATUS
    114 IScsiConfigFormInit (
    115   IN EFI_HANDLE  DriverBindingHandle
    116   );
    117 
    118 /**
    119   Unload the iSCSI configuration form, this includes: delete all the iSCSI
    120   configuration entries, uninstall the form callback protocol, and
    121   free the resources used.
    122 
    123   @param[in]  DriverBindingHandle The iSCSI driverbinding handle.
    124 
    125   @retval EFI_SUCCESS             The iSCSI configuration form is unloaded.
    126   @retval Others                  Failed to unload the form.
    127 
    128 **/
    129 EFI_STATUS
    130 IScsiConfigFormUnload (
    131   IN EFI_HANDLE  DriverBindingHandle
    132   );
    133 
    134 /**
    135   Update the MAIN form to display the configured attempts.
    136 
    137 **/
    138 VOID
    139 IScsiConfigUpdateAttempt (
    140   VOID
    141   );
    142 
    143 /**
    144   Get the attempt config data from global structure by the ConfigIndex.
    145 
    146   @param[in]  AttemptConfigIndex     The unique index indicates the attempt.
    147 
    148   @return       Pointer to the attempt config data.
    149   @retval NULL  The attempt configuration data can not be found.
    150 
    151 **/
    152 ISCSI_ATTEMPT_CONFIG_NVDATA *
    153 IScsiConfigGetAttemptByConfigIndex (
    154   IN UINT8                     AttemptConfigIndex
    155   );
    156 
    157 #endif
    158