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