]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
hostnamed: expose FirmwareDate dbus property 25672/head
authorJelle van der Waa <jvanderwaa@redhat.com>
Wed, 7 Dec 2022 16:33:50 +0000 (17:33 +0100)
committerJelle van der Waa <jvanderwaa@redhat.com>
Wed, 7 Dec 2022 19:35:56 +0000 (20:35 +0100)
Expose /sys/class/dmi/id/bios_date as dbus property in hostnamed.

man/org.freedesktop.hostname1.xml
src/hostname/hostnamed.c

index 82e26186b183cd0e9f6c8ee2239876d465b2215f..02d7063e582e0d3f3bd680fdfd9fef5c5d7aa1e4 100644 (file)
@@ -91,6 +91,8 @@ node /org/freedesktop/hostname1 {
       readonly s FirmwareVersion = '...';
       @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
       readonly s FirmwareVendor = '...';
+      @org.freedesktop.DBus.Property.EmitsChangedSignal("const")
+      readonly s FirmwareDate = '...';
   };
   interface org.freedesktop.DBus.Peer { ... };
   interface org.freedesktop.DBus.Introspectable { ... };
@@ -108,6 +110,8 @@ node /org/freedesktop/hostname1 {
 
     <!--property FirmwareVendor is not documented!-->
 
+    <!--property FirmwareDate is not documented!-->
+
     <!--Autogenerated cross-references for systemd.directives, do not edit-->
 
     <variablelist class="dbus-interface" generated="True" extra-ref="org.freedesktop.hostname1"/>
@@ -172,6 +176,8 @@ node /org/freedesktop/hostname1 {
 
     <variablelist class="dbus-property" generated="True" extra-ref="FirmwareVendor"/>
 
+    <variablelist class="dbus-property" generated="True" extra-ref="FirmwareDate"/>
+
     <!--End of Autogenerated section-->
 
     <para>Whenever the hostname or other metadata is changed via the daemon,
index 46d4ea8ebd1dc2fb11f136ef39bf5c80dfa4e6f7..ea19dfbb0412b397e8158ac133b87424b7ce19ba 100644 (file)
@@ -250,6 +250,10 @@ static int get_firmware_vendor(char **ret) {
          return get_hardware_firmware_data("bios_vendor", ret);
 }
 
+static int get_firmware_date(char **ret) {
+         return get_hardware_firmware_data("bios_date", ret);
+}
+
 static const char* valid_chassis(const char *chassis) {
         assert(chassis);
 
@@ -648,6 +652,21 @@ static int property_get_firmware_vendor(
         return sd_bus_message_append(reply, "s", firmware_vendor);
 }
 
+static int property_get_firmware_date(
+                sd_bus *bus,
+                const char *path,
+                const char *interface,
+                const char *property,
+                sd_bus_message *reply,
+                void *userdata,
+                sd_bus_error *error) {
+
+        _cleanup_free_ char *firmware_date = NULL;
+
+        (void) get_firmware_date(&firmware_date);
+
+        return sd_bus_message_append(reply, "s", firmware_date);
+}
 static int property_get_hostname(
                 sd_bus *bus,
                 const char *path,
@@ -1170,7 +1189,7 @@ static int method_get_hardware_serial(sd_bus_message *m, void *userdata, sd_bus_
 static int method_describe(sd_bus_message *m, void *userdata, sd_bus_error *error) {
         _cleanup_free_ char *hn = NULL, *dhn = NULL, *in = NULL, *text = NULL,
                 *chassis = NULL, *vendor = NULL, *model = NULL, *serial = NULL, *firmware_version = NULL,
-                *firmware_vendor = NULL;
+                *firmware_vendor = NULL, *firmware_date = NULL;
         _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
         _cleanup_(json_variant_unrefp) JsonVariant *v = NULL;
         sd_id128_t product_uuid = SD_ID128_NULL;
@@ -1235,6 +1254,7 @@ static int method_describe(sd_bus_message *m, void *userdata, sd_bus_error *erro
         }
         (void) get_firmware_version(&firmware_version);
         (void) get_firmware_vendor(&firmware_vendor);
+        (void) get_firmware_date(&firmware_date);
 
         r = json_build(&v, JSON_BUILD_OBJECT(
                                        JSON_BUILD_PAIR("Hostname", JSON_BUILD_STRING(hn)),
@@ -1257,6 +1277,7 @@ static int method_describe(sd_bus_message *m, void *userdata, sd_bus_error *erro
                                        JSON_BUILD_PAIR("HardwareSerial", JSON_BUILD_STRING(serial)),
                                        JSON_BUILD_PAIR("FirmwareVersion", JSON_BUILD_STRING(firmware_version)),
                                        JSON_BUILD_PAIR("FirmwareVendor", JSON_BUILD_STRING(firmware_vendor)),
+                                       JSON_BUILD_PAIR("FirmwareDate", JSON_BUILD_STRING(firmware_date)),
                                        JSON_BUILD_PAIR_CONDITION(!sd_id128_is_null(product_uuid), "ProductUUID", JSON_BUILD_ID128(product_uuid)),
                                        JSON_BUILD_PAIR_CONDITION(sd_id128_is_null(product_uuid), "ProductUUID", JSON_BUILD_NULL)));
 
@@ -1299,6 +1320,7 @@ static const sd_bus_vtable hostname_vtable[] = {
         SD_BUS_PROPERTY("HardwareModel", "s", property_get_hardware_model, 0, SD_BUS_VTABLE_PROPERTY_CONST),
         SD_BUS_PROPERTY("FirmwareVersion", "s", property_get_firmware_version, 0, SD_BUS_VTABLE_PROPERTY_CONST),
         SD_BUS_PROPERTY("FirmwareVendor", "s", property_get_firmware_vendor, 0, SD_BUS_VTABLE_PROPERTY_CONST),
+        SD_BUS_PROPERTY("FirmwareDate", "s", property_get_firmware_date, 0, SD_BUS_VTABLE_PROPERTY_CONST),
 
         SD_BUS_METHOD_WITH_ARGS("SetHostname",
                                 SD_BUS_ARGS("s", hostname, "b", interactive),