Index: linux-2.4.29-rsbac-v1.2.3/kernel/sysctl.c
===================================================================
--- linux-2.4.29-rsbac-v1.2.3/kernel/sysctl.c	(Revision 182)
+++ linux-2.4.29-rsbac-v1.2.3/kernel/sysctl.c	(Arbeitskopie)
@@ -378,6 +378,12 @@
 {
 	struct list_head *tmp;
 
+        /* RSBAC */
+        #ifdef CONFIG_RSBAC
+        union rsbac_target_id_t       rsbac_target_id;
+        union rsbac_attribute_value_t rsbac_attribute_value;
+        #endif
+
 	if (nlen <= 0 || nlen >= CTL_MAXNAME)
 		return -ENOTDIR;
 	if (oldval) {
@@ -388,6 +394,43 @@
 		if ((ssize_t)old_len < 0)
 			return -EINVAL;
 	}
+        /* RSBAC */
+        #ifdef CONFIG_RSBAC
+        if(newval)
+          {
+            if((nlen > 1) && (name[0] == CTL_KERN))
+              {
+                switch(name[1])
+                  {
+                    case KERN_NODENAME:
+                      rsbac_target_id.scd = ST_host_id;
+                      break;
+                    case KERN_DOMAINNAME:
+                      rsbac_target_id.scd = ST_net_id;
+                      break;
+                    default:
+                      rsbac_target_id.scd = ST_other;
+                  }
+              }
+            else
+              rsbac_target_id.scd = ST_other;
+            rsbac_attribute_value.dummy = 0;
+#ifdef CONFIG_RSBAC_DEBUG
+            if (rsbac_debug_aef)
+              printk(KERN_DEBUG "do_sysctl() [sys_sysctl()]: calling ADF\n");
+#endif
+            if(!rsbac_adf_request(R_MODIFY_SYSTEM_DATA,
+                                  current->pid,
+                                  T_SCD,
+                                  rsbac_target_id,
+                                  A_none,
+                                  rsbac_attribute_value))
+              {
+                return -EPERM;
+              }
+          }
+        #endif
+
 	tmp = &root_table_header.ctl_entry;
 	do {
 		struct ctl_table_header *head =
