aboutsummaryrefslogtreecommitdiffstats
path: root/roms/edk2/OvmfPkg/Library/PxeBcPcdProducerLib/PxeBcPcd.c
diff options
context:
space:
mode:
Diffstat (limited to 'roms/edk2/OvmfPkg/Library/PxeBcPcdProducerLib/PxeBcPcd.c')
-rw-r--r--roms/edk2/OvmfPkg/Library/PxeBcPcdProducerLib/PxeBcPcd.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/roms/edk2/OvmfPkg/Library/PxeBcPcdProducerLib/PxeBcPcd.c b/roms/edk2/OvmfPkg/Library/PxeBcPcdProducerLib/PxeBcPcd.c
new file mode 100644
index 000000000..7ce236326
--- /dev/null
+++ b/roms/edk2/OvmfPkg/Library/PxeBcPcdProducerLib/PxeBcPcd.c
@@ -0,0 +1,39 @@
+/** @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;
+}