~ubuntu-branches/ubuntu/utopic/xen/utopic

« back to all changes in this revision

Viewing changes to xen/xsm/flask/ss/sidtab.h

  • Committer: Bazaar Package Importer
  • Author(s): Bastian Blank
  • Date: 2010-05-06 15:47:38 UTC
  • mto: (1.3.1) (15.1.1 sid) (4.1.1 experimental)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20100506154738-agoz0rlafrh1fnq7
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 */
 
7
 
 
8
/* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
9
 
 
10
#ifndef _SS_SIDTAB_H_
 
11
#define _SS_SIDTAB_H_
 
12
 
 
13
#include "context.h"
 
14
#include <xen/spinlock.h>
 
15
 
 
16
struct sidtab_node {
 
17
    u32 sid;        /* security identifier */
 
18
    struct context context;    /* security context structure */
 
19
    struct sidtab_node *next;
 
20
};
 
21
 
 
22
#define SIDTAB_HASH_BITS 7
 
23
#define SIDTAB_HASH_BUCKETS (1 << SIDTAB_HASH_BITS)
 
24
#define SIDTAB_HASH_MASK (SIDTAB_HASH_BUCKETS-1)
 
25
 
 
26
#define SIDTAB_SIZE SIDTAB_HASH_BUCKETS
 
27
 
 
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
};
 
35
 
 
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);
 
39
 
 
40
int sidtab_map(struct sidtab *s,
 
41
    int (*apply) (u32 sid, struct context *context, void *args), void *args);
 
42
 
 
43
void sidtab_map_remove_on_error(struct sidtab *s,
 
44
    int (*apply) (u32 sid, struct context *context, void *args), void *args);
 
45
 
 
46
int sidtab_context_to_sid(struct sidtab *s, struct context *context, u32 *sid);
 
47
 
 
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);
 
52
 
 
53
#endif    /* _SS_SIDTAB_H_ */