diff options
author | Daniel De Graaf <dgdegra@tycho.nsa.gov> | 2012-02-02 15:24:13 +0000 |
---|---|---|
committer | Daniel De Graaf <dgdegra@tycho.nsa.gov> | 2012-02-02 15:24:13 +0000 |
commit | 4a5445e86711140d0f2c068075a461f489ff793f (patch) | |
tree | 39d776926a0882c247f41af8941e42fcffdc5494 /tools/flask | |
parent | e26bb0662fc0ed8d78742352e090ac82eb7bb95b (diff) | |
download | xen-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.c | 59 | ||||
-rw-r--r-- | tools/flask/libflask/include/libflask.h | 3 |
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); |