[DCCP]: Ignore Ack Vectors / Elapsed Time on DCCP-Request also
Small update with regard to RFC 4340 (references added as documentation):
on Requests, Ack Vectors / Elapsed Time should be ignored.
Length handling of Elapsed Time also simplified.
Signed-off-by: Gerrit Renker <[EMAIL PROTECTED]>
---
net/dccp/options.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
--- a/net/dccp/options.c
+++ b/net/dccp/options.c
@@ -128,7 +128,7 @@ int dccp_parse_options(struct sock *sk,
break;
case DCCPO_ACK_VECTOR_0:
case DCCPO_ACK_VECTOR_1:
- if (pkt_type == DCCP_PKT_DATA)
+ if (dccp_packet_without_ack(skb)) /* RFC 4340, 11.4 */
break;
if (dccp_msk(sk)->dccpms_send_ack_vector &&
@@ -186,19 +186,17 @@ int dccp_parse_options(struct sock *sk,
opt_recv->dccpor_elapsed_time = elapsed_time;
break;
case DCCPO_ELAPSED_TIME:
- if (len != 2 && len != 4)
- goto out_invalid_option;
-
- if (pkt_type == DCCP_PKT_DATA)
- continue;
+ if (dccp_packet_without_ack(skb)) /* RFC 4340, 13.2 */
+ break;
if (len == 2) {
opt_val = get_unaligned((u16 *)value);
elapsed_time = ntohs((u16)opt_val);
- } else {
+ } else if (len == 4) {
opt_val = get_unaligned((u32 *)value);
elapsed_time = ntohl(opt_val);
- }
+ } else
+ goto out_invalid_option;
if (elapsed_time > opt_recv->dccpor_elapsed_time)
opt_recv->dccpor_elapsed_time = elapsed_time;
-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html