Change files to use standard unix file endings

CRLF line endings are non-standard for this project. Change them to use
the standard unix LF ending.

Tested: `git show -w` shows no difference

Change-Id: I353adcd2054c48a040b4e3a09bc46913cb6422fa
Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
diff --git a/src/srvcfg_manager.cpp b/src/srvcfg_manager.cpp
index 2d346c2..038d11a 100644
--- a/src/srvcfg_manager.cpp
+++ b/src/srvcfg_manager.cpp
@@ -1,505 +1,505 @@
-/*

-// Copyright (c) 2018 Intel Corporation

-//

-// Licensed under the Apache License, Version 2.0 (the "License");

-// you may not use this file except in compliance with the License.

-// You may obtain a copy of the License at

-//

-//      http://www.apache.org/licenses/LICENSE-2.0

-//

-// Unless required by applicable law or agreed to in writing, software

-// distributed under the License is distributed on an "AS IS" BASIS,

-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-// See the License for the specific language governing permissions and

-// limitations under the License.

-*/

-#include "srvcfg_manager.hpp"

-

-#include <boost/asio/spawn.hpp>

-

-#include <fstream>

-#include <regex>

-

-extern std::unique_ptr<boost::asio::steady_timer> timer;

-extern std::map<std::string, std::shared_ptr<phosphor::service::ServiceConfig>>

-    srvMgrObjects;

-static bool updateInProgress = false;

-

-namespace phosphor

-{

-namespace service

-{

-

-static constexpr const char* overrideConfFileName = "override.conf";

-static constexpr const size_t restartTimeout = 15; // seconds

-

-static constexpr const char* systemd1UnitBasePath =

-    "/org/freedesktop/systemd1/unit/";

-static constexpr const char* systemdOverrideUnitBasePath =

-    "/etc/systemd/system/";

-

-void ServiceConfig::updateSocketProperties(

-    const boost::container::flat_map<std::string, VariantType>& propertyMap)

-{

-    auto listenIt = propertyMap.find("Listen");

-    if (listenIt != propertyMap.end())

-    {

-        auto listenVal =

-            std::get<std::vector<std::tuple<std::string, std::string>>>(

-                listenIt->second);

-        if (listenVal.size())

-        {

-            protocol = std::get<0>(listenVal[0]);

-            std::string port = std::get<1>(listenVal[0]);

-            auto tmp = std::stoul(port.substr(port.find_last_of(":") + 1),

-                                  nullptr, 10);

-            if (tmp > std::numeric_limits<uint16_t>::max())

-            {

-                throw std::out_of_range("Out of range");

-            }

-            portNum = tmp;

-            if (sockAttrIface && sockAttrIface->is_initialized())

-            {

-                internalSet = true;

-                sockAttrIface->set_property(sockAttrPropPort, portNum);

-                internalSet = false;

-            }

-        }

-    }

-}

-

-void ServiceConfig::updateServiceProperties(

-    const boost::container::flat_map<std::string, VariantType>& propertyMap)

-{

-    auto stateIt = propertyMap.find("UnitFileState");

-    if (stateIt != propertyMap.end())

-    {

-        stateValue = std::get<std::string>(stateIt->second);

-        unitEnabledState = unitMaskedState = false;

-        if (stateValue == stateMasked)

-        {

-            unitMaskedState = true;

-        }

-        else if (stateValue == stateEnabled)

-        {

-            unitEnabledState = true;

-        }

-        if (srvCfgIface && srvCfgIface->is_initialized())

-        {

-            internalSet = true;

-            srvCfgIface->set_property(srvCfgPropMasked, unitMaskedState);

-            srvCfgIface->set_property(srvCfgPropEnabled, unitEnabledState);

-            internalSet = false;

-        }

-    }

-    auto subStateIt = propertyMap.find("SubState");

-    if (subStateIt != propertyMap.end())

-    {

-        subStateValue = std::get<std::string>(subStateIt->second);

-        if (subStateValue == subStateRunning)

-        {

-            unitRunningState = true;

-        }

-        if (srvCfgIface && srvCfgIface->is_initialized())

-        {

-            internalSet = true;

-            srvCfgIface->set_property(srvCfgPropRunning, unitRunningState);

-            internalSet = false;

-        }

-    }

-}

-

-void ServiceConfig::queryAndUpdateProperties()

-{

-    conn->async_method_call(

-        [this](boost::system::error_code ec,

-               const boost::container::flat_map<std::string, VariantType>&

-                   propertyMap) {

-            if (ec)

-            {

-                phosphor::logging::log<phosphor::logging::level::ERR>(

-                    "async_method_call error: Failed to service unit "

-                    "properties");

-                return;

-            }

-            try

-            {

-                updateServiceProperties(propertyMap);

-                if (!socketObjectPath.empty())

-                {

-                    conn->async_method_call(

-                        [this](boost::system::error_code ec,

-                               const boost::container::flat_map<

-                                   std::string, VariantType>& propertyMap) {

-                            if (ec)

-                            {

-                                phosphor::logging::log<

-                                    phosphor::logging::level::ERR>(

-                                    "async_method_call error: Failed to get "

-                                    "all property");

-                                return;

-                            }

-                            try

-                            {

-                                updateSocketProperties(propertyMap);

-                                if (!srvCfgIface)

-                                {

-                                    registerProperties();

-                                }

-                            }

-                            catch (const std::exception& e)

-                            {

-                                phosphor::logging::log<

-                                    phosphor::logging::level::ERR>(

-                                    "Exception in getting socket properties",

-                                    phosphor::logging::entry("WHAT=%s",

-                                                             e.what()));

-                                return;

-                            }

-                        },

-                        sysdService, socketObjectPath, dBusPropIntf,

-                        dBusGetAllMethod, sysdSocketIntf);

-                }

-                else if (!srvCfgIface)

-                {

-                    registerProperties();

-                }

-            }

-            catch (const std::exception& e)

-            {

-                phosphor::logging::log<phosphor::logging::level::ERR>(

-                    "Exception in getting socket properties",

-                    phosphor::logging::entry("WHAT=%s", e.what()));

-                return;

-            }

-        },

-        sysdService, serviceObjectPath, dBusPropIntf, dBusGetAllMethod,

-        sysdUnitIntf);

-    return;

-}

-

-void ServiceConfig::createSocketOverrideConf()

-{

-    if (!socketObjectPath.empty())

-    {

-        std::string socketUnitName(instantiatedUnitName + ".socket");

-        /// Check override socket directory exist, if not create it.

-        std::filesystem::path ovrUnitFileDir(systemdOverrideUnitBasePath);

-        ovrUnitFileDir += socketUnitName;

-        ovrUnitFileDir += ".d";

-        if (!std::filesystem::exists(ovrUnitFileDir))

-        {

-            if (!std::filesystem::create_directories(ovrUnitFileDir))

-            {

-                phosphor::logging::log<phosphor::logging::level::ERR>(

-                    "Unable to create the directory.",

-                    phosphor::logging::entry("DIR=%s", ovrUnitFileDir.c_str()));

-                phosphor::logging::elog<sdbusplus::xyz::openbmc_project::

-                                            Common::Error::InternalFailure>();

-            }

-        }

-        overrideConfDir = std::string(ovrUnitFileDir);

-    }

-}

-

-ServiceConfig::ServiceConfig(

-    sdbusplus::asio::object_server& srv_,

-    std::shared_ptr<sdbusplus::asio::connection>& conn_,

-    const std::string& objPath_, const std::string& baseUnitName_,

-    const std::string& instanceName_, const std::string& serviceObjPath_,

-    const std::string& socketObjPath_) :

-    conn(conn_),

-    server(srv_), objPath(objPath_), baseUnitName(baseUnitName_),

-    instanceName(instanceName_), serviceObjectPath(serviceObjPath_),

-    socketObjectPath(socketObjPath_)

-{

-    instantiatedUnitName = baseUnitName + addInstanceName(instanceName, "@");

-    updatedFlag = 0;

-    queryAndUpdateProperties();

-    return;

-}

-

-std::string ServiceConfig::getSocketUnitName()

-{

-    return instantiatedUnitName + ".socket";

-}

-

-std::string ServiceConfig::getServiceUnitName()

-{

-    return instantiatedUnitName + ".service";

-}

-

-bool ServiceConfig::isMaskedOut()

-{

-    // return true  if state is masked & no request to update the maskedState

-    return (

-        stateValue == "masked" &&

-        !(updatedFlag & (1 << static_cast<uint8_t>(UpdatedProp::maskedState))));

-}

-

-void ServiceConfig::stopAndApplyUnitConfig(boost::asio::yield_context yield)

-{

-    if (!updatedFlag || isMaskedOut())

-    {

-        // No updates / masked - Just return.

-        return;

-    }

-    phosphor::logging::log<phosphor::logging::level::INFO>(

-        "Applying new settings.",

-        phosphor::logging::entry("OBJPATH=%s", objPath.c_str()));

-    if (subStateValue == "running")

-    {

-        if (!socketObjectPath.empty())

-        {

-            systemdUnitAction(conn, yield, getSocketUnitName(), sysdStopUnit);

-        }

-        systemdUnitAction(conn, yield, getServiceUnitName(), sysdStopUnit);

-    }

-

-    if (updatedFlag & (1 << static_cast<uint8_t>(UpdatedProp::port)))

-    {

-        createSocketOverrideConf();

-        // Create override config file and write data.

-        std::string ovrCfgFile{overrideConfDir + "/" + overrideConfFileName};

-        std::string tmpFile{ovrCfgFile + "_tmp"};

-        std::ofstream cfgFile(tmpFile, std::ios::out);

-        if (!cfgFile.good())

-        {

-            phosphor::logging::log<phosphor::logging::level::ERR>(

-                "Failed to open override.conf_tmp file");

-            phosphor::logging::elog<sdbusplus::xyz::openbmc_project::Common::

-                                        Error::InternalFailure>();

-        }

-

-        // Write the socket header

-        cfgFile << "[Socket]\n";

-        // Listen

-        cfgFile << "Listen" << protocol << "="

-                << "\n";

-        cfgFile << "Listen" << protocol << "=" << portNum << "\n";

-        cfgFile.close();

-

-        if (std::rename(tmpFile.c_str(), ovrCfgFile.c_str()) != 0)

-        {

-            phosphor::logging::log<phosphor::logging::level::ERR>(

-                "Failed to rename tmp file as override.conf");

-            std::remove(tmpFile.c_str());

-            phosphor::logging::elog<sdbusplus::xyz::openbmc_project::Common::

-                                        Error::InternalFailure>();

-        }

-    }

-

-    if (updatedFlag & ((1 << static_cast<uint8_t>(UpdatedProp::maskedState)) |

-                       (1 << static_cast<uint8_t>(UpdatedProp::enabledState))))

-    {

-        std::vector<std::string> unitFiles;

-        if (socketObjectPath.empty())

-        {

-            unitFiles = {getServiceUnitName()};

-        }

-        else

-        {

-            unitFiles = {getSocketUnitName(), getServiceUnitName()};

-        }

-        systemdUnitFilesStateChange(conn, yield, unitFiles, stateValue,

-                                    unitMaskedState, unitEnabledState);

-    }

-    return;

-}

-void ServiceConfig::restartUnitConfig(boost::asio::yield_context yield)

-{

-    if (!updatedFlag || isMaskedOut())

-    {

-        // No updates. Just return.

-        return;

-    }

-

-    if (unitRunningState)

-    {

-        if (!socketObjectPath.empty())

-        {

-            systemdUnitAction(conn, yield, getSocketUnitName(),

-                              sysdRestartUnit);

-        }

-        systemdUnitAction(conn, yield, getServiceUnitName(), sysdRestartUnit);

-    }

-

-    // Reset the flag

-    updatedFlag = 0;

-

-    phosphor::logging::log<phosphor::logging::level::INFO>(

-        "Applied new settings",

-        phosphor::logging::entry("OBJPATH=%s", objPath.c_str()));

-

-    queryAndUpdateProperties();

-    return;

-}

-

-void ServiceConfig::startServiceRestartTimer()

-{

-    timer->expires_after(std::chrono::seconds(restartTimeout));

-    timer->async_wait([this](const boost::system::error_code& ec) {

-        if (ec == boost::asio::error::operation_aborted)

-        {

-            // Timer reset.

-            return;

-        }

-        else if (ec)

-        {

-            phosphor::logging::log<phosphor::logging::level::ERR>(

-                "async wait error.");

-            return;

-        }

-        updateInProgress = true;

-        boost::asio::spawn(conn->get_io_context(),

-                           [this](boost::asio::yield_context yield) {

-                               // Stop and apply configuration for all objects

-                               for (auto& srvMgrObj : srvMgrObjects)

-                               {

-                                   auto& srvObj = srvMgrObj.second;

-                                   if (srvObj->updatedFlag)

-                                   {

-                                       srvObj->stopAndApplyUnitConfig(yield);

-                                   }

-                               }

-                               // Do system reload

-                               systemdDaemonReload(conn, yield);

-                               // restart unit config.

-                               for (auto& srvMgrObj : srvMgrObjects)

-                               {

-                                   auto& srvObj = srvMgrObj.second;

-                                   if (srvObj->updatedFlag)

-                                   {

-                                       srvObj->restartUnitConfig(yield);

-                                   }

-                               }

-                               updateInProgress = false;

-                           });

-    });

-}

-

-void ServiceConfig::registerProperties()

-{

-    srvCfgIface = server.add_interface(objPath, serviceConfigIntfName);

-

-    if (!socketObjectPath.empty())

-    {

-        sockAttrIface = server.add_interface(objPath, sockAttrIntfName);

-        sockAttrIface->register_property(

-            sockAttrPropPort, portNum,

-            [this](const uint16_t& req, uint16_t& res) {

-                if (!internalSet)

-                {

-                    if (req == res)

-                    {

-                        return 1;

-                    }

-                    if (updateInProgress)

-                    {

-                        return 0;

-                    }

-                    portNum = req;

-                    updatedFlag |=

-                        (1 << static_cast<uint8_t>(UpdatedProp::port));

-                    startServiceRestartTimer();

-                }

-                res = req;

-                return 1;

-            });

-    }

-

-    srvCfgIface->register_property(

-        srvCfgPropMasked, unitMaskedState, [this](const bool& req, bool& res) {

-            if (!internalSet)

-            {

-                if (req == res)

-                {

-                    return 1;

-                }

-                if (updateInProgress)

-                {

-                    return 0;

-                }

-                unitMaskedState = req;

-                unitEnabledState = !unitMaskedState;

-                unitRunningState = !unitMaskedState;

-                updatedFlag |=

-                    (1 << static_cast<uint8_t>(UpdatedProp::maskedState)) |

-                    (1 << static_cast<uint8_t>(UpdatedProp::enabledState)) |

-                    (1 << static_cast<uint8_t>(UpdatedProp::runningState));

-                internalSet = true;

-                srvCfgIface->set_property(srvCfgPropEnabled, unitEnabledState);

-                srvCfgIface->set_property(srvCfgPropRunning, unitRunningState);

-                internalSet = false;

-                startServiceRestartTimer();

-            }

-            res = req;

-            return 1;

-        });

-

-    srvCfgIface->register_property(

-        srvCfgPropEnabled, unitEnabledState,

-        [this](const bool& req, bool& res) {

-            if (!internalSet)

-            {

-                if (req == res)

-                {

-                    return 1;

-                }

-                if (updateInProgress)

-                {

-                    return 0;

-                }

-                if (unitMaskedState)

-                { // block updating if masked

-                    phosphor::logging::log<phosphor::logging::level::ERR>(

-                        "Invalid value specified");

-                    return -EINVAL;

-                }

-                unitEnabledState = req;

-                updatedFlag |=

-                    (1 << static_cast<uint8_t>(UpdatedProp::enabledState));

-                startServiceRestartTimer();

-            }

-            res = req;

-            return 1;

-        });

-

-    srvCfgIface->register_property(

-        srvCfgPropRunning, unitRunningState,

-        [this](const bool& req, bool& res) {

-            if (!internalSet)

-            {

-                if (req == res)

-                {

-                    return 1;

-                }

-                if (updateInProgress)

-                {

-                    return 0;

-                }

-                if (unitMaskedState)

-                { // block updating if masked

-                    phosphor::logging::log<phosphor::logging::level::ERR>(

-                        "Invalid value specified");

-                    return -EINVAL;

-                }

-                unitRunningState = req;

-                updatedFlag |=

-                    (1 << static_cast<uint8_t>(UpdatedProp::runningState));

-                startServiceRestartTimer();

-            }

-            res = req;

-            return 1;

-        });

-

-    srvCfgIface->initialize();

-    if (!socketObjectPath.empty())

-    {

-        sockAttrIface->initialize();

-    }

-    return;

-}

-

-} // namespace service

-} // namespace phosphor

+/*
+// Copyright (c) 2018 Intel Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+*/
+#include "srvcfg_manager.hpp"
+
+#include <boost/asio/spawn.hpp>
+
+#include <fstream>
+#include <regex>
+
+extern std::unique_ptr<boost::asio::steady_timer> timer;
+extern std::map<std::string, std::shared_ptr<phosphor::service::ServiceConfig>>
+    srvMgrObjects;
+static bool updateInProgress = false;
+
+namespace phosphor
+{
+namespace service
+{
+
+static constexpr const char* overrideConfFileName = "override.conf";
+static constexpr const size_t restartTimeout = 15; // seconds
+
+static constexpr const char* systemd1UnitBasePath =
+    "/org/freedesktop/systemd1/unit/";
+static constexpr const char* systemdOverrideUnitBasePath =
+    "/etc/systemd/system/";
+
+void ServiceConfig::updateSocketProperties(
+    const boost::container::flat_map<std::string, VariantType>& propertyMap)
+{
+    auto listenIt = propertyMap.find("Listen");
+    if (listenIt != propertyMap.end())
+    {
+        auto listenVal =
+            std::get<std::vector<std::tuple<std::string, std::string>>>(
+                listenIt->second);
+        if (listenVal.size())
+        {
+            protocol = std::get<0>(listenVal[0]);
+            std::string port = std::get<1>(listenVal[0]);
+            auto tmp = std::stoul(port.substr(port.find_last_of(":") + 1),
+                                  nullptr, 10);
+            if (tmp > std::numeric_limits<uint16_t>::max())
+            {
+                throw std::out_of_range("Out of range");
+            }
+            portNum = tmp;
+            if (sockAttrIface && sockAttrIface->is_initialized())
+            {
+                internalSet = true;
+                sockAttrIface->set_property(sockAttrPropPort, portNum);
+                internalSet = false;
+            }
+        }
+    }
+}
+
+void ServiceConfig::updateServiceProperties(
+    const boost::container::flat_map<std::string, VariantType>& propertyMap)
+{
+    auto stateIt = propertyMap.find("UnitFileState");
+    if (stateIt != propertyMap.end())
+    {
+        stateValue = std::get<std::string>(stateIt->second);
+        unitEnabledState = unitMaskedState = false;
+        if (stateValue == stateMasked)
+        {
+            unitMaskedState = true;
+        }
+        else if (stateValue == stateEnabled)
+        {
+            unitEnabledState = true;
+        }
+        if (srvCfgIface && srvCfgIface->is_initialized())
+        {
+            internalSet = true;
+            srvCfgIface->set_property(srvCfgPropMasked, unitMaskedState);
+            srvCfgIface->set_property(srvCfgPropEnabled, unitEnabledState);
+            internalSet = false;
+        }
+    }
+    auto subStateIt = propertyMap.find("SubState");
+    if (subStateIt != propertyMap.end())
+    {
+        subStateValue = std::get<std::string>(subStateIt->second);
+        if (subStateValue == subStateRunning)
+        {
+            unitRunningState = true;
+        }
+        if (srvCfgIface && srvCfgIface->is_initialized())
+        {
+            internalSet = true;
+            srvCfgIface->set_property(srvCfgPropRunning, unitRunningState);
+            internalSet = false;
+        }
+    }
+}
+
+void ServiceConfig::queryAndUpdateProperties()
+{
+    conn->async_method_call(
+        [this](boost::system::error_code ec,
+               const boost::container::flat_map<std::string, VariantType>&
+                   propertyMap) {
+            if (ec)
+            {
+                phosphor::logging::log<phosphor::logging::level::ERR>(
+                    "async_method_call error: Failed to service unit "
+                    "properties");
+                return;
+            }
+            try
+            {
+                updateServiceProperties(propertyMap);
+                if (!socketObjectPath.empty())
+                {
+                    conn->async_method_call(
+                        [this](boost::system::error_code ec,
+                               const boost::container::flat_map<
+                                   std::string, VariantType>& propertyMap) {
+                            if (ec)
+                            {
+                                phosphor::logging::log<
+                                    phosphor::logging::level::ERR>(
+                                    "async_method_call error: Failed to get "
+                                    "all property");
+                                return;
+                            }
+                            try
+                            {
+                                updateSocketProperties(propertyMap);
+                                if (!srvCfgIface)
+                                {
+                                    registerProperties();
+                                }
+                            }
+                            catch (const std::exception& e)
+                            {
+                                phosphor::logging::log<
+                                    phosphor::logging::level::ERR>(
+                                    "Exception in getting socket properties",
+                                    phosphor::logging::entry("WHAT=%s",
+                                                             e.what()));
+                                return;
+                            }
+                        },
+                        sysdService, socketObjectPath, dBusPropIntf,
+                        dBusGetAllMethod, sysdSocketIntf);
+                }
+                else if (!srvCfgIface)
+                {
+                    registerProperties();
+                }
+            }
+            catch (const std::exception& e)
+            {
+                phosphor::logging::log<phosphor::logging::level::ERR>(
+                    "Exception in getting socket properties",
+                    phosphor::logging::entry("WHAT=%s", e.what()));
+                return;
+            }
+        },
+        sysdService, serviceObjectPath, dBusPropIntf, dBusGetAllMethod,
+        sysdUnitIntf);
+    return;
+}
+
+void ServiceConfig::createSocketOverrideConf()
+{
+    if (!socketObjectPath.empty())
+    {
+        std::string socketUnitName(instantiatedUnitName + ".socket");
+        /// Check override socket directory exist, if not create it.
+        std::filesystem::path ovrUnitFileDir(systemdOverrideUnitBasePath);
+        ovrUnitFileDir += socketUnitName;
+        ovrUnitFileDir += ".d";
+        if (!std::filesystem::exists(ovrUnitFileDir))
+        {
+            if (!std::filesystem::create_directories(ovrUnitFileDir))
+            {
+                phosphor::logging::log<phosphor::logging::level::ERR>(
+                    "Unable to create the directory.",
+                    phosphor::logging::entry("DIR=%s", ovrUnitFileDir.c_str()));
+                phosphor::logging::elog<sdbusplus::xyz::openbmc_project::
+                                            Common::Error::InternalFailure>();
+            }
+        }
+        overrideConfDir = std::string(ovrUnitFileDir);
+    }
+}
+
+ServiceConfig::ServiceConfig(
+    sdbusplus::asio::object_server& srv_,
+    std::shared_ptr<sdbusplus::asio::connection>& conn_,
+    const std::string& objPath_, const std::string& baseUnitName_,
+    const std::string& instanceName_, const std::string& serviceObjPath_,
+    const std::string& socketObjPath_) :
+    conn(conn_),
+    server(srv_), objPath(objPath_), baseUnitName(baseUnitName_),
+    instanceName(instanceName_), serviceObjectPath(serviceObjPath_),
+    socketObjectPath(socketObjPath_)
+{
+    instantiatedUnitName = baseUnitName + addInstanceName(instanceName, "@");
+    updatedFlag = 0;
+    queryAndUpdateProperties();
+    return;
+}
+
+std::string ServiceConfig::getSocketUnitName()
+{
+    return instantiatedUnitName + ".socket";
+}
+
+std::string ServiceConfig::getServiceUnitName()
+{
+    return instantiatedUnitName + ".service";
+}
+
+bool ServiceConfig::isMaskedOut()
+{
+    // return true  if state is masked & no request to update the maskedState
+    return (
+        stateValue == "masked" &&
+        !(updatedFlag & (1 << static_cast<uint8_t>(UpdatedProp::maskedState))));
+}
+
+void ServiceConfig::stopAndApplyUnitConfig(boost::asio::yield_context yield)
+{
+    if (!updatedFlag || isMaskedOut())
+    {
+        // No updates / masked - Just return.
+        return;
+    }
+    phosphor::logging::log<phosphor::logging::level::INFO>(
+        "Applying new settings.",
+        phosphor::logging::entry("OBJPATH=%s", objPath.c_str()));
+    if (subStateValue == "running")
+    {
+        if (!socketObjectPath.empty())
+        {
+            systemdUnitAction(conn, yield, getSocketUnitName(), sysdStopUnit);
+        }
+        systemdUnitAction(conn, yield, getServiceUnitName(), sysdStopUnit);
+    }
+
+    if (updatedFlag & (1 << static_cast<uint8_t>(UpdatedProp::port)))
+    {
+        createSocketOverrideConf();
+        // Create override config file and write data.
+        std::string ovrCfgFile{overrideConfDir + "/" + overrideConfFileName};
+        std::string tmpFile{ovrCfgFile + "_tmp"};
+        std::ofstream cfgFile(tmpFile, std::ios::out);
+        if (!cfgFile.good())
+        {
+            phosphor::logging::log<phosphor::logging::level::ERR>(
+                "Failed to open override.conf_tmp file");
+            phosphor::logging::elog<sdbusplus::xyz::openbmc_project::Common::
+                                        Error::InternalFailure>();
+        }
+
+        // Write the socket header
+        cfgFile << "[Socket]\n";
+        // Listen
+        cfgFile << "Listen" << protocol << "="
+                << "\n";
+        cfgFile << "Listen" << protocol << "=" << portNum << "\n";
+        cfgFile.close();
+
+        if (std::rename(tmpFile.c_str(), ovrCfgFile.c_str()) != 0)
+        {
+            phosphor::logging::log<phosphor::logging::level::ERR>(
+                "Failed to rename tmp file as override.conf");
+            std::remove(tmpFile.c_str());
+            phosphor::logging::elog<sdbusplus::xyz::openbmc_project::Common::
+                                        Error::InternalFailure>();
+        }
+    }
+
+    if (updatedFlag & ((1 << static_cast<uint8_t>(UpdatedProp::maskedState)) |
+                       (1 << static_cast<uint8_t>(UpdatedProp::enabledState))))
+    {
+        std::vector<std::string> unitFiles;
+        if (socketObjectPath.empty())
+        {
+            unitFiles = {getServiceUnitName()};
+        }
+        else
+        {
+            unitFiles = {getSocketUnitName(), getServiceUnitName()};
+        }
+        systemdUnitFilesStateChange(conn, yield, unitFiles, stateValue,
+                                    unitMaskedState, unitEnabledState);
+    }
+    return;
+}
+void ServiceConfig::restartUnitConfig(boost::asio::yield_context yield)
+{
+    if (!updatedFlag || isMaskedOut())
+    {
+        // No updates. Just return.
+        return;
+    }
+
+    if (unitRunningState)
+    {
+        if (!socketObjectPath.empty())
+        {
+            systemdUnitAction(conn, yield, getSocketUnitName(),
+                              sysdRestartUnit);
+        }
+        systemdUnitAction(conn, yield, getServiceUnitName(), sysdRestartUnit);
+    }
+
+    // Reset the flag
+    updatedFlag = 0;
+
+    phosphor::logging::log<phosphor::logging::level::INFO>(
+        "Applied new settings",
+        phosphor::logging::entry("OBJPATH=%s", objPath.c_str()));
+
+    queryAndUpdateProperties();
+    return;
+}
+
+void ServiceConfig::startServiceRestartTimer()
+{
+    timer->expires_after(std::chrono::seconds(restartTimeout));
+    timer->async_wait([this](const boost::system::error_code& ec) {
+        if (ec == boost::asio::error::operation_aborted)
+        {
+            // Timer reset.
+            return;
+        }
+        else if (ec)
+        {
+            phosphor::logging::log<phosphor::logging::level::ERR>(
+                "async wait error.");
+            return;
+        }
+        updateInProgress = true;
+        boost::asio::spawn(conn->get_io_context(),
+                           [this](boost::asio::yield_context yield) {
+                               // Stop and apply configuration for all objects
+                               for (auto& srvMgrObj : srvMgrObjects)
+                               {
+                                   auto& srvObj = srvMgrObj.second;
+                                   if (srvObj->updatedFlag)
+                                   {
+                                       srvObj->stopAndApplyUnitConfig(yield);
+                                   }
+                               }
+                               // Do system reload
+                               systemdDaemonReload(conn, yield);
+                               // restart unit config.
+                               for (auto& srvMgrObj : srvMgrObjects)
+                               {
+                                   auto& srvObj = srvMgrObj.second;
+                                   if (srvObj->updatedFlag)
+                                   {
+                                       srvObj->restartUnitConfig(yield);
+                                   }
+                               }
+                               updateInProgress = false;
+                           });
+    });
+}
+
+void ServiceConfig::registerProperties()
+{
+    srvCfgIface = server.add_interface(objPath, serviceConfigIntfName);
+
+    if (!socketObjectPath.empty())
+    {
+        sockAttrIface = server.add_interface(objPath, sockAttrIntfName);
+        sockAttrIface->register_property(
+            sockAttrPropPort, portNum,
+            [this](const uint16_t& req, uint16_t& res) {
+                if (!internalSet)
+                {
+                    if (req == res)
+                    {
+                        return 1;
+                    }
+                    if (updateInProgress)
+                    {
+                        return 0;
+                    }
+                    portNum = req;
+                    updatedFlag |=
+                        (1 << static_cast<uint8_t>(UpdatedProp::port));
+                    startServiceRestartTimer();
+                }
+                res = req;
+                return 1;
+            });
+    }
+
+    srvCfgIface->register_property(
+        srvCfgPropMasked, unitMaskedState, [this](const bool& req, bool& res) {
+            if (!internalSet)
+            {
+                if (req == res)
+                {
+                    return 1;
+                }
+                if (updateInProgress)
+                {
+                    return 0;
+                }
+                unitMaskedState = req;
+                unitEnabledState = !unitMaskedState;
+                unitRunningState = !unitMaskedState;
+                updatedFlag |=
+                    (1 << static_cast<uint8_t>(UpdatedProp::maskedState)) |
+                    (1 << static_cast<uint8_t>(UpdatedProp::enabledState)) |
+                    (1 << static_cast<uint8_t>(UpdatedProp::runningState));
+                internalSet = true;
+                srvCfgIface->set_property(srvCfgPropEnabled, unitEnabledState);
+                srvCfgIface->set_property(srvCfgPropRunning, unitRunningState);
+                internalSet = false;
+                startServiceRestartTimer();
+            }
+            res = req;
+            return 1;
+        });
+
+    srvCfgIface->register_property(
+        srvCfgPropEnabled, unitEnabledState,
+        [this](const bool& req, bool& res) {
+            if (!internalSet)
+            {
+                if (req == res)
+                {
+                    return 1;
+                }
+                if (updateInProgress)
+                {
+                    return 0;
+                }
+                if (unitMaskedState)
+                { // block updating if masked
+                    phosphor::logging::log<phosphor::logging::level::ERR>(
+                        "Invalid value specified");
+                    return -EINVAL;
+                }
+                unitEnabledState = req;
+                updatedFlag |=
+                    (1 << static_cast<uint8_t>(UpdatedProp::enabledState));
+                startServiceRestartTimer();
+            }
+            res = req;
+            return 1;
+        });
+
+    srvCfgIface->register_property(
+        srvCfgPropRunning, unitRunningState,
+        [this](const bool& req, bool& res) {
+            if (!internalSet)
+            {
+                if (req == res)
+                {
+                    return 1;
+                }
+                if (updateInProgress)
+                {
+                    return 0;
+                }
+                if (unitMaskedState)
+                { // block updating if masked
+                    phosphor::logging::log<phosphor::logging::level::ERR>(
+                        "Invalid value specified");
+                    return -EINVAL;
+                }
+                unitRunningState = req;
+                updatedFlag |=
+                    (1 << static_cast<uint8_t>(UpdatedProp::runningState));
+                startServiceRestartTimer();
+            }
+            res = req;
+            return 1;
+        });
+
+    srvCfgIface->initialize();
+    if (!socketObjectPath.empty())
+    {
+        sockAttrIface->initialize();
+    }
+    return;
+}
+
+} // namespace service
+} // namespace phosphor