summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorCong Wang <xiyou.wangcong@gmail.com>2014-10-27 16:50:17 (GMT)
committerThomas Haller <thaller@redhat.com>2014-11-24 12:21:15 (GMT)
commitb54f6d80239f9e13969b747bbfecb3ada37d61ad (patch)
tree879c14578e2ac49d659e4f98952c3ab801c3f565 /include
parent9c066b9271493ce3efff0b9d7b6e424990bba3f2 (diff)
downloadlibnl-b54f6d80239f9e13969b747bbfecb3ada37d61ad.zip
libnl-b54f6d80239f9e13969b747bbfecb3ada37d61ad.tar.gz
libnl-b54f6d80239f9e13969b747bbfecb3ada37d61ad.tar.bz2
idiag: add a copy of linux/sock_diag.h
When we test idiag on 3.4 kernel, we always get ERANGE. This is because libnl has its own copy for SK_MEMINFO_*, which is actually newer than 3.4, where SK_MEMINFO_VARS is larger than kernel's. We add a copy from latest kernel, so on older kernel libnl should still compile. Note, for kernel < 3.6 we don't have SK_MEMINFO_BACKLOG, we have to relax the minlen. 'sock_diag.h' comes from v3.17 kernel sources (bfe01a5ba2490f299e1d2d5508cbbbadd897bbe9), file 'include/uapi/linux/sock_diag.h'. Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> Acked-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: Thomas Haller <thaller@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/Makefile.am1
-rw-r--r--include/linux-private/linux/sock_diag.h26
-rw-r--r--include/netlink-private/types.h2
-rw-r--r--include/netlink/idiag/idiagnl.h27
4 files changed, 39 insertions, 17 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index 82684a1..d5ce186 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -145,6 +145,7 @@ noinst_HEADERS = \
linux-private/linux/netfilter/nfnetlink_queue.h \
linux-private/linux/netlink.h \
linux-private/linux/pkt_cls.h \
+ linux-private/linux/sock_diag.h \
linux-private/linux/tc_act/tc_mirred.h \
linux-private/linux/pkt_sched.h \
linux-private/linux/rtnetlink.h \
diff --git a/include/linux-private/linux/sock_diag.h b/include/linux-private/linux/sock_diag.h
new file mode 100644
index 0000000..b00e29e
--- /dev/null
+++ b/include/linux-private/linux/sock_diag.h
@@ -0,0 +1,26 @@
+#ifndef _UAPI__SOCK_DIAG_H__
+#define _UAPI__SOCK_DIAG_H__
+
+#include <linux/types.h>
+
+#define SOCK_DIAG_BY_FAMILY 20
+
+struct sock_diag_req {
+ __u8 sdiag_family;
+ __u8 sdiag_protocol;
+};
+
+enum {
+ SK_MEMINFO_RMEM_ALLOC,
+ SK_MEMINFO_RCVBUF,
+ SK_MEMINFO_WMEM_ALLOC,
+ SK_MEMINFO_SNDBUF,
+ SK_MEMINFO_FWD_ALLOC,
+ SK_MEMINFO_WMEM_QUEUED,
+ SK_MEMINFO_OPTMEM,
+ SK_MEMINFO_BACKLOG,
+
+ SK_MEMINFO_VARS,
+};
+
+#endif /* _UAPI__SOCK_DIAG_H__ */
diff --git a/include/netlink-private/types.h b/include/netlink-private/types.h
index 4ba13f7..b4dc8ac 100644
--- a/include/netlink-private/types.h
+++ b/include/netlink-private/types.h
@@ -1001,7 +1001,7 @@ struct idiagnl_msg {
struct idiagnl_meminfo * idiag_meminfo;
struct idiagnl_vegasinfo * idiag_vegasinfo;
struct tcp_info idiag_tcpinfo;
- uint32_t idiag_skmeminfo[IDIAG_SK_MEMINFO_VARS];
+ uint32_t idiag_skmeminfo[SK_MEMINFO_VARS];
};
struct idiagnl_req {
diff --git a/include/netlink/idiag/idiagnl.h b/include/netlink/idiag/idiagnl.h
index d7434cd..64bccd7 100644
--- a/include/netlink/idiag/idiagnl.h
+++ b/include/netlink/idiag/idiagnl.h
@@ -13,6 +13,7 @@
#define NETLINK_IDIAGNL_H_
#include <netlink/netlink.h>
+#include <linux/sock_diag.h>
#ifdef __cplusplus
extern "C" {
@@ -74,22 +75,16 @@ enum {
*/
#define IDIAG_ATTR_ALL ((1<<IDIAG_ATTR_MAX)-1)
-/**
- * Socket memory info identifiers
- * @ingroup idiag
- */
-enum {
- IDIAG_SK_MEMINFO_RMEM_ALLOC,
- IDIAG_SK_MEMINFO_RCVBUF,
- IDIAG_SK_MEMINFO_WMEM_ALLOC,
- IDIAG_SK_MEMINFO_SNDBUF,
- IDIAG_SK_MEMINFO_FWD_ALLOC,
- IDIAG_SK_MEMINFO_WMEM_QUEUED,
- IDIAG_SK_MEMINFO_OPTMEM,
- IDIAG_SK_MEMINFO_BACKLOG,
-
- IDIAG_SK_MEMINFO_VARS,
-};
+/* Keep these only for compatibility, DO NOT USE THEM */
+#define IDIAG_SK_MEMINFO_RMEM_ALLOC SK_MEMINFO_RMEM_ALLOC
+#define IDIAG_SK_MEMINFO_RCVBUF SK_MEMINFO_RCVBUF
+#define IDIAG_SK_MEMINFO_WMEM_ALLOC SK_MEMINFO_WMEM_ALLOC
+#define IDIAG_SK_MEMINFO_SNDBUF SK_MEMINFO_SNDBUF
+#define IDIAG_SK_MEMINFO_FWD_ALLOC SK_MEMINFO_FWD_ALLOC
+#define IDIAG_SK_MEMINFO_WMEM_QUEUED SK_MEMINFO_WMEM_QUEUED
+#define IDIAG_SK_MEMINFO_OPTMEM SK_MEMINFO_OPTMEM
+#define IDIAG_SK_MEMINFO_BACKLOG SK_MEMINFO_BACKLOG
+#define IDIAG_SK_MEMINFO_VARS SK_MEMINFO_VARS
/**
* Socket timer indentifiers