The ethrecv crate is designed to receive Ethernet packets at a high rate.
Capabilities on Linux
To avoid having to run applications as root
when using with raw networking,
the administrator can give the program specific privileges by set the
program's capabilities using the setcap(8)
command.
For the actual communication the cap_net_raw
capability is needed. If the
application needs to make interface changes (like set MTU) the cap_net_admin
capability is needed. These can be set using the command:
$ sudo setcap cap_net_raw,cap_net_admin=eip <binfile>
systemd services can be assigned these capabilities by adding
the following to the [Service]
section.
AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN
Feature labels in documentation
The crate's documentation uses automatically generated feature labels, which currently requires nightly featuers. To build the documentation locally use:
RUSTFLAGS="--cfg docsrs" RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features
Change log
The details of changes can always be found in the timeline, but for a high-level view of changes between released versions there's a manually maintained Change Log.