[DCCP]: Retrieve packet sequence number for error reporting
This fixes a problem when analysing erroneous packets in dccp_v{4,6}_err: * dccp_hdr_seq currently takes an skb * however, the transport headers in the skb are shifted, due to the preceding IPv4/v6 header. Fixed for v4 and v6 by changing dccp_hdr_seq to take a struct dccp_hdr as argument. Verified that the correct sequence number is now reported in the error handler. Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk> Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
03cf786c4e
commit
fde20105f3
@ -173,7 +173,7 @@ static void dccp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
||||
|
||||
icmpv6_err_convert(type, code, &err);
|
||||
|
||||
seq = DCCP_SKB_CB(skb)->dccpd_seq;
|
||||
seq = dccp_hdr_seq(dh);
|
||||
/* Might be for an request_sock */
|
||||
switch (sk->sk_state) {
|
||||
struct request_sock *req, **prev;
|
||||
@ -787,7 +787,7 @@ static int dccp_v6_rcv(struct sk_buff *skb)
|
||||
|
||||
dh = dccp_hdr(skb);
|
||||
|
||||
DCCP_SKB_CB(skb)->dccpd_seq = dccp_hdr_seq(skb);
|
||||
DCCP_SKB_CB(skb)->dccpd_seq = dccp_hdr_seq(dh);
|
||||
DCCP_SKB_CB(skb)->dccpd_type = dh->dccph_type;
|
||||
|
||||
if (dccp_packet_without_ack(skb))
|
||||
|
Reference in New Issue
Block a user