fix breaking on older kernels due to IFA_FLAGS attribute
Resolves: #1063885
This commit is contained in:
parent
53601fc4dd
commit
92602dbecc
52
0001.ifa_flags-workaround.patch
Normal file
52
0001.ifa_flags-workaround.patch
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
From dce5f1ce978118ed4a8384c151f5ce720ab1f5df Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Haller <thaller@redhat.com>
|
||||||
|
Date: Thu, 3 Apr 2014 18:09:51 +0200
|
||||||
|
Subject: [PATCH 1/1] route/addr: only sent IFA_FLAGS when needed to workaround
|
||||||
|
picky older kernels
|
||||||
|
|
||||||
|
Older kernels don't accept receiving unknown netlink attributes.
|
||||||
|
See net/core/rtnetlink.c, rtnetlink_rcv_msg(). This was fixed by kernel
|
||||||
|
commit 661d2967b3f1b34eeaa7e212e7b9bbe8ee072b59.
|
||||||
|
|
||||||
|
As a workaround, only set the additional attributes, when the user
|
||||||
|
provided flags that makes this necessary and useful.
|
||||||
|
|
||||||
|
https://github.com/thom311/libnl/issues/56
|
||||||
|
https://bugzilla.redhat.com/show_bug.cgi?id=1063885
|
||||||
|
|
||||||
|
Based-on-patch-by: Pavel Kankovsky <peak@argo.troja.mff.cuni.cz>
|
||||||
|
Acked-by: Thomas Graf <tgraf@suug.ch>
|
||||||
|
Signed-off-by: Thomas Haller <thaller@redhat.com>
|
||||||
|
(cherry picked from commit 5206c050504f8676a24854519b9c351470fb7cc6)
|
||||||
|
---
|
||||||
|
lib/route/addr.c | 14 +++++++++++++-
|
||||||
|
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lib/route/addr.c b/lib/route/addr.c
|
||||||
|
index 97905f0..e6e91d2 100644
|
||||||
|
--- a/lib/route/addr.c
|
||||||
|
+++ b/lib/route/addr.c
|
||||||
|
@@ -598,7 +598,19 @@ static int build_addr_msg(struct rtnl_addr *tmpl, int cmd, int flags,
|
||||||
|
NLA_PUT(msg, IFA_CACHEINFO, sizeof(ca), &ca);
|
||||||
|
}
|
||||||
|
|
||||||
|
- NLA_PUT_U32(msg, IFA_FLAGS, tmpl->a_flags);
|
||||||
|
+ if (tmpl->a_flags & ~0xFF) {
|
||||||
|
+ /* only set the IFA_FLAGS attribute, if they actually contain additional
|
||||||
|
+ * flags that are not already set to am.ifa_flags.
|
||||||
|
+ *
|
||||||
|
+ * Older kernels refuse RTM_NEWADDR and RTM_NEWROUTE messages with EINVAL
|
||||||
|
+ * if they contain unknown netlink attributes. See net/core/rtnetlink.c, which
|
||||||
|
+ * was fixed by kernel commit 661d2967b3f1b34eeaa7e212e7b9bbe8ee072b59.
|
||||||
|
+ *
|
||||||
|
+ * With this workaround, libnl will function correctly with older kernels,
|
||||||
|
+ * unless there is a new libnl user that wants to set these flags. In this
|
||||||
|
+ * case it's up to the user to workaround this issue. */
|
||||||
|
+ NLA_PUT_U32(msg, IFA_FLAGS, tmpl->a_flags);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
*result = msg;
|
||||||
|
return 0;
|
||||||
|
--
|
||||||
|
1.9.0
|
||||||
|
|
@ -3,10 +3,11 @@ Group: Development/Libraries
|
|||||||
License: LGPLv2
|
License: LGPLv2
|
||||||
Name: libnl3
|
Name: libnl3
|
||||||
Version: 3.2.24
|
Version: 3.2.24
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
URL: http://www.infradead.org/~tgr/libnl/
|
URL: http://www.infradead.org/~tgr/libnl/
|
||||||
Source: http://www.infradead.org/~tgr/libnl/files/libnl-%{version}.tar.gz
|
Source: http://www.infradead.org/~tgr/libnl/files/libnl-%{version}.tar.gz
|
||||||
Source1: http://www.infradead.org/~tgr/libnl/files/libnl-doc-%{version}.tar.gz
|
Source1: http://www.infradead.org/~tgr/libnl/files/libnl-doc-%{version}.tar.gz
|
||||||
|
Patch1: 0001.ifa_flags-workaround.patch
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||||
BuildRequires: flex bison
|
BuildRequires: flex bison
|
||||||
BuildRequires: python
|
BuildRequires: python
|
||||||
@ -45,6 +46,7 @@ This package contains libnl3 API documentation
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n libnl-%{version}
|
%setup -q -n libnl-%{version}
|
||||||
|
%patch1 -p1 -b .0001.ifa_flags-workaround.orig
|
||||||
|
|
||||||
tar -xzf %SOURCE1
|
tar -xzf %SOURCE1
|
||||||
|
|
||||||
@ -97,6 +99,9 @@ find $RPM_BUILD_ROOT -name \*.la -delete
|
|||||||
%doc libnl-doc-%{version}/api/*
|
%doc libnl-doc-%{version}/api/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Apr 4 2014 Thomas Haller <thaller@redhat.com> - 3.2.24-2
|
||||||
|
- fix breaking on older kernels due to IFA_FLAGS attribute (rh #1063885)
|
||||||
|
|
||||||
* Thu Jan 23 2014 Thomas Haller <thaller@redhat.com> - 3.2.24-1
|
* Thu Jan 23 2014 Thomas Haller <thaller@redhat.com> - 3.2.24-1
|
||||||
- Update to 3.2.24 (rhbz#963111)
|
- Update to 3.2.24 (rhbz#963111)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user