#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 |
void cleanup_module | ( | void | ) |
Definition at line 138 of file root_plug.c.
References handle, rsbac_printk(), and rsbac_reg_unregister().
00139 { 00140 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: Unregistering.\n"); 00141 00142 if(rsbac_reg_unregister(handle)) 00143 { 00144 rsbac_printk(KERN_ERR "RSBAC REG decision module root_plug: Unregistering failed - beware of possible system failure!\n"); 00145 } 00146 00147 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: Unloaded.\n"); 00148 }
int init_module | ( | void | ) |
Definition at line 109 of file root_plug.c.
References handle, request_func(), rsbac_printk(), rsbac_reg_register(), RSBAC_REG_VERSION, and TRUE.
00110 { 00111 struct rsbac_reg_entry_t entry; 00112 00113 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: Initializing.\n"); 00114 00115 /* clearing registration entries */ 00116 memset(&entry, 0, sizeof(entry)); 00117 00118 strcpy(entry.name, "RSBAC REG root_plug ADF module"); 00119 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: REG Version: %u, Name: %s, Handle: %li\n", 00120 RSBAC_REG_VERSION, entry.name, handle); 00121 00122 entry.handle = handle; 00123 entry.request_func = request_func; 00124 entry.switch_on = TRUE; 00125 00126 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: Registering to ADF.\n"); 00127 00128 if(rsbac_reg_register(RSBAC_REG_VERSION, entry) < 0) { 00129 rsbac_printk(KERN_WARNING "RSBAC REG decision module sample 1: Registering failed. Unloading.\n"); 00130 return -ENOEXEC; 00131 } 00132 00133 rsbac_printk(KERN_INFO "RSBAC REG decision module root_plug: Loaded.\n"); 00134 00135 return 0; 00136 }
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 | |||
) | [static] |
Definition at line 63 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.
00070 { 00071 struct usb_device *dev = NULL; 00072 00073 #ifdef CONFIG_USB 00074 dev = usb_find_device(vendor_id, product_id); 00075 #endif 00076 00077 if (!dev) { 00078 00079 switch (request) { 00080 case R_CHANGE_OWNER: 00081 case R_CHANGE_GROUP: 00082 case R_CLONE: 00083 switch (target) { 00084 case T_PROCESS: 00085 switch (attr) { 00086 case A_owner: 00087 switch (attr_val.owner) { 00088 case 0: 00089 return NOT_GRANTED; 00090 default: 00091 return DO_NOT_CARE; 00092 } 00093 default: 00094 return DO_NOT_CARE; 00095 } 00096 default: 00097 return DO_NOT_CARE; 00098 } 00099 default: 00100 return DO_NOT_CARE; 00101 } 00102 } 00103 00104 return DO_NOT_CARE; 00105 }
long handle = 999999 [static] |
Definition at line 59 of file root_plug.c.