aboutsummaryrefslogtreecommitdiffstats
path: root/tools/flask
diff options
context:
space:
mode:
authorDaniel De Graaf <dgdegra@tycho.nsa.gov>2012-02-02 15:24:13 +0000
committerDaniel De Graaf <dgdegra@tycho.nsa.gov>2012-02-02 15:24:13 +0000
commit4a5445e86711140d0f2c068075a461f489ff793f (patch)
tree39d776926a0882c247f41af8941e42fcffdc5494 /tools/flask
parente26bb0662fc0ed8d78742352e090ac82eb7bb95b (diff)
downloadxen-4a5445e86711140d0f2c068075a461f489ff793f.tar.gz
xen-4a5445e86711140d0f2c068075a461f489ff793f.tar.bz2
xen-4a5445e86711140d0f2c068075a461f489ff793f.zip
libflask: Add boolean manipulation functions
Add wrappers for getting and setting policy booleans by name or ID. Signed-off-by: Daniel De Graaf <dgdegra@tycho.nsa.gov> Committed-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'tools/flask')
-rw-r--r--tools/flask/libflask/flask_op.c59
-rw-r--r--tools/flask/libflask/include/libflask.h3
2 files changed, 62 insertions, 0 deletions
diff --git a/tools/flask/libflask/flask_op.c b/tools/flask/libflask/flask_op.c
index d4b8ef01f5..412a05d7c5 100644
--- a/tools/flask/libflask/flask_op.c
+++ b/tools/flask/libflask/flask_op.c
@@ -109,6 +109,65 @@ int flask_setenforce(xc_interface *xc_handle, int mode)
return 0;
}
+int flask_getbool_byid(xc_interface *xc_handle, int id, char *name, int *curr, int *pend)
+{
+ flask_op_t op;
+ char buf[255];
+ int rv;
+
+ op.cmd = FLASK_GETBOOL2;
+ op.buf = buf;
+ op.size = 255;
+
+ snprintf(buf, sizeof buf, "%i", id);
+
+ rv = xc_flask_op(xc_handle, &op);
+
+ if ( rv )
+ return rv;
+
+ sscanf(buf, "%i %i %s", curr, pend, name);
+
+ return rv;
+}
+
+int flask_getbool_byname(xc_interface *xc_handle, char *name, int *curr, int *pend)
+{
+ flask_op_t op;
+ char buf[255];
+ int rv;
+
+ op.cmd = FLASK_GETBOOL_NAMED;
+ op.buf = buf;
+ op.size = 255;
+
+ strncpy(buf, name, op.size);
+
+ rv = xc_flask_op(xc_handle, &op);
+
+ if ( rv )
+ return rv;
+
+ sscanf(buf, "%i %i", curr, pend);
+
+ return rv;
+}
+
+int flask_setbool(xc_interface *xc_handle, char *name, int value, int commit)
+{
+ flask_op_t op;
+ char buf[255];
+ int size = 255;
+
+ op.cmd = FLASK_SETBOOL_NAMED;
+ op.buf = buf;
+ op.size = size;
+
+ snprintf(buf, size, "%s %i %i", name, value, commit);
+
+ return xc_flask_op(xc_handle, &op);
+}
+
int flask_add_pirq(xc_interface *xc_handle, unsigned int pirq, char *scontext)
{
int err;
diff --git a/tools/flask/libflask/include/libflask.h b/tools/flask/libflask/include/libflask.h
index e4c34b8746..b8a6ca934e 100644
--- a/tools/flask/libflask/include/libflask.h
+++ b/tools/flask/libflask/include/libflask.h
@@ -21,6 +21,9 @@ int flask_context_to_sid(xc_interface *xc_handle, char *buf, uint32_t size, uint
int flask_sid_to_context(xc_interface *xc_handle, int sid, char *buf, uint32_t size);
int flask_getenforce(xc_interface *xc_handle);
int flask_setenforce(xc_interface *xc_handle, int mode);
+int flask_getbool_byid(xc_interface *xc_handle, int id, char *name, int *curr, int *pend);
+int flask_getbool_byname(xc_interface *xc_handle, char *name, int *curr, int *pend);
+int flask_setbool(xc_interface *xc_handle, char *name, int value, int commit);
int flask_add_pirq(xc_interface *xc_handle, unsigned int pirq, char *scontext);
int flask_add_ioport(xc_interface *xc_handle, unsigned long low, unsigned long high,
char *scontext);