From: ydong10 Date: Fri, 20 May 2011 02:48:59 +0000 (+0000) Subject: Refine some call back function to return EFI_UNSUPPORTED for all unsupported call... X-Git-Tag: edk2-stable201903~14819 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=083f7c69c171ffe2474748c5b78e913623cfd051 Refine some call back function to return EFI_UNSUPPORTED for all unsupported call back type. Signed-off-by: ydong10 Reviewed-by: lgao4 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11686 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c index fa8f202b6a..9f795b9d84 100644 --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c @@ -680,255 +680,254 @@ IScsiFormCallback ( EFI_STATUS Status; EFI_INPUT_KEY Key; - if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)) { + if (Action == EFI_BROWSER_ACTION_CHANGING) { + Private = ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This); // - // Do nothing for UEFI OPEN/CLOSE Action + // Retrive uncommitted data from Browser // - return EFI_SUCCESS; - } - - Private = ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This); - - // - // Retrive uncommitted data from Browser - // - IfrNvData = AllocateZeroPool (sizeof (ISCSI_CONFIG_IFR_NVDATA)); - ASSERT (IfrNvData != NULL); - if (!HiiGetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData)) { - FreePool (IfrNvData); - return EFI_NOT_FOUND; - } - - Status = EFI_SUCCESS; + IfrNvData = AllocateZeroPool (sizeof (ISCSI_CONFIG_IFR_NVDATA)); + ASSERT (IfrNvData != NULL); + if (!HiiGetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData)) { + FreePool (IfrNvData); + return EFI_NOT_FOUND; + } + Status = EFI_SUCCESS; - switch (QuestionId) { - case KEY_INITIATOR_NAME: - IScsiUnicodeStrToAsciiStr (IfrNvData->InitiatorName, IScsiName); - BufferSize = AsciiStrSize (IScsiName); + switch (QuestionId) { + case KEY_INITIATOR_NAME: + IScsiUnicodeStrToAsciiStr (IfrNvData->InitiatorName, IScsiName); + BufferSize = AsciiStrSize (IScsiName); - Status = gIScsiInitiatorName.Set (&gIScsiInitiatorName, &BufferSize, IScsiName); - if (EFI_ERROR (Status)) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid iSCSI Name!", NULL); - } + Status = gIScsiInitiatorName.Set (&gIScsiInitiatorName, &BufferSize, IScsiName); + if (EFI_ERROR (Status)) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid iSCSI Name!", NULL); + } - break; + break; - case KEY_LOCAL_IP: - IScsiUnicodeStrToAsciiStr (IfrNvData->LocalIp, Ip4String); - Status = IScsiAsciiStrToIp (Ip4String, &HostIp.v4); - if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL); - Status = EFI_INVALID_PARAMETER; - } else { - CopyMem (&Private->Current->SessionConfigData.LocalIp, &HostIp.v4, sizeof (HostIp.v4)); - } + case KEY_LOCAL_IP: + IScsiUnicodeStrToAsciiStr (IfrNvData->LocalIp, Ip4String); + Status = IScsiAsciiStrToIp (Ip4String, &HostIp.v4); + if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL); + Status = EFI_INVALID_PARAMETER; + } else { + CopyMem (&Private->Current->SessionConfigData.LocalIp, &HostIp.v4, sizeof (HostIp.v4)); + } - break; + break; - case KEY_SUBNET_MASK: - IScsiUnicodeStrToAsciiStr (IfrNvData->SubnetMask, Ip4String); - Status = IScsiAsciiStrToIp (Ip4String, &SubnetMask.v4); - if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (IScsiGetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL); - Status = EFI_INVALID_PARAMETER; - } else { - CopyMem (&Private->Current->SessionConfigData.SubnetMask, &SubnetMask.v4, sizeof (SubnetMask.v4)); - } + case KEY_SUBNET_MASK: + IScsiUnicodeStrToAsciiStr (IfrNvData->SubnetMask, Ip4String); + Status = IScsiAsciiStrToIp (Ip4String, &SubnetMask.v4); + if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (IScsiGetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL); + Status = EFI_INVALID_PARAMETER; + } else { + CopyMem (&Private->Current->SessionConfigData.SubnetMask, &SubnetMask.v4, sizeof (SubnetMask.v4)); + } - break; + break; - case KEY_GATE_WAY: - IScsiUnicodeStrToAsciiStr (IfrNvData->Gateway, Ip4String); - Status = IScsiAsciiStrToIp (Ip4String, &Gateway.v4); - if (EFI_ERROR (Status) || ((Gateway.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), 0))) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL); - Status = EFI_INVALID_PARAMETER; - } else { - CopyMem (&Private->Current->SessionConfigData.Gateway, &Gateway.v4, sizeof (Gateway.v4)); - } + case KEY_GATE_WAY: + IScsiUnicodeStrToAsciiStr (IfrNvData->Gateway, Ip4String); + Status = IScsiAsciiStrToIp (Ip4String, &Gateway.v4); + if (EFI_ERROR (Status) || ((Gateway.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), 0))) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL); + Status = EFI_INVALID_PARAMETER; + } else { + CopyMem (&Private->Current->SessionConfigData.Gateway, &Gateway.v4, sizeof (Gateway.v4)); + } - break; + break; - case KEY_TARGET_IP: - IScsiUnicodeStrToAsciiStr (IfrNvData->TargetIp, Ip4String); - Status = IScsiAsciiStrToIp (Ip4String, &HostIp.v4); - if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL); - Status = EFI_INVALID_PARAMETER; - } else { - CopyMem (&Private->Current->SessionConfigData.TargetIp, &HostIp.v4, sizeof (HostIp.v4)); - } + case KEY_TARGET_IP: + IScsiUnicodeStrToAsciiStr (IfrNvData->TargetIp, Ip4String); + Status = IScsiAsciiStrToIp (Ip4String, &HostIp.v4); + if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL); + Status = EFI_INVALID_PARAMETER; + } else { + CopyMem (&Private->Current->SessionConfigData.TargetIp, &HostIp.v4, sizeof (HostIp.v4)); + } - break; + break; - case KEY_TARGET_NAME: - IScsiUnicodeStrToAsciiStr (IfrNvData->TargetName, IScsiName); - Status = IScsiNormalizeName (IScsiName, AsciiStrLen (IScsiName)); - if (EFI_ERROR (Status)) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid iSCSI Name!", NULL); - } else { - AsciiStrCpy (Private->Current->SessionConfigData.TargetName, IScsiName); - } + case KEY_TARGET_NAME: + IScsiUnicodeStrToAsciiStr (IfrNvData->TargetName, IScsiName); + Status = IScsiNormalizeName (IScsiName, AsciiStrLen (IScsiName)); + if (EFI_ERROR (Status)) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid iSCSI Name!", NULL); + } else { + AsciiStrCpy (Private->Current->SessionConfigData.TargetName, IScsiName); + } - break; + break; - case KEY_DHCP_ENABLE: - if (IfrNvData->InitiatorInfoFromDhcp == 0) { - IfrNvData->TargetInfoFromDhcp = 0; - } + case KEY_DHCP_ENABLE: + if (IfrNvData->InitiatorInfoFromDhcp == 0) { + IfrNvData->TargetInfoFromDhcp = 0; + } - break; + break; - case KEY_BOOT_LUN: - IScsiUnicodeStrToAsciiStr (IfrNvData->BootLun, LunString); - Status = IScsiAsciiStrToLun (LunString, (UINT8 *) &Lun); - if (EFI_ERROR (Status)) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid LUN string!", NULL); - } else { - CopyMem (Private->Current->SessionConfigData.BootLun, &Lun, sizeof (Lun)); - } + case KEY_BOOT_LUN: + IScsiUnicodeStrToAsciiStr (IfrNvData->BootLun, LunString); + Status = IScsiAsciiStrToLun (LunString, (UINT8 *) &Lun); + if (EFI_ERROR (Status)) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid LUN string!", NULL); + } else { + CopyMem (Private->Current->SessionConfigData.BootLun, &Lun, sizeof (Lun)); + } - break; + break; - case KEY_CHAP_NAME: - IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPName, Private->Current->AuthConfigData.CHAPName); - break; + case KEY_CHAP_NAME: + IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPName, Private->Current->AuthConfigData.CHAPName); + break; - case KEY_CHAP_SECRET: - IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPSecret, Private->Current->AuthConfigData.CHAPSecret); - break; + case KEY_CHAP_SECRET: + IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPSecret, Private->Current->AuthConfigData.CHAPSecret); + break; - case KEY_REVERSE_CHAP_NAME: - IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPName, Private->Current->AuthConfigData.ReverseCHAPName); - break; + case KEY_REVERSE_CHAP_NAME: + IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPName, Private->Current->AuthConfigData.ReverseCHAPName); + break; - case KEY_REVERSE_CHAP_SECRET: - IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPSecret, Private->Current->AuthConfigData.ReverseCHAPSecret); - break; + case KEY_REVERSE_CHAP_SECRET: + IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPSecret, Private->Current->AuthConfigData.ReverseCHAPSecret); + break; - case KEY_CONFIG_ISID: - IScsiParseIsIdFromString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId); - IScsiConvertIsIdToString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId); + case KEY_CONFIG_ISID: + IScsiParseIsIdFromString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId); + IScsiConvertIsIdToString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId); - break; + break; - case KEY_SAVE_CHANGES: - // - // First, update those fields which don't have INTERACTIVE set. - // - Private->Current->SessionConfigData.Enabled = IfrNvData->Enabled; - Private->Current->SessionConfigData.InitiatorInfoFromDhcp = IfrNvData->InitiatorInfoFromDhcp; - Private->Current->SessionConfigData.TargetPort = IfrNvData->TargetPort; - if (Private->Current->SessionConfigData.TargetPort == 0) { - Private->Current->SessionConfigData.TargetPort = ISCSI_WELL_KNOWN_PORT; - } + case KEY_SAVE_CHANGES: + // + // First, update those fields which don't have INTERACTIVE set. + // + Private->Current->SessionConfigData.Enabled = IfrNvData->Enabled; + Private->Current->SessionConfigData.InitiatorInfoFromDhcp = IfrNvData->InitiatorInfoFromDhcp; + Private->Current->SessionConfigData.TargetPort = IfrNvData->TargetPort; + if (Private->Current->SessionConfigData.TargetPort == 0) { + Private->Current->SessionConfigData.TargetPort = ISCSI_WELL_KNOWN_PORT; + } - Private->Current->SessionConfigData.TargetInfoFromDhcp = IfrNvData->TargetInfoFromDhcp; - Private->Current->AuthConfigData.CHAPType = IfrNvData->CHAPType; + Private->Current->SessionConfigData.TargetInfoFromDhcp = IfrNvData->TargetInfoFromDhcp; + Private->Current->AuthConfigData.CHAPType = IfrNvData->CHAPType; - // - // Only do full parameter validation if iSCSI is enabled on this device. - // - if (Private->Current->SessionConfigData.Enabled) { // - // Validate the address configuration of the Initiator if DHCP isn't - // deployed. + // Only do full parameter validation if iSCSI is enabled on this device. // - if (!Private->Current->SessionConfigData.InitiatorInfoFromDhcp) { - CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.LocalIp, sizeof (HostIp.v4)); - CopyMem (&SubnetMask.v4, &Private->Current->SessionConfigData.SubnetMask, sizeof (SubnetMask.v4)); - CopyMem (&Gateway.v4, &Private->Current->SessionConfigData.Gateway, sizeof (Gateway.v4)); - - if ((Gateway.Addr[0] != 0)) { - if (SubnetMask.Addr[0] == 0) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Gateway address is set but subnet mask is zero.", NULL); - Status = EFI_INVALID_PARAMETER; - break; - } else if (!IP4_NET_EQUAL (HostIp.Addr[0], Gateway.Addr[0], SubnetMask.Addr[0])) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Local IP and Gateway are not in the same subnet.", NULL); + if (Private->Current->SessionConfigData.Enabled) { + // + // Validate the address configuration of the Initiator if DHCP isn't + // deployed. + // + if (!Private->Current->SessionConfigData.InitiatorInfoFromDhcp) { + CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.LocalIp, sizeof (HostIp.v4)); + CopyMem (&SubnetMask.v4, &Private->Current->SessionConfigData.SubnetMask, sizeof (SubnetMask.v4)); + CopyMem (&Gateway.v4, &Private->Current->SessionConfigData.Gateway, sizeof (Gateway.v4)); + + if ((Gateway.Addr[0] != 0)) { + if (SubnetMask.Addr[0] == 0) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Gateway address is set but subnet mask is zero.", NULL); + Status = EFI_INVALID_PARAMETER; + break; + } else if (!IP4_NET_EQUAL (HostIp.Addr[0], Gateway.Addr[0], SubnetMask.Addr[0])) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Local IP and Gateway are not in the same subnet.", NULL); + Status = EFI_INVALID_PARAMETER; + break; + } + } + } + // + // Validate target configuration if DHCP isn't deployed. + // + if (!Private->Current->SessionConfigData.TargetInfoFromDhcp) { + CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.TargetIp, sizeof (HostIp.v4)); + if (!NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Target IP is invalid!", NULL); Status = EFI_INVALID_PARAMETER; break; } } - } - // - // Validate target configuration if DHCP isn't deployed. - // - if (!Private->Current->SessionConfigData.TargetInfoFromDhcp) { - CopyMem (&HostIp.v4, &Private->Current->SessionConfigData.TargetIp, sizeof (HostIp.v4)); - if (!NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Target IP is invalid!", NULL); - Status = EFI_INVALID_PARAMETER; - break; - } - } - if (IfrNvData->CHAPType != ISCSI_CHAP_NONE) { - if ((IfrNvData->CHAPName[0] == '\0') || (IfrNvData->CHAPSecret[0] == '\0')) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"CHAP Name or CHAP Secret is invalid!", NULL); - Status = EFI_INVALID_PARAMETER; - break; - } + if (IfrNvData->CHAPType != ISCSI_CHAP_NONE) { + if ((IfrNvData->CHAPName[0] == '\0') || (IfrNvData->CHAPSecret[0] == '\0')) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"CHAP Name or CHAP Secret is invalid!", NULL); + Status = EFI_INVALID_PARAMETER; + break; + } - if ((IfrNvData->CHAPType == ISCSI_CHAP_MUTUAL) && - ((IfrNvData->ReverseCHAPName[0] == '\0') || (IfrNvData->ReverseCHAPSecret[0] == '\0')) - ) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Reverse CHAP Name or Reverse CHAP Secret is invalid!", NULL); - Status = EFI_INVALID_PARAMETER; - break; + if ((IfrNvData->CHAPType == ISCSI_CHAP_MUTUAL) && + ((IfrNvData->ReverseCHAPName[0] == '\0') || (IfrNvData->ReverseCHAPSecret[0] == '\0')) + ) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Reverse CHAP Name or Reverse CHAP Secret is invalid!", NULL); + Status = EFI_INVALID_PARAMETER; + break; + } } } - } - BufferSize = sizeof (Private->Current->SessionConfigData); - gRT->SetVariable ( - Private->Current->MacString, - &gEfiIScsiInitiatorNameProtocolGuid, - ISCSI_CONFIG_VAR_ATTR, - BufferSize, - &Private->Current->SessionConfigData - ); + BufferSize = sizeof (Private->Current->SessionConfigData); + gRT->SetVariable ( + Private->Current->MacString, + &gEfiIScsiInitiatorNameProtocolGuid, + ISCSI_CONFIG_VAR_ATTR, + BufferSize, + &Private->Current->SessionConfigData + ); + + BufferSize = sizeof (Private->Current->AuthConfigData); + gRT->SetVariable ( + Private->Current->MacString, + &mIScsiCHAPAuthInfoGuid, + ISCSI_CONFIG_VAR_ATTR, + BufferSize, + &Private->Current->AuthConfigData + ); + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; + break; - BufferSize = sizeof (Private->Current->AuthConfigData); - gRT->SetVariable ( - Private->Current->MacString, - &mIScsiCHAPAuthInfoGuid, - ISCSI_CONFIG_VAR_ATTR, - BufferSize, - &Private->Current->AuthConfigData - ); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; - break; + default: + if ((QuestionId >= KEY_DEVICE_ENTRY_BASE) && (QuestionId < (mNumberOfIScsiDevices + KEY_DEVICE_ENTRY_BASE))) { + // + // In case goto the device configuration form, update the device form title. + // + ConfigFormEntry = IScsiGetConfigFormEntryByIndex ((UINT32) (QuestionId - KEY_DEVICE_ENTRY_BASE)); + ASSERT (ConfigFormEntry != NULL); - default: - if ((QuestionId >= KEY_DEVICE_ENTRY_BASE) && (QuestionId < (mNumberOfIScsiDevices + KEY_DEVICE_ENTRY_BASE))) { - // - // In case goto the device configuration form, update the device form title. - // - ConfigFormEntry = IScsiGetConfigFormEntryByIndex ((UINT32) (QuestionId - KEY_DEVICE_ENTRY_BASE)); - ASSERT (ConfigFormEntry != NULL); + UnicodeSPrint (PortString, (UINTN) 128, L"Port %s", ConfigFormEntry->MacString); + DeviceFormTitleToken = (EFI_STRING_ID) STR_ISCSI_DEVICE_FORM_TITLE; + HiiSetString (Private->RegisteredHandle, DeviceFormTitleToken, PortString, NULL); - UnicodeSPrint (PortString, (UINTN) 128, L"Port %s", ConfigFormEntry->MacString); - DeviceFormTitleToken = (EFI_STRING_ID) STR_ISCSI_DEVICE_FORM_TITLE; - HiiSetString (Private->RegisteredHandle, DeviceFormTitleToken, PortString, NULL); + IScsiConvertDeviceConfigDataToIfrNvData (ConfigFormEntry, IfrNvData); - IScsiConvertDeviceConfigDataToIfrNvData (ConfigFormEntry, IfrNvData); + Private->Current = ConfigFormEntry; + } - Private->Current = ConfigFormEntry; + break; } - break; - } + if (!EFI_ERROR (Status)) { + // + // Pass changed uncommitted data back to Form Browser + // + HiiSetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData, NULL); + } + + FreePool (IfrNvData); - if (!EFI_ERROR (Status)) { - // - // Pass changed uncommitted data back to Form Browser - // - HiiSetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData, NULL); + return Status; } - FreePool (IfrNvData); - return Status; + // + // All other action return unsupported. + // + return EFI_UNSUPPORTED; } /** diff --git a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.c b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.c index b0aee5f436..d57605e02d 100644 --- a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.c +++ b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.c @@ -1,7 +1,7 @@ /** @file Helper functions for configuring or getting the parameters relating to Ip4. -Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
+Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -692,76 +692,76 @@ Ip4FormCallback ( EFI_STATUS Status; EFI_INPUT_KEY Key; - if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)) { + if (Action == EFI_BROWSER_ACTION_CHANGING) { + Ip4ConfigInstance = IP4_CONFIG_INSTANCE_FROM_CONFIG_ACCESS (This); + + IfrFormNvData = AllocateZeroPool (sizeof (IP4_CONFIG_IFR_NVDATA)); + if (IfrFormNvData == NULL) { + return EFI_OUT_OF_RESOURCES; + } + // - // Do nothing for UEFI OPEN/CLOSE Action + // Retrive uncommitted data from Browser // - return EFI_SUCCESS; - } + if (!HiiGetBrowserData (&mNicIp4ConfigNvDataGuid, EFI_NIC_IP4_CONFIG_VARIABLE, sizeof (IP4_CONFIG_IFR_NVDATA), (UINT8 *) IfrFormNvData)) { + FreePool (IfrFormNvData); + return EFI_NOT_FOUND; + } - Ip4ConfigInstance = IP4_CONFIG_INSTANCE_FROM_CONFIG_ACCESS (This); + Status = EFI_SUCCESS; - IfrFormNvData = AllocateZeroPool (sizeof (IP4_CONFIG_IFR_NVDATA)); - if (IfrFormNvData == NULL) { - return EFI_OUT_OF_RESOURCES; - } + switch (QuestionId) { + case KEY_LOCAL_IP: + Status = Ip4StrToIp (IfrFormNvData->StationAddress, &HostIp.v4); + if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL); + Status = EFI_INVALID_PARAMETER; + } else { + CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.LocalIp, &HostIp.v4, sizeof (HostIp.v4)); + } - // - // Retrive uncommitted data from Browser - // - if (!HiiGetBrowserData (&mNicIp4ConfigNvDataGuid, EFI_NIC_IP4_CONFIG_VARIABLE, sizeof (IP4_CONFIG_IFR_NVDATA), (UINT8 *) IfrFormNvData)) { - FreePool (IfrFormNvData); - return EFI_NOT_FOUND; - } + break; - Status = EFI_SUCCESS; + case KEY_SUBNET_MASK: + Status = Ip4StrToIp (IfrFormNvData->SubnetMask, &SubnetMask.v4); + if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (GetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL); + Status = EFI_INVALID_PARAMETER; + } else { + CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.SubnetMask, &SubnetMask.v4, sizeof (SubnetMask.v4)); + } - switch (QuestionId) { - case KEY_LOCAL_IP: - Status = Ip4StrToIp (IfrFormNvData->StationAddress, &HostIp.v4); - if (EFI_ERROR (Status) || !NetIp4IsUnicast (NTOHL (HostIp.Addr[0]), 0)) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL); - Status = EFI_INVALID_PARAMETER; - } else { - CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.LocalIp, &HostIp.v4, sizeof (HostIp.v4)); - } + break; - break; + case KEY_GATE_WAY: + Status = Ip4StrToIp (IfrFormNvData->GatewayAddress, &Gateway.v4); + if (EFI_ERROR (Status) || ((Gateway.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), 0))) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL); + Status = EFI_INVALID_PARAMETER; + } else { + CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.Gateway, &Gateway.v4, sizeof (Gateway.v4)); + } - case KEY_SUBNET_MASK: - Status = Ip4StrToIp (IfrFormNvData->SubnetMask, &SubnetMask.v4); - if (EFI_ERROR (Status) || ((SubnetMask.Addr[0] != 0) && (GetSubnetMaskPrefixLength (&SubnetMask.v4) == 0))) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Subnet Mask!", NULL); - Status = EFI_INVALID_PARAMETER; - } else { - CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.SubnetMask, &SubnetMask.v4, sizeof (SubnetMask.v4)); - } + break; - break; + case KEY_SAVE_CHANGES: + Status = Ip4ConfigConvertIfrNvDataToDeviceConfigData (IfrFormNvData, Ip4ConfigInstance); + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; + break; - case KEY_GATE_WAY: - Status = Ip4StrToIp (IfrFormNvData->GatewayAddress, &Gateway.v4); - if (EFI_ERROR (Status) || ((Gateway.Addr[0] != 0) && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), 0))) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL); - Status = EFI_INVALID_PARAMETER; - } else { - CopyMem (&Ip4ConfigInstance->Ip4ConfigCallbackInfo.Gateway, &Gateway.v4, sizeof (Gateway.v4)); + default: + break; } - break; - - case KEY_SAVE_CHANGES: - Status = Ip4ConfigConvertIfrNvDataToDeviceConfigData (IfrFormNvData, Ip4ConfigInstance); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; - break; + FreePool (IfrFormNvData); - default: - break; + return Status; } - FreePool (IfrFormNvData); - - return Status; + // + // All other action return unsupported. + // + return EFI_UNSUPPORTED; } /** diff --git a/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c b/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c index 871199e7b9..dfcf7a3d9c 100644 --- a/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c +++ b/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c @@ -1,7 +1,7 @@ /** @file HII Config Access protocol implementation of VLAN configuration module. -Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
+Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full @@ -254,77 +254,84 @@ VlanCallback ( return EFI_SUCCESS; } - // - // Get Browser data - // - Configuration = AllocateZeroPool (sizeof (VLAN_CONFIGURATION)); - ASSERT (Configuration != NULL); - HiiGetBrowserData (&mVlanFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration); - - VlanConfig = PrivateData->VlanConfig; - - switch (QuestionId) { - case VLAN_ADD_QUESTION_ID: + if (Action == EFI_BROWSER_ACTION_CHANGING) { // - // Add a VLAN + // Get Browser data // - VlanConfig->Set (VlanConfig, Configuration->VlanId, Configuration->Priority); - VlanUpdateForm (PrivateData); + Configuration = AllocateZeroPool (sizeof (VLAN_CONFIGURATION)); + ASSERT (Configuration != NULL); + HiiGetBrowserData (&mVlanFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration); - // - // Connect the newly created VLAN device - // - VlanHandle = NetLibGetVlanHandle (PrivateData->ControllerHandle, Configuration->VlanId); - if (VlanHandle == NULL) { + VlanConfig = PrivateData->VlanConfig; + + switch (QuestionId) { + case VLAN_ADD_QUESTION_ID: // - // There may be no child handle created for VLAN ID 0, connect the parent handle + // Add a VLAN // - VlanHandle = PrivateData->ControllerHandle; - } - gBS->ConnectController (VlanHandle, NULL, NULL, TRUE); - - // - // Clear UI data - // - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; - Configuration->VlanId = 0; - Configuration->Priority = 0; - break; + VlanConfig->Set (VlanConfig, Configuration->VlanId, Configuration->Priority); + VlanUpdateForm (PrivateData); - case VLAN_REMOVE_QUESTION_ID: - // - // Remove VLAN - // - ASSERT (PrivateData->NumberOfVlan <= MAX_VLAN_NUMBER); - for (Index = 0; Index < PrivateData->NumberOfVlan; Index++) { - if (Configuration->VlanList[Index] != 0) { + // + // Connect the newly created VLAN device + // + VlanHandle = NetLibGetVlanHandle (PrivateData->ControllerHandle, Configuration->VlanId); + if (VlanHandle == NULL) { // - // Checkbox is selected, need remove this VLAN + // There may be no child handle created for VLAN ID 0, connect the parent handle // - VlanConfig->Remove (VlanConfig, PrivateData->VlanId[Index]); + VlanHandle = PrivateData->ControllerHandle; } - } + gBS->ConnectController (VlanHandle, NULL, NULL, TRUE); - VlanUpdateForm (PrivateData); - if (PrivateData->NumberOfVlan == 0) { // - // No VLAN device now, connect the physical NIC handle. - // Note: PrivateData->NumberOfVlan has been updated by VlanUpdateForm() + // Clear UI data // - gBS->ConnectController (PrivateData->ControllerHandle, NULL, NULL, TRUE); - } + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; + Configuration->VlanId = 0; + Configuration->Priority = 0; + break; - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; - ZeroMem (Configuration->VlanList, MAX_VLAN_NUMBER); - break; + case VLAN_REMOVE_QUESTION_ID: + // + // Remove VLAN + // + ASSERT (PrivateData->NumberOfVlan <= MAX_VLAN_NUMBER); + for (Index = 0; Index < PrivateData->NumberOfVlan; Index++) { + if (Configuration->VlanList[Index] != 0) { + // + // Checkbox is selected, need remove this VLAN + // + VlanConfig->Remove (VlanConfig, PrivateData->VlanId[Index]); + } + } - default: - break; + VlanUpdateForm (PrivateData); + if (PrivateData->NumberOfVlan == 0) { + // + // No VLAN device now, connect the physical NIC handle. + // Note: PrivateData->NumberOfVlan has been updated by VlanUpdateForm() + // + gBS->ConnectController (PrivateData->ControllerHandle, NULL, NULL, TRUE); + } + + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; + ZeroMem (Configuration->VlanList, MAX_VLAN_NUMBER); + break; + + default: + break; + } + + HiiSetBrowserData (&mVlanFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration, NULL); + FreePool (Configuration); + return EFI_SUCCESS; } - HiiSetBrowserData (&mVlanFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration, NULL); - FreePool (Configuration); - return EFI_SUCCESS; + // + // All other action return unsupported. + // + return EFI_UNSUPPORTED; } diff --git a/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c b/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c index 70f29998ba..865ff3265b 100644 --- a/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c +++ b/MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c @@ -13,7 +13,7 @@ 4. It save all the mapping info in NV variables which will be consumed by platform override protocol driver to publish the platform override protocol. -Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
+Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -1335,81 +1335,81 @@ PlatOverMngrCallback ( EFI_INPUT_KEY Key; PLAT_OVER_MNGR_DATA *FakeNvData; - if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)) { - // - // Do nothing for UEFI OPEN/CLOSE Action - // - return EFI_SUCCESS; - } - - Private = EFI_CALLBACK_INFO_FROM_THIS (This); - FakeNvData = &Private->FakeNvData; - if (!HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) { - return EFI_NOT_FOUND; - } - - if (KeyValue == KEY_VALUE_DEVICE_REFRESH || - KeyValue == KEY_VALUE_DEVICE_FILTER || - KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS - ) { - UpdateDeviceSelectPage (Private, KeyValue, FakeNvData); - // - // Update page title string - // - NewStringToken = STRING_TOKEN (STR_TITLE); - if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"First, Select the controller by device path", NULL) == 0) { - ASSERT (FALSE); + if (Action == EFI_BROWSER_ACTION_CHANGING) { + Private = EFI_CALLBACK_INFO_FROM_THIS (This); + FakeNvData = &Private->FakeNvData; + if (!HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) { + return EFI_NOT_FOUND; } - } - if (((KeyValue >= KEY_VALUE_DEVICE_OFFSET) && (KeyValue < KEY_VALUE_DEVICE_MAX)) || (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS)) { - if (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS) { - KeyValue = (EFI_QUESTION_ID) (mSelectedCtrIndex + KEY_VALUE_DEVICE_OFFSET); + if (KeyValue == KEY_VALUE_DEVICE_REFRESH || + KeyValue == KEY_VALUE_DEVICE_FILTER || + KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS + ) { + UpdateDeviceSelectPage (Private, KeyValue, FakeNvData); + // + // Update page title string + // + NewStringToken = STRING_TOKEN (STR_TITLE); + if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"First, Select the controller by device path", NULL) == 0) { + ASSERT (FALSE); + } } - UpdateBindingDriverSelectPage (Private, KeyValue, FakeNvData); - // - // Update page title string - // - NewStringToken = STRING_TOKEN (STR_TITLE); - if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"Second, Select drivers for the previous selected controller", NULL) == 0) { - ASSERT (FALSE); + + if (((KeyValue >= KEY_VALUE_DEVICE_OFFSET) && (KeyValue < KEY_VALUE_DEVICE_MAX)) || (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS)) { + if (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS) { + KeyValue = (EFI_QUESTION_ID) (mSelectedCtrIndex + KEY_VALUE_DEVICE_OFFSET); + } + UpdateBindingDriverSelectPage (Private, KeyValue, FakeNvData); + // + // Update page title string + // + NewStringToken = STRING_TOKEN (STR_TITLE); + if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"Second, Select drivers for the previous selected controller", NULL) == 0) { + ASSERT (FALSE); + } } - } - if (KeyValue == KEY_VALUE_DRIVER_GOTO_ORDER) { - UpdatePrioritySelectPage (Private, KeyValue, FakeNvData); - // - // Update page title string - // - NewStringToken = STRING_TOKEN (STR_TITLE); - if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"Finally, Set the priority order for the drivers and save them", NULL) == 0) { - ASSERT (FALSE); + if (KeyValue == KEY_VALUE_DRIVER_GOTO_ORDER) { + UpdatePrioritySelectPage (Private, KeyValue, FakeNvData); + // + // Update page title string + // + NewStringToken = STRING_TOKEN (STR_TITLE); + if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"Finally, Set the priority order for the drivers and save them", NULL) == 0) { + ASSERT (FALSE); + } } - } - if (KeyValue == KEY_VALUE_ORDER_SAVE_AND_EXIT) { - Status = CommintChanges (Private, KeyValue, FakeNvData); - *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; - if (EFI_ERROR (Status)) { - CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL); - return EFI_DEVICE_ERROR; + if (KeyValue == KEY_VALUE_ORDER_SAVE_AND_EXIT) { + Status = CommintChanges (Private, KeyValue, FakeNvData); + *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT; + if (EFI_ERROR (Status)) { + CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL); + return EFI_DEVICE_ERROR; + } } - } - if (KeyValue == KEY_VALUE_DEVICE_CLEAR) { + if (KeyValue == KEY_VALUE_DEVICE_CLEAR) { + // + // Deletes all environment variable(s) that contain the override mappings info + // + FreeMappingDatabase (&mMappingDataBase); + Status = SaveOverridesMapping (&mMappingDataBase); + UpdateDeviceSelectPage (Private, KeyValue, FakeNvData); + } // - // Deletes all environment variable(s) that contain the override mappings info + // Pass changed uncommitted data back to Form Browser // - FreeMappingDatabase (&mMappingDataBase); - Status = SaveOverridesMapping (&mMappingDataBase); - UpdateDeviceSelectPage (Private, KeyValue, FakeNvData); - } + HiiSetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL); + + return EFI_SUCCESS; + } + // - // Pass changed uncommitted data back to Form Browser + // All other action return unsupported. // - HiiSetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL); - - return EFI_SUCCESS; + return EFI_UNSUPPORTED; } /**