diff --git a/lib/towerops/snmp/arp_discovery.ex b/lib/towerops/snmp/arp_discovery.ex index 89a0c02b..bb922baa 100644 --- a/lib/towerops/snmp/arp_discovery.ex +++ b/lib/towerops/snmp/arp_discovery.ex @@ -46,7 +46,7 @@ defmodule Towerops.Snmp.ArpDiscovery do last_seen_at: DateTime.truncate(DateTime.utc_now(), :second) } end) - |> Enum.reject(&is_nil(&1.ip_address)) + |> Enum.reject(&(is_nil(&1.ip_address) or is_nil(&1.mac_address))) {:ok, arp_entries} end @@ -106,6 +106,11 @@ defmodule Towerops.Snmp.ArpDiscovery do end # Format MAC address from binary to colon-separated hex + defp format_mac_address(value) when is_binary(value) and byte_size(value) == 0 do + # Empty binary - SNMP returned blank MAC address + nil + end + defp format_mac_address(value) when is_binary(value) and byte_size(value) == 6 do value |> :binary.bin_to_list()