diff --git a/phosphor-ldap-config/ldap_config.cpp b/phosphor-ldap-config/ldap_config.cpp
index 5717ad5..e7fb645 100644
--- a/phosphor-ldap-config/ldap_config.cpp
+++ b/phosphor-ldap-config/ldap_config.cpp
@@ -50,18 +50,17 @@
 using Val = std::string;
 using ConfigInfo = std::map<Key, Val>;
 
-Config::Config(sdbusplus::bus_t& bus, const char* path, const char* filePath,
-               const char* caCertFile, const char* certFile, bool secureLDAP,
-               std::string ldapServerURI, std::string ldapBindDN,
-               std::string ldapBaseDN, std::string&& ldapBindDNPassword,
-               ConfigIface::SearchScope ldapSearchScope,
-               ConfigIface::Type ldapType, bool ldapServiceEnabled,
-               std::string userNameAttr, std::string groupNameAttr,
-               ConfigMgr& parent) :
-    Ifaces(bus, path, Ifaces::action::defer_emit),
-    secureLDAP(secureLDAP), ldapBindPassword(std::move(ldapBindDNPassword)),
-    tlsCacertFile(caCertFile), tlsCertFile(certFile), configFilePath(filePath),
-    objectPath(path), bus(bus), parent(parent),
+Config::Config(
+    sdbusplus::bus_t& bus, const char* path, const char* filePath,
+    const char* caCertFile, const char* certFile, bool secureLDAP,
+    std::string ldapServerURI, std::string ldapBindDN, std::string ldapBaseDN,
+    std::string&& ldapBindDNPassword, ConfigIface::SearchScope ldapSearchScope,
+    ConfigIface::Type ldapType, bool ldapServiceEnabled,
+    std::string userNameAttr, std::string groupNameAttr, ConfigMgr& parent) :
+    Ifaces(bus, path, Ifaces::action::defer_emit), secureLDAP(secureLDAP),
+    ldapBindPassword(std::move(ldapBindDNPassword)), tlsCacertFile(caCertFile),
+    tlsCertFile(certFile), configFilePath(filePath), objectPath(path), bus(bus),
+    parent(parent),
     certificateInstalledSignal(
         bus, sdbusplus::bus::match::rules::interfacesAdded(certRootPath),
         std::bind(std::mem_fn(&Config::certificateInstalled), this,
@@ -110,9 +109,9 @@
 Config::Config(sdbusplus::bus_t& bus, const char* path, const char* filePath,
                const char* caCertFile, const char* certFile,
                ConfigIface::Type ldapType, ConfigMgr& parent) :
-    Ifaces(bus, path, Ifaces::action::defer_emit),
-    secureLDAP(false), tlsCacertFile(caCertFile), tlsCertFile(certFile),
-    configFilePath(filePath), objectPath(path), bus(bus), parent(parent),
+    Ifaces(bus, path, Ifaces::action::defer_emit), secureLDAP(false),
+    tlsCacertFile(caCertFile), tlsCertFile(certFile), configFilePath(filePath),
+    objectPath(path), bus(bus), parent(parent),
     certificateInstalledSignal(
         bus, sdbusplus::bus::match::rules::interfacesAdded(certRootPath),
         std::bind(std::mem_fn(&Config::certificateInstalled), this,
diff --git a/phosphor-ldap-config/ldap_config_mgr.hpp b/phosphor-ldap-config/ldap_config_mgr.hpp
index 13211c8..3c969a7 100644
--- a/phosphor-ldap-config/ldap_config_mgr.hpp
+++ b/phosphor-ldap-config/ldap_config_mgr.hpp
@@ -17,10 +17,10 @@
 
 static constexpr auto defaultNslcdFile = "nslcd.conf.default";
 static constexpr auto nsSwitchFile = "nsswitch.conf";
-static auto openLDAPDbusObjectPath = std::string(LDAP_CONFIG_ROOT) +
-                                     "/openldap";
-static auto adDbusObjectPath = std::string(LDAP_CONFIG_ROOT) +
-                               "/active_directory";
+static auto openLDAPDbusObjectPath =
+    std::string(LDAP_CONFIG_ROOT) + "/openldap";
+static auto adDbusObjectPath =
+    std::string(LDAP_CONFIG_ROOT) + "/active_directory";
 
 using CreateIface = sdbusplus::server::object_t<
     sdbusplus::xyz::openbmc_project::User::Ldap::server::Create>;
@@ -72,13 +72,11 @@
      *             the username in the LDAP server.
      *  @returns the object path of the D-Bus object created.
      */
-    std::string createConfig(std::string ldapServerURI, std::string ldapBindDN,
-                             std::string ldapBaseDN,
-                             std::string ldapBindDNPassword,
-                             CreateIface::SearchScope ldapSearchScope,
-                             CreateIface::Type ldapType,
-                             std::string groupNameAttribute,
-                             std::string userNameAttribute) override;
+    std::string createConfig(
+        std::string ldapServerURI, std::string ldapBindDN,
+        std::string ldapBaseDN, std::string ldapBindDNPassword,
+        CreateIface::SearchScope ldapSearchScope, CreateIface::Type ldapType,
+        std::string groupNameAttribute, std::string userNameAttribute) override;
 
     /** @brief restarts given service
      *  @param[in] service - Service to be restarted.
diff --git a/phosphor-ldap-config/main.cpp b/phosphor-ldap-config/main.cpp
index be97abd..5386c0e 100644
--- a/phosphor-ldap-config/main.cpp
+++ b/phosphor-ldap-config/main.cpp
@@ -17,8 +17,8 @@
     std::filesystem::path configDir =
         std::filesystem::path(LDAP_CONFIG_FILE).parent_path();
 
-    if (!std::filesystem::exists(configDir /
-                                 phosphor::ldap::defaultNslcdFile) ||
+    if (!std::filesystem::exists(
+            configDir / phosphor::ldap::defaultNslcdFile) ||
         !std::filesystem::exists(configDir / phosphor::ldap::nsSwitchFile))
     {
         lg2::error("Failed to start phosphor-ldap-manager, configfile(s) are "
diff --git a/phosphor-ldap-config/utils.cpp b/phosphor-ldap-config/utils.cpp
index 4ad69d9..f6efdd9 100644
--- a/phosphor-ldap-config/utils.cpp
+++ b/phosphor-ldap-config/utils.cpp
@@ -57,8 +57,8 @@
 
     auto result = getaddrinfo(ludppPtr->lud_host, nullptr, &hints, &servinfo);
     auto cleanupFunc = [](addrinfo* servinfo) { freeaddrinfo(servinfo); };
-    std::unique_ptr<addrinfo, decltype(cleanupFunc)> servinfoPtr(servinfo,
-                                                                 cleanupFunc);
+    std::unique_ptr<addrinfo, decltype(cleanupFunc)> servinfoPtr(
+        servinfo, cleanupFunc);
 
     if (result)
     {
