#include <rsbac/types.h>
#include <rsbac/debug.h>
Go to the source code of this file.
|
Definition at line 21 of file reg.h. Referenced by add_item(), add_sc_item(), init_module(), rsbac_reg_register(), and rsbac_reg_register_syscall(). |
|
Definition at line 15 of file reg.h. Referenced by init_module(), rsbac_reg_register(), and rsbac_reg_register_syscall(). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 747 of file reg_main.c. References add_item(), rsbac_reg_entry_t::handle, lookup_item(), rsbac_reg_entry_t::mount_func, rsbac_reg_entry_t::name, rsbac_reg_entry_t::need_overwrite_func, reg_write_lock(), reg_write_unlock(), rsbac_reg_entry_t::request_func, RSBAC_ECOULDNOTADDITEM, RSBAC_EEXISTS, RSBAC_EINVALIDVALUE, RSBAC_EINVALIDVERSION, rsbac_printk(), RSBAC_REG_NAME_LEN, RSBAC_REG_VERSION, rsbac_reg_entry_t::set_attr_func, rsbac_reg_entry_t::umount_func, and rsbac_reg_entry_t::write_func. Referenced by init_module(). 00749 { 00750 if(version != RSBAC_REG_VERSION) 00751 return(-RSBAC_EINVALIDVERSION); 00752 00753 /* check entry */ 00754 if( ( !entry.request_func 00755 && !entry.set_attr_func 00756 && !entry.need_overwrite_func 00757 && !entry.write_func 00758 && !entry.mount_func 00759 && !entry.umount_func 00760 ) 00761 || (entry.handle <= 0) 00762 ) 00763 return -RSBAC_EINVALIDVALUE; 00764 00765 reg_write_lock(); 00766 if(lookup_item(entry.handle)) 00767 { 00768 rsbac_printk(KERN_INFO "rsbac_reg_register: Handle in use, registering failed: %s.\n", 00769 entry.name); 00770 entry.handle = -RSBAC_EEXISTS; 00771 } 00772 else 00773 { 00774 if(!add_item(entry)) 00775 { 00776 entry.name[RSBAC_REG_NAME_LEN] = 0; 00777 rsbac_printk(KERN_INFO "rsbac_reg_register: registering failed for %s.\n", 00778 entry.name); 00779 entry.handle = -RSBAC_ECOULDNOTADDITEM; 00780 } 00781 #ifdef CONFIG_RSBAC_DEBUG 00782 else 00783 if(rsbac_debug_reg) 00784 { 00785 rsbac_printk(KERN_DEBUG "rsbac_reg_register: module %s registered.\n", 00786 entry.name); 00787 } 00788 #endif 00789 } 00790 reg_write_unlock(); 00791 return entry.handle; 00792 }
|
|
Definition at line 880 of file reg_main.c. References add_sc_item(), rsbac_reg_syscall_entry_t::dispatcher_handle, lookup_sc_item_dis(), lookup_sc_item_reg(), rsbac_reg_syscall_entry_t::name, reg_sc_write_lock(), reg_sc_write_unlock(), rsbac_reg_syscall_entry_t::registration_handle, RSBAC_ECOULDNOTADDITEM, RSBAC_EEXISTS, RSBAC_EINVALIDVALUE, RSBAC_EINVALIDVERSION, rsbac_printk(), RSBAC_REG_NAME_LEN, RSBAC_REG_VERSION, and rsbac_reg_syscall_entry_t::syscall_func. Referenced by init_module(). 00882 { 00883 if(version != RSBAC_REG_VERSION) 00884 return(-RSBAC_EINVALIDVERSION); 00885 00886 /* check entry */ 00887 if( !entry.syscall_func 00888 || (entry.registration_handle <= 0) 00889 || (entry.dispatcher_handle <= 0) 00890 ) 00891 return -RSBAC_EINVALIDVALUE; 00892 00893 reg_sc_write_lock(); 00894 if(lookup_sc_item_reg(entry.registration_handle)) 00895 { 00896 rsbac_printk(KERN_INFO "rsbac_reg_register_syscall: Registration handle in use, registering failed: %s.\n", 00897 entry.name); 00898 entry.registration_handle = -RSBAC_EEXISTS; 00899 } 00900 else 00901 if(lookup_sc_item_dis(entry.dispatcher_handle)) 00902 { 00903 rsbac_printk(KERN_INFO "rsbac_reg_register_syscall: Dispatcher handle in use, registering failed: %s.\n", 00904 entry.name); 00905 entry.registration_handle = -RSBAC_EEXISTS; 00906 } 00907 else 00908 { 00909 entry.name[RSBAC_REG_NAME_LEN] = 0; 00910 if(!add_sc_item(entry)) 00911 { 00912 rsbac_printk(KERN_INFO "rsbac_reg_register_syscall: registering failed for %s.\n", 00913 entry.name); 00914 entry.registration_handle = -RSBAC_ECOULDNOTADDITEM; 00915 } 00916 #ifdef CONFIG_RSBAC_DEBUG 00917 else 00918 if(rsbac_debug_reg) 00919 { 00920 rsbac_printk(KERN_DEBUG "rsbac_reg_register_syscall: syscall %s registered.\n", 00921 entry.name); 00922 } 00923 #endif 00924 } 00925 reg_sc_write_unlock(); 00926 return entry.registration_handle; 00927 }
|
|
Definition at line 801 of file reg_main.c. References FALSE, lookup_item(), reg_read_lock(), reg_read_unlock(), RSBAC_EINVALIDTARGET, RSBAC_EINVALIDVALUE, rsbac_printk(), and TRUE. 00802 { 00803 #ifdef CONFIG_RSBAC_SWITCH_REG 00804 struct rsbac_reg_list_item_t * item_p; 00805 int err=0; 00806 00807 if((value != FALSE) && (value != TRUE)) 00808 return -RSBAC_EINVALIDVALUE; 00809 reg_read_lock(); 00810 item_p = lookup_item(handle); 00811 if(item_p) 00812 { 00813 item_p->entry.switch_on = value; 00814 #ifdef CONFIG_RSBAC_DEBUG 00815 if(rsbac_debug_reg) 00816 { 00817 rsbac_printk(KERN_DEBUG "rsbac_reg_switch: module %s switched to %i.\n", 00818 item_p->entry.name, 00819 value); 00820 } 00821 #endif 00822 } 00823 else 00824 err = -RSBAC_EINVALIDTARGET; 00825 reg_read_unlock(); 00826 return err; 00827 #else 00828 return(-RSBAC_EINVALIDTARGET); 00829 #endif 00830 };
|
|
Definition at line 840 of file reg_main.c. References lookup_item(), reg_write_lock(), reg_write_unlock(), remove_item(), RSBAC_EINVALIDTARGET, RSBAC_EINVALIDVALUE, and rsbac_printk(). Referenced by cleanup_module(), and init_module(). 00841 { 00842 int err=0; 00843 00844 if(handle <= 0) 00845 return -RSBAC_EINVALIDVALUE; 00846 00847 reg_write_lock(); 00848 if(lookup_item(handle)) 00849 { 00850 remove_item(handle); 00851 #ifdef CONFIG_RSBAC_DEBUG 00852 if(rsbac_debug_reg) 00853 { 00854 rsbac_printk(KERN_DEBUG "rsbac_reg_unregister: module unregistered.\n"); 00855 } 00856 #endif 00857 } 00858 else 00859 { 00860 err = -RSBAC_EINVALIDTARGET; 00861 #ifdef CONFIG_RSBAC_DEBUG 00862 if(rsbac_debug_reg) 00863 { 00864 rsbac_printk(KERN_DEBUG "rsbac_reg_unregister: module unregistering failed.\n"); 00865 } 00866 #endif 00867 } 00868 reg_write_unlock(); 00869 return err; 00870 }
|
|
Definition at line 937 of file reg_main.c. References lookup_sc_item_reg(), reg_sc_write_lock(), reg_sc_write_unlock(), remove_sc_item(), RSBAC_EINVALIDTARGET, RSBAC_EINVALIDVALUE, and rsbac_printk(). Referenced by cleanup_module(), and init_module(). 00938 { 00939 int err=0; 00940 00941 if(handle <= 0) 00942 return -RSBAC_EINVALIDVALUE; 00943 00944 reg_sc_write_lock(); 00945 if(lookup_sc_item_reg(handle)) 00946 { 00947 remove_sc_item(handle); 00948 #ifdef CONFIG_RSBAC_DEBUG 00949 if(rsbac_debug_reg) 00950 { 00951 rsbac_printk(KERN_DEBUG "rsbac_reg_unregister_syscall: syscall unregistered.\n"); 00952 } 00953 #endif 00954 } 00955 else 00956 { 00957 err = -RSBAC_EINVALIDTARGET; 00958 rsbac_printk(KERN_INFO "rsbac_reg_unregister_syscall: syscall unregistering failed for invalid handle!\n"); 00959 } 00960 reg_sc_write_unlock(); 00961 return err; 00962 }
|