]> xenbits.xensource.com Git - libvirt.git/commitdiff
virsystemd: introduce virSystemdGetMachineByPID
authorPavel Hrdina <phrdina@redhat.com>
Fri, 30 Oct 2020 11:06:56 +0000 (12:06 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Wed, 10 Feb 2021 12:37:11 +0000 (13:37 +0100)
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virsystemd.c

index 58b5c650b5132a7c0134b3f00113c4ff09eef052..d2fcf0bf0cc2dee0c0140443ebae8a911e099892 100644 (file)
@@ -194,21 +194,21 @@ virSystemdHasLogind(void)
 }
 
 
-char *
-virSystemdGetMachineNameByPID(pid_t pid)
+/**
+ * virSystemdGetMachineByPID:
+ * @conn: dbus connection
+ * @pid: pid of running VM
+ *
+ * Returns dbus object path to VM registered with machined.
+ * On error returns NULL.
+ */
+static char *
+virSystemdGetMachineByPID(GDBusConnection *conn,
+                          pid_t pid)
 {
-    GDBusConnection *conn;
     g_autoptr(GVariant) message = NULL;
     g_autoptr(GVariant) reply = NULL;
-    g_autoptr(GVariant) gvar = NULL;
-    g_autofree char *object = NULL;
-    char *name = NULL;
-
-    if (virSystemdHasMachined() < 0)
-        return NULL;
-
-    if (!(conn = virGDBusGetSystemBus()))
-        return NULL;
+    char *object = NULL;
 
     message = g_variant_new("(u)", pid);
 
@@ -225,13 +225,33 @@ virSystemdGetMachineNameByPID(pid_t pid)
 
     g_variant_get(reply, "(o)", &object);
 
-    g_variant_unref(reply);
-    reply = NULL;
-
     VIR_DEBUG("Domain with pid %lld has object path '%s'",
               (long long) pid, object);
 
-    g_variant_unref(message);
+    return object;
+}
+
+
+char *
+virSystemdGetMachineNameByPID(pid_t pid)
+{
+    GDBusConnection *conn;
+    g_autoptr(GVariant) message = NULL;
+    g_autoptr(GVariant) reply = NULL;
+    g_autoptr(GVariant) gvar = NULL;
+    g_autofree char *object = NULL;
+    char *name = NULL;
+
+    if (virSystemdHasMachined() < 0)
+        return NULL;
+
+    if (!(conn = virGDBusGetSystemBus()))
+        return NULL;
+
+    object = virSystemdGetMachineByPID(conn, pid);
+    if (!object)
+        return NULL;
+
     message = g_variant_new("(ss)",
                             "org.freedesktop.machine1.Machine", "Name");