diff --git a/refpolicy/Changelog b/refpolicy/Changelog
index 810a7a4..3fd456f 100644
--- a/refpolicy/Changelog
+++ b/refpolicy/Changelog
@@ -10,6 +10,7 @@
 	distcc
 	lpd
 	networkmanager
+	pegasus
 	xdm
 
 * Wed Oct 19 2005 Chris PeBenito <selinux@tresys.com> - 20051019
diff --git a/refpolicy/policy/modules/kernel/kernel.if b/refpolicy/policy/modules/kernel/kernel.if
index cd7d478..ad4a432 100644
--- a/refpolicy/policy/modules/kernel/kernel.if
+++ b/refpolicy/policy/modules/kernel/kernel.if
@@ -297,7 +297,7 @@ interface(`kernel_dontaudit_read_ring_buffer',`
 ##	Change the level of kernel messages logged to the console.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_change_ring_buffer_level',`
@@ -785,7 +785,7 @@ interface(`kernel_read_device_sysctl',`
 ##	Read and write device sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_rw_device_sysctl',`
@@ -800,10 +800,27 @@ interface(`kernel_rw_device_sysctl',`
 
 ########################################
 ## <summary>
+##	Allow caller to search virtual memory sysctls.
+## </summary>
+## <param name="domain">
+##	Domain allowed access.
+## </param>
+##
+#
+interface(`kernel_search_vm_sysctl',`
+	gen_require(`
+		type proc_t, sysctl_t, sysctl_vm_t;
+	')
+
+	allow $1 { proc_t sysctl_t sysctl_vm_t }:dir search_dir_perms;
+')
+
+########################################
+## <summary>
 ##	Allow caller to read virtual memory sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 ##
 #
@@ -822,7 +839,7 @@ interface(`kernel_read_vm_sysctl',`
 ##	Read and write virtual memory sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_rw_vm_sysctl',`
@@ -872,7 +889,7 @@ interface(`kernel_dontaudit_search_network_sysctl',`
 ##	Allow caller to read network sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 ##
 #
@@ -892,7 +909,7 @@ interface(`kernel_read_net_sysctl',`
 ##	Allow caller to modiry contents of sysctl network files.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_rw_net_sysctl',`
@@ -914,7 +931,7 @@ interface(`kernel_rw_net_sysctl',`
 ##	socket sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_read_unix_sysctl',`
@@ -936,7 +953,7 @@ interface(`kernel_read_unix_sysctl',`
 ##	socket sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_rw_unix_sysctl',`
@@ -957,7 +974,7 @@ interface(`kernel_rw_unix_sysctl',`
 ##	Read the hotplug sysctl.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_read_hotplug_sysctl',`
@@ -978,7 +995,7 @@ interface(`kernel_read_hotplug_sysctl',`
 ##	Read and write the hotplug sysctl.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_rw_hotplug_sysctl',`
@@ -999,7 +1016,7 @@ interface(`kernel_rw_hotplug_sysctl',`
 ##	Read the modprobe sysctl.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_read_modprobe_sysctl',`
@@ -1020,7 +1037,7 @@ interface(`kernel_read_modprobe_sysctl',`
 ##	Read and write the modprobe sysctl.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_rw_modprobe_sysctl',`
@@ -1057,7 +1074,7 @@ interface(`kernel_dontaudit_search_kernel_sysctl',`
 ##	Read generic kernel sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_read_kernel_sysctl',`
@@ -1095,7 +1112,7 @@ interface(`kernel_dontaudit_write_kernel_sysctl',`
 ##	Read and write generic kernel sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_rw_kernel_sysctl',`
@@ -1116,7 +1133,7 @@ interface(`kernel_rw_kernel_sysctl',`
 ##	Read filesystem sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_read_fs_sysctl',`
@@ -1137,7 +1154,7 @@ interface(`kernel_read_fs_sysctl',`
 ##	Read and write fileystem sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_rw_fs_sysctl',`
@@ -1158,7 +1175,7 @@ interface(`kernel_rw_fs_sysctl',`
 ##	Read IRQ sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_read_irq_sysctl',`
@@ -1178,7 +1195,7 @@ interface(`kernel_read_irq_sysctl',`
 ##	Read and write IRQ sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 ##
 #
@@ -1233,7 +1250,7 @@ interface(`kernel_rw_rpc_sysctl',`
 ##	Allow caller to read all sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_read_all_sysctl',`
@@ -1256,7 +1273,7 @@ interface(`kernel_read_all_sysctl',`
 ##	Read and write all sysctls.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_rw_all_sysctl',`
@@ -1279,7 +1296,7 @@ interface(`kernel_rw_all_sysctl',`
 ##	Send a kill signal to unlabeled processes.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_kill_unlabeled',`
@@ -1296,7 +1313,7 @@ interface(`kernel_kill_unlabeled',`
 ##	Send general signals to unlabeled processes.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_signal_unlabeled',`
@@ -1313,7 +1330,7 @@ interface(`kernel_signal_unlabeled',`
 ##	Send a null signal to unlabeled processes.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_signull_unlabeled',`
@@ -1330,7 +1347,7 @@ interface(`kernel_signull_unlabeled',`
 ##	Send a stop signal to unlabeled processes.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_sigstop_unlabeled',`
@@ -1347,7 +1364,7 @@ interface(`kernel_sigstop_unlabeled',`
 ##	Send a child terminated signal to unlabeled processes.
 ## </summary>
 ## <param name="domain">
-##	The type of the process performing this action.
+##	Domain allowed access.
 ## </param>
 #
 interface(`kernel_sigchld_unlabeled',`
diff --git a/refpolicy/policy/modules/services/pegasus.fc b/refpolicy/policy/modules/services/pegasus.fc
new file mode 100644
index 0000000..7547a45
--- /dev/null
+++ b/refpolicy/policy/modules/services/pegasus.fc
@@ -0,0 +1,17 @@
+
+/etc/Pegasus(/.*)?			gen_context(system_u:object_r:pegasus_conf_t,s0)
+
+/usr/sbin/cimserver		--	gen_context(system_u:object_r:pegasus_exec_t,s0)
+/usr/sbin/init_repository	-- 	gen_context(system_u:object_r:pegasus_exec_t,s0)
+
+/var/lib/Pegasus(/.*)?	                gen_context(system_u:object_r:pegasus_data_t,s0)
+
+/var/run/tog-pegasus(/.*)?              gen_context(system_u:object_r:pegasus_var_run_t,s0)
+
+/usr/share/Pegasus/mof(/.*)?/.*\.mof    gen_context(system_u:object_r:pegasus_mof_t,s0)
+
+ifdef(`TODO',`
+/usr/sbin/cimauth		-- 	gen_context(system_u:object_r:pegasus_conf_exec_t,s0)
+/usr/sbin/cimconfig		-- 	gen_context(system_u:object_r:pegasus_conf_exec_t,s0)
+/usr/sbin/cimuser		-- 	gen_context(system_u:object_r:pegasus_conf_exec_t,s0)
+')
diff --git a/refpolicy/policy/modules/services/pegasus.if b/refpolicy/policy/modules/services/pegasus.if
new file mode 100644
index 0000000..920b13f
--- /dev/null
+++ b/refpolicy/policy/modules/services/pegasus.if
@@ -0,0 +1 @@
+## <summary>The Open Group Pegasus CIM/WBEM Server.</summary>
diff --git a/refpolicy/policy/modules/services/pegasus.te b/refpolicy/policy/modules/services/pegasus.te
new file mode 100644
index 0000000..4cfa05f
--- /dev/null
+++ b/refpolicy/policy/modules/services/pegasus.te
@@ -0,0 +1,135 @@
+
+policy_module(pegasus,1.0)
+
+########################################
+#
+# Declarations
+#
+
+type pegasus_t;
+type pegasus_exec_t;
+init_daemon_domain(pegasus_t,pegasus_exec_t)
+
+type pegasus_data_t;
+files_type(pegasus_data_t)
+
+type pegasus_conf_t;
+files_type(pegasus_conf_t)
+
+type pegasus_mof_t;
+files_type(pegasus_mof_t)
+
+type pegasus_var_run_t;
+files_pid_file(pegasus_var_run_t)
+
+########################################
+#
+# Local policy
+#
+
+allow pegasus_t self:capability { dac_override net_bind_service audit_write }; 
+dontaudit pegasus_t self:capability sys_tty_config;
+allow pegasus_t self:fifo_file rw_file_perms;
+allow pegasus_t self:unix_dgram_socket create_socket_perms;
+allow pegasus_t self:unix_stream_socket create_stream_socket_perms;
+allow pegasus_t self:netlink_audit_socket { create_netlink_socket_perms nlmsg_relay };
+allow pegasus_t self:tcp_socket create_stream_socket_perms;
+
+allow pegasus_t pegasus_conf_t:dir rw_dir_perms;
+allow pegasus_t pegasus_conf_t:file create_file_perms;
+allow pegasus_t pegasus_conf_t:lnk_file create_lnk_perms;
+
+allow pegasus_t pegasus_data_t:dir rw_dir_perms;
+allow pegasus_t pegasus_data_t:file create_file_perms;
+allow pegasus_t pegasus_data_t:lnk_file create_lnk_perms;
+
+allow pegasus_t pegasus_mof_t:dir r_dir_perms;
+allow pegasus_t pegasus_mof_t:file r_file_perms;
+allow pegasus_t pegasus_mof_t:lnk_file { getattr read };
+
+allow pegasus_t pegasus_var_run_t:file create_file_perms;
+allow pegasus_t pegasus_var_run_t:sock_file { create setattr };
+allow pegasus_t pegasus_var_run_t:dir rw_dir_perms;
+files_create_pid(pegasus_t,pegasus_var_run_t)
+
+kernel_read_kernel_sysctl(pegasus_t)
+kernel_read_system_state(pegasus_t)
+kernel_search_vm_sysctl(pegasus_t)
+
+corenet_tcp_sendrecv_all_if(pegasus_t)
+corenet_raw_sendrecv_all_if(pegasus_t)
+corenet_tcp_sendrecv_all_nodes(pegasus_t)
+corenet_raw_sendrecv_all_nodes(pegasus_t)
+corenet_tcp_sendrecv_all_ports(pegasus_t)
+corenet_tcp_bind_all_nodes(pegasus_t)
+corenet_tcp_bind_pegasus_http_port(pegasus_t)
+corenet_tcp_bind_pegasus_https_port(pegasus_t)
+corenet_tcp_connect_pegasus_http_port(pegasus_t)
+corenet_tcp_connect_pegasus_https_port(pegasus_t)
+
+dev_read_sysfs(pegasus_t)
+dev_read_urand(pegasus_t)
+
+fs_getattr_all_fs(pegasus_t)
+fs_search_auto_mountpoints(pegasus_t)
+
+term_dontaudit_use_console(pegasus_t)
+
+auth_use_nsswitch(pegasus_t)
+auth_read_shadow(pegasus_t)
+
+domain_use_wide_inherit_fd(pegasus_t)
+
+files_read_etc_files(pegasus_t)
+files_list_var_lib(pegasus_t)
+files_read_var_lib_files(pegasus_t)
+files_read_var_lib_symlinks(pegasus_t)
+
+init_use_fd(pegasus_t)
+init_use_script_pty(pegasus_t)
+init_rw_script_pid(pegasus_t)
+
+libs_use_ld_so(pegasus_t)
+libs_use_shared_libs(pegasus_t)
+
+miscfiles_read_localization(pegasus_t)
+
+sysnet_read_config(pegasus_t)
+
+userdom_dontaudit_use_unpriv_user_fd(pegasus_t)
+userdom_dontaudit_search_sysadm_home_dir(pegasus_t)
+
+ifdef(`targeted_policy', `
+	term_dontaudit_use_unallocated_tty(pegasus_t)
+	term_dontaudit_use_generic_pty(pegasus_t)
+	files_dontaudit_read_root_file(pegasus_t)
+')
+
+optional_policy(`logging.te',`
+	logging_send_syslog_msg(pegasus_t)
+')
+
+optional_policy(`nscd.te',`
+	nscd_use_socket(pegasus_t)
+')
+
+optional_policy(`selinuxutil.te',`
+	seutil_sigchld_newrole(pegasus_t)
+	seutil_dontaudit_read_config(pegasus_t)
+')
+
+optional_policy(`udev.te', `
+	udev_read_db(pegasus_t)
+')
+
+ifdef(`TODO',`
+optional_policy(`rhgb.te',`
+	rhgb_domain(pegasus_t)
+')
+
+#type pegasus_conf_exec_t, exec_type;
+files_type(pegasus_conf_exec_t)
+allow pegasus_conf_exec_t pegasus_conf_t:dir rw_dir_perms;
+allow pegasus_conf_exec_t pegasus_conf_t:file create_file_perms;
+allow pegasus_conf_exec_t pegasus_conf_t:lnk_file create_lnk_perms;
+') dnl end TODO
diff --git a/refpolicy/policy/modules/system/libraries.fc b/refpolicy/policy/modules/system/libraries.fc
index 0245e0c..1b8b2fb 100644
--- a/refpolicy/policy/modules/system/libraries.fc
+++ b/refpolicy/policy/modules/system/libraries.fc
@@ -46,7 +46,7 @@
 /usr/lib/win32/.*			--	gen_context(system_u:object_r:shlib_t,s0)
 
 /usr/lib(64)?/libGL(core)?/.so(\.[^/]*)* --	gen_context(system_u:object_r:texrel_shlib_t,s0)
-
+/usr/lib(64)?/Pegasus/providers/.*\.so.*	gen_context(system_u:object_r:shlib_t,s0)
 /usr/lib(64)?(/.*)?/libnvidia.*\.so(\.[^/]*)* -- gen_context(system_u:object_r:texrel_shlib_t,s0)
 
 /usr/(local/)?lib/wine/.*\.so  		--	gen_context(system_u:object_r:texrel_shlib_t,s0)