(type bin_t)
(type kernel_t)
(type security_t)
(type unlabeled_t)

(policycap open_perms)
(sensitivity s0)
(sensitivity s1)
(sensitivityalias s0 sens0)
(dominance (s0 s1))

(category c0)
(category c1)
(category c2)
(categoryalias c0 cat0)
(categoryset cats01 (c0 c1))
(categoryorder (c0 c1 c2))
(categoryrange catrng02 (c0 c2))

(sensitivitycategory s0 (catrng02))
(sensitivitycategory s1 cats01)
(sensitivitycategory s1 (c2))

(level low (s0 (c0)))
(level high (s1 (c0 c1)))
(levelrange low_high (low high))

(permissionset file_perms (execute_no_trans entrypoint execmod open
				audit_access))
(class file (execute_no_trans entrypoint execmod open audit_access))
(class process (open))
(common file (ioctl read write create getattr setattr lock relabelfrom
		relabelto append unlink link rename execute swapon
		quotaon mounton))
(classcommon file file)

(classpermissionset file_rw (file (read write getattr setattr lock append)))

(class char (foo transition))
(classcommon char file)

(classpermissionset char_w (char (write setattr)))

(classmap files (read))
(classmapping files read
	(file (open read getattr))
	char_w)

(type auditadm_t)
(type console_t)
(type console_device_t)
(type user_tty_device_t)		
(type device_t)
(type getty_t)
(type exec_t)

(allow console_t console_device_t file_rw)
(allow console_t console_device_t (files (read)))

(boolean secure_mode false)
(boolean console_login true)


(sid kernel)
(sid security)
(sid unlabeled)
	
(typeattribute exec_type)
(typeattribute foo_type)
(typeattribute bar_type)
(typeattribute baz_type)
(typeattributeset exec_type (or bin_t kernel_t))
(typeattributeset foo_type (and exec_type kernel_t))
(typeattributeset bar_type (xor exec_type foo_type))
(typeattributeset baz_type (not bin_t))
(typealias bin_t sbin_t)
(typepermissive device_t) 
(typebounds device_t bin_t)
(typemember device_t bin_t file exec_t)
(typetransition device_t console_t file console_device_t)

(rangetransition device_t console_t file low_high)

(nametypetransition some_file device_t console_t file getty_t)

(allow foo_type self (file (execute)))
(allow bin_t device_t (file (execute)))
		
(booleanif secure_mode
	(true
		(auditallow device_t exec_t (file (read write)))
	)
)

(booleanif console_login
	(true
		(typechange auditadm_t console_device_t file user_tty_device_t)
		(allow getty_t console_device_t (file (getattr open read write append)))
	)
	(false
		(dontaudit getty_t console_device_t (file (getattr open read write append)))
	)
)

(booleanif (not (xor (eq secure_mode console_login) 
			(and (or secure_mode console_login) secure_mode ) ) )
	(true
		(allow bin_t exec_t (file (execute)))
	)
)

(tunable allow_execfile true)
(tunable allow_userexec false)

(tunableif (not (xor (eq allow_execfile allow_userexec)
			(and (or allow_execfile allow_userexec)
				(and allow_execfile allow_userexec) ) ) )
	(true
		(allow bin_t exec_t (file (execute)))
	)
)

(optional allow_rules 
	(allow user_t exec_t (bins (execute)))
)

(dontaudit device_t auditadm_t (file (read)))
(auditallow device_t auditadm_t (file (open)))

(user system_u)
(user user_u)
(userprefix user_u user)
(userprefix system_u user)

(selinuxuser name user_u low_high)
(selinuxuserdefault user_u low_high)

(role system_r)
(role user_r)

(roletype system_r bin_t)
(roletype system_r kernel_t)
(roletype system_r security_t)
(roletype system_r unlabeled_t)
(roleallow system_r user_r)
(rolebounds system_r user_r)
(roletransition system_r bin_t process user_r)

(userrole system_u system_r)
(userlevel system_u low)
(userrange system_u low_high)
(userbounds system_u user_u)
(userrole user_u user_r)
(userlevel user_u low)
(userrange user_u (low low))

(sidcontext kernel (system_u system_r kernel_t (low high)))
(sidcontext security (system_u system_r security_t (low high)))
(sidcontext unlabeled (system_u system_r unlabeled_t (low high)))

(context system_u_bin_t_l2h (system_u system_r bin_t (low high)))

(ipaddr ip_v4 192.25.35.200)
(ipaddr netmask 192.168.1.1)
(ipaddr ip_v6 2001:0DB8:AC10:FE01::)
(ipaddr netmask_v6 2001:0DE0:DA88:2222::)

(filecon "/usr/bin/" "foo" file system_u_bin_t_l2h)
(filecon "/usr/bin/" "bar" file ())
(filecon "/usr/bin/" "baz" any ())
(nodecon ip_v4 netmask system_u_bin_t_l2h)
(nodecon ip_v6 netmask_v6 system_u_bin_t_l2h)
(portcon udp 25 system_u_bin_t_l2h)
(portcon tcp 22 system_u_bin_t_l2h)
(genfscon - "/usr/bin" system_u_bin_t_l2h)
(netifcon eth0 system_u_bin_t_l2h system_u_bin_t_l2h) ;different contexts?
(fsuse xattr ext3 system_u_bin_t_l2h)

; XEN
(pirqcon 256 system_u_bin_t_l2h)
(iomemcon (0 255) system_u_bin_t_l2h)
(ioportcon (22 22) system_u_bin_t_l2h)
(pcidevicecon 345 system_u_bin_t_l2h)

(constrain (files (read)) (not (or (and (eq t1 exec_t) (eq t2 bin_t)) (eq r1 r2))))
(constrain char_w (not (or (and (eq t1 exec_t) (eq t2 bin_t)) (eq r1 r2))))

(constrain (file (read)) (or (and (eq t1 exec_t) (neq t2 bin_t) ) (eq u1 u2) ) )
(constrain (file (open)) (dom r1 r2))
(constrain (file (open)) (domby r1 r2))
(constrain (file (open)) (incomp r1 r2))

(validatetrans file (eq t1 exec_t))

(mlsconstrain (file (open)) (not (or (and (eq l1 l2) (eq u1 u2)) (eq r1 r2))))
(mlsconstrain (file (open)) (or (and (eq l1 l2) (eq u1 u2)) (neq r1 r2)))
(mlsconstrain (file (open)) (dom h1 l2))
(mlsconstrain (file (open)) (domby l1 h2))
(mlsconstrain (file (open)) (incomp l1 l2))

(mlsvalidatetrans file (domby l1 h2))

(macro all ((type x))
	(allow x bin_t (file (execute)))
)
(call all (bin_t))

(type a_t)
(type b_t)
(boolean b1 false)
(tunable tun1 true)
(macro m ((boolean b))
	(tunableif tun1
		(true
			(allow a_t b_t (file (write))))
		(false
			(allow a_t b_t (file (execute)))))
	(booleanif b
		(true
			(allow a_t b_t (file (read))))))

(call m (b1))