diff --git a/NEWS b/NEWS
index 7ab2c88db9..c469ad650c 100644
--- a/NEWS
+++ b/NEWS
@@ -60,6 +60,13 @@ CHANGES WITH 255 in spe:
is now dropped, as it never worked, hence it should not be used by
anyone.
+ * The predictable network interface naming logic is extended to include
+ the SR-IOV-R "representor" information in network interface names.
+ This feature was intended for v254, but even though the code was
+ merged, the part that actually enabled the feature was forgotten.
+ It is now enabled by default and is part of the new "v255" naming
+ scheme.
+
Changes in systemd-analyze:
* "systemd-analyze plot" has gained tooltips on each unit name with
@@ -576,8 +583,11 @@ CHANGES WITH 254:
selects the default value of the per-network setting of the same
name.
- * The predictable network interface naming logic will now include
- SR-IOV-R "representor" information in network interface names.
+ * The predictable network interface naming logic was extended to
+ include SR-IOV-R "representor" information in network interface
+ names. Unfortunately, this feature was not enabled by default and can
+ only be enabled at compilation time by setting
+ -Ddefault-net-naming-scheme=v254.
* The DHCPv4 + DHCPv6 + IPv6 RA logic in networkd gained support for
the RFC8910 captive portal option.
diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml
index 8932c11f05..0eba646804 100644
--- a/man/systemd.net-naming-scheme.xml
+++ b/man/systemd.net-naming-scheme.xml
@@ -505,13 +505,23 @@
v254
- Naming was changed for SR-IOV virtual device representors.
+ Naming was changed for SR-IOV virtual device representors, optionally settable at
+ compilation time. The rslot suffix was added to
+ differentiate SR-IOV virtual device representors attached to a single physical device interface.
+ Because of a mistake, this scheme was not the the default scheme for systemd version
+ 254.
- The rslot suffix was added to differentiate SR-IOV
- virtual device representors attached to a single physical device interface.
-
+
+
+
-
+
+ v255
+
+ Naming was changed for SR-IOV virtual device representors to enable the
+ change introduced in v254 by default.
+
+
diff --git a/meson.build b/meson.build
index f66eae2cb0..356e1839e9 100644
--- a/meson.build
+++ b/meson.build
@@ -767,10 +767,12 @@ conf.set('EXTRA_NET_NAMING_SCHEMES', ' '.join(extra_net_naming_schemes))
conf.set('EXTRA_NET_NAMING_MAP', ' '.join(extra_net_naming_map))
default_net_naming_scheme = get_option('default-net-naming-scheme')
-conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
+conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme,
+ description : 'Default naming scheme as a string')
if default_net_naming_scheme != 'latest'
- conf.set('_DEFAULT_NET_NAMING_SCHEME_TEST',
- 'NAMING_' + default_net_naming_scheme.underscorify().to_upper())
+ conf.set('_DEFAULT_NET_NAMING_SCHEME',
+ 'NAMING_' + default_net_naming_scheme.underscorify().to_upper(),
+ description : 'Default naming scheme as a constant')
endif
time_epoch = get_option('time-epoch')
diff --git a/src/shared/netif-naming-scheme.c b/src/shared/netif-naming-scheme.c
index 26f012fe02..fbaf5c5a60 100644
--- a/src/shared/netif-naming-scheme.c
+++ b/src/shared/netif-naming-scheme.c
@@ -6,13 +6,6 @@
#include "string-util.h"
#include "string-table.h"
-#ifdef _DEFAULT_NET_NAMING_SCHEME_TEST
-/* The primary purpose of this check is to verify that _DEFAULT_NET_NAMING_SCHEME_TEST
- * is a valid identifier. If an invalid name is given during configuration, this will
- * fail with a name error. */
-assert_cc(_DEFAULT_NET_NAMING_SCHEME_TEST >= 0);
-#endif
-
static const NamingScheme naming_schemes[] = {
{ "v238", NAMING_V238 },
{ "v239", NAMING_V239 },
@@ -27,6 +20,7 @@ static const NamingScheme naming_schemes[] = {
{ "v252", NAMING_V252 },
{ "v253", NAMING_V253 },
{ "v254", NAMING_V254 },
+ { "v255", NAMING_V255 },
/* … add more schemes here, as the logic to name devices is updated … */
EXTRA_NET_NAMING_MAP
@@ -87,23 +81,23 @@ const NamingScheme* naming_scheme(void) {
}
static const char* const name_policy_table[_NAMEPOLICY_MAX] = {
- [NAMEPOLICY_KERNEL] = "kernel",
- [NAMEPOLICY_KEEP] = "keep",
+ [NAMEPOLICY_KERNEL] = "kernel",
+ [NAMEPOLICY_KEEP] = "keep",
[NAMEPOLICY_DATABASE] = "database",
- [NAMEPOLICY_ONBOARD] = "onboard",
- [NAMEPOLICY_SLOT] = "slot",
- [NAMEPOLICY_PATH] = "path",
- [NAMEPOLICY_MAC] = "mac",
+ [NAMEPOLICY_ONBOARD] = "onboard",
+ [NAMEPOLICY_SLOT] = "slot",
+ [NAMEPOLICY_PATH] = "path",
+ [NAMEPOLICY_MAC] = "mac",
};
DEFINE_STRING_TABLE_LOOKUP(name_policy, NamePolicy);
static const char* const alternative_names_policy_table[_NAMEPOLICY_MAX] = {
[NAMEPOLICY_DATABASE] = "database",
- [NAMEPOLICY_ONBOARD] = "onboard",
- [NAMEPOLICY_SLOT] = "slot",
- [NAMEPOLICY_PATH] = "path",
- [NAMEPOLICY_MAC] = "mac",
+ [NAMEPOLICY_ONBOARD] = "onboard",
+ [NAMEPOLICY_SLOT] = "slot",
+ [NAMEPOLICY_PATH] = "path",
+ [NAMEPOLICY_MAC] = "mac",
};
DEFINE_STRING_TABLE_LOOKUP(alternative_names_policy, NamePolicy);
diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h
index 707c0d26f3..9160e457ed 100644
--- a/src/shared/netif-naming-scheme.h
+++ b/src/shared/netif-naming-scheme.h
@@ -54,7 +54,11 @@ typedef enum NamingSchemeFlags {
NAMING_V251 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT,
NAMING_V252 = NAMING_V251 | NAMING_DEVICETREE_ALIASES,
NAMING_V253 = NAMING_V252 | NAMING_USB_HOST,
- NAMING_V254 = NAMING_V253 | NAMING_SR_IOV_R,
+ NAMING_V254 = NAMING_V253 | NAMING_SR_IOV_R, /* Despite the name, "v254" is NOT the default scheme
+ * for systemd version 254. It was added in a follow-up
+ * patch later. NAMING_SR_IOV_R is enabled by default in
+ * systemd version 255, naming scheme "v255". */
+ NAMING_V255 = NAMING_V254,
EXTRA_NET_NAMING_SCHEMES
diff --git a/src/test/test-net-naming-scheme.c b/src/test/test-net-naming-scheme.c
index 0766170757..f7ec5a6d72 100644
--- a/src/test/test-net-naming-scheme.c
+++ b/src/test/test-net-naming-scheme.c
@@ -4,10 +4,19 @@
#include "string-util.h"
#include "tests.h"
+#ifdef _DEFAULT_NET_NAMING_SCHEME
+/* The primary purpose of this check is to verify that _DEFAULT_NET_NAMING_SCHEME_TEST
+ * is a valid identifier. If an invalid name is given during configuration, this will
+ * fail with a name error. */
+assert_cc(_DEFAULT_NET_NAMING_SCHEME >= 0);
+#endif
+
TEST(default_net_naming_scheme) {
const NamingScheme *n;
assert_se(n = naming_scheme_from_name(DEFAULT_NET_NAMING_SCHEME));
log_info("default → %s", n->name);
+
+ assert_se(naming_scheme_from_name(n->name) == n);
}
TEST(naming_scheme_conversions) {