#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

menu "Selinux Utilities"
	depends on SELINUX

config CHCON
	bool "chcon"
	default n
	depends on SELINUX
	help
	  Enable support to change the security context of file.

config FEATURE_CHCON_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on CHCON && GETOPT_LONG
	help
	  Support long options for the chcon applet.

config GETENFORCE
	bool "getenforce"
	default n
	depends on SELINUX
	help
	  Enable support to get the current mode of SELinux.

config GETSEBOOL
	bool "getsebool"
	default n
	depends on SELINUX
	help
	  Enable support to get SELinux boolean values.

config LOAD_POLICY
	bool "load_policy"
	default n
	depends on SELINUX
	help
	  Enable support to load SELinux policy.

config MATCHPATHCON
	bool "matchpathcon"
	default n
	depends on SELINUX
	help
	  Enable support to get default security context of the
	  specified path from the file contexts configuration.

config RUNCON
	bool "runcon"
	default n
	depends on SELINUX
	help
	  Enable support to run command in speficied security context.

config FEATURE_RUNCON_LONG_OPTIONS
	bool "Enable long options"
	default y
	depends on RUNCON && GETOPT_LONG
	help
	  Support long options for the runcon applet.

config SELINUXENABLED
	bool "selinuxenabled"
	default n
	depends on SELINUX
	help
	  Enable support for this command to be used within shell scripts
	  to determine if selinux is enabled.

config SETENFORCE
	bool "setenforce"
	default n
	depends on SELINUX
	help
	  Enable support to modify the mode SELinux is running in.

endmenu

