mirror of https://github.com/acidanthera/audk.git
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
This commit is contained in:
parent
4fdb97fa6e
commit
083f7c69c1
|
@ -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;
|
||||
|
||||
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);
|
||||
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;
|
||||
|
||||
break;
|
||||
switch (QuestionId) {
|
||||
case KEY_INITIATOR_NAME:
|
||||
IScsiUnicodeStrToAsciiStr (IfrNvData->InitiatorName, IScsiName);
|
||||
BufferSize = AsciiStrSize (IScsiName);
|
||||
|
||||
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));
|
||||
}
|
||||
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_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_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_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_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_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_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_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_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_DHCP_ENABLE:
|
||||
if (IfrNvData->InitiatorInfoFromDhcp == 0) {
|
||||
IfrNvData->TargetInfoFromDhcp = 0;
|
||||
}
|
||||
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_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_DHCP_ENABLE:
|
||||
if (IfrNvData->InitiatorInfoFromDhcp == 0) {
|
||||
IfrNvData->TargetInfoFromDhcp = 0;
|
||||
}
|
||||
|
||||
break;
|
||||
break;
|
||||
|
||||
case KEY_CHAP_NAME:
|
||||
IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPName, Private->Current->AuthConfigData.CHAPName);
|
||||
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_CHAP_SECRET:
|
||||
IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPSecret, Private->Current->AuthConfigData.CHAPSecret);
|
||||
break;
|
||||
break;
|
||||
|
||||
case KEY_REVERSE_CHAP_NAME:
|
||||
IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPName, Private->Current->AuthConfigData.ReverseCHAPName);
|
||||
break;
|
||||
case KEY_CHAP_NAME:
|
||||
IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPName, Private->Current->AuthConfigData.CHAPName);
|
||||
break;
|
||||
|
||||
case KEY_REVERSE_CHAP_SECRET:
|
||||
IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPSecret, Private->Current->AuthConfigData.ReverseCHAPSecret);
|
||||
break;
|
||||
case KEY_CHAP_SECRET:
|
||||
IScsiUnicodeStrToAsciiStr (IfrNvData->CHAPSecret, Private->Current->AuthConfigData.CHAPSecret);
|
||||
break;
|
||||
|
||||
case KEY_CONFIG_ISID:
|
||||
IScsiParseIsIdFromString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId);
|
||||
IScsiConvertIsIdToString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId);
|
||||
case KEY_REVERSE_CHAP_NAME:
|
||||
IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPName, Private->Current->AuthConfigData.ReverseCHAPName);
|
||||
break;
|
||||
|
||||
break;
|
||||
case KEY_REVERSE_CHAP_SECRET:
|
||||
IScsiUnicodeStrToAsciiStr (IfrNvData->ReverseCHAPSecret, Private->Current->AuthConfigData.ReverseCHAPSecret);
|
||||
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_CONFIG_ISID:
|
||||
IScsiParseIsIdFromString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId);
|
||||
IScsiConvertIsIdToString (IfrNvData->IsId, Private->Current->SessionConfigData.IsId);
|
||||
|
||||
Private->Current->SessionConfigData.TargetInfoFromDhcp = IfrNvData->TargetInfoFromDhcp;
|
||||
Private->Current->AuthConfigData.CHAPType = IfrNvData->CHAPType;
|
||||
break;
|
||||
|
||||
//
|
||||
// Only do full parameter validation if iSCSI is enabled on this device.
|
||||
//
|
||||
if (Private->Current->SessionConfigData.Enabled) {
|
||||
case KEY_SAVE_CHANGES:
|
||||
//
|
||||
// Validate the address configuration of the Initiator if DHCP isn't
|
||||
// deployed.
|
||||
// First, update those fields which don't have INTERACTIVE set.
|
||||
//
|
||||
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));
|
||||
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;
|
||||
}
|
||||
|
||||
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);
|
||||
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.
|
||||
//
|
||||
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;
|
||||
} 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 (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;
|
||||
}
|
||||
}
|
||||
}
|
||||
//
|
||||
// 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;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
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);
|
||||
|
||||
IScsiConvertDeviceConfigDataToIfrNvData (ConfigFormEntry, IfrNvData);
|
||||
|
||||
Private->Current = ConfigFormEntry;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
default:
|
||||
if ((QuestionId >= KEY_DEVICE_ENTRY_BASE) && (QuestionId < (mNumberOfIScsiDevices + KEY_DEVICE_ENTRY_BASE))) {
|
||||
if (!EFI_ERROR (Status)) {
|
||||
//
|
||||
// In case goto the device configuration form, update the device form title.
|
||||
// Pass changed uncommitted data back to Form Browser
|
||||
//
|
||||
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);
|
||||
|
||||
IScsiConvertDeviceConfigDataToIfrNvData (ConfigFormEntry, IfrNvData);
|
||||
|
||||
Private->Current = ConfigFormEntry;
|
||||
HiiSetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData, NULL);
|
||||
}
|
||||
|
||||
FreePool (IfrNvData);
|
||||
|
||||
break;
|
||||
return Status;
|
||||
}
|
||||
|
||||
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);
|
||||
return Status;
|
||||
//
|
||||
// All other action return unsupported.
|
||||
//
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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.<BR>
|
||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
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));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
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;
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case KEY_SAVE_CHANGES:
|
||||
Status = Ip4ConfigConvertIfrNvDataToDeviceConfigData (IfrFormNvData, Ip4ConfigInstance);
|
||||
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
// 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;
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
Status = EFI_SUCCESS;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case KEY_SAVE_CHANGES:
|
||||
Status = Ip4ConfigConvertIfrNvDataToDeviceConfigData (IfrFormNvData, Ip4ConfigInstance);
|
||||
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
FreePool (IfrFormNvData);
|
||||
|
||||
return Status;
|
||||
//
|
||||
// All other action return unsupported.
|
||||
//
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
HII Config Access protocol implementation of VLAN configuration module.
|
||||
|
||||
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
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);
|
||||
if (Action == EFI_BROWSER_ACTION_CHANGING) {
|
||||
//
|
||||
// Get Browser data
|
||||
//
|
||||
Configuration = AllocateZeroPool (sizeof (VLAN_CONFIGURATION));
|
||||
ASSERT (Configuration != NULL);
|
||||
HiiGetBrowserData (&mVlanFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration);
|
||||
|
||||
VlanConfig = PrivateData->VlanConfig;
|
||||
VlanConfig = PrivateData->VlanConfig;
|
||||
|
||||
switch (QuestionId) {
|
||||
case VLAN_ADD_QUESTION_ID:
|
||||
//
|
||||
// Add a VLAN
|
||||
//
|
||||
VlanConfig->Set (VlanConfig, Configuration->VlanId, Configuration->Priority);
|
||||
VlanUpdateForm (PrivateData);
|
||||
|
||||
//
|
||||
// Connect the newly created VLAN device
|
||||
//
|
||||
VlanHandle = NetLibGetVlanHandle (PrivateData->ControllerHandle, Configuration->VlanId);
|
||||
if (VlanHandle == NULL) {
|
||||
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);
|
||||
VlanConfig->Set (VlanConfig, Configuration->VlanId, Configuration->Priority);
|
||||
VlanUpdateForm (PrivateData);
|
||||
|
||||
//
|
||||
// Clear UI data
|
||||
//
|
||||
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;
|
||||
Configuration->VlanId = 0;
|
||||
Configuration->Priority = 0;
|
||||
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) {
|
||||
//
|
||||
// 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);
|
||||
|
||||
//
|
||||
// Clear UI data
|
||||
//
|
||||
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;
|
||||
Configuration->VlanId = 0;
|
||||
Configuration->Priority = 0;
|
||||
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]);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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.<BR>
|
||||
Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
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_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_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_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_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_DEVICE_CLEAR) {
|
||||
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) {
|
||||
//
|
||||
// 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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue