CHAR16 AttemptNameList[ATTEMPT_NAME_LIST_SIZE];\r
EFI_IP_ADDRESS Ip;\r
UINTN Index;\r
+ UINTN StringLen;\r
\r
ZeroMem (AttemptNameList, sizeof (AttemptNameList));\r
\r
- NET_LIST_FOR_EACH (Entry, &mPrivate->AttemptConfigs) {\r
- Attempt = NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA, Link);\r
- //\r
- // Normal session configuration parameters.\r
- //\r
- SessionConfigData = &Attempt->SessionConfigData;\r
-\r
- Index = Attempt->AttemptConfigIndex - 1;\r
+ if ((mPrivate != NULL) && (mPrivate->AttemptCount != 0)) {\r
+ NET_LIST_FOR_EACH (Entry, &mPrivate->AttemptConfigs) {\r
+ Attempt = NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA, Link);\r
+ //\r
+ // Normal session configuration parameters.\r
+ //\r
+ SessionConfigData = &Attempt->SessionConfigData;\r
\r
- //\r
- // Save the attempt to AttemptNameList as Attempt:1 Attempt:2\r
- //\r
- AsciiStrToUnicodeStrS (\r
- Attempt->AttemptName,\r
- AttemptNameList + StrLen (AttemptNameList),\r
- ATTEMPT_NAME_LIST_SIZE\r
- );\r
- *(AttemptNameList + StrLen (AttemptNameList) - 2) = L':';\r
- *(AttemptNameList + StrLen (AttemptNameList)) = L' ';\r
+ ASSERT ((Attempt->AttemptConfigIndex > 0) && (Attempt->AttemptConfigIndex <= FixedPcdGet8 (PcdMaxIScsiAttemptNumber)));\r
+ Index = Attempt->AttemptConfigIndex - 1;\r
\r
- AsciiStrToUnicodeStrS (\r
- Attempt->AttemptName,\r
- IfrNvData->ISCSIAttemptName + ATTEMPT_NAME_SIZE * Index,\r
- ATTEMPT_NAME_SIZE\r
- );\r
+ //\r
+ // Save the attempt to AttemptNameList as Attempt:1 Attempt:2\r
+ //\r
+ AsciiStrToUnicodeStrS (\r
+ Attempt->AttemptName,\r
+ AttemptNameList + StrLen (AttemptNameList),\r
+ ATTEMPT_NAME_LIST_SIZE - StrLen (AttemptNameList)\r
+ );\r
\r
- IfrNvData->ISCSIBootEnableList[Index] = SessionConfigData->Enabled;\r
- IfrNvData->ISCSIIpAddressTypeList[Index] = SessionConfigData->IpMode;\r
+ StringLen = StrLen (AttemptNameList);\r
+ ASSERT (StringLen > 2);\r
+ *(AttemptNameList + StringLen - 2) = L':';\r
+ *(AttemptNameList + StringLen) = L' ';\r
\r
- IfrNvData->ISCSIInitiatorInfoViaDHCP[Index] = SessionConfigData->InitiatorInfoFromDhcp;\r
- IfrNvData->ISCSITargetInfoViaDHCP[Index] = SessionConfigData->TargetInfoFromDhcp;\r
- IfrNvData->ISCSIConnectRetry[Index] = SessionConfigData->ConnectRetryCount;\r
- IfrNvData->ISCSIConnectTimeout[Index] = SessionConfigData->ConnectTimeout;\r
- IfrNvData->ISCSITargetTcpPort[Index] = SessionConfigData->TargetPort;\r
+ AsciiStrToUnicodeStrS (\r
+ Attempt->AttemptName,\r
+ IfrNvData->ISCSIAttemptName + ATTEMPT_NAME_SIZE * Index,\r
+ ATTEMPT_NAME_LIST_SIZE - ATTEMPT_NAME_SIZE * Index\r
+ );\r
\r
- if (SessionConfigData->IpMode == IP_MODE_IP4) {\r
- CopyMem (&Ip.v4, &SessionConfigData->LocalIp, sizeof (EFI_IPv4_ADDRESS));\r
- IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiatorIpAddress);\r
- CopyMem (&Ip.v4, &SessionConfigData->SubnetMask, sizeof (EFI_IPv4_ADDRESS));\r
- IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiatorNetmask);\r
- CopyMem (&Ip.v4, &SessionConfigData->Gateway, sizeof (EFI_IPv4_ADDRESS));\r
- IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiatorGateway);\r
- if (SessionConfigData->TargetIp.v4.Addr[0] != '\0') {\r
- CopyMem (&Ip.v4, &SessionConfigData->TargetIp, sizeof (EFI_IPv4_ADDRESS));\r
- IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSITargetIpAddress);\r
- }\r
- } else if (SessionConfigData->IpMode == IP_MODE_IP6) {\r
- ZeroMem (IfrNvData->Keyword[Index].ISCSITargetIpAddress, sizeof (IfrNvData->TargetIp));\r
- if (SessionConfigData->TargetIp.v6.Addr[0] != '\0') {\r
- IP6_COPY_ADDRESS (&Ip.v6, &SessionConfigData->TargetIp);\r
- IScsiIpToStr (&Ip, TRUE, IfrNvData->Keyword[Index].ISCSITargetIpAddress);\r
+ IfrNvData->ISCSIBootEnableList[Index] = SessionConfigData->Enabled;\r
+ IfrNvData->ISCSIIpAddressTypeList[Index] = SessionConfigData->IpMode;\r
+\r
+ IfrNvData->ISCSIInitiatorInfoViaDHCP[Index] = SessionConfigData->InitiatorInfoFromDhcp;\r
+ IfrNvData->ISCSITargetInfoViaDHCP[Index] = SessionConfigData->TargetInfoFromDhcp;\r
+ IfrNvData->ISCSIConnectRetry[Index] = SessionConfigData->ConnectRetryCount;\r
+ IfrNvData->ISCSIConnectTimeout[Index] = SessionConfigData->ConnectTimeout;\r
+ IfrNvData->ISCSITargetTcpPort[Index] = SessionConfigData->TargetPort;\r
+\r
+ if (SessionConfigData->IpMode == IP_MODE_IP4) {\r
+ CopyMem (&Ip.v4, &SessionConfigData->LocalIp, sizeof (EFI_IPv4_ADDRESS));\r
+ IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiatorIpAddress);\r
+ CopyMem (&Ip.v4, &SessionConfigData->SubnetMask, sizeof (EFI_IPv4_ADDRESS));\r
+ IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiatorNetmask);\r
+ CopyMem (&Ip.v4, &SessionConfigData->Gateway, sizeof (EFI_IPv4_ADDRESS));\r
+ IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiatorGateway);\r
+ if (SessionConfigData->TargetIp.v4.Addr[0] != '\0') {\r
+ CopyMem (&Ip.v4, &SessionConfigData->TargetIp, sizeof (EFI_IPv4_ADDRESS));\r
+ IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSITargetIpAddress);\r
+ }\r
+ } else if (SessionConfigData->IpMode == IP_MODE_IP6) {\r
+ ZeroMem (IfrNvData->Keyword[Index].ISCSITargetIpAddress, sizeof (IfrNvData->TargetIp));\r
+ if (SessionConfigData->TargetIp.v6.Addr[0] != '\0') {\r
+ IP6_COPY_ADDRESS (&Ip.v6, &SessionConfigData->TargetIp);\r
+ IScsiIpToStr (&Ip, TRUE, IfrNvData->Keyword[Index].ISCSITargetIpAddress);\r
+ }\r
}\r
- }\r
\r
- AsciiStrToUnicodeStrS (\r
- SessionConfigData->TargetName,\r
- IfrNvData->Keyword[Index].ISCSITargetName,\r
- ISCSI_NAME_MAX_SIZE\r
- );\r
-\r
- if (SessionConfigData->DnsMode) {\r
AsciiStrToUnicodeStrS (\r
- SessionConfigData->TargetUrl,\r
- IfrNvData->TargetIp,\r
- sizeof (IfrNvData->TargetIp) / sizeof (IfrNvData->TargetIp[0])\r
+ SessionConfigData->TargetName,\r
+ IfrNvData->Keyword[Index].ISCSITargetName,\r
+ ISCSI_NAME_MAX_SIZE\r
);\r
- }\r
\r
- IScsiLunToUnicodeStr (SessionConfigData->BootLun, IfrNvData->Keyword[Index].ISCSILun);\r
- IScsiConvertIsIdToString (IfrNvData->Keyword[Index].ISCSIIsId, SessionConfigData->IsId);\r
+ if (SessionConfigData->DnsMode) {\r
+ AsciiStrToUnicodeStrS (\r
+ SessionConfigData->TargetUrl,\r
+ IfrNvData->TargetIp,\r
+ sizeof (IfrNvData->TargetIp) / sizeof (IfrNvData->TargetIp[0])\r
+ );\r
+ }\r
\r
- IfrNvData->ISCSIAuthenticationMethod[Index] = Attempt->AuthenticationType;\r
+ IScsiLunToUnicodeStr (SessionConfigData->BootLun, IfrNvData->Keyword[Index].ISCSILun);\r
+ IScsiConvertIsIdToString (IfrNvData->Keyword[Index].ISCSIIsId, SessionConfigData->IsId);\r
\r
- if (Attempt->AuthenticationType == ISCSI_AUTH_TYPE_CHAP) {\r
- AuthConfigData = &Attempt->AuthConfigData.CHAP;\r
- IfrNvData->ISCSIChapType[Index] = AuthConfigData->CHAPType;\r
- AsciiStrToUnicodeStrS (\r
- AuthConfigData->CHAPName,\r
- IfrNvData->Keyword[Index].ISCSIChapUsername,\r
- ISCSI_CHAP_NAME_STORAGE\r
- );\r
+ IfrNvData->ISCSIAuthenticationMethod[Index] = Attempt->AuthenticationType;\r
\r
- AsciiStrToUnicodeStrS (\r
- AuthConfigData->CHAPSecret,\r
- IfrNvData->Keyword[Index].ISCSIChapSecret,\r
- ISCSI_CHAP_SECRET_STORAGE\r
- );\r
+ if (Attempt->AuthenticationType == ISCSI_AUTH_TYPE_CHAP) {\r
+ AuthConfigData = &Attempt->AuthConfigData.CHAP;\r
+ IfrNvData->ISCSIChapType[Index] = AuthConfigData->CHAPType;\r
+ AsciiStrToUnicodeStrS (\r
+ AuthConfigData->CHAPName,\r
+ IfrNvData->Keyword[Index].ISCSIChapUsername,\r
+ ISCSI_CHAP_NAME_STORAGE\r
+ );\r
\r
- AsciiStrToUnicodeStrS (\r
- AuthConfigData->ReverseCHAPName,\r
- IfrNvData->Keyword[Index].ISCSIReverseChapUsername,\r
- ISCSI_CHAP_NAME_STORAGE\r
- );\r
+ AsciiStrToUnicodeStrS (\r
+ AuthConfigData->CHAPSecret,\r
+ IfrNvData->Keyword[Index].ISCSIChapSecret,\r
+ ISCSI_CHAP_SECRET_STORAGE\r
+ );\r
\r
- AsciiStrToUnicodeStrS (\r
- AuthConfigData->ReverseCHAPSecret,\r
- IfrNvData->Keyword[Index].ISCSIReverseChapSecret,\r
- ISCSI_CHAP_SECRET_STORAGE\r
- );\r
+ AsciiStrToUnicodeStrS (\r
+ AuthConfigData->ReverseCHAPName,\r
+ IfrNvData->Keyword[Index].ISCSIReverseChapUsername,\r
+ ISCSI_CHAP_NAME_STORAGE\r
+ );\r
+\r
+ AsciiStrToUnicodeStrS (\r
+ AuthConfigData->ReverseCHAPSecret,\r
+ IfrNvData->Keyword[Index].ISCSIReverseChapSecret,\r
+ ISCSI_CHAP_SECRET_STORAGE\r
+ );\r
+ }\r
}\r
- }\r
\r
- CopyMem(IfrNvData->ISCSIDisplayAttemptList, AttemptNameList, ATTEMPT_NAME_LIST_SIZE);\r
+ CopyMem(IfrNvData->ISCSIDisplayAttemptList, AttemptNameList, ATTEMPT_NAME_LIST_SIZE);\r
+ }\r
}\r
\r
/**\r
UINT64 Lun;\r
EFI_STATUS Status;\r
\r
+ Attempt = NULL;\r
ZeroMem (IScsiName, sizeof (IScsiName));\r
\r
if (OffSet < ATTEMPT_BOOTENABLE_VAR_OFFSET) {\r
//\r
// Record the user configuration information in NVR.\r
//\r
-\r
+ ASSERT (Attempt != NULL);\r
UnicodeSPrint (mPrivate->PortString, (UINTN) ISCSI_NAME_IFR_MAX_SIZE, L"Attempt %d", Attempt->AttemptConfigIndex);\r
return gRT->SetVariable (\r
mPrivate->PortString,\r
UINTN Index;\r
EFI_INPUT_KEY Key;\r
\r
+ AttemptConfigData = NULL;\r
//\r
// Is User creating a new attempt?\r
//\r
&AttemptConfigOrderSize\r
);\r
\r
- if (AttemptConfigOrder != NULL) {\r
-\r
- for (Index = 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) {\r
- UnicodeSPrint (\r
- mPrivate->PortString,\r
- (UINTN) ISCSI_NAME_IFR_MAX_SIZE,\r
- L"Attempt %d",\r
- (UINTN) AttemptConfigOrder[Index]\r
- );\r
- GetVariable2 (\r
- mPrivate->PortString,\r
- &gEfiIScsiInitiatorNameProtocolGuid,\r
- (VOID**)&AttemptConfigData,\r
- NULL\r
- );\r
- if (AttemptConfigData == NULL || AttemptConfigData->Actived == ISCSI_ACTIVE_ENABLED) {\r
- continue;\r
- }\r
-\r
- break;\r
- }\r
+ if (AttemptConfigOrder == NULL) {\r
+ return EFI_NOT_FOUND;\r
+ }\r
\r
- if (Index > PcdGet8 (PcdMaxIScsiAttemptNumber)) {\r
- CreatePopUp (\r
- EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
- &Key,\r
- L"Can not create more attempts, Please configure the PcdMaxIScsiAttemptNumber if needed!",\r
- NULL\r
- );\r
- return EFI_UNSUPPORTED;\r
+ for (Index = 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Index++) {\r
+ UnicodeSPrint (\r
+ mPrivate->PortString,\r
+ (UINTN) ISCSI_NAME_IFR_MAX_SIZE,\r
+ L"Attempt %d",\r
+ (UINTN) AttemptConfigOrder[Index]\r
+ );\r
+ GetVariable2 (\r
+ mPrivate->PortString,\r
+ &gEfiIScsiInitiatorNameProtocolGuid,\r
+ (VOID**)&AttemptConfigData,\r
+ NULL\r
+ );\r
+ if (AttemptConfigData == NULL || AttemptConfigData->Actived == ISCSI_ACTIVE_ENABLED) {\r
+ continue;\r
}\r
+ \r
+ break;\r
+ }\r
+ \r
+ if (Index > PcdGet8 (PcdMaxIScsiAttemptNumber)) {\r
+ CreatePopUp (\r
+ EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
+ &Key,\r
+ L"Can not create more attempts, Please configure the PcdMaxIScsiAttemptNumber if needed!",\r
+ NULL\r
+ );\r
+ return EFI_UNSUPPORTED;\r
}\r
\r
if (AttemptConfigOrder != NULL) {\r
MacString\r
);\r
\r
+ ASSERT (AttemptConfigData != NULL);\r
UnicodeStrToAsciiStrS (MacString, AttemptConfigData->MacString, sizeof (AttemptConfigData->MacString));\r
AttemptConfigData->NicIndex = NicIndex;\r
AttemptConfigData->Actived = ISCSI_ACTIVE_ENABLED;\r
Index2 = 0;\r
NicInfo = NULL;\r
AttemptList = NULL;\r
+ Status = EFI_SUCCESS;\r
\r
if (This == NULL || Configuration == NULL || Progress == NULL) {\r
return EFI_INVALID_PARAMETER;\r
goto Exit;\r
}\r
} else {\r
- Status = gIScsiInitiatorName.Get (&gIScsiInitiatorName, &BufferSize, InitiatorName);\r
+ Status = IScsiGetValue (Configuration, L"&OFFSET=", &OffSet);\r
if (EFI_ERROR (Status)) {\r
- CreatePopUp (\r
- EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
- &Key,\r
- L"Error: please configure iSCSI initiator name first!",\r
- NULL\r
- );\r
+ goto Exit;\r
+ }\r
+\r
+ if (OffSet >= ATTEMPT_MAC_ADDR_VAR_OFFSET) {\r
+ Status = gIScsiInitiatorName.Get (&gIScsiInitiatorName, &BufferSize, InitiatorName);\r
+ if (EFI_ERROR (Status)) {\r
+ CreatePopUp (\r
+ EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
+ &Key,\r
+ L"Error: please configure iSCSI initiator name first!",\r
+ NULL\r
+ );\r
+ goto Exit;\r
+ }\r
+ } else {\r
goto Exit;\r
}\r
\r
}\r
\r
} else {\r
- Status = IScsiGetValue (Configuration, L"&OFFSET=", &OffSet);\r
- if (EFI_ERROR (Status)) {\r
- goto Exit;\r
- }\r
Status = IScsiConvertlfrNvDataToAttemptConfigDataByKeyword (IfrNvData, OffSet);\r
if (EFI_ERROR (Status)) {\r
goto Exit;\r
\r
IScsiConfigUpdateAttempt ();\r
\r
- Status = EFI_SUCCESS;\r
-\r
Exit:\r
if (InitiatorName != NULL) {\r
FreePool (InitiatorName);\r