Em Wed, Aug 20, 2008 at 09:20:07AM +0800, Wei Yongjun escreveu: > RFC4340 said that if a packet is received with invalid option(such as Mandatory > Option as the last byte of the option list), endpoint should reponsed with > Reset. In LISTIN state and RESPOND state, the endpoint reponsed with reset > correctly, but in REQUEST state and OPEN state, the endpoint just ignored > the packet. The packet sequence is as the following: > > Case 1: > > Endpoint A Endpoint B > (CLOSED) (CLOSED) > > <---------------- REQUEST > > RESPONSE -----------------> (*1) > (with invalid option) > <---------------- RESET > (with Reset Code 5, "Option Error") > > (*1) it just be ignored currently, no reset is sent > > Case 2: > > Endpoint A Endpoint B > (OPEN) (OPEN) > > DATA-ACK -----------------> (*2) > (with invalid option) > <---------------- RESET > (with Reset Code 5, "Option Error") > > (*2) it just be ignored currently, no reset is sent > > This patch fixed the problem by reponsed with Reset instead of ignore packet. > > Signed-off-by: Wei Yongjun <yjwei@xxxxxxxxxxxxxx> God catch! Please also keep netdev@xxxxxxxxxxxxxxx on the CC list. Acked-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> > --- > net/dccp/input.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/dccp/input.c b/net/dccp/input.c > index dab4cc9..df0e671 100644 > --- a/net/dccp/input.c > +++ b/net/dccp/input.c > @@ -370,7 +370,7 @@ int dccp_rcv_established(struct sock *sk, struct sk_buff *skb, > goto discard; > > if (dccp_parse_options(sk, NULL, skb)) > - goto discard; > + return 1; > > dccp_handle_ackvec_processing(sk, skb); > dccp_deliver_input_to_ccids(sk, skb); > @@ -631,7 +631,7 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb, > > /* Step 8: Process options */ > if (dccp_parse_options(sk, NULL, skb)) > - goto discard; > + return 1; > > /* > * Step 9: Process Reset > -- > 1.5.3.8 > > > > -- > To unsubscribe from this list: send the line "unsubscribe dccp" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe dccp" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html