## STATUS
## OVERVIEW
**Libtraceroute** is a cross-platform traceroute library for Rust, that allows displaying possible routes (paths) and measuring transit delays of packets across an Internet Protocol (IP) network. Libtraceroute uses ![pnet](https://github.com/libpnet/libpnet), a low-level networking library, to send and capture packets at the data link layer, which allows it to operate without the need for root privileges on MacOS and Windows, but still requires sudo on Linux.
## FEATURES
**Libtraceroute** works at the data link layer with custom-built packets, which provides the user with a lot of options for customizations. The library allows to configure the following parameters:
- **_[REQUIRED]_** - Destination address
- **_[OPTIONAL]_** - Maximum number of hops Port Number of queries per hop Network interface Protocol Timeout per query
## USAGE
To use **libtraceroute** in your project, add the following to your Cargo.toml:
```
[dependencies]
libtraceroute = "0.1.0"
```
**NOTE!** If you are using Windows, follow these instructions to make ![pnet](https://github.com/libpnet/libpnet) work:
> ### Windows
> * You must use a version of Rust which uses the MSVC toolchain
> * You must have [WinPcap](https://www.winpcap.org/) or [npcap](https://nmap.org/npcap/) installed
> (tested with version WinPcap 4.1.3) (If using npcap, make sure to install with the "Install Npcap in WinPcap API-compatible Mode")
> * You must place `Packet.lib` from the [WinPcap Developers pack](https://www.winpcap.org/devel.htm)
> in a directory named `lib`, in the root of this repository. Alternatively, you can use any of the
> locations listed in the `%LIB%`/`$Env:LIB` environment variables. For the 64 bit toolchain it is
> in `WpdPack/Lib/x64/Packet.lib`, for the 32 bit toolchain, it is in `WpdPack/Lib/Packet.lib`.
Source: https://github.com/libpnet/libpnet/blob/master/README.md