Chris PeBenito ca83af
########################################
Chris PeBenito ca83af
#
Chris PeBenito ca83af
# Macros for switching between source policy
Chris PeBenito ca83af
# and loadable policy module support
Chris PeBenito ca83af
#
Chris PeBenito ca83af
Chris PeBenito ca83af
##############################
Chris PeBenito ca83af
#
Chris PeBenito ca83af
# For adding the module statement
Chris PeBenito ca83af
#
Chris PeBenito ca83af
define(`policy_module',`
Chris PeBenito 254bbc
	ifdef(`monolithic_policy',`',`
Chris PeBenito 254bbc
		module $1 $2;
Chris PeBenito 254bbc
	')
Chris PeBenito ca83af
')
Chris PeBenito ca83af
Chris PeBenito ca83af
##############################
Chris PeBenito ca83af
#
Chris PeBenito ca83af
# For use in interfaces, to optionally insert a requires block
Chris PeBenito ca83af
#
Chris PeBenito ca83af
define(`requires_block_template',`
Chris PeBenito 254bbc
	ifdef(`monolithic_policy',`',`
Chris PeBenito 254bbc
		require {
Chris PeBenito 254bbc
			$1
Chris PeBenito 254bbc
		}
Chris PeBenito 254bbc
	')
Chris PeBenito 254bbc
')
Chris PeBenito ca83af
Chris PeBenito ca83af
##############################
Chris PeBenito ca83af
#
Chris PeBenito a9ec54
# In the future interfaces could be in loadable modules
Chris PeBenito a9ec54
#
Chris PeBenito a9ec54
# module_interface(name,rules)
Chris PeBenito a9ec54
#
Chris PeBenito a9ec54
define(`module_interface',`
Chris PeBenito a9ec54
	define(`$1',`
Chris PeBenito a9ec54
		requires_block_template(`$1'_depend)
Chris PeBenito a9ec54
		$2
Chris PeBenito a9ec54
	')
Chris PeBenito a9ec54
')
Chris PeBenito a9ec54
Chris PeBenito a9ec54
##############################
Chris PeBenito a9ec54
#
Chris PeBenito ca83af
# Optional policy handling
Chris PeBenito ca83af
#
Chris PeBenito ca83af
define(`optional_policy',`
Chris PeBenito 254bbc
	ifdef(`monolithic_policy',`
Chris PeBenito 254bbc
		ifdef(`$1',$2,$3)
Chris PeBenito 254bbc
	',`
Chris PeBenito 254bbc
		optional {
Chris PeBenito 254bbc
			$2
Chris PeBenito 254bbc
		} else {
Chris PeBenito 254bbc
			$3
Chris PeBenito 254bbc
		}
Chris PeBenito 254bbc
	')
Chris PeBenito 254bbc
')
Chris PeBenito ca83af
Chris PeBenito ca83af
##############################
Chris PeBenito ca83af
#
Chris PeBenito ddea18
# Determine if we should use the default
Chris PeBenito ddea18
# tunable value as specified by the policy
Chris PeBenito ddea18
# or if the override value should be used
Chris PeBenito ddea18
#
Chris PeBenito ddea18
define(`deflt_or_overr',`ifdef(`$1',$1,$2)')
Chris PeBenito ddea18
Chris PeBenito ddea18
##############################
Chris PeBenito ddea18
#
Chris PeBenito ddea18
# Tunable declaration
Chris PeBenito ddea18
#
Chris PeBenito ddea18
define(`tunable_def',`
Chris PeBenito ddea18
	ifdef(`monolithic_policy',`
Chris PeBenito ddea18
		bool $1 deflt_or_overr(`$1'_conf,$2);
Chris PeBenito ddea18
	',`
Chris PeBenito ddea18
		# loadable module tunable
Chris PeBenito ddea18
		# declaration will go here
Chris PeBenito ddea18
		# for $1 $2
Chris PeBenito ddea18
	')
Chris PeBenito ddea18
')
Chris PeBenito ddea18
Chris PeBenito ddea18
##############################
Chris PeBenito ddea18
#
Chris PeBenito ca83af
# Tunable policy handling
Chris PeBenito ca83af
#
Chris PeBenito ca83af
define(`tunable_policy',`
Chris PeBenito 254bbc
	ifdef(`monolithic_policy',`
Chris PeBenito 254bbc
		if (`$1') {
Chris PeBenito 254bbc
			$2
Chris PeBenito 254bbc
		} else {
Chris PeBenito 254bbc
			$3
Chris PeBenito 254bbc
		}
Chris PeBenito 254bbc
	',`
Chris PeBenito 254bbc
		optional {
Chris PeBenito 254bbc
			require { `$1' }
Chris PeBenito 254bbc
			$2
Chris PeBenito 254bbc
		} else {
Chris PeBenito 254bbc
			$3
Chris PeBenito 254bbc
		}
Chris PeBenito 254bbc
	')
Chris PeBenito 254bbc
')