diff --git a/src/dhcp_configuration.cpp b/src/dhcp_configuration.cpp
index 6684713..53d4e91 100644
--- a/src/dhcp_configuration.cpp
+++ b/src/dhcp_configuration.cpp
@@ -1,11 +1,8 @@
-#include "config.h"
-
 #include "dhcp_configuration.hpp"
 
+#include "config_parser.hpp"
 #include "network_manager.hpp"
 
-#include <fmt/format.h>
-
 #include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/log.hpp>
 #include <xyz/openbmc_project/Common/error.hpp>
@@ -20,6 +17,29 @@
 using namespace phosphor::network;
 using namespace phosphor::logging;
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
+
+Configuration::Configuration(sdbusplus::bus_t& bus, const std::string& objPath,
+                             Manager& parent) :
+    Iface(bus, objPath.c_str(), Iface::action::defer_emit),
+    bus(bus), manager(parent)
+{
+    config::Parser conf;
+    {
+        auto interfaceStrList = getInterfaces();
+        if (!interfaceStrList.empty())
+        {
+            conf.setFile(config::pathForIntfConf(manager.getConfDir(),
+                                                 *interfaceStrList.begin()));
+        }
+    }
+
+    ConfigIntf::dnsEnabled(getDHCPProp(conf, "UseDNS"));
+    ConfigIntf::ntpEnabled(getDHCPProp(conf, "UseNTP"));
+    ConfigIntf::hostNameEnabled(getDHCPProp(conf, "UseHostname"));
+    ConfigIntf::sendHostNameEnabled(getDHCPProp(conf, "SendHostname"));
+    emit_object_added();
+}
+
 bool Configuration::sendHostNameEnabled(bool value)
 {
     if (value == sendHostNameEnabled())
@@ -77,30 +97,6 @@
     return dns;
 }
 
-bool Configuration::getDHCPPropFromConf(const std::string& prop)
-{
-    auto interfaceStrList = getInterfaces();
-    // systemd default behaviour is all DHCP fields should be enabled by
-    // default.
-    config::Parser parser(config::pathForIntfConf(manager.getConfDir(),
-                                                  *interfaceStrList.begin()));
-
-    auto value = parser.map.getLastValueString("DHCP", prop);
-    if (value == nullptr)
-    {
-        auto msg = fmt::format("Missing config section DHCP[{}]", prop);
-        log<level::NOTICE>(msg.c_str(), entry("PROP=%s", prop.c_str()));
-        return true;
-    }
-    auto ret = config::parseBool(*value);
-    if (!ret.has_value())
-    {
-        auto msg =
-            fmt::format("Failed to parse section DHCP[{}]: `{}`", prop, *value);
-        log<level::NOTICE>(msg.c_str(), entry("PROP=%s", prop.c_str()));
-    }
-    return ret.value_or(true);
-}
 } // namespace dhcp
 } // namespace network
 } // namespace phosphor
diff --git a/src/dhcp_configuration.hpp b/src/dhcp_configuration.hpp
index f35701b..8174ec7 100644
--- a/src/dhcp_configuration.hpp
+++ b/src/dhcp_configuration.hpp
@@ -43,16 +43,7 @@
      *  @param[in] parent - Parent object.
      */
     Configuration(sdbusplus::bus_t& bus, const std::string& objPath,
-                  Manager& parent) :
-        Iface(bus, objPath.c_str(), Iface::action::defer_emit),
-        bus(bus), manager(parent)
-    {
-        ConfigIntf::dnsEnabled(getDHCPPropFromConf("UseDNS"));
-        ConfigIntf::ntpEnabled(getDHCPPropFromConf("UseNTP"));
-        ConfigIntf::hostNameEnabled(getDHCPPropFromConf("UseHostname"));
-        ConfigIntf::sendHostNameEnabled(getDHCPPropFromConf("SendHostname"));
-        emit_object_added();
-    }
+                  Manager& parent);
 
     /** @brief If true then DNS servers received from the DHCP server
      *         will be used and take precedence over any statically
@@ -84,11 +75,6 @@
      */
     bool sendHostNameEnabled(bool value) override;
 
-    /** @brief read the DHCP Prop value from the configuration file
-     *  @param[in] prop - DHCP Prop name.
-     */
-    bool getDHCPPropFromConf(const std::string& prop);
-
     /* @brief Network Manager needed the below function to know the
      *        value of the properties (ntpEnabled,dnsEnabled,hostnameEnabled
               sendHostNameEnabled).
diff --git a/src/util.cpp b/src/util.cpp
index 54028af..c5543f0 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -366,6 +366,48 @@
     return "eth" + std::to_string(idx) + "addr";
 }
 
+static std::optional<DHCPVal> systemdParseDHCP(std::string_view str)
+{
+    if (config::icaseeq(str, "ipv4"))
+    {
+        return DHCPVal{.v4 = true, .v6 = false};
+    }
+    if (config::icaseeq(str, "ipv6"))
+    {
+        return DHCPVal{.v4 = false, .v6 = true};
+    }
+    if (auto b = config::parseBool(str); b)
+    {
+        return DHCPVal{.v4 = *b, .v6 = *b};
+    }
+    return std::nullopt;
+}
+
+inline auto systemdParseLast(const config::Parser& config,
+                             std::string_view section, std::string_view key,
+                             auto&& fun)
+{
+    if (auto str = config.map.getLastValueString(section, key); str == nullptr)
+    {
+        auto err = fmt::format("Unable to get the value of {}[{}] from {}",
+                               section, key, config.getFilename().native());
+        log<level::NOTICE>(err.c_str(),
+                           entry("FILE=%s", config.getFilename().c_str()));
+    }
+    else if (auto val = fun(*str); !val)
+    {
+        auto err = fmt::format("Invalid value of {}[{}] from {}: {}", section,
+                               key, config.getFilename().native(), *str);
+        log<level::NOTICE>(err.c_str(), entry("VALUE=%s", str->c_str()),
+                           entry("FILE=%s", config.getFilename().c_str()));
+    }
+    else
+    {
+        return val;
+    }
+    return decltype(fun(std::string_view{}))(std::nullopt);
+}
+
 bool getIPv6AcceptRA(const config::Parser& config)
 {
 #ifdef ENABLE_IPV6_ACCEPT_RA
@@ -373,64 +415,21 @@
 #else
     constexpr bool def = false;
 #endif
-
-    auto value = config.map.getLastValueString("Network", "IPv6AcceptRA");
-    if (value == nullptr)
-    {
-        auto msg = fmt::format(
-            "Unable to get the value for Network[IPv6AcceptRA] from {}",
-            config.getFilename().native());
-        log<level::NOTICE>(msg.c_str(),
-                           entry("FILE=%s", config.getFilename().c_str()));
-        return def;
-    }
-    auto ret = config::parseBool(*value);
-    if (!ret.has_value())
-    {
-        auto msg = fmt::format(
-            "Failed to parse section Network[IPv6AcceptRA] from {}: `{}`",
-            config.getFilename().native(), *value);
-        log<level::NOTICE>(msg.c_str(),
-                           entry("FILE=%s", config.getFilename().c_str()),
-                           entry("VALUE=%s", value->c_str()));
-    }
-    return ret.value_or(def);
+    return systemdParseLast(config, "Network", "IPv6AcceptRA",
+                            config::parseBool)
+        .value_or(def);
 }
 
 DHCPVal getDHCPValue(const config::Parser& config)
 {
-    constexpr auto def = DHCPVal{.v4 = true, .v6 = true};
+    return systemdParseLast(config, "Network", "DHCP", systemdParseDHCP)
+        .value_or(DHCPVal{.v4 = true, .v6 = true});
+}
 
-    const auto value = config.map.getLastValueString("Network", "DHCP");
-    if (value == nullptr)
-    {
-        auto msg =
-            fmt::format("Unable to get the value for Network[DHCP] from {}",
-                        config.getFilename().native());
-        log<level::NOTICE>(msg.c_str(),
-                           entry("FILE=%s", config.getFilename().c_str()));
-        return def;
-    }
-    if (config::icaseeq(*value, "ipv4"))
-    {
-        return DHCPVal{.v4 = true, .v6 = false};
-    }
-    if (config::icaseeq(*value, "ipv6"))
-    {
-        return DHCPVal{.v4 = false, .v6 = true};
-    }
-    auto ret = config::parseBool(*value);
-    if (!ret.has_value())
-    {
-        auto str = fmt::format("Unable to parse Network[DHCP] from {}: `{}`",
-                               config.getFilename().native(), *value);
-        log<level::NOTICE>(str.c_str(),
-                           entry("FILE=%s", config.getFilename().c_str()),
-                           entry("VALUE=%s", value->c_str()));
-        return def;
-    }
-    return *ret ? DHCPVal{.v4 = true, .v6 = true}
-                : DHCPVal{.v4 = false, .v6 = false};
+bool getDHCPProp(const config::Parser& config, std::string_view key)
+{
+    return systemdParseLast(config, "DHCP", key, config::parseBool)
+        .value_or(true);
 }
 
 namespace mac_address
diff --git a/src/util.hpp b/src/util.hpp
index 055c684..cc7ab03 100644
--- a/src/util.hpp
+++ b/src/util.hpp
@@ -138,6 +138,12 @@
 };
 DHCPVal getDHCPValue(const config::Parser& config);
 
+/** @brief Read a boolean DHCP property from a conf file
+ *  @param[in] config - The parsed configuration.
+ *  @param[in] key - The property name.
+ */
+bool getDHCPProp(const config::Parser& config, std::string_view key);
+
 namespace internal
 {
 
