diff options
author | Xin Long <lucien.xin@gmail.com> | 2017-12-14 19:41:28 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-15 21:52:22 +0300 |
commit | 47b20a88566f89dd0cc80c46f59ce0a12259d404 (patch) | |
tree | 3a2bd7c59ea3d58e5d2f05cfe8d4419d69f81ca8 /include/net/sctp | |
parent | 0fc2ea922c8ad5520c80f03facbf396c81dce802 (diff) | |
download | linux-47b20a88566f89dd0cc80c46f59ce0a12259d404.tar.xz |
sctp: implement report_ftsn for sctp_stream_interleave
report_ftsn is added as a member of sctp_stream_interleave, used to
skip tsn from tsnmap, remove old events from reasm or lobby queue,
and abort pd for data or idata, called for SCTP_CMD_REPORT_FWDTSN
cmd and asoc reset.
sctp_report_iftsn works for ifwdtsn, and sctp_report_fwdtsn works
for fwdtsn. Note that sctp_report_iftsn doesn't do asoc abort_pd,
as stream abort_pd will be done when handling ifwdtsn. But when
ftsn is equal with ftsn, which means asoc reset, asoc abort_pd has
to be done.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Acked-by: Marcelo R. Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/sctp')
-rw-r--r-- | include/net/sctp/stream_interleave.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/sctp/stream_interleave.h b/include/net/sctp/stream_interleave.h index 0db15b50c5e6..0b55c70ac5af 100644 --- a/include/net/sctp/stream_interleave.h +++ b/include/net/sctp/stream_interleave.h @@ -51,6 +51,7 @@ struct sctp_stream_interleave { /* (I-)FORWARD-TSN process */ void (*generate_ftsn)(struct sctp_outq *q, __u32 ctsn); bool (*validate_ftsn)(struct sctp_chunk *chunk); + void (*report_ftsn)(struct sctp_ulpq *ulpq, __u32 ftsn); }; void sctp_stream_interleave_init(struct sctp_stream *stream); |