debuggers.hg

view xen/xsm/flask/ss/sidtab.h @ 0:7d21f7218375

Exact replica of unstable on 051908 + README-this
author Mukesh Rathor
date Mon May 19 15:34:57 2008 -0700 (2008-05-19)
parents
children
line source
1 /*
2 * A security identifier table (sidtab) is a hash table
3 * of security context structures indexed by SID value.
4 *
5 * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
6 */
8 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
10 #ifndef _SS_SIDTAB_H_
11 #define _SS_SIDTAB_H_
13 #include "context.h"
14 #include <xen/spinlock.h>
16 struct sidtab_node {
17 u32 sid; /* security identifier */
18 struct context context; /* security context structure */
19 struct sidtab_node *next;
20 };
22 #define SIDTAB_HASH_BITS 7
23 #define SIDTAB_HASH_BUCKETS (1 << SIDTAB_HASH_BITS)
24 #define SIDTAB_HASH_MASK (SIDTAB_HASH_BUCKETS-1)
26 #define SIDTAB_SIZE SIDTAB_HASH_BUCKETS
28 struct sidtab {
29 struct sidtab_node **htable;
30 unsigned int nel; /* number of elements */
31 unsigned int next_sid; /* next SID to allocate */
32 unsigned char shutdown;
33 spinlock_t lock;
34 };
36 int sidtab_init(struct sidtab *s);
37 int sidtab_insert(struct sidtab *s, u32 sid, struct context *context);
38 struct context *sidtab_search(struct sidtab *s, u32 sid);
40 int sidtab_map(struct sidtab *s,
41 int (*apply) (u32 sid, struct context *context, void *args), void *args);
43 void sidtab_map_remove_on_error(struct sidtab *s,
44 int (*apply) (u32 sid, struct context *context, void *args), void *args);
46 int sidtab_context_to_sid(struct sidtab *s, struct context *context, u32 *sid);
48 void sidtab_hash_eval(struct sidtab *h, char *tag);
49 void sidtab_destroy(struct sidtab *s);
50 void sidtab_set(struct sidtab *dst, struct sidtab *src);
51 void sidtab_shutdown(struct sidtab *s);
53 #endif /* _SS_SIDTAB_H_ */