RedfishPkg/RedfishDiscoverDxe: fix netmask check issue

- Add NTOHL() for coverting IP address from EFI_IPv4_ADDRESS to
IP4_ADDR so that IP4_IS_VALID_NETMASK() return correct value.
- Add DumpIpv4Address() in RedfishDebugLib and print IP address
when invalid IP or subnet mask address is detected.

Signed-off-by: Nickle Wang <nicklew@nvidia.com>
Cc: Abner Chang <abner.chang@amd.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Cc: Nick Ramirez <nramirez@nvidia.com>
Reviewed-by: Igor Kulchytskyy  <igork@ami.com>
Reviewed-by: Abner Chang <abner.chang@amd.com>
This commit is contained in:
Nickle Wang
2023-07-24 21:03:04 +08:00
committed by mergify[bot]
parent dcf05f958e
commit 25a6745fe8
5 changed files with 53 additions and 4 deletions

View File

@@ -531,15 +531,17 @@ DiscoverRedfishHostInterface (
IP4_COPY_ADDRESS ((VOID *)&Instance->HostSubnetMask.v4, (VOID *)Data->HostIpMask);
if (EFI_IP4_EQUAL (&Instance->HostIpAddress.v4, &mZeroIp4Addr)) {
DEBUG ((DEBUG_ERROR, "%a: invalid host IP address: zero address\n", __func__));
DEBUG ((DEBUG_ERROR, "%a: invalid host IP address: ", __func__));
DumpIpv4Address (DEBUG_ERROR, &Instance->HostIpAddress.v4);
//
// Invalid IP address detected. Change address format to Unknown and use system default address.
//
Instance->HostAddrFormat = REDFISH_HOST_INTERFACE_HOST_IP_ADDRESS_FORMAT_UNKNOWN;
}
if (!IP4_IS_VALID_NETMASK (EFI_IP4 (Instance->HostSubnetMask.v4))) {
DEBUG ((DEBUG_ERROR, "%a: invalid subnet mask address\n", __func__));
if (!IP4_IS_VALID_NETMASK (NTOHL (EFI_IP4 (Instance->HostSubnetMask.v4)))) {
DEBUG ((DEBUG_ERROR, "%a: invalid subnet mask address: ", __func__));
DumpIpv4Address (DEBUG_ERROR, &Instance->HostSubnetMask.v4);
//
// Invalid subnet mast address detected. Change address format to Unknown and use system default address.
//
@@ -553,7 +555,8 @@ DiscoverRedfishHostInterface (
IP4_COPY_ADDRESS ((VOID *)&Instance->TargetIpAddress.v4, (VOID *)Data->RedfishServiceIpAddress);
if (EFI_IP4_EQUAL (&Instance->TargetIpAddress.v4, &mZeroIp4Addr)) {
DEBUG ((DEBUG_ERROR, "%a: invalid service IP address: zero address\n", __func__));
DEBUG ((DEBUG_ERROR, "%a: invalid service IP address: ", __func__));
DumpIpv4Address (DEBUG_ERROR, &Instance->TargetIpAddress.v4);
}
} else {
IP6_COPY_ADDRESS ((VOID *)&Instance->TargetIpAddress.v6, (VOID *)Data->RedfishServiceIpAddress);