/linux-2.6.21.1-rsbac-1.3.4/rsbac/adf/reg/root_plug.c File Reference

#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


Function Documentation

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 }


Variable Documentation

long handle = 999999 [static]

Definition at line 59 of file root_plug.c.


Generated on Wed May 16 11:54:18 2007 for RSBAC by  doxygen 1.5.1