/** @file
  Configure some PCDs dynamically for
  "NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf", from QEMU's fw_cfg.

  Copyright (C) 2020, Red Hat, Inc.

  SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#include <Library/PcdLib.h>
#include <Library/QemuFwCfgSimpleParserLib.h>

RETURN_STATUS
EFIAPI
SetPxeBcPcds (
  VOID
  )
{
  BOOLEAN        FwCfgBool;
  RETURN_STATUS  PcdStatus;

  if (!RETURN_ERROR (
         QemuFwCfgParseBool (
           "opt/org.tianocore/IPv4PXESupport",
           &FwCfgBool
           )
         ))
  {
    PcdStatus = PcdSet8S (PcdIPv4PXESupport, FwCfgBool);
    if (RETURN_ERROR (PcdStatus)) {
      return PcdStatus;
    }
  }

  if (!RETURN_ERROR (
         QemuFwCfgParseBool (
           "opt/org.tianocore/IPv6PXESupport",
           &FwCfgBool
           )
         ))
  {
    PcdStatus = PcdSet8S (PcdIPv6PXESupport, FwCfgBool);
    if (RETURN_ERROR (PcdStatus)) {
      return PcdStatus;
    }
  }

  return RETURN_SUCCESS;
}
