projects
/
collectd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
524b856
)
Fix for 'linux/inet_diag.h: No such file or directory'
author
Yves Mettier
<ymettier@free.fr>
Mon, 4 Aug 2014 12:01:01 +0000
(14:01 +0200)
committer
Yves Mettier
<ymettier@free.fr>
Mon, 4 Aug 2014 12:01:01 +0000
(14:01 +0200)
configure.in
patch
|
blob
|
history
src/tcpconns.c
patch
|
blob
|
history
diff --git
a/configure.in
b/configure.in
index
ce59b71
..
84d017a
100644
(file)
--- a/
configure.in
+++ b/
configure.in
@@
-399,6
+399,18
@@
AC_CHECK_HEADERS(linux/if.h, [], [],
# include <sys/socket.h>
#endif
])
# include <sys/socket.h>
#endif
])
+AC_CHECK_HEADERS(linux/inet_diag.h, [], [],
+[
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#endif
+#if HAVE_LINUX_INET_DIAG_H
+# include <linux/inet_diag.h>
+#endif
+])
AC_CHECK_HEADERS(linux/netdevice.h, [], [],
[
#if HAVE_SYS_TYPES_H
AC_CHECK_HEADERS(linux/netdevice.h, [], [],
[
#if HAVE_SYS_TYPES_H
@@
-1242,6
+1254,13
@@
AC_CHECK_MEMBERS([struct net_device_stats.rx_bytes, struct net_device_stats.tx_p
#include <linux/if.h>
#include <linux/netdevice.h>
])
#include <linux/if.h>
#include <linux/netdevice.h>
])
+AC_CHECK_MEMBERS([struct inet_diag_req.id, struct inet_diag_req.idiag_states],
+ [AC_DEFINE(HAVE_STRUCT_LINUX_INET_DIAG_REQ, 1, [Define if struct inet_diag_req exists and is usable.])],
+ [],
+ [
+ #include <linux/inet_diag.h>
+ ])
+
AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [],
[],
AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [],
[],
diff --git
a/src/tcpconns.c
b/src/tcpconns.c
index
765b892
..
6351c7b
100644
(file)
--- a/
src/tcpconns.c
+++ b/
src/tcpconns.c
@@
-74,7
+74,9
@@
/* sys/socket.h is necessary to compile when using netlink on older systems. */
# include <sys/socket.h>
# include <linux/netlink.h>
/* sys/socket.h is necessary to compile when using netlink on older systems. */
# include <sys/socket.h>
# include <linux/netlink.h>
+#if HAVE_LINUX_INET_DIAG_H
# include <linux/inet_diag.h>
# include <linux/inet_diag.h>
+#endif
# include <sys/socket.h>
# include <arpa/inet.h>
/* #endif KERNEL_LINUX */
# include <sys/socket.h>
# include <arpa/inet.h>
/* #endif KERNEL_LINUX */
@@
-137,10
+139,12
@@
#endif /* KERNEL_AIX */
#if KERNEL_LINUX
#endif /* KERNEL_AIX */
#if KERNEL_LINUX
+#if HAVE_STRUCT_LINUX_INET_DIAG_REQ
struct nlreq {
struct nlmsghdr nlh;
struct inet_diag_req r;
};
struct nlreq {
struct nlmsghdr nlh;
struct inet_diag_req r;
};
+#endif
static const char *tcp_state[] =
{
static const char *tcp_state[] =
{
@@
-276,7
+280,12
@@
static int port_collect_listening = 0;
static port_entry_t *port_list_head = NULL;
#if KERNEL_LINUX
static port_entry_t *port_list_head = NULL;
#if KERNEL_LINUX
+#if HAVE_STRUCT_LINUX_INET_DIAG_REQ
+/* This depends on linux inet_diag_req because if this structure is missing,
+ * sequence_number is useless and we get a compilation warning.
+ */
static uint32_t sequence_number = 0;
static uint32_t sequence_number = 0;
+#endif
enum
{
enum
{
@@
-446,6
+455,7
@@
static int conn_handle_ports (uint16_t port_local, uint16_t port_remote, uint8_t
* zero on other errors. */
static int conn_read_netlink (void)
{
* zero on other errors. */
static int conn_read_netlink (void)
{
+#if HAVE_STRUCT_LINUX_INET_DIAG_REQ
int fd;
struct sockaddr_nl nladdr;
struct nlreq req;
int fd;
struct sockaddr_nl nladdr;
struct nlreq req;
@@
-574,6
+584,9
@@
static int conn_read_netlink (void)
/* Not reached because the while() loop above handles the exit condition. */
return (0);
/* Not reached because the while() loop above handles the exit condition. */
return (0);
+#else
+ return (1);
+#endif /* HAVE_STRUCT_LINUX_INET_DIAG_REQ */
} /* int conn_read_netlink */
static int conn_handle_line (char *buffer)
} /* int conn_read_netlink */
static int conn_handle_line (char *buffer)