]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Add the MSG_TLSAPPDATA flag to indicate "return ENXIO" for non-application TLS
authorrmacklem <rmacklem@FreeBSD.org>
Wed, 19 Aug 2020 23:42:33 +0000 (23:42 +0000)
committerrmacklem <rmacklem@FreeBSD.org>
Wed, 19 Aug 2020 23:42:33 +0000 (23:42 +0000)
commitcb9f5d61bb3de67bf41c3138a9b89c667e82b78b
treee16221b7a1a2cf3f0f232068c466c29d0f9151db
parenteded70c37057857c6e23fae51f86b8f8f43cd2d0
Add the MSG_TLSAPPDATA flag to indicate "return ENXIO" for non-application TLS
data records.

The kernel RPC cannot process non-application data records when
using TLS. It must to an upcall to a userspace daemon that will
call SSL_read() to process them.

This patch adds a new flag called MSG_TLSAPPDATA that the kernel
RPC can use to tell sorecieve() to return ENXIO instead of a non-application
data record, when that is what is at the top of the receive queue.
I put the code in #ifdef KERN_TLS/#endif, although it will build without
that, so that it is recognized as only useful when KERN_TLS is enabled.
The alternative to doing this is to have the kernel RPC re-queue the
non-application data message after receiving it, but that seems more
complicated and might introduce message ordering issues when there
are multiple non-application data records one after another.

I do not know what, if any, changes will be required to support TLS1.3.

Reviewed by: glebius
Differential Revision: https://reviews.freebsd.org/D25923
sys/kern/uipc_socket.c
sys/sys/socket.h