# selabel_open

## NAME



           selabel_open, selabel_close - userspace SELinux labeling interface
    


## SYNOPSIS



           **#include <selinux/selinux.h>**
           **#include <selinux/label.h>**
    
           **struct selabel_handle *selabel_open(unsigned int** _backend_**,**
                                               **const struct selinux_opt**
                                               *****_options_**,**
                                               **unsigned** _nopt_**);**
    
           **void selabel_close(struct selabel_handle ***_hnd_**);**
    


## DESCRIPTION



           **selabel_open**() is used to initialize a labeling handle to be used
           for lookup operations.  The _backend_ argument specifies which
           backend is to be opened; the list of current backends appears in
           **BACKENDS** below.
    
           The _options_ argument should be NULL or a pointer to an array of
           **selinux_opt** structures of length _nopt_ :
    
                  struct selinux_opt {
                      int         type;
                      const char  *value;
                  };
    
           The available option types are described in **GLOBAL OPTIONS** below
           as well as in the documentation for each individual backend.  The
           return value on success is a non-NULL value for use in subsequent
           label operations.
    
           **selabel_close**() terminates use of a handle, freeing any internal
           resources associated with it.  After this call has been made, the
           handle must not be used again.
    


## GLOBAL OPTIONS



           Global options which may be passed to **selabel_open**() include the
           following:
    
           **SELABEL_OPT_UNUSED**
                  The option with a type code of zero is a no-op.  Thus an
                  array of options may be initizalized to zero and any
                  untouched elements will not cause an error.
    
           **SELABEL_OPT_VALIDATE**
                  A non-null value for this option enables context
                  validation.  By default, security_check_context(3) is used;
                  a custom validation function can be provided via
                  selinux_set_callback(3).  Note that an invalid context may
                  not be treated as an error unless it is actually
                  encountered during a lookup operation.
    
           **SELABEL_OPT_DIGEST**
                  A non-null value for this option enables the generation of
                  an SHA1 digest of the spec files loaded as described in
                  selabel_digest(3)
    


## BACKENDS



           **SELABEL_CTX_FILE**
                  File contexts backend, described in selabel_file(5).
    
           **SELABEL_CTX_MEDIA**
                  Media contexts backend, described in selabel_media(5).
    
           **SELABEL_CTX_X**
                  X Windows contexts backend, described in selabel_x(5).
    
           **SELABEL_CTX_DB**
                  Database objects contexts backend, described in
                  selabel_db(5).
    


## RETURN VALUE



           A non-NULL handle value is returned on success.  On error, NULL is
           returned and _errno_ is set appropriately.
    


* * *