aboutsummaryrefslogtreecommitdiffstats
path: root/net/dccp/options.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/dccp/options.c')
-rw-r--r--net/dccp/options.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/net/dccp/options.c b/net/dccp/options.c
index ca13f7731994..34d536d5f1a1 100644
--- a/net/dccp/options.c
+++ b/net/dccp/options.c
@@ -29,8 +29,6 @@ int sysctl_dccp_feat_ack_ratio = DCCPF_INITIAL_ACK_RATIO;
29int sysctl_dccp_feat_send_ack_vector = DCCPF_INITIAL_SEND_ACK_VECTOR; 29int sysctl_dccp_feat_send_ack_vector = DCCPF_INITIAL_SEND_ACK_VECTOR;
30int sysctl_dccp_feat_send_ndp_count = DCCPF_INITIAL_SEND_NDP_COUNT; 30int sysctl_dccp_feat_send_ndp_count = DCCPF_INITIAL_SEND_NDP_COUNT;
31 31
32EXPORT_SYMBOL_GPL(sysctl_dccp_feat_sequence_window);
33
34void dccp_minisock_init(struct dccp_minisock *dmsk) 32void dccp_minisock_init(struct dccp_minisock *dmsk)
35{ 33{
36 dmsk->dccpms_sequence_window = sysctl_dccp_feat_sequence_window; 34 dmsk->dccpms_sequence_window = sysctl_dccp_feat_sequence_window;
@@ -174,21 +172,25 @@ int dccp_parse_options(struct sock *sk, struct sk_buff *skb)
174 opt_recv->dccpor_timestamp_echo = ntohl(*(__be32 *)value); 172 opt_recv->dccpor_timestamp_echo = ntohl(*(__be32 *)value);
175 173
176 dccp_pr_debug("%s rx opt: TIMESTAMP_ECHO=%u, len=%d, " 174 dccp_pr_debug("%s rx opt: TIMESTAMP_ECHO=%u, len=%d, "
177 "ackno=%llu, ", dccp_role(sk), 175 "ackno=%llu", dccp_role(sk),
178 opt_recv->dccpor_timestamp_echo, 176 opt_recv->dccpor_timestamp_echo,
179 len + 2, 177 len + 2,
180 (unsigned long long) 178 (unsigned long long)
181 DCCP_SKB_CB(skb)->dccpd_ack_seq); 179 DCCP_SKB_CB(skb)->dccpd_ack_seq);
182 180
183 181
184 if (len == 4) 182 if (len == 4) {
183 dccp_pr_debug_cat("\n");
185 break; 184 break;
185 }
186 186
187 if (len == 6) 187 if (len == 6)
188 elapsed_time = ntohs(*(__be16 *)(value + 4)); 188 elapsed_time = ntohs(*(__be16 *)(value + 4));
189 else 189 else
190 elapsed_time = ntohl(*(__be32 *)(value + 4)); 190 elapsed_time = ntohl(*(__be32 *)(value + 4));
191 191
192 dccp_pr_debug_cat(", ELAPSED_TIME=%d\n", elapsed_time);
193
192 /* Give precedence to the biggest ELAPSED_TIME */ 194 /* Give precedence to the biggest ELAPSED_TIME */
193 if (elapsed_time > opt_recv->dccpor_elapsed_time) 195 if (elapsed_time > opt_recv->dccpor_elapsed_time)
194 opt_recv->dccpor_elapsed_time = elapsed_time; 196 opt_recv->dccpor_elapsed_time = elapsed_time;
@@ -565,6 +567,14 @@ int dccp_insert_options(struct sock *sk, struct sk_buff *skb)
565 dccp_insert_options_feat(sk, skb)) 567 dccp_insert_options_feat(sk, skb))
566 return -1; 568 return -1;
567 569
570 /*
571 * Obtain RTT sample from Request/Response exchange.
572 * This is currently used in CCID 3 initialisation.
573 */
574 if (DCCP_SKB_CB(skb)->dccpd_type == DCCP_PKT_REQUEST &&
575 dccp_insert_option_timestamp(sk, skb))
576 return -1;
577
568 /* XXX: insert other options when appropriate */ 578 /* XXX: insert other options when appropriate */
569 579
570 if (DCCP_SKB_CB(skb)->dccpd_opt_len != 0) { 580 if (DCCP_SKB_CB(skb)->dccpd_opt_len != 0) {