diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index 63624dc30..fb16955c7 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -409,6 +409,10 @@ class InterfaceFilter(django_filters.FilterSet): method='filter_type', label='Interface type', ) + mac_address = django_filters.CharFilter( + method='_mac_address', + label='MAC address', + ) class Meta: model = Interface @@ -424,6 +428,15 @@ class InterfaceFilter(django_filters.FilterSet): return queryset.filter(form_factor=IFACE_FF_LAG) return queryset + def _mac_address(self, queryset, name, value): + value = value.strip() + if not value: + return queryset + try: + return queryset.filter(mac_address=value) + except AddrFormatError: + return queryset.none() + class ConsoleConnectionFilter(django_filters.FilterSet): site = django_filters.CharFilter(