diff options
Diffstat (limited to 'net/dccp/options.c')
-rw-r--r-- | net/dccp/options.c | 18 |
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; | |||
29 | int sysctl_dccp_feat_send_ack_vector = DCCPF_INITIAL_SEND_ACK_VECTOR; | 29 | int sysctl_dccp_feat_send_ack_vector = DCCPF_INITIAL_SEND_ACK_VECTOR; |
30 | int sysctl_dccp_feat_send_ndp_count = DCCPF_INITIAL_SEND_NDP_COUNT; | 30 | int sysctl_dccp_feat_send_ndp_count = DCCPF_INITIAL_SEND_NDP_COUNT; |
31 | 31 | ||
32 | EXPORT_SYMBOL_GPL(sysctl_dccp_feat_sequence_window); | ||
33 | |||
34 | void dccp_minisock_init(struct dccp_minisock *dmsk) | 32 | void 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) { |