From cc1ed77280ef6b7e196a267ca8ed5c3815b16c26 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Fri, 11 Jul 2025 09:34:05 +0800 Subject: [PATCH] udev-builtin-net_id: Extend persistent naming support to MCTP interfaces Now that we have Management Component Transport Protocol (MCTP) transports available over USB, it would be helpful to apply udev's persistent naming rules to MCTP interfaces, to follow the USB hub/port topology. Enable persistent naming for ARPHRD_MCTP-type devices, using a "mc" name prefix, and add appropriate definitions for the v260 naming sheme. --- man/systemd.net-naming-scheme.xml | 14 ++++++++++++++ src/shared/netif-naming-scheme.c | 1 + src/shared/netif-naming-scheme.h | 2 ++ src/udev/udev-builtin-net_id.c | 9 ++++++++- 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml index 9211e25aa17..1a024a0c305 100644 --- a/man/systemd.net-naming-scheme.xml +++ b/man/systemd.net-naming-scheme.xml @@ -90,6 +90,10 @@ ww Wireless wide area network (WWAN) + + mc + Management Component Transport Protocol (MCTP) + @@ -561,6 +565,16 @@ + + + v260 + + MCTP interfaces are now assigned persistent names, using a mc + prefix. + + + + Note that latest may be used to denote the latest scheme known (to this diff --git a/src/shared/netif-naming-scheme.c b/src/shared/netif-naming-scheme.c index df16e69fb69..607094eecfd 100644 --- a/src/shared/netif-naming-scheme.c +++ b/src/shared/netif-naming-scheme.c @@ -30,6 +30,7 @@ static const NamingScheme naming_schemes[] = { { "v257", NAMING_V257 }, { "v258", NAMING_V258 }, { "v259", NAMING_V259 }, + { "v260", NAMING_V260 }, /* … 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 8448c4e9572..a25b707b1c9 100644 --- a/src/shared/netif-naming-scheme.h +++ b/src/shared/netif-naming-scheme.h @@ -43,6 +43,7 @@ typedef enum NamingSchemeFlags { NAMING_DEVICETREE_PORT_ALIASES = 1 << 19, /* Include aliases of OF nodes of a netdev itself, not just its parent. See PR #33958. */ NAMING_USE_INTERFACE_PROPERTY = 1 << 20, /* Use INTERFACE udev property, rather than sysname, when no renaming is requested. */ NAMING_DEVICETREE_ALIASES_WLAN = 1 << 21, /* Generate names from devicetree aliases for WLAN devices */ + NAMING_MCTP = 1 << 22, /* Use "mc" prefix for MCTP devices */ /* And now the masks that combine the features above */ NAMING_V238 = 0, @@ -65,6 +66,7 @@ typedef enum NamingSchemeFlags { NAMING_V257 = NAMING_V255 | NAMING_FIRMWARE_NODE_SUN | NAMING_DEVICETREE_PORT_ALIASES, NAMING_V258 = NAMING_V257 | NAMING_USE_INTERFACE_PROPERTY, NAMING_V259 = NAMING_V258 | NAMING_DEVICETREE_ALIASES_WLAN, + NAMING_V260 = NAMING_V259 | NAMING_MCTP, EXTRA_NET_NAMING_SCHEMES diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index a41ecb1d43c..d93849f3326 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -1307,7 +1307,7 @@ static int get_ifname_prefix(sd_device *dev, const char **ret) { if (r < 0) return r; - /* handle only ARPHRD_ETHER, ARPHRD_SLIP and ARPHRD_INFINIBAND devices */ + /* handle only ARPHRD_ETHER, ARPHRD_SLIP, ARPHRD_INFINIBAND, and ARPHDR_MCTP devices */ switch (iftype) { case ARPHRD_ETHER: { if (device_is_devtype(dev, "wlan") > 0) @@ -1329,6 +1329,13 @@ static int get_ifname_prefix(sd_device *dev, const char **ret) { *ret = "sl"; return 0; + case ARPHRD_MCTP: + if (!naming_scheme_has(NAMING_MCTP)) + return -EOPNOTSUPP; + + *ret = "mc"; + return 0; + default: return -EOPNOTSUPP; } -- 2.47.3