Blame view
net/dccp/diag.c
2.33 KB
4f5736c4c [TCPDIAG]: Introd... |
1 2 3 4 5 6 7 8 9 10 |
/* * net/dccp/diag.c * * An implementation of the DCCP protocol * Arnaldo Carvalho de Melo <acme@mandriva.com> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ |
4f5736c4c [TCPDIAG]: Introd... |
11 12 |
#include <linux/module.h> |
a8c2190ee [INET_DIAG]: Rena... |
13 |
#include <linux/inet_diag.h> |
4f5736c4c [TCPDIAG]: Introd... |
14 |
|
2babe1f6f [DCCP]: Introduce... |
15 |
#include "ccid.h" |
4f5736c4c [TCPDIAG]: Introd... |
16 |
#include "dccp.h" |
2babe1f6f [DCCP]: Introduce... |
17 18 19 20 21 22 23 24 25 26 27 |
static void dccp_get_info(struct sock *sk, struct tcp_info *info) { struct dccp_sock *dp = dccp_sk(sk); const struct inet_connection_sock *icsk = inet_csk(sk); memset(info, 0, sizeof(*info)); info->tcpi_state = sk->sk_state; info->tcpi_retransmits = icsk->icsk_retransmits; info->tcpi_probes = icsk->icsk_probes_out; info->tcpi_backoff = icsk->icsk_backoff; |
d83d8461f [IP_SOCKGLUE]: Re... |
28 |
info->tcpi_pmtu = icsk->icsk_pmtu_cookie; |
2babe1f6f [DCCP]: Introduce... |
29 |
|
6fdd34d43 dccp ccid-2: Phas... |
30 |
if (dp->dccps_hc_rx_ackvec != NULL) |
2babe1f6f [DCCP]: Introduce... |
31 |
info->tcpi_options |= TCPI_OPT_SACK; |
a693722ae dccp_diag: LISTEN... |
32 33 34 35 36 |
if (dp->dccps_hc_rx_ccid != NULL) ccid_hc_rx_get_info(dp->dccps_hc_rx_ccid, sk, info); if (dp->dccps_hc_tx_ccid != NULL) ccid_hc_tx_get_info(dp->dccps_hc_tx_ccid, sk, info); |
2babe1f6f [DCCP]: Introduce... |
37 |
} |
73c1f4a03 [TCPDIAG]: Just r... |
38 |
static void dccp_diag_get_info(struct sock *sk, struct inet_diag_msg *r, |
4f5736c4c [TCPDIAG]: Introd... |
39 40 |
void *_info) { |
73c1f4a03 [TCPDIAG]: Just r... |
41 |
r->idiag_rqueue = r->idiag_wqueue = 0; |
2babe1f6f [DCCP]: Introduce... |
42 43 44 |
if (_info != NULL) dccp_get_info(sk, _info); |
4f5736c4c [TCPDIAG]: Introd... |
45 |
} |
1942c518c inet_diag: Genera... |
46 |
static void dccp_diag_dump(struct sk_buff *skb, struct netlink_callback *cb, |
34160ea3f inet_diag: add co... |
47 |
const struct inet_diag_req_v2 *r, struct nlattr *bc) |
1942c518c inet_diag: Genera... |
48 49 50 |
{ inet_diag_dump_icsk(&dccp_hashinfo, skb, cb, r, bc); } |
34160ea3f inet_diag: add co... |
51 52 53 |
static int dccp_diag_dump_one(struct sk_buff *in_skb, const struct nlmsghdr *nlh, const struct inet_diag_req_v2 *req) |
1942c518c inet_diag: Genera... |
54 55 56 |
{ return inet_diag_dump_one_icsk(&dccp_hashinfo, in_skb, nlh, req); } |
a7a0d6a87 net: inet_diag_ha... |
57 |
static const struct inet_diag_handler dccp_diag_handler = { |
1942c518c inet_diag: Genera... |
58 59 |
.dump = dccp_diag_dump, .dump_one = dccp_diag_dump_one, |
4f5736c4c [TCPDIAG]: Introd... |
60 |
.idiag_get_info = dccp_diag_get_info, |
f13c95f0e inet_diag: Switch... |
61 |
.idiag_type = IPPROTO_DCCP, |
3fd22af80 sock_diag: specif... |
62 |
.idiag_info_size = sizeof(struct tcp_info), |
4f5736c4c [TCPDIAG]: Introd... |
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
}; static int __init dccp_diag_init(void) { return inet_diag_register(&dccp_diag_handler); } static void __exit dccp_diag_fini(void) { inet_diag_unregister(&dccp_diag_handler); } module_init(dccp_diag_init); module_exit(dccp_diag_fini); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Arnaldo Carvalho de Melo <acme@mandriva.com>"); MODULE_DESCRIPTION("DCCP inet_diag handler"); |
aec8dc62f sock_diag: Fix mo... |
81 |
MODULE_ALIAS_NET_PF_PROTO_TYPE(PF_NETLINK, NETLINK_SOCK_DIAG, 2-33 /* AF_INET - IPPROTO_DCCP */); |