Contenido   Archivos   Índice   Bugs   Ejemplos  

TAD sc
[TADs y estructuras modificadas o agregadas]

sc representa las clases de seguridad a nivel de VFS. Más...

Estructuras de datos privadas (ocultas)

struct  sc
 SC a nivel VFS. Se utiliza dentro del inodo del VFS. Más...


Constantes (públicas) de sc

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

#define SC_CAT_FULL   -1
 Retorno de funciones que manejan las SC.

#define SC_OK   0
 Retorno de funciones que manejan las SC.

#define SCADMIN   65535
 Categoría que deben tener los administradores de seguridad para cambiar clases de acceso de sujetos y objetos.


Iterador para las categorías de un objeto sc

También forma parte de la interfaz de sc.

Ver sc_for_each_cat para un ejemplo que muestra cómo usarlo.

#define SC_IT_ERROR   -1
 Retorno de las funciones que iteran sobre las categorías de una SC de un inodo.

#define sc_for_each_cat(sc, i)   for(i=sc_cat_first(sc);i!=SC_IT_ERROR;i=sc_cat_next(sc,i))
 Macro que itera entre todas las categorías de una SC.

sc_cat_iterator sc_cat_first (struct sc *sc)
 Obtiene un iterador o selector que corresponde a la primer categoría válida dentro de las categorías de una SC.

sc_cat_iterator sc_cat_next (struct sc *sc, sc_cat_iterator it)
 Obtiene el iterador correspondiente a la próxima categoría válida dentro de una SC con respecto a una posición de referencia pasada como parámetro.

int sc_getcat (struct sc *sc, sc_cat_iterator it)
 Obtiene la categoría referenciada por un iterador.


Funciones de la interfaz de sc

void sc_destroy (struct sc *sc)
 Libera los recursos asignados a una SC.

int sc_getsize (struct sc *sc)
 Obtiene la cantidad de categorías válidas dentro de una SC.

int sc_getlevel (struct sc *sc)
 Obtiene el nivel de una SC.

void sc_setlevel (struct sc *sc, unsigned int l)
 Establece el nivel de una SC.

void sc_clearcat (struct sc *sc)
 Borra todas las categorías de una SC.

int sc_addcat (struct sc *sc, int cat)
 Agrega una categoría las categorías de una SC.

int sc_compare (struct sc *sc1, struct sc *sc2)
 Determina si sc2 domina a sc1.

int sc_copy (struct sc *sc1, struct sc *sc2)
 Copia el contenido de una clase de seguridad en otra.

int sc_usergetncat (struct sc *sc, int *cat, int n)
 Carga un conjunto de categorías que provienen del espacio de usuario a una SC.

int sc_userputcat (struct sc *sc, int *cat)
 Carga un conjunto de categorías que provienen de una SC en espacio de kernel a un conjunto de categorías que se encuentra en espacio de usuario.


Tipos definidos

typedef int sc_cat_iterator
 Renombre del tipo int, utilizado como iterador dentro de las categorías de una SC.


Funciones

sc * sc_init (void)
 Inicializa una SC.


Descripción detallada

sc representa las clases de seguridad a nivel de VFS.

Este TAD oculta la representación de las clases de acceso (o de seguridad) a nivel de VFS, así como los algoritmos que se usan para establecer y obtener los atributos privados.

La estructura oculta sc 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. En caso de que no existan las funciones apropiadas para acceder los atributos privados, los programadores son libres de hacerlo como lo crean conveniente.


Documentación de las definiciones

#define SC_CAT_FULL   -1
 

Retorno de funciones que manejan las SC.

Indica que la operación no pudo realizarse porque la SC del inodo está llena.

#define SC_OK   0
 

Retorno de funciones que manejan las SC.

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

#define SC_IT_ERROR   -1
 

Retorno de las funciones que iteran sobre las categorías de una SC 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 sc_for_each_cat sc,
     for(i=sc_cat_first(sc);i!=SC_IT_ERROR;i=sc_cat_next(sc,i))
 

Macro que itera entre todas las categorías de una SC.

Parámetros:
sc SC que tiene las categorías sobre las que se va a iterar
i Es el puntero iterador.

Bug:
el 'arreglo' de categorías podría ser un TAD por sí mismo.
Ejemplos:
iterador_sc_cat.c.


Documentación de las funciones

sc* sc_init void   
 

Inicializa una SC.

Se debe tener en cuenta lo siguiente:

  • Esta función prepara y reserva recursos para que un objeto sc pueda ser utilizado.
  • Ningún objeto sc debe ser utilizado sin haber ejecutado antes esta función.
  • Inicializa a la clase de seguridad más baja.

sc_cat_iterator sc_cat_first struct sc   sc
 

Obtiene un iterador o selector que corresponde a la primer categoría válida dentro de las categorías de una SC.

Parámetros:
sc SC en la cual se busca la primer categoría válida.
Devuelve:
  • 0 Si la cantidad de categrías válidas en sc es mayor que cero.
  • SC_IT_ERROR Si no existe ninguna categoría válida en sc.

sc_cat_iterator sc_cat_next struct sc   sc,
sc_cat_iterator    it
 

Obtiene el iterador correspondiente a la próxima categoría válida dentro de una SC con respecto a una posición de referencia pasada como parámetro.

Parámetros:
sc SC en la cual se busca la próxima categoría válida.
it Posición dentro de las categorías de sc donde se encuentra la categoría de referencia.
Devuelve:
  • it+1 Si hay suficientes categorías válidas en sc.
  • SC_IT_ERROR Si no existe ninguna categoría válida luego de la referenciada por it.

int sc_getcat struct sc   sc,
sc_cat_iterator    it
 

Obtiene la categoría referenciada por un iterador.

La SC debe ser válida y el iterador debe ser uno obtenido utilizando sc_cat_first() y sc_cat_next() sobre la misma SC y distinto de SC_IT_ERROR.

Parámetros:
sc SC donde se encuentra la categoría a devolver.
it Iterador correspondiente a la categoría que se desea obtener.
Devuelve:
La categoría ubicada en la posición it de sc.
Ejemplos:
iterador_sc_cat.c.

void sc_destroy struct sc   sc
 

Libera los recursos asignados a una SC.

Destruye memoria del núcleo utilizada en una SC.

Parámetros:
sc SC que será eliminada.

int sc_getsize struct sc   sc
 

Obtiene la cantidad de categorías válidas dentro de una SC.

Parámetros:
sc SC sobre la cual se realiza la operación.
Devuelve:
  • Cantidad de categorías válidas, siempre que exista alguna.
  • -1 Si no existen categorías válidas.

int sc_getlevel struct sc   sc
 

Obtiene el nivel de una SC.

El parámetro sc debe estar inicializado.

Parámetros:
sc SC de la cual se obtiene el nivel.
Devuelve:
El nivel de sc.

void sc_setlevel struct sc   sc,
unsigned int    l
 

Establece el nivel de una SC.

El parametro sc debe estar inicializado.

Parámetros:
sc SC a la cual se asignará el nivel.
l El nuevo nivel.

void sc_clearcat struct sc   sc
 

Borra todas las categorías de una SC.

Parámetros:
sc SC de la cual se borrarán todas las categorías.

int sc_addcat struct sc   sc,
int    cat
 

Agrega una categoría las categorías de una SC.

Parámetros:
sc SC sobre la cual se realizará la inserción de una categoría.
cat Categoría a agregar a las categorías de sc.
Devuelve:
  • SC_CAT_FULL Si no hay más lugar para agregar una categoría a las categorias de sc.
  • SC_OK Si la operación se realizó con éxito.

Bug:
Siempre agrega la categoría por más que ya esté.

int sc_compare struct sc   sc1,
struct sc   sc2
 

Determina si sc2 domina a sc1.

Parámetros:
sc1 Primer parámetro de la comparación.
sc2 Segundo parámetro de la comparación.
Devuelve:
  • 1 Si sc2 no domina a sc1.
  • 0 Si sc2 domina a sc1.

Bug:
Si alguna de las SC a comparar no son válidas, el resultado es impredecible.

int sc_copy struct sc   sc1,
struct sc   sc2
 

Copia el contenido de una clase de seguridad en otra.

Parámetros:
sc1 SC destino.
sc2 SC origen.
Devuelve:
  • SC_OK Si la operación se realizó con éxito.
  • SC_CAT_FULL Si ocurrió algún error.

int sc_usergetncat struct sc   sc,
int *    cat,
int    n
 

Carga un conjunto de categorías que provienen del espacio de usuario a una SC.

Parámetros:
sc SC a la cual se le cargarán las categorías.
cat Conjunto de categorías a cargar en sc.
n Cantidad de categorías válidas que estan en cat.
Devuelve:
  • SC_CAT_FULL Si no es posible cargar n categorías a sc porque no hay al menos n lugares libres.
  • 0 Si la operación se realizó con éxito
  • Un número distinto de 0 si no se pudo concretar la operación por algún otro motivo.

int sc_userputcat struct sc   sc,
int *    cat
 

Carga un conjunto de categorías que provienen de una SC en espacio de kernel a un conjunto de categorías que se encuentra en espacio de usuario.

No se realiza ningún control para asegurar que la cantidad de categorías en la SC de espacio de kernel es menor o igual a la cantidad de espacio reservado en espacio de usuario para almacenarlas.

Parámetros:
sc SC de la cual se le obtendrán las categorías.
cat Conjunto de categorías a cargar en sc.
Devuelve:
  • 0 Si la operación se realizó con éxito.
  • Un número distinto de 0 si no se pudo concretar la operación por algún motivo.


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