Context

Struct Context 

Source
pub struct Context<C: TlsSession> { /* private fields */ }
Expand description

The context for managing a kTLS connection.

Implementations§

Source§

impl<C: TlsSession> Context<C>

Source

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).

Source

pub const fn state(&self) -> &State

Returns the current kTLS connection state.

Source

pub const fn buffer(&self) -> &Buffer

Returns a reference to the buffer.

Source

pub const fn buffer_mut(&mut self) -> &mut Buffer

Returns a mutable reference to the buffer.

Source

pub fn handle_io_error<S: AsFd>(&mut self, socket: &S, err: Error) -> Result<()>

Handles io::Errors 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. Returns Ok(()) on success, allowing the caller to retry the operation.
  • Interrupted: Indicates the operation was interrupted by a signal. Returns Ok(()), allowing the caller to retry the operation.
  • WouldBlock: Indicates the operation would block (e.g., non-blocking socket). Returns Ok(()), 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.

Source

pub fn shutdown<S: AsFd>(&mut self, socket: &S)

Closes the read side of the kTLS connection and sends a close_notify alert to the peer.

Trait Implementations§

Source§

impl<C: Debug + TlsSession> Debug for Context<C>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.