root_plug.c File Reference

#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


Function Documentation

void cleanup_module void   ) 
 

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 }

int init_module void   ) 
 

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 }

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 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 }


Variable Documentation

long handle = 999999 [static]
 

Definition at line 51 of file root_plug.c.


Generated on Sun May 21 14:31:03 2006 for RSBAC by  doxygen 1.4.2