#include <linux/config.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/fs.h>
#include <rsbac/types.h>
#include <rsbac/reg.h>
#include <rsbac/adf.h>
#include <rsbac/aci.h>
#include <rsbac/getname.h>
#include <rsbac/error.h>
#include <rsbac/proc_fs.h>
#include <linux/usb.h>
Go to the source code of this file.
Functions | |
MODULE_AUTHOR ("Michal Purzynski") | |
MODULE_DESCRIPTION ("RSBAC REG root_plug decision module") | |
MODULE_LICENSE ("GPL") | |
static int | request_func (enum rsbac_adf_request_t request, rsbac_pid_t owner_pid, enum rsbac_target_t target, union rsbac_target_id_t tid, enum rsbac_attribute_t attr, union rsbac_attribute_value_t attr_val, rsbac_uid_t owner) |
int | init_module (void) |
void | cleanup_module (void) |
Variables | |
static long | handle = 999999 |
|
Definition at line 130 of file root_plug.c. References handle, rsbac_printk(), and rsbac_reg_unregister(). 00131 { 00132 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: Unregistering.\n"); 00133 00134 if(rsbac_reg_unregister(handle)) 00135 { 00136 rsbac_printk(KERN_ERR "RSBAC REG decision module root_plug: Unregistering failed - beware of possible system failure!\n"); 00137 } 00138 00139 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: Unloaded.\n"); 00140 }
|
|
Definition at line 101 of file root_plug.c. References handle, request_func(), rsbac_printk(), rsbac_reg_register(), RSBAC_REG_VERSION, and TRUE. 00102 { 00103 struct rsbac_reg_entry_t entry; 00104 00105 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: Initializing.\n"); 00106 00107 /* clearing registration entries */ 00108 memset(&entry, 0, sizeof(entry)); 00109 00110 strcpy(entry.name, "RSBAC REG root_plug ADF module"); 00111 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: REG Version: %u, Name: %s, Handle: %li\n", 00112 RSBAC_REG_VERSION, entry.name, handle); 00113 00114 entry.handle = handle; 00115 entry.request_func = request_func; 00116 entry.switch_on = TRUE; 00117 00118 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: Registering to ADF.\n"); 00119 00120 if(rsbac_reg_register(RSBAC_REG_VERSION, entry) < 0) { 00121 rsbac_printk(KERN_WARNING "RSBAC REG decision module sample 1: Registering failed. Unloading.\n"); 00122 return -ENOEXEC; 00123 } 00124 00125 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: Loaded.\n"); 00126 00127 return 0; 00128 }
|
|
|
|
|
|
|
|
Definition at line 55 of file root_plug.c. References DO_NOT_CARE, NOT_GRANTED, NULL, rsbac_attribute_value_t::owner, R_CHANGE_GROUP, R_CHANGE_OWNER, R_CLONE, and T_PROCESS. 00062 { 00063 struct usb_device *dev = NULL; 00064 00065 #ifdef CONFIG_USB 00066 dev = usb_find_device(vendor_id, product_id); 00067 #endif 00068 00069 if (!dev) { 00070 00071 switch (request) { 00072 case R_CHANGE_OWNER: 00073 case R_CHANGE_GROUP: 00074 case R_CLONE: 00075 switch (target) { 00076 case T_PROCESS: 00077 switch (attr) { 00078 case A_owner: 00079 switch (attr_val.owner) { 00080 case 0: 00081 return NOT_GRANTED; 00082 default: 00083 return DO_NOT_CARE; 00084 } 00085 default: 00086 return DO_NOT_CARE; 00087 } 00088 default: 00089 return DO_NOT_CARE; 00090 } 00091 default: 00092 return DO_NOT_CARE; 00093 } 00094 } 00095 00096 return DO_NOT_CARE; 00097 }
|
|
Definition at line 51 of file root_plug.c. |