summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/shared/netif-naming-scheme.c1
-rw-r--r--src/shared/netif-naming-scheme.h2
-rw-r--r--src/udev/udev-builtin-net_id.c19
3 files changed, 20 insertions, 2 deletions
diff --git a/src/shared/netif-naming-scheme.c b/src/shared/netif-naming-scheme.c
index 18748e5376..b6a97527d8 100644
--- a/src/shared/netif-naming-scheme.c
+++ b/src/shared/netif-naming-scheme.c
@@ -25,6 +25,7 @@ static const NamingScheme naming_schemes[] = {
{ "v250", NAMING_V250 },
{ "v251", NAMING_V251 },
{ "v252", NAMING_V252 },
+ { "v253", NAMING_V253 },
/* … add more schemes here, as the logic to name devices is updated … */
EXTRA_NET_NAMING_MAP
diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h
index 4fa9170969..bb893870e9 100644
--- a/src/shared/netif-naming-scheme.h
+++ b/src/shared/netif-naming-scheme.h
@@ -38,6 +38,7 @@ typedef enum NamingSchemeFlags {
NAMING_XEN_VIF = 1 << 13, /* Generate names for Xen netfront devices */
NAMING_BRIDGE_MULTIFUNCTION_SLOT = 1 << 14, /* Use PCI hotplug slot information associated with bridge, but only if PCI device is multifunction */
NAMING_DEVICETREE_ALIASES = 1 << 15, /* Generate names from devicetree aliases */
+ NAMING_USB_HOST = 1 << 16, /* Generate names for usb host */
/* And now the masks that combine the features above */
NAMING_V238 = 0,
@@ -51,6 +52,7 @@ typedef enum NamingSchemeFlags {
NAMING_V250 = NAMING_V249 | NAMING_XEN_VIF,
NAMING_V251 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT,
NAMING_V252 = NAMING_V251 | NAMING_DEVICETREE_ALIASES,
+ NAMING_V253 = NAMING_V252 | NAMING_USB_HOST,
EXTRA_NET_NAMING_SCHEMES
diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
index 7504123700..557e459191 100644
--- a/src/udev/udev-builtin-net_id.c
+++ b/src/udev/udev-builtin-net_id.c
@@ -1202,9 +1202,24 @@ static int builtin_net_id(sd_device *dev, sd_netlink **rtnl, int argc, char *arg
return 0;
}
- /* get PCI based path names, we compose only PCI based paths */
- if (names_pci(dev, &info, &names) < 0)
+ /* get PCI based path names */
+ r = names_pci(dev, &info, &names);
+ if (r < 0) {
+ /*
+ * check for usb devices that are not off pci interfaces to
+ * support various on-chip asics that have usb ports
+ */
+ if (r == -ENOENT &&
+ naming_scheme_has(NAMING_USB_HOST) &&
+ names_usb(dev, &names) >= 0 && names.type == NET_USB) {
+ char str[ALTIFNAMSIZ];
+
+ if (snprintf_ok(str, sizeof str, "%s%s", prefix, names.usb_ports))
+ udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str);
+ }
+
return 0;
+ }
/* plain PCI device */
if (names.type == NET_PCI) {