summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-09-29 16:32:23 (GMT)
committerThomas Haller <thaller@redhat.com>2015-09-29 16:35:34 (GMT)
commit2a8a7c31e6accf1a22caebace8da4c03028d5500 (patch)
tree45d2be219c2c76e5087ab9f473bf04efa5f0a811
parent8d47c047a8e5e90caa9be9d118f876c224db754f (diff)
downloadlibnl-2a8a7c31e6accf1a22caebace8da4c03028d5500.zip
libnl-2a8a7c31e6accf1a22caebace8da4c03028d5500.tar.gz
libnl-2a8a7c31e6accf1a22caebace8da4c03028d5500.tar.bz2
route: add capability indicating the behavior of rtnl_neigh_get()
A wrong behavior for rtnl_neigh_get() was introduced between 3.2.14 and 3.2.15 (commit 64fcb47a36ec12d7e7f00605f6a8952ce985dd08). It was later fixed between 3.2.21 and 3.2.22 (commit 8571f58f23763d8db7365d02c9b27832ad3d7005). Add a capability NL_CAPABILITY_RTNL_NEIGH_GET_FILTER_AF_UNSPEC_FIX to indicate that this buggy behavior was fixed. https://bugzilla.redhat.com/show_bug.cgi?id=1261028 http://lists.infradead.org/pipermail/libnl/2015-August/001951.html Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r--include/netlink/utils.h8
-rw-r--r--lib/utils.c2
2 files changed, 9 insertions, 1 deletions
diff --git a/include/netlink/utils.h b/include/netlink/utils.h
index 74b167b..ceef615 100644
--- a/include/netlink/utils.h
+++ b/include/netlink/utils.h
@@ -151,6 +151,14 @@ enum {
NL_CAPABILITY_LINK_BUILD_CHANGE_REQUEST_SET_CHANGE = 9,
#define NL_CAPABILITY_LINK_BUILD_CHANGE_REQUEST_SET_CHANGE NL_CAPABILITY_LINK_BUILD_CHANGE_REQUEST_SET_CHANGE
+ /**
+ * Between 3.2.14 (64fcb47a36ec12d7e7f00605f6a8952ce985dd08) and 3.2.22 (8571f58f23763d8db7365d02c9b27832ad3d7005),
+ * rtnl_neigh_get() behaved differently and only returned objects with family AF_UNSPEC.
+ * This capability indicates, that the function was fixed. The absense of the capability,
+ * doesn't indicate however which behavior the function will have. So beware. */
+ NL_CAPABILITY_RTNL_NEIGH_GET_FILTER_AF_UNSPEC_FIX = 10,
+#define NL_CAPABILITY_RTNL_NEIGH_GET_FILTER_AF_UNSPEC_FIX NL_CAPABILITY_RTNL_NEIGH_GET_FILTER_AF_UNSPEC_FIX
+
__NL_CAPABILITY_MAX,
NL_CAPABILITY_MAX = (__NL_CAPABILITY_MAX - 1),
#define NL_CAPABILITY_MAX NL_CAPABILITY_MAX
diff --git a/lib/utils.c b/lib/utils.c
index bde176b..1fabcdb 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -1153,7 +1153,7 @@ int nl_has_capability (int capability)
NL_CAPABILITY_NL_RECV_FAIL_TRUNC_NO_PEEK),
_NL_SET(1,
NL_CAPABILITY_LINK_BUILD_CHANGE_REQUEST_SET_CHANGE,
- 0,
+ NL_CAPABILITY_RTNL_NEIGH_GET_FILTER_AF_UNSPEC_FIX,
0,
0,
0,