diff options
Diffstat (limited to 'net/dccp/options.c')
| -rw-r--r-- | net/dccp/options.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/net/dccp/options.c b/net/dccp/options.c index 1b08cae9c65b..bfda087bd90d 100644 --- a/net/dccp/options.c +++ b/net/dccp/options.c | |||
| @@ -296,12 +296,11 @@ static inline u8 dccp_ndp_len(const u64 ndp) | |||
| 296 | { | 296 | { |
| 297 | if (likely(ndp <= 0xFF)) | 297 | if (likely(ndp <= 0xFF)) |
| 298 | return 1; | 298 | return 1; |
| 299 | return likely(ndp <= USHORT_MAX) ? 2 : (ndp <= UINT_MAX ? 4 : 6); | 299 | return likely(ndp <= USHRT_MAX) ? 2 : (ndp <= UINT_MAX ? 4 : 6); |
| 300 | } | 300 | } |
| 301 | 301 | ||
| 302 | int dccp_insert_option(struct sock *sk, struct sk_buff *skb, | 302 | int dccp_insert_option(struct sk_buff *skb, const unsigned char option, |
| 303 | const unsigned char option, | 303 | const void *value, const unsigned char len) |
| 304 | const void *value, const unsigned char len) | ||
| 305 | { | 304 | { |
| 306 | unsigned char *to; | 305 | unsigned char *to; |
| 307 | 306 | ||
| @@ -354,8 +353,7 @@ static inline int dccp_elapsed_time_len(const u32 elapsed_time) | |||
| 354 | return elapsed_time == 0 ? 0 : elapsed_time <= 0xFFFF ? 2 : 4; | 353 | return elapsed_time == 0 ? 0 : elapsed_time <= 0xFFFF ? 2 : 4; |
| 355 | } | 354 | } |
| 356 | 355 | ||
| 357 | int dccp_insert_option_elapsed_time(struct sock *sk, struct sk_buff *skb, | 356 | int dccp_insert_option_elapsed_time(struct sk_buff *skb, u32 elapsed_time) |
| 358 | u32 elapsed_time) | ||
| 359 | { | 357 | { |
| 360 | const int elapsed_time_len = dccp_elapsed_time_len(elapsed_time); | 358 | const int elapsed_time_len = dccp_elapsed_time_len(elapsed_time); |
| 361 | const int len = 2 + elapsed_time_len; | 359 | const int len = 2 + elapsed_time_len; |
| @@ -386,13 +384,13 @@ int dccp_insert_option_elapsed_time(struct sock *sk, struct sk_buff *skb, | |||
| 386 | 384 | ||
| 387 | EXPORT_SYMBOL_GPL(dccp_insert_option_elapsed_time); | 385 | EXPORT_SYMBOL_GPL(dccp_insert_option_elapsed_time); |
| 388 | 386 | ||
| 389 | int dccp_insert_option_timestamp(struct sock *sk, struct sk_buff *skb) | 387 | int dccp_insert_option_timestamp(struct sk_buff *skb) |
| 390 | { | 388 | { |
| 391 | __be32 now = htonl(dccp_timestamp()); | 389 | __be32 now = htonl(dccp_timestamp()); |
| 392 | /* yes this will overflow but that is the point as we want a | 390 | /* yes this will overflow but that is the point as we want a |
| 393 | * 10 usec 32 bit timer which mean it wraps every 11.9 hours */ | 391 | * 10 usec 32 bit timer which mean it wraps every 11.9 hours */ |
| 394 | 392 | ||
| 395 | return dccp_insert_option(sk, skb, DCCPO_TIMESTAMP, &now, sizeof(now)); | 393 | return dccp_insert_option(skb, DCCPO_TIMESTAMP, &now, sizeof(now)); |
| 396 | } | 394 | } |
| 397 | 395 | ||
| 398 | EXPORT_SYMBOL_GPL(dccp_insert_option_timestamp); | 396 | EXPORT_SYMBOL_GPL(dccp_insert_option_timestamp); |
| @@ -531,9 +529,9 @@ int dccp_insert_options(struct sock *sk, struct sk_buff *skb) | |||
| 531 | if (DCCP_SKB_CB(skb)->dccpd_type == DCCP_PKT_REQUEST) { | 529 | if (DCCP_SKB_CB(skb)->dccpd_type == DCCP_PKT_REQUEST) { |
| 532 | /* | 530 | /* |
| 533 | * Obtain RTT sample from Request/Response exchange. | 531 | * Obtain RTT sample from Request/Response exchange. |
| 534 | * This is currently used in CCID 3 initialisation. | 532 | * This is currently used for TFRC initialisation. |
| 535 | */ | 533 | */ |
| 536 | if (dccp_insert_option_timestamp(sk, skb)) | 534 | if (dccp_insert_option_timestamp(skb)) |
| 537 | return -1; | 535 | return -1; |
| 538 | 536 | ||
| 539 | } else if (dp->dccps_hc_rx_ackvec != NULL && | 537 | } else if (dp->dccps_hc_rx_ackvec != NULL && |
| @@ -564,6 +562,10 @@ int dccp_insert_options_rsk(struct dccp_request_sock *dreq, struct sk_buff *skb) | |||
| 564 | if (dccp_feat_insert_opts(NULL, dreq, skb)) | 562 | if (dccp_feat_insert_opts(NULL, dreq, skb)) |
| 565 | return -1; | 563 | return -1; |
| 566 | 564 | ||
| 565 | /* Obtain RTT sample from Response/Ack exchange (used by TFRC). */ | ||
| 566 | if (dccp_insert_option_timestamp(skb)) | ||
| 567 | return -1; | ||
| 568 | |||
| 567 | if (dreq->dreq_timestamp_echo != 0 && | 569 | if (dreq->dreq_timestamp_echo != 0 && |
| 568 | dccp_insert_option_timestamp_echo(NULL, dreq, skb)) | 570 | dccp_insert_option_timestamp_echo(NULL, dreq, skb)) |
| 569 | return -1; | 571 | return -1; |
