comment "strongswan needs a toolchain w/ threads, dynamic library"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_ATOMIC
	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS

menuconfig BR2_PACKAGE_STRONGSWAN
	bool "strongswan"
	depends on BR2_USE_MMU # fork()
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_TOOLCHAIN_HAS_ATOMIC
	depends on !BR2_STATIC_LIBS
	help
	  strongSwan is an OpenSource IPsec implementation for the
	  Linux operating system. It is based on the discontinued
	  FreeS/WAN project and the X.509 patch.

	  The focus is on:
	   - simplicity of configuration
	   - strong encryption and authentication methods
	   - powerful IPsec policies supporting large and complex
	     VPN networks

	  strongSwan provide many plugins. Only a few are presented
	  here.

	  http://www.strongswan.org/

if BR2_PACKAGE_STRONGSWAN

choice
	prompt "Cryptographic backend"
	default BR2_PACKAGE_STRONGSWAN_GMP

config BR2_PACKAGE_STRONGSWAN_BOTAN
	bool "botan"
	depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735
	select BR2_PACKAGE_BOTAN

comment "botan backend needs a toolchain w/ C++, gcc >= 4.8"
	depends on !BR2_INSTALL_LIBSTDCPP \
		|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
	depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS

comment "botan backend needs a toolchain not affected by GCC bug 64735"
	depends on BR2_PACKAGE_BOTAN_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735

config BR2_PACKAGE_STRONGSWAN_OPENSSL
	bool "OpenSSL"
	select BR2_PACKAGE_OPENSSL

config BR2_PACKAGE_STRONGSWAN_GCRYPT
	bool "libgcrypt"
	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgcrypt
	select BR2_PACKAGE_LIBGCRYPT

config BR2_PACKAGE_STRONGSWAN_GMP
	bool "GNU MP (libgmp)"
	select BR2_PACKAGE_GMP

config BR2_PACKAGE_STRONGSWAN_WOLFSSL
	bool "wolfssl"
	select BR2_PACKAGE_WOLFSSL

endchoice

config BR2_PACKAGE_STRONGSWAN_AF_ALG
	bool "Enable AF_ALG crypto interface to Linux Crypto API"

config BR2_PACKAGE_STRONGSWAN_CURL
	bool "Enable CURL fetcher plugin to fetch files via libcurl"
	select BR2_PACKAGE_LIBCURL

config BR2_PACKAGE_STRONGSWAN_MD4
	bool "Enable MD4 hash algorithm"

config BR2_PACKAGE_STRONGSWAN_CHARON
	bool "Enable the IKEv1/IKEv2 keying daemon charon"
	default y

if BR2_PACKAGE_STRONGSWAN_CHARON

config BR2_PACKAGE_STRONGSWAN_TNCCS_11
	bool "Enable TNCCS 1.1 protocol module"
	select BR2_PACKAGE_LIBXML2

config BR2_PACKAGE_STRONGSWAN_TNCCS_20
	bool "Enable TNCCS 2.0 protocol module"

config BR2_PACKAGE_STRONGSWAN_TNCCS_DYNAMIC
	bool "Enable dynamic TNCCS protocol discovery module"

config BR2_PACKAGE_STRONGSWAN_SYSTIME_FIX
	bool "Enable systime-fix plugin"

config BR2_PACKAGE_STRONGSWAN_EAP_SIM
	bool "Enable EAP-SIM"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_EAP_SIM_FILE
	bool "Enable EAP-SIM file backend"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy
	select BR2_PACKAGE_STRONGSWAN_EAP_SIM

config BR2_PACKAGE_STRONGSWAN_EAP_SIM_PCSC
	bool "Enable EAP-SIM smart card backend"
	depends on !BR2_STATIC_LIBS # pcsc-lite
	select BR2_PACKAGE_PCSC_LITE
	select BR2_PACKAGE_STRONGSWAN_EAP_SIM

config BR2_PACKAGE_STRONGSWAN_EAP_AKA
	bool "Enable EAP-AKA"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_EAP_AKA_3GPP2
	bool "Enable EAP-AKA 3GPP2 algorithms"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy
	select BR2_PACKAGE_GMP
	select BR2_PACKAGE_STRONGSWAN_EAP_AKA

config BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_SQL
	bool "Enable EAP-SIM/AKA backend based on a triplet/quintuplet SQL database"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy
	select BR2_PACKAGE_STRONGSWAN_EAP_AKA
	select BR2_PACKAGE_STRONGSWAN_EAP_SIM

config BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_PSEUDONYM
	bool "Enable EAP-SIM/AKA pseudonym storage"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy
	select BR2_PACKAGE_STRONGSWAN_EAP_AKA
	select BR2_PACKAGE_STRONGSWAN_EAP_SIM

config BR2_PACKAGE_STRONGSWAN_EAP_SIMAKA_REAUTH
	bool "Enable EAP-SIM/AKA reauthentication data storage"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy
	select BR2_PACKAGE_STRONGSWAN_EAP_AKA
	select BR2_PACKAGE_STRONGSWAN_EAP_SIM

config BR2_PACKAGE_STRONGSWAN_EAP_IDENTITY
	bool "Enable EAP-Identity"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_EAP_MD5
	bool "Enable EAP-MD5"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_EAP_GTC
	bool "Enable EAP-GDC"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_EAP_MSCHAPV2
	bool "Enable EAP-MSCHAPv2"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy
	select BR2_PACKAGE_STRONGSWAN_MD4

config BR2_PACKAGE_STRONGSWAN_EAP_PEAP
	bool "Enable EAP-PEAP"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_EAP_RADIUS
	bool "Enable EAP-RADIUS"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_EAP_TLS
	bool "Enable EAP-TLS"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_EAP_TTLS
	bool "Enable EAP-TTLS"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_EAP_DYNAMIC
	bool "Enable EAP-DYNAMIC"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_EAP_TNC
	bool "Enable EAP-TNC"
	default y if BR2_PACKAGE_STRONGSWAN_EAP # legacy

config BR2_PACKAGE_STRONGSWAN_UNITY
	bool "Enables Cisco Unity extension plugin"

config BR2_PACKAGE_STRONGSWAN_STROKE
	bool "Enable charons stroke configuration backend"
	default y

config BR2_PACKAGE_STRONGSWAN_SQL
	bool "Enable SQL database configuration backend"
	depends on BR2_PACKAGE_SQLITE || BR2_PACKAGE_MYSQL

endif

config BR2_PACKAGE_STRONGSWAN_PKI
	bool "Enable pki certificate utility"
	default y

config BR2_PACKAGE_STRONGSWAN_SCEP
	bool "Enable SCEP client tool"

config BR2_PACKAGE_STRONGSWAN_SCRIPTS
	bool "Enable additional utilities (found in scripts directory)"
	default y
	depends on BR2_PACKAGE_STRONGSWAN_CHARON

config BR2_PACKAGE_STRONGSWAN_VICI
	bool "Enable vici/swanctl"
	default y
	depends on BR2_PACKAGE_STRONGSWAN_CHARON

endif
