udev: hwdb - fix OUI lookup
This commit is contained in:
parent
7e15bd3362
commit
472780d8b1
|
@ -18,18 +18,27 @@
|
||||||
***/
|
***/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* prefixes:
|
* predictable network interface device names based on:
|
||||||
|
* - firmware/bios-provided index numbers for on-board devices
|
||||||
|
* - firmware-provided pci-express hotplug slot index number
|
||||||
|
* - physical/geographical location of the hardware
|
||||||
|
* - the interface's MAC address
|
||||||
|
*
|
||||||
|
* two character prefixes based on the type of interface:
|
||||||
* en -- ethernet
|
* en -- ethernet
|
||||||
* wl -- wlan
|
* wl -- wlan
|
||||||
* ww -- wwan
|
* ww -- wwan
|
||||||
*
|
*
|
||||||
* types:
|
* type of names:
|
||||||
* o<index> -- on-board device index
|
* o<index> -- on-board device index number
|
||||||
* s<slot>[f<function>] -- hotplug slot number
|
* s<slot>[f<function>] -- hotplug slot index number
|
||||||
* x<MAC> -- MAC address
|
* x<MAC> -- MAC address
|
||||||
* p<bus>s<slot>[f<function>] -- PCI/physical location
|
* p<bus>s<slot>[f<function>] -- PCI geographical location
|
||||||
*
|
*
|
||||||
* example:
|
* All multi-function devices will carry the [f<function>] number in the
|
||||||
|
* device name, including the function 0 device.
|
||||||
|
*
|
||||||
|
* examples:
|
||||||
* ID_NET_NAME_ONBOARD=eno1
|
* ID_NET_NAME_ONBOARD=eno1
|
||||||
* ID_NET_NAME_SLOT=ens1
|
* ID_NET_NAME_SLOT=ens1
|
||||||
* ID_NET_NAME_SLOT=ens2f0
|
* ID_NET_NAME_SLOT=ens2f0
|
||||||
|
@ -82,6 +91,7 @@ static int dev_pci_onboard(struct udev_device *dev, struct udev_device *parent,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* read the 256 bytes PCI configuration space to check for multi-function */
|
||||||
static bool is_pci_singlefunction(struct udev_device *dev) {
|
static bool is_pci_singlefunction(struct udev_device *dev) {
|
||||||
char filename[256];
|
char filename[256];
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
@ -215,8 +225,10 @@ static int dev_mac(struct udev_device *dev, const char *prefix, bool test) {
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* add IEEE Organizationally Unique Identifier */
|
/* add IEEE Organizationally Unique Identifier */
|
||||||
snprintf(str, sizeof(str), "OUI:%X%X%X", a1, a2, a3);
|
if (a1 + a2 + a3 > 0) {
|
||||||
|
snprintf(str, sizeof(str), "OUI:%02X%02X%02X", a1, a2, a3);
|
||||||
udev_builtin_hwdb_lookup(dev, str, test);
|
udev_builtin_hwdb_lookup(dev, str, test);
|
||||||
|
}
|
||||||
|
|
||||||
snprintf(str, sizeof(str), "%sx%02x%02x%02x%02x%02x%02x", prefix, a1, a2, a3, a4, a5, a6);
|
snprintf(str, sizeof(str), "%sx%02x%02x%02x%02x%02x%02x", prefix, a1, a2, a3, a4, a5, a6);
|
||||||
return udev_builtin_add_property(dev, test, "ID_NET_NAME_MAC", str);
|
return udev_builtin_add_property(dev, test, "ID_NET_NAME_MAC", str);
|
||||||
|
|
Loading…
Reference in a new issue