From d03cb6b85d120ea886bb03a84c141bff4e62a80a Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 20 Nov 2020 22:48:59 +0900 Subject: [PATCH 1/3] link-config: make MACAddressPolicy= accept an empty string --- src/udev/net/link-config.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c index afb2cd4d1c..0519635748 100644 --- a/src/udev/net/link-config.c +++ b/src/udev/net/link-config.c @@ -668,8 +668,12 @@ static const char* const mac_address_policy_table[_MAC_ADDRESS_POLICY_MAX] = { }; DEFINE_STRING_TABLE_LOOKUP(mac_address_policy, MACAddressPolicy); -DEFINE_CONFIG_PARSE_ENUM(config_parse_mac_address_policy, mac_address_policy, MACAddressPolicy, - "Failed to parse MAC address policy"); +DEFINE_CONFIG_PARSE_ENUM_WITH_DEFAULT( + config_parse_mac_address_policy, + mac_address_policy, + MACAddressPolicy, + MAC_ADDRESS_POLICY_NONE, + "Failed to parse MAC address policy"); static const char* const name_policy_table[_NAMEPOLICY_MAX] = { [NAMEPOLICY_KERNEL] = "kernel", From a7a12bf4040cd140376bb12700d3920884bc803c Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 20 Nov 2020 22:58:23 +0900 Subject: [PATCH 2/3] link-config: warn when MACAddress= is set with MACAddressPolicy=persistent or random --- src/udev/net/link-config.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c index 0519635748..d12fd0e299 100644 --- a/src/udev/net/link-config.c +++ b/src/udev/net/link-config.c @@ -181,6 +181,13 @@ int link_load_one(link_config_ctx *ctx, const char *filename) { return 0; } + if (IN_SET(link->mac_address_policy, MAC_ADDRESS_POLICY_PERSISTENT, MAC_ADDRESS_POLICY_RANDOM) && link->mac) { + log_warning("%s: MACAddress= in [Link] section will be ignored when MACAddressPolicy= " + "is set to \"persistent\" or \"random\".", + filename); + link->mac = mfree(link->mac); + } + log_debug("Parsed configuration file %s", filename); LIST_PREPEND(links, ctx->links, TAKE_PTR(link)); From 6ca4a070778e3f6c049c59b29a4432ea4c2d72fb Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 20 Nov 2020 22:43:45 +0900 Subject: [PATCH 3/3] man: to make MACAddress= take effect, MACAddressPolicy= must be "none" --- man/systemd.link.xml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/man/systemd.link.xml b/man/systemd.link.xml index 504977c862..24271ea65a 100644 --- a/man/systemd.link.xml +++ b/man/systemd.link.xml @@ -273,18 +273,21 @@ - Keeps the MAC address assigned by the kernel. + Keeps the MAC address assigned by the kernel. Or use the MAC address specified in + MACAddress=. + + An empty string assignment is equivalent to setting none. MACAddress= - The MAC address to use, if no - MACAddressPolicy= - is specified. + The interface MAC address to use. For this setting to take effect, + MACAddressPolicy= must either be unset, empty, or none. +