An Elixir implementation for the MikroTik Neighbor Discovery Protocol.
Discover devices
> mix mndp.discover
Press any key to end
┌───────┬──────┬────────────────┬─────────┬─────────────┬─────────┬───────────┐
│VERSION│UPTIME│MAC │LAST SEEN│IPV4 │INTERFACE│IDENTITY │
├───────┼──────┼────────────────┼─────────┼─────────────┼─────────┼───────────┤
│0.1.0 │4396 │6:95:72:B0:80:BB│0s ago │172.31.199.73│usb0 │nerves-2a0c│
└───────┴──────┴────────────────┴─────────┴─────────────┴─────────┴───────────┘
The application is automatically started and listening and broadcasting on all available IPv4 network interfaces. You can restrict the interfaces via config. See MNDP.Options
. To use it just add the dependency to your project.
def deps do
[
{:mndp, "~> 0.1.0"}
]
end
To get the last discovered devices you can use MNDP.Listener.list_discovered/0
.
You can decode and encode from and to a binary directly.
Encoding:
iex> MNDP.new!("en0") |> MNDP.encode()
<<...>>
Decoding:
iex> MNDP.decode(binary)
{:ok, %MNDP{}}
.dialyzer_ignore.exs
MNDP.Server
when received in MNDP.Listener
MNDP.InetMonitor
If available in Hex, the package can be installed
by adding mndp
to your list of dependencies in mix.exs
:
def deps do
[
{:mndp, "~> 0.1.0"}
]
end
Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/mndp.