Skip to content

Commit

Permalink
[DCCP] Give precedence to the biggest ELAPSED_TIME
Browse files Browse the repository at this point in the history
We can get this value in an TIMESTAMP_ECHO and/or in an ELAPSED_TIME option, if
receiving both give precendence to the biggest one.

In my tests they are very close if not equal at all times, so we may well think
about removing the code in CCID3 that inserts this option and leaving this to
the core, and perhaps even use just TIMESTAMP_ECHO including the elapsed time.

Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
  • Loading branch information
Arnaldo Carvalho de Melo committed Sep 9, 2005
1 parent 27ae543 commit 1c14ac0
Showing 1 changed file with 18 additions and 16 deletions.
34 changes: 18 additions & 16 deletions net/dccp/options.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ int dccp_parse_options(struct sock *sk, struct sk_buff *skb)
struct dccp_options_received *opt_recv = &dp->dccps_options_received;
unsigned char opt, len;
unsigned char *value;
u32 elapsed_time;

memset(opt_recv, 0, sizeof(*opt_recv));

Expand Down Expand Up @@ -159,18 +160,18 @@ int dccp_parse_options(struct sock *sk, struct sk_buff *skb)
(unsigned long long)
DCCP_SKB_CB(skb)->dccpd_ack_seq);

if (len > 4) {
if (len == 6)
opt_recv->dccpor_elapsed_time =
ntohs(*(u16 *)(value + 4));
else
opt_recv->dccpor_elapsed_time =
ntohl(*(u32 *)(value + 4));

dccp_pr_debug("%sTIMESTAMP_ECHO ELAPSED_TIME=%d\n",
debug_prefix,
opt_recv->dccpor_elapsed_time);
}
if (len == 4)
break;

if (len == 6)
elapsed_time = ntohs(*(u16 *)(value + 4));
else
elapsed_time = ntohl(*(u32 *)(value + 4));

/* Give precedence to the biggest ELAPSED_TIME */
if (elapsed_time > opt_recv->dccpor_elapsed_time)
opt_recv->dccpor_elapsed_time = elapsed_time;
break;
case DCCPO_ELAPSED_TIME:
if (len != 2 && len != 4)
Expand All @@ -180,14 +181,15 @@ int dccp_parse_options(struct sock *sk, struct sk_buff *skb)
continue;

if (len == 2)
opt_recv->dccpor_elapsed_time =
ntohs(*(u16 *)value);
elapsed_time = ntohs(*(u16 *)value);
else
opt_recv->dccpor_elapsed_time =
ntohl(*(u32 *)value);
elapsed_time = ntohl(*(u32 *)value);

if (elapsed_time > opt_recv->dccpor_elapsed_time)
opt_recv->dccpor_elapsed_time = elapsed_time;

dccp_pr_debug("%sELAPSED_TIME=%d\n", debug_prefix,
opt_recv->dccpor_elapsed_time);
elapsed_time);
break;
/*
* From draft-ietf-dccp-spec-11.txt:
Expand Down

0 comments on commit 1c14ac0

Please sign in to comment.