From 2f6d87e6a528a8545490ae6579d180a6fffaec3bab984a028504ec8026a32e29 Mon Sep 17 00:00:00 2001 From: "Dr. Werner Fink" Date: Thu, 18 Dec 2014 13:53:53 +0000 Subject: [PATCH] . OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=838 --- ...up-respect-kernel-name-assign-policy.patch | 88 ++++--------------- systemd-mini.changes | 8 ++ systemd-mini.spec | 8 +- systemd.changes | 8 ++ systemd.spec | 8 +- 5 files changed, 36 insertions(+), 84 deletions(-) diff --git a/1098-udev-link_setup-respect-kernel-name-assign-policy.patch b/1098-udev-link_setup-respect-kernel-name-assign-policy.patch index 0e13a3ef..6772f650 100644 --- a/1098-udev-link_setup-respect-kernel-name-assign-policy.patch +++ b/1098-udev-link_setup-respect-kernel-name-assign-policy.patch @@ -17,9 +17,11 @@ claims to have named in a predictable way. src/udev/net/link-config.h | 1 5 files changed, 79 insertions(+), 11 deletions(-) ---- man/udev.xml +Index: man/udev.xml +=================================================================== +--- man/udev.xml.orig +++ man/udev.xml -@@ -914,10 +914,21 @@ +@@ -914,10 +914,12 @@ successful one is used. The name is not set directly, but is exported to udev as the property ID_NET_NAME, which is, by default, used by a udev rule to set @@ -29,27 +31,14 @@ claims to have named in a predictable way. + The available policies are: - -+ kernel -+ -+ If the kernel claims that the name it -+ has set for a device is predictable, then -+ no renaming is performed. -+ -+ -+ -+ +- ++ database The name is set based on entries in the Hardware ---- network/99-default.link -+++ network/99-default.link -@@ -1,3 +1,3 @@ - [Link] --NamePolicy=database onboard slot path -+NamePolicy=kernel database onboard slot path - MACAddressPolicy=persistent ---- src/shared/missing.h +Index: src/shared/missing.h +=================================================================== +--- src/shared/missing.h.orig +++ src/shared/missing.h @@ -362,3 +362,24 @@ static inline int setns(int fd, int nsty return syscall(__NR_setns, fd, nstype); @@ -76,9 +65,11 @@ claims to have named in a predictable way. +# define NET_NAME_RENAMED 4 +#endif + ---- src/udev/net/link-config.c +Index: src/udev/net/link-config.c +=================================================================== +--- src/udev/net/link-config.c.orig +++ src/udev/net/link-config.c -@@ -20,10 +20,11 @@ +@@ -20,10 +20,11 @@ ***/ #include @@ -91,7 +82,7 @@ claims to have named in a predictable way. #include "link-config.h" #include "ethtool-util.h" -@@ -297,23 +298,33 @@ static bool mac_is_random(struct udev_de +@@ -297,23 +298,30 @@ static bool mac_is_random(struct udev_de return false; /* check for NET_ADDR_RANDOM */ @@ -100,7 +91,7 @@ claims to have named in a predictable way. } -static bool mac_is_permanent(struct udev_device *device) { -+static bool should_rename(struct udev_device *device, bool respect_predictable) { ++static bool should_rename(struct udev_device *device) { const char *s; unsigned type; int r; @@ -121,9 +112,6 @@ claims to have named in a predictable way. + case NET_NAME_RENAMED: + return false; /* these were already named by userspace, do not touch again */ + case NET_NAME_PREDICTABLE: -+ if (respect_predictable) -+ return false; /* the kernel claims to have given a predictable name */ -+ /* fall through */ + case NET_NAME_ENUM: + default: + return true; /* the name is known to be bad, or of an unknown type */ @@ -131,29 +119,7 @@ claims to have named in a predictable way. } #define HASH_KEY SD_ID128_MAKE(d3,1e,48,fa,90,fe,4b,4c,9d,af,d5,d7,a1,b1,2e,8a) -@@ -371,6 +382,7 @@ int link_config_apply(link_config_ctx *c - const char *new_name = NULL; - struct ether_addr generated_mac; - struct ether_addr *mac = NULL; -+ bool respect_predictable = false; - int r, ifindex; - - assert(ctx); -@@ -406,8 +418,12 @@ int link_config_apply(link_config_ctx *c - if (ctx->enable_name_policy && config->name_policy) { - NamePolicy *policy; - -- for (policy = config->name_policy; !new_name && *policy != _NAMEPOLICY_INVALID; policy++) { -+ for (policy = config->name_policy; !respect_predictable && !new_name && -+ *policy != _NAMEPOLICY_INVALID; policy++) { - switch (*policy) { -+ case NAMEPOLICY_KERNEL: -+ respect_predictable = true; -+ break; - case NAMEPOLICY_DATABASE: - new_name = udev_device_get_property_value(device, "ID_NET_NAME_FROM_DATABASE"); - break; -@@ -429,16 +445,16 @@ int link_config_apply(link_config_ctx *c +@@ -429,16 +437,16 @@ int link_config_apply(link_config_ctx *c } } @@ -163,7 +129,7 @@ claims to have named in a predictable way. - *name = config->name; /* a name was set manually in the config */ - else - *name = NULL; -+ if (should_rename(device, respect_predictable)) { ++ if (should_rename(device)) { + if (!new_name) + /* if not set by policy, fall back manually set name */ + new_name = config->name; @@ -177,7 +143,7 @@ claims to have named in a predictable way. r = get_mac(device, false, &generated_mac); if (r == -ENOENT) break; -@@ -467,6 +483,8 @@ int link_config_apply(link_config_ctx *c +@@ -467,6 +475,8 @@ int link_config_apply(link_config_ctx *c return r; } @@ -186,21 +152,3 @@ claims to have named in a predictable way. return 0; } -@@ -500,6 +518,7 @@ DEFINE_STRING_TABLE_LOOKUP(mac_policy, M - DEFINE_CONFIG_PARSE_ENUM(config_parse_mac_policy, mac_policy, MACPolicy, "Failed to parse MAC address policy"); - - static const char* const name_policy_table[] = { -+ [NAMEPOLICY_KERNEL] = "kernel", - [NAMEPOLICY_DATABASE] = "database", - [NAMEPOLICY_ONBOARD] = "onboard", - [NAMEPOLICY_SLOT] = "slot", ---- src/udev/net/link-config.h -+++ src/udev/net/link-config.h -@@ -39,6 +39,7 @@ typedef enum MACPolicy { - } MACPolicy; - - typedef enum NamePolicy { -+ NAMEPOLICY_KERNEL, - NAMEPOLICY_DATABASE, - NAMEPOLICY_ONBOARD, - NAMEPOLICY_SLOT, diff --git a/systemd-mini.changes b/systemd-mini.changes index d2bbccbf..f3cc341f 100644 --- a/systemd-mini.changes +++ b/systemd-mini.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Thu Dec 18 13:47:36 UTC 2014 - werner@suse.de + +- Use Robert's latest patch + 1098-udev-link_setup-respect-kernel-name-assign-policy.patch + which drops NAMEPOLICY_KERNEL as this breaks all on current + systems out there + ------------------------------------------------------------------- Wed Dec 17 14:57:42 UTC 2014 - thomas.blume@suse.com diff --git a/systemd-mini.spec b/systemd-mini.spec index 7bfb5876..3bfaeabf 100644 --- a/systemd-mini.spec +++ b/systemd-mini.spec @@ -168,7 +168,7 @@ Requires(pre): /usr/bin/getent Requires(pre): /usr/sbin/groupadd Requires(post): /usr/bin/awk Requires(post): /usr/bin/getent -Requires(post): /usr/bin/setfacl +Requires(post): /usr/bin/setfacl Conflicts: filesystem < 11.5 Conflicts: mkinitrd < 2.7.0 Obsoletes: systemd-analyze < 201 @@ -2158,12 +2158,6 @@ export LDFLAGS do sed -ri '/^ENV\{net.ifnames\}=="1", GOTO="[^"]*"$/{ s/=="1"/!="0"/ }' src/udev/rule_generator/${rules}.rules done -%if 0%{?suse_version} <= 1320 - for link in 99-default - do - sed -ri '/^NamePolicy=/{ s/kernel[[:blank:]]+// }' network/${link}.link - done -%endif %endif cflags -pipe CFLAGS cflags -Wl,-O2 LDFLAGS diff --git a/systemd.changes b/systemd.changes index d2bbccbf..f3cc341f 100644 --- a/systemd.changes +++ b/systemd.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Thu Dec 18 13:47:36 UTC 2014 - werner@suse.de + +- Use Robert's latest patch + 1098-udev-link_setup-respect-kernel-name-assign-policy.patch + which drops NAMEPOLICY_KERNEL as this breaks all on current + systems out there + ------------------------------------------------------------------- Wed Dec 17 14:57:42 UTC 2014 - thomas.blume@suse.com diff --git a/systemd.spec b/systemd.spec index 01feb14d..2107f0e3 100644 --- a/systemd.spec +++ b/systemd.spec @@ -163,7 +163,7 @@ Requires(pre): /usr/bin/getent Requires(pre): /usr/sbin/groupadd Requires(post): /usr/bin/awk Requires(post): /usr/bin/getent -Requires(post): /usr/bin/setfacl +Requires(post): /usr/bin/setfacl Conflicts: filesystem < 11.5 Conflicts: mkinitrd < 2.7.0 Obsoletes: systemd-analyze < 201 @@ -2153,12 +2153,6 @@ export LDFLAGS do sed -ri '/^ENV\{net.ifnames\}=="1", GOTO="[^"]*"$/{ s/=="1"/!="0"/ }' src/udev/rule_generator/${rules}.rules done -%if 0%{?suse_version} <= 1320 - for link in 99-default - do - sed -ri '/^NamePolicy=/{ s/kernel[[:blank:]]+// }' network/${link}.link - done -%endif %endif cflags -pipe CFLAGS cflags -Wl,-O2 LDFLAGS