reg_sample1.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>

Go to the source code of this file.

Functions

 MODULE_AUTHOR ("Amon Ott")
 MODULE_DESCRIPTION ("RSBAC REG sample decision module 1")
 MODULE_LICENSE ("GPL")
 MODULE_PARM (name,"s")
 MODULE_PARM (syscall_name,"s")
 MODULE_PARM (handle,"l")
 MODULE_PARM (syscall_registration_handle,"l")
 MODULE_PARM (syscall_dispatcher_handle,"l")
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 int set_attr_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_target_t new_target, union rsbac_target_id_t new_tid, enum rsbac_attribute_t attr, union rsbac_attribute_value_t attr_val, rsbac_uid_t owner)
static rsbac_boolean_t need_overwrite_func (struct dentry *dentry_p)
static int syscall_func (void *arg)
int init_module (void)
void cleanup_module (void)

Variables

static u_long nr_request_calls = 0
static u_long nr_set_attr_calls = 0
static u_long nr_need_overwrite_calls = 0
static u_long nr_system_calls = 0
static void * system_call_arg = NULL
static char * name = NULL
static char dummy_buf [70] = "To protect against wrong insmod params"
static char * syscall_name = NULL
static char dummy_buf2 [70] = "To protect against wrong insmod params"
static long handle = 123456
static long syscall_registration_handle = 654321
static long syscall_dispatcher_handle = 1


Function Documentation

void cleanup_module void   ) 
 

Definition at line 285 of file reg_sample1.c.

References handle, proc_rsbac_root_p, rsbac_printk(), rsbac_reg_unregister(), rsbac_reg_unregister_syscall(), and syscall_registration_handle.

00286 {
00287   rsbac_printk(KERN_INFO "RSBAC REG decision module sample 1: Unregistering.\n");
00288   #if defined(CONFIG_RSBAC_PROC)
00289   remove_proc_entry(PROC_NAME, proc_rsbac_root_p);
00290   #endif 
00291   if(rsbac_reg_unregister_syscall(syscall_registration_handle))
00292     {
00293       rsbac_printk(KERN_ERR "RSBAC REG decision module sample 1: Unregistering syscall failed - beware of possible system failure!\n");
00294     }
00295   if(rsbac_reg_unregister(handle))
00296     {
00297       rsbac_printk(KERN_ERR "RSBAC REG decision module sample 1: Unregistering failed - beware of possible system failure!\n");
00298     }
00299   rsbac_printk(KERN_INFO "RSBAC REG decision module sample 1: Unloaded.\n");
00300 }

int init_module void   ) 
 

Definition at line 190 of file reg_sample1.c.

References dummy_buf, dummy_buf2, handle, name, need_overwrite_func(), proc_rsbac_root_p, request_func(), rsbac_printk(), RSBAC_REG_NAME_LEN, rsbac_reg_register(), rsbac_reg_register_syscall(), rsbac_reg_unregister(), rsbac_reg_unregister_syscall(), RSBAC_REG_VERSION, set_attr_func(), syscall_dispatcher_handle, syscall_func(), syscall_name, syscall_registration_handle, and TRUE.

00191 {
00192   struct rsbac_reg_entry_t entry;
00193   struct rsbac_reg_syscall_entry_t syscall_entry;
00194 
00195   if(!handle)
00196     handle = 123456;
00197   if(!syscall_registration_handle)
00198     syscall_registration_handle = 654321;
00199   if(!syscall_dispatcher_handle)
00200     syscall_dispatcher_handle = 1;
00201 
00202   rsbac_printk(KERN_INFO "RSBAC REG decision module sample 1: Initializing.\n");
00203 
00204   /* clearing registration entries */
00205   memset(&entry, 0, sizeof(entry));
00206   memset(&syscall_entry, 0, sizeof(syscall_entry));
00207 
00208   if((dummy_buf[0] != 'T') || (dummy_buf2[0] != 'T'))
00209     {
00210       rsbac_printk(KERN_WARNING "RSBAC REG decision module sample 1: Not loaded due to invalid param string.\n");
00211       return -ENOEXEC;
00212     }
00213   if(name)
00214     {
00215       strncpy(entry.name, name, RSBAC_REG_NAME_LEN);
00216       entry.name[RSBAC_REG_NAME_LEN] = 0;
00217     }
00218   else
00219     strcpy(entry.name, "RSBAC REG sample 1 ADF module");
00220   rsbac_printk(KERN_INFO "RSBAC REG decision module sample 1: REG Version: %u, Name: %s, Handle: %li\n",
00221          RSBAC_REG_VERSION, entry.name, handle);
00222 
00223   entry.handle = handle;
00224   entry.request_func = request_func;
00225   entry.set_attr_func = set_attr_func;
00226   entry.need_overwrite_func = need_overwrite_func;
00227   entry.switch_on = TRUE;
00228   rsbac_printk(KERN_INFO "RSBAC REG decision module sample 1: Registering to ADF.\n");
00229   if(rsbac_reg_register(RSBAC_REG_VERSION, entry) < 0)
00230     {
00231       rsbac_printk(KERN_WARNING "RSBAC REG decision module sample 1: Registering failed. Unloading.\n");
00232       return -ENOEXEC;
00233     }
00234 
00235   if(syscall_name)
00236     {
00237       strncpy(syscall_entry.name, syscall_name, RSBAC_REG_NAME_LEN);
00238       syscall_entry.name[RSBAC_REG_NAME_LEN] = 0;
00239     }
00240   else
00241     strcpy(syscall_entry.name, "RSBAC REG sample 1 syscall");
00242   rsbac_printk(KERN_INFO "RSBAC REG decision module sample 1: REG Version: %u, Name: %s, Dispatcher Handle: %li\n",
00243          RSBAC_REG_VERSION, syscall_entry.name, syscall_dispatcher_handle);
00244 
00245   syscall_entry.registration_handle = syscall_registration_handle;
00246   syscall_entry.dispatcher_handle = syscall_dispatcher_handle;
00247   syscall_entry.syscall_func = syscall_func;
00248   rsbac_printk(KERN_INFO "RSBAC REG decision module sample 1: Registering syscall.\n");
00249   syscall_registration_handle = rsbac_reg_register_syscall(RSBAC_REG_VERSION, syscall_entry);
00250   if(syscall_registration_handle < 0)
00251     {
00252       rsbac_printk(KERN_WARNING "RSBAC REG decision module sample 1: Registering syscall failed. Unloading.\n");
00253       if(rsbac_reg_unregister(handle))
00254         {
00255           rsbac_printk(KERN_ERR "RSBAC REG decision module sample 1: Unregistering failed - beware of possible system failure!\n");
00256         }
00257       return -ENOEXEC;
00258     }
00259 
00260   #if defined(CONFIG_RSBAC_PROC)
00261   proc_reg_sample_p = create_proc_entry(PROC_NAME,
00262                                         S_IFREG | S_IRUGO,
00263                                         proc_rsbac_root_p);
00264   if(!proc_reg_sample_p)
00265     {
00266       rsbac_printk(KERN_WARNING "%s: Not loaded due to failed proc entry registering.\n", name);
00267       if(rsbac_reg_unregister(handle))
00268         {
00269           rsbac_printk(KERN_ERR "RSBAC REG decision module sample 1: Unregistering failed - beware of possible system failure!\n");
00270         }
00271       if(rsbac_reg_unregister_syscall(syscall_registration_handle))
00272         {
00273           rsbac_printk(KERN_ERR "RSBAC REG decision module sample 1: Unregistering syscall failed - beware of possible system failure!\n");
00274         }
00275       return -ENOEXEC;
00276     }
00277   proc_reg_sample_p->get_info = adf_sample_proc_info;
00278   #endif 
00279 
00280   rsbac_printk(KERN_INFO "RSBAC REG decision module sample 1: Loaded.\n");
00281 
00282   return 0;
00283 }

MODULE_AUTHOR "Amon Ott"   ) 
 

MODULE_DESCRIPTION "RSBAC REG sample decision module 1"   ) 
 

MODULE_LICENSE "GPL"   ) 
 

MODULE_PARM syscall_dispatcher_handle  ,
"l" 
 

MODULE_PARM syscall_registration_handle  ,
"l" 
 

MODULE_PARM handle  ,
"l" 
 

MODULE_PARM syscall_name  ,
"s" 
 

MODULE_PARM name  ,
"s" 
 

static rsbac_boolean_t need_overwrite_func struct dentry *  dentry_p  )  [static]
 

Definition at line 175 of file reg_sample1.c.

References FALSE, and nr_need_overwrite_calls.

Referenced by init_module().

00176   {
00177     nr_need_overwrite_calls++;
00178     return FALSE;
00179   }

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 145 of file reg_sample1.c.

References GRANTED, nr_request_calls, and R_SEARCH.

00152   {
00153     /* count call, but not for SEARCH request */
00154     if(request != R_SEARCH)
00155       nr_request_calls++;
00156     return GRANTED;
00157   }

static int set_attr_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_target_t  new_target,
union rsbac_target_id_t  new_tid,
enum rsbac_attribute_t  attr,
union rsbac_attribute_value_t  attr_val,
rsbac_uid_t  owner
[static]
 

Definition at line 159 of file reg_sample1.c.

References nr_set_attr_calls, and R_SEARCH.

Referenced by init_module().

00168   {
00169     /* count call, but not for SEARCH request */
00170     if(request != R_SEARCH)
00171       nr_set_attr_calls++;
00172     return 0;
00173   }

static int syscall_func void *  arg  )  [static]
 

Definition at line 181 of file reg_sample1.c.

References nr_system_calls, and system_call_arg.

Referenced by init_module().

00182   {
00183     nr_system_calls++;
00184     system_call_arg = arg;
00185     return nr_system_calls;
00186   }


Variable Documentation

char dummy_buf[70] = "To protect against wrong insmod params" [static]
 

Definition at line 33 of file reg_sample1.c.

Referenced by init_module().

char dummy_buf2[70] = "To protect against wrong insmod params" [static]
 

Definition at line 37 of file reg_sample1.c.

Referenced by init_module().

long handle = 123456 [static]
 

Definition at line 40 of file reg_sample1.c.

char* name = NULL [static]
 

Definition at line 32 of file reg_sample1.c.

Referenced by acl_detach_fd_lists(), acl_register_fd_lists(), auth_detach_fd_lists(), auth_register_fd_lists(), group_name_compare(), init_module(), mac_detach_fd_lists(), mac_register_fd_lists(), name_compare(), read_info(), register_fd_lists(), rsbac_init_rc(), rsbac_init_um(), and write_info().

u_long nr_need_overwrite_calls = 0 [static]
 

Definition at line 23 of file reg_sample1.c.

Referenced by init_module(), need_overwrite_func(), read_info(), and write_info().

u_long nr_request_calls = 0 [static]
 

Definition at line 21 of file reg_sample1.c.

Referenced by init_module(), read_info(), request_func(), and write_info().

u_long nr_set_attr_calls = 0 [static]
 

Definition at line 22 of file reg_sample1.c.

Referenced by init_module(), read_info(), set_attr_func(), and write_info().

u_long nr_system_calls = 0 [static]
 

Definition at line 24 of file reg_sample1.c.

Referenced by init_module(), and syscall_func().

long syscall_dispatcher_handle = 1 [static]
 

Definition at line 45 of file reg_sample1.c.

Referenced by init_module().

char* syscall_name = NULL [static]
 

Definition at line 36 of file reg_sample1.c.

Referenced by init_module().

long syscall_registration_handle = 654321 [static]
 

Definition at line 43 of file reg_sample1.c.

Referenced by cleanup_module(), and init_module().

void* system_call_arg = NULL [static]
 

Definition at line 25 of file reg_sample1.c.

Referenced by syscall_func().


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