mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-22 22:03:43 +03:00
network,udev: refuse .link and .network settings with no matches
Two releases ago we started warning about this, and I think it is now to turn this into a hard error. People get bitten by this every once in a while, and there doesn't see to be any legitimate use case where the same .link or .network files should be applied to _all_ interfaces, since in particular that configuration would apply both to lo and any other interfaces. And if for whatever reason that is actually desired, OriginalName=* or Name=* can be easily added to silence the warning and achieve the effect. (The case described in #12098 is particularly nasty: 'echo -n >foo.network' creates a mask file, 'echo >foo.network' creates a "match all" file.) Fixes #717, #12098 for realz now.
This commit is contained in:
parent
e519e20ae1
commit
dade734917
@ -164,10 +164,10 @@ int network_verify(Network *network) {
|
|||||||
strv_isempty(network->match_path) && strv_isempty(network->match_driver) &&
|
strv_isempty(network->match_path) && strv_isempty(network->match_driver) &&
|
||||||
strv_isempty(network->match_type) && strv_isempty(network->match_name) &&
|
strv_isempty(network->match_type) && strv_isempty(network->match_name) &&
|
||||||
strv_isempty(network->match_property) && strv_isempty(network->match_ssid) && !network->conditions)
|
strv_isempty(network->match_property) && strv_isempty(network->match_ssid) && !network->conditions)
|
||||||
log_warning("%s: No valid settings found in the [Match] section. "
|
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||||
"The file will match all interfaces. "
|
"%s: No valid settings found in the [Match] section, ignoring file. "
|
||||||
"If that is intended, please add Name=* in the [Match] section.",
|
"To match all interfaces, add Name=* in the [Match] section.",
|
||||||
network->filename);
|
network->filename);
|
||||||
|
|
||||||
/* skip out early if configuration does not match the environment */
|
/* skip out early if configuration does not match the environment */
|
||||||
if (!condition_test_list(network->conditions, NULL, NULL, NULL))
|
if (!condition_test_list(network->conditions, NULL, NULL, NULL))
|
||||||
|
@ -165,11 +165,12 @@ int link_load_one(link_config_ctx *ctx, const char *filename) {
|
|||||||
|
|
||||||
if (set_isempty(link->match_mac) && set_isempty(link->match_permanent_mac) &&
|
if (set_isempty(link->match_mac) && set_isempty(link->match_permanent_mac) &&
|
||||||
strv_isempty(link->match_path) && strv_isempty(link->match_driver) && strv_isempty(link->match_type) &&
|
strv_isempty(link->match_path) && strv_isempty(link->match_driver) && strv_isempty(link->match_type) &&
|
||||||
strv_isempty(link->match_name) && strv_isempty(link->match_property) && !link->conditions)
|
strv_isempty(link->match_name) && strv_isempty(link->match_property) && !link->conditions) {
|
||||||
log_warning("%s: No valid settings found in the [Match] section. "
|
log_warning("%s: No valid settings found in the [Match] section, ignoring file. "
|
||||||
"The file will match all interfaces. "
|
"To match all interfaces, add OriginalName=* in the [Match] section.",
|
||||||
"If that is intended, please add OriginalName=* in the [Match] section.",
|
|
||||||
filename);
|
filename);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (!condition_test_list(link->conditions, NULL, NULL, NULL)) {
|
if (!condition_test_list(link->conditions, NULL, NULL, NULL)) {
|
||||||
log_debug("%s: Conditions do not match the system environment, skipping.", filename);
|
log_debug("%s: Conditions do not match the system environment, skipping.", filename);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user