diff --git a/sdbusplus/bus.hpp.in b/sdbusplus/bus.hpp.in
index ddaeb8f..473a5ea 100644
--- a/sdbusplus/bus.hpp.in
+++ b/sdbusplus/bus.hpp.in
@@ -281,7 +281,7 @@
     }
 
     auto get_fd(){
-        return sd_bus_get_fd(_bus.get());
+        return _intf->sd_bus_get_fd(_bus.get());
     }
 
     /** @brief Attach the bus with a sd-event event loop object.
diff --git a/sdbusplus/message.hpp b/sdbusplus/message.hpp
index 6a3661f..af18f30 100644
--- a/sdbusplus/message.hpp
+++ b/sdbusplus/message.hpp
@@ -197,7 +197,7 @@
      */
     int get_errno()
     {
-        return sd_bus_message_get_errno(_msg.get());
+        return _intf->sd_bus_message_get_errno(_msg.get());
     }
 
     /** @brief Get the transaction cookie of a message.
diff --git a/sdbusplus/sdbus.hpp b/sdbusplus/sdbus.hpp
index 453194b..ead2888 100644
--- a/sdbusplus/sdbus.hpp
+++ b/sdbusplus/sdbus.hpp
@@ -46,6 +46,7 @@
                                        const char *message) = 0;
 
     virtual sd_event *sd_bus_get_event(sd_bus *bus) = 0;
+    virtual int sd_bus_get_fd(sd_bus *bus) = 0;
     virtual int sd_bus_get_unique_name(sd_bus *bus, const char **unique) = 0;
 
     virtual int sd_bus_list_names(sd_bus *bus, char ***acquired,
@@ -74,6 +75,7 @@
     virtual const char *sd_bus_message_get_sender(sd_bus_message *m) = 0;
     virtual const char *sd_bus_message_get_signature(sd_bus_message *m,
                                                      int complete) = 0;
+    virtual int sd_bus_message_get_errno(sd_bus_message *m) = 0;
 
     virtual int sd_bus_message_is_method_call(sd_bus_message *m,
                                               const char *interface,
@@ -208,6 +210,11 @@
         return ::sd_bus_get_event(bus);
     }
 
+    int sd_bus_get_fd(sd_bus *bus) override
+    {
+        return ::sd_bus_get_fd(bus);
+    }
+
     int sd_bus_get_unique_name(sd_bus *bus, const char **unique) override
     {
         return ::sd_bus_get_unique_name(bus, unique);
@@ -287,6 +294,11 @@
         return ::sd_bus_message_get_signature(m, complete);
     }
 
+    int sd_bus_message_get_errno(sd_bus_message *m) override
+    {
+        return ::sd_bus_message_get_errno(m);
+    }
+
     int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface,
                                       const char *member) override
     {
diff --git a/sdbusplus/test/sdbus_mock.hpp b/sdbusplus/test/sdbus_mock.hpp
index fe01797..4d3909c 100644
--- a/sdbusplus/test/sdbus_mock.hpp
+++ b/sdbusplus/test/sdbus_mock.hpp
@@ -35,6 +35,7 @@
                  int(sd_bus_error *, const char *, const char *));
 
     MOCK_METHOD1(sd_bus_get_event, sd_event *(sd_bus *));
+    MOCK_METHOD1(sd_bus_get_fd, int(sd_bus *));
     MOCK_METHOD2(sd_bus_get_unique_name, int(sd_bus *, const char **));
 
     MOCK_METHOD3(sd_bus_list_names, int(sd_bus *, char ***, char ***));
@@ -57,6 +58,7 @@
     MOCK_METHOD1(sd_bus_message_get_sender, const char *(sd_bus_message *));
     MOCK_METHOD2(sd_bus_message_get_signature,
                  const char *(sd_bus_message *, int));
+    MOCK_METHOD1(sd_bus_message_get_errno, int(sd_bus_message *));
 
     MOCK_METHOD3(sd_bus_message_is_method_call,
                  int(sd_bus_message *, const char *, const char *));
