summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg
diff options
context:
space:
mode:
authorRonald Cron <ronald.cron@arm.com>2014-07-15 09:25:57 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2014-07-15 09:25:57 +0000
commit8bf4ad4475c061a9ff4fc248ba7f11784d706342 (patch)
tree477bfcadfc9b06a64275fe0c40ae646cdbec99e4 /ArmPlatformPkg
parent6d0ca2577c3788ee1087177df439246fe8f2b4fd (diff)
ArmPlatformPkg/Bds: Getting and editing IP addresses
Reworked GetHIInputIP() function to use "NetLibStrToIp4()" library function to parse the IPv4 address instead of doing it by itself. Added function EditHIInputIP() in BdsHelper.c to edit an IPv4 address. To be used when updating a tftp boot option. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ronald Cron <ronald.cron@arm.com> Reviewed-By: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15660 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPlatformPkg')
-rw-r--r--ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc7
-rw-r--r--ArmPlatformPkg/ArmPlatformPkg.dsc7
-rw-r--r--ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc9
-rw-r--r--ArmPlatformPkg/Bds/Bds.inf1
-rw-r--r--ArmPlatformPkg/Bds/BdsHelper.c91
-rw-r--r--ArmPlatformPkg/Bds/BdsInternal.h6
6 files changed, 91 insertions, 30 deletions
diff --git a/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc b/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc
index 264099c7b..22d98882d 100644
--- a/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc
+++ b/ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc
@@ -86,12 +86,15 @@
EfiResetSystemLib|EmbeddedPkg/Library/TemplateResetSystemLib/TemplateResetSystemLib.inf
RealTimeClockLib|EmbeddedPkg/Library/TemplateRealTimeClockLib/TemplateRealTimeClockLib.inf
- # EBL Related Libraries
+ # Networking Requirements for ArmPlatformPkg/Bds
+ NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
+
+ # EBL Related Libraries
EblCmdLib|ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.inf
EfiFileLib|EmbeddedPkg/Library/EfiFileLib/EfiFileLib.inf
EblAddExternalCommandLib|EmbeddedPkg/Library/EblAddExternalCommandLib/EblAddExternalCommandLib.inf
EblNetworkLib|EmbeddedPkg/Library/EblNetworkLib/EblNetworkLib.inf
-
+
#
# Uncomment (and comment out the next line) For RealView Debugger. The Standard IO window
# in the debugger will show load and unload commands for symbols. You can cut and paste this
diff --git a/ArmPlatformPkg/ArmPlatformPkg.dsc b/ArmPlatformPkg/ArmPlatformPkg.dsc
index ce31abcdc..a12040b6b 100644
--- a/ArmPlatformPkg/ArmPlatformPkg.dsc
+++ b/ArmPlatformPkg/ArmPlatformPkg.dsc
@@ -85,12 +85,15 @@
EfiResetSystemLib|EmbeddedPkg/Library/TemplateResetSystemLib/TemplateResetSystemLib.inf
RealTimeClockLib|EmbeddedPkg/Library/TemplateRealTimeClockLib/TemplateRealTimeClockLib.inf
- # EBL Related Libraries
+ # Networking Requirements for ArmPlatformPkg/Bds
+ NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
+
+ # EBL Related Libraries
EblCmdLib|ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.inf
EfiFileLib|EmbeddedPkg/Library/EfiFileLib/EfiFileLib.inf
EblAddExternalCommandLib|EmbeddedPkg/Library/EblAddExternalCommandLib/EblAddExternalCommandLib.inf
EblNetworkLib|EmbeddedPkg/Library/EblNetworkLib/EblNetworkLib.inf
-
+
#
# Uncomment (and comment out the next line) For RealView Debugger. The Standard IO window
# in the debugger will show load and unload commands for symbols. You can cut and paste this
diff --git a/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc b/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc
index 5ceeebdf1..06c7b05a4 100644
--- a/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc
+++ b/ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc
@@ -68,14 +68,17 @@
RealTimeClockLib|ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf
SerialPortLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf
SerialPortExtLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.inf
- TimerLib|ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.inf
+ TimerLib|ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.inf
# ARM PL011 UART Driver
PL011UartLib|ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf
NorFlashPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/NorFlashArmRealViewEbLib/NorFlashArmRealViewEbLib.inf
- LcdPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/PL111LcdArmRealViewEbLib/PL111LcdArmRealViewEbLib.inf
+ LcdPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/PL111LcdArmRealViewEbLib/PL111LcdArmRealViewEbLib.inf
ArmPlatformSysConfigLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/SysConfigArmRealViewEbLib/SysConfigArmRealViewEbLib.inf
- # EBL Related Libraries
+ # Networking Requirements for ArmPlatformPkg/Bds
+ NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
+
+ # EBL Related Libraries
EblCmdLib|ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.inf
EfiFileLib|EmbeddedPkg/Library/EfiFileLib/EfiFileLib.inf
EblAddExternalCommandLib|EmbeddedPkg/Library/EblAddExternalCommandLib/EblAddExternalCommandLib.inf
diff --git a/ArmPlatformPkg/Bds/Bds.inf b/ArmPlatformPkg/Bds/Bds.inf
index 5faa4b2ee..2a6b07b4b 100644
--- a/ArmPlatformPkg/Bds/Bds.inf
+++ b/ArmPlatformPkg/Bds/Bds.inf
@@ -47,6 +47,7 @@
DebugLib
PrintLib
BaseLib
+ NetLib
[Guids]
gEfiFileSystemInfoGuid
diff --git a/ArmPlatformPkg/Bds/BdsHelper.c b/ArmPlatformPkg/Bds/BdsHelper.c
index 152061d0f..8553577cf 100644
--- a/ArmPlatformPkg/Bds/BdsHelper.c
+++ b/ArmPlatformPkg/Bds/BdsHelper.c
@@ -12,6 +12,7 @@
*
**/
+#include <Library/NetLib.h>
#include "BdsInternal.h"
EFI_STATUS
@@ -137,43 +138,87 @@ GetHIInputInteger (
return Status;
}
+/**
+ Get an IPv4 address
+
+ The function asks the user for an IPv4 address. If the input
+ string defines a valid IPv4 address, the four bytes of the
+ corresponding IPv4 address are extracted from the string and returned by
+ the function.
+
+ @param[out] EFI_IP_ADDRESS OutIpAddr Returned IPv4 address. Valid if
+ and only if the returned value
+ is equal to EFI_SUCCESS
+
+ @retval EFI_SUCCESS Input completed
+ @retval EFI_ABORTED Editing aborted by the user
+ @retval EFI_INVALID_PARAMETER The string returned by the user is
+ mal-formated
+ @retval EFI_OUT_OF_RESOURCES Fail to perform the operation due to
+ lack of resource
+**/
EFI_STATUS
GetHIInputIP (
- OUT EFI_IP_ADDRESS *Ip
+ OUT EFI_IP_ADDRESS *OutIpAddr
)
{
- CHAR16 CmdLine[255];
- CHAR16 *Str;
EFI_STATUS Status;
+ CHAR16 CmdLine[48];
CmdLine[0] = '\0';
- Status = EditHIInputStr (CmdLine,255);
- if (!EFI_ERROR(Status)) {
- Str = CmdLine;
- Ip->v4.Addr[0] = (UINT8)StrDecimalToUintn (Str);
-
- Str = StrStr (Str, L".");
- if (Str == NULL) {
- return EFI_INVALID_PARAMETER;
- }
+ Status = EditHIInputStr (CmdLine, 48);
+ if (EFI_ERROR (Status)) {
+ return EFI_ABORTED;
+ }
- Ip->v4.Addr[1] = (UINT8)StrDecimalToUintn (++Str);
+ Status = NetLibStrToIp4 (CmdLine, &OutIpAddr->v4);
- Str = StrStr (Str, L".");
- if (Str == NULL) {
- return EFI_INVALID_PARAMETER;
- }
+ return Status;
+}
- Ip->v4.Addr[2] = (UINT8)StrDecimalToUintn (++Str);
+/**
+ Edit an IPv4 address
+
+ The function displays as a string following the "%d.%d.%d.%d" format the
+ IPv4 address that is passed in and asks the user to modify it. If the
+ resulting string defines a valid IPv4 address, the four bytes of the
+ corresponding IPv4 address are extracted from the string and returned by
+ the function.
+
+ @param[in ] EFI_IP_ADDRESS InIpAddr Input IPv4 address
+ @param[out] EFI_IP_ADDRESS OutIpAddr Returned IPv4 address. Valid if
+ and only if the returned value
+ is equal to EFI_SUCCESS
+
+ @retval EFI_SUCCESS Update completed
+ @retval EFI_ABORTED Editing aborted by the user
+ @retval EFI_INVALID_PARAMETER The string returned by the user is
+ mal-formated
+ @retval EFI_OUT_OF_RESOURCES Fail to perform the operation due to
+ lack of resource
+**/
+EFI_STATUS
+EditHIInputIP (
+ IN EFI_IP_ADDRESS *InIpAddr,
+ OUT EFI_IP_ADDRESS *OutIpAddr
+ )
+{
+ EFI_STATUS Status;
+ CHAR16 CmdLine[48];
- Str = StrStr (Str, L".");
- if (Str == NULL) {
- return EFI_INVALID_PARAMETER;
- }
+ UnicodeSPrint (
+ CmdLine, 48, L"%d.%d.%d.%d",
+ InIpAddr->v4.Addr[0], InIpAddr->v4.Addr[1],
+ InIpAddr->v4.Addr[2], InIpAddr->v4.Addr[3]
+ );
- Ip->v4.Addr[3] = (UINT8)StrDecimalToUintn (++Str);
+ Status = EditHIInputStr (CmdLine, 48);
+ if (EFI_ERROR (Status)) {
+ return EFI_ABORTED;
}
+ Status = NetLibStrToIp4 (CmdLine, &OutIpAddr->v4);
+
return Status;
}
diff --git a/ArmPlatformPkg/Bds/BdsInternal.h b/ArmPlatformPkg/Bds/BdsInternal.h
index 447b8c9cd..d5b1b79c3 100644
--- a/ArmPlatformPkg/Bds/BdsInternal.h
+++ b/ArmPlatformPkg/Bds/BdsInternal.h
@@ -161,6 +161,12 @@ GetHIInputIP (
);
EFI_STATUS
+EditHIInputIP (
+ IN EFI_IP_ADDRESS *InIpAddr,
+ OUT EFI_IP_ADDRESS *OutIpAddr
+ );
+
+EFI_STATUS
GetHIInputBoolean (
OUT BOOLEAN *Value
);