1 changed files with 147 additions and 0 deletions
@ -0,0 +1,147 @@ |
|||||||
|
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
||||||
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
||||||
|
#
|
||||||
|
# Filename: package/.../collectd/collectd-5.1.0-netlink-plugin-rtnl_dump_filter-checkarg.patch
|
||||||
|
# Copyright (C) 2012 The OpenSDE Project
|
||||||
|
#
|
||||||
|
# More information can be found in the files COPYING and README.
|
||||||
|
#
|
||||||
|
# This patch file is dual-licensed. It is available under the license the
|
||||||
|
# patched project is licensed under, as long as it is an OpenSource license
|
||||||
|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
|
||||||
|
# of the GNU General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 2 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
# --- SDE-COPYRIGHT-NOTE-END ---
|
||||||
|
|
||||||
|
From 793d766ab645cdb01297889797faf780eb669d40 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sebastian Harl <sh@tokkee.org>
|
||||||
|
Date: Sat, 19 May 2012 12:31:52 +0200
|
||||||
|
Subject: [PATCH 1/1] netlink plugin: Check for the number of arguments to
|
||||||
|
'rtnl_dump_filter'.
|
||||||
|
|
||||||
|
In recent versions of iproute2, 'rtnl_dump_filter' expects three rather than
|
||||||
|
five arguments.
|
||||||
|
|
||||||
|
This should fix Github issue #7.
|
||||||
|
|
||||||
|
Signed-off-by: Florian Forster <octo@collectd.org>
|
||||||
|
---
|
||||||
|
configure.in | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
src/netlink.c | 12 +++++++++++
|
||||||
|
2 files changed, 78 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/configure.in b/configure.in
|
||||||
|
index 1dc23bf..58c9d27 100644
|
||||||
|
--- a/configure.in
|
||||||
|
+++ b/configure.in
|
||||||
|
@@ -2192,6 +2192,72 @@ then
|
||||||
|
fi
|
||||||
|
if test "x$with_libnetlink" = "xyes"
|
||||||
|
then
|
||||||
|
+ SAVE_CFLAGS="$CFLAGS"
|
||||||
|
+ CFLAGS="$CFLAGS $with_libnetlink_cflags"
|
||||||
|
+
|
||||||
|
+ AC_CACHE_CHECK(
|
||||||
|
+ [if function 'rtnl_dump_filter' expects five arguments],
|
||||||
|
+ [c_cv_rtnl_dump_filter_five_args],
|
||||||
|
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
|
+ [
|
||||||
|
+AC_INCLUDES_DEFAULT
|
||||||
|
+#if HAVE_LIBNETLINK_H
|
||||||
|
+# include <libnetlink.h>
|
||||||
|
+#elif HAVE_IPROUTE_LIBNETLINK_H
|
||||||
|
+# include <iproute/libnetlink.h>
|
||||||
|
+#elif HAVE_LINUX_LIBNETLINK_H
|
||||||
|
+# include <linux/libnetlink.h>
|
||||||
|
+#endif
|
||||||
|
+ ],
|
||||||
|
+ [
|
||||||
|
+if (rtnl_dump_filter(NULL, NULL, NULL, NULL, NULL))
|
||||||
|
+ return 1;
|
||||||
|
+return 0;
|
||||||
|
+ ]
|
||||||
|
+ )],
|
||||||
|
+ [c_cv_rtnl_dump_filter_five_args="yes"],
|
||||||
|
+ [c_cv_rtnl_dump_filter_five_args="no"]
|
||||||
|
+ )
|
||||||
|
+ )
|
||||||
|
+
|
||||||
|
+ AC_CACHE_CHECK(
|
||||||
|
+ [if function 'rtnl_dump_filter' expects three arguments],
|
||||||
|
+ [c_cv_rtnl_dump_filter_three_args],
|
||||||
|
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
|
+ [
|
||||||
|
+AC_INCLUDES_DEFAULT
|
||||||
|
+#if HAVE_LIBNETLINK_H
|
||||||
|
+# include <libnetlink.h>
|
||||||
|
+#elif HAVE_IPROUTE_LIBNETLINK_H
|
||||||
|
+# include <iproute/libnetlink.h>
|
||||||
|
+#elif HAVE_LINUX_LIBNETLINK_H
|
||||||
|
+# include <linux/libnetlink.h>
|
||||||
|
+#endif
|
||||||
|
+ ],
|
||||||
|
+ [
|
||||||
|
+if (rtnl_dump_filter(NULL, NULL, NULL))
|
||||||
|
+ return 1;
|
||||||
|
+return 0;
|
||||||
|
+ ]
|
||||||
|
+ )],
|
||||||
|
+ [c_cv_rtnl_dump_filter_three_args="yes"],
|
||||||
|
+ [c_cv_rtnl_dump_filter_three_args="no"]
|
||||||
|
+ )
|
||||||
|
+ )
|
||||||
|
+
|
||||||
|
+ CFLAGS="$SAVE_CFLAGS"
|
||||||
|
+
|
||||||
|
+ if test "x$c_cv_rtnl_dump_filter_five_args" = "xyes"
|
||||||
|
+ then
|
||||||
|
+ AC_DEFINE(RTNL_DUMP_FILTER_FIVE_ARGS, 1,
|
||||||
|
+ [Define to 1 if function 'rtnl_dump_filter' expects five arguments.])
|
||||||
|
+ fi
|
||||||
|
+ if test "x$c_cv_rtnl_dump_filter_three_args" = "xyes"
|
||||||
|
+ then
|
||||||
|
+ AC_DEFINE(RTNL_DUMP_FILTER_THREE_ARGS, 1,
|
||||||
|
+ [Define to 1 if function 'rtnl_dump_filter' expects three arguments.])
|
||||||
|
+ fi
|
||||||
|
+
|
||||||
|
BUILD_WITH_LIBNETLINK_CFLAGS="$with_libnetlink_cflags"
|
||||||
|
BUILD_WITH_LIBNETLINK_LIBS="$with_libnetlink_libs"
|
||||||
|
AC_SUBST(BUILD_WITH_LIBNETLINK_CFLAGS)
|
||||||
|
diff --git a/src/netlink.c b/src/netlink.c
|
||||||
|
index 49c4e99..e65aec7 100644
|
||||||
|
--- a/src/netlink.c
|
||||||
|
+++ b/src/netlink.c
|
||||||
|
@@ -570,8 +570,14 @@ static int ir_read (void)
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef RTNL_DUMP_FILTER_FIVE_ARGS
|
||||||
|
if (rtnl_dump_filter (&rth, link_filter, /* arg1 = */ NULL,
|
||||||
|
NULL, NULL) != 0)
|
||||||
|
+#elif defined(RTNL_DUMP_FILTER_THREE_ARGS)
|
||||||
|
+ if (rtnl_dump_filter (&rth, link_filter, /* arg = */ NULL) != 0)
|
||||||
|
+#else
|
||||||
|
+#error "Failed to determine the number of arguments to 'rtnl_dump_filter'!"
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
ERROR ("netlink plugin: ir_read: rtnl_dump_filter failed.");
|
||||||
|
return (-1);
|
||||||
|
@@ -608,8 +614,14 @@ static int ir_read (void)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef RTNL_DUMP_FILTER_FIVE_ARGS
|
||||||
|
if (rtnl_dump_filter (&rth, qos_filter, (void *) &ifindex,
|
||||||
|
NULL, NULL) != 0)
|
||||||
|
+#elif defined(RTNL_DUMP_FILTER_THREE_ARGS)
|
||||||
|
+ if (rtnl_dump_filter (&rth, qos_filter, /* arg = */ &ifindex) != 0)
|
||||||
|
+#else
|
||||||
|
+#error "Failed to determine the number of arguments to 'rtnl_dump_filter'!"
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
ERROR ("netlink plugin: ir_read: rtnl_dump_filter failed.");
|
||||||
|
continue;
|
||||||
|
--
|
||||||
|
1.7.10.4
|
||||||
|
|
Loading…
Reference in new issue