chiark / gitweb /
udev: in addition to DEVMODE, honor DEVUID, DEVGID from the uevent
[elogind.git] / src / udev / udev-builtin-net_id.c
index 97dba3a52a98f768b30350f7145079811c43795a..d8d45081776a9b0770d659fd1c3fe44c4a3f7fd7 100644 (file)
  * All multi-function PCI devices will carry the [f<function>] number in the
  * device name, including the function 0 device.
  *
- * For USB devices the fill chain of port numbers of hubs is composed. If the
- * string would gt longer than the maximum of 15 characters, the name is not
- * exported. The usual USB configuration == 1 and interface == 0 values are
- * suppressed.
+ * For USB devices the full chain of port numbers of hubs is composed. If the
+ * name gets longer than the maximum number of 15 characters, the name is not
+ * exported.
+ * The usual USB configuration == 1 and interface == 0 values are suppressed.
  *
- * PCI ethernet card with firmware index
+ * PCI ethernet card with firmware index "1":
  *   ID_NET_NAME_ONBOARD=eno1
  *   ID_NET_NAME_ONBOARD_LABEL=Ethernet Port 1
  *
- * PCI ethernet card
- *   /sys/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/net/ens1
- *   ID_NET_NAME_MAC=enx000000000466
- *   ID_NET_NAME_PATH=enp5s0
- *   ID_NET_NAME_SLOT=ens1
- *
  * PCI ethernet card in hotplug slot with firmware index number:
  *   /sys/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/net/ens1
  *   ID_NET_NAME_MAC=enx000000000466
  *   ID_NET_NAME_PATH=enp5s0
  *   ID_NET_NAME_SLOT=ens1
  *
+ * PCI ethernet multi-function card with 2 ports:
+ *   /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/enp2s0f0
+ *   ID_NET_NAME_MAC=enx78e7d1ea46da
+ *   ID_NET_NAME_PATH=enp2s0f0
+ *   /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.1/net/enp2s0f1
+ *   ID_NET_NAME_MAC=enx78e7d1ea46dc
+ *   ID_NET_NAME_PATH=enp2s0f1
+ *
  * PCI wlan card:
  *   /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlp3s0
  *   ID_NET_NAME_MAC=wlx0024d7e31130
@@ -330,9 +332,9 @@ static int names_mac(struct udev_device *dev, struct netnames *names) {
 
 /* IEEE Organizationally Unique Identifier vendor string */
 static int ieee_oui(struct udev_device *dev, struct netnames *names, bool test) {
-        char str[IFNAMSIZ];
+        char str[32];
 
-        if (names->mac_valid)
+        if (!names->mac_valid)
                 return -ENOENT;
         /* skip commonly misused 00:00:00 (Xerox) prefix */
         if (memcmp(names->mac, "\0\0\0", 3) == 0)