Expand description
§proc-connector
A safe, modern Rust wrapper for the Linux Process Event Connector
(netlink NETLINK_CONNECTOR + CN_IDX_PROC).
Provides full coverage of all 10+ kernel process event types via a type-safe, zero-overhead, and fully safe API.
§Quick start
// Create connector (requires CAP_NET_ADMIN)
let conn = ProcConnector::new().expect("create connector");
let mut buf = vec![0u8; 4096];
// Blocking receive with timeout
match conn.recv_timeout(&mut buf, Duration::from_secs(1)) {
Ok(Some(event)) => println!("got event: {event}"),
Ok(None) => println!("timeout"),
Err(e) => eprintln!("error: {e}"),
}§Async integration
let conn = ProcConnector::new().unwrap();
let raw_fd = conn.as_raw_fd();
// Use with tokio:
// let async_fd = tokio::io::unix::AsyncFd::new(conn).unwrap();§Design philosophy (inspired by fanotify-fid)
- Safe API: internal
unsafeis confined to protocol parsing; callers receive a fully safe interface. - Complete event coverage: all
PROC_EVENT_*variants are exposed as aProcEventenum with structured fields. - Zero-copy where possible: parsing happens only after a successful
recv, with buffer ownership left to the caller. - Async-ready:
as_raw_fd()exposes the underlying socket fd for integration withtokio::AsyncFd,mio, or other event loops. - No overreach: does NOT manage threads, cache
/procdata, or impose any event processing policy.
Structs§
- Netlink
Message Iter - Iterator over multiple netlink messages packed into a single receive buffer.
- Proc
Connector - A safe handle to a Linux Netlink Proc Connector socket.
Enums§
- Error
- Errors that can occur during proc connector operations.
- Proc
Event - A parsed process event from the Linux Proc Connector.
Constants§
- CN_
IDX_ PROC - Connector index for process events.
- CN_
VAL_ PROC - Connector value for process events.
- COMM_
DATA - Offset to comm string (16 bytes) in comm event data.
- COMM_
PID - Offset to PID in comm event data.
- COMM_
TGID - Offset to TGID in comm event data.
- CONNECTOR_
MAX_ MSG_ SIZE - Maximum message size for the connector protocol.
- COREDUMP_
PARENT_ PID - Offset to parent PID in coredump event data.
- COREDUMP_
PARENT_ TGID - Offset to parent TGID in coredump event data.
- COREDUMP_
PID - Offset to PID in coredump event data.
- COREDUMP_
TGID - Offset to TGID in coredump event data.
- EXEC_
PID - Offset to PID in exec event data.
- EXEC_
TGID - Offset to TGID in exec event data.
- EXIT_
CODE - Offset to exit code in exit event data.
- EXIT_
PARENT_ PID - Offset to parent PID in exit event data.
- EXIT_
PARENT_ TGID - Offset to parent TGID in exit event data.
- EXIT_
PID - Offset to PID in exit event data.
- EXIT_
SIGNAL - Offset to exit signal in exit event data.
- EXIT_
TGID - Offset to TGID in exit event data.
- FORK_
CHILD_ PID - Offset to child PID in fork event data.
- FORK_
CHILD_ TGID - Offset to child TGID in fork event data.
- FORK_
PARENT_ PID - Offset to parent PID in fork event data.
- FORK_
PARENT_ TGID - Offset to parent TGID in fork event data.
- ID_
EUID_ EGID - Offset to effective UID/GID in uid/gid event data.
- ID_PID
- Offset to PID in uid/gid event data.
- ID_
RUID_ RGID - Offset to real UID/GID in uid/gid event data.
- ID_TGID
- Offset to TGID in uid/gid event data.
- NETLINK_
CONNECTOR - Netlink protocol family for the Connector.
- NETLINK_
NO_ ENOBUFS - Socket option to disable
ENOBUFSerrors on recv. - NLMSG_
ALIGNTO - Alignment boundary for netlink message headers (4 bytes).
- NLMSG_
DONE - Done message type: marks the end of a multi-part message.
- NLMSG_
ERROR - Error message type: contains
nlmsgerrstruct. - NLMSG_
MIN_ TYPE - Minimum valid message type for application-specific messages.
- NLMSG_
NOOP - No-operation message type (ignored by netlink).
- NLMSG_
OVERRUN - Overrun message type: data was lost due to buffer overflow.
- NLM_
F_ REQUEST - Netlink message flag: this is a request message.
- PROC_
CN_ MCAST_ IGNORE - Multicast operation: stop listening.
- PROC_
CN_ MCAST_ LISTEN - Multicast operation: start listening.
- PROC_
EVENT_ COMM - Process name (comm) changed.
- PROC_
EVENT_ COREDUMP - Process dumped core.
- PROC_
EVENT_ EXEC - A process executed a new program (exec).
- PROC_
EVENT_ EXIT - Process exited.
- PROC_
EVENT_ FORK - A process was forked.
- PROC_
EVENT_ GID - Real/effective GID changed.
- PROC_
EVENT_ HEADER_ SIZE - Offset from
proc_eventbase toevent_dataunion. - PROC_
EVENT_ PTRACE - ptrace attach/detach.
- PROC_
EVENT_ SID - Session ID changed.
- PROC_
EVENT_ UID - Real/effective UID changed.
- PTRACE_
PID - Offset to PID in ptrace event data.
- PTRACE_
TGID - Offset to TGID in ptrace event data.
- PTRACE_
TRACER_ PID - Offset to tracer PID in ptrace event data.
- PTRACE_
TRACER_ TGID - Offset to tracer TGID in ptrace event data.
- SID_PID
- Offset to PID in session ID event data.
- SID_
TGID - Offset to TGID in session ID event data.
- SIZE_
CN_ MSG - Size of
struct cn_msgheader (excluding flexibledataarray). - SIZE_
COMM_ EVENT - Size of comm event data (2 × i32 + char[16]: pid, tgid, comm).
- SIZE_
COREDUMP_ EVENT - Size of coredump event data (4 × i32: pid, tgid, parent_pid, parent_tgid).
- SIZE_
EXEC_ EVENT - Size of exec event data (2 × i32: pid, tgid).
- SIZE_
EXIT_ EVENT - Size of exit event data (4 × i32 + u32 + u32: pid, tgid, exit_code, exit_signal, parent_pid, parent_tgid).
- SIZE_
FORK_ EVENT - Per-event sub-structure sizes (all within the
event_dataunion): Size of fork event data (4 × i32: parent_pid, parent_tgid, child_pid, child_tgid). - SIZE_
ID_ EVENT - Size of uid/gid event data (2 × i32 + ruid/rgid union + euid/egid union).
- SIZE_
NLMSGHDR - Size of
struct nlmsghdrin bytes (without alignment). - SIZE_
PTRACE_ EVENT - Size of ptrace event data (4 × i32: pid, tgid, tracer_pid, tracer_tgid).
- SIZE_
SID_ EVENT - Size of session ID event data (2 × i32: pid, tgid).
Functions§
- nlmsg_
align - Round
lenup to the nearest multiple ofNLMSG_ALIGNTO. - nlmsg_
hdrlen - Total header length of
nlmsghdrafter alignment. - nlmsg_
length - Full message length:
lenbytes of payload plus aligned header. - parse_
cn_ msg - Parse a
cn_msgpayload (starting fromcb_id) into aProcEvent. - parse_
netlink_ message - Parse a single netlink message payload (starting after
nlmsghdr) into aProcEvent.
Type Aliases§
- Result
- Convenience alias for
Result<T, Error>.