Fix vtable entires for offset callbacks

property_o didn't pass through the callbacks as sd-bus expected, so
they can't be used for read-write properties.  Add the expected methods.

Change-Id: Iad7592c99a60c22c10e274517ebfcbf8cf293a42
Signed-off-by: Ed Tanous <edtanous@google.com>
diff --git a/include/sdbusplus/vtable.hpp b/include/sdbusplus/vtable.hpp
index 6e7def3..f9d0c9e 100644
--- a/include/sdbusplus/vtable.hpp
+++ b/include/sdbusplus/vtable.hpp
@@ -79,22 +79,25 @@
  *
  * @param[in] member - Name of signal.
  * @param[in] signature - Signature of signal.
+ * @param[in] get - Functor to call on property get.
  * @param[in] offset - Offset within object for property.
  * @param[in] flags - optional sdbusplus::vtable::property_ value.
  */
 constexpr vtable_t property_o(const char* member, const char* signature,
-                              size_t offset,
+                              sd_bus_property_get_t get, size_t offset,
                               decltype(vtable_t::flags) flags = 0);
 
 /** Create a SD_BUS_WRITABLE_PROPERTY entry.
  *
  * @param[in] member - Name of signal.
  * @param[in] signature - Signature of signal.
+ * @param[in] get - Functor to call on property get.
  * @param[in] set - Functor to call on property set.
  * @param[in] offset - Offset within object for property.
  * @param[in] flags - optional sdbusplus::vtable::property_ value.
  */
 constexpr vtable_t property_o(const char* member, const char* signature,
+                              sd_bus_property_get_t get,
                               sd_bus_property_set_t set, size_t offset,
                               decltype(vtable_t::flags) flags = 0);
 
@@ -168,16 +171,18 @@
 }
 
 constexpr vtable_t property_o(const char* member, const char* signature,
-                              size_t offset, decltype(vtable_t::flags) flags)
+                              sd_bus_property_get_t get, size_t offset,
+                              decltype(vtable_t::flags) flags)
 {
-    return vtable_t SD_BUS_PROPERTY(member, signature, nullptr, offset, flags);
+    return vtable_t SD_BUS_PROPERTY(member, signature, get, offset, flags);
 }
 
 constexpr vtable_t property_o(const char* member, const char* signature,
+                              sd_bus_property_get_t get,
                               sd_bus_property_set_t set, size_t offset,
                               decltype(vtable_t::flags) flags)
 {
-    return vtable_t SD_BUS_WRITABLE_PROPERTY(member, signature, nullptr, set,
+    return vtable_t SD_BUS_WRITABLE_PROPERTY(member, signature, get, set,
                                              offset, flags);
 }
 
diff --git a/test/vtable/vtable.cpp b/test/vtable/vtable.cpp
index 5ed38b8..abb27d6 100644
--- a/test/vtable/vtable.cpp
+++ b/test/vtable/vtable.cpp
@@ -24,7 +24,7 @@
     sdbusplus::vtable::property("7", "8", &test_get,
                                 sdbusplus::vtable::property_::const_),
     sdbusplus::vtable::property("10", "11", &test_get, &test_set),
-    sdbusplus::vtable::property_o("14", "15", 16),
+    sdbusplus::vtable::property_o("14", "15", &test_get, 16),
     sdbusplus::vtable::end()};
 
 TEST(VtableTest, SameSize)
diff --git a/test/vtable/vtable_c.c b/test/vtable/vtable_c.c
index 105409f..686833b 100644
--- a/test/vtable/vtable_c.c
+++ b/test/vtable/vtable_c.c
@@ -44,7 +44,7 @@
     SD_BUS_SIGNAL("5", "6", 0),
     SD_BUS_PROPERTY("7", "8", &test_get, 0, SD_BUS_VTABLE_PROPERTY_CONST),
     SD_BUS_WRITABLE_PROPERTY("10", "11", &test_get, &test_set, 0, 0),
-    SD_BUS_PROPERTY("14", "15", NULL, 16, 0),
+    SD_BUS_PROPERTY("14", "15", &test_get, 16, 0),
     SD_BUS_VTABLE_END,
 };