mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-17 21:04:56 +08:00
Update to FreeBSD head 2018-11-15
Git mirror commit a18b0830c4be01b39489a891b63d6023ada6358a. Update #3472.
This commit is contained in:
@@ -583,15 +583,28 @@ syncache_chkrst(struct in_conninfo *inc, struct tcphdr *th, struct mbuf *m)
|
||||
/*
|
||||
* If the RST bit is set, check the sequence number to see
|
||||
* if this is a valid reset segment.
|
||||
*
|
||||
* RFC 793 page 37:
|
||||
* In all states except SYN-SENT, all reset (RST) segments
|
||||
* are validated by checking their SEQ-fields. A reset is
|
||||
* valid if its sequence number is in the window.
|
||||
*
|
||||
* The sequence number in the reset segment is normally an
|
||||
* echo of our outgoing acknowlegement numbers, but some hosts
|
||||
* send a reset with the sequence number at the rightmost edge
|
||||
* of our receive window, and we have to handle this case.
|
||||
* RFC 793 page 69:
|
||||
* There are four cases for the acceptability test for an incoming
|
||||
* segment:
|
||||
*
|
||||
* Segment Receive Test
|
||||
* Length Window
|
||||
* ------- ------- -------------------------------------------
|
||||
* 0 0 SEG.SEQ = RCV.NXT
|
||||
* 0 >0 RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
|
||||
* >0 0 not acceptable
|
||||
* >0 >0 RCV.NXT =< SEG.SEQ < RCV.NXT+RCV.WND
|
||||
* or RCV.NXT =< SEG.SEQ+SEG.LEN-1 < RCV.NXT+RCV.WND
|
||||
*
|
||||
* Note that when receiving a SYN segment in the LISTEN state,
|
||||
* IRS is set to SEG.SEQ and RCV.NXT is set to SEG.SEQ+1, as
|
||||
* described in RFC 793, page 66.
|
||||
*/
|
||||
if ((SEQ_GEQ(th->th_seq, sc->sc_irs + 1) &&
|
||||
SEQ_LT(th->th_seq, sc->sc_irs + 1 + sc->sc_wnd)) ||
|
||||
|
Reference in New Issue
Block a user