diff --git a/apphandler.cpp b/apphandler.cpp
index 9bad7ff..3219a72 100644
--- a/apphandler.cpp
+++ b/apphandler.cpp
@@ -57,7 +57,7 @@
     "xyz.openbmc_project.Software.Activation";
 static constexpr auto softwareRoot = "/xyz/openbmc_project/software";
 
-void register_netfn_app_functions() __attribute__((constructor));
+void registerNetFnAppFunctions() __attribute__((constructor));
 
 using namespace phosphor::logging;
 using namespace sdbusplus::error::xyz::openbmc_project::common;
@@ -1782,7 +1782,7 @@
     return ipmi::responseSuccess(readBuf);
 }
 
-void register_netfn_app_functions()
+void registerNetFnAppFunctions()
 {
     // <Get Device ID>
     ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp,
diff --git a/chassishandler.cpp b/chassishandler.cpp
index fbb8561..3b4c860 100644
--- a/chassishandler.cpp
+++ b/chassishandler.cpp
@@ -67,7 +67,7 @@
 }
 } // namespace ipmi
 
-void register_netfn_chassis_functions() __attribute__((constructor));
+void registerNetFnChassisFunctions() __attribute__((constructor));
 
 // Host settings in dbus
 // Service name should be referenced by connection name got via object mapper
@@ -2337,7 +2337,7 @@
     return ipmi::responseSuccess();
 }
 
-void register_netfn_chassis_functions()
+void registerNetFnChassisFunctions()
 {
     createIdentifyTimer();
 
diff --git a/dcmihandler.cpp b/dcmihandler.cpp
index cfe8be2..304a764 100644
--- a/dcmihandler.cpp
+++ b/dcmihandler.cpp
@@ -24,7 +24,7 @@
 using InternalFailure =
     sdbusplus::error::xyz::openbmc_project::common::InternalFailure;
 
-void register_netfn_dcmi_functions() __attribute__((constructor));
+void registerNetFnDcmiFunctions() __attribute__((constructor));
 
 constexpr auto pcapPath = "/xyz/openbmc_project/control/host0/power_cap";
 constexpr auto pcapInterface = "xyz.openbmc_project.Control.Power.Cap";
@@ -1171,7 +1171,7 @@
     return ipmi::responseSuccess(totalInstances, numRecords, sensors);
 }
 
-void register_netfn_dcmi_functions()
+void registerNetFnDcmiFunctions()
 {
     // <Get Power Limit>
     registerGroupHandler(ipmi::prioOpenBmcBase, ipmi::groupDCMI,
diff --git a/globalhandler.cpp b/globalhandler.cpp
index fd8d5d6..31f1781 100644
--- a/globalhandler.cpp
+++ b/globalhandler.cpp
@@ -12,7 +12,7 @@
 
 using BMC = sdbusplus::server::xyz::openbmc_project::state::BMC;
 
-void register_netfn_global_functions() __attribute__((constructor));
+void registerNetFnGlobalFunctions() __attribute__((constructor));
 
 void resetBMC()
 {
@@ -48,7 +48,7 @@
     return ipmi::responseSuccess();
 }
 
-void register_netfn_global_functions()
+void registerNetFnGlobalFunctions()
 {
     // Cold Reset
     ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp,
diff --git a/groupext.cpp b/groupext.cpp
index 66d02f8..222ce9a 100644
--- a/groupext.cpp
+++ b/groupext.cpp
@@ -3,7 +3,7 @@
 #include <cstdio>
 
 #define GRPEXT_GET_GROUP_CMD 0
-void register_netfn_groupext_functions() __attribute__((constructor));
+void registerNetFnGroupExtFunctions() __attribute__((constructor));
 
 ipmi_ret_t ipmi_groupext(ipmi_netfn_t, ipmi_cmd_t, ipmi_request_t,
                          ipmi_response_t response, ipmi_data_len_t data_len,
@@ -21,7 +21,7 @@
     return rc;
 }
 
-void register_netfn_groupext_functions()
+void registerNetFnGroupExtFunctions()
 {
     // <Group Extension Command>
     ipmi_register_callback(NETFUN_GRPEXT, GRPEXT_GET_GROUP_CMD, NULL,
diff --git a/sensorhandler.cpp b/sensorhandler.cpp
index 961b236..2da4c08 100644
--- a/sensorhandler.cpp
+++ b/sensorhandler.cpp
@@ -42,7 +42,7 @@
 using InternalFailure =
     sdbusplus::error::xyz::openbmc_project::common::InternalFailure;
 
-void register_netfn_sen_functions() __attribute__((constructor));
+void registerNetFnSenFunctions() __attribute__((constructor));
 
 struct sensorTypemap_t
 {
@@ -1526,7 +1526,7 @@
     return IPMI_CC_OK;
 }
 
-void register_netfn_sen_functions()
+void registerNetFnSenFunctions()
 {
     // Handlers with dbus-sdr handler implementation.
     // Do not register the hander if it dynamic sensors stack is used.
diff --git a/storagehandler.cpp b/storagehandler.cpp
index dc7cf39..8ae63f2 100644
--- a/storagehandler.cpp
+++ b/storagehandler.cpp
@@ -28,7 +28,7 @@
 #include <string>
 #include <variant>
 
-void register_netfn_storage_functions() __attribute__((constructor));
+void registerNetFnStorageFunctions() __attribute__((constructor));
 
 unsigned int g_sel_time = 0xFFFFFFFF;
 namespace ipmi
@@ -870,7 +870,7 @@
                                  operationSupport);
 }
 
-void register_netfn_storage_functions()
+void registerNetFnStorageFunctions()
 {
     selCacheMapInitialized = false;
     initSELCache();
diff --git a/systemintfcmds.cpp b/systemintfcmds.cpp
index 7768030..c7206af 100644
--- a/systemintfcmds.cpp
+++ b/systemintfcmds.cpp
@@ -13,7 +13,7 @@
 #include <cstring>
 #include <fstream>
 
-void register_netfn_app_functions() __attribute__((constructor));
+void registerNetFnAppFunctions() __attribute__((constructor));
 
 using namespace sdbusplus::server::xyz::openbmc_project::control;
 
@@ -149,7 +149,7 @@
     __attribute__((init_priority(101)));
 } // namespace
 
-void register_netfn_app_functions()
+void registerNetFnAppFunctions()
 {
     // <Read Event Message Buffer>
     ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp,
diff --git a/transporthandler.cpp b/transporthandler.cpp
index 8763f5f..3bf2f63 100644
--- a/transporthandler.cpp
+++ b/transporthandler.cpp
@@ -1720,9 +1720,9 @@
 } // namespace transport
 } // namespace ipmi
 
-void register_netfn_transport_functions() __attribute__((constructor));
+void registerNetFnTransportFunctions() __attribute__((constructor));
 
-void register_netfn_transport_functions()
+void registerNetFnTransportFunctions()
 {
     ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnTransport,
                           ipmi::transport::cmdSetLanConfigParameters,
