linux_dsm_epyc7002/include/net/sctp
Xin Long e4dc99c7c2 sctp: process duplicated strreset out and addstrm out requests correctly
Now sctp stream reconf will process a request again even if it's seqno is
less than asoc->strreset_inseq.

If one request has been done successfully and some data chunks have been
accepted and then a duplicated strreset out request comes, the streamin's
ssn will be cleared. It will cause that stream will never receive chunks
any more because of unsynchronized ssn. It allows a replay attack.

A similar issue also exists when processing addstrm out requests. It will
cause more extra streams being added.

This patch is to fix it by saving the last 2 results into asoc. When a
duplicated strreset out or addstrm out request is received, reply it with
bad seqno if it's seqno < asoc->strreset_inseq - 2, and reply it with the
result saved in asoc if it's seqno >= asoc->strreset_inseq - 2.

Note that it saves last 2 results instead of only last 1 result, because
two requests can be sent together in one chunk.

And note that when receiving a duplicated request, the receiver side will
still reply it even if the peer has received the response. It's safe, As
the response will be dropped by the peer.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-04-18 13:39:50 -04:00
..
auth.h
checksum.h
command.h
constants.h
sctp.h sctp: get sock from transport in sctp_transport_update_pmtu 2017-04-05 07:20:06 -07:00
sm.h sctp: implement receiver-side procedures for the Reconf Response Parameter 2017-03-12 23:22:24 -07:00
structs.h sctp: process duplicated strreset out and addstrm out requests correctly 2017-04-18 13:39:50 -04:00
tsnmap.h
ulpevent.h sctp: add support for generating add stream change event notification 2017-03-12 23:22:23 -07:00
ulpqueue.h