README.md

[![Build Status](https://travis-ci.org/ephe-meral/mac.svg?branch=master)](https://travis-ci.org/ephe-meral/mac)
[![Hex.pm](https://img.shields.io/hexpm/l/mac.svg "WTFPL Licensed")](https://github.com/ephe-meral/mac/blob/master/LICENSE)
[![Hex version](https://img.shields.io/hexpm/v/mac.svg "Hex version")](https://hex.pm/packages/mac)

# MAC

Parses a MAC-to-vendor database file and builds a search tree from that. This search tree is loaded into memory and can be used via the standard API.

## MAC database

Uses the compiled version from the wireshark project:

https://code.wireshark.org/review/gitweb?p=wireshark.git;a=blob_plain;f=manuf;hb=HEAD

## setup

In your `mix.exs` file:

```elixir
def deps do
  [{:mac, "~> 0.0.1"}]
end
```

Note that the initial compilation might take a few more seconds since it compiles the lookup table.

## usage

```elixir
# standard usage:
MAC.fetch_vendor("00:00:0F:00:00:00")
# => {:ok, "NEXT, INC."}

MAC.fetch_vendor("other stuff or non-existing")
# => :error

# works with different formats by stripping away unexpected chars:
MAC.fetch_vendor(" 00+++00\\\\0F00----00   00  ")
# => {:ok, "NEXT, INC."}

# the parser does also accept bit-masks, so you can also use
MAC.Parser.to_bitstring("00:00:F0/20")
# => <<0, 0, 15::size(4)>>
```

## speed

If you have problems with the lookup speed, please let me know (create an issue here).

## is it any good?

bien sûr.