public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Mike Maslenkin" <mike.maslenkin@gmail.com>
To: devel@edk2.groups.io
Cc: abner.chang@amd.com, nicklew@nvidia.com, igork@ami.com,
	Mike Maslenkin <mike.maslenkin@gmail.com>
Subject: [edk2-devel] [PATCH v2 14/14] RedfishPkg: RedfishDiscoverDxe: add [] brackets to URI for IPv6 addresses
Date: Fri, 15 Dec 2023 02:24:58 +0300	[thread overview]
Message-ID: <20231214232458.4636-15-mike.maslenkin@gmail.com> (raw)
In-Reply-To: <20231214232458.4636-1-mike.maslenkin@gmail.com>

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   | 21 ++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
index 9d1678c3429e..38eaf4f6decc 100644
--- a/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
+++ b/RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverDxe.c
@@ -715,6 +715,7 @@ DiscoverRedfishHostInterface (
   The function initalizes particular strings into EFI_REDFISH_DISCOVERED_INFORMATION structure
 
   @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.
@@ -729,6 +730,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,
@@ -738,7 +740,8 @@ InitInformationData (
   IN CONST CHAR8                         *ProductVer OPTIONAL
   )
 {
-  UINTN  AllocationSize;
+  UINTN        AllocationSize;
+  CONST CHAR8  *IpAddress;
 
   if (RedfishVersion != NULL) {
     Information->RedfishVersion = *RedfishVersion;
@@ -746,10 +749,21 @@ InitInformationData (
   }
 
   if (RedfishLocation != NULL) {
-    AllocationSize        = AsciiStrSize (RedfishLocation) * sizeof (CHAR16);
+    AllocationSize = AsciiStrSize (RedfishLocation) * sizeof (CHAR16);
+    IpAddress      = RedfishLocation;
+
+    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]", IpAddress);
+      } else {
+        AsciiStrToUnicodeStrS (RedfishLocation, Information->Location, AllocationSize);
+      }
+
       DEBUG ((DEBUG_MANAGEABILITY, "Redfish service location: %s.\n", Information->Location));
     } else {
       DEBUG ((
@@ -991,6 +1005,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 (#112563): https://edk2.groups.io/g/devel/message/112563
Mute This Topic: https://groups.io/mt/103181051/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  parent reply	other threads:[~2023-12-14 23:25 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-14 23:24 [edk2-devel] [PATCH v2 0/14] Redfish related fixes and improvements Mike Maslenkin
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 01/14] RedfishPkg: fix RedfishPlatformHostInterfaceLib library class name typo Mike Maslenkin
2023-12-18  2:32   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 02/14] RedfishPkg: fix RedfishPlatformCredentialLib " Mike Maslenkin
2023-12-18  2:33   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 03/14] RedfishPkg: get rid of unused definitions from RedfishCrtLib.h Mike Maslenkin
2023-12-18  2:38   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 04/14] RedfishPkg: RedfishPlatformConfigDxe: reduce memory allocations Mike Maslenkin
2023-12-18  2:44   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 05/14] RedfishPkg: RedfishDiscoverDxe: fix memory leak on error path Mike Maslenkin
2023-12-18  2:48   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 06/14] RedfishPkg: add Component Name protocols to RedfishConfigHandler driver Mike Maslenkin
2023-12-18  2:58   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 07/14] RedfishPkg: add proper initialization of IPMI request Mike Maslenkin
2023-12-18  3:27   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 08/14] EmulatorPkg: fix typo. PcdRedfishServie -> PcdRedfishService Mike Maslenkin
2023-12-18  3:30   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 09/14] EmulatorPkg: RedfishPlatformHostInterfaceLib: get rid of unused variable Mike Maslenkin
2023-12-18  3:29   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 10/14] RedfishDiscoverDxe: introduce InitInformationData helper function Mike Maslenkin
2023-12-18  4:25   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 11/14] RedfishDiscoverDxe: refine InitInformationData(), remove unnecessary casts Mike Maslenkin
2023-12-18  4:27   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 12/14] RedfishDiscoverDxe: refine InitInformationData() function Mike Maslenkin
2023-12-18  4:32   ` Chang, Abner via groups.io
2023-12-14 23:24 ` [edk2-devel] [PATCH v2 13/14] RedfishDiscoverDxe: handle memory allocation error conditions Mike Maslenkin
2023-12-18  4:47   ` Chang, Abner via groups.io
2023-12-19  2:12     ` Mike Maslenkin
2023-12-19  4:03       ` Chang, Abner via groups.io
2023-12-14 23:24 ` Mike Maslenkin [this message]
2023-12-18  4:58   ` [edk2-devel] [PATCH v2 14/14] RedfishPkg: RedfishDiscoverDxe: add [] brackets to URI for IPv6 addresses Chang, Abner via groups.io
2023-12-19  2:51     ` Mike Maslenkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231214232458.4636-15-mike.maslenkin@gmail.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox