From nobody Sat Nov 2 14:22:40 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zoho.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1488186634501649.1017318265829; Mon, 27 Feb 2017 01:10:34 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 3374282027; Mon, 27 Feb 2017 01:10:33 -0800 (PST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 57AA382005 for ; Mon, 27 Feb 2017 01:10:31 -0800 (PST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 Feb 2017 01:10:31 -0800 Received: from shwdeopenpsi116.ccr.corp.intel.com ([10.239.9.7]) by orsmga002.jf.intel.com with ESMTP; 27 Feb 2017 01:10:29 -0800 X-Original-To: edk2-devel@lists.01.org X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.35,213,1484035200"; d="scan'208";a="53330671" From: Zhang Lubo To: edk2-devel@lists.01.org Date: Mon, 27 Feb 2017 17:10:29 +0800 Message-Id: <1488186629-6072-1-git-send-email-lubo.zhang@intel.com> X-Mailer: git-send-email 1.9.5.msysgit.1 Subject: [edk2] [PATCH V2] NetworkPkg: Add check logic for some variable in iSCSI driver. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Ye Ting , Fu Siyuan , Wu Jiaxin MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" v2: need to check the global variable mPrivate before using it in the Convert AttemptConfigData To IfrNvData by Keyword function. Add check logic for some attempt variable to enhance code in iSCSI. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Zhang Lubo Cc: Ye Ting Cc: Fu Siyuan Cc: Wu Jiaxin Reviewed-by: Wu Jiaxin --- NetworkPkg/IScsiDxe/IScsiConfig.c | 271 ++++++++++++++++++++--------------= ---- NetworkPkg/IScsiDxe/IScsiConfig.h | 2 +- 2 files changed, 143 insertions(+), 130 deletions(-) diff --git a/NetworkPkg/IScsiDxe/IScsiConfig.c b/NetworkPkg/IScsiDxe/IScsiC= onfig.c index b169620..08a49d6 100644 --- a/NetworkPkg/IScsiDxe/IScsiConfig.c +++ b/NetworkPkg/IScsiDxe/IScsiConfig.c @@ -628,116 +628,123 @@ IScsiConvertAttemptConfigDataToIfrNvDataByKeyword ( ISCSI_SESSION_CONFIG_NVDATA *SessionConfigData; ISCSI_CHAP_AUTH_CONFIG_NVDATA *AuthConfigData; CHAR16 AttemptNameList[ATTEMPT_NAME_LIST_SIZE]; EFI_IP_ADDRESS Ip; UINTN Index; + UINTN StringLen; =20 ZeroMem (AttemptNameList, sizeof (AttemptNameList)); =20 - NET_LIST_FOR_EACH (Entry, &mPrivate->AttemptConfigs) { - Attempt =3D NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA, = Link); - // - // Normal session configuration parameters. - // - SessionConfigData =3D &Attempt->SessionConfigData; - - Index =3D Attempt->AttemptConfigIndex - 1; + if ((mPrivate !=3D NULL) && (mPrivate->AttemptCount !=3D 0)) { + NET_LIST_FOR_EACH (Entry, &mPrivate->AttemptConfigs) { + Attempt =3D NET_LIST_USER_STRUCT (Entry, ISCSI_ATTEMPT_CONFIG_NVDATA= , Link); + // + // Normal session configuration parameters. + // + SessionConfigData =3D &Attempt->SessionConfigData; =20 - // - // Save the attempt to AttemptNameList as Attempt:1 Attempt:2 - // - AsciiStrToUnicodeStrS ( - Attempt->AttemptName, - AttemptNameList + StrLen (AttemptNameList), - ATTEMPT_NAME_LIST_SIZE - ); - *(AttemptNameList + StrLen (AttemptNameList) - 2) =3D L':'; - *(AttemptNameList + StrLen (AttemptNameList)) =3D L' '; + ASSERT ((Attempt->AttemptConfigIndex > 0) && (Attempt->AttemptConfig= Index <=3D FixedPcdGet8 (PcdMaxIScsiAttemptNumber))); + Index =3D Attempt->AttemptConfigIndex - 1; =20 - AsciiStrToUnicodeStrS ( - Attempt->AttemptName, - IfrNvData->ISCSIAttemptName + ATTEMPT_NAME_SIZE * Index, - ATTEMPT_NAME_SIZE - ); + // + // Save the attempt to AttemptNameList as Attempt:1 Attempt:2 + // + AsciiStrToUnicodeStrS ( + Attempt->AttemptName, + AttemptNameList + StrLen (AttemptNameList), + ATTEMPT_NAME_LIST_SIZE - StrLen (AttemptNameList) + ); =20 - IfrNvData->ISCSIBootEnableList[Index] =3D SessionConfigData->= Enabled; - IfrNvData->ISCSIIpAddressTypeList[Index] =3D SessionConfigData->= IpMode; + StringLen =3D StrLen (AttemptNameList); + ASSERT (StringLen > 2); + *(AttemptNameList + StringLen - 2) =3D L':'; + *(AttemptNameList + StringLen) =3D L' '; =20 - IfrNvData->ISCSIInitiatorInfoViaDHCP[Index] =3D SessionConfigData->= InitiatorInfoFromDhcp; - IfrNvData->ISCSITargetInfoViaDHCP[Index] =3D SessionConfigData->= TargetInfoFromDhcp; - IfrNvData->ISCSIConnectRetry[Index] =3D SessionConfigData->= ConnectRetryCount; - IfrNvData->ISCSIConnectTimeout[Index] =3D SessionConfigData->= ConnectTimeout; - IfrNvData->ISCSITargetTcpPort[Index] =3D SessionConfigData->= TargetPort; + AsciiStrToUnicodeStrS ( + Attempt->AttemptName, + IfrNvData->ISCSIAttemptName + ATTEMPT_NAME_SIZE * Index, + ATTEMPT_NAME_LIST_SIZE - ATTEMPT_NAME_SIZE * Index + ); =20 - if (SessionConfigData->IpMode =3D=3D IP_MODE_IP4) { - CopyMem (&Ip.v4, &SessionConfigData->LocalIp, sizeof (EFI_IPv4_ADDRE= SS)); - IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiatorIp= Address); - CopyMem (&Ip.v4, &SessionConfigData->SubnetMask, sizeof (EFI_IPv4_AD= DRESS)); - IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiatorNe= tmask); - CopyMem (&Ip.v4, &SessionConfigData->Gateway, sizeof (EFI_IPv4_ADDRE= SS)); - IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiatorGa= teway); - if (SessionConfigData->TargetIp.v4.Addr[0] !=3D '\0') { - CopyMem (&Ip.v4, &SessionConfigData->TargetIp, sizeof (EFI_IPv4_AD= DRESS)); - IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSITargetIpA= ddress); - } - } else if (SessionConfigData->IpMode =3D=3D IP_MODE_IP6) { - ZeroMem (IfrNvData->Keyword[Index].ISCSITargetIpAddress, sizeof (Ifr= NvData->TargetIp)); - if (SessionConfigData->TargetIp.v6.Addr[0] !=3D '\0') { - IP6_COPY_ADDRESS (&Ip.v6, &SessionConfigData->TargetIp); - IScsiIpToStr (&Ip, TRUE, IfrNvData->Keyword[Index].ISCSITargetIpAd= dress); + IfrNvData->ISCSIBootEnableList[Index] =3D SessionConfigData= ->Enabled; + IfrNvData->ISCSIIpAddressTypeList[Index] =3D SessionConfigData= ->IpMode; + + IfrNvData->ISCSIInitiatorInfoViaDHCP[Index] =3D SessionConfigData= ->InitiatorInfoFromDhcp; + IfrNvData->ISCSITargetInfoViaDHCP[Index] =3D SessionConfigData= ->TargetInfoFromDhcp; + IfrNvData->ISCSIConnectRetry[Index] =3D SessionConfigData= ->ConnectRetryCount; + IfrNvData->ISCSIConnectTimeout[Index] =3D SessionConfigData= ->ConnectTimeout; + IfrNvData->ISCSITargetTcpPort[Index] =3D SessionConfigData= ->TargetPort; + + if (SessionConfigData->IpMode =3D=3D IP_MODE_IP4) { + CopyMem (&Ip.v4, &SessionConfigData->LocalIp, sizeof (EFI_IPv4_ADD= RESS)); + IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiator= IpAddress); + CopyMem (&Ip.v4, &SessionConfigData->SubnetMask, sizeof (EFI_IPv4_= ADDRESS)); + IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiator= Netmask); + CopyMem (&Ip.v4, &SessionConfigData->Gateway, sizeof (EFI_IPv4_ADD= RESS)); + IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSIInitiator= Gateway); + if (SessionConfigData->TargetIp.v4.Addr[0] !=3D '\0') { + CopyMem (&Ip.v4, &SessionConfigData->TargetIp, sizeof (EFI_IPv4_= ADDRESS)); + IScsiIpToStr (&Ip, FALSE, IfrNvData->Keyword[Index].ISCSITargetI= pAddress); + } + } else if (SessionConfigData->IpMode =3D=3D IP_MODE_IP6) { + ZeroMem (IfrNvData->Keyword[Index].ISCSITargetIpAddress, sizeof (I= frNvData->TargetIp)); + if (SessionConfigData->TargetIp.v6.Addr[0] !=3D '\0') { + IP6_COPY_ADDRESS (&Ip.v6, &SessionConfigData->TargetIp); + IScsiIpToStr (&Ip, TRUE, IfrNvData->Keyword[Index].ISCSITargetIp= Address); + } } - } =20 - AsciiStrToUnicodeStrS ( - SessionConfigData->TargetName, - IfrNvData->Keyword[Index].ISCSITargetName, - ISCSI_NAME_MAX_SIZE - ); - - if (SessionConfigData->DnsMode) { AsciiStrToUnicodeStrS ( - SessionConfigData->TargetUrl, - IfrNvData->TargetIp, - sizeof (IfrNvData->TargetIp) / sizeof (IfrNvData->TargetIp[0]) + SessionConfigData->TargetName, + IfrNvData->Keyword[Index].ISCSITargetName, + ISCSI_NAME_MAX_SIZE ); - } =20 - IScsiLunToUnicodeStr (SessionConfigData->BootLun, IfrNvData->Keyword[I= ndex].ISCSILun); - IScsiConvertIsIdToString (IfrNvData->Keyword[Index].ISCSIIsId, Session= ConfigData->IsId); + if (SessionConfigData->DnsMode) { + AsciiStrToUnicodeStrS ( + SessionConfigData->TargetUrl, + IfrNvData->TargetIp, + sizeof (IfrNvData->TargetIp) / sizeof (IfrNvData->TargetIp[0]) + ); + } =20 - IfrNvData->ISCSIAuthenticationMethod[Index] =3D Attempt->Authentica= tionType; + IScsiLunToUnicodeStr (SessionConfigData->BootLun, IfrNvData->Keyword= [Index].ISCSILun); + IScsiConvertIsIdToString (IfrNvData->Keyword[Index].ISCSIIsId, Sessi= onConfigData->IsId); =20 - if (Attempt->AuthenticationType =3D=3D ISCSI_AUTH_TYPE_CHAP) { - AuthConfigData =3D &Attempt->AuthConfigData.CHAP; - IfrNvData->ISCSIChapType[Index] =3D AuthConfigData->CHAPType; - AsciiStrToUnicodeStrS ( - AuthConfigData->CHAPName, - IfrNvData->Keyword[Index].ISCSIChapUsername, - ISCSI_CHAP_NAME_STORAGE - ); + IfrNvData->ISCSIAuthenticationMethod[Index] =3D Attempt->Authenti= cationType; =20 - AsciiStrToUnicodeStrS ( - AuthConfigData->CHAPSecret, - IfrNvData->Keyword[Index].ISCSIChapSecret, - ISCSI_CHAP_SECRET_STORAGE - ); + if (Attempt->AuthenticationType =3D=3D ISCSI_AUTH_TYPE_CHAP) { + AuthConfigData =3D &Attempt->AuthConfigData.CHAP; + IfrNvData->ISCSIChapType[Index] =3D AuthConfigData->CHAPType; + AsciiStrToUnicodeStrS ( + AuthConfigData->CHAPName, + IfrNvData->Keyword[Index].ISCSIChapUsername, + ISCSI_CHAP_NAME_STORAGE + ); =20 - AsciiStrToUnicodeStrS ( - AuthConfigData->ReverseCHAPName, - IfrNvData->Keyword[Index].ISCSIReverseChapUsername, - ISCSI_CHAP_NAME_STORAGE - ); + AsciiStrToUnicodeStrS ( + AuthConfigData->CHAPSecret, + IfrNvData->Keyword[Index].ISCSIChapSecret, + ISCSI_CHAP_SECRET_STORAGE + ); =20 - AsciiStrToUnicodeStrS ( - AuthConfigData->ReverseCHAPSecret, - IfrNvData->Keyword[Index].ISCSIReverseChapSecret, - ISCSI_CHAP_SECRET_STORAGE - ); + AsciiStrToUnicodeStrS ( + AuthConfigData->ReverseCHAPName, + IfrNvData->Keyword[Index].ISCSIReverseChapUsername, + ISCSI_CHAP_NAME_STORAGE + ); + + AsciiStrToUnicodeStrS ( + AuthConfigData->ReverseCHAPSecret, + IfrNvData->Keyword[Index].ISCSIReverseChapSecret, + ISCSI_CHAP_SECRET_STORAGE + ); + } } - } =20 - CopyMem(IfrNvData->ISCSIDisplayAttemptList, AttemptNameList, ATTEMPT_NAM= E_LIST_SIZE); + CopyMem(IfrNvData->ISCSIDisplayAttemptList, AttemptNameList, ATTEMPT_N= AME_LIST_SIZE); + } } =20 /** Convert the IFR data to iSCSI configuration data. =20 @@ -1199,10 +1206,11 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( EFI_IP_ADDRESS Gateway; EFI_INPUT_KEY Key; UINT64 Lun; EFI_STATUS Status; =20 + Attempt =3D NULL; ZeroMem (IScsiName, sizeof (IScsiName)); =20 if (OffSet < ATTEMPT_BOOTENABLE_VAR_OFFSET) { return EFI_SUCCESS; =20 @@ -1726,11 +1734,11 @@ IScsiConvertlfrNvDataToAttemptConfigDataByKeyword ( =20 =20 // // Record the user configuration information in NVR. // - + ASSERT (Attempt !=3D NULL); UnicodeSPrint (mPrivate->PortString, (UINTN) ISCSI_NAME_IFR_MAX_SIZE, L"= Attempt %d", Attempt->AttemptConfigIndex); return gRT->SetVariable ( mPrivate->PortString, &gEfiIScsiInitiatorNameProtocolGuid, ISCSI_CONFIG_VAR_ATTR, @@ -2705,10 +2713,11 @@ IScsiConfigProcessDefault ( UINT8 *AttemptConfigOrder; UINTN AttemptConfigOrderSize; UINTN Index; EFI_INPUT_KEY Key; =20 + AttemptConfigData =3D NULL; // // Is User creating a new attempt? // NewAttempt =3D FALSE; =20 @@ -2749,41 +2758,40 @@ IScsiConfigProcessDefault ( L"InitialAttemptOrder", &gIScsiConfigGuid, &AttemptConfigOrderSize ); =20 - if (AttemptConfigOrder !=3D NULL) { - - for (Index =3D 0; Index < AttemptConfigOrderSize / sizeof (UINT8); I= ndex++) { - UnicodeSPrint ( - mPrivate->PortString, - (UINTN) ISCSI_NAME_IFR_MAX_SIZE, - L"Attempt %d", - (UINTN) AttemptConfigOrder[Index] - ); - GetVariable2 ( - mPrivate->PortString, - &gEfiIScsiInitiatorNameProtocolGuid, - (VOID**)&AttemptConfigData, - NULL - ); - if (AttemptConfigData =3D=3D NULL || AttemptConfigData->Actived = =3D=3D ISCSI_ACTIVE_ENABLED) { - continue; - } - - break; - } + ASSERT (AttemptConfigOrder !=3D NULL); =20 - if (Index > PcdGet8 (PcdMaxIScsiAttemptNumber)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Can not create more attempts, Please configure the PcdMaxIScsi= AttemptNumber if needed!", - NULL - ); - return EFI_UNSUPPORTED; + for (Index =3D 0; Index < AttemptConfigOrderSize / sizeof (UINT8); Ind= ex++) { + UnicodeSPrint ( + mPrivate->PortString, + (UINTN) ISCSI_NAME_IFR_MAX_SIZE, + L"Attempt %d", + (UINTN) AttemptConfigOrder[Index] + ); + GetVariable2 ( + mPrivate->PortString, + &gEfiIScsiInitiatorNameProtocolGuid, + (VOID**)&AttemptConfigData, + NULL + ); + if (AttemptConfigData =3D=3D NULL || AttemptConfigData->Actived =3D= =3D ISCSI_ACTIVE_ENABLED) { + continue; } + =20 + break; + } + =20 + if (Index > PcdGet8 (PcdMaxIScsiAttemptNumber)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Can not create more attempts, Please configure the PcdMaxIScsiAt= temptNumber if needed!", + NULL + ); + return EFI_UNSUPPORTED; } =20 if (AttemptConfigOrder !=3D NULL) { FreePool (AttemptConfigOrder); } @@ -2796,10 +2804,11 @@ IScsiConfigProcessDefault ( NicInfo->HwAddressSize, NicInfo->VlanId, MacString ); =20 + ASSERT (AttemptConfigData !=3D NULL); UnicodeStrToAsciiStrS (MacString, AttemptConfigData->MacString, sizeof= (AttemptConfigData->MacString)); AttemptConfigData->NicIndex =3D NicIndex; AttemptConfigData->Actived =3D ISCSI_ACTIVE_ENABLED; =20 // @@ -3126,10 +3135,11 @@ IScsiFormRouteConfig ( =20 Index =3D 0; Index2 =3D 0; NicInfo =3D NULL; AttemptList =3D NULL; + Status =3D EFI_SUCCESS; =20 if (This =3D=3D NULL || Configuration =3D=3D NULL || Progress =3D=3D NUL= L) { return EFI_INVALID_PARAMETER; } =20 @@ -3182,18 +3192,27 @@ IScsiFormRouteConfig ( NULL ); goto Exit; } } else { - Status =3D gIScsiInitiatorName.Get (&gIScsiInitiatorName, &BufferSize,= InitiatorName); + Status =3D IScsiGetValue (Configuration, L"&OFFSET=3D", &OffSet); if (EFI_ERROR (Status)) { - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Error: please configure iSCSI initiator name first!", - NULL - ); + goto Exit; + } + + if (OffSet >=3D ATTEMPT_MAC_ADDR_VAR_OFFSET) { + Status =3D gIScsiInitiatorName.Get (&gIScsiInitiatorName, &BufferSiz= e, InitiatorName); + if (EFI_ERROR (Status)) { + CreatePopUp ( + EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, + &Key, + L"Error: please configure iSCSI initiator name first!", + NULL + ); + goto Exit; + } + } else { goto Exit; } =20 if (IfrNvData->ISCSIAddAttemptList[0] !=3D L'\0') { Status =3DIScsiGetAttemptIndexList (IfrNvData->ISCSIAddAttemptList, = IfrNvData->AddAttemptList, TRUE); @@ -3288,25 +3307,19 @@ IScsiFormRouteConfig ( Status =3D EFI_NOT_FOUND; goto Exit; } =20 } else { - Status =3D IScsiGetValue (Configuration, L"&OFFSET=3D", &OffSet); - if (EFI_ERROR (Status)) { - goto Exit; - } Status =3D IScsiConvertlfrNvDataToAttemptConfigDataByKeyword (IfrNvD= ata, OffSet); if (EFI_ERROR (Status)) { goto Exit; } } } =20 IScsiConfigUpdateAttempt (); =20 - Status =3D EFI_SUCCESS; - Exit: if (InitiatorName !=3D NULL) { FreePool (InitiatorName); } =20 diff --git a/NetworkPkg/IScsiDxe/IScsiConfig.h b/NetworkPkg/IScsiDxe/IScsiC= onfig.h index 21db3c3..7793d52 100644 --- a/NetworkPkg/IScsiDxe/IScsiConfig.h +++ b/NetworkPkg/IScsiDxe/IScsiConfig.h @@ -29,11 +29,10 @@ extern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo; ((UINT16) ((UINTN) &(((ISCSI_CONFIG_IFR_NVDATA *) 0)->Field))) =20 #define QUESTION_ID(Field) \ ((UINT16) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)) =20 - #define DYNAMIC_ONE_OF_VAR_OFFSET VAR_OFFSET (Enabled) #define DYNAMIC_ORDERED_LIST_QUESTION_ID QUESTION_ID (DynamicOrderedLis= t) #define DYNAMIC_ORDERED_LIST_VAR_OFFSET VAR_OFFSET (DynamicOrderedLis= t) #define ATTEMPT_DEL_QUESTION_ID QUESTION_ID (DeleteAttemptList) #define ATTEMPT_DEL_VAR_OFFSET VAR_OFFSET (DeleteAttemptList) @@ -41,10 +40,11 @@ extern ISCSI_FORM_CALLBACK_INFO *mCallbackInfo; #define ATTEMPT_ADD_VAR_OFFSET VAR_OFFSET (AddAttemptList) =20 // // Define QuestionId and OffSet for Keywords. // +#define ATTEMPT_MAC_ADDR_VAR_OFFSET VAR_OFFSET (ISCSIMac= Addr) #define ATTEMPT_ATTEMPT_NAME_QUESTION_ID QUESTION_ID (ISCSIAtt= emptName) #define ATTEMPT_ATTEMPT_NAME_VAR_OFFSET VAR_OFFSET (ISCSIAtt= emptName) #define ATTEMPT_BOOTENABLE_QUESTION_ID QUESTION_ID (ISCSIBoo= tEnableList) #define ATTEMPT_BOOTENABLE_VAR_OFFSET VAR_OFFSET (ISCSIBoo= tEnableList) #define ATTEMPT_ADDRESS_TYPE_QUESTION_ID QUESTION_ID (ISCSIIpA= ddressTypeList) --=20 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel