summaryrefslogtreecommitdiffstats
path: root/include/netlink-private
diff options
context:
space:
mode:
authorJoe Damato <ice799@gmail.com>2013-07-04 01:40:58 (GMT)
committerJoe Damato <ice799@gmail.com>2013-07-19 09:06:21 (GMT)
commit81d2b1d509d91fe894e4aec0a6a76b0bf75514cd (patch)
tree9bf88cb826292b75e17ec86e975e2b644774e4d5 /include/netlink-private
parent89b00119f213dd7234321324b3ff12ba3e259a93 (diff)
downloadlibnl-81d2b1d509d91fe894e4aec0a6a76b0bf75514cd.zip
libnl-81d2b1d509d91fe894e4aec0a6a76b0bf75514cd.tar.gz
libnl-81d2b1d509d91fe894e4aec0a6a76b0bf75514cd.tar.bz2
Add support for inet diag Netlink protocol.
- Inet diag allows users to gather low-level socket information. - This library provides a higher-level API for creating inetdiag requests (via idiagnl_connect and idiagnl_send_simple) and parsing the replies (via idiagnl_msg_parse). A cache is also provided (via idiagnl_msg_alloc_cache). - Request and message objects provide APIs for accessing and setting the various properties of each. - This library also allows the user to parse the inetdiag response attributes which contain information about traffic class, TOS, congestion, socket memory info, and more depending on the kernel version used. - Includes doxygen documentation.
Diffstat (limited to 'include/netlink-private')
-rw-r--r--include/netlink-private/types.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/include/netlink-private/types.h b/include/netlink-private/types.h
index 89f6418..60b880d 100644
--- a/include/netlink-private/types.h
+++ b/include/netlink-private/types.h
@@ -7,6 +7,7 @@
* of the License.
*
* Copyright (c) 2003-2013 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2013 Sassano Systems LLC <joe@sassanosystems.com>
*/
#ifndef NETLINK_LOCAL_TYPES_H_
@@ -17,6 +18,7 @@
#include <netlink/route/qdisc.h>
#include <netlink/route/rtnl.h>
#include <netlink/route/route.h>
+#include <netlink/idiag/idiagnl.h>
#include <netlink-private/route/tc-api.h>
#define NL_SOCK_BUFSIZE_SET (1<<0)
@@ -909,4 +911,61 @@ struct ematch_quoted {
int index;
};
+struct idiagnl_meminfo {
+ NLHDR_COMMON
+
+ uint32_t idiag_rmem;
+ uint32_t idiag_wmem;
+ uint32_t idiag_fmem;
+ uint32_t idiag_tmem;
+};
+
+struct idiagnl_vegasinfo {
+ NLHDR_COMMON
+
+ uint32_t tcpv_enabled;
+ uint32_t tcpv_rttcnt;
+ uint32_t tcpv_rtt;
+ uint32_t tcpv_minrtt;
+};
+
+struct idiagnl_msg {
+ NLHDR_COMMON
+
+ uint8_t idiag_family;
+ uint8_t idiag_state;
+ uint8_t idiag_timer;
+ uint8_t idiag_retrans;
+ uint16_t idiag_sport;
+ uint16_t idiag_dport;
+ struct nl_addr * idiag_src;
+ struct nl_addr * idiag_dst;
+ uint32_t idiag_ifindex;
+ uint32_t idiag_expires;
+ uint32_t idiag_rqueue;
+ uint32_t idiag_wqueue;
+ uint32_t idiag_uid;
+ uint32_t idiag_inode;
+
+ uint8_t idiag_tos;
+ uint8_t idiag_tclass;
+ uint8_t idiag_shutdown;
+ char * idiag_cong;
+ struct idiagnl_meminfo * idiag_meminfo;
+ struct idiagnl_vegasinfo * idiag_vegasinfo;
+ struct tcp_info idiag_tcpinfo;
+ uint32_t idiag_skmeminfo[IDIAG_SK_MEMINFO_VARS];
+};
+
+struct idiagnl_req {
+ NLHDR_COMMON
+
+ uint8_t idiag_family;
+ uint8_t idiag_ext;
+ struct nl_addr * idiag_src;
+ struct nl_addr * idiag_dst;
+ uint32_t idiag_ifindex;
+ uint32_t idiag_states;
+ uint32_t idiag_dbs;
+};
#endif