diff options
| author | Stefan Christ <s.christ@phytec.de> | 2015-10-13 10:29:13 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-12-08 13:27:12 +0000 |
| commit | f251052c88f1f561cd12948de69d06de30a0823e (patch) | |
| tree | 7bebd1d326e0e06d072bf828e3f3c3052137fd1e /meta | |
| parent | 7d2e4518236726b5a43f48dc56324af53b6a1b06 (diff) | |
| download | poky-f251052c88f1f561cd12948de69d06de30a0823e.tar.gz | |
systemd: fix networking setup when ipv6 modules are missing
If the ipv6 kernel modules are missing, e.g. /lib/modules/<version>
doesn't match the runnig kernel, networkd doesn't bring up the
interfaces correctly. Backport fix from systemd version v220.
(From OE-Core rev: 3db960ef645606226784cbfd994d476892db07fe)
Signed-off-by: Stefan Christ <s.christ@phytec.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
| -rw-r--r-- | meta/recipes-core/systemd/systemd/0016-networkd-fix-IFF_UP-when-ipv6-support-is-disabled.patch | 78 | ||||
| -rw-r--r-- | meta/recipes-core/systemd/systemd_219.bb | 1 |
2 files changed, 79 insertions, 0 deletions
diff --git a/meta/recipes-core/systemd/systemd/0016-networkd-fix-IFF_UP-when-ipv6-support-is-disabled.patch b/meta/recipes-core/systemd/systemd/0016-networkd-fix-IFF_UP-when-ipv6-support-is-disabled.patch new file mode 100644 index 0000000000..72f9a91c2c --- /dev/null +++ b/meta/recipes-core/systemd/systemd/0016-networkd-fix-IFF_UP-when-ipv6-support-is-disabled.patch | |||
| @@ -0,0 +1,78 @@ | |||
| 1 | From b1362f4f60f192aa62effd9c19e0d98b68050f5a Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Tom Gundersen <teg@jklm.no> | ||
| 3 | Date: Tue, 8 Sep 2015 12:53:46 +0200 | ||
| 4 | Subject: [PATCH] networkd: fix IFF_UP when ipv6 support is disabled | ||
| 5 | |||
| 6 | Passing ipv6 options (even when they should be noops) caused IFF_UP to | ||
| 7 | fail when ipv6 was supported. | ||
| 8 | |||
| 9 | Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=90103 | ||
| 10 | |||
| 11 | (Backport from v220 to v219) | ||
| 12 | Signed-off-by: Stefan Christ <s.christ@phytec.de> | ||
| 13 | --- | ||
| 14 | src/network/networkd-link.c | 43 +++++++++++++++++++++++-------------------- | ||
| 15 | 1 file changed, 23 insertions(+), 20 deletions(-) | ||
| 16 | |||
| 17 | diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c | ||
| 18 | index f716e82..1aa1550 100644 | ||
| 19 | --- a/src/network/networkd-link.c | ||
| 20 | +++ b/src/network/networkd-link.c | ||
| 21 | @@ -1104,31 +1104,34 @@ static int link_up(Link *link) { | ||
| 22 | return r; | ||
| 23 | } | ||
| 24 | |||
| 25 | - r = sd_rtnl_message_open_container(req, AF_INET6); | ||
| 26 | - if (r < 0) { | ||
| 27 | - log_link_error(link, "Could not open AF_INET6 container: %s", strerror(-r)); | ||
| 28 | - return r; | ||
| 29 | - } | ||
| 30 | - | ||
| 31 | - ipv6ll_mode = link_ipv6ll_enabled(link) ? IN6_ADDR_GEN_MODE_EUI64 : IN6_ADDR_GEN_MODE_NONE; | ||
| 32 | - r = sd_rtnl_message_append_u8(req, IFLA_INET6_ADDR_GEN_MODE, ipv6ll_mode); | ||
| 33 | - if (r < 0) { | ||
| 34 | - log_link_error(link, "Could not append IFLA_INET6_ADDR_GEN_MODE: %s", strerror(-r)); | ||
| 35 | - return r; | ||
| 36 | - } | ||
| 37 | + if (socket_ipv6_is_supported()) { | ||
| 38 | + /* if the kernel lacks ipv6 support setting IFF_UP fails if any ipv6 options are passed */ | ||
| 39 | + r = sd_rtnl_message_open_container(req, AF_INET6); | ||
| 40 | + if (r < 0) { | ||
| 41 | + log_link_error(link, "Could not open AF_INET6 container: %s", strerror(-r)); | ||
| 42 | + return r; | ||
| 43 | + } | ||
| 44 | |||
| 45 | - if (!in_addr_is_null(AF_INET6, &link->network->ipv6_token)) { | ||
| 46 | - r = sd_rtnl_message_append_in6_addr(req, IFLA_INET6_TOKEN, &link->network->ipv6_token.in6); | ||
| 47 | + ipv6ll_mode = link_ipv6ll_enabled(link) ? IN6_ADDR_GEN_MODE_EUI64 : IN6_ADDR_GEN_MODE_NONE; | ||
| 48 | + r = sd_rtnl_message_append_u8(req, IFLA_INET6_ADDR_GEN_MODE, ipv6ll_mode); | ||
| 49 | if (r < 0) { | ||
| 50 | - log_link_error(link, "Could not append IFLA_INET6_TOKEN: %s", strerror(-r)); | ||
| 51 | + log_link_error(link, "Could not append IFLA_INET6_ADDR_GEN_MODE: %s", strerror(-r)); | ||
| 52 | return r; | ||
| 53 | } | ||
| 54 | - } | ||
| 55 | |||
| 56 | - r = sd_rtnl_message_close_container(req); | ||
| 57 | - if (r < 0) { | ||
| 58 | - log_link_error(link, "Could not close AF_INET6 container: %s", strerror(-r)); | ||
| 59 | - return r; | ||
| 60 | + if (!in_addr_is_null(AF_INET6, &link->network->ipv6_token)) { | ||
| 61 | + r = sd_rtnl_message_append_in6_addr(req, IFLA_INET6_TOKEN, &link->network->ipv6_token.in6); | ||
| 62 | + if (r < 0) { | ||
| 63 | + log_link_error(link, "Could not append IFLA_INET6_TOKEN: %s", strerror(-r)); | ||
| 64 | + return r; | ||
| 65 | + } | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + r = sd_rtnl_message_close_container(req); | ||
| 69 | + if (r < 0) { | ||
| 70 | + log_link_error(link, "Could not close AF_INET6 container: %s", strerror(-r)); | ||
| 71 | + return r; | ||
| 72 | + } | ||
| 73 | } | ||
| 74 | |||
| 75 | r = sd_rtnl_message_close_container(req); | ||
| 76 | -- | ||
| 77 | 1.9.1 | ||
| 78 | |||
diff --git a/meta/recipes-core/systemd/systemd_219.bb b/meta/recipes-core/systemd/systemd_219.bb index a8b5ae1103..57cbe08346 100644 --- a/meta/recipes-core/systemd/systemd_219.bb +++ b/meta/recipes-core/systemd/systemd_219.bb | |||
| @@ -43,6 +43,7 @@ SRC_URI = "git://github.com/systemd/systemd-stable;branch=v219-stable;protocol=g | |||
| 43 | file://0012-systemd-tmpfiles.c-Honor-ordering-within-files-as-th.patch \ | 43 | file://0012-systemd-tmpfiles.c-Honor-ordering-within-files-as-th.patch \ |
| 44 | file://0014-Revert-rules-remove-firmware-loading-rules.patch \ | 44 | file://0014-Revert-rules-remove-firmware-loading-rules.patch \ |
| 45 | file://0015-Revert-udev-remove-userspace-firmware-loading-suppor.patch \ | 45 | file://0015-Revert-udev-remove-userspace-firmware-loading-suppor.patch \ |
| 46 | file://0016-networkd-fix-IFF_UP-when-ipv6-support-is-disabled.patch \ | ||
| 46 | file://tmpfiles-pam.patch \ | 47 | file://tmpfiles-pam.patch \ |
| 47 | file://0001-Revert-core-mount-add-dependencies-to-dynamically-mo.patch \ | 48 | file://0001-Revert-core-mount-add-dependencies-to-dynamically-mo.patch \ |
| 48 | file://touchscreen.rules \ | 49 | file://touchscreen.rules \ |
