diff --git a/groupext.cpp b/groupext.cpp
index f61bf1f..9578b83 100644
--- a/groupext.cpp
+++ b/groupext.cpp
@@ -24,7 +24,7 @@
 void registerNetFnGroupExtFunctions()
 {
     // <Group Extension Command>
-    ipmi_register_callback(NETFUN_GRPEXT, GRPEXT_GET_GROUP_CMD, nullptr,
+    ipmi_register_callback(ipmi::netFnGroup, GRPEXT_GET_GROUP_CMD, nullptr,
                            ipmi_groupext, PRIVILEGE_USER);
 
     return;
diff --git a/ipmid-new.cpp b/ipmid-new.cpp
index 7d3dd2d..0b3e389 100644
--- a/ipmid-new.cpp
+++ b/ipmid-new.cpp
@@ -725,7 +725,7 @@
     // The original ipmi_register_callback allowed for group OEM handlers
     // to be registered via this same interface. It just so happened that
     // all the handlers were part of the DCMI group, so default to that.
-    if (netFn == NETFUN_GRPEXT)
+    if (netFn == ipmi::netFnGroup)
     {
         ipmi::impl::registerGroupHandler(ipmi::prioOpenBmcBase, ipmi::groupDCMI,
                                          cmd, realPriv, h);
diff --git a/sensorhandler.cpp b/sensorhandler.cpp
index 134eaa6..e48d0ea 100644
--- a/sensorhandler.cpp
+++ b/sensorhandler.cpp
@@ -1568,16 +1568,18 @@
                           ipmi::Privilege::User, ipmiSenSetSensorThresholds);
 
     // <Get Device SDR>
-    ipmi_register_callback(NETFUN_SENSOR, ipmi::sensor_event::cmdGetDeviceSdr,
-                           nullptr, ipmi_sen_get_sdr, PRIVILEGE_USER);
+    ipmi_register_callback(ipmi::netFnSensor,
+                           ipmi::sensor_event::cmdGetDeviceSdr, nullptr,
+                           ipmi_sen_get_sdr, PRIVILEGE_USER);
 
 #endif
 
     // Common Handers used by both implementation.
 
     // <Platform Event Message>
-    ipmi_register_callback(NETFUN_SENSOR, ipmi::sensor_event::cmdPlatformEvent,
-                           nullptr, ipmicmdPlatformEvent, PRIVILEGE_OPERATOR);
+    ipmi_register_callback(ipmi::netFnSensor,
+                           ipmi::sensor_event::cmdPlatformEvent, nullptr,
+                           ipmicmdPlatformEvent, PRIVILEGE_OPERATOR);
 
     // <Get Sensor Type>
     ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnSensor,
diff --git a/storagehandler.cpp b/storagehandler.cpp
index d85673f..ef5630c 100644
--- a/storagehandler.cpp
+++ b/storagehandler.cpp
@@ -893,7 +893,7 @@
                           ipmiStorageGetSelTimeUtcOffset);
 
     // <Get SEL Entry>
-    ipmi_register_callback(NETFUN_STORAGE, ipmi::storage::cmdGetSelEntry,
+    ipmi_register_callback(ipmi::netFnStorage, ipmi::storage::cmdGetSelEntry,
                            nullptr, getSELEntry, PRIVILEGE_USER);
 
     // <Delete SEL Entry>
@@ -934,8 +934,8 @@
                           ipmi::Privilege::User, ipmiSensorReserveSdr);
 
     // <Get SDR>
-    ipmi_register_callback(NETFUN_STORAGE, ipmi::storage::cmdGetSdr, nullptr,
-                           ipmi_sen_get_sdr, PRIVILEGE_USER);
+    ipmi_register_callback(ipmi::netFnStorage, ipmi::storage::cmdGetSdr,
+                           nullptr, ipmi_sen_get_sdr, PRIVILEGE_USER);
 
 #endif
 
diff --git a/test/oemrouter_unittest.cpp b/test/oemrouter_unittest.cpp
index f0c0a01..9880d72 100644
--- a/test/oemrouter_unittest.cpp
+++ b/test/oemrouter_unittest.cpp
@@ -19,7 +19,7 @@
                             ipmi_context_t context, ipmid_callback_t cb,
                             ipmi_cmd_privilege_t priv)
 {
-    EXPECT_EQ(NETFUN_OEM_GROUP, netfn);
+    EXPECT_EQ(ipmi::netFnOem, netfn);
     EXPECT_EQ(ipmi::cmdWildcard, cmd);
     EXPECT_EQ(reinterpret_cast<void*>(singletonUnderTest), context);
     EXPECT_EQ(PRIVILEGE_OEM, priv);
@@ -45,7 +45,7 @@
 {
     MakeRouter();
     singletonUnderTest->activate();
-    ASSERT_EQ(NETFUN_OEM_GROUP, lastNetFunction);
+    ASSERT_EQ(ipmi::netFnOem, lastNetFunction);
 }
 
 void RegisterWithRouter(Number oen, ipmi_cmd_t cmd, Handler cb)
@@ -115,7 +115,7 @@
     RegisterTwoWays(&cmd);
 
     dataLen = 3;
-    EXPECT_EQ(0, wildHandler(NETFUN_OEM_GROUP, 0x78, msgPlain, reply, &dataLen,
+    EXPECT_EQ(0, wildHandler(ipmi::netFnOem, 0x78, msgPlain, reply, &dataLen,
                              nullptr));
     EXPECT_EQ(5, dataLen);
     EXPECT_EQ(replyPlain[0], reply[0]);
@@ -136,13 +136,13 @@
     // Check two random command codes.
     dataLen = 5;
     cmd = 0x89;
-    EXPECT_EQ(0, wildHandler(NETFUN_OEM_GROUP, cmd, msgPlus2, reply, &dataLen,
+    EXPECT_EQ(0, wildHandler(ipmi::netFnOem, cmd, msgPlus2, reply, &dataLen,
                              nullptr));
     EXPECT_EQ(3, dataLen);
 
     dataLen = 5;
     cmd = 0x67;
-    EXPECT_EQ(0, wildHandler(NETFUN_OEM_GROUP, cmd, msgPlus2, reply, &dataLen,
+    EXPECT_EQ(0, wildHandler(ipmi::netFnOem, cmd, msgPlus2, reply, &dataLen,
                              nullptr));
     EXPECT_EQ(3, dataLen);
 }
@@ -158,17 +158,17 @@
     // Message too short to include whole OEN?
     dataLen = 2;
     EXPECT_EQ(IPMI_CC_REQ_DATA_LEN_INVALID,
-              wildHandler(NETFUN_OEM_GROUP, 0x78, msgPlain, reply, &dataLen,
+              wildHandler(ipmi::netFnOem, 0x78, msgPlain, reply, &dataLen,
                           nullptr));
 
     // Wrong specific command?
     dataLen = 3;
-    EXPECT_EQ(IPMI_CC_INVALID, wildHandler(NETFUN_OEM_GROUP, 0x89, msgPlain,
+    EXPECT_EQ(IPMI_CC_INVALID, wildHandler(ipmi::netFnOem, 0x89, msgPlain,
                                            reply, &dataLen, nullptr));
 
     // Wrong OEN?
     dataLen = 3;
-    EXPECT_EQ(IPMI_CC_INVALID, wildHandler(NETFUN_OEM_GROUP, 0x78, msgBadOen,
+    EXPECT_EQ(IPMI_CC_INVALID, wildHandler(ipmi::netFnOem, 0x78, msgBadOen,
                                            reply, &dataLen, nullptr));
 }
 
