modules_off.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/namei.h>

Go to the source code of this file.

Functions

 MODULE_AUTHOR ("Michal Purzynski")
 MODULE_DESCRIPTION ("RSBAC REG modules_off 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 = 9999991
static rsbac_inode_nr_t inode_nr = 0
static kdev_t device_nr = 0


Function Documentation

void cleanup_module void   ) 
 

Definition at line 98 of file modules_off.c.

References handle, rsbac_printk(), and rsbac_reg_unregister().

00099 {
00100         rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: Unregistering.\n");
00101 
00102         if(rsbac_reg_unregister(handle))
00103         {
00104                 rsbac_printk(KERN_ERR "RSBAC REG decision module modules_off: Unregistering failed - beware of possible system failure!\n");
00105         }
00106         
00107         rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: Unloaded.\n");
00108 }

int init_module void   ) 
 

Definition at line 62 of file modules_off.c.

References device_nr, handle, inode_nr, request_func(), rsbac_printk(), rsbac_reg_register(), RSBAC_REG_VERSION, and TRUE.

00063 {
00064 
00065         struct rsbac_reg_entry_t entry;
00066         struct nameidata nd;
00067 
00068         path_lookup("/proc/modules", 0, &nd);
00069         device_nr = nd.dentry->d_sb->s_dev;
00070         inode_nr = nd.dentry->d_inode->i_ino;
00071         path_release(&nd);
00072 
00073         rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: Initializing.\n");
00074 
00075         /* clearing registration entries */
00076         memset(&entry, 0, sizeof(entry));
00077 
00078         strcpy(entry.name, "RSBAC REG modules_off ADF module");
00079         rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: REG Version: %u, Name: %s, Handle: %li\n",RSBAC_REG_VERSION, entry.name, handle);
00080 
00081         entry.handle = handle;
00082         entry.request_func = request_func;
00083         entry.switch_on = TRUE;
00084 
00085         rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: Registering to ADF.\n");
00086 
00087         if(rsbac_reg_register(RSBAC_REG_VERSION, entry) < 0)
00088         {
00089                 rsbac_printk(KERN_WARNING "RSBAC REG decision module sample 1: Registering failed. Unloading.\n");
00090                 return -ENOEXEC;
00091         }
00092 
00093         rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: Loaded.\n");
00094 
00095         return 0;
00096 }

MODULE_AUTHOR "Michal Purzynski"   ) 
 

MODULE_DESCRIPTION "RSBAC REG modules_off 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 35 of file modules_off.c.

References device_nr, DO_NOT_CARE, inode_nr, NOT_GRANTED, R_ADD_TO_KERNEL, R_GET_STATUS_DATA, R_REMOVE_FROM_KERNEL, and T_FILE.

00042 {
00043         switch (request) {
00044                 case R_ADD_TO_KERNEL:
00045                 case R_REMOVE_FROM_KERNEL:
00046                         return NOT_GRANTED;
00047                 case R_GET_STATUS_DATA:
00048                         switch (target) {
00049                                 case T_FILE:
00050                                         if (tid.file.device == device_nr && tid.file.inode == inode_nr)
00051                                         return NOT_GRANTED;
00052                                 default:
00053                                         return DO_NOT_CARE;
00054                         }
00055                 default:
00056                         return DO_NOT_CARE;
00057         }
00058 }


Variable Documentation

kdev_t device_nr = 0 [static]
 

Definition at line 31 of file modules_off.c.

Referenced by init_module(), and request_func().

long handle = 9999991 [static]
 

Definition at line 28 of file modules_off.c.

rsbac_inode_nr_t inode_nr = 0 [static]
 

Definition at line 30 of file modules_off.c.

Referenced by init_module(), and request_func().


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