-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[INET_DIAG]: Move the tcp_diag interface to the proper place
With this the previous setup is back, i.e. tcp_diag can be built as a module, as dccp_diag and both share the infrastructure available in inet_diag. If one selects CONFIG_INET_DIAG as module CONFIG_INET_TCP_DIAG will also be built as a module, as will CONFIG_INET_DCCP_DIAG, if CONFIG_IP_DCCP was selected static or as a module, if CONFIG_INET_DIAG is y, being statically linked CONFIG_INET_TCP_DIAG will follow suit and CONFIG_INET_DCCP_DIAG will be built in the same manner as CONFIG_IP_DCCP. Now to aim at UDP, converting it to use inet_hashinfo, so that we can use iproute2 for UDP sockets as well. Ah, just to show an example of this new infrastructure working for DCCP :-) [root@qemu ~]# ./ss -dane State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 0 *:5001 *:* ino:942 sk:cfd503a0 ESTAB 0 0 127.0.0.1:5001 127.0.0.1:32770 ino:943 sk:cfd50a60 ESTAB 0 0 127.0.0.1:32770 127.0.0.1:5001 ino:947 sk:cfd50700 TIME-WAIT 0 0 127.0.0.1:32769 127.0.0.1:5001 timer:(timewait,3.430ms,0) ino:0 sk:cf209620 Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
Arnaldo Carvalho de Melo
authored and
David S. Miller
committed
Aug 29, 2005
1 parent
a8c2190
commit 17b085e
Showing
7 changed files
with
70 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/* | ||
* tcp_diag.c Module for monitoring TCP transport protocols sockets. | ||
* | ||
* Version: $Id: tcp_diag.c,v 1.3 2002/02/01 22:01:04 davem Exp $ | ||
* | ||
* 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. | ||
*/ | ||
|
||
#include <linux/config.h> | ||
|
||
#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; | ||
|
||
r->idiag_rqueue = tp->rcv_nxt - tp->copied_seq; | ||
r->idiag_wqueue = tp->write_seq - tp->snd_una; | ||
if (info != NULL) | ||
tcp_get_info(sk, info); | ||
} | ||
|
||
static struct inet_diag_handler tcp_diag_handler = { | ||
.idiag_hashinfo = &tcp_hashinfo, | ||
.idiag_get_info = tcp_diag_get_info, | ||
.idiag_type = TCPDIAG_GETSOCK, | ||
.idiag_info_size = sizeof(struct tcp_info), | ||
}; | ||
|
||
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"); |