diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-04-01 10:07:35 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-04-01 10:07:35 +0100 |
commit | a9920c61ac7e98cc2aaa9dfa4daa1d93caa51b99 (patch) | |
tree | c2fc8cb0a0aa7840c2d3ca23f1102dae2a2c5a6c /tools/libxen | |
parent | 999853b092c34a43383ae8b7b117820b79171c85 (diff) | |
download | xen-a9920c61ac7e98cc2aaa9dfa4daa1d93caa51b99.tar.gz xen-a9920c61ac7e98cc2aaa9dfa4daa1d93caa51b99.tar.bz2 xen-a9920c61ac7e98cc2aaa9dfa4daa1d93caa51b99.zip |
libxen: XSPolicy.can_run for libxen
Add the stub and prototype for the XSPolicy.can_run function to the
lib-xen library. I also fixed some prototypes that had missing
'extern's.
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
Diffstat (limited to 'tools/libxen')
-rw-r--r-- | tools/libxen/include/xen/api/xen_acmpolicy.h | 6 | ||||
-rw-r--r-- | tools/libxen/include/xen/api/xen_xspolicy.h | 27 | ||||
-rw-r--r-- | tools/libxen/src/xen_xspolicy.c | 18 |
3 files changed, 39 insertions, 12 deletions
diff --git a/tools/libxen/include/xen/api/xen_acmpolicy.h b/tools/libxen/include/xen/api/xen_acmpolicy.h index d0b4a500ca..43aac5810d 100644 --- a/tools/libxen/include/xen/api/xen_acmpolicy.h +++ b/tools/libxen/include/xen/api/xen_acmpolicy.h @@ -74,7 +74,7 @@ xen_acm_header_free(xen_acm_header *hdr); /** * Get the referenced policy's record. */ -bool +extern bool xen_acmpolicy_get_record(xen_session *session, xen_acmpolicy_record **result, xen_xspolicy xspolicy); @@ -118,14 +118,14 @@ xen_acmpolicy_get_enforced_binary(xen_session *session, char **binary, /** * Get the ACM ssidref of the given VM. */ -bool +extern bool xen_acmpolicy_get_VM_ssidref(xen_session *session, int64_t *result, xen_vm vm); /** * Get the UUID field of the given policy. */ -bool +extern bool xen_acmpolicy_get_uuid(xen_session *session, char **result, xen_xspolicy xspolicy); diff --git a/tools/libxen/include/xen/api/xen_xspolicy.h b/tools/libxen/include/xen/api/xen_xspolicy.h index b0808f4d57..f685f150a8 100644 --- a/tools/libxen/include/xen/api/xen_xspolicy.h +++ b/tools/libxen/include/xen/api/xen_xspolicy.h @@ -68,6 +68,8 @@ enum xs_instantiationflags { #define XSERR_RESOURCE_ACCESS 23 + XSERR_BASE #define XSERR_HV_OP_FAILED 24 + XSERR_BASE #define XSERR_BOOTPOLICY_INSTALL_ERROR 25 + XSERR_BASE +#define XSERR_VM_NOT_AUTHORIZED 26 + XSERR_BASE +#define XSERR_VM_IN_CONFLICT 27 + XSERR_BASE /** @@ -179,28 +181,28 @@ typedef struct xen_xs_policystate char *errors; } xen_xs_policystate; -void +extern void xen_xs_policystate_free(xen_xs_policystate *state); /** * Get the referenced policy's record. */ -bool +extern bool xen_xspolicy_get_record(xen_session *session, xen_xspolicy_record **result, xen_xspolicy xspolicy); /** * Get the UUID field of the given policy. */ -bool +extern bool xen_xspolicy_get_uuid(xen_session *session, char **result, xen_xspolicy xspolicy); /** * Get a policy given it's UUID */ -bool +extern bool xen_xspolicy_get_by_uuid(xen_session *session, xen_xspolicy *result, char *uuid); @@ -208,7 +210,7 @@ xen_xspolicy_get_by_uuid(xen_session *session, xen_xspolicy *result, /** * Get the types of policies supported by the system. */ -bool +extern bool xen_xspolicy_get_xstype(xen_session *session, xs_type *result); @@ -216,13 +218,13 @@ xen_xspolicy_get_xstype(xen_session *session, xs_type *result); * Get information about the currently managed policy. * (The API allows only one policy to be on the system.) */ -bool +extern bool xen_xspolicy_get_xspolicy(xen_session *session, xen_xs_policystate **result); /** * Activate the referenced policy by loading it into the hypervisor. */ -bool +extern bool xen_xspolicy_activate_xspolicy(xen_session *session, int64_t *result, xen_xspolicy xspolicy, xs_instantiationflags flags); @@ -234,7 +236,7 @@ xen_xspolicy_activate_xspolicy(xen_session *session, int64_t *result, * on whether to load the policy immediately and whether to overwrite * an existing policy on the system. */ -bool +extern bool xen_xspolicy_set_xspolicy(xen_session *session, xen_xs_policystate **result, xs_type type, char *repr, int64_t flags, bool overwrite); @@ -248,7 +250,7 @@ xen_xspolicy_set_xspolicy(xen_session *session, xen_xs_policystate **result, * for example fail if other domains than Domain-0 are running and have * different labels than Domain-0. */ -bool +extern bool xen_xspolicy_reset_xspolicy(xen_session *session, xen_xs_policystate **result, xs_type type); @@ -281,4 +283,11 @@ extern bool xen_xspolicy_get_resource_label(xen_session *session, char **label, char *resource); +/** + * Check whether a VM with the given VM-label could run. + */ +extern bool +xen_xspolicy_can_run(xen_session *session, int64_t *result, + char *security_label); + #endif diff --git a/tools/libxen/src/xen_xspolicy.c b/tools/libxen/src/xen_xspolicy.c index e5f290c1a1..fe0dc255a5 100644 --- a/tools/libxen/src/xen_xspolicy.c +++ b/tools/libxen/src/xen_xspolicy.c @@ -343,3 +343,21 @@ xen_xspolicy_activate_xspolicy(xen_session *session, XEN_CALL_("XSPolicy.activate_xspolicy"); return session->ok; } + + +bool +xen_xspolicy_can_run(xen_session *session, int64_t *result, + char *security_label) +{ + abstract_value param_values[] = + { + { .type = &abstract_type_string, + .u.string_val = security_label } + }; + + abstract_type result_type = abstract_type_int; + + *result = 0; + XEN_CALL_("XSPolicy.can_run"); + return session->ok; +} |