# Use MAC based names for network interfaces which are directly or indirectly
# on USB and have an universally administered (stable) MAC address (second bit
# is 0). Don't do this when ifnames is disabled via kernel command line or
# customizing/disabling 99-default.link (or previously 80-net-setup-link.rules).

IMPORT{cmdline}="net.ifnames"
ENV{net.ifnames}=="0", GOTO="usb_net_by_mac_end"

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
    ATTR{address}=="?[014589cd]:*", \
    TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
    TEST!="/etc/systemd/network/99-default.link", \
    IMPORT{builtin}="net_id", NAME="$env{ID_NET_NAME_MAC}"

# Some Dell BIOS perform "MAC passthrough" which forces the same MAC address
# for the onboard nic and the in-dock nic, which obviously prevents naming
# the interfaces by mac.  Since those nics are usb, we have to prevent trying
# to rename both of them to the same name.  This sets a value that will
# cause udevd to skip its repeated attempts at renaming the interface if the
# first rename attempt fails.
ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", \
    ATTR{[dmi/id]sys_vendor}=="Dell Inc.", \
    ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="8153", \
    ENV{DELL_MAC_PASSTHROUGH}="1"

LABEL="usb_net_by_mac_end"
