#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 |
void cleanup_module | ( | void | ) |
Definition at line 97 of file modules_off.c.
References handle, rsbac_printk(), and rsbac_reg_unregister().
00098 { 00099 rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: Unregistering.\n"); 00100 00101 if(rsbac_reg_unregister(handle)) 00102 { 00103 rsbac_printk(KERN_ERR "RSBAC REG decision module modules_off: Unregistering failed - beware of possible system failure!\n"); 00104 } 00105 00106 rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: Unloaded.\n"); 00107 }
int init_module | ( | void | ) |
Definition at line 61 of file modules_off.c.
References device_nr, handle, inode_nr, request_func(), rsbac_printk(), rsbac_reg_register(), RSBAC_REG_VERSION, and TRUE.
00062 { 00063 00064 struct rsbac_reg_entry_t entry; 00065 struct nameidata nd; 00066 00067 path_lookup("/proc/modules", 0, &nd); 00068 device_nr = nd.dentry->d_sb->s_dev; 00069 inode_nr = nd.dentry->d_inode->i_ino; 00070 path_release(&nd); 00071 00072 rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: Initializing.\n"); 00073 00074 /* clearing registration entries */ 00075 memset(&entry, 0, sizeof(entry)); 00076 00077 strcpy(entry.name, "RSBAC REG modules_off ADF module"); 00078 rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: REG Version: %u, Name: %s, Handle: %li\n",RSBAC_REG_VERSION, entry.name, handle); 00079 00080 entry.handle = handle; 00081 entry.request_func = request_func; 00082 entry.switch_on = TRUE; 00083 00084 rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: Registering to ADF.\n"); 00085 00086 if(rsbac_reg_register(RSBAC_REG_VERSION, entry) < 0) 00087 { 00088 rsbac_printk(KERN_WARNING "RSBAC REG decision module sample 1: Registering failed. Unloading.\n"); 00089 return -ENOEXEC; 00090 } 00091 00092 rsbac_printk(KERN_INFO "RSBAC REG decision module modules_off: Loaded.\n"); 00093 00094 return 0; 00095 }
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 34 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.
00041 { 00042 switch (request) { 00043 case R_ADD_TO_KERNEL: 00044 case R_REMOVE_FROM_KERNEL: 00045 return NOT_GRANTED; 00046 case R_GET_STATUS_DATA: 00047 switch (target) { 00048 case T_FILE: 00049 if (tid.file.device == device_nr && tid.file.inode == inode_nr) 00050 return NOT_GRANTED; 00051 default: 00052 return DO_NOT_CARE; 00053 } 00054 default: 00055 return DO_NOT_CARE; 00056 } 00057 }
kdev_t device_nr = 0 [static] |
long handle = 9999991 [static] |
Definition at line 27 of file modules_off.c.
rsbac_inode_nr_t inode_nr = 0 [static] |