aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxl_utils.c
diff options
context:
space:
mode:
authorMatthew Fioravante <matthew.fioravante@jhuapl.edu>2012-11-13 10:46:59 +0000
committerMatthew Fioravante <matthew.fioravante@jhuapl.edu>2012-11-13 10:46:59 +0000
commitdde22055ac3aa45eb9ec4b297874638c2a25c320 (patch)
tree2dde597a27cfdf14e4db8d0aa6fd7b572a11313a /tools/libxl/libxl_utils.c
parente1a53273fc1e06ef5bed32348c80639d4661c994 (diff)
downloadxen-dde22055ac3aa45eb9ec4b297874638c2a25c320.tar.gz
xen-dde22055ac3aa45eb9ec4b297874638c2a25c320.tar.bz2
xen-dde22055ac3aa45eb9ec4b297874638c2a25c320.zip
libxl: add vtpm support
This patch adds vtpm support to libxl. It adds vtpm parsing to config files and 3 new xl commands: vtpm-attach vtpm-detach vtpm-list Signed-off-by: Matthew Fioravante <matthew.fioravante@jhuapl.edu> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'tools/libxl/libxl_utils.c')
-rw-r--r--tools/libxl/libxl_utils.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
index 55cd29981b..8f7879060f 100644
--- a/tools/libxl/libxl_utils.c
+++ b/tools/libxl/libxl_utils.c
@@ -463,6 +463,33 @@ int libxl_pipe(libxl_ctx *ctx, int pipes[2])
return 0;
}
+int libxl_uuid_to_device_vtpm(libxl_ctx *ctx, uint32_t domid,
+ libxl_uuid* uuid, libxl_device_vtpm *vtpm)
+{
+ libxl_device_vtpm *vtpms;
+ int nb, i;
+ int rc;
+
+ vtpms = libxl_device_vtpm_list(ctx, domid, &nb);
+ if (!vtpms)
+ return ERROR_FAIL;
+
+ memset(vtpm, 0, sizeof (libxl_device_vtpm));
+ rc = 1;
+ for (i = 0; i < nb; ++i) {
+ if(!libxl_uuid_compare(uuid, &vtpms[i].uuid)) {
+ vtpm->backend_domid = vtpms[i].backend_domid;
+ vtpm->devid = vtpms[i].devid;
+ libxl_uuid_copy(&vtpm->uuid, &vtpms[i].uuid);
+ rc = 0;
+ break;
+ }
+ }
+
+ libxl_device_vtpm_list_free(vtpms, nb);
+ return rc;
+}
+
int libxl_mac_to_device_nic(libxl_ctx *ctx, uint32_t domid,
const char *mac, libxl_device_nic *nic)
{
@@ -819,6 +846,22 @@ void libxl_cpupoolinfo_list_free(libxl_cpupoolinfo *list, int nr)
free(list);
}
+void libxl_vtpminfo_list_free(libxl_vtpminfo* list, int nr)
+{
+ int i;
+ for (i = 0; i < nr; i++)
+ libxl_vtpminfo_dispose(&list[i]);
+ free(list);
+}
+
+void libxl_device_vtpm_list_free(libxl_device_vtpm* list, int nr)
+{
+ int i;
+ for (i = 0; i < nr; i++)
+ libxl_device_vtpm_dispose(&list[i]);
+ free(list);
+}
+
int libxl_domid_valid_guest(uint32_t domid)
{
/* returns 1 if the value _could_ be a valid guest domid, 0 otherwise