/linux-2.6.21.1-rsbac-1.3.4/include/rsbac/pm_data_structures.h

Go to the documentation of this file.
00001 /**************************************/
00002 /* Rule Set Based Access Control      */
00003 /* Author and (c) 1999-2005: Amon Ott */
00004 /* Data structures / PM               */
00005 /* Last modified: 09/Feb/2005         */
00006 /**************************************/
00007 
00008 #ifndef __RSBAC_PM_DATA_STRUC_H
00009 #define __RSBAC_PM_DATA_STRUC_H
00010 
00011 #include <linux/types.h>
00012 #include <rsbac/aci.h>
00013 #include <rsbac/types.h>
00014 #include <rsbac/pm_types.h>
00015 
00016 #define RSBAC_PM_TASK_SET_LIST_NAME "pm_ta_s"
00017 #define RSBAC_PM_TASK_SET_LIST_PROC_NAME "task_set"
00018 
00019 #define RSBAC_PM_TP_SET_LIST_NAME   "pm_tp_s"
00020 #define RSBAC_PM_TP_SET_LIST_PROC_NAME   "tp_set"
00021 
00022 #define RSBAC_PM_RU_SET_LIST_NAME   "pm_ru_s"
00023 #define RSBAC_PM_RU_SET_LIST_PROC_NAME   "responsible_user_set"
00024 
00025 #define RSBAC_PM_PP_SET_LIST_NAME   "pm_pp_s"
00026 #define RSBAC_PM_PP_SET_LIST_PROC_NAME   "purpose_set"
00027 
00028 #define RSBAC_PM_IN_PP_SET_LIST_NAME "input_pp_set"
00029 #define RSBAC_PM_IN_PP_SET_LIST_PROC_NAME "input_purpose_set"
00030 
00031 #define RSBAC_PM_OUT_PP_SET_LIST_NAME "output_pp_set"
00032 #define RSBAC_PM_OUT_PP_SET_LIST_PROC_NAME "output_purpose_set"
00033 
00034 
00035 #define RSBAC_PM_TASK_LIST_NAME     "pm_task"
00036 #define RSBAC_PM_TASK_LIST_PROC_NAME     "task"
00037 
00038 #define RSBAC_PM_CLASS_LIST_NAME    "pm_clas"
00039 #define RSBAC_PM_CLASS_LIST_PROC_NAME    "object_class"
00040 
00041 #define RSBAC_PM_NA_LIST_NAME       "pm_na"
00042 #define RSBAC_PM_NA_LIST_PROC_NAME       "necessary_accesses"
00043 
00044 #define RSBAC_PM_CS_LIST_NAME       "pm_cs"
00045 #define RSBAC_PM_CS_LIST_PROC_NAME       "consent"
00046 
00047 #define RSBAC_PM_TP_LIST_NAME       "pm_tp"
00048 #define RSBAC_PM_TP_LIST_PROC_NAME       "tp"
00049 
00050 #define RSBAC_PM_PP_LIST_NAME       "pm_pp"
00051 #define RSBAC_PM_PP_LIST_PROC_NAME       "purpose"
00052 
00053 #define RSBAC_PM_TKT_LIST_NAME      "pm_tkt"
00054 #define RSBAC_PM_TKT_LIST_PROC_NAME      "ticket"
00055 
00056 
00057 #define RSBAC_PM_NO_VERSION 1
00058 
00059 #define RSBAC_PM_TASK_SET_LIST_VERSION   1
00060 #define RSBAC_PM_TP_SET_LIST_VERSION     1
00061 #define RSBAC_PM_RU_SET_LIST_VERSION     2
00062 #define RSBAC_PM_PP_SET_LIST_VERSION     1
00063 
00064 #define RSBAC_PM_TASK_LIST_VERSION       1
00065 #define RSBAC_PM_CLASS_LIST_VERSION      1
00066 #define RSBAC_PM_NA_LIST_VERSION         1
00067 #define RSBAC_PM_CS_LIST_VERSION         1
00068 #define RSBAC_PM_TP_LIST_VERSION         1
00069 #define RSBAC_PM_PP_LIST_VERSION         1
00070 #define RSBAC_PM_TKT_LIST_VERSION        2
00071 
00072 #define RSBAC_PM_LIST_KEY 19990820
00073 
00074 #define RSBAC_PM_PROC_STATS_NAME "stats_pm"
00075 #define RSBAC_PM_PROC_DIR_NAME "pm"
00076 
00077 /**********************************************/
00078 /* Helper lists                               */
00079 /**********************************************/
00080 
00081 /* This list represents sets of task-ids, using a set-id and a sublist each */
00082 
00083 struct rsbac_pm_task_set_sublist_item_t {
00084         rsbac_pm_task_id_t id;
00085         struct rsbac_pm_task_set_sublist_item_t *prev;
00086         struct rsbac_pm_task_set_sublist_item_t *next;
00087 };
00088 
00089 struct rsbac_pm_task_set_list_item_t {
00090         rsbac_pm_task_set_id_t id;
00091         int sublist_length;
00092         struct rsbac_pm_task_set_sublist_item_t *sublist_head;
00093         struct rsbac_pm_task_set_sublist_item_t *sublist_tail;
00094         struct rsbac_pm_task_set_list_item_t *prev;
00095         struct rsbac_pm_task_set_list_item_t *next;
00096 };
00097 
00098 struct rsbac_pm_task_set_list_head_t {
00099         struct rsbac_pm_task_set_list_item_t *head;
00100         struct rsbac_pm_task_set_list_item_t *tail;
00101         struct rsbac_pm_task_set_list_item_t *curr;
00102         rwlock_t lock;
00103         rsbac_boolean_t dirty;
00104         u_long count;
00105         rsbac_boolean_t no_write;
00106 };
00107 
00108 
00109 /* This list represents sets of TP-ids, using a set-id and a sublist each */
00110 
00111 struct rsbac_pm_tp_set_sublist_item_t {
00112         rsbac_pm_tp_id_t id;
00113         struct rsbac_pm_tp_set_sublist_item_t *prev;
00114         struct rsbac_pm_tp_set_sublist_item_t *next;
00115 };
00116 
00117 struct rsbac_pm_tp_set_list_item_t {
00118         rsbac_pm_tp_set_id_t id;
00119         int sublist_length;
00120         struct rsbac_pm_tp_set_sublist_item_t *sublist_head;
00121         struct rsbac_pm_tp_set_sublist_item_t *sublist_tail;
00122         struct rsbac_pm_tp_set_list_item_t *prev;
00123         struct rsbac_pm_tp_set_list_item_t *next;
00124 };
00125 
00126 struct rsbac_pm_tp_set_list_head_t {
00127         struct rsbac_pm_tp_set_list_item_t *head;
00128         struct rsbac_pm_tp_set_list_item_t *tail;
00129         struct rsbac_pm_tp_set_list_item_t *curr;
00130         rwlock_t lock;
00131         rsbac_boolean_t dirty;
00132         u_int count;
00133         rsbac_boolean_t no_write;
00134 };
00135 
00136 
00137 /* This list represents sets of Responsible-User-ids, using a set-id and a */
00138 /* sublist each */
00139 
00140 struct rsbac_pm_ru_set_sublist_item_t {
00141         rsbac_uid_t id;
00142         struct rsbac_pm_ru_set_sublist_item_t *prev;
00143         struct rsbac_pm_ru_set_sublist_item_t *next;
00144 };
00145 
00146 struct rsbac_pm_ru_set_list_item_t {
00147         rsbac_pm_ru_set_id_t id;
00148         int sublist_length;
00149         struct rsbac_pm_ru_set_sublist_item_t *sublist_head;
00150         struct rsbac_pm_ru_set_sublist_item_t *sublist_tail;
00151         struct rsbac_pm_ru_set_list_item_t *prev;
00152         struct rsbac_pm_ru_set_list_item_t *next;
00153 };
00154 
00155 struct rsbac_pm_ru_set_list_head_t {
00156         struct rsbac_pm_ru_set_list_item_t *head;
00157         struct rsbac_pm_ru_set_list_item_t *tail;
00158         struct rsbac_pm_ru_set_list_item_t *curr;
00159         rwlock_t lock;
00160         rsbac_boolean_t dirty;
00161         u_int count;
00162         rsbac_boolean_t no_write;
00163 };
00164 
00165 /* This list represents sets of purpose-ids, using a set-id and a */
00166 /* sublist each */
00167 
00168 struct rsbac_pm_pp_set_sublist_item_t {
00169         rsbac_pm_purpose_id_t id;
00170         struct rsbac_pm_pp_set_sublist_item_t *prev;
00171         struct rsbac_pm_pp_set_sublist_item_t *next;
00172 };
00173 
00174 struct rsbac_pm_pp_set_list_item_t {
00175         rsbac_pm_pp_set_id_t id;
00176         int sublist_length;
00177         struct rsbac_pm_pp_set_sublist_item_t *sublist_head;
00178         struct rsbac_pm_pp_set_sublist_item_t *sublist_tail;
00179         struct rsbac_pm_pp_set_list_item_t *prev;
00180         struct rsbac_pm_pp_set_list_item_t *next;
00181 };
00182 
00183 struct rsbac_pm_pp_set_list_head_t {
00184         struct rsbac_pm_pp_set_list_item_t *head;
00185         struct rsbac_pm_pp_set_list_item_t *tail;
00186         struct rsbac_pm_pp_set_list_item_t *curr;
00187         rwlock_t lock;
00188         rsbac_boolean_t dirty;
00189         u_long count;
00190         rsbac_boolean_t no_write;
00191 };
00192 
00193 /* This list also represents sets of purpose-ids, using a set-id and a */
00194 /* sublist each */
00195 
00196 struct rsbac_pm_in_pp_set_sublist_item_t {
00197         rsbac_pm_purpose_id_t id;
00198         struct rsbac_pm_in_pp_set_sublist_item_t *prev;
00199         struct rsbac_pm_in_pp_set_sublist_item_t *next;
00200 };
00201 
00202 struct rsbac_pm_in_pp_set_list_item_t {
00203         rsbac_pm_in_pp_set_id_t id;
00204         int sublist_length;
00205         struct rsbac_pm_in_pp_set_sublist_item_t *sublist_head;
00206         struct rsbac_pm_in_pp_set_sublist_item_t *sublist_tail;
00207         struct rsbac_pm_in_pp_set_list_item_t *prev;
00208         struct rsbac_pm_in_pp_set_list_item_t *next;
00209 };
00210 
00211 struct rsbac_pm_in_pp_set_list_head_t {
00212         struct rsbac_pm_in_pp_set_list_item_t *head;
00213         struct rsbac_pm_in_pp_set_list_item_t *tail;
00214         struct rsbac_pm_in_pp_set_list_item_t *curr;
00215         rwlock_t lock;
00216         rsbac_boolean_t dirty;
00217         u_int count;
00218 };
00219 
00220 /* This list also represents sets of purpose-ids, using a set-id and a */
00221 /* sublist each */
00222 
00223 struct rsbac_pm_out_pp_set_sublist_item_t {
00224         rsbac_pm_purpose_id_t id;
00225         struct rsbac_pm_out_pp_set_sublist_item_t *prev;
00226         struct rsbac_pm_out_pp_set_sublist_item_t *next;
00227 };
00228 
00229 struct rsbac_pm_out_pp_set_list_item_t {
00230         rsbac_pm_out_pp_set_id_t id;
00231         int sublist_length;
00232         struct rsbac_pm_out_pp_set_sublist_item_t *sublist_head;
00233         struct rsbac_pm_out_pp_set_sublist_item_t *sublist_tail;
00234         struct rsbac_pm_out_pp_set_list_item_t *prev;
00235         struct rsbac_pm_out_pp_set_list_item_t *next;
00236 };
00237 
00238 struct rsbac_pm_out_pp_set_list_head_t {
00239         struct rsbac_pm_out_pp_set_list_item_t *head;
00240         struct rsbac_pm_out_pp_set_list_item_t *tail;
00241         struct rsbac_pm_out_pp_set_list_item_t *curr;
00242         rwlock_t lock;
00243         rsbac_boolean_t dirty;
00244         u_int count;
00245 };
00246 
00247 
00248 /**********************************************/
00249 /* Main lists                                 */
00250 /**********************************************/
00251 
00252 /* List of defined tasks */
00253 /* rsbac_pm_task_data_t is defined in pm_types.h! */
00254 
00255 struct rsbac_pm_task_list_item_t {
00256         struct rsbac_pm_task_data_t data;
00257         struct rsbac_pm_task_list_item_t *prev;
00258         struct rsbac_pm_task_list_item_t *next;
00259 };
00260 
00261 struct rsbac_pm_task_list_head_t {
00262         struct rsbac_pm_task_list_item_t *head;
00263         struct rsbac_pm_task_list_item_t *tail;
00264         struct rsbac_pm_task_list_item_t *curr;
00265         rwlock_t lock;
00266         rsbac_boolean_t dirty;
00267         u_int count;
00268         rsbac_boolean_t no_write;
00269 };
00270 
00271 /* List of defined classes */
00272 /* rsbac_pm_class_data_t is defined in pm_types.h! */
00273 
00274 
00275 struct rsbac_pm_class_list_item_t {
00276         struct rsbac_pm_class_data_t data;
00277         struct rsbac_pm_class_list_item_t *prev;
00278         struct rsbac_pm_class_list_item_t *next;
00279 };
00280 
00281 struct rsbac_pm_class_list_head_t {
00282         struct rsbac_pm_class_list_item_t *head;
00283         struct rsbac_pm_class_list_item_t *tail;
00284         struct rsbac_pm_class_list_item_t *curr;
00285         rwlock_t lock;
00286         rsbac_boolean_t dirty;
00287         u_int count;
00288         rsbac_boolean_t no_write;
00289 };
00290 
00291 /* List of defined necessary accesses */
00292 /* rsbac_pm_na_data_t is defined in pm_types.h! */
00293 
00294 struct rsbac_pm_na_list_item_t {
00295         struct rsbac_pm_na_data_t data;
00296         struct rsbac_pm_na_list_item_t *prev;
00297         struct rsbac_pm_na_list_item_t *next;
00298 };
00299 
00300 struct rsbac_pm_na_list_head_t {
00301         struct rsbac_pm_na_list_item_t *head;
00302         struct rsbac_pm_na_list_item_t *tail;
00303         struct rsbac_pm_na_list_item_t *curr;
00304         rwlock_t lock;
00305         rsbac_boolean_t dirty;
00306         u_int count;
00307         rsbac_boolean_t no_write;
00308 };
00309 
00310 
00311 /* List of consents */
00312 /* rsbac_pm_cs_data_t is defined in pm_types.h! */
00313 
00314 struct rsbac_pm_cs_list_item_t {
00315         struct rsbac_pm_cs_data_t data;
00316         struct rsbac_pm_cs_list_item_t *prev;
00317         struct rsbac_pm_cs_list_item_t *next;
00318 };
00319 
00320 struct rsbac_pm_cs_list_head_t {
00321         struct rsbac_pm_cs_list_item_t *head;
00322         struct rsbac_pm_cs_list_item_t *tail;
00323         struct rsbac_pm_cs_list_item_t *curr;
00324         rwlock_t lock;
00325         rsbac_boolean_t dirty;
00326         u_int count;
00327         rsbac_boolean_t no_write;
00328 };
00329 
00330 
00331 /* List of defined transformation procedures */
00332 
00333 struct rsbac_pm_tp_list_item_t {
00334         struct rsbac_pm_tp_data_t data;
00335         struct rsbac_pm_tp_list_item_t *prev;
00336         struct rsbac_pm_tp_list_item_t *next;
00337 };
00338 
00339 struct rsbac_pm_tp_list_head_t {
00340         struct rsbac_pm_tp_list_item_t *head;
00341         struct rsbac_pm_tp_list_item_t *tail;
00342         struct rsbac_pm_tp_list_item_t *curr;
00343         rwlock_t lock;
00344         rsbac_boolean_t dirty;
00345         u_int count;
00346         rsbac_boolean_t no_write;
00347 };
00348 
00349 
00350 /* List of defined purposes */
00351 
00352 struct rsbac_pm_pp_list_item_t {
00353         struct rsbac_pm_pp_data_t data;
00354         struct rsbac_pm_pp_list_item_t *prev;
00355         struct rsbac_pm_pp_list_item_t *next;
00356 };
00357 
00358 struct rsbac_pm_pp_list_head_t {
00359         struct rsbac_pm_pp_list_item_t *head;
00360         struct rsbac_pm_pp_list_item_t *tail;
00361         struct rsbac_pm_pp_list_item_t *curr;
00362         rwlock_t lock;
00363         rsbac_boolean_t dirty;
00364         u_int count;
00365         rsbac_boolean_t no_write;
00366 };
00367 
00368 
00369 /* List of valid tickets for PM administration calls */
00370 /* rsbac_pm_tkt_data_t is defined in pm_types.h! */
00371 
00372 struct rsbac_pm_tkt_list_item_t {
00373         struct rsbac_pm_tkt_data_t data;
00374         struct rsbac_pm_tkt_list_item_t *prev;
00375         struct rsbac_pm_tkt_list_item_t *next;
00376 };
00377 
00378 struct rsbac_pm_tkt_list_head_t {
00379         struct rsbac_pm_tkt_list_item_t *head;
00380         struct rsbac_pm_tkt_list_item_t *tail;
00381         struct rsbac_pm_tkt_list_item_t *curr;
00382         rwlock_t lock;
00383         rsbac_boolean_t dirty;
00384         u_int count;
00385         rsbac_boolean_t no_write;
00386 };
00387 
00388 #endif

Generated on Wed May 16 11:53:27 2007 for RSBAC by  doxygen 1.5.1