/** @file\r
Helper functions for configuring or getting the parameters relating to Ip4.\r
\r
-Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
\r
@return The prefix length of the subnet mask.\r
@retval 0 Other errors as indicated.\r
- \r
+\r
**/\r
UINT8\r
GetSubnetMaskPrefixLength (\r
\r
@retval EFI_SUCCESS The binary IP address is returned in Ip.\r
@retval EFI_INVALID_PARAMETER The IP string is malformatted.\r
- \r
+\r
**/\r
EFI_STATUS\r
Ip4Config2StrToIp (\r
@retval EFI_SUCCESS The binary IP address list is returned in PtrIpList.\r
@retval EFI_OUT_OF_RESOURCES Error occurs in allocating memory.\r
@retval EFI_INVALID_PARAMETER The IP string is malformatted.\r
- \r
+\r
**/\r
EFI_STATUS\r
Ip4Config2StrToIpList (\r
)\r
{\r
UINTN BeginIndex;\r
- UINTN EndIndex; \r
+ UINTN EndIndex;\r
UINTN Index;\r
UINTN IpIndex;\r
CHAR16 *StrTemp;\r
BOOLEAN SpaceTag;\r
- \r
+\r
BeginIndex = 0;\r
EndIndex = BeginIndex;\r
Index = 0;\r
IpIndex = 0;\r
StrTemp = NULL;\r
SpaceTag = TRUE;\r
- \r
+\r
*PtrIpList = NULL;\r
*IpCount = 0;\r
\r
SpaceTag = FALSE;\r
}\r
}\r
- \r
+\r
Index++;\r
}\r
\r
if (*IpCount == 0) {\r
return EFI_SUCCESS;\r
}\r
- \r
+\r
//\r
// Allocate buffer for IpList.\r
//\r
*IpCount = 0;\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- \r
+\r
CopyMem (StrTemp, Str + BeginIndex, (EndIndex - BeginIndex) * sizeof(CHAR16));\r
*(StrTemp + (EndIndex - BeginIndex)) = L'\0';\r
- \r
+\r
if (Ip4Config2StrToIp (StrTemp, &((*PtrIpList)[IpIndex])) != EFI_SUCCESS) {\r
FreePool(StrTemp);\r
FreePool(*PtrIpList);\r
*IpCount = 0;\r
return EFI_INVALID_PARAMETER;\r
}\r
- \r
+\r
BeginIndex = EndIndex;\r
IpIndex++;\r
\r
EndIndex++;\r
SpaceTag = FALSE;\r
}\r
- \r
+\r
Index++;\r
- \r
+\r
if (*(Str + Index) == L'\0') {\r
if (!SpaceTag) {\r
StrTemp = AllocateZeroPool((EndIndex - BeginIndex + 1) * sizeof(CHAR16));\r
*IpCount = 0;\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- \r
+\r
CopyMem (StrTemp, Str + BeginIndex, (EndIndex - BeginIndex) * sizeof(CHAR16));\r
*(StrTemp + (EndIndex - BeginIndex)) = L'\0';\r
- \r
+\r
if (Ip4Config2StrToIp (StrTemp, &((*PtrIpList)[IpIndex])) != EFI_SUCCESS) {\r
FreePool(StrTemp);\r
FreePool(*PtrIpList);\r
FreePool(StrTemp);\r
}\r
}\r
- } \r
+ }\r
\r
return EFI_SUCCESS;\r
}\r
\r
@param[in] Ip The IPv4 address.\r
@param[out] Str The dotted IP string.\r
- \r
+\r
**/\r
VOID\r
Ip4Config2IpToStr (\r
{\r
UnicodeSPrint (\r
Str,\r
- 2 * IP4_STR_MAX_SIZE, \r
- L"%d.%d.%d.%d", \r
+ 2 * IP4_STR_MAX_SIZE,\r
+ L"%d.%d.%d.%d",\r
Ip->Addr[0],\r
Ip->Addr[1],\r
Ip->Addr[2],\r
\r
\r
/**\r
- Convert the IPv4 address list into string consists of several decimal \r
+ Convert the IPv4 address list into string consists of several decimal\r
dotted IPv4 addresses separated by space.\r
\r
@param[in] Ip The IPv4 address list.\r
@param[in] IpCount The size of IPv4 address list.\r
@param[out] Str The string contains several decimal dotted\r
- IPv4 addresses separated by space. \r
+ IPv4 addresses separated by space.\r
\r
@retval EFI_SUCCESS Operation is success.\r
@retval EFI_OUT_OF_RESOURCES Error occurs in allocating memory.\r
UINTN StrIndex;\r
CHAR16 *TempStr;\r
EFI_IPv4_ADDRESS *TempIp;\r
- \r
+\r
Index = 0;\r
TemIndex = 0;\r
StrIndex = 0;\r
}\r
\r
UnicodeSPrint (\r
- TempStr, \r
- 2 * IP4_STR_MAX_SIZE, \r
- L"%d.%d.%d.%d", \r
+ TempStr,\r
+ 2 * IP4_STR_MAX_SIZE,\r
+ L"%d.%d.%d.%d",\r
TempIp->Addr[0],\r
TempIp->Addr[1],\r
TempIp->Addr[2],\r
Str[StrIndex++] = L'\0';\r
} else {\r
Str[StrIndex++] = L' ';\r
- } \r
+ }\r
break;\r
} else {\r
Str[StrIndex++] = *(TempStr + TemIndex);\r
\r
@param[in] Event The pointer of Event.\r
@param[in] Context The pointer of Context.\r
- \r
+\r
**/\r
VOID\r
EFIAPI\r
set successfully.\r
@retval EFI_INVALID_PARAMETER Source instance or target IFR data is not available.\r
@retval Others Other errors as indicated.\r
- \r
+\r
**/\r
EFI_STATUS\r
Ip4Config2ConvertConfigNvDataToIfrNvData (\r
Ip4Info = NULL;\r
DnsAddress = NULL;\r
GatewaySize = sizeof (EFI_IPv4_ADDRESS);\r
- \r
+\r
if ((IfrNvData == NULL) || (Instance == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
- \r
+\r
NET_CHECK_SIGNATURE (Instance, IP4_CONFIG2_INSTANCE_SIGNATURE);\r
\r
IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance);\r
\r
//\r
// Get the Policy info.\r
- // \r
+ //\r
DataSize = sizeof (EFI_IP4_CONFIG2_POLICY);\r
Status = Ip4Config2->GetData (\r
Ip4Config2,\r
if (EFI_ERROR (Status)) {\r
goto Exit;\r
}\r
- \r
+\r
if (Policy == Ip4Config2PolicyStatic) {\r
IfrNvData->DhcpEnable = FALSE;\r
} else if (Policy == Ip4Config2PolicyDhcp) {\r
IfrNvData->DhcpEnable = TRUE;\r
goto Exit;\r
}\r
- \r
+\r
//\r
// Get the interface info.\r
//\r
if (Status != EFI_BUFFER_TOO_SMALL) {\r
return Status;\r
}\r
- \r
+\r
Ip4Info = AllocateZeroPool (DataSize);\r
if (Ip4Info == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
if (EFI_ERROR (Status)) {\r
goto Exit;\r
}\r
- \r
+\r
//\r
// Get the Gateway info.\r
//\r
if ((Status != EFI_BUFFER_TOO_SMALL) && (Status != EFI_NOT_FOUND)) {\r
goto Exit;\r
}\r
- \r
+\r
DnsCount = (UINT32) (DnsSize / sizeof (EFI_IPv4_ADDRESS));\r
\r
if (DnsSize > 0) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\r
- \r
+\r
Status = Ip4Config2->GetData (\r
Ip4Config2,\r
Ip4Config2DataTypeDnsServer,\r
if (Ip4Info != NULL) {\r
FreePool(Ip4Info);\r
}\r
- \r
+\r
return Status;\r
}\r
\r
set successfully.\r
@retval EFI_INVALID_PARAMETER The address information for setting is invalid.\r
@retval Others Other errors as indicated.\r
- \r
+\r
**/\r
EFI_STATUS\r
Ip4Config2ConvertIfrNvDataToConfigNvData (\r
IN OUT IP4_CONFIG2_INSTANCE *Instance\r
)\r
{\r
- EFI_STATUS Status; \r
+ EFI_STATUS Status;\r
EFI_IP4_CONFIG2_PROTOCOL *Ip4Cfg2;\r
- IP4_CONFIG2_NVDATA *Ip4NvData; \r
+ IP4_CONFIG2_NVDATA *Ip4NvData;\r
\r
EFI_IP_ADDRESS StationAddress;\r
EFI_IP_ADDRESS SubnetMask;\r
Status = EFI_SUCCESS;\r
Ip4Cfg2 = &Instance->Ip4Config2;\r
Ip4NvData = &Instance->Ip4NvData;\r
- \r
+\r
DnsCount = 0;\r
- DnsAddress = NULL; \r
- \r
+ DnsAddress = NULL;\r
+\r
TimeoutEvent = NULL;\r
SetAddressEvent = NULL;\r
\r
\r
- \r
+\r
if (Instance == NULL || IfrFormNvData == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
if (IfrFormNvData->Configure != TRUE) {\r
return EFI_SUCCESS;\r
}\r
- \r
+\r
if (IfrFormNvData->DhcpEnable == TRUE) {\r
Ip4NvData->Policy = Ip4Config2PolicyDhcp;\r
- \r
+\r
Status = Ip4Cfg2->SetData (\r
Ip4Cfg2,\r
Ip4Config2DataTypePolicy,\r
}\r
\r
Status = Ip4Config2StrToIp (IfrFormNvData->StationAddress, &StationAddress.v4);\r
- if (EFI_ERROR (Status) || \r
- (SubnetMask.Addr[0] != 0 && !NetIp4IsUnicast (NTOHL (StationAddress.Addr[0]), NTOHL (SubnetMask.Addr[0]))) || \r
+ if (EFI_ERROR (Status) ||\r
+ (SubnetMask.Addr[0] != 0 && !NetIp4IsUnicast (NTOHL (StationAddress.Addr[0]), NTOHL (SubnetMask.Addr[0]))) ||\r
!Ip4StationAddressValid (NTOHL (StationAddress.Addr[0]), NTOHL (SubnetMask.Addr[0]))) {\r
CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid IP address!", NULL);\r
return EFI_INVALID_PARAMETER;\r
}\r
- \r
+\r
Status = Ip4Config2StrToIp (IfrFormNvData->GatewayAddress, &Gateway.v4);\r
- if (EFI_ERROR (Status) || \r
+ if (EFI_ERROR (Status) ||\r
(Gateway.Addr[0] != 0 && SubnetMask.Addr[0] != 0 && !NetIp4IsUnicast (NTOHL (Gateway.Addr[0]), NTOHL (SubnetMask.Addr[0])))) {\r
CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Gateway!", NULL);\r
return EFI_INVALID_PARAMETER;\r
CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL);\r
FreePool(DnsAddress);\r
return EFI_INVALID_PARAMETER;\r
- } \r
- } \r
+ }\r
+ }\r
} else {\r
if (EFI_ERROR (Status)) {\r
CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL);\r
}\r
}\r
- \r
+\r
if (Ip4NvData->ManualAddress != NULL) {\r
- FreePool(Ip4NvData->ManualAddress); \r
+ FreePool(Ip4NvData->ManualAddress);\r
}\r
Ip4NvData->ManualAddressCount = 1;\r
Ip4NvData->ManualAddress = AllocateZeroPool(sizeof(EFI_IP4_CONFIG2_MANUAL_ADDRESS));\r
if (DnsAddress != NULL) {\r
FreePool(DnsAddress);\r
}\r
- \r
+\r
return EFI_OUT_OF_RESOURCES;\r
}\r
CopyMem(&Ip4NvData->ManualAddress->Address, &StationAddress.v4, sizeof(EFI_IPv4_ADDRESS));\r
CopyMem(&Ip4NvData->ManualAddress->SubnetMask, &SubnetMask.v4, sizeof(EFI_IPv4_ADDRESS));\r
- \r
+\r
if (Ip4NvData->GatewayAddress != NULL) {\r
- FreePool(Ip4NvData->GatewayAddress); \r
+ FreePool(Ip4NvData->GatewayAddress);\r
}\r
Ip4NvData->GatewayAddressCount = 1;\r
Ip4NvData->GatewayAddress = AllocateZeroPool(sizeof(EFI_IPv4_ADDRESS));\r
return EFI_OUT_OF_RESOURCES;\r
}\r
CopyMem(Ip4NvData->GatewayAddress, &Gateway.v4, sizeof(EFI_IPv4_ADDRESS));\r
- \r
+\r
if (Ip4NvData->DnsAddress != NULL) {\r
- FreePool(Ip4NvData->DnsAddress); \r
+ FreePool(Ip4NvData->DnsAddress);\r
}\r
Ip4NvData->DnsAddressCount = (UINT32) DnsCount;\r
Ip4NvData->DnsAddress = DnsAddress;\r
}\r
\r
IsAddressOk = FALSE;\r
- \r
+\r
Status = Ip4Cfg2->RegisterDataNotify (\r
Ip4Cfg2,\r
Ip4Config2DataTypeManualAddress,\r
DataSize,\r
Ip4NvData->DnsAddress\r
);\r
- \r
+\r
if (EFI_ERROR (Status)) {\r
goto Exit;\r
- } \r
- } \r
- } \r
+ }\r
+ }\r
+ }\r
\r
Exit:\r
if (SetAddressEvent != NULL) {\r
OUT EFI_STRING *Results\r
)\r
{\r
- EFI_STATUS Status; \r
+ EFI_STATUS Status;\r
IP4_CONFIG2_INSTANCE *Ip4Config2Instance;\r
- IP4_FORM_CALLBACK_INFO *Private; \r
+ IP4_FORM_CALLBACK_INFO *Private;\r
IP4_CONFIG2_IFR_NVDATA *IfrFormNvData;\r
EFI_STRING ConfigRequestHdr;\r
- EFI_STRING ConfigRequest; \r
+ EFI_STRING ConfigRequest;\r
BOOLEAN AllocatedRequest;\r
EFI_STRING FormResult;\r
UINTN Size;\r
if (Progress == NULL || Results == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
- \r
- Status = EFI_SUCCESS; \r
+\r
+ Status = EFI_SUCCESS;\r
IfrFormNvData = NULL;\r
ConfigRequest = NULL;\r
- FormResult = NULL; \r
+ FormResult = NULL;\r
Size = 0;\r
- AllocatedRequest = FALSE; \r
- ConfigRequest = Request; \r
+ AllocatedRequest = FALSE;\r
+ ConfigRequest = Request;\r
Private = IP4_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS(This);\r
Ip4Config2Instance = IP4_CONFIG2_INSTANCE_FROM_FORM_CALLBACK(Private);\r
BufferSize = sizeof (IP4_CONFIG2_IFR_NVDATA);\r
*Progress = Request;\r
- \r
+\r
//\r
// Check Request data in <ConfigHdr>.\r
//\r
if (IfrFormNvData == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- \r
+\r
Ip4Config2ConvertConfigNvDataToIfrNvData (Ip4Config2Instance, IfrFormNvData);\r
- \r
+\r
if ((Request == NULL) || (StrStr (Request, L"OFFSET") == NULL)) {\r
//\r
// Request has no request element, construct full request string.\r
goto Failure;\r
}\r
AllocatedRequest = TRUE;\r
- \r
+\r
UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize);\r
FreePool (ConfigRequestHdr);\r
}\r
);\r
\r
FreePool (IfrFormNvData);\r
- \r
+\r
//\r
// Free the allocated config request string.\r
//\r
goto Failure;\r
}\r
}\r
- \r
+\r
if (Request == NULL || HiiIsConfigHdrMatch (Request, &gIp4Config2NvDataGuid, mIp4Config2StorageName)) {\r
*Results = FormResult;\r
} else {\r
callback.Currently not implemented.\r
@retval EFI_INVALID_PARAMETERS Passing in wrong parameter.\r
@retval Others Other errors as indicated.\r
- \r
+\r
**/\r
EFI_STATUS\r
EFIAPI\r
IP4_CONFIG2_INSTANCE *Instance;\r
IP4_CONFIG2_IFR_NVDATA *IfrFormNvData;\r
IP4_FORM_CALLBACK_INFO *Private;\r
- \r
+\r
EFI_IP_ADDRESS StationAddress;\r
EFI_IP_ADDRESS SubnetMask;\r
EFI_IP_ADDRESS Gateway;\r
UINTN DnsCount;\r
UINTN Index;\r
EFI_INPUT_KEY Key;\r
- \r
+\r
IfrFormNvData = NULL;\r
DnsCount = 0;\r
- DnsAddress = NULL; \r
+ DnsAddress = NULL;\r
\r
if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
Private = IP4_FORM_CALLBACK_INFO_FROM_CONFIG_ACCESS(This);\r
Instance = IP4_CONFIG2_INSTANCE_FROM_FORM_CALLBACK(Private);\r
- \r
+\r
IfrFormNvData = AllocateZeroPool (sizeof (IP4_CONFIG2_IFR_NVDATA));\r
if (IfrFormNvData == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
Status = EFI_INVALID_PARAMETER;\r
}\r
break;\r
- \r
+\r
case KEY_DNS:\r
Status = Ip4Config2StrToIpList (IfrFormNvData->DnsAddress, &DnsAddress, &DnsCount);\r
if (!EFI_ERROR (Status) && DnsCount > 0) {\r
CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL);\r
Status = EFI_INVALID_PARAMETER;\r
break;\r
- } \r
+ }\r
}\r
} else {\r
if (EFI_ERROR (Status)) {\r
CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Invalid Dns Server!", NULL);\r
}\r
}\r
- \r
- if(DnsAddress != NULL) { \r
+\r
+ if(DnsAddress != NULL) {\r
FreePool(DnsAddress);\r
}\r
break;\r
- \r
+\r
case KEY_SAVE_CHANGES:\r
Status = Ip4Config2ConvertIfrNvDataToConfigNvData (IfrFormNvData, Instance);\r
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
@retval EFI_SUCCESS The HII Config Access protocol is installed.\r
@retval EFI_OUT_OF_RESOURCES Failed to allocate memory.\r
@retval Others Other errors as indicated.\r
- \r
+\r
**/\r
EFI_STATUS\r
Ip4Config2FormInit (\r
\r
IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance);\r
ASSERT (IpSb != NULL);\r
- \r
+\r
CallbackInfo = &Instance->CallbackInfo;\r
- \r
+\r
CallbackInfo->Signature = IP4_FORM_CALLBACK_INFO_SIGNATURE;\r
\r
Status = gBS->HandleProtocol (\r
Status = NetLibGetMacString (IpSb->Controller, IpSb->Image, &MacString);\r
if (!EFI_ERROR (Status)) {\r
OldMenuString = HiiGetString (\r
- CallbackInfo->RegisteredHandle, \r
- STRING_TOKEN (STR_IP4_CONFIG2_FORM_HELP), \r
+ CallbackInfo->RegisteredHandle,\r
+ STRING_TOKEN (STR_IP4_CONFIG2_FORM_HELP),\r
NULL\r
);\r
UnicodeSPrint (MenuString, 128, L"%s (MAC:%s)", OldMenuString, MacString);\r
HiiSetString (\r
- CallbackInfo->RegisteredHandle, \r
- STRING_TOKEN (STR_IP4_CONFIG2_FORM_HELP), \r
- MenuString, \r
+ CallbackInfo->RegisteredHandle,\r
+ STRING_TOKEN (STR_IP4_CONFIG2_FORM_HELP),\r
+ MenuString,\r
NULL\r
);\r
\r
UnicodeSPrint (PortString, 128, L"MAC:%s", MacString);\r
HiiSetString (\r
- CallbackInfo->RegisteredHandle, \r
- STRING_TOKEN (STR_IP4_DEVICE_FORM_HELP), \r
- PortString, \r
+ CallbackInfo->RegisteredHandle,\r
+ STRING_TOKEN (STR_IP4_DEVICE_FORM_HELP),\r
+ PortString,\r
NULL\r
);\r
- \r
+\r
FreePool (MacString);\r
FreePool (OldMenuString);\r
\r
IpSb->Image,\r
CallbackInfo->ChildHandle\r
);\r
- \r
+\r
//\r
// Uninstall EFI_HII_CONFIG_ACCESS_PROTOCOL\r
//\r