[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] libxenlight: fix name to domid conversion



Hi all,
this patch makes sure that the domain name to domid conversion is
correct, cross referencing the information found on xenstore with the
list of running domains.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>

---

diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
index c7b34fa..5048fd0 100644
--- a/tools/libxl/libxl_utils.c
+++ b/tools/libxl/libxl_utils.c
@@ -53,18 +53,26 @@ int libxl_name_to_domid(struct libxl_ctx *ctx, char *name, 
uint32_t *domid)
 {
     unsigned int num, len;
     char path[strlen("/local/domain") + 12];
-    int i;
+    int i, j, nb_domains;
     char *domname, **l;
+    struct libxl_dominfo *dominfo;
+
+    dominfo = libxl_domain_list(ctx, &nb_domains);
 
     l = xs_directory(ctx->xsh, XBT_NULL, "/local/domain", &num);
     for (i = 0; i < num; i++) {
         snprintf(path, sizeof(path), "/local/domain/%s/name", l[i]);
         domname = xs_read(ctx->xsh, XBT_NULL, path, &len);
         if (domname != NULL && !strncmp(domname, name, len)) {
-            *domid = atoi(l[i]);
-            free(l);
-            free(domname);
-            return 0;
+            int domid_i = atoi(l[i]);
+            for (j = 0; j < nb_domains; j++) {
+                if (dominfo[j].domid == domid_i) {
+                    *domid = domid_i;
+                    free(l);
+                    free(domname);
+                    return 0;
+                }
+            }
         }
         free(domname);
     }

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.