summaryrefslogtreecommitdiffstats
path: root/sys/netinet/sctp_indata.c
diff options
context:
space:
mode:
authorrrs <rrs@FreeBSD.org>2007-04-22 11:06:27 +0000
committerrrs <rrs@FreeBSD.org>2007-04-22 11:06:27 +0000
commit44fd758bd50a08f1cfd0618700424dd54a93571a (patch)
treecdfe74b46c1b17927d990e112c62556cf444c46e /sys/netinet/sctp_indata.c
parentc494d6613ee7a2abda270930371858e0da4262f7 (diff)
downloadFreeBSD-src-44fd758bd50a08f1cfd0618700424dd54a93571a.zip
FreeBSD-src-44fd758bd50a08f1cfd0618700424dd54a93571a.tar.gz
- Somehow the disable fragment option got lost. We could
set/clear it but would not do it. Now we will. - Moved to latest socket api for extended sndrcv info struct. - Moved to support all new levels of fragment interleave.
Diffstat (limited to 'sys/netinet/sctp_indata.c')
-rw-r--r--sys/netinet/sctp_indata.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/netinet/sctp_indata.c b/sys/netinet/sctp_indata.c
index 81d6780..2010d2a 100644
--- a/sys/netinet/sctp_indata.c
+++ b/sys/netinet/sctp_indata.c
@@ -211,6 +211,7 @@ sctp_build_readq_entry(struct sctp_tcb *stcb,
read_queue_e->port_from = stcb->rport;
read_queue_e->do_not_ref_stcb = 0;
read_queue_e->end_added = 0;
+ read_queue_e->some_taken = 0;
read_queue_e->pdapi_aborted = 0;
failed_build:
return (read_queue_e);
@@ -249,6 +250,7 @@ sctp_build_readq_entry_chk(struct sctp_tcb *stcb,
read_queue_e->spec_flags = 0;
read_queue_e->do_not_ref_stcb = 0;
read_queue_e->end_added = 0;
+ read_queue_e->some_taken = 0;
read_queue_e->pdapi_aborted = 0;
failed_build:
return (read_queue_e);
@@ -5810,6 +5812,8 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb,
*/
if ((asoc->fragmented_delivery_inprogress) &&
(chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG)) {
+ uint32_t str_seq;
+
/*
* Special case PD-API is up and
* what we fwd-tsn' over includes
@@ -5817,8 +5821,10 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb,
* longer need to do the PD-API.
*/
asoc->fragmented_delivery_inprogress = 0;
+
+ str_seq = (asoc->str_of_pdapi << 16) | asoc->ssn_of_pdapi;
sctp_ulp_notify(SCTP_NOTIFY_PARTIAL_DELVIERY_INDICATION,
- stcb, SCTP_PARTIAL_DELIVERY_ABORTED, (void *)NULL);
+ stcb, SCTP_PARTIAL_DELIVERY_ABORTED, (void *)&str_seq);
}
break;
@@ -5831,8 +5837,11 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb,
* Ok we removed cnt_gone chunks in the PD-API queue that
* were being delivered. So now we must turn off the flag.
*/
+ uint32_t str_seq;
+
+ str_seq = (asoc->str_of_pdapi << 16) | asoc->ssn_of_pdapi;
sctp_ulp_notify(SCTP_NOTIFY_PARTIAL_DELVIERY_INDICATION,
- stcb, SCTP_PARTIAL_DELIVERY_ABORTED, (void *)NULL);
+ stcb, SCTP_PARTIAL_DELIVERY_ABORTED, (void *)&str_seq);
asoc->fragmented_delivery_inprogress = 0;
}
/*************************************************************/
OpenPOWER on IntegriCloud