1f074036424618c130dacb3464465a8b40bffef5Stephen Smalley/*
2f074036424618c130dacb3464465a8b40bffef5Stephen Smalley * A security identifier table (sidtab) is a hash table
3f074036424618c130dacb3464465a8b40bffef5Stephen Smalley * of security context structures indexed by SID value.
4f074036424618c130dacb3464465a8b40bffef5Stephen Smalley */
5f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#ifndef _SELINUX_AVC_SIDTAB_H_
6f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#define _SELINUX_AVC_SIDTAB_H_
7f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
8f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <selinux/selinux.h>
9f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <selinux/avc.h>
10f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include "dso.h"
11f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
12f074036424618c130dacb3464465a8b40bffef5Stephen Smalleystruct sidtab_node {
13f074036424618c130dacb3464465a8b40bffef5Stephen Smalley	struct security_id sid_s;
14f074036424618c130dacb3464465a8b40bffef5Stephen Smalley	struct sidtab_node *next;
15f074036424618c130dacb3464465a8b40bffef5Stephen Smalley};
16f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
17f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#define SIDTAB_HASH_BITS 7
18f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#define SIDTAB_HASH_BUCKETS (1 << SIDTAB_HASH_BITS)
19f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#define SIDTAB_HASH_MASK (SIDTAB_HASH_BUCKETS-1)
20f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#define SIDTAB_SIZE SIDTAB_HASH_BUCKETS
21f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
22f074036424618c130dacb3464465a8b40bffef5Stephen Smalleystruct sidtab {
23f074036424618c130dacb3464465a8b40bffef5Stephen Smalley	struct sidtab_node **htable;
24f074036424618c130dacb3464465a8b40bffef5Stephen Smalley	unsigned nel;
25f074036424618c130dacb3464465a8b40bffef5Stephen Smalley};
26f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
27f074036424618c130dacb3464465a8b40bffef5Stephen Smalleyint sidtab_init(struct sidtab *s) hidden;
28ab40ea9bfd71b50138f1482c4764a65ac17d8cafStephen Smalleyint sidtab_insert(struct sidtab *s, const char * ctx) hidden;
29f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
30f074036424618c130dacb3464465a8b40bffef5Stephen Smalleyint sidtab_context_to_sid(struct sidtab *s,
31ab40ea9bfd71b50138f1482c4764a65ac17d8cafStephen Smalley			  const char * ctx, security_id_t * sid) hidden;
32f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
33f074036424618c130dacb3464465a8b40bffef5Stephen Smalleyvoid sidtab_sid_stats(struct sidtab *s, char *buf, int buflen) hidden;
34f074036424618c130dacb3464465a8b40bffef5Stephen Smalleyvoid sidtab_destroy(struct sidtab *s) hidden;
35f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
36f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#endif				/* _SELINUX_AVC_SIDTAB_H_ */
37