diff --git a/src/appcommands.cpp b/src/appcommands.cpp
index ac1784b..7ffcd2d 100644
--- a/src/appcommands.cpp
+++ b/src/appcommands.cpp
@@ -496,19 +496,19 @@
         file.close();
     }
 
-    ipmiPrintAndRegister(NETFUN_APP, CMD_APP_GET_SELFTEST_RESULTS, NULL,
+    ipmiPrintAndRegister(ipmi::netFnApp, CMD_APP_GET_SELFTEST_RESULTS, NULL,
                          ipmiAppGetSTResults,
                          PRIVILEGE_USER); // Get Self Test Results
-    ipmiPrintAndRegister(NETFUN_APP, CMD_APP_MFR_TEST_ON, NULL,
+    ipmiPrintAndRegister(ipmi::netFnApp, CMD_APP_MFR_TEST_ON, NULL,
                          ipmiAppMfrTestOn,
                          PRIVILEGE_USER); // Manufacturing Test On
-    ipmiPrintAndRegister(NETFUN_APP, CMD_APP_SET_GLOBAL_ENABLES, NULL,
+    ipmiPrintAndRegister(ipmi::netFnApp, CMD_APP_SET_GLOBAL_ENABLES, NULL,
                          ipmiAppSetGlobalEnables,
                          PRIVILEGE_USER); // Set Global Enables
-    ipmiPrintAndRegister(NETFUN_APP, CMD_APP_GET_GLOBAL_ENABLES, NULL,
+    ipmiPrintAndRegister(ipmi::netFnApp, CMD_APP_GET_GLOBAL_ENABLES, NULL,
                          ipmiAppGetGlobalEnables,
                          PRIVILEGE_USER); // Get Global Enables
-    ipmiPrintAndRegister(NETFUN_APP, CMD_APP_CLEAR_MESSAGE_FLAGS, NULL,
+    ipmiPrintAndRegister(ipmi::netFnApp, CMD_APP_CLEAR_MESSAGE_FLAGS, NULL,
                          ipmiAppClearMsgFlags,
                          PRIVILEGE_USER); // Clear Message flags
 #if BIC_ENABLED
@@ -516,7 +516,7 @@
                           ipmi::app::cmdGetSystemGuid, ipmi::Privilege::User,
                           ipmiAppGetSysGUID);
 #else
-    ipmiPrintAndRegister(NETFUN_APP, CMD_APP_GET_SYS_GUID, NULL,
+    ipmiPrintAndRegister(ipmi::netFnApp, CMD_APP_GET_SYS_GUID, NULL,
                          ipmiAppGetSysGUID,
                          PRIVILEGE_USER); // Get System GUID
 #endif
diff --git a/src/oemcommands.cpp b/src/oemcommands.cpp
index 10011e0..9bb1e77 100644
--- a/src/oemcommands.cpp
+++ b/src/oemcommands.cpp
@@ -2685,25 +2685,25 @@
     ipmiPrintAndRegister(NETFN_OEM_USB_DBG_REQ, CMD_OEM_USB_DBG_CTRL_PANEL,
                          NULL, ipmiOemDbgGetCtrlPanel,
                          PRIVILEGE_USER); // get debug control panel
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_SET_DIMM_INFO, NULL,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_SET_DIMM_INFO, NULL,
                          ipmiOemSetDimmInfo,
                          PRIVILEGE_USER); // Set Dimm Info
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_GET_BOARD_ID, NULL,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_GET_BOARD_ID, NULL,
                          ipmiOemGetBoardID,
                          PRIVILEGE_USER); // Get Board ID
     ipmi::registerHandler(ipmi::prioOemBase, ipmi::netFnOemOne,
                           CMD_OEM_GET_80PORT_RECORD, ipmi::Privilege::User,
                           ipmiOemGet80PortRecord); // Get 80 Port Record
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_SET_MACHINE_CONFIG_INFO, NULL,
-                         ipmiOemSetMachineCfgInfo,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_SET_MACHINE_CONFIG_INFO,
+                         NULL, ipmiOemSetMachineCfgInfo,
                          PRIVILEGE_USER); // Set Machine Config Info
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_SET_POST_START, NULL,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_SET_POST_START, NULL,
                          ipmiOemSetPostStart,
                          PRIVILEGE_USER); // Set POST start
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_SET_POST_END, NULL,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_SET_POST_END, NULL,
                          ipmiOemSetPostEnd,
                          PRIVILEGE_USER); // Set POST End
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_SET_PPIN_INFO, NULL,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_SET_PPIN_INFO, NULL,
                          ipmiOemSetPPINInfo,
                          PRIVILEGE_USER); // Set PPIN Info
 #if BIC_ENABLED
@@ -2713,19 +2713,21 @@
                           ipmiOemSetSystemGuid);
 #else
 
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_SET_SYSTEM_GUID, NULL,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_SET_SYSTEM_GUID, NULL,
                          ipmiOemSetSystemGuid,
                          PRIVILEGE_USER); // Set System GUID
 #endif
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_SET_ADR_TRIGGER, NULL,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_SET_ADR_TRIGGER, NULL,
                          ipmiOemSetAdrTrigger,
                          PRIVILEGE_USER); // Set ADR Trigger
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_SET_BIOS_FLASH_INFO, NULL,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_SET_BIOS_FLASH_INFO, NULL,
                          ipmiOemSetBiosFlashInfo,
                          PRIVILEGE_USER); // Set Bios Flash Info
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_SET_PPR, NULL, ipmiOemSetPpr,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_SET_PPR, NULL,
+                         ipmiOemSetPpr,
                          PRIVILEGE_USER); // Set PPR
-    ipmiPrintAndRegister(NETFUN_NONE, CMD_OEM_GET_PPR, NULL, ipmiOemGetPpr,
+    ipmiPrintAndRegister(ipmi::netFnOemOne, CMD_OEM_GET_PPR, NULL,
+                         ipmiOemGetPpr,
                          PRIVILEGE_USER); // Get PPR
     /* FB OEM QC Commands */
     ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnOemFour,
diff --git a/src/storagecommands.cpp b/src/storagecommands.cpp
index 84801ba..1c6f36f 100644
--- a/src/storagecommands.cpp
+++ b/src/storagecommands.cpp
@@ -1004,31 +1004,31 @@
 {
     // <Get FRU Inventory Area Info>
     ipmiPrintAndRegister(
-        NETFUN_STORAGE,
+        ipmi::netFnStorage,
         static_cast<ipmi_cmd_t>(IPMINetfnStorageCmds::ipmiCmdGetFRUInvAreaInfo),
         NULL, ipmiStorageGetFRUInvAreaInfo, PRIVILEGE_OPERATOR);
 
     // <READ FRU Data>
     ipmiPrintAndRegister(
-        NETFUN_STORAGE,
+        ipmi::netFnStorage,
         static_cast<ipmi_cmd_t>(IPMINetfnStorageCmds::ipmiCmdReadFRUData), NULL,
         ipmiStorageReadFRUData, PRIVILEGE_OPERATOR);
 
     // <WRITE FRU Data>
     ipmiPrintAndRegister(
-        NETFUN_STORAGE,
+        ipmi::netFnStorage,
         static_cast<ipmi_cmd_t>(IPMINetfnStorageCmds::ipmiCmdWriteFRUData),
         NULL, ipmiStorageWriteFRUData, PRIVILEGE_OPERATOR);
 
     // <Reserve SDR Repo>
     ipmiPrintAndRegister(
-        NETFUN_STORAGE,
+        ipmi::netFnStorage,
         static_cast<ipmi_cmd_t>(IPMINetfnStorageCmds::ipmiCmdReserveSDR),
         nullptr, ipmiStorageReserveSDR, PRIVILEGE_USER);
 
     // <Get Sdr>
     ipmiPrintAndRegister(
-        NETFUN_STORAGE,
+        ipmi::netFnStorage,
         static_cast<ipmi_cmd_t>(IPMINetfnStorageCmds::ipmiCmdGetSDR), nullptr,
         ipmiStorageGetSDR, PRIVILEGE_USER);
     return;
diff --git a/src/transportcommands.cpp b/src/transportcommands.cpp
index 77f9ba5..d7f632b 100644
--- a/src/transportcommands.cpp
+++ b/src/transportcommands.cpp
@@ -107,8 +107,8 @@
 
 void registerTransportFunctions()
 {
-    ipmiPrintAndRegister(NETFUN_TRANSPORT, CMD_TRANSPORT_GET_SOL_CONFIG, NULL,
-                         ipmiTransGetSolConfig,
+    ipmiPrintAndRegister(ipmi::netFnTransport, CMD_TRANSPORT_GET_SOL_CONFIG,
+                         NULL, ipmiTransGetSolConfig,
                          PRIVILEGE_OPERATOR); // Get Sol Config
 
     return;
