#
# RxRPC session sockets
#

config AF_RXRPC
	tristate "RxRPC session sockets"
	depends on INET
	select CRYPTO
	select KEYS
	help
	  Say Y or M here to include support for RxRPC session sockets (just
	  the transport part, not the presentation part: (un)marshalling is
	  left to the application).

	  These are used for AFS kernel filesystem and userspace utilities.

	  This module at the moment only supports client operations and is
	  currently incomplete.

	  See Documentation/networking/rxrpc.txt.

config AF_RXRPC_IPV6
	bool "IPv6 support for RxRPC"
	depends on (IPV6 = m && AF_RXRPC = m) || (IPV6 = y && AF_RXRPC)
	help
	  Say Y here to allow AF_RXRPC to use IPV6 UDP as well as IPV4 UDP as
	  its network transport.

config AF_RXRPC_INJECT_LOSS
	bool "Inject packet loss into RxRPC packet stream"
	depends on AF_RXRPC
	help
	  Say Y here to inject packet loss by discarding some received and some
	  transmitted packets.


config AF_RXRPC_DEBUG
	bool "RxRPC dynamic debugging"
	depends on AF_RXRPC
	help
	  Say Y here to make runtime controllable debugging messages appear.

	  See Documentation/networking/rxrpc.txt.


config RXKAD
	bool "RxRPC Kerberos security"
	depends on AF_RXRPC
	select CRYPTO
	select CRYPTO_MANAGER
	select CRYPTO_BLKCIPHER
	select CRYPTO_PCBC
	select CRYPTO_FCRYPT
	help
	  Provide kerberos 4 and AFS kaserver security handling for AF_RXRPC
	  through the use of the key retention service.

	  See Documentation/networking/rxrpc.txt.
