]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPlatformPkg/Bds: Getting and editing IP addresses
authorRonald Cron <ronald.cron@arm.com>
Tue, 15 Jul 2014 09:25:57 +0000 (09:25 +0000)
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 15 Jul 2014 09:25:57 +0000 (09:25 +0000)
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

ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc
ArmPlatformPkg/ArmPlatformPkg.dsc
ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc
ArmPlatformPkg/Bds/Bds.inf
ArmPlatformPkg/Bds/BdsHelper.c
ArmPlatformPkg/Bds/BdsInternal.h
BeagleBoardPkg/BeagleBoardPkg.dsc

index 264099c7b40ff1e7fb9b05151093c2bcb7e98bdd..22d98882dc04a150d76897c523dfa081858d8b7f 100644 (file)
   EfiResetSystemLib|EmbeddedPkg/Library/TemplateResetSystemLib/TemplateResetSystemLib.inf\r
   RealTimeClockLib|EmbeddedPkg/Library/TemplateRealTimeClockLib/TemplateRealTimeClockLib.inf\r
 \r
   EfiResetSystemLib|EmbeddedPkg/Library/TemplateResetSystemLib/TemplateResetSystemLib.inf\r
   RealTimeClockLib|EmbeddedPkg/Library/TemplateRealTimeClockLib/TemplateRealTimeClockLib.inf\r
 \r
-  # EBL Related Libraries  \r
+  # Networking Requirements for ArmPlatformPkg/Bds\r
+  NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf\r
+\r
+  # EBL Related Libraries\r
   EblCmdLib|ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.inf\r
   EfiFileLib|EmbeddedPkg/Library/EfiFileLib/EfiFileLib.inf\r
   EblAddExternalCommandLib|EmbeddedPkg/Library/EblAddExternalCommandLib/EblAddExternalCommandLib.inf\r
   EblNetworkLib|EmbeddedPkg/Library/EblNetworkLib/EblNetworkLib.inf\r
   EblCmdLib|ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.inf\r
   EfiFileLib|EmbeddedPkg/Library/EfiFileLib/EfiFileLib.inf\r
   EblAddExternalCommandLib|EmbeddedPkg/Library/EblAddExternalCommandLib/EblAddExternalCommandLib.inf\r
   EblNetworkLib|EmbeddedPkg/Library/EblNetworkLib/EblNetworkLib.inf\r
-  \r
+\r
   #\r
   # Uncomment (and comment out the next line) For RealView Debugger. The Standard IO window \r
   # in the debugger will show load and unload commands for symbols. You can cut and paste this\r
   #\r
   # Uncomment (and comment out the next line) For RealView Debugger. The Standard IO window \r
   # in the debugger will show load and unload commands for symbols. You can cut and paste this\r
index ce31abcdcc4a93dfbea842d07a0d011a15c51a98..a12040b6b2a5f5047b6dd72ddbc9b2a0e42ab917 100644 (file)
   EfiResetSystemLib|EmbeddedPkg/Library/TemplateResetSystemLib/TemplateResetSystemLib.inf\r
   RealTimeClockLib|EmbeddedPkg/Library/TemplateRealTimeClockLib/TemplateRealTimeClockLib.inf\r
 \r
   EfiResetSystemLib|EmbeddedPkg/Library/TemplateResetSystemLib/TemplateResetSystemLib.inf\r
   RealTimeClockLib|EmbeddedPkg/Library/TemplateRealTimeClockLib/TemplateRealTimeClockLib.inf\r
 \r
-  # EBL Related Libraries  \r
+  # Networking Requirements for ArmPlatformPkg/Bds\r
+  NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf\r
+\r
+  # EBL Related Libraries\r
   EblCmdLib|ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.inf\r
   EfiFileLib|EmbeddedPkg/Library/EfiFileLib/EfiFileLib.inf\r
   EblAddExternalCommandLib|EmbeddedPkg/Library/EblAddExternalCommandLib/EblAddExternalCommandLib.inf\r
   EblNetworkLib|EmbeddedPkg/Library/EblNetworkLib/EblNetworkLib.inf\r
   EblCmdLib|ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.inf\r
   EfiFileLib|EmbeddedPkg/Library/EfiFileLib/EfiFileLib.inf\r
   EblAddExternalCommandLib|EmbeddedPkg/Library/EblAddExternalCommandLib/EblAddExternalCommandLib.inf\r
   EblNetworkLib|EmbeddedPkg/Library/EblNetworkLib/EblNetworkLib.inf\r
-  \r
+\r
   #\r
   # Uncomment (and comment out the next line) For RealView Debugger. The Standard IO window \r
   # in the debugger will show load and unload commands for symbols. You can cut and paste this\r
   #\r
   # Uncomment (and comment out the next line) For RealView Debugger. The Standard IO window \r
   # in the debugger will show load and unload commands for symbols. You can cut and paste this\r
index 5ceeebdf1371eaf464c207fa5cc73dea2a5e15cd..06c7b05a47ed10a4c8ddafbfb5d775f87d33c3b7 100644 (file)
   RealTimeClockLib|ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf\r
   SerialPortLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf\r
   SerialPortExtLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.inf\r
   RealTimeClockLib|ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf\r
   SerialPortLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf\r
   SerialPortExtLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.inf\r
-  TimerLib|ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.inf  \r
+  TimerLib|ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.inf\r
   # ARM PL011 UART Driver\r
   PL011UartLib|ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf\r
   NorFlashPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/NorFlashArmRealViewEbLib/NorFlashArmRealViewEbLib.inf\r
   # ARM PL011 UART Driver\r
   PL011UartLib|ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf\r
   NorFlashPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/NorFlashArmRealViewEbLib/NorFlashArmRealViewEbLib.inf\r
-  LcdPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/PL111LcdArmRealViewEbLib/PL111LcdArmRealViewEbLib.inf  \r
+  LcdPlatformLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/PL111LcdArmRealViewEbLib/PL111LcdArmRealViewEbLib.inf\r
   ArmPlatformSysConfigLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/SysConfigArmRealViewEbLib/SysConfigArmRealViewEbLib.inf\r
 \r
   ArmPlatformSysConfigLib|ArmPlatformPkg/ArmRealViewEbPkg/Library/SysConfigArmRealViewEbLib/SysConfigArmRealViewEbLib.inf\r
 \r
-  # EBL Related Libraries  \r
+  # Networking Requirements for ArmPlatformPkg/Bds\r
+  NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf\r
+\r
+  # EBL Related Libraries\r
   EblCmdLib|ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.inf\r
   EfiFileLib|EmbeddedPkg/Library/EfiFileLib/EfiFileLib.inf\r
   EblAddExternalCommandLib|EmbeddedPkg/Library/EblAddExternalCommandLib/EblAddExternalCommandLib.inf\r
   EblCmdLib|ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.inf\r
   EfiFileLib|EmbeddedPkg/Library/EfiFileLib/EfiFileLib.inf\r
   EblAddExternalCommandLib|EmbeddedPkg/Library/EblAddExternalCommandLib/EblAddExternalCommandLib.inf\r
index 5faa4b2ee740391a6b5e3254ffa2b643766ead81..2a6b07b4bbaa044c5749dc93a0103d038360be71 100644 (file)
@@ -47,6 +47,7 @@
   DebugLib\r
   PrintLib\r
   BaseLib\r
   DebugLib\r
   PrintLib\r
   BaseLib\r
+  NetLib\r
 \r
 [Guids]\r
   gEfiFileSystemInfoGuid\r
 \r
 [Guids]\r
   gEfiFileSystemInfoGuid\r
index 152061d0f717e369148277e972dc332f2d82d233..8553577cf1b1272f63b297033c390a25546a56e4 100644 (file)
@@ -12,6 +12,7 @@
 *\r
 **/\r
 \r
 *\r
 **/\r
 \r
+#include <Library/NetLib.h>\r
 #include "BdsInternal.h"\r
 \r
 EFI_STATUS\r
 #include "BdsInternal.h"\r
 \r
 EFI_STATUS\r
@@ -137,43 +138,87 @@ GetHIInputInteger (
   return Status;\r
 }\r
 \r
   return Status;\r
 }\r
 \r
+/**\r
+  Get an IPv4 address\r
+\r
+  The function asks the user for an IPv4 address. If the input\r
+  string defines a valid IPv4 address, the four bytes of the\r
+  corresponding IPv4 address are extracted from the string and returned by\r
+  the function.\r
+\r
+  @param[out]  EFI_IP_ADDRESS  OutIpAddr  Returned IPv4 address. Valid if\r
+                                          and only if the returned value\r
+                                          is equal to EFI_SUCCESS\r
+
+  @retval  EFI_SUCCESS            Input completed\r
+  @retval  EFI_ABORTED            Editing aborted by the user\r
+  @retval  EFI_INVALID_PARAMETER  The string returned by the user is\r
+                                  mal-formated\r
+  @retval  EFI_OUT_OF_RESOURCES   Fail to perform the operation due to\r
+                                  lack of resource\r
+**/\r
 EFI_STATUS\r
 GetHIInputIP (\r
 EFI_STATUS\r
 GetHIInputIP (\r
-  OUT EFI_IP_ADDRESS   *Ip\r
+  OUT  EFI_IP_ADDRESS  *OutIpAddr\r
   )\r
 {\r
   )\r
 {\r
-  CHAR16  CmdLine[255];\r
-  CHAR16  *Str;\r
   EFI_STATUS  Status;\r
   EFI_STATUS  Status;\r
+  CHAR16      CmdLine[48];\r
 \r
   CmdLine[0] = '\0';\r
 \r
   CmdLine[0] = '\0';\r
-  Status = EditHIInputStr (CmdLine,255);\r
-  if (!EFI_ERROR(Status)) {\r
-    Str = CmdLine;\r
-    Ip->v4.Addr[0] = (UINT8)StrDecimalToUintn (Str);\r
-\r
-    Str = StrStr (Str, L".");\r
-    if (Str == NULL) {\r
-      return EFI_INVALID_PARAMETER;\r
-    }\r
+  Status = EditHIInputStr (CmdLine, 48);\r
+  if (EFI_ERROR (Status)) {\r
+    return EFI_ABORTED;\r
+  }\r
 \r
 \r
-    Ip->v4.Addr[1] = (UINT8)StrDecimalToUintn (++Str);\r
+  Status = NetLibStrToIp4 (CmdLine, &OutIpAddr->v4);\r
 \r
 \r
-    Str = StrStr (Str, L".");\r
-    if (Str == NULL) {\r
-      return EFI_INVALID_PARAMETER;\r
-    }\r
+  return Status;\r
+}\r
 \r
 \r
-    Ip->v4.Addr[2] = (UINT8)StrDecimalToUintn (++Str);\r
+/**\r
+  Edit an IPv4 address\r
+\r
+  The function displays as a string following the "%d.%d.%d.%d" format the\r
+  IPv4 address that is passed in and asks the user to modify it. If the\r
+  resulting string defines a valid IPv4 address, the four bytes of the\r
+  corresponding IPv4 address are extracted from the string and returned by\r
+  the function.\r
+\r
+  @param[in ]  EFI_IP_ADDRESS  InIpAddr   Input IPv4 address\r
+  @param[out]  EFI_IP_ADDRESS  OutIpAddr  Returned IPv4 address. Valid if\r
+                                          and only if the returned value\r
+                                          is equal to EFI_SUCCESS\r
+
+  @retval  EFI_SUCCESS            Update completed\r
+  @retval  EFI_ABORTED            Editing aborted by the user\r
+  @retval  EFI_INVALID_PARAMETER  The string returned by the user is\r
+                                  mal-formated\r
+  @retval  EFI_OUT_OF_RESOURCES   Fail to perform the operation due to\r
+                                  lack of resource\r
+**/\r
+EFI_STATUS\r
+EditHIInputIP (\r
+  IN   EFI_IP_ADDRESS  *InIpAddr,\r
+  OUT  EFI_IP_ADDRESS  *OutIpAddr\r
+  )\r
+{\r
+  EFI_STATUS  Status;\r
+  CHAR16      CmdLine[48];\r
 \r
 \r
-    Str = StrStr (Str, L".");\r
-    if (Str == NULL) {\r
-      return EFI_INVALID_PARAMETER;\r
-    }\r
+  UnicodeSPrint (
+    CmdLine, 48, L"%d.%d.%d.%d",\r
+    InIpAddr->v4.Addr[0], InIpAddr->v4.Addr[1],\r
+    InIpAddr->v4.Addr[2], InIpAddr->v4.Addr[3]\r
+    );\r
 \r
 \r
-    Ip->v4.Addr[3] = (UINT8)StrDecimalToUintn (++Str);\r
+  Status = EditHIInputStr (CmdLine, 48);\r
+  if (EFI_ERROR (Status)) {\r
+    return EFI_ABORTED;\r
   }\r
 \r
   }\r
 \r
+  Status = NetLibStrToIp4 (CmdLine, &OutIpAddr->v4);\r
+\r
   return Status;\r
 }\r
 \r
   return Status;\r
 }\r
 \r
index 447b8c9cd1901a57081fe759ac667ab1464e1349..d5b1b79c3897632787db33711430be3e4ee876c4 100644 (file)
@@ -160,6 +160,12 @@ GetHIInputIP (
   OUT EFI_IP_ADDRESS   *Ip\r
   );\r
 \r
   OUT EFI_IP_ADDRESS   *Ip\r
   );\r
 \r
+EFI_STATUS\r
+EditHIInputIP (\r
+  IN  EFI_IP_ADDRESS  *InIpAddr,\r
+  OUT EFI_IP_ADDRESS  *OutIpAddr\r
+  );\r
+\r
 EFI_STATUS\r
 GetHIInputBoolean (\r
   OUT BOOLEAN *Value\r
 EFI_STATUS\r
 GetHIInputBoolean (\r
   OUT BOOLEAN *Value\r
index 07b8c4719882ac5848b5677b164439d0ccbd775f..d24a1bca187ff57bf35b9e877a90a58805a6c7bb 100644 (file)
   DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf\r
   DmaLib|ArmPkg/Library/ArmDmaLib/ArmDmaLib.inf\r
 \r
   DebugAgentLib|MdeModulePkg/Library/DebugAgentLibNull/DebugAgentLibNull.inf\r
   DmaLib|ArmPkg/Library/ArmDmaLib/ArmDmaLib.inf\r
 \r
+  NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf\r
   BdsLib|ArmPkg/Library/BdsLib/BdsLib.inf\r
   FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf\r
 \r
   BdsLib|ArmPkg/Library/BdsLib/BdsLib.inf\r
   FdtLib|EmbeddedPkg/Library/FdtLib/FdtLib.inf\r
 \r