diff options
author | Cong Wang <xiyou.wangcong@gmail.com> | 2014-10-27 16:50:17 (GMT) |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2014-11-24 12:21:15 (GMT) |
commit | b54f6d80239f9e13969b747bbfecb3ada37d61ad (patch) | |
tree | 879c14578e2ac49d659e4f98952c3ab801c3f565 /include | |
parent | 9c066b9271493ce3efff0b9d7b6e424990bba3f2 (diff) | |
download | libnl-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.am | 1 | ||||
-rw-r--r-- | include/linux-private/linux/sock_diag.h | 26 | ||||
-rw-r--r-- | include/netlink-private/types.h | 2 | ||||
-rw-r--r-- | include/netlink/idiag/idiagnl.h | 27 |
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 |