mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
meson: drop the list of valid net naming schemes
We used 'combo' type for the scheme list. For a while we forgot to add
new names, and recently aa0a23ec86
added v241, v243, v245, and v247.
I want to allow defining new values during configuration, which means
that we can't use meson to verify the list of options. So any value is
allowed, but then two tests are added: one that will fail compilation if some
invalid name is given (other than "latest"), and one that converts
DEFAULT_NET_NAMING_SCHEME to a NamingScheme pointer.
This commit is contained in:
parent
acaa636866
commit
77faadfdd3
@ -709,6 +709,10 @@ endif
|
||||
|
||||
default_net_naming_scheme = get_option('default-net-naming-scheme')
|
||||
conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
|
||||
if default_net_naming_scheme != 'latest'
|
||||
conf.set('_DEFAULT_NET_NAMING_SCHEME_TEST',
|
||||
'NAMING_' + default_net_naming_scheme.underscorify().to_upper())
|
||||
endif
|
||||
|
||||
time_epoch = get_option('time-epoch')
|
||||
if time_epoch == -1
|
||||
|
@ -200,8 +200,7 @@ option('fallback-hostname', type : 'string', value : 'localhost',
|
||||
option('default-hierarchy', type : 'combo',
|
||||
choices : ['legacy', 'hybrid', 'unified'], value : 'unified',
|
||||
description : 'default cgroup hierarchy')
|
||||
option('default-net-naming-scheme', type : 'combo',
|
||||
choices : ['latest', 'v238', 'v239', 'v240', 'v241', 'v243', 'v245', 'v247', 'v249'],
|
||||
option('default-net-naming-scheme', type : 'string', value : 'latest',
|
||||
description : 'default net.naming-scheme= value')
|
||||
option('status-unit-format-default', type : 'combo',
|
||||
choices : ['description', 'name', 'combined'],
|
||||
|
@ -5,6 +5,13 @@
|
||||
#include "proc-cmdline.h"
|
||||
#include "string-util.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 },
|
||||
@ -15,10 +22,9 @@ static const NamingScheme naming_schemes[] = {
|
||||
{ "v247", NAMING_V247 },
|
||||
{ "v249", NAMING_V249 },
|
||||
/* … add more schemes here, as the logic to name devices is updated … */
|
||||
/* also remember to update the list of options in meson_options.txt */
|
||||
};
|
||||
|
||||
static const NamingScheme* naming_scheme_from_name(const char *name) {
|
||||
const NamingScheme* naming_scheme_from_name(const char *name) {
|
||||
if (streq(name, "latest"))
|
||||
return naming_schemes + ELEMENTSOF(naming_schemes) - 1;
|
||||
|
||||
|
@ -54,6 +54,7 @@ typedef struct NamingScheme {
|
||||
NamingSchemeFlags flags;
|
||||
} NamingScheme;
|
||||
|
||||
const NamingScheme* naming_scheme_from_name(const char *name);
|
||||
const NamingScheme* naming_scheme(void);
|
||||
|
||||
static inline bool naming_scheme_has(NamingSchemeFlags flags) {
|
||||
|
@ -429,6 +429,8 @@ tests += [
|
||||
|
||||
[['src/test/test-firewall-util.c']],
|
||||
|
||||
[['src/test/test-net-naming-scheme.c']],
|
||||
|
||||
[['src/test/test-netlink-manual.c'],
|
||||
[],
|
||||
[libkmod],
|
||||
|
31
src/test/test-net-naming-scheme.c
Normal file
31
src/test/test-net-naming-scheme.c
Normal file
@ -0,0 +1,31 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "netif-naming-scheme.h"
|
||||
#include "string-util.h"
|
||||
#include "tests.h"
|
||||
|
||||
static void test_default_net_naming_scheme(void) {
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
const NamingScheme *n;
|
||||
assert_se(n = naming_scheme_from_name(DEFAULT_NET_NAMING_SCHEME));
|
||||
log_info("default → %s", n->name);
|
||||
}
|
||||
|
||||
static void test_naming_scheme_conversions(void) {
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
const NamingScheme *n;
|
||||
assert_se(n = naming_scheme_from_name("latest"));
|
||||
log_info("latest → %s", n->name);
|
||||
|
||||
assert_se(n = naming_scheme_from_name("v238"));
|
||||
assert_se(streq(n->name, "v238"));
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
test_setup_logging(LOG_INFO);
|
||||
|
||||
test_default_net_naming_scheme();
|
||||
test_naming_scheme_conversions();
|
||||
}
|
Loading…
Reference in New Issue
Block a user