[edk2-devel] [PATCH v3 16/16] RedfishPkg: RedfishDiscoverDxe: add [] brackets to URI for IPv6 addresses

Mike Maslenkin posted 16 patches 2 years, 1 month ago
[edk2-devel] [PATCH v3 16/16] RedfishPkg: RedfishDiscoverDxe: add [] brackets to URI for IPv6 addresses
Posted by Mike Maslenkin 2 years, 1 month ago
URI is generated based on the RedfishLocation containing an ASCII string
representing the IP address. So, in the case of IPv4 the canonical
representation of an IPv4 address was inserted into the resulting Unicode
string i.e: "http{,s}://X.X.X.X/".

In the case of IPv6, to access resources, the IP address must be specified
in brackets, i.e. the resulting string should look like:
  "http{,s}://[X::X:X:X:X]/".

Cc: Abner Chang <abner.chang@amd.com>
Cc: Nickle Wang <nicklew@nvidia.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Signed-off-by: Mike Maslenkin <mike.maslenkin@gmail.com>
---
 .../RedfishDiscoverDxe/RedfishDiscoverDxe.c     | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
index 1022ab090df8..238039b57717 100644
--- a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
+++ b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
@@ -759,6 +759,7 @@ FreeInformationData (
   The function initializes particular strings into the structure instance.
 
   @param[in]  Information           EFI_REDFISH_DISCOVERED_INFORMATION
+  @param[in]  IsIpv6                Flag indicating IP version 6 protocol is used
   @param[in]  RedfishVersion        Redfish version.
   @param[in]  RedfishLocation       Redfish location.
   @param[in]  Uuid                  Service UUID string.
@@ -772,6 +773,7 @@ STATIC
 VOID
 InitInformationData (
   IN EFI_REDFISH_DISCOVERED_INFORMATION  *Information,
+  IN BOOLEAN                             IsIpv6,
   IN UINTN                               *RedfishVersion OPTIONAL,
   IN CONST CHAR8                         *RedfishLocation OPTIONAL,
   IN CONST CHAR8                         *Uuid OPTIONAL,
@@ -789,10 +791,20 @@ InitInformationData (
   }
 
   if (RedfishLocation != NULL) {
-    AllocationSize        = AsciiStrSize (RedfishLocation) * sizeof (CHAR16);
+    AllocationSize = AsciiStrSize (RedfishLocation) * sizeof (CHAR16);
+
+    if (IsIpv6) {
+      AllocationSize += 2 * sizeof (CHAR16); // take into account '[' and ']'
+    }
+
     Information->Location = AllocatePool (AllocationSize);
     if (Information->Location != NULL) {
-      AsciiStrToUnicodeStrS (RedfishLocation, Information->Location, AllocationSize);
+      if (IsIpv6) {
+        UnicodeSPrintAsciiFormat (Information->Location, AllocationSize, "[%a]", RedfishLocation);
+      } else {
+        AsciiStrToUnicodeStrS (RedfishLocation, Information->Location, AllocationSize);
+      }
+
       DEBUG ((DEBUG_MANAGEABILITY, "Redfish service location: %s.\n", Information->Location));
     } else {
       DEBUG ((
@@ -1038,6 +1050,7 @@ AddAndSignalNewRedfishService (
 
     InitInformationData (
       &DiscoveredInstance->Information,
+      CheckIsIpVersion6 (NetworkInterface),
       RedfishVersion,
       RedfishLocation,
       Uuid,
-- 
2.32.0 (Apple Git-132)



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#112875): https://edk2.groups.io/g/devel/message/112875
Mute This Topic: https://groups.io/mt/103354135/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: [edk2-devel] [PATCH v3 16/16] RedfishPkg: RedfishDiscoverDxe: add [] brackets to URI for IPv6 addresses
Posted by Chang, Abner via groups.io 2 years, 1 month ago
[AMD Official Use Only - General]

Reviewed-by: Abner Chang <abner.chang@amd.com>

> -----Original Message-----
> From: Mike Maslenkin <mike.maslenkin@gmail.com>
> Sent: Monday, December 25, 2023 6:59 AM
> To: devel@edk2.groups.io
> Cc: Chang, Abner <Abner.Chang@amd.com>; nicklew@nvidia.com;
> igork@ami.com; Mike Maslenkin <mike.maslenkin@gmail.com>
> Subject: [PATCH v3 16/16] RedfishPkg: RedfishDiscoverDxe: add [] brackets to
> URI for IPv6 addresses
>
> Caution: This message originated from an External Source. Use proper caution
> when opening attachments, clicking links, or responding.
>
>
> URI is generated based on the RedfishLocation containing an ASCII string
> representing the IP address. So, in the case of IPv4 the canonical
> representation of an IPv4 address was inserted into the resulting Unicode
> string i.e: "http{,s}://X.X.X.X/".
>
> In the case of IPv6, to access resources, the IP address must be specified
> in brackets, i.e. the resulting string should look like:
>   "http{,s}://[X::X:X:X:X]/".
>
> Cc: Abner Chang <abner.chang@amd.com>
> Cc: Nickle Wang <nicklew@nvidia.com>
> Cc: Igor Kulchytskyy <igork@ami.com>
> Signed-off-by: Mike Maslenkin <mike.maslenkin@gmail.com>
> ---
>  .../RedfishDiscoverDxe/RedfishDiscoverDxe.c     | 17 +++++++++++++++--
>  1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
> b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
> index 1022ab090df8..238039b57717 100644
> --- a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
> +++ b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
> @@ -759,6 +759,7 @@ FreeInformationData (
>    The function initializes particular strings into the structure instance.
>
>
>
>    @param[in]  Information           EFI_REDFISH_DISCOVERED_INFORMATION
>
> +  @param[in]  IsIpv6                Flag indicating IP version 6 protocol is used
>
>    @param[in]  RedfishVersion        Redfish version.
>
>    @param[in]  RedfishLocation       Redfish location.
>
>    @param[in]  Uuid                  Service UUID string.
>
> @@ -772,6 +773,7 @@ STATIC
>  VOID
>
>  InitInformationData (
>
>    IN EFI_REDFISH_DISCOVERED_INFORMATION  *Information,
>
> +  IN BOOLEAN                             IsIpv6,
>
>    IN UINTN                               *RedfishVersion OPTIONAL,
>
>    IN CONST CHAR8                         *RedfishLocation OPTIONAL,
>
>    IN CONST CHAR8                         *Uuid OPTIONAL,
>
> @@ -789,10 +791,20 @@ InitInformationData (
>    }
>
>
>
>    if (RedfishLocation != NULL) {
>
> -    AllocationSize        = AsciiStrSize (RedfishLocation) * sizeof (CHAR16);
>
> +    AllocationSize = AsciiStrSize (RedfishLocation) * sizeof (CHAR16);
>
> +
>
> +    if (IsIpv6) {
>
> +      AllocationSize += 2 * sizeof (CHAR16); // take into account '[' and ']'
>
> +    }
>
> +
>
>      Information->Location = AllocatePool (AllocationSize);
>
>      if (Information->Location != NULL) {
>
> -      AsciiStrToUnicodeStrS (RedfishLocation, Information->Location,
> AllocationSize);
>
> +      if (IsIpv6) {
>
> +        UnicodeSPrintAsciiFormat (Information->Location, AllocationSize,
> "[%a]", RedfishLocation);
>
> +      } else {
>
> +        AsciiStrToUnicodeStrS (RedfishLocation, Information->Location,
> AllocationSize);
>
> +      }
>
> +
>
>        DEBUG ((DEBUG_MANAGEABILITY, "Redfish service location: %s.\n",
> Information->Location));
>
>      } else {
>
>        DEBUG ((
>
> @@ -1038,6 +1050,7 @@ AddAndSignalNewRedfishService (
>
>
>      InitInformationData (
>
>        &DiscoveredInstance->Information,
>
> +      CheckIsIpVersion6 (NetworkInterface),
>
>        RedfishVersion,
>
>        RedfishLocation,
>
>        Uuid,
>
> --
> 2.32.0 (Apple Git-132)



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#112897): https://edk2.groups.io/g/devel/message/112897
Mute This Topic: https://groups.io/mt/103354135/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-