aboutsummaryrefslogtreecommitdiffstats
path: root/net/dccp/diag.c
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@parallels.com>2011-12-09 01:23:18 -0500
committerDavid S. Miller <davem@davemloft.net>2011-12-09 14:14:08 -0500
commit1942c518ca017f376b267a7c5e78c15d37202442 (patch)
tree9ead5443adf15f2264240c928ff2514349fdcade /net/dccp/diag.c
parent3c4d05c8056724aff3abc20650807dd828fded54 (diff)
inet_diag: Generalize inet_diag dump and get_exact calls
Introduce two callbacks in inet_diag_handler -- one for dumping all sockets (with filters) and the other one for dumping a single sk. Replace direct calls to icsk handlers with indirect calls to callbacks provided by handlers. Make existing TCP and DCCP handlers use provided helpers for icsk-s. The UDP diag module will provide its own. Signed-off-by: Pavel Emelyanov <xemul@parallels.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp/diag.c')
-rw-r--r--net/dccp/diag.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/net/dccp/diag.c b/net/dccp/diag.c
index 9343f52db28..e29214d193d 100644
--- a/net/dccp/diag.c
+++ b/net/dccp/diag.c
@@ -48,8 +48,21 @@ static void dccp_diag_get_info(struct sock *sk, struct inet_diag_msg *r,
48 dccp_get_info(sk, _info); 48 dccp_get_info(sk, _info);
49} 49}
50 50
51static void dccp_diag_dump(struct sk_buff *skb, struct netlink_callback *cb,
52 struct inet_diag_req *r, struct nlattr *bc)
53{
54 inet_diag_dump_icsk(&dccp_hashinfo, skb, cb, r, bc);
55}
56
57static int dccp_diag_dump_one(struct sk_buff *in_skb, const struct nlmsghdr *nlh,
58 struct inet_diag_req *req)
59{
60 return inet_diag_dump_one_icsk(&dccp_hashinfo, in_skb, nlh, req);
61}
62
51static const struct inet_diag_handler dccp_diag_handler = { 63static const struct inet_diag_handler dccp_diag_handler = {
52 .idiag_hashinfo = &dccp_hashinfo, 64 .dump = dccp_diag_dump,
65 .dump_one = dccp_diag_dump_one,
53 .idiag_get_info = dccp_diag_get_info, 66 .idiag_get_info = dccp_diag_get_info,
54 .idiag_type = IPPROTO_DCCP, 67 .idiag_type = IPPROTO_DCCP,
55}; 68};