ethernet_interface: Runtime detect uboot-env
We don't need a build time option as systems not using it don't include
uboot fw_setenv.
Change-Id: I922fb9ebb0309ab1a792892c28417794f5ed6ef0
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index 9cef02f..c965ddc 100644
--- a/src/ethernet_interface.cpp
+++ b/src/ethernet_interface.cpp
@@ -966,17 +966,18 @@
manager.get().reloadConfigs();
}
-#ifdef HAVE_UBOOT_ENV
- // Ensure that the valid address is stored in the u-boot-env
- auto envVar = interfaceToUbootEthAddr(interface);
- if (envVar)
+ std::error_code ec;
+ const auto fw_setenv = std::filesystem::path("/sbin/fw_setenv");
+ if (std::filesystem::exists(fw_setenv, ec))
{
- // Trimming MAC addresses that are out of range. eg: AA:FF:FF:FF:FF:100;
- // and those having more than 6 bytes. eg: AA:AA:AA:AA:AA:AA:BB
- execute("/sbin/fw_setenv", "fw_setenv", envVar->c_str(),
- validMAC.c_str());
+ // Ensure that the valid address is stored in the u-boot-env
+ auto envVar = interfaceToUbootEthAddr(interface);
+ if (envVar)
+ {
+ execute(fw_setenv.native(), "fw_setenv", envVar->c_str(),
+ validMAC.c_str());
+ }
}
-#endif // HAVE_UBOOT_ENV
return value;
#else