diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 6b19704..5f4a89f 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -73,7 +73,7 @@
         lg2::error("AdministrativeState match parsing failed: {ERROR}", "ERROR",
                    e);
     }
-        })
+})
 {
     reload.get().setCallback([self = stdplus::PinnedRef(*this)]() {
         for (auto& hook : self.get().reloadPreHooks)
@@ -373,7 +373,7 @@
                 static_assert(std::is_same_v<stdplus::In6Addr, decltype(addr)>);
                 it->second.defgw6.emplace(addr);
             }
-            },
+        },
             addr);
         if (auto it = interfacesByIdx.find(ifidx); it != interfacesByIdx.end())
         {
@@ -391,7 +391,7 @@
                     it->second->EthernetInterfaceIntf::defaultGateway6(
                         stdplus::toStr(addr));
                 }
-                },
+            },
                 addr);
         }
     }
@@ -422,7 +422,7 @@
                     it->second.defgw6.reset();
                 }
             }
-            },
+        },
             addr);
         if (auto it = interfacesByIdx.find(ifidx); it != interfacesByIdx.end())
         {
@@ -446,7 +446,7 @@
                         it->second->EthernetInterfaceIntf::defaultGateway6("");
                     }
                 }
-                },
+            },
                 addr);
         }
     }
diff --git a/src/rtnetlink_server.cpp b/src/rtnetlink_server.cpp
index 4a211d5..1e3ac71 100644
--- a/src/rtnetlink_server.cpp
+++ b/src/rtnetlink_server.cpp
@@ -123,8 +123,8 @@
 Server::Server(sdeventplus::Event& event, Manager& manager) :
     sock(makeSock()),
     io(event, sock.get(), EPOLLIN | EPOLLET, [&](auto&&... args) {
-        return eventHandler(manager, std::forward<decltype(args)>(args)...);
-    })
+    return eventHandler(manager, std::forward<decltype(args)>(args)...);
+})
 {
     auto cb = [&](const nlmsghdr& hdr, std::string_view data) {
         handler(manager, hdr, data);
diff --git a/src/system_configuration.cpp b/src/system_configuration.cpp
index 7604eb9..6eb1588 100644
--- a/src/system_configuration.cpp
+++ b/src/system_configuration.cpp
@@ -44,7 +44,7 @@
     {
         lg2::error("Hostname match parsing failed: {ERROR}", "ERROR", e);
     }
-                  })
+})
 {
     try
     {
diff --git a/src/system_queries.cpp b/src/system_queries.cpp
index 00ba064..87ba4aa 100644
--- a/src/system_queries.cpp
+++ b/src/system_queries.cpp
@@ -89,7 +89,7 @@
                ifname, SIOCETHTOOL, "ETHTOOL"sv,
                [&](const ifreq&) {
         return EthInfo{.autoneg = edata.autoneg != 0, .speed = edata.speed};
-               },
+    },
                &edata)
         .value_or(EthInfo{});
 }
