diff --git a/dcmihandler.cpp b/dcmihandler.cpp
index 0508b81..5df6559 100644
--- a/dcmihandler.cpp
+++ b/dcmihandler.cpp
@@ -486,29 +486,39 @@
 void register_netfn_dcmi_functions()
 {
     // <Get Power Limit>
-    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",NETFUN_GRPEXT, IPMI_CMD_DCMI_GET_POWER_LIMIT);
-    ipmi_register_callback(NETFUN_GRPEXT, IPMI_CMD_DCMI_GET_POWER_LIMIT, NULL, getPowerLimit,
-                           PRIVILEGE_USER);
+    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",
+            NETFUN_GRPEXT, dcmi::Commands::GET_POWER_LIMIT);
+
+    ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_POWER_LIMIT,
+                           NULL, getPowerLimit, PRIVILEGE_USER);
 
     // <Set Power Limit>
-    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",NETFUN_GRPEXT, IPMI_CMD_DCMI_SET_POWER_LIMIT);
-    ipmi_register_callback(NETFUN_GRPEXT, IPMI_CMD_DCMI_SET_POWER_LIMIT, NULL, setPowerLimit,
-                           PRIVILEGE_OPERATOR);
+    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",
+            NETFUN_GRPEXT, dcmi::Commands::SET_POWER_LIMIT);
+
+    ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::SET_POWER_LIMIT,
+                           NULL, setPowerLimit, PRIVILEGE_OPERATOR);
 
     // <Activate/Deactivate Power Limit>
-    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",NETFUN_GRPEXT, IPMI_CMD_DCMI_APPLY_POWER_LIMIT);
-    ipmi_register_callback(NETFUN_GRPEXT, IPMI_CMD_DCMI_APPLY_POWER_LIMIT, NULL, applyPowerLimit,
-                           PRIVILEGE_OPERATOR);
+    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",
+            NETFUN_GRPEXT, dcmi::Commands::APPLY_POWER_LIMIT);
+
+    ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::APPLY_POWER_LIMIT,
+                           NULL, applyPowerLimit, PRIVILEGE_OPERATOR);
 
     // <Get Asset Tag>
-    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",NETFUN_GRPEXT, IPMI_CMD_DCMI_GET_ASSET_TAG);
-    ipmi_register_callback(NETFUN_GRPEXT, IPMI_CMD_DCMI_GET_ASSET_TAG, NULL, getAssetTag,
-                           PRIVILEGE_USER);
+    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",
+            NETFUN_GRPEXT, dcmi::Commands::GET_ASSET_TAG);
+
+    ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_ASSET_TAG,
+                           NULL, getAssetTag, PRIVILEGE_USER);
 
     // <Set Asset Tag>
-    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",NETFUN_GRPEXT, IPMI_CMD_DCMI_SET_ASSET_TAG);
-    ipmi_register_callback(NETFUN_GRPEXT, IPMI_CMD_DCMI_SET_ASSET_TAG, NULL, setAssetTag,
-                           PRIVILEGE_OPERATOR);
+    printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",
+            NETFUN_GRPEXT, dcmi::Commands::SET_ASSET_TAG);
+
+    ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::SET_ASSET_TAG,
+                           NULL, setAssetTag, PRIVILEGE_OPERATOR);
     return;
 }
 // 956379
diff --git a/dcmihandler.hpp b/dcmihandler.hpp
index cb46d5c..212e9ac 100644
--- a/dcmihandler.hpp
+++ b/dcmihandler.hpp
@@ -6,20 +6,20 @@
 #include <vector>
 #include <sdbusplus/bus.hpp>
 
-// IPMI commands for net functions.
-enum ipmi_netfn_sen_cmds
-{
-    // Get capability bits
-    IPMI_CMD_DCMI_GET_POWER_LIMIT = 0x03,
-    IPMI_CMD_DCMI_SET_POWER_LIMIT = 0x04,
-    IPMI_CMD_DCMI_APPLY_POWER_LIMIT = 0x05,
-    IPMI_CMD_DCMI_GET_ASSET_TAG = 0x06,
-    IPMI_CMD_DCMI_SET_ASSET_TAG = 0x08,
-};
-
 namespace dcmi
 {
 
+enum Commands
+{
+    // Get capability bits
+    GET_POWER_LIMIT = 0x03,
+    SET_POWER_LIMIT = 0x04,
+    APPLY_POWER_LIMIT = 0x05,
+    GET_ASSET_TAG = 0x06,
+    SET_ASSET_TAG = 0x08,
+};
+
+
 static constexpr auto propIntf = "org.freedesktop.DBus.Properties";
 static constexpr auto assetTagIntf =
         "xyz.openbmc_project.Inventory.Decorator.AssetTag";
