1181624Skmacy/* 2181624Skmacy * acm_ops.h: Xen access control module hypervisor commands 3181624Skmacy * 4181624Skmacy * Permission is hereby granted, free of charge, to any person obtaining a copy 5181624Skmacy * of this software and associated documentation files (the "Software"), to 6181624Skmacy * deal in the Software without restriction, including without limitation the 7181624Skmacy * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 8181624Skmacy * sell copies of the Software, and to permit persons to whom the Software is 9181624Skmacy * furnished to do so, subject to the following conditions: 10181624Skmacy * 11181624Skmacy * The above copyright notice and this permission notice shall be included in 12181624Skmacy * all copies or substantial portions of the Software. 13181624Skmacy * 14181624Skmacy * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15181624Skmacy * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16181624Skmacy * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17181624Skmacy * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18181624Skmacy * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19181624Skmacy * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20181624Skmacy * DEALINGS IN THE SOFTWARE. 21181624Skmacy * 22181624Skmacy * Reiner Sailer <sailer@watson.ibm.com> 23181624Skmacy * Copyright (c) 2005,2006 International Business Machines Corporation. 24181624Skmacy */ 25181624Skmacy 26181624Skmacy#ifndef __XEN_PUBLIC_ACM_OPS_H__ 27181624Skmacy#define __XEN_PUBLIC_ACM_OPS_H__ 28181624Skmacy 29181624Skmacy#include "xen.h" 30181624Skmacy#include "acm.h" 31181624Skmacy 32181624Skmacy/* 33181624Skmacy * Make sure you increment the interface version whenever you modify this file! 34181624Skmacy * This makes sure that old versions of acm tools will stop working in a 35181624Skmacy * well-defined way (rather than crashing the machine, for instance). 36181624Skmacy */ 37181624Skmacy#define ACM_INTERFACE_VERSION 0xAAAA000A 38181624Skmacy 39181624Skmacy/************************************************************************/ 40181624Skmacy 41181624Skmacy/* 42181624Skmacy * Prototype for this hypercall is: 43181624Skmacy * int acm_op(int cmd, void *args) 44181624Skmacy * @cmd == ACMOP_??? (access control module operation). 45181624Skmacy * @args == Operation-specific extra arguments (NULL if none). 46181624Skmacy */ 47181624Skmacy 48181624Skmacy 49181624Skmacy#define ACMOP_setpolicy 1 50181624Skmacystruct acm_setpolicy { 51181624Skmacy /* IN */ 52181624Skmacy XEN_GUEST_HANDLE_64(void) pushcache; 53181624Skmacy uint32_t pushcache_size; 54181624Skmacy}; 55181624Skmacy 56181624Skmacy 57181624Skmacy#define ACMOP_getpolicy 2 58181624Skmacystruct acm_getpolicy { 59181624Skmacy /* IN */ 60181624Skmacy XEN_GUEST_HANDLE_64(void) pullcache; 61181624Skmacy uint32_t pullcache_size; 62181624Skmacy}; 63181624Skmacy 64181624Skmacy 65181624Skmacy#define ACMOP_dumpstats 3 66181624Skmacystruct acm_dumpstats { 67181624Skmacy /* IN */ 68181624Skmacy XEN_GUEST_HANDLE_64(void) pullcache; 69181624Skmacy uint32_t pullcache_size; 70181624Skmacy}; 71181624Skmacy 72181624Skmacy 73181624Skmacy#define ACMOP_getssid 4 74181624Skmacy#define ACM_GETBY_ssidref 1 75181624Skmacy#define ACM_GETBY_domainid 2 76181624Skmacystruct acm_getssid { 77181624Skmacy /* IN */ 78181624Skmacy uint32_t get_ssid_by; /* ACM_GETBY_* */ 79181624Skmacy union { 80181624Skmacy domaintype_t domainid; 81181624Skmacy ssidref_t ssidref; 82181624Skmacy } id; 83181624Skmacy XEN_GUEST_HANDLE_64(void) ssidbuf; 84181624Skmacy uint32_t ssidbuf_size; 85181624Skmacy}; 86181624Skmacy 87181624Skmacy#define ACMOP_getdecision 5 88181624Skmacystruct acm_getdecision { 89181624Skmacy /* IN */ 90181624Skmacy uint32_t get_decision_by1; /* ACM_GETBY_* */ 91181624Skmacy uint32_t get_decision_by2; /* ACM_GETBY_* */ 92181624Skmacy union { 93181624Skmacy domaintype_t domainid; 94181624Skmacy ssidref_t ssidref; 95181624Skmacy } id1; 96181624Skmacy union { 97181624Skmacy domaintype_t domainid; 98181624Skmacy ssidref_t ssidref; 99181624Skmacy } id2; 100181624Skmacy uint32_t hook; 101181624Skmacy /* OUT */ 102181624Skmacy uint32_t acm_decision; 103181624Skmacy}; 104181624Skmacy 105181624Skmacy 106181624Skmacy#define ACMOP_chgpolicy 6 107181624Skmacystruct acm_change_policy { 108181624Skmacy /* IN */ 109181624Skmacy XEN_GUEST_HANDLE_64(void) policy_pushcache; 110181624Skmacy uint32_t policy_pushcache_size; 111181624Skmacy XEN_GUEST_HANDLE_64(void) del_array; 112181624Skmacy uint32_t delarray_size; 113181624Skmacy XEN_GUEST_HANDLE_64(void) chg_array; 114181624Skmacy uint32_t chgarray_size; 115181624Skmacy /* OUT */ 116181624Skmacy /* array with error code */ 117181624Skmacy XEN_GUEST_HANDLE_64(void) err_array; 118181624Skmacy uint32_t errarray_size; 119181624Skmacy}; 120181624Skmacy 121181624Skmacy#define ACMOP_relabeldoms 7 122181624Skmacystruct acm_relabel_doms { 123181624Skmacy /* IN */ 124181624Skmacy XEN_GUEST_HANDLE_64(void) relabel_map; 125181624Skmacy uint32_t relabel_map_size; 126181624Skmacy /* OUT */ 127181624Skmacy XEN_GUEST_HANDLE_64(void) err_array; 128181624Skmacy uint32_t errarray_size; 129181624Skmacy}; 130181624Skmacy 131181624Skmacy/* future interface to Xen */ 132181624Skmacystruct xen_acmctl { 133181624Skmacy uint32_t cmd; 134181624Skmacy uint32_t interface_version; 135181624Skmacy union { 136181624Skmacy struct acm_setpolicy setpolicy; 137181624Skmacy struct acm_getpolicy getpolicy; 138181624Skmacy struct acm_dumpstats dumpstats; 139181624Skmacy struct acm_getssid getssid; 140181624Skmacy struct acm_getdecision getdecision; 141181624Skmacy struct acm_change_policy change_policy; 142181624Skmacy struct acm_relabel_doms relabel_doms; 143181624Skmacy } u; 144181624Skmacy}; 145181624Skmacy 146181624Skmacytypedef struct xen_acmctl xen_acmctl_t; 147181624SkmacyDEFINE_XEN_GUEST_HANDLE(xen_acmctl_t); 148181624Skmacy 149181624Skmacy#endif /* __XEN_PUBLIC_ACM_OPS_H__ */ 150181624Skmacy 151181624Skmacy/* 152181624Skmacy * Local variables: 153181624Skmacy * mode: C 154181624Skmacy * c-set-style: "BSD" 155181624Skmacy * c-basic-offset: 4 156181624Skmacy * tab-width: 4 157181624Skmacy * indent-tabs-mode: nil 158181624Skmacy * End: 159181624Skmacy */ 160