#
# 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 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

