+static int get_virtualization(char **v) {
+ _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
+ _cleanup_bus_unref_ sd_bus *bus = NULL;
+ const char *t;
+ char *b;
+ int r;
+
+ r = sd_bus_open_system(&bus);
+ if (r < 0)
+ return r;
+
+ r = sd_bus_call_method(
+ bus,
+ "org.freedesktop.systemd1",
+ "/org/freedesktop/systemd1",
+ "org.freedesktop.DBus.Properties",
+ "Get",
+ NULL,
+ &reply,
+ "ss",
+ "org.freedesktop.systemd1.Manager",
+ "Virtualization");
+ if (r < 0)
+ return r;
+
+ r = sd_bus_message_read(reply, "v", "s", &t);
+ if (r < 0)
+ return r;
+
+ if (isempty(t)) {
+ *v = NULL;
+ return 0;
+ }
+
+ b = strdup(t);
+ if (!b)
+ return -ENOMEM;
+
+ *v = b;
+ return 1;
+}
+