Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.25-rc7 /net/dccp/ipv4.c

Filename:/net/dccp/ipv4.c
Lines Added:15
Lines Deleted:19
Also changed in: (Previous) 2.6.25-rc6  2.6.25-rc5  2.6.25-rc4  2.6.25-rc3  2.6.25-rc2  2.6.25-rc1 
(Following) 2.6.25-rc8  2.6.25-rc9  2.6.25-rc9-git1  2.6.25-rc9-git2  2.6.25-rc9-git3  2.6.25 

Location
[  2.6.25-rc7
  [  net
    [  dccp
       o  ipv4.c

Patch

diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index db17b83..474075a 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -38,12 +38,6 @@
  */
 static struct socket *dccp_v4_ctl_socket;
 
-static int dccp_v4_get_port(struct sock *sk, const unsigned short snum)
-{
-   return inet_csk_get_port(&dccp_hashinfo, sk, snum,
-             inet_csk_bind_conflict);
-}
-
 int dccp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
 {
    struct inet_sock *inet = inet_sk(sk);
@@ -218,7 +212,7 @@ static void dccp_v4_err(struct sk_buff *skb, u32 info)
       return;
    }
 
-   sk = inet_lookup(&dccp_hashinfo, iph->daddr, dh->dccph_dport,
+   sk = inet_lookup(&init_net, &dccp_hashinfo, iph->daddr, dh->dccph_dport,
           iph->saddr, dh->dccph_sport, inet_iif(skb));
    if (sk == NULL) {
       ICMP_INC_STATS_BH(ICMP_MIB_INERRORS);
@@ -408,8 +402,8 @@ struct sock *dccp_v4_request_recv_sock(struct sock *sk, struct sk_buff *skb,
 
    dccp_sync_mss(newsk, dst_mtu(dst));
 
-   __inet_hash(&dccp_hashinfo, newsk, 0);
-   __inet_inherit_port(&dccp_hashinfo, sk, newsk);
+   __inet_hash_nolisten(newsk);
+   __inet_inherit_port(sk, newsk);
 
    return newsk;
 
@@ -436,7 +430,7 @@ static struct sock *dccp_v4_hnd_req(struct sock *sk, struct sk_buff *skb)
    if (req != NULL)
       return dccp_check_req(sk, skb, req, prev);
 
-   nsk = inet_lookup_established(&dccp_hashinfo,
+   nsk = inet_lookup_established(&init_net, &dccp_hashinfo,
                   iph->saddr, dh->dccph_sport,
                   iph->daddr, dh->dccph_dport,
                   inet_iif(skb));
@@ -469,7 +463,7 @@ static struct dst_entry* dccp_v4_route_skb(struct sock *sk,
            };
 
    security_skb_classify_flow(skb, &fl);
-   if (ip_route_output_flow(&rt, &fl, sk, 0)) {
+   if (ip_route_output_flow(&init_net, &rt, &fl, sk, 0)) {
       IP_INC_STATS_BH(IPSTATS_MIB_OUTNOROUTES);
       return NULL;
    }
@@ -600,11 +594,12 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
    if (req == NULL)
       goto drop;
 
-   if (dccp_parse_options(sk, skb))
-      goto drop_and_free;
-
    dccp_reqsk_init(req, skb);
 
+   dreq = dccp_rsk(req);
+   if (dccp_parse_options(sk, dreq, skb))
+      goto drop_and_free;
+
    if (security_inet_conn_request(sk, skb, req))
       goto drop_and_free;
 
@@ -621,7 +616,6 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
     * In fact we defer setting S.GSR, S.SWL, S.SWH to
     * dccp_create_openreq_child.
     */
-   dreq = dccp_rsk(req);
    dreq->dreq_isr      = dcb->dccpd_seq;
    dreq->dreq_iss      = dccp_v4_init_sequence(skb);
    dreq->dreq_service = service;
@@ -817,7 +811,7 @@ static int dccp_v4_rcv(struct sk_buff *skb)
 
    /* Step 2:
     *   Look up flow ID in table and get corresponding socket */
-   sk = __inet_lookup(&dccp_hashinfo,
+   sk = __inet_lookup(&init_net, &dccp_hashinfo,
             iph->saddr, dh->dccph_sport,
             iph->daddr, dh->dccph_dport, inet_iif(skb));
    /*
@@ -898,6 +892,7 @@ static struct inet_connection_sock_af_ops dccp_ipv4_af_ops = {
    .getsockopt      = ip_getsockopt,
    .addr2sockaddr      = inet_csk_addr2sockaddr,
    .sockaddr_len      = sizeof(struct sockaddr_in),
+   .bind_conflict      = inet_csk_bind_conflict,
 #ifdef CONFIG_COMPAT
    .compat_setsockopt = compat_ip_setsockopt,
    .compat_getsockopt = compat_ip_getsockopt,
@@ -937,10 +932,10 @@ static struct proto dccp_v4_prot = {
    .sendmsg      = dccp_sendmsg,
    .recvmsg      = dccp_recvmsg,
    .backlog_rcv      = dccp_v4_do_rcv,
-   .hash         = dccp_hash,
-   .unhash         = dccp_unhash,
+   .hash         = inet_hash,
+   .unhash         = inet_unhash,
    .accept         = inet_csk_accept,
-   .get_port      = dccp_v4_get_port,
+   .get_port      = inet_csk_get_port,
    .shutdown      = dccp_shutdown,
    .destroy      = dccp_destroy_sock,
    .orphan_count      = &dccp_orphan_count,
@@ -948,6 +943,7 @@ static struct proto dccp_v4_prot = {
    .obj_size      = sizeof(struct dccp_sock),
    .rsk_prot      = &dccp_request_sock_ops,
    .twsk_prot      = &dccp_timewait_sock_ops,
+   .hashinfo      = &dccp_hashinfo,
 #ifdef CONFIG_COMPAT
    .compat_setsockopt   = compat_dccp_setsockopt,
    .compat_getsockopt   = compat_dccp_getsockopt,


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.