# SPDX-License-Identifier: GPL-2.0-only
#
# RxRPC session sockets
#

config AF_RXRPC
	tristate "RxRPC session sockets"
	depends on INET
	select CRYPTO
	select KEYS
	select NET_UDP_TUNNEL
	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.rst.

if AF_RXRPC

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"
	help
	  Say Y here to inject packet loss by discarding some received and some
	  transmitted packets.


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

	  See Documentation/networking/rxrpc.rst.


config RXKAD
	bool "RxRPC Kerberos security"
	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.rst.

endif
