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