- if (Action == EFI_BROWSER_ACTION_FORM_OPEN) {\r
- //\r
- // Update main Form when main Form is opened.\r
- // This will be done only in FORM_OPEN CallBack of question with KEY_INTERFACE_ID from main Form.\r
- //\r
- if (QuestionId != KEY_INTERFACE_ID) {\r
- return EFI_SUCCESS;\r
- }\r
-\r
- Ip6Config = &Instance->Ip6Config;\r
- HiiHandle = Instance->CallbackInfo.RegisteredHandle;\r
-\r
- //\r
- // Get the current interface info.\r
- //\r
- Status = Ip6ConfigNvGetData (\r
- Ip6Config,\r
- Ip6ConfigDataTypeInterfaceInfo,\r
- &DataSize,\r
- (VOID **) &Data\r
- );\r
- if (EFI_ERROR (Status)) {\r
- goto Exit;\r
- }\r
-\r
- //\r
- // Generate the 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
- goto Exit;\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
- goto Exit;\r
- }\r
-\r
- //\r
- // Get DNS server list.\r
- //\r
- DataSize = 0;\r
- Status = Ip6ConfigNvGetData (\r
- Ip6Config,\r
- Ip6ConfigDataTypeDnsServer,\r
- &DataSize,\r
- (VOID **) &Data\r
- );\r
- if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {\r
- goto Exit;\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
- goto Exit;\r
- }\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
- if (EFI_ERROR (Status) && (Status != EFI_NOT_FOUND)) {\r
- goto Exit;\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
- goto Exit;\r
- }\r
- }\r
-\r
-Exit:\r
- FreePool (Data);\r
- return Status;\r