An Elixir implementation for the MikroTik Neighbor Discovery Protocol.
Discover devices
> mix mndp.discover
Press enter to end
| identity    | mac               | ip_v4         | ifname | version | uptime | seen    |
| ----------- | ----------------- | ------------- | ------ | ------- | ------ | ------- |
| nerves-fe79 | CE:6B:2A:1C:3A:7F | 172.31.154.53 | usb0   | 0.1.0   | 53s    | 16s ago |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"}
  ]
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{}}-  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
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.