diff --git a/src/system_queries.cpp b/src/system_queries.cpp
index 87ba4aa..712fc08 100644
--- a/src/system_queries.cpp
+++ b/src/system_queries.cpp
@@ -27,8 +27,8 @@
 static stdplus::Fd& getIFSock()
 {
     using namespace stdplus::fd;
-    static auto fd = socket(SocketDomain::INet, SocketType::Datagram,
-                            SocketProto::IP);
+    static auto fd =
+        socket(SocketDomain::INet, SocketType::Datagram, SocketProto::IP);
     return fd;
 }
 
@@ -88,8 +88,9 @@
     return optionalIFReq(
                ifname, SIOCETHTOOL, "ETHTOOL"sv,
                [&](const ifreq&) {
-        return EthInfo{.autoneg = edata.autoneg != 0, .speed = edata.speed};
-    },
+                   return EthInfo{.autoneg = edata.autoneg != 0,
+                                  .speed = edata.speed};
+               },
                &edata)
         .value_or(EthInfo{});
 }
@@ -120,16 +121,17 @@
     ifinfomsg msg = {};
     msg.ifi_family = AF_UNSPEC;
     msg.ifi_index = idx;
-    netlink::performRequest(NETLINK_ROUTE, RTM_DELLINK, NLM_F_REPLACE, msg,
-                            [&](const nlmsghdr& hdr, std::string_view data) {
-        int err = 0;
-        if (hdr.nlmsg_type == NLMSG_ERROR)
-        {
-            err = netlink::extractRtData<nlmsgerr>(data).error;
-        }
-        throw std::runtime_error(
-            std::format("Failed to delete `{}`: {}", idx, strerror(err)));
-    });
+    netlink::performRequest(
+        NETLINK_ROUTE, RTM_DELLINK, NLM_F_REPLACE, msg,
+        [&](const nlmsghdr& hdr, std::string_view data) {
+            int err = 0;
+            if (hdr.nlmsg_type == NLMSG_ERROR)
+            {
+                err = netlink::extractRtData<nlmsgerr>(data).error;
+            }
+            throw std::runtime_error(
+                std::format("Failed to delete `{}`: {}", idx, strerror(err)));
+        });
 }
 
 } // namespace phosphor::network::system
