pub enum SendError {
Show 15 variants
IdentityMissing,
PeerMissing,
PairwiseKeysMissing,
IdentityAgreementFailed,
ChannelMissing,
PolicyViolation,
AckUnsupported,
EncryptionUnsupported,
SaltUnsupported,
Build(BuildError),
Parse(ParseError),
Crypto(CryptoError),
QueueFull,
PendingAckFull,
CounterPersistenceLag,
}Expand description
Errors returned by the Mac coordinator when queueing an outbound send.
Returned synchronously by queue_broadcast, queue_unicast, queue_multicast, and
related methods. An error here means the send could not be enqueued — it says nothing
about the fate of frames already in the transmit queue.
Variants§
IdentityMissing
The LocalIdentityId passed to the queue call does not correspond to an occupied
identity slot. This indicates the identity was never registered or was removed.
PeerMissing
The destination umsh_core::PublicKey is not present in the peer registry.
Register the peer first via Mac::add_peer.
PairwiseKeysMissing
No cached pairwise session keys exist for the target peer on this identity.
This is only returned by the low-level queue_* APIs; the public async send APIs
derive and cache peer state automatically.
IdentityAgreementFailed
The local identity failed to derive a shared secret for this peer.
ChannelMissing
The target umsh_core::ChannelId is not present in the channel table.
Register the channel first via Mac::add_channel or Mac::add_named_channel.
PolicyViolation
The OperatingPolicy rejected this send — for example, attempting to send an
encrypted frame while operating in AmateurRadioMode::LicensedOnly mode.
AckUnsupported
The requested packet type does not support transport ACKs (e.g., broadcast).
EncryptionUnsupported
The requested encryption mode is not valid for this packet type.
SaltUnsupported
The requested salt option is not valid for this packet type.
Build(BuildError)
The low-level packet builder failed, typically because the frame buffer is too small for the requested options and payload.
Parse(ParseError)
Packet parsing failed while reprocessing a freshly-built frame, indicating an internal inconsistency in the packet construction logic.
Crypto(CryptoError)
The cryptographic seal operation failed. This typically indicates a mismatched key length or an internal crypto engine error.
QueueFull
The transmit queue is at the configured TX capacity. Back off and retry after
the event loop has drained some entries.
PendingAckFull
The in-flight ACK table for this identity is at the configured ACKS capacity.
Wait for an existing ACK-requested send to complete or time out before sending another.
CounterPersistenceLag
Secure sends are blocked because the live frame counter has reached the persisted
reservation boundary. Call Mac::service_counter_persistence to flush a new
boundary to the counter store before retrying.
Trait Implementations§
Source§impl From<BuildError> for SendError
impl From<BuildError> for SendError
Source§fn from(value: BuildError) -> Self
fn from(value: BuildError) -> Self
Source§impl From<CryptoError> for SendError
impl From<CryptoError> for SendError
Source§fn from(value: CryptoError) -> Self
fn from(value: CryptoError) -> Self
Source§impl From<ParseError> for SendError
impl From<ParseError> for SendError
Source§fn from(value: ParseError) -> Self
fn from(value: ParseError) -> Self
impl Eq for SendError
impl StructuralPartialEq for SendError
Auto Trait Implementations§
impl Freeze for SendError
impl RefUnwindSafe for SendError
impl Send for SendError
impl Sync for SendError
impl Unpin for SendError
impl UnwindSafe for SendError
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)