# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1259675145 0
# Node ID d1ac88bf91bf0a527e4be419090c593c9c69c4ef
# Parent 8bd6d48300bd54e21ce0142041becc87074bde9e
libxenlight: fix uuid code
- Use proper constants
- Use functions from the uuid library
- Fix broken pointer handling in libxl_dominfo
Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
---
tools/libxl/libxl.c | 4 ++--
tools/libxl/libxl.h | 2 +-
tools/libxl/libxl_utils.c | 14 +++++++-------
tools/libxl/xen_uuid.h | 4 ++++
4 files changed, 14 insertions(+), 10 deletions(-)
diff -r 8bd6d48300bd -r d1ac88bf91bf tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Tue Dec 01 13:44:13 2009 +0000
+++ b/tools/libxl/libxl.c Tue Dec 01 13:45:45 2009 +0000
@@ -284,7 +284,7 @@ redo:
ptr = ptr2;
size *= 2;
}
- memcpy(ptr[index].uuid, info[i].handle, 16 * sizeof(uint8_t));
+ memcpy(&(ptr[index].uuid), info[i].handle,
sizeof(xen_domain_handle_t));
ptr[index].domid = info[i].domain;
first_domain = info[i].domain + 1;
index++;
@@ -478,7 +478,7 @@ static int libxl_destroy_device_model(st
int libxl_domain_destroy(struct libxl_ctx *ctx, uint32_t domid, int force)
{
- char *dom_path, vm_path[41];
+ char *dom_path, vm_path[UUID_LEN_STR + 5];
xen_uuid_t *uuid;
int rc;
diff -r 8bd6d48300bd -r d1ac88bf91bf tools/libxl/libxl.h
--- a/tools/libxl/libxl.h Tue Dec 01 13:44:13 2009 +0000
+++ b/tools/libxl/libxl.h Tue Dec 01 13:45:45 2009 +0000
@@ -28,7 +28,7 @@ typedef void (*libxl_log_callback)(void
typedef void (*libxl_log_callback)(void *userdata, int loglevel, const char
*file,
int line, const char *func, char *s);
struct libxl_dominfo {
- xen_uuid_t uuid[16];
+ xen_uuid_t uuid;
uint32_t domid;
};
diff -r 8bd6d48300bd -r d1ac88bf91bf tools/libxl/libxl_utils.c
--- a/tools/libxl/libxl_utils.c Tue Dec 01 13:44:13 2009 +0000
+++ b/tools/libxl/libxl_utils.c Tue Dec 01 13:45:45 2009 +0000
@@ -92,7 +92,7 @@ int libxl_uuid_to_domid(struct libxl_ctx
int nb_domain, i;
struct libxl_dominfo *info = libxl_domain_list(ctx, &nb_domain);
for (i = 0; i < nb_domain; i++) {
- if (!memcmp(info[i].uuid, uuid, 16)) {
+ if (!xen_uuid_compare(&(info[i].uuid), uuid)) {
*domid = info[i].domid;
free(info);
return 0;
@@ -108,8 +108,8 @@ int libxl_domid_to_uuid(struct libxl_ctx
struct libxl_dominfo *info = libxl_domain_list(ctx, &nb_domain);
for (i = 0; i < nb_domain; i++) {
if (domid == info[i].domid) {
- *uuid = libxl_zalloc(ctx, 16);
- memcpy(*uuid, info[i].uuid, 16);
+ *uuid = libxl_zalloc(ctx, sizeof(xen_uuid_t));
+ xen_uuid_copy(*uuid, &(info[i].uuid));
free(info);
return 0;
}
@@ -121,9 +121,9 @@ int libxl_is_uuid(char *s)
int libxl_is_uuid(char *s)
{
int i;
- if (!s || strlen(s) != 36)
- return 0;
- for (i = 0; i < 36; i++) {
+ if (!s || strlen(s) != UUID_LEN_STR)
+ return 0;
+ for (i = 0; i < UUID_LEN_STR; i++) {
if (i == 8 || i == 13 || i == 18 || i == 23) {
if (s[i] != '-')
return 0;
@@ -147,7 +147,7 @@ xen_uuid_t *libxl_string_to_uuid(struct
char *libxl_uuid_to_string(struct libxl_ctx *ctx, xen_uuid_t *uuid)
{
- char uuid_str[39];
+ char uuid_str[UUID_LEN_STR + 3];
if (!uuid)
return NULL;
xen_uuid_to_string(uuid, uuid_str, sizeof(uuid_str));
diff -r 8bd6d48300bd -r d1ac88bf91bf tools/libxl/xen_uuid.h
--- a/tools/libxl/xen_uuid.h Tue Dec 01 13:44:13 2009 +0000
+++ b/tools/libxl/xen_uuid.h Tue Dec 01 13:45:45 2009 +0000
@@ -128,4 +128,8 @@ static inline int xen_uuid_compare(xen_u
#endif
+#ifndef UUID_LEN_STR
+#define UUID_LEN_STR (128 /*bit*/ / 4 /*nibbles*/ + 4 /*hyphens*/)
+#endif /* UUID_LEN_STR */
+
#endif /* __XEN_UUID_H__ */
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|