Blame view
net/ipv4/tcp_diag.c
1.83 KB
17b085eac [INET_DIAG]: Move... |
1 2 3 |
/* * tcp_diag.c Module for monitoring TCP transport protocols sockets. * |
17b085eac [INET_DIAG]: Move... |
4 5 6 7 8 9 10 |
* Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ |
17b085eac [INET_DIAG]: Move... |
11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <linux/module.h> #include <linux/inet_diag.h> #include <linux/tcp.h> #include <net/tcp.h> static void tcp_diag_get_info(struct sock *sk, struct inet_diag_msg *r, void *_info) { const struct tcp_sock *tp = tcp_sk(sk); struct tcp_info *info = _info; |
5ee3afba8 [TCP]: Return use... |
24 |
if (sk->sk_state == TCP_LISTEN) { |
47da8ee68 [TCP]: Export acc... |
25 |
r->idiag_rqueue = sk->sk_ack_backlog; |
5ee3afba8 [TCP]: Return use... |
26 27 |
r->idiag_wqueue = sk->sk_max_ack_backlog; } else { |
49d090078 tcp: diag: Dont r... |
28 |
r->idiag_rqueue = max_t(int, tp->rcv_nxt - tp->copied_seq, 0); |
5ee3afba8 [TCP]: Return use... |
29 30 |
r->idiag_wqueue = tp->write_seq - tp->snd_una; } |
17b085eac [INET_DIAG]: Move... |
31 32 33 |
if (info != NULL) tcp_get_info(sk, info); } |
1942c518c inet_diag: Genera... |
34 |
static void tcp_diag_dump(struct sk_buff *skb, struct netlink_callback *cb, |
c8991362a inet_diag: Rename... |
35 |
struct inet_diag_req_v2 *r, struct nlattr *bc) |
1942c518c inet_diag: Genera... |
36 37 38 39 40 |
{ inet_diag_dump_icsk(&tcp_hashinfo, skb, cb, r, bc); } static int tcp_diag_dump_one(struct sk_buff *in_skb, const struct nlmsghdr *nlh, |
c8991362a inet_diag: Rename... |
41 |
struct inet_diag_req_v2 *req) |
1942c518c inet_diag: Genera... |
42 43 44 |
{ return inet_diag_dump_one_icsk(&tcp_hashinfo, in_skb, nlh, req); } |
a7a0d6a87 net: inet_diag_ha... |
45 |
static const struct inet_diag_handler tcp_diag_handler = { |
1942c518c inet_diag: Genera... |
46 47 |
.dump = tcp_diag_dump, .dump_one = tcp_diag_dump_one, |
17b085eac [INET_DIAG]: Move... |
48 |
.idiag_get_info = tcp_diag_get_info, |
f13c95f0e inet_diag: Switch... |
49 |
.idiag_type = IPPROTO_TCP, |
17b085eac [INET_DIAG]: Move... |
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
}; static int __init tcp_diag_init(void) { return inet_diag_register(&tcp_diag_handler); } static void __exit tcp_diag_exit(void) { inet_diag_unregister(&tcp_diag_handler); } module_init(tcp_diag_init); module_exit(tcp_diag_exit); MODULE_LICENSE("GPL"); |
aec8dc62f sock_diag: Fix mo... |
65 |
MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_NETLINK, NETLINK_SOCK_DIAG, 2-6 /* AF_INET - IPPROTO_TCP */); |