mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
[ACM] Replace enumerations with macros with qualified names.
Old unqualified enumeration names polluted the global namespace. Signed-off-by: Keir Fraser <keir@xensource.com>
This commit is contained in:
1 parent
abb88790d2
commit
8d7ca20f1e
8 files changed
+37
-35
No files matched your search
@@ -54,7 +54,7 @@ void * __getssid(int domid, uint32_t *buflen)
|
||||
getssid.interface_version = ACM_INTERFACE_VERSION;
|
||||
set_xen_guest_handle(getssid.ssidbuf, buf);
|
||||
getssid.ssidbuf_size = SSID_BUFFER_SIZE;
|
||||
getssid.get_ssid_by = DOMAINID;
|
||||
getssid.get_ssid_by = ACM_GETBY_domainid;
|
||||
getssid.id.domainid = domid;
|
||||
|
||||
if (xc_acm_op(xc_handle, ACMOP_getssid, &getssid, sizeof(getssid)) < 0) {
|
||||
@@ -163,19 +163,19 @@ static PyObject *getdecision(PyObject * self, PyObject * args)
|
||||
return NULL;
|
||||
|
||||
getdecision.interface_version = ACM_INTERFACE_VERSION;
|
||||
getdecision.hook = SHARING;
|
||||
getdecision.hook = ACMHOOK_sharing;
|
||||
if (!strcmp(arg1_name, "domid")) {
|
||||
getdecision.get_decision_by1 = DOMAINID;
|
||||
getdecision.get_decision_by1 = ACM_GETBY_domainid;
|
||||
getdecision.id1.domainid = atoi(arg1);
|
||||
} else {
|
||||
getdecision.get_decision_by1 = SSIDREF;
|
||||
getdecision.get_decision_by1 = ACM_GETBY_ssidref;
|
||||
getdecision.id1.ssidref = atol(arg1);
|
||||
}
|
||||
if (!strcmp(arg2_name, "domid")) {
|
||||
getdecision.get_decision_by2 = DOMAINID;
|
||||
getdecision.get_decision_by2 = ACM_GETBY_domainid;
|
||||
getdecision.id2.domainid = atoi(arg2);
|
||||
} else {
|
||||
getdecision.get_decision_by2 = SSIDREF;
|
||||
getdecision.get_decision_by2 = ACM_GETBY_ssidref;
|
||||
getdecision.id2.ssidref = atol(arg2);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -316,7 +316,7 @@ acm_init_domain_ssid(domid_t id, ssidref_t ssidref)
|
||||
return ACM_INIT_SSID_ERROR;
|
||||
}
|
||||
|
||||
ssid->datatype = DOMAIN;
|
||||
ssid->datatype = ACM_DATATYPE_domain;
|
||||
ssid->subject = subj;
|
||||
ssid->domainid = subj->domain_id;
|
||||
ssid->primary_ssid = NULL;
|
||||
|
||||
@@ -287,14 +287,13 @@ acm_get_ssid(ssidref_t ssidref, XEN_GUEST_HANDLE(void) buf, u16 buf_size)
|
||||
}
|
||||
|
||||
int
|
||||
acm_get_decision(ssidref_t ssidref1, ssidref_t ssidref2,
|
||||
enum acm_hook_type hook)
|
||||
acm_get_decision(ssidref_t ssidref1, ssidref_t ssidref2, u32 hook)
|
||||
{
|
||||
int ret = ACM_ACCESS_DENIED;
|
||||
switch (hook) {
|
||||
|
||||
case SHARING:
|
||||
/* SHARING Hook restricts access in STE policy only */
|
||||
case ACMHOOK_sharing:
|
||||
/* Sharing hook restricts access in STE policy only */
|
||||
ret = acm_sharing(ssidref1, ssidref2);
|
||||
break;
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ ste_init_domain_ssid(void **ste_ssid, ssidref_t ssidref)
|
||||
}
|
||||
/* clean ste cache */
|
||||
for (i=0; i<ACM_TE_CACHE_SIZE; i++)
|
||||
ste_ssidp->ste_cache[i].valid = FREE;
|
||||
ste_ssidp->ste_cache[i].valid = ACM_STE_free;
|
||||
|
||||
(*ste_ssid) = ste_ssidp;
|
||||
printkd("%s: determined ste_ssidref to %x.\n",
|
||||
@@ -329,7 +329,7 @@ ste_set_policy(u8 *buf, u32 buf_size)
|
||||
ste_ssid = GET_SSIDP(ACM_SIMPLE_TYPE_ENFORCEMENT_POLICY,
|
||||
(struct acm_ssid_domain *)(*pd)->ssid);
|
||||
for (i=0; i<ACM_TE_CACHE_SIZE; i++)
|
||||
ste_ssid->ste_cache[i].valid = FREE;
|
||||
ste_ssid->ste_cache[i].valid = ACM_STE_free;
|
||||
}
|
||||
read_unlock(&domlist_lock);
|
||||
return ACM_OK;
|
||||
@@ -397,7 +397,7 @@ check_cache(struct domain *dom, domid_t rdom) {
|
||||
(struct acm_ssid_domain *)(dom->ssid));
|
||||
|
||||
for(i=0; i< ACM_TE_CACHE_SIZE; i++) {
|
||||
if ((ste_ssid->ste_cache[i].valid == VALID) &&
|
||||
if ((ste_ssid->ste_cache[i].valid == ACM_STE_valid) &&
|
||||
(ste_ssid->ste_cache[i].id == rdom)) {
|
||||
printkd("cache hit (entry %x, id= %x!\n", i, ste_ssid->ste_cache[i].id);
|
||||
return 1;
|
||||
@@ -418,10 +418,10 @@ cache_result(struct domain *subj, struct domain *obj) {
|
||||
ste_ssid = GET_SSIDP(ACM_SIMPLE_TYPE_ENFORCEMENT_POLICY,
|
||||
(struct acm_ssid_domain *)(subj)->ssid);
|
||||
for(i=0; i< ACM_TE_CACHE_SIZE; i++)
|
||||
if (ste_ssid->ste_cache[i].valid == FREE)
|
||||
if (ste_ssid->ste_cache[i].valid == ACM_STE_free)
|
||||
break;
|
||||
if (i< ACM_TE_CACHE_SIZE) {
|
||||
ste_ssid->ste_cache[i].valid = VALID;
|
||||
ste_ssid->ste_cache[i].valid = ACM_STE_valid;
|
||||
ste_ssid->ste_cache[i].id = obj->domain_id;
|
||||
} else
|
||||
printk ("Cache of dom %x is full!\n", subj->domain_id);
|
||||
@@ -451,9 +451,9 @@ clean_id_from_cache(domid_t id)
|
||||
goto out;
|
||||
}
|
||||
for (i=0; i<ACM_TE_CACHE_SIZE; i++)
|
||||
if ((ste_ssid->ste_cache[i].valid == VALID) &&
|
||||
if ((ste_ssid->ste_cache[i].valid == ACM_STE_valid) &&
|
||||
(ste_ssid->ste_cache[i].id == id))
|
||||
ste_ssid->ste_cache[i].valid = FREE;
|
||||
ste_ssid->ste_cache[i].valid = ACM_STE_free;
|
||||
}
|
||||
out:
|
||||
read_unlock(&domlist_lock);
|
||||
|
||||
@@ -106,9 +106,9 @@ long do_acm_op(int cmd, XEN_GUEST_HANDLE(void) arg)
|
||||
if (getssid.interface_version != ACM_INTERFACE_VERSION)
|
||||
return -EACCES;
|
||||
|
||||
if (getssid.get_ssid_by == SSIDREF)
|
||||
if (getssid.get_ssid_by == ACM_GETBY_ssidref)
|
||||
ssidref = getssid.id.ssidref;
|
||||
else if (getssid.get_ssid_by == DOMAINID)
|
||||
else if (getssid.get_ssid_by == ACM_GETBY_domainid)
|
||||
{
|
||||
struct domain *subj = find_domain_by_id(getssid.id.domainid);
|
||||
if (!subj)
|
||||
@@ -143,9 +143,9 @@ long do_acm_op(int cmd, XEN_GUEST_HANDLE(void) arg)
|
||||
if (getdecision.interface_version != ACM_INTERFACE_VERSION)
|
||||
return -EACCES;
|
||||
|
||||
if (getdecision.get_decision_by1 == SSIDREF)
|
||||
if (getdecision.get_decision_by1 == ACM_GETBY_ssidref)
|
||||
ssidref1 = getdecision.id1.ssidref;
|
||||
else if (getdecision.get_decision_by1 == DOMAINID)
|
||||
else if (getdecision.get_decision_by1 == ACM_GETBY_domainid)
|
||||
{
|
||||
struct domain *subj = find_domain_by_id(getdecision.id1.domainid);
|
||||
if (!subj)
|
||||
@@ -167,9 +167,9 @@ long do_acm_op(int cmd, XEN_GUEST_HANDLE(void) arg)
|
||||
rc = -ESRCH;
|
||||
break;
|
||||
}
|
||||
if (getdecision.get_decision_by2 == SSIDREF)
|
||||
if (getdecision.get_decision_by2 == ACM_GETBY_ssidref)
|
||||
ssidref2 = getdecision.id2.ssidref;
|
||||
else if (getdecision.get_decision_by2 == DOMAINID)
|
||||
else if (getdecision.get_decision_by2 == ACM_GETBY_domainid)
|
||||
{
|
||||
struct domain *subj = find_domain_by_id(getdecision.id2.domainid);
|
||||
if (!subj)
|
||||
|
||||
@@ -59,26 +59,27 @@ extern struct ste_binary_policy ste_bin_pol;
|
||||
extern rwlock_t acm_bin_pol_rwlock;
|
||||
|
||||
/* subject and object type definitions */
|
||||
enum acm_datatype { DOMAIN };
|
||||
#define ACM_DATATYPE_domain 1
|
||||
|
||||
/* defines number of access decisions to other domains can be cached
|
||||
* one entry per domain, TE does not distinguish evtchn or grant_table */
|
||||
#define ACM_TE_CACHE_SIZE 8
|
||||
enum acm_ste_flag { VALID, FREE };
|
||||
#define ACM_STE_valid 0
|
||||
#define ACM_STE_free 1
|
||||
|
||||
/* cache line:
|
||||
* if cache_line.valid==VALID, then
|
||||
* if cache_line.valid==ACM_STE_valid, then
|
||||
* STE decision is cached as "permitted"
|
||||
* on domain cache_line.id
|
||||
*/
|
||||
struct acm_ste_cache_line {
|
||||
enum acm_ste_flag valid;
|
||||
int valid; /* ACM_STE_* */
|
||||
domid_t id;
|
||||
};
|
||||
|
||||
/* general definition of a subject security id */
|
||||
struct acm_ssid_domain {
|
||||
enum acm_datatype datatype; /* type of subject (e.g., partition) */
|
||||
int datatype; /* type of subject (e.g., partition): ACM_DATATYPE_* */
|
||||
ssidref_t ssidref; /* combined security reference */
|
||||
void *primary_ssid; /* primary policy ssid part (e.g. chinese wall) */
|
||||
void *secondary_ssid; /* secondary policy ssid part (e.g. type enforcement) */
|
||||
@@ -124,7 +125,7 @@ int acm_set_policy(void *buf, u32 buf_size, int isuserbuffer);
|
||||
int acm_get_policy(void *buf, u32 buf_size);
|
||||
int acm_dump_statistics(void *buf, u16 buf_size);
|
||||
int acm_get_ssid(ssidref_t ssidref, u8 *buf, u16 buf_size);
|
||||
int acm_get_decision(ssidref_t ssidref1, ssidref_t ssidref2, enum acm_hook_type hook);
|
||||
int acm_get_decision(ssidref_t ssidref1, ssidref_t ssidref2, u32 hook);
|
||||
int acm_set_policy_reference(u8 * buf, u32 buf_size);
|
||||
int acm_dump_policy_reference(u8 *buf, u32 buf_size);
|
||||
#endif
|
||||
|
||||
@@ -69,7 +69,8 @@
|
||||
typedef uint32_t ssidref_t;
|
||||
|
||||
/* hooks that are known to domains */
|
||||
enum acm_hook_type {NONE=0, SHARING};
|
||||
#define ACMHOOK_none 0
|
||||
#define ACMHOOK_sharing 1
|
||||
|
||||
/* -------security policy relevant type definitions-------- */
|
||||
|
||||
|
||||
@@ -57,11 +57,12 @@ struct acm_dumpstats {
|
||||
|
||||
|
||||
#define ACMOP_getssid 4
|
||||
enum get_type {UNSET=0, SSIDREF, DOMAINID};
|
||||
#define ACM_GETBY_ssidref 1
|
||||
#define ACM_GETBY_domainid 2
|
||||
struct acm_getssid {
|
||||
/* IN */
|
||||
uint32_t interface_version;
|
||||
uint32_t get_ssid_by;
|
||||
uint32_t get_ssid_by; /* ACM_GETBY_* */
|
||||
union {
|
||||
domaintype_t domainid;
|
||||
ssidref_t ssidref;
|
||||
@@ -74,8 +75,8 @@ struct acm_getssid {
|
||||
struct acm_getdecision {
|
||||
/* IN */
|
||||
uint32_t interface_version;
|
||||
uint32_t get_decision_by1;
|
||||
uint32_t get_decision_by2;
|
||||
uint32_t get_decision_by1; /* ACM_GETBY_* */
|
||||
uint32_t get_decision_by2; /* ACM_GETBY_* */
|
||||
union {
|
||||
domaintype_t domainid;
|
||||
ssidref_t ssidref;
|
||||
|
||||