# SPDX-License-Identifier: GPL-2.0-only
#
# 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_SKCIPHER
	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.
