# mnl-sys
Low level FFI bindings to [`libmnl`]. A minimalistic user-space library oriented to Netlink
developers. See [`mnl`] for a higher level safe abstraction.
These bindings were generated with bindgen. See the `generate_bindings.sh` script in the
repository.
## Linking to libmnl
### `pkg-config`
By default this crate uses pkg-config to find and link [`libmnl`].
### Manually
To manually configure where to look for the library, set the environment variable `LIBMNL_LIB_DIR`
to point to the directory where `libmnl.so` or `libmnl.a` resides, or [`override the build script`]
to manually set the linker directives for `mnl`:
```toml
# .cargo/config.toml
[target.x86_64-unknown-linux-gnu.mnl]
rustc-link-lib = ["mnl"]
rustc-link-search = ["<type>=<path-to-libmnl>"]
```
## Selecting version of `libmnl`
This crate has bindings for multiple versions of [`libmnl`]. All bindings are generated by
[`bindgen`] via the `generate_bindings.sh` script in this repository.
Only one version of `libmnl` can be exposed via this crate. By default the crate exports the
bindings for the oldest supported version (`libmnl-1.0.3`). To get newer versions activate the
corresponding features. See `Cargo.toml` for available features/versions.
So for example, to get bindings to `libmnl-1.0.4` depend on this crate like this:
```toml
[dependencies]
mnl-sys = { version = "0.1", features = ["mnl-1-0-4"] }
```
[`libmnl`]: https://netfilter.org/projects/libmnl/
[`mnl`]: https://crates.io/crates/mnl
[`bindgen`]: https://crates.io/crates/bindgen
[`override the build script`]: https://doc.rust-lang.org/cargo/reference/build-scripts.html#overriding-build-scripts
License: MIT/Apache-2.0