summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authortuexen <tuexen@FreeBSD.org>2010-09-17 19:20:39 +0000
committertuexen <tuexen@FreeBSD.org>2010-09-17 19:20:39 +0000
commit5e466f8898acdd8dbfc38a022e08c7974217c87f (patch)
tree4945b483fc7d7217fe172e712f9291454f90d8ba /sys/netinet
parent7b25487bee443fbdedc922982d86145a78dd5752 (diff)
downloadFreeBSD-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.c8
-rw-r--r--sys/netinet/sctp_output.c2
-rw-r--r--sys/netinet/sctp_timer.c4
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,
OpenPOWER on IntegriCloud