xsk-rs 0.6.1

Rust bindings for Linux AF_XDP sockets
# Changelog

## Unreleased

## [0.6.1] - 2024-05-19

## Changed
- updated example in readme

## [0.6.0] - 2024-05-19

## Changed
- use `libxdp-sys` instead of `libbpf-sys`

## [0.5.0] - 2022-10-18

## Changed
- bump `libbpf-sys` version

## [0.4.1] - 2022-03-10

## Added
- provide `FrameDesc` with a `Default` impl to make generating empty
  descs for rx simpler
  
## Fixed
- negate error codes when calling `io::Error::from_raw_os_error`
- some `libc` calls just return `-1` on error, not an informative
  error code so in these cases call `io::Error::last_os_error()`
  instead of `io::Error::from_raw_os_error(err)`, where `err` is
  always equal to `-1`...

## [0.4.0] - 2022-02-09

## Added
- add `contents_mut` to `{Data, Headroom}Mut`, along with other
  convenience traits (`{As, Borrow, Deref}{Mut}`)

## Changed
- update `{Data, Headroom}Mut::cursor` docs to clarify when `{Data,
  Headroom}Mut::contents_mut` might be more appropriate
- more colour to safety section of `Umem::frame` and `Umem::frame_mut`
  indicating why using the frame desc of another UMEM might be
  problematic

## [0.3.0] - 2022-01-17

## Added
- support shared UMEM
- support retrieving XDP statistics
- new frame level structs to allow more granular UMEM access along
  with clearer separation between headroom and packet data. Includes a
  cursor for convenient writing
- config builders and add extra types to enforce restrictions on
  certain values / sizes (e.g queue sizes)

## Changed
- bump libs, e.g. `libbpf-sys` to 0.6.0-1

## Removed
- got rid of lifetimes by packaging the various queues with an `Arc`'d
  UMEM or socket where needed to ensure they don't outlive what they
  depend on. Shouldn't cause any slowdown in the single threaded case
  since the `Arc`s aren't dereferenced in the fast path

## [0.2.4] - 2021-07-10

## Changes
- expose the socket file descriptor on the `Fd` struct to make it
  possible to register the socket manually
- bump libbpf-sys to version 0.4

## [0.2.3] - 2021-06-09

## Changed
- added CI, fixed docs

## [0.2.2] - 2020-05-25

## Changed
- bumped lib versions, libbpf-sys specifically

## [0.2.1] - 2020-01-29

### Changed
- bumped libbpf-sys version to 0.3
- fixed docs, wasn't showing some stuff since the structs/enums
  weren't exposed

## [0.2.0] - 2021-01-17
Breaking change

### Changed
- Changed the APIs for the UMEM and socket to be `unsafe` where
  required. It's possible in a number of locations to get into a race
  with the kernel for a bit of shared memory, so tried to make those
  areas clearer.
- Can now set the `addr` on `FrameDesc` manually, previously had to go
  through the library.
- Cleared up examples and hopefully made them a bit more illustrative.

### Added
- A `bench` sub-project, work on which is ongoing.