Skip to contentSkip to conversation

DCCP: Fix to reset the connection with Reset Code 5 Option Error while receive invalid option

PATCH In review Wei Yongjun 2 participants 7 messages May 13, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 DCCP: Fix to reset the connection with Reset Code 5 Option Error while receive invalid option

If endpoint received invalid option, it must reset the connection with Reset Code 5 "Option Error", but current kernel send reset with Reset Code 4 "Packet Error".

This patch fixed this problem. dccp_parse_options() has set reset code to 5 if option is invalid, so just return 1 to let reset be send with this reset code.

net/dccp/input.c +0 -0
@@ -428,7 +428,7 @@ static int dccp_rcv_request_sent_state_p
		}

		if (dccp_parse_options(sk, NULL, skb))

- goto out_invalid_packet;
+ goto out_invalid_option;

		/* Obtain usec RTT sample from SYN exchange (used by CCID 3) */
		if (likely(dp->dccps_options_received.dccpor_timestamp_echo))
@@ -508,6 +508,7 @@ static int dccp_rcv_request_sent_state_p
out_invalid_packet:
	/* dccp_v4_do_rcv will send a reset */
	DCCP_SKB_CB(skb)->dccpd_reset_code = DCCP_RESET_CODE_PACKET_ERROR;
+out_invalid_option:
	return 1;
}
#1 lore raw

Quoting Wei Yongjun:

Quoted 4 lines

If endpoint received invalid option, it must reset the connection with Reset Code 5 "Option Error", but current kernel send reset with Reset Code 4 "Packet Error".

Ack. However, this has already been fixed in the test tree where dccp_parse() both sets the Reset code and fills in the Data1..3 fields (not done by this patch).

Within a span of two weeks this is the fourth DCCP patch which fixes bugs that already have fixes in the DCCP test tree. The same problems are fixed in two different locations.

If you are doing DCCP work, please consider
http://www.linux-foundation.org/en/Net:DCCP_Testing#How_to_obtain

#2 lore raw

Hi Gerrit Renker:

Sorry for my stupid patch since I can get the test git tree.

But, Is there any other way to get the git tree? I download a patch from following URL:

http://www.erg.abdn.ac.uk/users/gerrit/dccp/testing_dccp/test-tree/test-tree_2.6.25.diff.gz
I used this patch to my linux-2.6.25, there is error happend. and it has compile error too.

Is this patch is based on linux-2.6.25? If I want to send a patch, I must create my patch base on what version of kernel?

Thanks.

Quoted 13 lines · Gerrit Renker

Quoting Wei Yongjun:

Quoted 3 lines

If endpoint received invalid option, it must reset the connection with Reset Code 5 "Option Error", but current kernel send reset with Reset Code 4 "Packet Error".

Ack. However, this has already been fixed in the test tree where dccp_parse() both sets the Reset code and fills in the Data1..3 fields (not done by this patch).

Within a span of two weeks this is the fourth DCCP patch which fixes bugs that already have fixes in the DCCP test tree. The same problems are fixed in two different locations.

If you are doing DCCP work, please consider http://www.linux-foundation.org/en/Net:DCCP_Testing#How_to_obtai

#3 lore raw
Quoted 3 lines

Sorry for my stupid patch since I can get the test git tree.

There is nothing at all wrong with the patch and I apologise for the remark, since it is not your fault not to be aware of the test tree.

That was my fault - in at least one of the 4 cases David Miller copied the changeset over to dccp@vger. I am working with Arnaldo de Melo (the DCCP maintainer) on a solution for this, to avoid future overlap. It is not your issue, so sorry.

For the moment the best is to apply this patch and fix the problem in the mainline variant of net/dccp.

Quoted 6 lines

But, Is there any other way to get the git tree? I download a patch from following URL:

http://www.erg.abdn.ac.uk/users/gerrit/dccp/testing_dccp/test-tree/test-tree_2.6.25.diff.gz
I used this patch to my linux-2.6.25, there is error happend. and it has compile error too.

This is possible since the snapshots are taken on the day a new release comes out. Thanks for the notice, the outdated snapshot will be replaced.

Quoted 4 lines

Is this patch is based on linux-2.6.25? If I want to send a patch, I must create my patch base on what version of kernel?

The test tree tracks the netdev-2.6 kernel and only touches net/dccp. It can be pulled from
git://eden-feed.erg.abdn.ac.uk/dccp_exp (subtree `dccp')

Gerrit

#4 lore raw

Hi Gerrit Renker:

I think your should update your patch to avoid compile error:

+#define dccp_feat_print_opt(opt, feat, val, len, mandatory) \
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+    dccp_pr_debug("%s(%s, ", dccp_feat_oname(opt), dccp_feat_fname(feat));\
+    dccp_feat_printvals(feat, val, len);                      \
+    dccp_pr_debug_cat(") %s\n", mandatory ? "!" : "");

...snip...
+#else /* ! CONFIG_IP_DCCP_DEBUG */
+#define dccp_feat_print_opt(opt, feat, fval, mandatory)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The first dccp_feat_print_opt() take 5 parameters when CONFIG_IP_DCCP_DEBUG, but the second one just take 4.

Quoted 37 lines · Gerrit Renker
Quoted 3 lines

Sorry for my stupid patch since I can get the test git tree.

There is nothing at all wrong with the patch and I apologise for the remark, since it is not your fault not to be aware of the test tree.

That was my fault - in at least one of the 4 cases David Miller copied the changeset over to dccp@vger. I am working with Arnaldo de Melo (the DCCP maintainer) on a solution for this, to avoid future overlap. It is not your issue, so sorry.

For the moment the best is to apply this patch and fix the problem in the mainline variant of net/dccp.

Quoted 5 lines

But, Is there any other way to get the git tree? I download a patch from following URL:

http://www.erg.abdn.ac.uk/users/gerrit/dccp/testing_dccp/test-tree/test-tree_2.6.25.diff.gz
I used this patch to my linux-2.6.25, there is error happend. and it has compile error too.

This is possible since the snapshots are taken on the day a new release comes out. Thanks for the notice, the outdated snapshot will be replaced.

Quoted 3 lines

Is this patch is based on linux-2.6.25? If I want to send a patch, I must create my patch base on what version of kernel?

The test tree tracks the netdev-2.6 kernel and only touches net/dccp. It can be pulled from
git://eden-feed.erg.abdn.ac.uk/dccp_exp (subtree `dccp')

Gerrit

Signature · 12 lines
--------------------------------------------------
Wei Yongjun
Development Dept.I
Nanjing Fujitsu Nanda Software Tech. Co., Ltd.(FNST)
8/F., Civil Defense Building, No.189 Guangzhou Road,
Nanjing, 210029, China
TEL: +86+25-86630523-836
COINS: 79955-836
FAX: +86+25-83317685
MAIL: [email protected]
--------------------------------------------------
This communication is for use by the intended recipient(s) only and may contain information that is privileged, confidential and exempt from disclosure under applicable law. If you are not an intended recipient of this communication, you are hereby notified that any dissemination, distribution or copying hereof is strictly prohibited.  If you have received this communication in error, please notify me by reply e-mail, permanently delete this communication from your system, and destroy any hard copies you may have printed
#5 lore raw

Re: Macro mismatch in test tree

Quoted 3 lines

The first dccp_feat_print_opt() take 5 parameters when CONFIG_IP_DCCP_DEBUG, but the second one just take 4.

Thanks :) Fixed.

#6 lore raw

Re: [PATCH] DCCP: Fix to reset the connection with Reset Code 5 Option

In reply to Wei Yongjun
Quoted 3 lines · Wei Yongjun

Hi Gerrit Renker:

Sorry for my stupid patch since I can get the test git tree.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sorry for my stupid patch since I *cannot* get the test git tree. typo error ^_^

Quoted 14 lines

But, Is there any other way to get the git tree? I download a patch from following URL:

http://www.erg.abdn.ac.uk/users/gerrit/dccp/testing_dccp/test-tree/test-tree_2.6.25.diff.gz

I used this patch to my linux-2.6.25, there is error happend. and it has compile error too.

Is this patch is based on linux-2.6.25? If I want to send a patch, I must create my patch base on what version of kernel?

Thanks.