pub struct NlSocketHandle { /* private fields */ }
Expand description
Higher level handle for socket operations.
Implementations§
Source§impl NlSocketHandle
impl NlSocketHandle
Sourcepub fn new(proto: NlFamily) -> Result<Self, Error>
pub fn new(proto: NlFamily) -> Result<Self, Error>
Wrapper around socket()
syscall filling in the
netlink-specific information
Sourcepub fn connect(
proto: NlFamily,
pid: Option<u32>,
groups: &[u32],
) -> Result<Self, Error>
pub fn connect( proto: NlFamily, pid: Option<u32>, groups: &[u32], ) -> Result<Self, Error>
Equivalent of socket
and bind
calls.
Sourcepub fn nonblock(&self) -> Result<(), Error>
pub fn nonblock(&self) -> Result<(), Error>
Set underlying socket file descriptor to be non blocking.
Sourcepub fn is_blocking(&self) -> Result<bool, Error>
pub fn is_blocking(&self) -> Result<bool, Error>
Determines if underlying file descriptor is blocking.
Sourcepub fn bind(&self, pid: Option<u32>, groups: &[u32]) -> Result<(), Error>
pub fn bind(&self, pid: Option<u32>, groups: &[u32]) -> Result<(), Error>
Use this function to bind to a netlink ID and subscribe to groups. See netlink(7) man pages for more information on netlink IDs and groups.
Sourcepub fn add_mcast_membership(&self, groups: &[u32]) -> Result<(), Error>
pub fn add_mcast_membership(&self, groups: &[u32]) -> Result<(), Error>
Join multicast groups for a socket.
Sourcepub fn drop_mcast_membership(&self, groups: &[u32]) -> Result<(), Error>
pub fn drop_mcast_membership(&self, groups: &[u32]) -> Result<(), Error>
Leave multicast groups for a socket.
Sourcepub fn list_mcast_membership(&self) -> Result<NetlinkBitArray, Error>
pub fn list_mcast_membership(&self) -> Result<NetlinkBitArray, Error>
List joined groups for a socket.
Sourcepub fn resolve_genl_family(
&mut self,
family_name: &str,
) -> Result<u16, NlError<GenlId, Genlmsghdr<CtrlCmd, CtrlAttr>>>
pub fn resolve_genl_family( &mut self, family_name: &str, ) -> Result<u16, NlError<GenlId, Genlmsghdr<CtrlCmd, CtrlAttr>>>
Convenience function for resolving a str
containing the
generic netlink family name to a numeric generic netlink ID.
Sourcepub fn resolve_nl_mcast_group(
&mut self,
family_name: &str,
mcast_name: &str,
) -> Result<u32, NlError<GenlId, Genlmsghdr<CtrlCmd, CtrlAttr>>>
pub fn resolve_nl_mcast_group( &mut self, family_name: &str, mcast_name: &str, ) -> Result<u32, NlError<GenlId, Genlmsghdr<CtrlCmd, CtrlAttr>>>
Convenience function for resolving a str
containing the
multicast group name to a numeric multicast group ID.
Sourcepub fn lookup_id(
&mut self,
id: u32,
) -> Result<(String, String), NlError<GenlId, Genlmsghdr<CtrlCmd, CtrlAttr>>>
pub fn lookup_id( &mut self, id: u32, ) -> Result<(String, String), NlError<GenlId, Genlmsghdr<CtrlCmd, CtrlAttr>>>
Look up netlink family and multicast group name by ID.
Sourcepub fn send<T, P>(&mut self, msg: Nlmsghdr<T, P>) -> Result<(), SerError>
pub fn send<T, P>(&mut self, msg: Nlmsghdr<T, P>) -> Result<(), SerError>
Convenience function to send an Nlmsghdr
struct
Sourcepub fn recv<'a, T, P>(
&'a mut self,
) -> Result<Option<Nlmsghdr<T, P>>, NlError<T, P>>
pub fn recv<'a, T, P>( &'a mut self, ) -> Result<Option<Nlmsghdr<T, P>>, NlError<T, P>>
Convenience function to read a stream of
Nlmsghdr
structs one by one.
Use NlSocketHandle::iter
instead for easy iteration over
returned packets.
Returns None
only in non-blocking contexts if no
message can be immediately returned or if the socket
has been closed.
Sourcepub fn recv_all<'a, T, P>(&'a mut self) -> Result<NlBuffer<T, P>, NlError>
pub fn recv_all<'a, T, P>(&'a mut self) -> Result<NlBuffer<T, P>, NlError>
Parse all Nlmsghdr
structs sent in
one network packet and return them all in a list.
Failure to parse any packet will cause the entire operation
to fail. If an error is detected at the application level,
this method will discard any non-error
Nlmsghdr
structs and only return the
error. This method checks for ACKs. For a more granular
approach, use either NlSocketHandle::recv
or
NlSocketHandle::iter
.
Sourcepub fn iter<'a, T, P>(
&'a mut self,
iter_indefinitely: bool,
) -> NlMessageIter<'a, T, P> ⓘ
pub fn iter<'a, T, P>( &'a mut self, iter_indefinitely: bool, ) -> NlMessageIter<'a, T, P> ⓘ
Return an iterator object
The argument iterate_indefinitely
is documented
in more detail in NlMessageIter
Trait Implementations§
Source§impl AsRawFd for NlSocketHandle
impl AsRawFd for NlSocketHandle
Source§impl From<NlSocketHandle> for NlSocket
impl From<NlSocketHandle> for NlSocket
Source§fn from(s: NlSocketHandle) -> Self
fn from(s: NlSocketHandle) -> Self
Source§impl FromRawFd for NlSocketHandle
impl FromRawFd for NlSocketHandle
Source§unsafe fn from_raw_fd(fd: RawFd) -> Self
unsafe fn from_raw_fd(fd: RawFd) -> Self
Self
from the given raw file
descriptor. Read more