summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRick Macklem <rmacklem@FreeBSD.org>2020-08-19 23:42:33 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2022-07-07 14:22:54 +0200
commit60f67a1f37db254010f2fed08a5ad315e39d5634 (patch)
tree33c22c06512707766ecade2adf9688229b0e6abf
parentCONTRIBUTING.rst: Add FreeBSD baseline update hints (diff)
downloadrtems-libbsd-60f67a1f37db254010f2fed08a5ad315e39d5634.tar.bz2
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
-rw-r--r--rtemsbsd/include/machine/_kernel_socket.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/rtemsbsd/include/machine/_kernel_socket.h b/rtemsbsd/include/machine/_kernel_socket.h
index e9acc744..dba4694f 100644
--- a/rtemsbsd/include/machine/_kernel_socket.h
+++ b/rtemsbsd/include/machine/_kernel_socket.h
@@ -46,6 +46,7 @@
#define MSG_SOCALLBCK 0x00010000 /* for use by socket callbacks - soreceive (TCP) */
#define MSG_MORETOCOME 0x00100000 /* additional data pending */
+#define MSG_TLSAPPDATA 0x00200000 /* only soreceive() app. data (TLS) */
#define CMSG_ALIGN(n) _ALIGN(n)