Root/
1 | /* |
2 | * tcp_diag.c Module for monitoring TCP transport protocols sockets. |
3 | * |
4 | * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> |
5 | * |
6 | * This program is free software; you can redistribute it and/or |
7 | * modify it under the terms of the GNU General Public License |
8 | * as published by the Free Software Foundation; either version |
9 | * 2 of the License, or (at your option) any later version. |
10 | */ |
11 | |
12 | |
13 | #include <linux/module.h> |
14 | #include <linux/inet_diag.h> |
15 | |
16 | #include <linux/tcp.h> |
17 | |
18 | #include <net/tcp.h> |
19 | |
20 | static void tcp_diag_get_info(struct sock *sk, struct inet_diag_msg *r, |
21 | void *_info) |
22 | { |
23 | const struct tcp_sock *tp = tcp_sk(sk); |
24 | struct tcp_info *info = _info; |
25 | |
26 | if (sk->sk_state == TCP_LISTEN) { |
27 | r->idiag_rqueue = sk->sk_ack_backlog; |
28 | r->idiag_wqueue = sk->sk_max_ack_backlog; |
29 | } else { |
30 | r->idiag_rqueue = tp->rcv_nxt - tp->copied_seq; |
31 | r->idiag_wqueue = tp->write_seq - tp->snd_una; |
32 | } |
33 | if (info != NULL) |
34 | tcp_get_info(sk, info); |
35 | } |
36 | |
37 | static const struct inet_diag_handler tcp_diag_handler = { |
38 | .idiag_hashinfo = &tcp_hashinfo, |
39 | .idiag_get_info = tcp_diag_get_info, |
40 | .idiag_type = TCPDIAG_GETSOCK, |
41 | .idiag_info_size = sizeof(struct tcp_info), |
42 | }; |
43 | |
44 | static int __init tcp_diag_init(void) |
45 | { |
46 | return inet_diag_register(&tcp_diag_handler); |
47 | } |
48 | |
49 | static void __exit tcp_diag_exit(void) |
50 | { |
51 | inet_diag_unregister(&tcp_diag_handler); |
52 | } |
53 | |
54 | module_init(tcp_diag_init); |
55 | module_exit(tcp_diag_exit); |
56 | MODULE_LICENSE("GPL"); |
57 | MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_NETLINK, NETLINK_INET_DIAG, TCPDIAG_GETSOCK); |
58 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9