1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-01 17:51:22 +03:00

Revert "Always rename an interface to its name specified in config if no NamePolicy= is specified"

This reverts commit 55b6530baa.

This commit description says "Always rename an interface to its name specified
in config if no NamePolicy= is specified", but it does much more:
1. It completely changes the meaning of NamePolicy=kernel. Before, it meant that an interface
   with type==NAMEPOLICY_KERNEL would not be renamed. After, the kernel name only works as
   a fallback, if no policy matches.
2. The "if no NamePolicy= is specified" part is not true at all, the interface will be renamed
   according to the specified NamePolicy=.

After 55b6530baa, the should_rename() function is named very misleadingly: it is only used
to mean "respect kernel predictable name if no naming policy matches".

Let's revert, and start with a clean slate. This fixes #11436.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2019-01-16 13:28:41 +01:00
parent 850115b3a1
commit ed30802324

View File

@ -310,11 +310,16 @@ static bool should_rename(sd_device *device, bool respect_predictable) {
return true; return true;
switch (type) { switch (type) {
case NET_NAME_USER:
case NET_NAME_RENAMED:
/* these were already named by userspace, do not touch again */
return false;
case NET_NAME_PREDICTABLE: case NET_NAME_PREDICTABLE:
/* the kernel claims to have given a predictable name */ /* the kernel claims to have given a predictable name */
if (respect_predictable) if (respect_predictable)
return false; return false;
_fallthrough_; _fallthrough_;
case NET_NAME_ENUM:
default: default:
/* the name is known to be bad, or of an unknown type */ /* the name is known to be bad, or of an unknown type */
return true; return true;
@ -435,8 +440,12 @@ int link_config_apply(link_config_ctx *ctx, link_config *config,
} }
} }
if (!new_name && should_rename(device, respect_predictable)) if (should_rename(device, respect_predictable)) {
new_name = config->name; /* if not set by policy, fall back manually set name */
if (!new_name)
new_name = config->name;
} else
new_name = NULL;
switch (config->mac_policy) { switch (config->mac_policy) {
case MACPOLICY_PERSISTENT: case MACPOLICY_PERSISTENT: