arp-toolkit 0.3.2

Toolkit for ARP and RARP using Raw sockets in Rust
Documentation
# arp-toolkit [![Build]https://github.com/OliLay/arp-toolkit-rust/actions/workflows/build.yml/badge.svg]https://github.com/OliLay/arp-toolkit-rust/actions/workflows/build.yml [![crates.io]https://img.shields.io/crates/v/arp-toolkit.svg]https://crates.io/crates/arp-toolkit 


Toolkit for (R)ARP , the `(Reverse) Address Resolution Protocol`. 

Supports simplified sending and receiving of (R)ARP requests/responses using an abstracted Client. Also allows easy manipulation and building of (R)ARP packets.

Features:
- Sending and receiving ARP/RARP messages
- Abstracted ARP client with simple access to most common ARP/RARP use cases
- Advanced API, allowing for arbitrary construction and manipulation of ARP/RARP packets
- Sync (blocking) and async IO

## Build
To build it, use
```
cargo build
```

**Note**: only the `async-example` is built per default. To build the `sync-example`, change to the directory and run `cargo build`. This is because sync and async can not be used in the same crate simultaneously.

## Usage
`examples/sync-example` shows high-level usage of the class `ArpClient` using blocking IO. For example, it illustrates how to get the MAC address for the corresponding IP and vice versa with a single function call. `async-example` shows the same, but with `async` IO.

It is also possible to directly send, receive and manipulate (R)ARP packages. To see how this works, take a look at the both of the examples and their containing method `resolve_advanced`.

To use **blocking** IO instead of **async** IO, activate the feature `sync` in your `Cargo.toml` like this: 
```toml
[dependencies]
arp-toolkit = {version = x.x.x, features = ["sync"]}
```


**Important note**: As this library uses Raw sockets, either [set](https://squidarth.com/networking/systems/rc/2018/05/28/using-raw-sockets.html) the `CAP_NET_RAW` capability or run your program with `sudo`. (not recommended)