[INET_DIAG]: Use inet_twsk() with TIME_WAIT sockets
authorArnaldo Carvalho de Melo <acme@mandriva.com>
Mon, 9 Jan 2006 22:56:03 +0000 (14:56 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 9 Jan 2006 22:56:03 +0000 (14:56 -0800)
The fields being accessed in inet_diag_dump are outside sock_common, the
common part of struct sock and struct inet_timewait_sock.

Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_diag.c

index c49908192047032d035cd75b531e9784896b0466..c3b3348717073b58f3ede9683d7f6c5892473b65 100644 (file)
@@ -697,14 +697,14 @@ next_normal:
                if (r->idiag_states & TCPF_TIME_WAIT) {
                        sk_for_each(sk, node,
                                    &hashinfo->ehash[i + hashinfo->ehash_size].chain) {
-                               struct inet_sock *inet = inet_sk(sk);
+                               const struct inet_timewait_sock *tw = inet_twsk(sk);
 
                                if (num < s_num)
                                        goto next_dying;
-                               if (r->id.idiag_sport != inet->sport &&
+                               if (r->id.idiag_sport != tw->tw_sport &&
                                    r->id.idiag_sport)
                                        goto next_dying;
-                               if (r->id.idiag_dport != inet->dport &&
+                               if (r->id.idiag_dport != tw->tw_dport &&
                                    r->id.idiag_dport)
                                        goto next_dying;
                                if (inet_diag_dump_sock(skb, sk, cb) < 0) {