00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __RSBAC_ADF_SYSHELPERS_H
00012 #define __RSBAC_ADF_SYSHELPERS_H
00013
00014
00015 #include <rsbac/types.h>
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #if defined(CONFIG_RSBAC_MAC) || defined(CONFIG_RSBAC_MAC_MAINT)
00032 int rsbac_mac_set_curr_level(rsbac_security_level_t level,
00033 rsbac_mac_category_vector_t categories);
00034
00035 int rsbac_mac_get_curr_level(rsbac_security_level_t * level_p,
00036 rsbac_mac_category_vector_t * categories_p);
00037
00038 int rsbac_mac_get_max_level(rsbac_security_level_t * level_p,
00039 rsbac_mac_category_vector_t * categories_p);
00040
00041 int rsbac_mac_get_min_level(rsbac_security_level_t * level_p,
00042 rsbac_mac_category_vector_t * categories_p);
00043
00044 int rsbac_mac_add_p_tru(
00045 rsbac_list_ta_number_t ta_number,
00046 rsbac_pid_t pid,
00047 rsbac_uid_t uid,
00048 rsbac_time_t ttl);
00049
00050 int rsbac_mac_remove_p_tru(
00051 rsbac_list_ta_number_t ta_number,
00052 rsbac_pid_t pid,
00053 rsbac_uid_t uid);
00054
00055 int rsbac_mac_add_f_tru(
00056 rsbac_list_ta_number_t ta_number,
00057 rsbac_mac_file_t file,
00058 rsbac_uid_t uid,
00059 rsbac_time_t ttl);
00060
00061 int rsbac_mac_remove_f_tru(
00062 rsbac_list_ta_number_t ta_number,
00063 rsbac_mac_file_t file,
00064 rsbac_uid_t uid);
00065
00066 #endif
00067
00068
00069
00070
00071 #if defined(CONFIG_RSBAC_PM) || defined(CONFIG_RSBAC_PM_MAINT)
00072
00073
00074
00075 int rsbac_pm(
00076 rsbac_list_ta_number_t ta_number,
00077 enum rsbac_pm_function_type_t,
00078 union rsbac_pm_function_param_t,
00079 rsbac_pm_tkt_id_t);
00080
00081 int rsbac_pm_change_current_task(rsbac_pm_task_id_t);
00082
00083 int rsbac_pm_create_file(const char *,
00084 int,
00085 rsbac_pm_object_class_id_t);
00086 #endif
00087
00088
00089
00090
00091
00092 #if defined(CONFIG_RSBAC_RC) || defined(CONFIG_RSBAC_RC_MAINT)
00093
00094
00095
00096
00097
00098 extern int rsbac_rc_sys_copy_role (
00099 rsbac_list_ta_number_t ta_number,
00100 rsbac_rc_role_id_t from_role,
00101 rsbac_rc_role_id_t to_role);
00102
00103 extern int rsbac_rc_sys_copy_type (
00104 rsbac_list_ta_number_t ta_number,
00105 enum rsbac_rc_target_t target,
00106 rsbac_rc_type_id_t from_type,
00107 rsbac_rc_type_id_t to_type);
00108
00109
00110 extern int rsbac_rc_sys_get_item (
00111 rsbac_list_ta_number_t ta_number,
00112 enum rsbac_rc_target_t target,
00113 union rsbac_rc_target_id_t tid,
00114 union rsbac_rc_target_id_t subtid,
00115 enum rsbac_rc_item_t item,
00116 union rsbac_rc_item_value_t * value_p,
00117 rsbac_time_t * ttl_p);
00118
00119
00120 extern int rsbac_rc_sys_set_item (
00121 rsbac_list_ta_number_t ta_number,
00122 enum rsbac_rc_target_t target,
00123 union rsbac_rc_target_id_t tid,
00124 union rsbac_rc_target_id_t subtid,
00125 enum rsbac_rc_item_t item,
00126 union rsbac_rc_item_value_t value,
00127 rsbac_time_t ttl);
00128
00129
00130 extern int rsbac_rc_sys_change_role (rsbac_rc_role_id_t role);
00131
00132
00133 int rsbac_rc_sys_get_eff_rights (
00134 rsbac_list_ta_number_t ta_number,
00135 enum rsbac_target_t target,
00136 union rsbac_target_id_t tid,
00137 rsbac_rc_request_vector_t * request_vector,
00138 rsbac_time_t * ttl_p);
00139
00140 int rsbac_rc_sys_get_current_role (rsbac_rc_role_id_t * role_p);
00141
00142 #endif
00143
00144
00145
00146 #if defined(CONFIG_RSBAC_AUTH) || defined(CONFIG_RSBAC_AUTH_MAINT)
00147
00148 int rsbac_auth_add_p_cap(
00149 rsbac_list_ta_number_t ta_number,
00150 rsbac_pid_t pid,
00151 enum rsbac_auth_cap_type_t cap_type,
00152 struct rsbac_auth_cap_range_t cap_range,
00153 rsbac_time_t ttl);
00154
00155
00156 int rsbac_auth_remove_p_cap(
00157 rsbac_list_ta_number_t ta_number,
00158 rsbac_pid_t pid,
00159 enum rsbac_auth_cap_type_t cap_type,
00160 struct rsbac_auth_cap_range_t cap_range);
00161
00162
00163 int rsbac_auth_add_f_cap(
00164 rsbac_list_ta_number_t ta_number,
00165 rsbac_auth_file_t file,
00166 enum rsbac_auth_cap_type_t cap_type,
00167 struct rsbac_auth_cap_range_t cap_range,
00168 rsbac_time_t ttl);
00169
00170
00171 int rsbac_auth_remove_f_cap(
00172 rsbac_list_ta_number_t ta_number,
00173 rsbac_auth_file_t file,
00174 enum rsbac_auth_cap_type_t cap_type,
00175 struct rsbac_auth_cap_range_t cap_range);
00176
00177 #endif
00178
00179
00180
00181 #if defined(CONFIG_RSBAC_REG) || defined(CONFIG_RSBAC_REG_MAINT)
00182
00183
00184
00185
00186
00187 int rsbac_reg_syscall(rsbac_reg_handle_t handle,
00188 void * arg);
00189 #endif
00190
00191
00192
00193 #if defined(CONFIG_RSBAC_ACL) || defined(CONFIG_RSBAC_ACL_MAINT)
00194 int rsbac_acl_sys_set_acl_entry(
00195 rsbac_list_ta_number_t ta_number,
00196 enum rsbac_target_t target,
00197 union rsbac_target_id_t tid,
00198 enum rsbac_acl_subject_type_t subj_type,
00199 rsbac_acl_subject_id_t subj_id,
00200 rsbac_acl_rights_vector_t rights,
00201 rsbac_time_t ttl);
00202
00203 int rsbac_acl_sys_remove_acl_entry(
00204 rsbac_list_ta_number_t ta_number,
00205 enum rsbac_target_t target,
00206 union rsbac_target_id_t tid,
00207 enum rsbac_acl_subject_type_t subj_type,
00208 rsbac_acl_subject_id_t subj_id);
00209
00210 int rsbac_acl_sys_remove_acl(
00211 rsbac_list_ta_number_t ta_number,
00212 enum rsbac_target_t target,
00213 union rsbac_target_id_t tid);
00214
00215 int rsbac_acl_sys_add_to_acl_entry(
00216 rsbac_list_ta_number_t ta_number,
00217 enum rsbac_target_t target,
00218 union rsbac_target_id_t tid,
00219 enum rsbac_acl_subject_type_t subj_type,
00220 rsbac_acl_subject_id_t subj_id,
00221 rsbac_acl_rights_vector_t rights,
00222 rsbac_time_t ttl);
00223
00224 int rsbac_acl_sys_remove_from_acl_entry(
00225 rsbac_list_ta_number_t ta_number,
00226 enum rsbac_target_t target,
00227 union rsbac_target_id_t tid,
00228 enum rsbac_acl_subject_type_t subj_type,
00229 rsbac_acl_subject_id_t subj_id,
00230 rsbac_acl_rights_vector_t rights);
00231
00232 int rsbac_acl_sys_set_mask(
00233 rsbac_list_ta_number_t ta_number,
00234 enum rsbac_target_t target,
00235 union rsbac_target_id_t tid,
00236 rsbac_acl_rights_vector_t mask);
00237
00238 int rsbac_acl_sys_remove_user(
00239 rsbac_list_ta_number_t ta_number,
00240 rsbac_uid_t uid);
00241
00242 int rsbac_acl_sys_get_mask(
00243 rsbac_list_ta_number_t ta_number,
00244 enum rsbac_target_t target,
00245 union rsbac_target_id_t tid,
00246 rsbac_acl_rights_vector_t * mask_p);
00247
00248
00249 int rsbac_acl_sys_get_rights(
00250 rsbac_list_ta_number_t ta_number,
00251 enum rsbac_target_t target,
00252 union rsbac_target_id_t tid,
00253 enum rsbac_acl_subject_type_t subj_type,
00254 rsbac_acl_subject_id_t subj_id,
00255 rsbac_acl_rights_vector_t * rights_p,
00256 rsbac_boolean_t inherit);
00257
00258 int rsbac_acl_sys_get_tlist(
00259 rsbac_list_ta_number_t ta_number,
00260 enum rsbac_target_t target,
00261 union rsbac_target_id_t tid,
00262 struct rsbac_acl_entry_t ** entry_pp,
00263 rsbac_time_t ** ttl_pp);
00264
00265 int rsbac_acl_sys_group(
00266 rsbac_list_ta_number_t ta_number,
00267 enum rsbac_acl_group_syscall_type_t call,
00268 union rsbac_acl_group_syscall_arg_t arg);
00269
00270 #endif
00271
00272
00273
00274 #if defined(CONFIG_RSBAC_JAIL)
00275
00276 int rsbac_jail_sys_jail(rsbac_version_t version,
00277 char * path,
00278 rsbac_jail_ip_t ip,
00279 rsbac_jail_flags_t flags,
00280 rsbac_cap_vector_t max_caps,
00281 rsbac_jail_scd_vector_t scd_get,
00282 rsbac_jail_scd_vector_t scd_modify);
00283 #endif
00284
00285 #endif