diff options
author | tuexen <tuexen@FreeBSD.org> | 2010-04-20 08:51:21 +0000 |
---|---|---|
committer | tuexen <tuexen@FreeBSD.org> | 2010-04-20 08:51:21 +0000 |
commit | df535bd79d3648211cc1b5783e543ab3c1bea2bc (patch) | |
tree | bae3eda3972be614b8ea775eb08794155cf12a98 /sys/netinet/sctp_indata.c | |
parent | be51b447531f8e30cefc7e013450cc0e2511fcd6 (diff) | |
download | FreeBSD-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.c | 6 |
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, |