2
* A security identifier table (sidtab) is a hash table
3
* of security context structures indexed by SID value.
5
* Author : Stephen Smalley, <sds@epoch.ncsc.mil>
8
/* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
14
#include <xen/spinlock.h>
17
u32 sid; /* security identifier */
18
struct context context; /* security context structure */
19
struct sidtab_node *next;
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
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;
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_ */