diff options
author | tuexen <tuexen@FreeBSD.org> | 2010-09-17 19:20:39 +0000 |
---|---|---|
committer | tuexen <tuexen@FreeBSD.org> | 2010-09-17 19:20:39 +0000 |
commit | 5e466f8898acdd8dbfc38a022e08c7974217c87f (patch) | |
tree | 4945b483fc7d7217fe172e712f9291454f90d8ba /sys/netinet | |
parent | 7b25487bee443fbdedc922982d86145a78dd5752 (diff) | |
download | FreeBSD-src-5e466f8898acdd8dbfc38a022e08c7974217c87f.zip FreeBSD-src-5e466f8898acdd8dbfc38a022e08c7974217c87f.tar.gz |
Fix a bug where the wrong PR-SCTP policy was considered.
While there, use always the same code for the check of
TTL expiration.
MFC after: 2 weeks.
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/sctp_indata.c | 8 | ||||
-rw-r--r-- | sys/netinet/sctp_output.c | 2 | ||||
-rw-r--r-- | sys/netinet/sctp_timer.c | 4 |
3 files changed, 3 insertions, 11 deletions
diff --git a/sys/netinet/sctp_indata.c b/sys/netinet/sctp_indata.c index 6095fe5..1040c9d 100644 --- a/sys/netinet/sctp_indata.c +++ b/sys/netinet/sctp_indata.c @@ -3300,13 +3300,7 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc, if (stcb->asoc.peer_supports_prsctp) { if ((PR_SCTP_TTL_ENABLED(tp1->flags)) && tp1->sent < SCTP_DATAGRAM_ACKED) { /* Is it expired? */ - if ( - /* - * TODO sctp_constants.h needs alternative - * time macros when _KERNEL is undefined. - */ - (timevalcmp(&now, &tp1->rec.data.timetodrop, >)) - ) { + if (timevalcmp(&now, &tp1->rec.data.timetodrop, >)) { /* Yes so drop it */ if (tp1->data != NULL) { (void)sctp_release_pr_sctp_chunk(stcb, tp1, diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c index 5623228..fb39917 100644 --- a/sys/netinet/sctp_output.c +++ b/sys/netinet/sctp_output.c @@ -5728,7 +5728,7 @@ sctp_prune_prsctp(struct sctp_tcb *stcb, while (chk) { nchk = TAILQ_NEXT(chk, sctp_next); /* Here we must move to the sent queue and mark */ - if (PR_SCTP_TTL_ENABLED(chk->flags)) { + if (PR_SCTP_BUF_ENABLED(chk->flags)) { if (chk->rec.data.timetodrop.tv_sec >= (long)srcv->sinfo_timetolive) { if (chk->data) { /* diff --git a/sys/netinet/sctp_timer.c b/sys/netinet/sctp_timer.c index 6db5193..949dd2f 100644 --- a/sys/netinet/sctp_timer.c +++ b/sys/netinet/sctp_timer.c @@ -772,9 +772,7 @@ start_again: } if (stcb->asoc.peer_supports_prsctp && PR_SCTP_TTL_ENABLED(chk->flags)) { /* Is it expired? */ - if ((now.tv_sec > chk->rec.data.timetodrop.tv_sec) || - ((chk->rec.data.timetodrop.tv_sec == now.tv_sec) && - (now.tv_usec > chk->rec.data.timetodrop.tv_usec))) { + if (timevalcmp(&now, &chk->rec.data.timetodrop, >)) { /* Yes so drop it */ if (chk->data) { (void)sctp_release_pr_sctp_chunk(stcb, |