Contenido   Archivos   Índice   Bugs   Ejemplos  

TAD vfs_acl
[TADs y estructuras modificadas o agregadas]

vfs_acl representa la ACL a nivel del VFS. Más...

Estructuras de datos privadas (ocultas)

struct  vfs_acl
 ACL a nivel VFS. Se utiliza dentro del inodo del VFS. Más...


Funciones privadas de vfs_acl

#define ACL_INUSE(e)   (e.mode != ACL_NULL_BITS)
 Determina si la entrada e de la ACL esta o no en uso.

int search_free_slot (struct vfs_acl *vfs_acl)
 Busca una entrada libre dentro de la ACL.

int search_id (struct vfs_acl *vfs_acl, int id, int type)
 Busca la entrada en la ACL que corresponde a al usuario o grupo id.


Constantes (públicas) de vfs_acl

Debe considerarse que el nombre de la constante es público y su valor privado.

#define ACL_OK   0
 Retorno de funciones que manejan las ACL.


Iterador para las acl_entry de un objeto vfs_acl

También forma parte de la interfaz de vfs_acl.

Ver acl_for_each para un ejemplo.

#define ACL_IT_ERROR   -1
 Retorno de las funciones que iteran sobre la ACL de un inodo.

#define acl_for_each(acl, i)   for(i=acl_first(acl);i!=ACL_IT_ERROR;i=acl_next(acl,i))
 Macro que itera entre todas las entradas válidas de una ACL.

acl_iterator acl_first (struct vfs_acl *vfs_acl)
 Busca la primer entrada válida dentro de la ACL.

acl_iterator acl_next (struct vfs_acl *vfs_acl, acl_iterator it)
 Busca la próxima entrada válida en la ACL a partir de una posición que se pasa como parámetro.

acl_entry acl_getentry (struct vfs_acl *vfs_acl, acl_iterator it)
 Devuelve una entrada de la ACL.


Funciones de la interfaz de vfs_acl

umode_t acl_calc_xmode (struct vfs_acl *vfs_acl, uid_t uid, gid_t gid)
 Calcula el modo tradicional de un inodo a partir de su ACL.

int xmode_to_acl (int xmode, int owner)
 Calcula los permisos compatibles con el modo.

void acl_aclinit (struct vfs_acl *vfs_acl)
 Inicializa una ACL.

void acl_acldestroy (struct vfs_acl *vfs_acl)
 Aun no está implementada, pero debería liberar la ACL que recibe como parámetro.

int acl_setmode (struct vfs_acl *vfs_acl, int id, int mode, int type)
 Establece el modo de un usuario o grupo en la ACL.

int acl_getmode (struct vfs_acl *vfs_acl, int id, int type)
 Obtiene el modo de un usuario/grupo.

int acl_getsize (struct vfs_acl *vfs_acl)
 Devuelve la cantidad de entradas válidas que existen en la ACL.


Descripción detallada

vfs_acl representa la ACL a nivel del VFS.

Este TAD oculta la representación de las listas de control de acceso a nivel del VFS, así como los algoritmos que se usan para establecer y obtener los atributos privados.

La estructura oculta vfs_acl no debe ser accedida excepto por las funciones de la interfaz aquí documentada. Como esto no es posible imponerlo en tiempo de compilación, los programadores son los responsables de mantener esta disciplina.


Documentación de las definiciones

#define ACL_OK   0
 

Retorno de funciones que manejan las ACL.

Indica que la operación se realizó con éxito.

#define ACL_IT_ERROR   -1
 

Retorno de las funciones que iteran sobre la ACL de un inodo.

Indica que no existen más entradas válidas en la ACL a partir de la posición pasada como parámetro.

#define acl_for_each acl,
     for(i=acl_first(acl);i!=ACL_IT_ERROR;i=acl_next(acl,i))
 

Macro que itera entre todas las entradas válidas de una ACL.

Parámetros:
acl ACL sobre la cual se va a iterar.
i Es el puntero iterador.
Ejemplos:
iterador_acl_entry.c.


Documentación de las funciones

int search_free_slot struct vfs_acl   vfs_acl
 

Busca una entrada libre dentro de la ACL.

Parámetros:
vfs_acl ACL donde se realizará la búsqueda.
Devuelve:
Posición dentro de vfs_acl donde se encontró el primer lugar libre, en caso de que la ACL esté llena, este valor sera MAX_ACL_LEN.

int search_id struct vfs_acl   vfs_acl,
int    id,
int    type
 

Busca la entrada en la ACL que corresponde a al usuario o grupo id.

Parámetros:
vfs_acl ACL donde se realizará la búsqueda.
id Identificación del usuario o grupo a buscar.
type Indica si id es de un usuario o de un grupo.
Devuelve:
Posición dentro de vfs_acl donde se encontró el usuario o grupo. Si esta es igual a MAX_ACL_LEN significará que no se encontró tal usuario/grupo.

umode_t acl_calc_xmode struct vfs_acl   vfs_acl,
uid_t    uid,
gid_t    gid
 

Calcula el modo tradicional de un inodo a partir de su ACL.

Parámetros:
vfs_acl ACL sobre la cual se calculará el modo tradicional.
uid Identificación del usuario dueño tradicional del inodo.
gid Identificación del grupo dueño tradicional del inodo.
Devuelve:
Un modo que se calcula a partir los permisos que tienen:
  • el usuario dueno tradicional,
  • el grupo tradicional y AllGrup;
dentro de vfs_acl.

int xmode_to_acl int    xmode,
int    owner
 

Calcula los permisos compatibles con el modo.

Calcula los permisos compatibles con el modo utilizado en una ACL, a partir de un modo tradicional y de un entero que indica si son permisos de dueño o no.

Parámetros:
xmode Modo tradicional.
owner Los permisos que se calculan corresponden a un dueño o no.
Devuelve:
El modo en formato ACL.

void acl_aclinit struct vfs_acl   vfs_acl
 

Inicializa una ACL.

Parámetros:
vfs_acl Es la ACL a inicializar, se establece un valor nulo para los modos de las entradas de vfs_acl y se asigna 0 en size::vfs_acl.

int acl_setmode struct vfs_acl   vfs_acl,
int    id,
int    mode,
int    type
 

Establece el modo de un usuario o grupo en la ACL.

En caso de que el usuario/grupo exista en la ACL, cambia su modo siempre que el modo pasado como parámetro sea un modo válido. Si no existe tal usuario/grupo y hay lugar en la ACL, lo agrega.

Parámetros:
vfs_acl ACL sobre la que se realizará la operación.
id Identificación del usuario o grupo que se busca dentro de la ACL.
mode Nuevo modo que deberá quedar cargado en la ACL para el usuario/grupo con identificacion id luego de realizar la operación, siempre que esto sea posible.
type Indica si id representa la identificación de un usuario o de un grupo.
Devuelve:
  • ACL_OK En caso de que el usuario o grupo ya exista en vfs_acl y mode sea un modo válido.
  • ACL_OK En caso de que el usuario o grupo no se encuentre en vfs_acl pero que exista un lugar vacío y mode sea un modo válido.
  • ACL_OK En caso de que el usuario o grupo no se encuentre en vfs_acl pero que el modo sea el modo nulo.
  • ENOMEM En caso de que el usuario o grupo no se encuentre en vfs_acl y esta esté llena.

int acl_getmode struct vfs_acl   vfs_acl,
int    id,
int    type
 

Obtiene el modo de un usuario/grupo.

Parámetros:
vfs_acl ACL sobre la cual se realizará la operación.
id Identifiación del usuario del cual se desea obtener su modo.
type Indica si id se refiere a la identificación de un grupo o de un usuario.
Devuelve:
  • El modo del usuario/grupo con identificación id en la ACL vfs_acl.

int acl_getsize struct vfs_acl   vfs_acl [inline]
 

Devuelve la cantidad de entradas válidas que existen en la ACL.

Parámetros:
vfs_acl ACL de la cual se obtiene la cantidad de entradas válidas almacenadas.
Devuelve:
La cantidad de entradas válidas dentro de la ACL.
Ejemplos:
iterador_acl_entry.c.

acl_iterator acl_first struct vfs_acl   vfs_acl
 

Busca la primer entrada válida dentro de la ACL.

Parámetros:
vfs_acl ACL donde se realizará la búsqueda.
Devuelve:
  • La posición dentro de vfs_acl donde se encontró la primer entrada válida.
  • ACL_IT_ERROR En caso de que vfs_acl este vacia.

acl_iterator acl_next struct vfs_acl   vfs_acl,
acl_iterator    it
 

Busca la próxima entrada válida en la ACL a partir de una posición que se pasa como parámetro.

Parámetros:
vfs_acl ACL donde se realizará la búsqueda.
it Posición a partir de la cual se realizará la búsqueda, previamente obtenido con acl_first() o acl_next().
Devuelve:
  • La posición dentro de vfs_acl donde se encontró la práxima entrada válida.
  • ACL_IT_ERROR En caso de que it sea la posición de la última entrada válida dentro de vfs_acl.

struct acl_entry acl_getentry struct vfs_acl   vfs_acl,
acl_iterator    it
 

Devuelve una entrada de la ACL.

Parámetros:
vfs_acl ACL a la que pertenece la entrada que se devuelve.
it Posición, dentro de vfs_acl, de la entrada que se quiere obtener.
Devuelve:
La entrada ubicada en la posición it de vfs_acl.
Ejemplos:
iterador_acl_entry.c.


Generado el Fri Jan 10 09:11:43 2003 para Lisex por doxygen1.3-rc2