]> err.no Git - linux-2.6/blobdiff - net/dccp/minisocks.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
[linux-2.6] / net / dccp / minisocks.c
index b1d5da61f6afbf29ce7a9a3e13cc83bbd084efa5..66dca5bba858612e747a399d9bcea41bb03dc0f6 100644 (file)
@@ -117,11 +117,13 @@ struct sock *dccp_create_openreq_child(struct sock *sk,
                struct dccp_sock *newdp = dccp_sk(newsk);
                struct dccp_minisock *newdmsk = dccp_msk(newsk);
 
-               newdp->dccps_role          = DCCP_ROLE_SERVER;
-               newdp->dccps_hc_rx_ackvec  = NULL;
-               newdp->dccps_service_list  = NULL;
-               newdp->dccps_service       = dreq->dreq_service;
-               newicsk->icsk_rto          = DCCP_TIMEOUT_INIT;
+               newdp->dccps_role           = DCCP_ROLE_SERVER;
+               newdp->dccps_hc_rx_ackvec   = NULL;
+               newdp->dccps_service_list   = NULL;
+               newdp->dccps_service        = dreq->dreq_service;
+               newdp->dccps_timestamp_echo = dreq->dreq_timestamp_echo;
+               newdp->dccps_timestamp_time = dreq->dreq_timestamp_time;
+               newicsk->icsk_rto           = DCCP_TIMEOUT_INIT;
 
                if (dccp_feat_clone(sk, newsk))
                        goto out_free;
@@ -163,12 +165,12 @@ out_free:
                /* See dccp_v4_conn_request */
                newdmsk->dccpms_sequence_window = req->rcv_wnd;
 
-               newdp->dccps_gar = newdp->dccps_isr = dreq->dreq_isr;
-               dccp_update_gsr(newsk, dreq->dreq_isr);
-
-               newdp->dccps_iss = dreq->dreq_iss;
+               newdp->dccps_gar = newdp->dccps_iss = dreq->dreq_iss;
                dccp_update_gss(newsk, dreq->dreq_iss);
 
+               newdp->dccps_isr = dreq->dreq_isr;
+               dccp_update_gsr(newsk, dreq->dreq_isr);
+
                /*
                 * SWL and AWL are initially adjusted so that they are not less than
                 * the initial Sequence Numbers received and sent, respectively:
@@ -214,7 +216,7 @@ struct sock *dccp_check_req(struct sock *sk, struct sk_buff *skb,
                         * counter (backoff, monitored by dccp_response_timer).
                         */
                        req->retrans++;
-                       req->rsk_ops->rtx_syn_ack(sk, req, NULL);
+                       req->rsk_ops->rtx_syn_ack(sk, req);
                }
                /* Network Duplicate, discard packet */
                return NULL;
@@ -303,9 +305,12 @@ EXPORT_SYMBOL_GPL(dccp_reqsk_send_ack);
 
 void dccp_reqsk_init(struct request_sock *req, struct sk_buff *skb)
 {
-       inet_rsk(req)->rmt_port = dccp_hdr(skb)->dccph_sport;
-       inet_rsk(req)->acked    = 0;
-       req->rcv_wnd            = sysctl_dccp_feat_sequence_window;
+       struct dccp_request_sock *dreq = dccp_rsk(req);
+
+       inet_rsk(req)->rmt_port   = dccp_hdr(skb)->dccph_sport;
+       inet_rsk(req)->acked      = 0;
+       req->rcv_wnd              = sysctl_dccp_feat_sequence_window;
+       dreq->dreq_timestamp_echo = 0;
 }
 
 EXPORT_SYMBOL_GPL(dccp_reqsk_init);