.TH "get_ordered_context_list" "3" "1 January 2004" "russell@coker.com.au" "SELinux"
.SH "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
.
.SH "SYNOPSIS"
.B #include <selinux/selinux.h>
.br
.B #include <selinux/get_context_list.h>
.sp
.BI "int get_ordered_context_list(const char *" user ", char * "fromcon ", char ***" list );
.sp
.BI "int get_ordered_context_list_with_level(const char *" user ", const char *" level ", char * "fromcon ", char ***" list );
.sp
.BI "int get_default_context(const char *" user ", char * "fromcon ", char **" newcon );
.sp
.BI "int get_default_context_with_level(const char *" user ", const char *" level ", char * "fromcon ", char **" newcon );
.sp
.BI "int get_default_context_with_role(const char *" user ", const char *" role ", char * " fromcon ", char **" newcon ");
.sp
.BI "int get_default_context_with_rolelevel(const char *" user ", const char *" level ", const char *" role ", char * " fromcon ", char **" newcon ");
.sp
.BI "int query_user_context(char **" list ", char **" newcon );
.sp
.BI "int manual_user_enter_context(const char *" user ", char **" newcon );
.sp
.BI "int get_default_type(const char *" role ", char **" type );
.
.SH "DESCRIPTION"
.BR get_ordered_context_list ()
invokes the 
.BR security_compute_user (3)
function to obtain the list of contexts for the specified
.I user
that are reachable from the specified
.I fromcon
context.  The function then orders the resulting list based on the global
.I \%/etc/selinux/{SELINUXTYPE}/contexts/default_contexts
file and the per-user
.I \%/etc/selinux/{SELINUXTYPE}/contexts/users/<username>
file if it exists.  The 
.I 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
.BR freeconary (3)
function.

.BR get_ordered_context_list_with_level ()
invokes the
.BR \%get_ordered_context_list ()
function and applies the specified level.

.BR get_default_context ()
is the same as
.BR get_ordered_context_list ()
but only returns a single context
which has to be freed with
.BR freecon (3).

.BR get_default_context_with_level ()
invokes the
.BR get_default_context ()
function and applies the specified level.

.BR get_default_context_with_role ()
is the same as
.BR get_default_context ()
but only returns a context with the specified role, returning \-1 if no
such context is reachable for the user.

.BR get_default_context_with_rolelevel ()
invokes the
.BR \%get_default_context_with_role ()
function and applies the specified level.

.BR 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
.BR freecon (3)).

.BR 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
.BR freecon (3).

.BR get_default_type ()
Get the default type (domain) for
.I role
and set
.I type
to refer to it, which has to be freed with free.
.
.SH "RETURN VALUE"
.BR get_ordered_context_list ()
and
.BR 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.
.
.SH "SEE ALSO"
.ad l
.nh
.BR selinux (8),
.BR freeconary (3),
.BR freecon (3),
.BR security_compute_av (3),
.BR getseuserbyname (3)
