#include <rsbac/types.h>
#include <rsbac/getname.h>
#include <rsbac/helpers.h>
#include <rsbac/error.h>
#include <rsbac/pax_getname.h>
#include <string.h>
#include <errno.h>
Go to the source code of this file.
Functions | |
char * | get_request_name (char *request_name, enum rsbac_adf_request_t request) |
enum rsbac_adf_request_t | get_request_nr (const char *request_name) |
char * | get_result_name (char *res_name, enum rsbac_adf_req_ret_t res) |
enum rsbac_adf_req_ret_t | get_result_nr (const char *res_name) |
enum rsbac_switch_target_t | get_attr_module (enum rsbac_attribute_t attr) |
char * | get_attribute_name (char *attr_name, enum rsbac_attribute_t attr) |
enum rsbac_attribute_t | get_attribute_nr (const char *attr_name) |
char * | get_attribute_value_name (char *attr_val_name, enum rsbac_attribute_t attr, union rsbac_attribute_value_t *attr_val_p) |
char * | get_scd_type_name (char *res_name, enum rsbac_scd_type_t res) |
enum rsbac_scd_type_t | get_scd_type_nr (const char *res_name) |
char * | get_target_name (char *target_type_name, enum rsbac_target_t target, char *target_id_name, union rsbac_target_id_t tid) |
char * | get_target_name_only (char *target_type_name, enum rsbac_target_t target) |
enum rsbac_target_t | get_target_nr (const char *target_name) |
char * | get_ipc_target_name (char *ipc_name, enum rsbac_ipc_type_t target) |
enum rsbac_ipc_type_t | get_ipc_target_nr (const char *ipc_name) |
char * | get_switch_target_name (char *switch_name, enum rsbac_switch_target_t target) |
enum rsbac_switch_target_t | get_switch_target_nr (const char *switch_name) |
char * | get_error_name (char *error_name, int error) |
char * | get_attribute_param (char *attr_name, enum rsbac_attribute_t attr) |
char * | get_log_level_name (char *ll_name, enum rsbac_log_level_t target) |
enum rsbac_log_level_t | get_log_level_nr (const char *ll_name) |
char * | get_cap_name (char *name, u_int value) |
int | get_cap_nr (const char *name) |
Variables | |
static char | request_list [R_NONE+1][24] |
static char | result_list [UNDEFINED+1][12] |
static rsbac_switch_target_int_t | attr_mod_list [A_none+1] |
static char | attribute_list [A_none+1][23] |
static char | target_list [T_NONE+1][11] |
static char | ipc_target_list [I_none+1][9] |
static char | switch_target_list [SW_NONE+1][12] |
static char | error_list [RSBAC_EMAX][25] |
static char | scd_type_list [ST_none+1][17] |
static char | attribute_param_list [A_none+1][193] |
static char | log_level_list [LL_invalid+1][9] |
static char | cap_list [RSBAC_CAP_MAX+1][17] |
|
Definition at line 663 of file getname.c. References A_none, attr_mod_list, and SW_NONE. Referenced by sys_rsbac_get_attr(), sys_rsbac_get_attr_n(), sys_rsbac_set_attr(), and sys_rsbac_set_attr_n(). 00664 { 00665 if(attr > A_none) 00666 return SW_NONE; 00667 else 00668 return attr_mod_list[attr]; 00669 }
|
|
Definition at line 677 of file getname.c. References A_none, attribute_list, and NULL. Referenced by rsbac_adf_request_int(), and rsbac_adf_set_attr(). 00679 { 00680 if(!attr_name) 00681 return(NULL); 00682 if(attr > A_none) 00683 strcpy(attr_name, "ERROR!"); 00684 else 00685 strcpy(attr_name, attribute_list[attr]); 00686 return(attr_name); 00687 }
|
|
Definition at line 689 of file getname.c. References A_none, and attribute_list. 00690 { 00691 enum rsbac_attribute_t i; 00692 00693 if(!attr_name) 00694 return(A_none); 00695 for (i = 0; i < A_none; i++) 00696 { 00697 if (!strcmp(attr_name,attribute_list[i])) 00698 { 00699 return(i); 00700 } 00701 } 00702 return(A_none); 00703 }
|
|
Definition at line 1377 of file getname.c. References A_none, attribute_param_list, and NULL. 01379 { 01380 if(!attr_name) 01381 return(NULL); 01382 if(attr > A_none) 01383 strcpy(attr_name, "ERROR!"); 01384 else 01385 strcpy(attr_name, attribute_param_list[attr]); 01386 return(attr_name); 01387 }
|
|
Definition at line 711 of file getname.c. References A_none, A_pax_flags, get_request_name(), get_switch_target_name(), get_target_name_only(), NULL, rsbac_attribute_value_t::pax_flags, pax_print_flags(), rsbac_kfree(), rsbac_kmalloc(), RSBAC_MAXNAMELEN, and rsbac_attribute_value_t::u_dummy. Referenced by rsbac_adf_request_int(). 00714 { 00715 if(!attr_val_name) 00716 return(NULL); 00717 if(attr > A_none) 00718 strcpy(attr_val_name, "ERROR!"); 00719 else 00720 switch(attr) 00721 { 00722 case A_none: 00723 strcpy(attr_val_name, "none"); 00724 break; 00725 #ifdef __KERNEL__ 00726 case A_create_data: 00727 { 00728 char * tmp = rsbac_kmalloc(RSBAC_MAXNAMELEN); 00729 00730 if(tmp) 00731 { 00732 if(attr_val_p->create_data.dentry_p) 00733 snprintf(attr_val_name, RSBAC_MAXNAMELEN - 1, 00734 "%s %s, mode %o", 00735 get_target_name_only(tmp, attr_val_p->create_data.target), 00736 attr_val_p->create_data.dentry_p->d_name.name, 00737 attr_val_p->create_data.mode & S_IALLUGO); 00738 else 00739 snprintf(attr_val_name, RSBAC_MAXNAMELEN - 1, 00740 "%s, mode %o", 00741 get_target_name_only(tmp, attr_val_p->create_data.target), 00742 attr_val_p->create_data.mode & S_IALLUGO); 00743 rsbac_kfree(tmp); 00744 } 00745 } 00746 break; 00747 case A_mode: 00748 sprintf(attr_val_name, "%o", attr_val_p->mode); 00749 break; 00750 case A_priority: 00751 sprintf(attr_val_name, "%i", attr_val_p->priority); 00752 break; 00753 case A_mod_name: 00754 if(attr_val_p->mod_name) 00755 strncpy(attr_val_name, attr_val_p->mod_name, RSBAC_MAXNAMELEN - 1); 00756 else 00757 strcpy(attr_val_name, "unknown"); 00758 attr_val_name[RSBAC_MAXNAMELEN - 1] = 0; 00759 break; 00760 case A_auth_add_f_cap: 00761 case A_auth_remove_f_cap: 00762 sprintf(attr_val_name, "%u:%u", 00763 attr_val_p->auth_cap_range.first, 00764 attr_val_p->auth_cap_range.last); 00765 break; 00766 case A_switch_target: 00767 get_switch_target_name(attr_val_name, attr_val_p->switch_target); 00768 break; 00769 case A_request: 00770 get_request_name(attr_val_name, attr_val_p->request); 00771 break; 00772 #endif 00773 #if defined(CONFIG_RSBAC_PAX) || !defined(__KERNEL__) 00774 case A_pax_flags: 00775 pax_print_flags(attr_val_name, attr_val_p->pax_flags); 00776 break; 00777 #endif 00778 default: 00779 snprintf(attr_val_name, RSBAC_MAXNAMELEN - 1, "%u", attr_val_p->u_dummy); 00780 } 00781 return(attr_val_name); 00782 }
|
|
Definition at line 1418 of file getname.c. References cap_list, CAP_NONE, and NULL. 01420 { 01421 if(!name) 01422 return(NULL); 01423 if(value > CAP_NONE) 01424 strcpy(name, "ERROR!"); 01425 else 01426 strcpy(name, cap_list[value]); 01427 return(name); 01428 }
|
|
Definition at line 1430 of file getname.c. References cap_list, CAP_NONE, and RT_NONE. 01431 { 01432 int i; 01433 01434 if(!name) 01435 return(RT_NONE); 01436 for (i = 0; i < CAP_NONE; i++) 01437 { 01438 if (!strcmp(name, cap_list[i])) 01439 { 01440 return(i); 01441 } 01442 } 01443 return(CAP_NONE); 01444 }
|
|
|
Definition at line 1286 of file getname.c. References I_none, ipc_target_list, and NULL. 01288 { 01289 if(!ipc_name) 01290 return(NULL); 01291 if(target > I_none) 01292 strcpy(ipc_name, "ERROR!"); 01293 else 01294 strcpy(ipc_name, ipc_target_list[target]); 01295 return(ipc_name); 01296 }
|
|
Definition at line 1298 of file getname.c. References I_none, and ipc_target_list. 01299 { 01300 enum rsbac_ipc_type_t i; 01301 01302 if(!ipc_name) 01303 return(I_none); 01304 for (i = 0; i < I_none; i++) 01305 { 01306 if (!strcmp(ipc_name,ipc_target_list[i])) 01307 { 01308 return(i); 01309 } 01310 } 01311 return(I_none); 01312 }
|
|
Definition at line 1390 of file getname.c. References LL_invalid, log_level_list, and NULL. 01392 { 01393 if(!ll_name) 01394 return(NULL); 01395 if(target > LL_invalid) 01396 strcpy(ll_name, "ERROR!"); 01397 else 01398 strcpy(ll_name, log_level_list[target]); 01399 return(ll_name); 01400 }
|
|
Definition at line 1402 of file getname.c. References LL_invalid, and log_level_list. 01403 { 01404 enum rsbac_log_level_t i; 01405 01406 if(!ll_name) 01407 return(LL_invalid); 01408 for (i = 0; i < LL_invalid; i++) 01409 { 01410 if (!strcmp(ll_name,log_level_list[i])) 01411 { 01412 return(i); 01413 } 01414 } 01415 return(LL_invalid); 01416 }
|
|
Definition at line 605 of file getname.c. References NULL, R_NONE, and request_list. Referenced by check_comp_rc_scd(), get_acl_special_right_name(), get_attribute_value_name(), get_rc_special_right_name(), rsbac_acl_check_right(), rsbac_adf_request_int(), rsbac_adf_set_attr(), sys_rsbac_adf_log_switch(), and sys_rsbac_get_adf_log(). 00607 { 00608 if(!request_name) 00609 return(NULL); 00610 if(request >= R_NONE) 00611 strcpy(request_name, "ERROR!"); 00612 else 00613 strcpy(request_name, request_list[request]); 00614 return(request_name); 00615 }
|
|
Definition at line 617 of file getname.c. References R_NONE, and request_list. Referenced by get_acl_special_right_nr(), and get_rc_special_right_nr(). 00618 { 00619 enum rsbac_adf_request_t i; 00620 00621 if(!request_name) 00622 return(R_NONE); 00623 for (i = 0; i < R_NONE; i++) 00624 { 00625 if (!strcmp(request_name,request_list[i])) 00626 { 00627 return(i); 00628 } 00629 } 00630 return(R_NONE); 00631 }
|
|
Definition at line 634 of file getname.c. References NULL, result_list, and UNDEFINED. Referenced by rsbac_adf_request_int(). 00636 { 00637 if(!res_name) 00638 return(NULL); 00639 if(res > UNDEFINED) 00640 strcpy(res_name, "ERROR!"); 00641 else 00642 strcpy(res_name, result_list[res]); 00643 return(res_name); 00644 }
|
|
Definition at line 646 of file getname.c. References result_list, and UNDEFINED. 00647 { 00648 enum rsbac_adf_req_ret_t i; 00649 00650 if(!res_name) 00651 return(UNDEFINED); 00652 for (i = 0; i < UNDEFINED; i++) 00653 { 00654 if (!strcmp(res_name,result_list[i])) 00655 { 00656 return(i); 00657 } 00658 } 00659 return(UNDEFINED); 00660 }
|
|
Definition at line 791 of file getname.c. References NULL, scd_type_list, and ST_none. Referenced by get_acl_scd_type_name(), get_rc_scd_type_name(), and get_target_name(). 00793 { 00794 if(!res_name) 00795 return(NULL); 00796 if(res > ST_none) 00797 strcpy(res_name, "ERROR!"); 00798 else 00799 strcpy(res_name, scd_type_list[res]); 00800 return(res_name); 00801 }
|
|
Definition at line 803 of file getname.c. References scd_type_list, and ST_none. Referenced by get_acl_scd_type_nr(), and get_rc_scd_type_nr(). 00804 { 00805 enum rsbac_scd_type_t i; 00806 00807 if(!res_name) 00808 return(ST_none); 00809 for (i = 0; i < ST_none; i++) 00810 { 00811 if (!strcmp(res_name, scd_type_list[i])) 00812 { 00813 return(i); 00814 } 00815 } 00816 return(ST_none); 00817 }
|
|
Definition at line 1321 of file getname.c. References NULL, SW_NONE, and switch_target_list. Referenced by get_attribute_value_name(), and sys_rsbac_switch(). 01323 { 01324 if(!switch_name) 01325 return(NULL); 01326 if(target > SW_NONE) 01327 strcpy(switch_name, "ERROR!"); 01328 else 01329 strcpy(switch_name, switch_target_list[target]); 01330 return(switch_name); 01331 }
|
|
Definition at line 1333 of file getname.c. References SW_NONE, and switch_target_list. 01334 { 01335 enum rsbac_switch_target_t i; 01336 01337 if(!switch_name) 01338 return(SW_NONE); 01339 for (i = 0; i < SW_NONE; i++) 01340 { 01341 #ifdef __KERNEL__ 01342 if (!strncmp(switch_name,switch_target_list[i],strlen(switch_target_list[i]))) 01343 #else 01344 if (!strcmp(switch_name,switch_target_list[i])) 01345 #endif 01346 { 01347 return(i); 01348 } 01349 } 01350 return(SW_NONE); 01351 }
|
|
Definition at line 826 of file getname.c. References D_block, D_block_major, D_char, D_char_major, rsbac_target_id_t::dev, get_scd_type_name(), rsbac_target_id_t::group, I_anonpipe, I_mqueue, I_msg, I_sem, I_shm, rsbac_ipc_t::id, rsbac_ipc_id_t::id_nr, rsbac_target_id_t::ipc, KERNEL_VERSION, rsbac_net_obj_desc_t::local_addr, rsbac_dev_desc_t::major, rsbac_dev_desc_t::minor, rsbac_target_id_t::netdev, rsbac_target_id_t::netobj, rsbac_target_id_t::nettemp, NIPQUAD, NULL, rsbac_target_id_t::process, rsbac_net_obj_desc_t::remote_addr, rsbac_get_full_path(), rsbac_get_net_family_name(), rsbac_get_net_protocol_name(), rsbac_get_net_type_name(), RSBAC_IFNAMSIZ, rsbac_kfree(), rsbac_kmalloc(), RSBAC_MAXNAMELEN, rsbac_min, rsbac_target_id_t::scd, rsbac_net_obj_desc_t::sock_p, T_DEV, T_DIR, T_FD, T_FIFO, T_FILE, T_GROUP, T_IPC, T_NETDEV, T_NETOBJ, T_NETTEMP, T_NETTEMP_NT, T_NONE, T_PROCESS, T_SCD, T_SYMLINK, T_USER, rsbac_dev_desc_t::type, rsbac_ipc_t::type, and rsbac_target_id_t::user. Referenced by auto_read_attr(), auto_read_write_attr(), auto_write_attr(), rsbac_acl_check_right(), rsbac_acl_sys_add_to_acl_entry(), rsbac_acl_sys_remove_acl(), rsbac_acl_sys_remove_acl_entry(), rsbac_acl_sys_remove_from_acl_entry(), rsbac_acl_sys_set_acl_entry(), rsbac_acl_sys_set_mask(), rsbac_adf_request_int(), and rsbac_adf_set_attr(). 00830 { 00831 #ifdef __KERNEL__ 00832 char * help_name; 00833 #else 00834 char help_name[RSBAC_MAXNAMELEN+4]; 00835 #endif 00836 00837 if(!target_type_name) 00838 return(NULL); 00839 00840 #ifdef __KERNEL__ 00841 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00842 help_name = rsbac_kmalloc(CONFIG_RSBAC_MAX_PATH_LEN + 4); 00843 #else 00844 help_name = rsbac_kmalloc(RSBAC_MAXNAMELEN + 4); 00845 #endif 00846 if(!help_name) 00847 return NULL; 00848 #endif 00849 00850 switch(target) 00851 { 00852 #ifdef __KERNEL__ 00853 case T_FD: strcpy (target_type_name, "FD"); 00854 if(!target_id_name) 00855 break; 00856 sprintf(target_id_name, "Device %02u:%02u Inode %u", 00857 RSBAC_MAJOR(tid.file.device), RSBAC_MINOR(tid.file.device), 00858 tid.file.inode); 00859 if( tid.file.dentry_p 00860 && tid.file.dentry_p->d_name.name 00861 && tid.file.dentry_p->d_name.len 00862 ) 00863 { 00864 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00865 if(rsbac_get_full_path(tid.file.dentry_p, help_name, 00866 CONFIG_RSBAC_MAX_PATH_LEN) > 0) 00867 { 00868 strcat(target_id_name, " Path "); 00869 strcat(target_id_name, help_name); 00870 } 00871 #else 00872 int namelen = rsbac_min(tid.file.dentry_p->d_name.len, RSBAC_MAXNAMELEN); 00873 00874 strcat(target_id_name, " Name "); 00875 strncpy(help_name, tid.file.dentry_p->d_name.name, namelen); 00876 help_name[namelen]=0; 00877 strcat(target_id_name, help_name); 00878 #endif 00879 } 00880 break; 00881 case T_FILE: strcpy (target_type_name, "FILE"); 00882 if(!target_id_name) 00883 break; 00884 sprintf(target_id_name, "Device %02u:%02u Inode %u", 00885 RSBAC_MAJOR(tid.file.device), RSBAC_MINOR(tid.file.device), 00886 tid.file.inode); 00887 if( tid.file.dentry_p 00888 && tid.file.dentry_p->d_name.name 00889 && tid.file.dentry_p->d_name.len 00890 ) 00891 { 00892 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00893 if(rsbac_get_full_path(tid.file.dentry_p, help_name, 00894 CONFIG_RSBAC_MAX_PATH_LEN) > 0) 00895 { 00896 strcat(target_id_name, " Path "); 00897 strcat(target_id_name, help_name); 00898 } 00899 #else 00900 int namelen = rsbac_min(tid.file.dentry_p->d_name.len, RSBAC_MAXNAMELEN); 00901 00902 strcat(target_id_name, " Name "); 00903 strncpy(help_name, tid.file.dentry_p->d_name.name, namelen); 00904 help_name[namelen]=0; 00905 strcat(target_id_name, help_name); 00906 #endif 00907 } 00908 break; 00909 case T_DIR: strcpy (target_type_name, "DIR"); 00910 if(!target_id_name) 00911 break; 00912 sprintf(target_id_name, "Device %02u:%02u Inode %u", 00913 RSBAC_MAJOR(tid.file.device), RSBAC_MINOR(tid.file.device), 00914 tid.dir.inode); 00915 if( tid.dir.dentry_p 00916 && tid.dir.dentry_p->d_name.name 00917 && tid.dir.dentry_p->d_name.len 00918 ) 00919 { 00920 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00921 if(rsbac_get_full_path(tid.dir.dentry_p, help_name, 00922 CONFIG_RSBAC_MAX_PATH_LEN) > 0) 00923 { 00924 strcat(target_id_name, " Path "); 00925 strcat(target_id_name, help_name); 00926 } 00927 #else 00928 int namelen = rsbac_min(tid.dir.dentry_p->d_name.len, RSBAC_MAXNAMELEN); 00929 00930 strcat(target_id_name, " Name "); 00931 strncpy(help_name, tid.dir.dentry_p->d_name.name, namelen); 00932 help_name[namelen]=0; 00933 strcat(target_id_name, help_name); 00934 #endif 00935 } 00936 break; 00937 case T_FIFO: strcpy (target_type_name, "FIFO"); 00938 if(!target_id_name) 00939 break; 00940 sprintf(target_id_name, "Device %02u:%02u Inode %u", 00941 RSBAC_MAJOR(tid.file.device), RSBAC_MINOR(tid.file.device), 00942 tid.fifo.inode); 00943 if( tid.fifo.dentry_p 00944 && tid.fifo.dentry_p->d_name.name 00945 && tid.fifo.dentry_p->d_name.len 00946 ) 00947 { 00948 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00949 if(rsbac_get_full_path(tid.fifo.dentry_p, help_name, 00950 CONFIG_RSBAC_MAX_PATH_LEN) > 0) 00951 { 00952 strcat(target_id_name, " Path "); 00953 strcat(target_id_name, help_name); 00954 } 00955 #else 00956 int namelen = rsbac_min(tid.fifo.dentry_p->d_name.len, RSBAC_MAXNAMELEN); 00957 00958 strcat(target_id_name, " Name "); 00959 strncpy(help_name, tid.fifo.dentry_p->d_name.name, namelen); 00960 help_name[namelen]=0; 00961 strcat(target_id_name, help_name); 00962 #endif 00963 } 00964 break; 00965 case T_SYMLINK: strcpy (target_type_name, "SYMLINK"); 00966 if(!target_id_name) 00967 break; 00968 sprintf(target_id_name, "Device %02u:%02u Inode %u", 00969 RSBAC_MAJOR(tid.file.device), RSBAC_MINOR(tid.file.device), 00970 tid.symlink.inode); 00971 if( tid.symlink.dentry_p 00972 && tid.symlink.dentry_p->d_name.name 00973 && tid.symlink.dentry_p->d_name.len 00974 ) 00975 { 00976 #ifdef CONFIG_RSBAC_LOG_FULL_PATH 00977 if(rsbac_get_full_path(tid.symlink.dentry_p, help_name, 00978 CONFIG_RSBAC_MAX_PATH_LEN) > 0) 00979 { 00980 strcat(target_id_name, " Path "); 00981 strcat(target_id_name, help_name); 00982 } 00983 #else 00984 int namelen = rsbac_min(tid.symlink.dentry_p->d_name.len, RSBAC_MAXNAMELEN); 00985 00986 strcat(target_id_name, " Name "); 00987 strncpy(help_name, tid.symlink.dentry_p->d_name.name, namelen); 00988 help_name[namelen]=0; 00989 strcat(target_id_name, help_name); 00990 #endif 00991 } 00992 break; 00993 case T_DEV: strcpy (target_type_name, "DEV"); 00994 if(!target_id_name) 00995 break; 00996 switch(tid.dev.type) 00997 { 00998 case D_block: 00999 sprintf(target_id_name, "block %02u:%02u", 01000 tid.dev.major, tid.dev.minor); 01001 break; 01002 case D_char: 01003 sprintf(target_id_name, "char %02u:%02u", 01004 tid.dev.major, tid.dev.minor); 01005 break; 01006 case D_block_major: 01007 sprintf(target_id_name, "block major %02u", 01008 tid.dev.major); 01009 break; 01010 case D_char_major: 01011 sprintf(target_id_name, "char major %02u", 01012 tid.dev.major); 01013 break; 01014 default: 01015 sprintf(target_id_name, "*unknown* %02u:%02u", 01016 tid.dev.major, tid.dev.minor); 01017 } 01018 break; 01019 case T_NETOBJ: strcpy (target_type_name, "NETOBJ"); 01020 if(!target_id_name) 01021 break; 01022 #ifdef CONFIG_NET 01023 if( tid.netobj.sock_p 01024 && tid.netobj.sock_p->ops 01025 && tid.netobj.sock_p->sk 01026 ) 01027 { 01028 char type_name[RSBAC_MAXNAMELEN]; 01029 01030 switch(tid.netobj.sock_p->ops->family) 01031 { 01032 case AF_INET: 01033 { 01034 __u32 saddr; 01035 __u16 sport; 01036 __u32 daddr; 01037 __u16 dport; 01038 struct net_device *dev; 01039 char ldevname[RSBAC_IFNAMSIZ+10]; 01040 char rdevname[RSBAC_IFNAMSIZ+10]; 01041 01042 if(tid.netobj.local_addr) 01043 { 01044 struct sockaddr_in * addr = tid.netobj.local_addr; 01045 01046 saddr = addr->sin_addr.s_addr; 01047 sport = ntohs(addr->sin_port); 01048 } 01049 else 01050 { 01051 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 01052 saddr = inet_sk(tid.netobj.sock_p->sk)->saddr; 01053 sport = inet_sk(tid.netobj.sock_p->sk)->num; 01054 #else 01055 saddr = tid.netobj.sock_p->sk->saddr; 01056 sport = tid.netobj.sock_p->sk->num; 01057 #endif 01058 } 01059 if(tid.netobj.remote_addr) 01060 { 01061 struct sockaddr_in * addr = tid.netobj.remote_addr; 01062 01063 daddr = addr->sin_addr.s_addr; 01064 dport = ntohs(addr->sin_port); 01065 } 01066 else 01067 { 01068 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 01069 daddr = inet_sk(tid.netobj.sock_p->sk)->daddr; 01070 dport = ntohs(inet_sk(tid.netobj.sock_p->sk)->dport); 01071 #else 01072 daddr = tid.netobj.sock_p->sk->daddr; 01073 dport = ntohs(tid.netobj.sock_p->sk->dport); 01074 #endif 01075 } 01076 dev = ip_dev_find(saddr); 01077 if(dev) 01078 { 01079 sprintf(ldevname, "%s:", dev->name); 01080 dev_put(dev); 01081 } 01082 else 01083 ldevname[0] = 0; 01084 dev = ip_dev_find(daddr); 01085 if(dev) 01086 { 01087 sprintf(rdevname, "%s:", dev->name); 01088 dev_put(dev); 01089 } 01090 else 01091 rdevname[0] = 0; 01092 sprintf(target_id_name, "%p INET %s proto %s local %s%u.%u.%u.%u:%u remote %s%u.%u.%u.%u:%u", 01093 tid.netobj.sock_p, 01094 rsbac_get_net_type_name(type_name, 01095 tid.netobj.sock_p->type), 01096 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 01097 rsbac_get_net_protocol_name(help_name, 01098 tid.netobj.sock_p->sk->sk_protocol), 01099 #else 01100 rsbac_get_net_protocol_name(help_name, 01101 tid.netobj.sock_p->sk->protocol), 01102 #endif 01103 ldevname, 01104 NIPQUAD(saddr), 01105 sport, 01106 rdevname, 01107 NIPQUAD(daddr), 01108 dport); 01109 } 01110 break; 01111 case AF_UNIX: 01112 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 01113 if(unix_sk(tid.netobj.sock_p->sk)->addr) 01114 sprintf(target_id_name, "%p UNIX %s %s", 01115 tid.netobj.sock_p, 01116 rsbac_get_net_type_name(type_name, 01117 tid.netobj.sock_p->type), 01118 unix_sk(tid.netobj.sock_p->sk)->addr->name[0].sun_path); 01119 #else 01120 if(tid.netobj.sock_p->sk->protinfo.af_unix.addr) 01121 sprintf(target_id_name, "%p UNIX %s %s", 01122 tid.netobj.sock_p, 01123 rsbac_get_net_type_name(type_name, 01124 tid.netobj.sock_p->type), 01125 tid.netobj.sock_p->sk->protinfo.af_unix.addr->name[0].sun_path); 01126 #endif 01127 else 01128 if(tid.netobj.local_addr) 01129 { 01130 struct sockaddr_un * addr = tid.netobj.local_addr; 01131 01132 sprintf(target_id_name, "%p UNIX %s %s", 01133 tid.netobj.sock_p, 01134 rsbac_get_net_type_name(type_name, 01135 tid.netobj.sock_p->type), 01136 addr->sun_path); 01137 } 01138 else 01139 sprintf(target_id_name, "%p UNIX %s", 01140 tid.netobj.sock_p, 01141 rsbac_get_net_type_name(type_name, 01142 tid.netobj.sock_p->type)); 01143 break; 01144 default: 01145 sprintf(target_id_name, "%p %s %s", 01146 tid.netobj.sock_p, 01147 rsbac_get_net_family_name(help_name, 01148 tid.netobj.sock_p->ops->family), 01149 rsbac_get_net_type_name(type_name, 01150 tid.netobj.sock_p->type)); 01151 } 01152 } 01153 else 01154 #endif /* CONFIG_NET */ 01155 { 01156 sprintf(target_id_name, "%p", tid.netobj.sock_p); 01157 } 01158 break; 01159 #endif /* __KERNEL__ */ 01160 case T_IPC: strcpy (target_type_name, "IPC"); 01161 if(!target_id_name) 01162 break; 01163 switch (tid.ipc.type) 01164 { 01165 case I_sem: strcpy(target_id_name, "Sem-ID "); 01166 break; 01167 case I_msg: strcpy(target_id_name, "Msg-ID "); 01168 break; 01169 case I_shm: strcpy(target_id_name, "Shm-ID "); 01170 break; 01171 case I_anonpipe: strcpy(target_id_name, "AnonPipe-ID "); 01172 break; 01173 case I_mqueue: strcpy(target_id_name, "Mqueue-ID "); 01174 break; 01175 default: strcpy(target_id_name, "???-ID "); 01176 break; 01177 }; 01178 sprintf(help_name, "%lu", tid.ipc.id.id_nr); 01179 strcat(target_id_name, help_name); 01180 break; 01181 case T_SCD: strcpy (target_type_name, "SCD"); 01182 if(target_id_name) 01183 get_scd_type_name(target_id_name, tid.scd); 01184 break; 01185 case T_USER: strcpy (target_type_name, "USER"); 01186 if(target_id_name) 01187 sprintf(target_id_name, "%u", tid.user); 01188 break; 01189 case T_PROCESS: strcpy (target_type_name, "PROCESS"); 01190 if(target_id_name) 01191 sprintf(target_id_name, "%u", tid.process); 01192 break; 01193 case T_GROUP: strcpy (target_type_name, "GROUP"); 01194 if(target_id_name) 01195 sprintf(target_id_name, "%u", tid.group); 01196 break; 01197 case T_NETDEV: strcpy (target_type_name, "NETDEV"); 01198 if(!target_id_name) 01199 break; 01200 strncpy(target_id_name, tid.netdev, RSBAC_IFNAMSIZ); 01201 target_id_name[RSBAC_IFNAMSIZ] = 0; 01202 break; 01203 case T_NETTEMP: strcpy (target_type_name, "NETTEMP"); 01204 if(target_id_name) 01205 sprintf(target_id_name, "%u", tid.nettemp); 01206 break; 01207 case T_NETTEMP_NT: strcpy (target_type_name, "NETTEMP_NT"); 01208 if(target_id_name) 01209 sprintf(target_id_name, "%u", tid.nettemp); 01210 break; 01211 case T_NONE: strcpy (target_type_name, "NONE"); 01212 if(target_id_name) 01213 strcpy (target_id_name, "NONE"); 01214 break; 01215 default: strcpy (target_type_name, "ERROR!!!"); 01216 if(target_id_name) 01217 sprintf(target_id_name, "%u", target); 01218 } 01219 #ifdef __KERNEL__ 01220 rsbac_kfree(help_name); 01221 #endif 01222 return(target_type_name); 01223 }
|
|
Definition at line 1225 of file getname.c. References NULL, T_DEV, T_DIR, T_FD, T_FIFO, T_FILE, T_GROUP, T_IPC, T_NETDEV, T_NETOBJ, T_NETTEMP, T_NETTEMP_NT, T_NONE, T_PROCESS, T_SCD, T_SYMLINK, and T_USER. Referenced by check_comp_rc(), get_attribute_value_name(), and rsbac_rc_sys_copy_type(). 01227 { 01228 if(!target_type_name) 01229 return(NULL); 01230 01231 switch(target) 01232 { 01233 case T_FILE: strcpy (target_type_name, "FILE"); 01234 break; 01235 case T_DIR: strcpy (target_type_name, "DIR"); 01236 break; 01237 case T_FIFO: strcpy (target_type_name, "FIFO"); 01238 break; 01239 case T_SYMLINK: strcpy (target_type_name, "SYMLINK"); 01240 break; 01241 case T_FD: strcpy (target_type_name, "FD"); 01242 break; 01243 case T_DEV: strcpy (target_type_name, "DEV"); 01244 break; 01245 case T_NETOBJ: strcpy (target_type_name, "NETOBJ"); 01246 break; 01247 case T_IPC: strcpy (target_type_name, "IPC"); 01248 break; 01249 case T_SCD: strcpy (target_type_name, "SCD"); 01250 break; 01251 case T_USER: strcpy (target_type_name, "USER"); 01252 break; 01253 case T_PROCESS: strcpy (target_type_name, "PROCESS"); 01254 break; 01255 case T_GROUP: strcpy (target_type_name, "GROUP"); 01256 break; 01257 case T_NETDEV: strcpy (target_type_name, "NETDEV"); 01258 break; 01259 case T_NETTEMP: strcpy (target_type_name, "NETTEMP"); 01260 break; 01261 case T_NETTEMP_NT: strcpy (target_type_name, "NETTEMP_NT"); 01262 break; 01263 case T_NONE: strcpy (target_type_name, "NONE"); 01264 break; 01265 default: strcpy (target_type_name, "ERROR!!!"); 01266 }; 01267 return(target_type_name); 01268 }
|
|
Definition at line 1270 of file getname.c. References T_NONE, and target_list. 01271 { 01272 enum rsbac_target_t i; 01273 01274 if(!target_name) 01275 return(T_NONE); 01276 for (i = 0; i < T_NONE; i++) 01277 { 01278 if (!strcmp(target_name,target_list[i])) 01279 { 01280 return(i); 01281 } 01282 } 01283 return(T_NONE); 01284 }
|
|
Definition at line 89 of file getname.c. Referenced by get_attr_module(). |
|
Definition at line 220 of file getname.c. Referenced by get_attribute_name(), and get_attribute_nr(). |
|
Definition at line 462 of file getname.c. Referenced by get_attribute_param(). |
|
Definition at line 565 of file getname.c. Referenced by get_cap_name(), and get_cap_nr(). |
|
Definition at line 398 of file getname.c. Referenced by get_error_name(). |
|
Initial value: { "sem", "msg", "shm", "anonpipe", "mqueue", "none" } Definition at line 370 of file getname.c. Referenced by get_ipc_target_name(), and get_ipc_target_nr(). |
|
Initial value: { "none", "denied", "full", "request", "invalid!" } Definition at line 558 of file getname.c. Referenced by get_log_level_name(), and get_log_level_nr(). |
|
Definition at line 30 of file getname.c. Referenced by get_request_name(), and get_request_nr(). |
|
Initial value: { "NOT_GRANTED", "GRANTED", "DO_NOT_CARE", "UNDEFINED" } Definition at line 83 of file getname.c. Referenced by get_result_name(), and get_result_nr(). |
|
Initial value: { "time_strucs", "clock", "host_id", "net_id", "ioports", "rlimit", "swap", "syslog", "rsbac", "rsbac_log", "other", "kmem", "network", "firewall", "priority", "sysfs", "rsbac_remote_log", "quota", "sysctl", "nfsd", "ksyms", "mlock", "capability", "none" } Definition at line 433 of file getname.c. Referenced by get_scd_type_name(), and get_scd_type_nr(). |
|
Initial value: { "GEN", "MAC", "PM", "DAZ", "FF", "RC", "AUTH", "REG", "ACL", "CAP", "JAIL", "RES", "PAX", "SOFTMODE", "DAC_DISABLE", "UM", "FREEZE", "NONE" } Definition at line 378 of file getname.c. Referenced by get_switch_target_name(), and get_switch_target_nr(). |
|
Initial value: { "FILE", "DIR", "FIFO", "SYMLINK", "DEV", "IPC", "SCD", "USER", "PROCESS", "NETDEV", "NETTEMP", "NETOBJ", "NETTEMP_NT", "GROUP", "FD", "NONE" } Definition at line 352 of file getname.c. Referenced by get_target_nr(). |