summaryrefslogtreecommitdiffstats
path: root/sys/netinet/sctp_indata.c
diff options
context:
space:
mode:
authortuexen <tuexen@FreeBSD.org>2010-04-20 08:51:21 +0000
committertuexen <tuexen@FreeBSD.org>2010-04-20 08:51:21 +0000
commitdf535bd79d3648211cc1b5783e543ab3c1bea2bc (patch)
treebae3eda3972be614b8ea775eb08794155cf12a98 /sys/netinet/sctp_indata.c
parentbe51b447531f8e30cefc7e013450cc0e2511fcd6 (diff)
downloadFreeBSD-src-df535bd79d3648211cc1b5783e543ab3c1bea2bc.zip
FreeBSD-src-df535bd79d3648211cc1b5783e543ab3c1bea2bc.tar.gz
Update highest_tsn variables when sliding mapping arrays.
Diffstat (limited to 'sys/netinet/sctp_indata.c')
-rw-r--r--sys/netinet/sctp_indata.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/netinet/sctp_indata.c b/sys/netinet/sctp_indata.c
index 97a9733..c1430a5 100644
--- a/sys/netinet/sctp_indata.c
+++ b/sys/netinet/sctp_indata.c
@@ -2390,6 +2390,12 @@ sctp_slide_mapping_arrays(struct sctp_tcb *stcb)
asoc->mapping_array[ii] = 0;
asoc->nr_mapping_array[ii] = 0;
}
+ if (asoc->highest_tsn_inside_map + 1 == asoc->mapping_array_base_tsn) {
+ asoc->highest_tsn_inside_map += (slide_from << 3);
+ }
+ if (asoc->highest_tsn_inside_nr_map + 1 == asoc->mapping_array_base_tsn) {
+ asoc->highest_tsn_inside_nr_map += (slide_from << 3);
+ }
asoc->mapping_array_base_tsn += (slide_from << 3);
if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MAP_LOGGING_ENABLE) {
sctp_log_map(asoc->mapping_array_base_tsn,
OpenPOWER on IntegriCloud