View Source MNDP - MikroTik Neighbor Discovery Protocol
An Elixir implementation for the MikroTik Neighbor Discovery Protocol.
Discover devices
> mix 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, github: "kevinschweikert/mndp"}
]
endTo 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{}}Todo / Ideas
- [ ] Fix ignored warnings in
.dialyzer_ignore.exs - [ ] Sequence numbering
- [ ] Answer discovery requests with correct
MNDP.Serverwhen received inMNDP.Listener - [ ] Make everything configurable
- [ ] Add tests
- [ ] Better Logging
- [ ] Check licence
- [ ] With 0.1.0 add CHANGELOG
- [x] Subscribe API
- [x] Recognize when iface is down in
MNDP.InetMonitor - [x] Add docs
Installation
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"}
]
endDocumentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/mndp.