]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Update IPv6 configuration UI: 1) keep addresses blank when enter ‘Advanced Configurat...
authortye1 <tye1@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 15 Jan 2013 02:19:42 +0000 (02:19 +0000)
committertye1 <tye1@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 15 Jan 2013 02:19:42 +0000 (02:19 +0000)
Signed-off-by: Ye Ting <ting.ye@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Ouyang Qian <qian.ouyang@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14047 6f19259b-4bc3-4df7-8a09-765794883524

NetworkPkg/Ip6Dxe/Ip6ConfigNv.c
NetworkPkg/Ip6Dxe/Ip6NvData.h

index d4f25d030147134d1898c6c6401ec98b0c22c468..546cd868076acbed7645efc0e1df4d403a2c980f 100644 (file)
@@ -1,7 +1,7 @@
 /** @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 - 2012, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2013, 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
@@ -669,9 +669,8 @@ Error:
 \r
 /**\r
   This function converts the interface info to string and draws it to the IP6 UI.\r
 \r
 /**\r
   This function converts the interface info to string and draws it to the IP6 UI.\r
-  The interface information includes interface name, interface type, hardware address,\r
-  address info, and route table information. The address information is also used as the\r
-  content of manual addresses in IP6 UI.\r
+  The interface information includes interface name, interface type, hardware\r
+  address and route table information.\r
 \r
   @param[in]       IfInfo          The pointer of EFI_IP6_CONFIG_INTERFACE_INFO.\r
   @param[in]       HiiHandle       The handle that was previously registered in the\r
 \r
   @param[in]       IfInfo          The pointer of EFI_IP6_CONFIG_INTERFACE_INFO.\r
   @param[in]       HiiHandle       The handle that was previously registered in the\r
@@ -693,7 +692,6 @@ Ip6ConvertInterfaceInfoToString (
   UINT32                         Index;\r
   UINTN                          Number;\r
   CHAR16                         *String;\r
   UINT32                         Index;\r
   UINTN                          Number;\r
   CHAR16                         *String;\r
-  CHAR16                         *LinkLocalStr;\r
   CHAR16                         PortString[ADDRESS_STR_MAX_SIZE];\r
   CHAR16                         FormatString[8];\r
   EFI_STRING_ID                  StringId;\r
   CHAR16                         PortString[ADDRESS_STR_MAX_SIZE];\r
   CHAR16                         FormatString[8];\r
   EFI_STRING_ID                  StringId;\r
@@ -782,43 +780,6 @@ Ip6ConvertInterfaceInfoToString (
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
 \r
-  //\r
-  // Print the host address Information.\r
-  //\r
-  Status = Ip6ConvertAddressListToString (\r
-             PortString,\r
-             HiiHandle,\r
-             Ip6ConfigNvHostAddress,\r
-             IfInfo->AddressInfo,\r
-             IfInfo->AddressInfoCount\r
-             );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Copy the Host Address Info to manual address field.\r
-  // Do not copy the link local address.\r
-  //\r
-  LinkLocalStr = StrStr (PortString, IP6_LINK_LOCAL_PREFIX);\r
-  if (LinkLocalStr != NULL) {\r
-    Number = LinkLocalStr - PortString;\r
-    if (Number > 0) {\r
-      CopyMem (IfrNvData->ManualAddress, PortString, Number * sizeof (CHAR16));\r
-    }\r
-\r
-    while ((*LinkLocalStr != L' ') && (*LinkLocalStr != L'\0')) {\r
-      LinkLocalStr++;\r
-    }\r
-\r
-    if (*LinkLocalStr != L'\0') {\r
-      LinkLocalStr++;\r
-      StrCat (IfrNvData->ManualAddress, LinkLocalStr);\r
-    }\r
-  } else {\r
-    StrCpy (IfrNvData->ManualAddress, PortString);\r
-  }\r
-\r
   //\r
   // Print the route table information.\r
   //\r
   //\r
   // Print the route table information.\r
   //\r
@@ -1033,75 +994,6 @@ Ip6ConvertConfigNvDataToIfrNvData (
 \r
   IfrNvData->DadTransmitCount = DadXmits.DupAddrDetectTransmits;\r
 \r
 \r
   IfrNvData->DadTransmitCount = DadXmits.DupAddrDetectTransmits;\r
 \r
-  //\r
-  // Get DNS server list.\r
-  //\r
-  FreePool (Data);\r
-  Data     = NULL;\r
-  DataSize = 0;\r
-  Status   = Ip6ConfigNvGetData (\r
-               Ip6Config,\r
-               Ip6ConfigDataTypeDnsServer,\r
-               &DataSize,\r
-               (VOID **) &Data\r
-               );\r
-\r
-  if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {\r
-    goto Exit;\r
-  }\r
-\r
-  if (DataSize > 0) {\r
-    //\r
-    // Convert the DNS server address to string and draw it to UI.\r
-    //\r
-    Status = Ip6ConvertAddressListToString (\r
-               IfrNvData->DnsAddress,\r
-               HiiHandle,\r
-               Ip6ConfigNvDnsAddress,\r
-               Data,\r
-               DataSize / sizeof (EFI_IPv6_ADDRESS)\r
-               );\r
-    if (EFI_ERROR (Status)) {\r
-      goto Exit;\r
-    }\r
-\r
-    FreePool (Data);\r
-    Data = NULL;\r
-  }\r
-\r
-  //\r
-  // Get gateway adderss list.\r
-  //\r
-  DataSize = 0;\r
-  Status   = Ip6ConfigNvGetData (\r
-               Ip6Config,\r
-               Ip6ConfigDataTypeGateway,\r
-               &DataSize,\r
-               (VOID **) &Data\r
-               );\r
-\r
-  if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {\r
-    goto Exit;\r
-  }\r
-\r
-  if (DataSize > 0) {\r
-    //\r
-    // Convert the gateway address to string and draw it to UI.\r
-    //\r
-    Status = Ip6ConvertAddressListToString (\r
-               IfrNvData->GatewayAddress,\r
-               HiiHandle,\r
-               Ip6ConfigNvGatewayAddress,\r
-               Data,\r
-               DataSize / sizeof (EFI_IPv6_ADDRESS)\r
-               );\r
-    if (EFI_ERROR (Status)) {\r
-      goto Exit;\r
-    }\r
-  }\r
-\r
-  Status = EFI_SUCCESS;\r
-\r
 Exit:\r
   if (Data != NULL) {\r
      FreePool (Data);\r
 Exit:\r
   if (Data != NULL) {\r
      FreePool (Data);\r
@@ -1112,8 +1004,7 @@ Exit:
 \r
 /**\r
   Convert IFR data into IP6 configuration data. The policy, alternative interface\r
 \r
 /**\r
   Convert IFR data into IP6 configuration data. The policy, alternative interface\r
-  ID, and DAD transmit counts, and will be saved. If under manual policy, the configured\r
-  manual address, gateway address, and DNS server address will be saved.\r
+  ID, and DAD transmit counts, and will be saved. \r
 \r
   @param[in]       IfrNvData       The IFR NV data.\r
   @param[in, out]  Instance        The IP6 config instance data.\r
 \r
   @param[in]       IfrNvData       The IFR NV data.\r
   @param[in, out]  Instance        The IP6 config instance data.\r
@@ -1124,7 +1015,7 @@ Exit:
 \r
 **/\r
 EFI_STATUS\r
 \r
 **/\r
 EFI_STATUS\r
-Ip6ConvertIfrNvDataToConfigNvData (\r
+Ip6ConvertIfrNvDataToConfigNvDataGeneral (\r
   IN     IP6_CONFIG_IFR_NVDATA       *IfrNvData,\r
   IN OUT IP6_CONFIG_INSTANCE         *Instance\r
   )\r
   IN     IP6_CONFIG_IFR_NVDATA       *IfrNvData,\r
   IN OUT IP6_CONFIG_INSTANCE         *Instance\r
   )\r
@@ -1132,12 +1023,6 @@ Ip6ConvertIfrNvDataToConfigNvData (
   IP6_CONFIG_NVDATA                  *Ip6NvData;\r
   EFI_IP6_CONFIG_PROTOCOL            *Ip6Config;\r
   EFI_STATUS                         Status;\r
   IP6_CONFIG_NVDATA                  *Ip6NvData;\r
   EFI_IP6_CONFIG_PROTOCOL            *Ip6Config;\r
   EFI_STATUS                         Status;\r
-  EFI_IP6_CONFIG_MANUAL_ADDRESS      *ManualAddress;\r
-  EFI_IPv6_ADDRESS                   *Address;\r
-  BOOLEAN                            IsAddressOk;\r
-  EFI_EVENT                          SetAddressEvent;\r
-  EFI_EVENT                          TimeoutEvent;\r
-  UINTN                              DataSize;\r
 \r
   if ((IfrNvData == NULL) || (Instance == NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
 \r
   if ((IfrNvData == NULL) || (Instance == NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -1197,11 +1082,67 @@ Ip6ConvertIfrNvDataToConfigNvData (
     return Status;\r
   }\r
 \r
     return Status;\r
   }\r
 \r
+  return EFI_SUCCESS;\r
+}\r
+\r
+/**\r
+  Convert IFR data into IP6 configuration data. The policy, configured\r
+  manual address, gateway address, and DNS server address will be saved.\r
+\r
+  @param[in]       IfrNvData       The IFR NV data.\r
+  @param[in, out]  Instance        The IP6 config instance data.\r
+\r
+  @retval EFI_SUCCESS              The operation finished successfully.\r
+  @retval EFI_INVALID_PARAMETER    Any input parameter is invalid.\r
+  @retval Others                   Other errors as indicated.\r
+\r
+**/\r
+EFI_STATUS\r
+Ip6ConvertIfrNvDataToConfigNvDataAdvanced (\r
+  IN     IP6_CONFIG_IFR_NVDATA       *IfrNvData,\r
+  IN OUT IP6_CONFIG_INSTANCE         *Instance\r
+  )\r
+{\r
+  IP6_CONFIG_NVDATA                  *Ip6NvData;\r
+  EFI_IP6_CONFIG_PROTOCOL            *Ip6Config;\r
+  EFI_STATUS                         Status;\r
+  EFI_IP6_CONFIG_MANUAL_ADDRESS      *ManualAddress;\r
+  EFI_IPv6_ADDRESS                   *Address;\r
+  BOOLEAN                            IsAddressOk;\r
+  EFI_EVENT                          SetAddressEvent;\r
+  EFI_EVENT                          TimeoutEvent;\r
+  UINTN                              DataSize;\r
+\r
+  if ((IfrNvData == NULL) || (Instance == NULL)) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
 \r
 \r
-  if (Ip6NvData->Policy == Ip6ConfigPolicyAutomatic) {\r
+  if (IfrNvData->Policy == IP6_POLICY_AUTO) {\r
     return EFI_SUCCESS;\r
   }\r
 \r
     return EFI_SUCCESS;\r
   }\r
 \r
+  NET_CHECK_SIGNATURE (Instance, IP6_CONFIG_INSTANCE_SIGNATURE);\r
+  Ip6NvData = &Instance->Ip6NvData;\r
+  Ip6Config = &Instance->Ip6Config;\r
+\r
+  //\r
+  // Update those fields which don't have INTERACTIVE attribute.\r
+  //\r
+  Ip6NvData->Policy = Ip6ConfigPolicyManual;\r
+\r
+  //\r
+  // Set the configured policy.\r
+  //\r
+  Status = Ip6Config->SetData (\r
+                        Ip6Config,\r
+                        Ip6ConfigDataTypePolicy,\r
+                        sizeof (EFI_IP6_CONFIG_POLICY),\r
+                        &Ip6NvData->Policy\r
+                        );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+\r
   //\r
   // Create events & timers for asynchronous settings.\r
   //\r
   //\r
   // Create events & timers for asynchronous settings.\r
   //\r
@@ -1358,6 +1299,7 @@ Exit:
   return Status;\r
 }\r
 \r
   return Status;\r
 }\r
 \r
+\r
 /**\r
   This function allows the caller to request the current\r
   configuration for one or more named elements. The resulting\r
 /**\r
   This function allows the caller to request the current\r
   configuration for one or more named elements. The resulting\r
@@ -1587,6 +1529,160 @@ Ip6FormRouteConfig (
   return EFI_SUCCESS;\r
 }\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  Display host addresses, route table, DNS addresses and gateway addresses in\r
+  "IPv6 Current Setting" page.\r
+\r
+  @param[in]       Instance        The IP6 config instance data.\r
+\r
+  @retval EFI_SUCCESS              The operation finished successfully.\r
+  @retval Others                   Other errors as indicated.\r
+\r
+**/\r
+EFI_STATUS\r
+Ip6GetCurrentSetting (\r
+  IN IP6_CONFIG_INSTANCE        *Instance\r
+  )\r
+{\r
+  EFI_IP6_CONFIG_PROTOCOL       *Ip6Config;\r
+  EFI_HII_HANDLE                HiiHandle;\r
+  EFI_IP6_CONFIG_INTERFACE_INFO *Data;\r
+  UINTN                         DataSize;\r
+  EFI_STATUS                    Status;\r
+  CHAR16                        PortString[ADDRESS_STR_MAX_SIZE];\r
+  EFI_IP6_CONFIG_INTERFACE_INFO *IfInfo;\r
+  \r
+\r
+  Ip6Config = &Instance->Ip6Config;\r
+  HiiHandle = Instance->CallbackInfo.RegisteredHandle;\r
+  Data      = NULL;\r
+\r
+  //\r
+  // Get current interface info.\r
+  //\r
+  Status = Ip6ConfigNvGetData (\r
+             Ip6Config,\r
+             Ip6ConfigDataTypeInterfaceInfo,\r
+             &DataSize,\r
+             (VOID **) &Data\r
+             );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+\r
+  //\r
+  // Generate dynamic text opcode for host address and draw it.\r
+  //\r
+  IfInfo = (EFI_IP6_CONFIG_INTERFACE_INFO *) Data;\r
+  Status = Ip6ConvertAddressListToString (\r
+             PortString,\r
+             HiiHandle,\r
+             Ip6ConfigNvHostAddress,\r
+             IfInfo->AddressInfo,\r
+             IfInfo->AddressInfoCount\r
+             );\r
+  if (EFI_ERROR (Status)) {\r
+    FreePool (Data);\r
+    return Status;\r
+  }\r
+\r
+  //\r
+  // Generate the dynamic text opcode for route table and draw it.\r
+  //\r
+  Status = Ip6ConvertAddressListToString (\r
+             PortString,\r
+             HiiHandle,\r
+             Ip6ConfigNvRouteTable,\r
+             IfInfo->RouteTable,\r
+             IfInfo->RouteCount\r
+             );\r
+  if (EFI_ERROR (Status)) {\r
+    FreePool (Data);\r
+    return Status;\r
+  }\r
+\r
+  //\r
+  // Get DNS server list.\r
+  //\r
+  FreePool (Data);\r
+  DataSize = 0;\r
+  Data = NULL;\r
+  Status = Ip6ConfigNvGetData (\r
+             Ip6Config,\r
+             Ip6ConfigDataTypeDnsServer,\r
+             &DataSize,\r
+             (VOID **) &Data\r
+             );\r
+  if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {\r
+    if (Data != NULL) {\r
+      FreePool (Data);\r
+    }\r
+    return Status;\r
+  }\r
+\r
+  if (DataSize > 0) {\r
+    //\r
+    // Generate the dynamic text opcode for DNS server and draw it.\r
+    //\r
+    Status = Ip6ConvertAddressListToString (\r
+               PortString,\r
+               HiiHandle,\r
+               Ip6ConfigNvDnsAddress,\r
+               Data,\r
+               DataSize / sizeof (EFI_IPv6_ADDRESS)\r
+               );\r
+    if (EFI_ERROR (Status)) {\r
+      FreePool (Data);\r
+      return Status;\r
+    }\r
+  }\r
+\r
+  //\r
+  // Get gateway adderss list.\r
+  //\r
+  if (Data != NULL) {\r
+    FreePool (Data);\r
+  }\r
+\r
+  DataSize = 0;\r
+  Data = NULL;\r
+  Status = Ip6ConfigNvGetData (\r
+             Ip6Config,\r
+             Ip6ConfigDataTypeGateway,\r
+             &DataSize,\r
+             (VOID **) &Data\r
+             );\r
+  if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {\r
+    if (Data != NULL) {\r
+      FreePool (Data);\r
+    }\r
+    return Status;\r
+  }\r
+\r
+  if (DataSize > 0) {\r
+    //\r
+    // Generate the dynamic text opcode for gateway and draw it.\r
+    //\r
+    Status = Ip6ConvertAddressListToString (\r
+               PortString,\r
+               HiiHandle,\r
+               Ip6ConfigNvGatewayAddress,\r
+               Data,\r
+               DataSize / sizeof (EFI_IPv6_ADDRESS)\r
+               );\r
+    if (EFI_ERROR (Status)) {\r
+      FreePool (Data);\r
+      return Status;\r
+    }\r
+  }\r
+\r
+  if (Data != NULL) {\r
+    FreePool (Data);\r
+  }\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
 /**\r
   This function is called to provide results data to the driver.\r
   This data consists of a unique key that is used to identify\r
 /**\r
   This function is called to provide results data to the driver.\r
   This data consists of a unique key that is used to identify\r
@@ -1632,12 +1728,6 @@ Ip6FormCallback (
   EFI_INPUT_KEY                 Key;\r
   IP6_CONFIG_INSTANCE           *Instance;\r
   IP6_CONFIG_NVDATA             *Ip6NvData;\r
   EFI_INPUT_KEY                 Key;\r
   IP6_CONFIG_INSTANCE           *Instance;\r
   IP6_CONFIG_NVDATA             *Ip6NvData;\r
-  EFI_IP6_CONFIG_PROTOCOL       *Ip6Config;\r
-  EFI_IP6_CONFIG_INTERFACE_INFO *Data;\r
-  UINTN                         DataSize;\r
-  CHAR16                        PortString[ADDRESS_STR_MAX_SIZE];\r
-  EFI_HII_HANDLE                HiiHandle;\r
-  EFI_IP6_CONFIG_INTERFACE_INFO *IfInfo;\r
 \r
   if (This == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
 \r
   if (This == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -1676,135 +1766,7 @@ Ip6FormCallback (
   if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
     switch (QuestionId) {\r
     case KEY_GET_CURRENT_SETTING:\r
   if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
     switch (QuestionId) {\r
     case KEY_GET_CURRENT_SETTING:\r
-      Ip6Config = &Instance->Ip6Config;\r
-      HiiHandle = Instance->CallbackInfo.RegisteredHandle;\r
-      Data      = NULL;\r
-\r
-      //\r
-      // Get current interface info.\r
-      //\r
-      Status = Ip6ConfigNvGetData (\r
-                 Ip6Config,\r
-                 Ip6ConfigDataTypeInterfaceInfo,\r
-                 &DataSize,\r
-                 (VOID **) &Data\r
-                 );\r
-      if (EFI_ERROR (Status)) {\r
-        return Status;\r
-      }\r
-\r
-      //\r
-      // Generate dynamic text opcode for host address and draw it.\r
-      //\r
-      IfInfo = (EFI_IP6_CONFIG_INTERFACE_INFO *) Data;\r
-      Status = Ip6ConvertAddressListToString (\r
-                 PortString,\r
-                 HiiHandle,\r
-                 Ip6ConfigNvHostAddress,\r
-                 IfInfo->AddressInfo,\r
-                 IfInfo->AddressInfoCount\r
-                 );\r
-      if (EFI_ERROR (Status)) {\r
-        FreePool (Data);\r
-        return Status;\r
-      }\r
-\r
-      //\r
-      // Generate the dynamic text opcode for route table and draw it.\r
-      //\r
-      Status = Ip6ConvertAddressListToString (\r
-                 PortString,\r
-                 HiiHandle,\r
-                 Ip6ConfigNvRouteTable,\r
-                 IfInfo->RouteTable,\r
-                 IfInfo->RouteCount\r
-                 );\r
-      if (EFI_ERROR (Status)) {\r
-        FreePool (Data);\r
-        return Status;\r
-      }\r
-\r
-      //\r
-      // Get DNS server list.\r
-      //\r
-      FreePool (Data);\r
-      DataSize = 0;\r
-      Data = NULL;\r
-      Status = Ip6ConfigNvGetData (\r
-                 Ip6Config,\r
-                 Ip6ConfigDataTypeDnsServer,\r
-                 &DataSize,\r
-                 (VOID **) &Data\r
-                 );\r
-      if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {\r
-        if (Data != NULL) {\r
-          FreePool (Data);\r
-        }\r
-        return Status;\r
-      }\r
-\r
-      if (DataSize > 0) {\r
-        //\r
-        // Generate the dynamic text opcode for DNS server and draw it.\r
-        //\r
-        Status = Ip6ConvertAddressListToString (\r
-                   PortString,\r
-                   HiiHandle,\r
-                   Ip6ConfigNvDnsAddress,\r
-                   Data,\r
-                   DataSize / sizeof (EFI_IPv6_ADDRESS)\r
-                   );\r
-        if (EFI_ERROR (Status)) {\r
-          FreePool (Data);\r
-          return Status;\r
-        }\r
-      }\r
-\r
-      //\r
-      // Get gateway adderss list.\r
-      //\r
-      if (Data != NULL) {\r
-        FreePool (Data);\r
-      }\r
-\r
-      DataSize = 0;\r
-      Data = NULL;\r
-      Status = Ip6ConfigNvGetData (\r
-                 Ip6Config,\r
-                 Ip6ConfigDataTypeGateway,\r
-                 &DataSize,\r
-                 (VOID **) &Data\r
-                 );\r
-      if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {\r
-        if (Data != NULL) {\r
-          FreePool (Data);\r
-        }\r
-        return Status;\r
-      }\r
-\r
-      if (DataSize > 0) {\r
-        //\r
-        // Generate the dynamic text opcode for gateway and draw it.\r
-        //\r
-        Status = Ip6ConvertAddressListToString (\r
-                   PortString,\r
-                   HiiHandle,\r
-                   Ip6ConfigNvGatewayAddress,\r
-                   Data,\r
-                   DataSize / sizeof (EFI_IPv6_ADDRESS)\r
-                   );\r
-        if (EFI_ERROR (Status)) {\r
-          FreePool (Data);\r
-          return Status;\r
-        }\r
-      }\r
-\r
-      if (Data != NULL) {\r
-        FreePool (Data);\r
-      }\r
-\r
-      Status = EFI_SUCCESS;\r
-\r
+      Status = Ip6GetCurrentSetting (Instance);\r
       break;\r
 \r
     default:\r
       break;\r
 \r
     default:\r
@@ -1813,6 +1775,13 @@ Ip6FormCallback (
   } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
     switch (QuestionId) {\r
     case KEY_SAVE_CONFIG_CHANGES:\r
   } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
     switch (QuestionId) {\r
     case KEY_SAVE_CONFIG_CHANGES:\r
+      Status = Ip6ConvertIfrNvDataToConfigNvDataAdvanced (IfrNvData, Instance);\r
+      if (EFI_ERROR (Status)) {\r
+        break;\r
+      }\r
+\r
+      Status = Ip6GetCurrentSetting (Instance);\r
+\r
       *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;\r
       break;\r
 \r
       *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;\r
       break;\r
 \r
@@ -1829,7 +1798,7 @@ Ip6FormCallback (
       break;\r
 \r
     case KEY_SAVE_CHANGES:\r
       break;\r
 \r
     case KEY_SAVE_CHANGES:\r
-      Status = Ip6ConvertIfrNvDataToConfigNvData (IfrNvData, Instance);\r
+      Status = Ip6ConvertIfrNvDataToConfigNvDataGeneral (IfrNvData, Instance);\r
       if (EFI_ERROR (Status)) {\r
         break;\r
       }\r
       if (EFI_ERROR (Status)) {\r
         break;\r
       }\r
index b67e6249b5c9a89b75a3f06091885ebe2f35a8e3..09177613fbc9e4b8e45efe035f3fe30b59f68dd1 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   NVData structure used by the IP6 configuration component.\r
 \r
 /** @file\r
   NVData structure used by the IP6 configuration component.\r
 \r
-  Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2013, 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
@@ -43,7 +43,7 @@
 \r
 #define INTERFACE_ID_STR_MIN_SIZE 1\r
 #define INTERFACE_ID_STR_MAX_SIZE 23\r
 \r
 #define INTERFACE_ID_STR_MIN_SIZE 1\r
 #define INTERFACE_ID_STR_MAX_SIZE 23\r
-#define INTERFACE_ID_STR_STORAGE  24\r
+#define INTERFACE_ID_STR_STORAGE  25\r
 #define IP6_STR_MAX_SIZE          40\r
 #define ADDRESS_STR_MIN_SIZE      2\r
 #define ADDRESS_STR_MAX_SIZE      255\r
 #define IP6_STR_MAX_SIZE          40\r
 #define ADDRESS_STR_MIN_SIZE      2\r
 #define ADDRESS_STR_MAX_SIZE      255\r