# get_ordered_context_list

## NAME



           get_ordered_context_list, get_ordered_context_list_with_level,
           get_default_context, get_default_context_with_level,
           get_default_context_with_role, get_default_context_with_rolelevel,
           query_user_context, manual_user_enter_context, get_default_role -
           determine SELinux context(s) for user sessions
    


## SYNOPSIS



           **#include <selinux/selinux.h>**
           **#include <selinux/get_context_list.h>**
    
           **int get_ordered_context_list(const char ***_user_**, const char**
           *****_fromcon_**, char *****_list_**);**
    
           **int get_ordered_context_list_with_level(const char ***_user_**, const**
           **char ***_level_**, const char ***_fromcon_**, char *****_list_**);**
    
           **int get_default_context(const char ***_user_**, const char ***_fromcon_**,**
           **char ****_newcon_**);**
    
           **int get_default_context_with_level(const char ***_user_**, const char**
           *****_level_**, const char ***_fromcon_**, char ****_newcon_**);**
    
           **int get_default_context_with_role(const char ***_user_**, const char**
           *****_role_**, const char ***_fromcon_**, char ****_newcon_**);**
    
           **int get_default_context_with_rolelevel(const char ***_user_**, const**
           **char ***_role_**, const char ***_level_**, const char ***_fromcon_**, char**
           ******_newcon_**);**
    
           **int query_user_context(char ****_list_**, char ****_newcon_**);**
    
           **int manual_user_enter_context(const char ***_user_**, char ****_newcon_**);**
    
           **int get_default_type(const char ***_role_**, char ****_type_**);**
    


## DESCRIPTION



           This family of functions can be used to obtain either a
           prioritized list of all reachable security contexts for a given
           SELinux user or a single default (highest priority) context for a
           given SELinux user for use by login-like programs.  These
           functions takes a SELinux user identity that must be defined in
           the SELinux policy as their input, not a Linux username.  Most
           callers should typically first call getseuserbyname(3) to look up
           the SELinux user identity and level for a given Linux username and
           then invoke one of **get_ordered_context_list_with_level**() or
           **get_default_context_with_level**() with the returned SELinux user
           and level as inputs.
    
           **get_ordered_context_list**() obtains the list of contexts for the
           specified SELinux _user_ identity that are reachable from the
           specified _fromcon_ context based on the global
           _/etc/selinux/{SELINUXTYPE}/contexts/default_contexts_ file and the
           per-user _/etc/selinux/{SELINUXTYPE}/contexts/users/ <username>_ file
           if it exists.  The _fromcon_ parameter may be NULL to indicate that
           the current context should be used.  The function returns the
           number of contexts in the list, or -1 upon errors.  The list must
           be freed using the freeconary(3) function.
    
           **get_ordered_context_list_with_level**() invokes the
           **get_ordered_context_list**() function and applies the specified
           level.
    
           **get_default_context**() is the same as **get_ordered_context_list**()
           but only returns a single context which has to be freed with
           freecon(3).
    
           **get_default_context_with_level**() invokes the **get_default_context**()
           function and applies the specified level.
    
           **get_default_context_with_role**() is the same as
           **get_default_context**() but only returns a context with the
           specified role, returning -1 if no such context is reachable for
           the user.
    
           **get_default_context_with_rolelevel**() invokes the
           **get_default_context_with_role**() function and applies the specified
           level.
    
           **query_user_context**() takes a list of contexts, queries the user
           via stdin/stdout as to which context they want, and returns a new
           context as selected by the user (which has to be freed with
           freecon(3)).
    
           **manual_user_enter_context**() allows the user to manually enter a
           context as a fallback if a list of authorized contexts could not
           be obtained. Caller must free via freecon(3).
    
           **get_default_type**() Get the default type (domain) for _role_ and set
           _type_ to refer to it, which has to be freed with free.
    


## RETURN VALUE



           **get_ordered_context_list**() and
           **get_ordered_context_list_with_level**() return the number of
           contexts in the list upon success or -1 upon errors.  The other
           functions return 0 for success or -1 for errors.
    


* * *