Signed-off-by: ydong10
Reviewed-by: lgao4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11682
6f19259b-4bc3-4df7-8a09-
765794883524
/** @file\r
Helper functions for configuring or obtaining the parameters relating to IP6.\r
\r
/** @file\r
Helper functions for configuring or obtaining the parameters relating to IP6.\r
\r
- Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
return EFI_SUCCESS;\r
}\r
\r
return EFI_SUCCESS;\r
}\r
\r
- if ((Value == NULL) || (ActionRequest == NULL)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
+ if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+ if ((Value == NULL) || (ActionRequest == NULL)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
- //\r
- // Retrieve uncommitted data from Browser\r
- //\r
+ //\r
+ // Retrieve uncommitted data from Browser\r
+ //\r
- BufferSize = sizeof (IP6_CONFIG_IFR_NVDATA);\r
- IfrNvData = AllocateZeroPool (BufferSize);\r
- if (IfrNvData == NULL) {\r
- return EFI_OUT_OF_RESOURCES;\r
- }\r
+ BufferSize = sizeof (IP6_CONFIG_IFR_NVDATA);\r
+ IfrNvData = AllocateZeroPool (BufferSize);\r
+ if (IfrNvData == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
- ZeroMem (&OldIfrNvData, BufferSize);\r
+ ZeroMem (&OldIfrNvData, BufferSize);\r
- HiiGetBrowserData (NULL, NULL, BufferSize, (UINT8 *) IfrNvData);\r
+ HiiGetBrowserData (NULL, NULL, BufferSize, (UINT8 *) IfrNvData);\r
- CopyMem (&OldIfrNvData, IfrNvData, BufferSize);\r
+ CopyMem (&OldIfrNvData, IfrNvData, BufferSize);\r
- switch (QuestionId) {\r
- case KEY_INTERFACE_ID:\r
- Status = Ip6ParseInterfaceIdFromString (IfrNvData->InterfaceId, &Ip6NvData->InterfaceId);\r
- if (EFI_ERROR (Status)) {\r
- CreatePopUp (\r
- EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
- &Key,\r
- L"Invalid Interface ID!",\r
- NULL\r
- );\r
- }\r
+ switch (QuestionId) {\r
+ case KEY_INTERFACE_ID:\r
+ Status = Ip6ParseInterfaceIdFromString (IfrNvData->InterfaceId, &Ip6NvData->InterfaceId);\r
+ if (EFI_ERROR (Status)) {\r
+ CreatePopUp (\r
+ EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
+ &Key,\r
+ L"Invalid Interface ID!",\r
+ NULL\r
+ );\r
+ }\r
- case KEY_MANUAL_ADDRESS:\r
- Status = Ip6ParseAddressListFromString (\r
- IfrNvData->ManualAddress,\r
- &Ip6NvData->ManualAddress,\r
- &Ip6NvData->ManualAddressCount\r
- );\r
- if (EFI_ERROR (Status)) {\r
- CreatePopUp (\r
- EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
- &Key,\r
- L"Invalid Host Addresses!",\r
- NULL\r
- );\r
- }\r
+ case KEY_MANUAL_ADDRESS:\r
+ Status = Ip6ParseAddressListFromString (\r
+ IfrNvData->ManualAddress,\r
+ &Ip6NvData->ManualAddress,\r
+ &Ip6NvData->ManualAddressCount\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ CreatePopUp (\r
+ EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
+ &Key,\r
+ L"Invalid Host Addresses!",\r
+ NULL\r
+ );\r
+ }\r
- case KEY_GATEWAY_ADDRESS:\r
- Status = Ip6ParseAddressListFromString (\r
- IfrNvData->GatewayAddress,\r
- &Ip6NvData->GatewayAddress,\r
- &Ip6NvData->GatewayAddressCount\r
- );\r
- if (EFI_ERROR (Status)) {\r
- CreatePopUp (\r
- EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
- &Key,\r
- L"Invalid Gateway Addresses!",\r
- NULL\r
- );\r
- }\r
+ case KEY_GATEWAY_ADDRESS:\r
+ Status = Ip6ParseAddressListFromString (\r
+ IfrNvData->GatewayAddress,\r
+ &Ip6NvData->GatewayAddress,\r
+ &Ip6NvData->GatewayAddressCount\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ CreatePopUp (\r
+ EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
+ &Key,\r
+ L"Invalid Gateway Addresses!",\r
+ NULL\r
+ );\r
+ }\r
- case KEY_DNS_ADDRESS:\r
- Status = Ip6ParseAddressListFromString (\r
- IfrNvData->DnsAddress,\r
- &Ip6NvData->DnsAddress,\r
- &Ip6NvData->DnsAddressCount\r
- );\r
- if (EFI_ERROR (Status)) {\r
- CreatePopUp (\r
- EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
- &Key,\r
- L"Invalid DNS Addresses!",\r
- NULL\r
- );\r
- }\r
+ case KEY_DNS_ADDRESS:\r
+ Status = Ip6ParseAddressListFromString (\r
+ IfrNvData->DnsAddress,\r
+ &Ip6NvData->DnsAddress,\r
+ &Ip6NvData->DnsAddressCount\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ CreatePopUp (\r
+ EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
+ &Key,\r
+ L"Invalid DNS Addresses!",\r
+ NULL\r
+ );\r
+ }\r
- case KEY_SAVE_CONFIG_CHANGES:\r
- CopyMem (&OldIfrNvData, IfrNvData, sizeof (IP6_CONFIG_IFR_NVDATA));\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
- break;\r
+ case KEY_SAVE_CONFIG_CHANGES:\r
+ CopyMem (&OldIfrNvData, IfrNvData, sizeof (IP6_CONFIG_IFR_NVDATA));\r
+ *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+ break;\r
- case KEY_IGNORE_CONFIG_CHANGES:\r
- CopyMem (IfrNvData, &OldIfrNvData, sizeof (IP6_CONFIG_IFR_NVDATA));\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
- break;\r
+ case KEY_IGNORE_CONFIG_CHANGES:\r
+ CopyMem (IfrNvData, &OldIfrNvData, sizeof (IP6_CONFIG_IFR_NVDATA));\r
+ *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+ break;\r
- case KEY_SAVE_CHANGES:\r
- Status = Ip6ConvertIfrNvDataToConfigNvData (IfrNvData, Instance);\r
- if (EFI_ERROR (Status)) {\r
+ case KEY_SAVE_CHANGES:\r
+ Status = Ip6ConvertIfrNvDataToConfigNvData (IfrNvData, Instance);\r
+ if (EFI_ERROR (Status)) {\r
+ break;\r
+ }\r
+\r
+ *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
- break;\r
+ default:\r
+ break;\r
+ }\r
- default:\r
- break;\r
- }\r
+ if (!EFI_ERROR (Status)) {\r
+ //\r
+ // Pass changed uncommitted data back to Form Browser.\r
+ //\r
+ BufferSize = sizeof (IP6_CONFIG_IFR_NVDATA);\r
+ HiiSetBrowserData (NULL, NULL, BufferSize, (UINT8 *) IfrNvData, NULL);\r
+ }\r
- if (!EFI_ERROR (Status)) {\r
- //\r
- // Pass changed uncommitted data back to Form Browser.\r
- //\r
- BufferSize = sizeof (IP6_CONFIG_IFR_NVDATA);\r
- HiiSetBrowserData (NULL, NULL, BufferSize, (UINT8 *) IfrNvData, NULL);\r
+ FreePool (IfrNvData);\r
+ return Status;\r
- FreePool (IfrNvData);\r
- return Status;\r
+ //\r
+ // All other action return unsupported.\r
+ //\r
+ return EFI_UNSUPPORTED;\r