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) {