libnl 3.5.0

idiagnl.h
1 /*
2 * netlink/idiag/idiagnl.h Inetdiag Netlink
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation version 2.1
7 * of the License.
8 *
9 * Copyright (c) 2013 Sassano Systems LLC <joe@sassanosystems.com>
10 */
11
12 #ifndef NETLINK_IDIAGNL_H_
13 #define NETLINK_IDIAGNL_H_
14
15 #include <netlink/netlink.h>
16 #include <linux/sock_diag.h>
17
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21
22 /*************************************************************
23 * The following part contains DEPRECATED names and defines.
24 * Don't use them.
25 *************************************************************/
26
27 /**
28 * Inet Diag message types
29 *
30 * deprecated: use TCPDIAG_GETSOCK, DCCPDIAG_GETSOCK and
31 * INET_DIAG_GETSOCK_MAX from linux/inet_diag.h
32 */
33 #define IDIAG_TCPDIAG_GETSOCK 18
34 #define IDIAG_DCCPDIAG_GETSOCK 19
35 #define IDIAG_GETSOCK_MAX 24
36
37 /**
38 * Socket state identifiers
39 * @ingroup idiag
40 * @deprecated: use instead the TCP_* defines from netinet/tcp.h.
41 */
42 enum {
43 IDIAG_SS_UNKNOWN = 0,
44
45 IDIAG_SS_ESTABLISHED = 1, /* TCP_ESTABLISHED */
46 IDIAG_SS_SYN_SENT = 2, /* TCP_SYN_SENT */
47 IDIAG_SS_SYN_RECV = 3, /* TCP_SYN_RECV */
48 IDIAG_SS_FIN_WAIT1 = 4, /* TCP_FIN_WAIT1 */
49 IDIAG_SS_FIN_WAIT2 = 5, /* TCP_FIN_WAIT2 */
50 IDIAG_SS_TIME_WAIT = 6, /* TCP_TIME_WAIT */
51 IDIAG_SS_CLOSE = 7, /* TCP_CLOSE */
52 IDIAG_SS_CLOSE_WAIT = 8, /* TCP_CLOSE_WAIT */
53 IDIAG_SS_LAST_ACK = 9, /* TCP_LAST_ACK */
54 IDIAG_SS_LISTEN = 10, /* TCP_LISTEN */
55 IDIAG_SS_CLOSING = 11, /* TCP_CLOSING */
56
57 IDIAG_SS_MAX = 12,
58 };
59
60 /**
61 * Macro to represent all socket states.
62 * @ingroup idiag
63 * @deprecated
64 */
65 #define IDIAG_SS_ALL IDIAGNL_SS_ALL
66
67
68 /**
69 * Inet Diag extended attributes
70 * @ingroup idiag
71 * @deprecated These attributes should not be used. They mirror the
72 * INET_DIAG_* extension flags from kernel headers. Use those instead. */
73 enum {
74 IDIAG_ATTR_NONE = 0, /* INET_DIAG_NONE */
75 IDIAG_ATTR_MEMINFO = 1, /* INET_DIAG_MEMINFO */
76 IDIAG_ATTR_INFO = 2, /* INET_DIAG_INFO */
77 IDIAG_ATTR_VEGASINFO = 3, /* INET_DIAG_VEGASINFO */
78 IDIAG_ATTR_CONG = 4, /* INET_DIAG_CONG */
79 IDIAG_ATTR_TOS = 5, /* INET_DIAG_TOS */
80 IDIAG_ATTR_TCLASS = 6, /* INET_DIAG_TCLASS */
81 IDIAG_ATTR_SKMEMINFO = 7, /* INET_DIAG_SKMEMINFO */
82 IDIAG_ATTR_SHUTDOWN = 8, /* INET_DIAG_SHUTDOWN */
83
84 /* IDIAG_ATTR_MAX was wrong, because it did not correspond to
85 * INET_DIAG_MAX. Anyway, freeze it to the previous value. */
86 IDIAG_ATTR_MAX = 9,
87
88 IDIAG_ATTR_ALL = (1<<IDIAG_ATTR_MAX) - 1,
89 };
90
91
92 /* deprectated keep these only for compatibility, DO NOT USE THEM */
93 #define IDIAG_SK_MEMINFO_RMEM_ALLOC 0 /* SK_MEMINFO_RMEM_ALLOC */
94 #define IDIAG_SK_MEMINFO_RCVBUF 1 /* SK_MEMINFO_RCVBUF */
95 #define IDIAG_SK_MEMINFO_WMEM_ALLOC 2 /* SK_MEMINFO_WMEM_ALLOC */
96 #define IDIAG_SK_MEMINFO_SNDBUF 3 /* SK_MEMINFO_SNDBUF */
97 #define IDIAG_SK_MEMINFO_FWD_ALLOC 4 /* SK_MEMINFO_FWD_ALLOC */
98 #define IDIAG_SK_MEMINFO_WMEM_QUEUED 5 /* SK_MEMINFO_WMEM_QUEUED */
99 #define IDIAG_SK_MEMINFO_OPTMEM 6 /* SK_MEMINFO_OPTMEM */
100 #define IDIAG_SK_MEMINFO_BACKLOG 7 /* SK_MEMINFO_BACKLOG */
101 #define IDIAG_SK_MEMINFO_VARS SK_MEMINFO_VARS
102
103 /* deprecated names. */
104 #define IDIAG_TIMER_OFF IDIAGNL_TIMER_OFF
105 #define IDIAG_TIMER_ON IDIAGNL_TIMER_ON
106 #define IDIAG_TIMER_KEEPALIVE IDIAGNL_TIMER_KEEPALIVE
107 #define IDIAG_TIMER_TIMEWAIT IDIAGNL_TIMER_TIMEWAIT
108 #define IDIAG_TIMER_PERSIST IDIAGNL_TIMER_PERSIST
109 #define IDIAG_TIMER_UNKNOWN IDIAGNL_TIMER_UNKNOWN
110
111 /*************************************************************/
112
113 /**
114 * Macro to represent all socket states.
115 * @ingroup idiag
116 */
117 #define IDIAGNL_SS_ALL (((1<<12)-1))
118
119 /**
120 * Socket timer indentifiers
121 * @ingroupd idiag
122 */
123 enum {
124 IDIAGNL_TIMER_OFF = 0,
125 IDIAGNL_TIMER_ON = 1,
126 IDIAGNL_TIMER_KEEPALIVE = 2,
127 IDIAGNL_TIMER_TIMEWAIT = 3,
128 IDIAGNL_TIMER_PERSIST = 4,
129 IDIAGNL_TIMER_UNKNOWN = 5,
130 };
131
132 extern char * idiagnl_state2str(int, char *, size_t);
133 extern int idiagnl_str2state(const char *);
134
135 extern int idiagnl_connect(struct nl_sock *);
136 extern int idiagnl_send_simple(struct nl_sock *, int, uint8_t, uint16_t,
137 uint16_t);
138
139 extern char * idiagnl_timer2str(int, char *, size_t);
140 extern int idiagnl_str2timer(const char *);
141 extern char * idiagnl_attrs2str(int, char *, size_t);
142 extern char * idiagnl_tcpstate2str(uint8_t, char *, size_t);
143 extern char * idiagnl_tcpopts2str(uint8_t, char *, size_t);
144 extern char * idiagnl_shutdown2str(uint8_t, char *, size_t);
145 extern char * idiagnl_exts2str(uint8_t, char *, size_t);
146
147 #ifdef __cplusplus
148 }
149 #endif /* __cplusplus */
150
151 #endif /* NETLINK_IDIAGNL_H_ */
idiagnl_exts2str
char * idiagnl_exts2str(uint8_t, char *, size_t)
Convert inet diag extension flags to a string.
Definition: idiag.c:207
idiagnl_str2state
int idiagnl_str2state(const char *)
Convert inet diag socket state string to int.
Definition: idiag.c:123
idiagnl_send_simple
int idiagnl_send_simple(struct nl_sock *, int, uint8_t, uint16_t, uint16_t)
Send trivial idiag netlink message.
Definition: idiag.c:65
idiagnl_shutdown2str
char * idiagnl_shutdown2str(uint8_t, char *, size_t)
Convert shutdown state to string.
Definition: idiag.c:262
idiagnl_attrs2str
char * idiagnl_attrs2str(int, char *, size_t)
Convert inet diag extension type to a string.
Definition: idiag.c:184
idiagnl_str2timer
int idiagnl_str2timer(const char *)
Convert inet diag timer string to int.
Definition: idiag.c:157
idiagnl_tcpopts2str
char * idiagnl_tcpopts2str(uint8_t, char *, size_t)
Convert TCP option attributes to string.
Definition: idiag.c:248
idiagnl_connect
int idiagnl_connect(struct nl_sock *)
Create and connect idiag netlink socket.
Definition: idiag.c:41
idiagnl_tcpstate2str
char * idiagnl_tcpstate2str(uint8_t, char *, size_t)
Convert inetdiag tcp states to strings.
Definition: idiag.c:226
idiagnl_timer2str
char * idiagnl_timer2str(int, char *, size_t)
Convert inet diag timer types to strings.
Definition: idiag.c:145
idiagnl_state2str
char * idiagnl_state2str(int, char *, size_t)
Convert inet diag socket states to strings.
Definition: idiag.c:110