kevinschweikert / mndp

Elixir implementation of the Mikrotik Neighbor Discovery Protocol
MIT License
8 stars 0 forks source link

MNDP - MikroTik Neighbor Discovery Protocol

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{}}

Todo / Ideas

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"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/mndp.

Heavily inspired by