- defp mac do
- {:ok, addresses} = :inet.getifaddrs()
-
- ifaces_with_mac =
- Enum.reduce(addresses, [], fn {iface, attrs}, acc ->
- if attrs[:hwaddr], do: [iface | acc], else: acc
- end)
-
- iface = Enum.at(ifaces_with_mac, :rand.uniform(length(ifaces_with_mac)) - 1)
- mac(iface)
- end
-
- defp mac(name) do
- {:ok, addresses} = :inet.getifaddrs()
- proplist = :proplists.get_value(name, addresses)
- hwaddr = Enum.take(:proplists.get_value(:hwaddr, proplist), 6)
- <<worker::integer-size(48)>> = :binary.list_to_bin(hwaddr)