pub struct Context<C: TlsSession> { /* private fields */ }
Expand description
The context for managing a kTLS connection.
Implementations§
Source§impl<C: TlsSession> Context<C>
impl<C: TlsSession> Context<C>
Sourcepub fn new(session: C, buffer: Option<Buffer>) -> Self
pub fn new(session: C, buffer: Option<Buffer>) -> Self
Creates a new kTLS context with the given TLS session and optional buffer (can be TLS early data received from peer during handshake, or pre-allocated buffer).
Sourcepub const fn buffer_mut(&mut self) -> &mut Buffer
pub const fn buffer_mut(&mut self) -> &mut Buffer
Returns a mutable reference to the buffer.
Sourcepub fn handle_io_error<S: AsFd>(&mut self, socket: &S, err: Error) -> Result<()>
pub fn handle_io_error<S: AsFd>(&mut self, socket: &S, err: Error) -> Result<()>
Handles io::Error
s from I/O operations on kTLS-configured sockets.
§Overview
When a socket is configured with kTLS, it can be used like a normal
socket for data transmission - the kernel transparently handles
encryption and decryption. However, TLS control messages (e.g., TLS
alerts) from peers cannot be processed automatically by the kernel,
which returns EIO
to notify userspace.
This method helps handle such errors appropriately:
EIO
: Attempts to process any received TLS control messages. ReturnsOk(())
on success, allowing the caller to retry the operation.Interrupted
: Indicates the operation was interrupted by a signal. ReturnsOk(())
, allowing the caller to retry the operation.WouldBlock
: Indicates the operation would block (e.g., non-blocking socket). ReturnsOk(())
, allowing the caller to retry the operation.BrokenPipe
: Marks the stream as closed.- Other errors: Aborts the connection with an
internal_error
alert and returns the original error.
§Errors
Returns the original io::Error
if it cannot be recovered from.
Trait Implementations§
Auto Trait Implementations§
impl<C> Freeze for Context<C>where
C: Freeze,
impl<C> RefUnwindSafe for Context<C>where
C: RefUnwindSafe,
impl<C> Send for Context<C>where
C: Send,
impl<C> Sync for Context<C>where
C: Sync,
impl<C> Unpin for Context<C>where
C: Unpin,
impl<C> UnwindSafe for Context<C>where
C: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more