]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/ipv4/tcp_diag.c
[NET] Generalise TCP's struct open_request minisock infrastructure
[net-next-2.6.git] / net / ipv4 / tcp_diag.c
index 8faa8948f75c2d67db9643dc07b24af7abc609a5..700ff2413588d41c71836026ae3298b06cb36d73 100644 (file)
@@ -458,6 +458,7 @@ static int tcpdiag_fill_req(struct sk_buff *skb, struct sock *sk,
                            struct open_request *req,
                            u32 pid, u32 seq)
 {
+       const struct inet_request_sock *ireq = inet_rsk(req);
        struct inet_sock *inet = inet_sk(sk);
        unsigned char *b = skb->tail;
        struct tcpdiagmsg *r;
@@ -482,9 +483,9 @@ static int tcpdiag_fill_req(struct sk_buff *skb, struct sock *sk,
                tmo = 0;
 
        r->id.tcpdiag_sport = inet->sport;
-       r->id.tcpdiag_dport = req->rmt_port;
-       r->id.tcpdiag_src[0] = req->af.v4_req.loc_addr;
-       r->id.tcpdiag_dst[0] = req->af.v4_req.rmt_addr;
+       r->id.tcpdiag_dport = ireq->rmt_port;
+       r->id.tcpdiag_src[0] = ireq->loc_addr;
+       r->id.tcpdiag_dst[0] = ireq->rmt_addr;
        r->tcpdiag_expires = jiffies_to_msecs(tmo),
        r->tcpdiag_rqueue = 0;
        r->tcpdiag_wqueue = 0;
@@ -493,9 +494,9 @@ static int tcpdiag_fill_req(struct sk_buff *skb, struct sock *sk,
 #ifdef CONFIG_IP_TCPDIAG_IPV6
        if (r->tcpdiag_family == AF_INET6) {
                ipv6_addr_copy((struct in6_addr *)r->id.tcpdiag_src,
-                              &req->af.v6_req.loc_addr);
+                              &tcp6_rsk(req)->loc_addr);
                ipv6_addr_copy((struct in6_addr *)r->id.tcpdiag_dst,
-                              &req->af.v6_req.rmt_addr);
+                              &tcp6_rsk(req)->rmt_addr);
        }
 #endif
        nlh->nlmsg_len = skb->tail - b;
@@ -545,9 +546,11 @@ static int tcpdiag_dump_reqs(struct sk_buff *skb, struct sock *sk,
 
                reqnum = 0;
                for (req = head; req; reqnum++, req = req->dl_next) {
+                       struct inet_request_sock *ireq = inet_rsk(req);
+
                        if (reqnum < s_reqnum)
                                continue;
-                       if (r->id.tcpdiag_dport != req->rmt_port &&
+                       if (r->id.tcpdiag_dport != ireq->rmt_port &&
                            r->id.tcpdiag_dport)
                                continue;
 
@@ -555,16 +558,16 @@ static int tcpdiag_dump_reqs(struct sk_buff *skb, struct sock *sk,
                                entry.saddr =
 #ifdef CONFIG_IP_TCPDIAG_IPV6
                                        (entry.family == AF_INET6) ?
-                                       req->af.v6_req.loc_addr.s6_addr32 :
+                                       tcp6_rsk(req)->loc_addr.s6_addr32 :
 #endif
-                                       &req->af.v4_req.loc_addr;
+                                       &ireq->loc_addr;
                                entry.daddr = 
 #ifdef CONFIG_IP_TCPDIAG_IPV6
                                        (entry.family == AF_INET6) ?
-                                       req->af.v6_req.rmt_addr.s6_addr32 :
+                                       tcp6_rsk(req)->rmt_addr.s6_addr32 :
 #endif
-                                       &req->af.v4_req.rmt_addr;
-                               entry.dport = ntohs(req->rmt_port);
+                                       &ireq->rmt_addr;
+                               entry.dport = ntohs(ireq->rmt_port);
 
                                if (!tcpdiag_bc_run(RTA_DATA(bc),
                                                    RTA_PAYLOAD(bc), &entry))