#[non_exhaustive]pub enum ControlMessage<'a> {
ScmRights(&'a [RawFd]),
ScmCredentials(&'a UnixCredentials),
AlgSetIv(&'a [u8]),
AlgSetOp(&'a c_int),
AlgSetAeadAssoclen(&'a u32),
UdpGsoSegments(&'a u16),
Ipv4PacketInfo(&'a in_pktinfo),
Ipv6PacketInfo(&'a in6_pktinfo),
Ipv6HopLimit(&'a c_int),
RxqOvfl(&'a u32),
TxTime(&'a u64),
}
Expand description
A type-safe zero-copy wrapper around a single control message, as used with
sendmsg
. More types may be added to this enum; do not exhaustively
pattern-match it.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ScmRights(&'a [RawFd])
A message of type SCM_RIGHTS
, containing an array of file
descriptors passed between processes.
See the description in the “Ancillary messages” section of the unix(7) man page.
Using multiple ScmRights
messages for a single sendmsg
call isn’t
recommended since it causes platform-dependent behaviour: It might
swallow all but the first ScmRights
message or fail with EINVAL
.
Instead, you can put all fds to be passed into a single ScmRights
message.
ScmCredentials(&'a UnixCredentials)
A message of type SCM_CREDENTIALS
, containing the pid, uid and gid of
a process connected to the socket.
This is similar to the socket option SO_PEERCRED
, but requires a
process to explicitly send its credentials. A process running as root is
allowed to specify any credentials, while credentials sent by other
processes are verified by the kernel.
For further information, please refer to the
unix(7)
man page.
AlgSetIv(&'a [u8])
Set IV for AF_ALG
crypto API.
For further information, please refer to the
documentation
AlgSetOp(&'a c_int)
Set crypto operation for AF_ALG
crypto API. It may be one of
ALG_OP_ENCRYPT
or ALG_OP_DECRYPT
For further information, please refer to the
documentation
AlgSetAeadAssoclen(&'a u32)
Set the length of associated authentication data (AAD) (applicable only to AEAD algorithms)
for AF_ALG
crypto API.
For further information, please refer to the
documentation
UdpGsoSegments(&'a u16)
UDP GSO makes it possible for applications to generate network packets for a virtual MTU much greater than the real one. The length of the send data no longer matches the expected length on the wire. The size of the datagram payload as it should appear on the wire may be passed through this control message. Send buffer should consist of multiple fixed-size wire payloads following one by one, and the last, possibly smaller one.
Ipv4PacketInfo(&'a in_pktinfo)
Configure the sending addressing and interface for v4.
For further information, please refer to the
ip(7)
man page.
Ipv6PacketInfo(&'a in6_pktinfo)
Configure the sending addressing and interface for v6.
For further information, please refer to the
ipv6(7)
man page.
Ipv6HopLimit(&'a c_int)
Configure the hop limit for v6 multicast traffic.
Set the IPv6 hop limit for this message. The argument is an integer
between 0 and 255. A value of -1 will set the hop limit to the route
default if possible on the interface. Without this cmsg, packets sent
with sendmsg have a hop limit of 1 and will not leave the local network.
For further information, please refer to the
ipv6(7)
man page.
RxqOvfl(&'a u32)
SO_RXQ_OVFL indicates that an unsigned 32 bit value ancilliary msg (cmsg) should be attached to recieved skbs indicating the number of packets dropped by the socket between the last recieved packet and this received packet.
TxTime(&'a u64)
Configure the transmission time of packets.
For further information, please refer to the
tc-etf(8)
man
page.
Trait Implementations§
source§impl<'a> Clone for ControlMessage<'a>
impl<'a> Clone for ControlMessage<'a>
source§fn clone(&self) -> ControlMessage<'a>
fn clone(&self) -> ControlMessage<'a>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'a> Debug for ControlMessage<'a>
impl<'a> Debug for ControlMessage<'a>
source§impl<'a> PartialEq for ControlMessage<'a>
impl<'a> PartialEq for ControlMessage<'a>
impl<'a> Copy for ControlMessage<'a>
impl<'a> Eq for ControlMessage<'a>
impl<'a> StructuralPartialEq for ControlMessage<'a>
Auto Trait Implementations§
impl<'a> Freeze for ControlMessage<'a>
impl<'a> RefUnwindSafe for ControlMessage<'a>
impl<'a> Send for ControlMessage<'a>
impl<'a> Sync for ControlMessage<'a>
impl<'a> Unpin for ControlMessage<'a>
impl<'a> UnwindSafe for ControlMessage<'a>
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)