Home | History | Annotate | Download | only in semanage
      1 /* Copyright (C) 2005 Red Hat, Inc. */
      2 
      3 #ifndef _SEMANAGE_USER_RECORD_H_
      4 #define _SEMANAGE_USER_RECORD_H_
      5 
      6 #include <stddef.h>
      7 #include <semanage/handle.h>
      8 
      9 struct semanage_user;
     10 typedef struct semanage_user semanage_user_t;
     11 
     12 #ifndef _SEMANAGE_USER_KEY_DEFINED_
     13 struct semanage_user_key;
     14 typedef struct semanage_user_key semanage_user_key_t;
     15 #define _SEMANAGE_USER_KEY_DEFINED_
     16 #endif
     17 
     18 /* Key */
     19 extern int semanage_user_key_create(semanage_handle_t * handle,
     20 				    const char *name,
     21 				    semanage_user_key_t ** key);
     22 
     23 extern int semanage_user_key_extract(semanage_handle_t * handle,
     24 				     const semanage_user_t * user,
     25 				     semanage_user_key_t ** key);
     26 
     27 extern void semanage_user_key_free(semanage_user_key_t * key);
     28 
     29 extern int semanage_user_compare(const semanage_user_t * user,
     30 				 const semanage_user_key_t * key);
     31 
     32 extern int semanage_user_compare2(const semanage_user_t * user,
     33 				  const semanage_user_t * user2);
     34 
     35 /* Name */
     36 extern const char *semanage_user_get_name(const semanage_user_t * user);
     37 
     38 extern int semanage_user_set_name(semanage_handle_t * handle,
     39 				  semanage_user_t * user, const char *name);
     40 
     41 /* Labeling prefix */
     42 extern const char *semanage_user_get_prefix(const semanage_user_t * user);
     43 
     44 extern int semanage_user_set_prefix(semanage_handle_t * handle,
     45 				    semanage_user_t * user, const char *name);
     46 
     47 /* MLS */
     48 extern const char *semanage_user_get_mlslevel(const semanage_user_t * user);
     49 
     50 extern int semanage_user_set_mlslevel(semanage_handle_t * handle,
     51 				      semanage_user_t * user,
     52 				      const char *mls_level);
     53 
     54 extern const char *semanage_user_get_mlsrange(const semanage_user_t * user);
     55 
     56 extern int semanage_user_set_mlsrange(semanage_handle_t * handle,
     57 				      semanage_user_t * user,
     58 				      const char *mls_range);
     59 
     60 /* Role management */
     61 extern int semanage_user_get_num_roles(const semanage_user_t * user);
     62 
     63 extern int semanage_user_add_role(semanage_handle_t * handle,
     64 				  semanage_user_t * user, const char *role);
     65 
     66 extern void semanage_user_del_role(semanage_user_t * user, const char *role);
     67 
     68 extern int semanage_user_has_role(const semanage_user_t * user,
     69 				  const char *role);
     70 
     71 extern int semanage_user_get_roles(semanage_handle_t * handle,
     72 				   const semanage_user_t * user,
     73 				   const char ***roles_arr,
     74 				   unsigned int *num_roles);
     75 
     76 extern int semanage_user_set_roles(semanage_handle_t * handle,
     77 				   semanage_user_t * user,
     78 				   const char **roles_arr,
     79 				   unsigned int num_roles);
     80 
     81 /* Create/Clone/Destroy */
     82 extern int semanage_user_create(semanage_handle_t * handle,
     83 				semanage_user_t ** user_ptr);
     84 
     85 extern int semanage_user_clone(semanage_handle_t * handle,
     86 			       const semanage_user_t * user,
     87 			       semanage_user_t ** user_ptr);
     88 
     89 extern void semanage_user_free(semanage_user_t * user);
     90 #endif
     91