Michael Tuexen
7a9dbc33f9
Remove last argument of sctp_addr_mgmt_ep_sa(), since it is not used.
...
MFC after: 1 week
2020-06-19 12:35:29 +00:00
Michael Tuexen
2d87bacde4
Allow the self reference to be NULL in case the timer was stopped.
...
Submitted by: Timo Voelker
MFC after: 1 week
2020-06-17 15:27:45 +00:00
Michael Tuexen
4471043177
Cleanups, no functional change.
...
MFC after: 1 week
2020-06-14 09:50:00 +00:00
Michael Tuexen
28397ac1ed
Non-functional changes due to upstream cleanup.
...
MFC after: 1 week
2020-06-11 13:34:09 +00:00
Michael Tuexen
5fb132abbb
Whitespace cleanups and removal of a stale comment.
...
MFC after: 1 week
2020-06-08 20:23:20 +00:00
Michael Tuexen
70486b27ae
Retire SCTP_SO_LOCK_TESTING.
...
This was intended to test the locking used in the MacOS X kernel on a
FreeBSD system, to make use of WITNESS and other debugging infrastructure.
This hasn't been used for ages, to take it out to reduce the #ifdef
complexity.
MFC after: 1 week
2020-06-07 14:39:20 +00:00
Michael Tuexen
04ce5df9c9
Remove redundant assignment.
...
MFC after: 3 days
2020-05-18 19:23:01 +00:00
Michael Tuexen
88116b7e4d
Fix logical condition by looking at usecs.
...
This issue was found by cpp-check running on the userland stack.
MFC after: 3 days
2020-05-18 15:02:15 +00:00
Michael Tuexen
00023d8a87
Whitespace change.
...
MFC after: 3 days
2020-05-18 15:00:18 +00:00
Michael Tuexen
83ed508055
Ensure that the SCTP iterator runs with an stcb and inp, which belong to
...
each other.
Reported by: syzbot+82d39d14f2f765e38db0@syzkaller.appspotmail.com
MFC after: 3 days
2020-05-10 22:54:30 +00:00
Michael Tuexen
efd5e69291
Ensure that we have a path when starting the T3 RXT timer.
...
Reported by: syzbot+f2321629047f89486fa3@syzkaller.appspotmail.com
MFC after: 3 days
2020-05-10 17:19:19 +00:00
Michael Tuexen
f4cb790a35
Do more argument validation under INVARIANTS when starting/stopping
...
an SCTP timer.
MFC after: 1 week
2020-04-06 13:58:13 +00:00
Michael Tuexen
25ec355353
Handle integer overflows correctly when converting msecs and secs to
...
ticks and vice versa.
These issues were caught by recently added panic() calls on INVARIANTS
systems.
Reported by: syzbot+b44787b4be7096cd1590@syzkaller.appspotmail.com
Reported by: syzbot+35f82d22805c1e899685@syzkaller.appspotmail.com
MFC after: 1 week
2020-03-28 20:25:45 +00:00
Michael Tuexen
7c63520c42
Remove an optimization, which was incorrect a couple of times and
...
therefore doesn't seem worth to be there.
In this case COOKIE where not retransmitted anymore, when the
socket was already closed.
MFC after: 1 week
2020-03-25 18:20:37 +00:00
Michael Tuexen
37686ccf08
Improve consistency in debug output.
...
MFC after: 1 week
2020-03-25 18:14:12 +00:00
Michael Tuexen
23e3c0880d
Use consistent debug output.
...
MFC after: 1 week
2020-03-25 13:19:41 +00:00
Michael Tuexen
e056fafd92
Don't restore the vnet too early in error cases.
...
MFC after: 1 week
2020-03-25 13:18:37 +00:00
Michael Tuexen
7522682e5e
Only call panic when building with INVARIANTS.
...
MFC after: 1 week
2020-03-24 23:04:07 +00:00
Michael Tuexen
a412576e36
Another cleanup of the timer code. Also be more pedantic about the
...
parameters of the timer start and stop routines. Several inconsistencies
have been fixed in earlier commits. Now they will be catched when running
an INVARIANTS system.
MFC after: 1 week
2020-03-24 22:44:36 +00:00
Michael Tuexen
a57fb68b92
More timer cleanups, no functional change.
...
MFC after: 1 week
2020-03-21 16:12:19 +00:00
Michael Tuexen
6fb7b4fbdb
Consistently provide arguments for timer start and stop routines.
...
This is another step in cleaning up timer handling.
MFC after: 1 week
2020-03-19 21:01:16 +00:00
Michael Tuexen
e95b3d7faf
Cleanup the stream reset and asconf timer.
...
MFC after: 1 week
2020-03-19 18:55:54 +00:00
Michael Tuexen
42078d5ada
The MTU candidates MUST be a multiple of 4, so make them so.
...
MFC after: 1 week
2020-03-19 14:37:28 +00:00
Michael Tuexen
0554e01d8b
Handle the timers in a consistent sequence according to the definition
...
of the timer type.
Just a cleanup, no functional change intended.
MFC after: 1 week
2020-03-17 19:20:12 +00:00
Michael Tuexen
868b51f234
Epochify SCTP.
2020-02-18 21:25:17 +00:00
Michael Tuexen
8803350d6d
Revert https://svnweb.freebsd.org/changeset/base/357761
...
This was suggested by cem@
2020-02-11 20:02:20 +00:00
Michael Tuexen
9803f01cdb
Don't start an SCTP timer using a net, which has been removed.
...
Submitted by: Taylor Brandstetter
MFC after: 1 week
2020-02-11 18:15:57 +00:00
Michael Tuexen
95d27478d2
Use an int instead of a bool variable, since bool is not supported
...
on all platforms the stack is running on in userland.
2020-02-11 14:00:27 +00:00
Michael Tuexen
5555400aa5
Cleanup timer handling.
...
Submitted by: Taylor Brandstetter
MFC after: 1 week
2020-02-09 22:05:41 +00:00
Michael Tuexen
f799ff82fb
Remove unused timer.
...
Submitted by: Taylor Brandstetter
2020-02-04 14:01:07 +00:00
Michael Tuexen
397b1c945f
Ensure that we don't miss a trigger for kicking off the SCTP iterator.
...
Reported by: nwhitehorn@
MFC after: 1 week
2020-01-05 13:56:32 +00:00
Michael Tuexen
776cd558f0
Separate out SCTP related dtrace code.
...
This is based on work done by markj@.
Discussed with: markj@
MFC after: 3 days
2019-10-14 20:32:11 +00:00
Michael Tuexen
44f2a3272e
Cleanup the RTO calculation and perform some consistency checks
...
before computing the RTO.
This should fix an overflow issue reported by Felix Weinrank in
https://github.com/sctplab/usrsctp/issues/375
for the userland stack and found by running a fuzz tester.
MFC after: 3 days
2019-09-22 10:40:15 +00:00
Michael Tuexen
43ecbff2dc
Fix build issues for the userland stack on Raspbian.
2019-08-06 08:33:21 +00:00
Michael Tuexen
8a3cfbff92
Don't free read control entries, which are still on the stream queue when
...
adding them the the read queue fails
MFC after: 1 week
2019-07-15 20:45:01 +00:00
Michael Tuexen
fc26bf717c
Improve input validation for the IPPROTO_SCTP level socket options
...
SCTP_CONNECT_X and SCTP_CONNECT_X_DELAYED.
Some issues where found by running syzkaller.
MFC after: 3 days
2019-05-19 17:28:00 +00:00
Michael Tuexen
6982c0fac1
Fix an SCTP related locking issue. Don't report that the TCB_SEND_LOCK
...
is owned, when it is not.
This issue was found by running syzkaller.
MFC after: 1 week
2019-04-11 20:39:12 +00:00
Michael Tuexen
58e6eeef45
Fix build issue for the userland stack.
...
Joint work with rrs@.
MFC after: 1 week
2019-03-24 12:13:05 +00:00
Michael Tuexen
0d3cf13dab
Fix a signed/unsigned bug when receiving SCTP messages.
...
This is joint work with rrs@.
Reported by: syzbot+6b8a4bc8cc828e9d9790@syzkaller.appspotmail.com
MFC after: 1 week
2019-03-24 09:46:16 +00:00
Michael Tuexen
d9707e43df
Fix a locking issue when reporing outbount messages.
...
MFC after: 3 days
2019-02-10 14:02:14 +00:00
Michael Tuexen
0277ec9c43
Whitespace changes and fixing a typo. No functional change.
...
Approved by: re (kib@)
MFC after: 1 week
2018-09-26 10:24:50 +00:00
Michael Tuexen
1e88cc8b59
Add support for send, receive and state-change DTrace providers for
...
SCTP. They are based on what is specified in the Solaris DTrace manual
for Solaris 11.4.
Reviewed by: 0mp, dteske, markj
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D16839
2018-08-22 21:23:32 +00:00
Michael Tuexen
6ef849e601
Whitespace change.
2018-08-21 13:37:06 +00:00
Michael Tuexen
1a0b021677
Refactor the SHUTDOWN_PENDING state handling.
...
This is not a functional change but a preperation for the upcoming
DTrace support. It is necessary to change the state in one
logical operation, even if it involves clearing the sub state
SHUTDOWN_PENDING.
MFC after: 1 month
2018-08-21 13:25:32 +00:00
Michael Tuexen
839d21d62e
Use the stacb instead of the asoc in state macros.
...
This is not a functional change. Just a preparation for upcoming
dtrace state change provider support.
2018-08-13 13:58:45 +00:00
Michael Tuexen
61a2188021
Use consistently the macors to modify the assoc state.
...
No functional change.
2018-08-13 11:56:21 +00:00
Michael Tuexen
0053ed28ff
Whitespace changes due to changes in ident.
2018-07-19 20:16:33 +00:00
Michael Tuexen
b0471b4b95
Revert https://svnweb.freebsd.org/changeset/base/336503
...
since I also ran the export script with different parameters.
2018-07-19 20:11:14 +00:00
Michael Tuexen
7679e49dd4
Whitespace changes due to change if ident.
2018-07-19 19:33:42 +00:00
Michael Tuexen
eef8d4a973
Use correct mask.
...
Introduced in https://svnweb.freebsd.org/changeset/base/333603 .
Thanks to Irene Ruengler for testing and reporting the issue.
MFC after: 1 week
X-MFC-with: 333603
2018-05-28 13:31:47 +00:00
Michael Tuexen
c692df45fc
Only fillin data srucuture when actually stored.
2018-05-21 14:53:22 +00:00
Matt Macy
f6960e207e
netinet silence warnings
2018-05-19 05:56:21 +00:00
Michael Tuexen
589c42c2c8
Ensure that the MTU's used are multiple of 4.
...
The length of SCTP packets is always a multiple of 4. Therefore,
ensure that the MTUs used are also a multiple of 4.
Thanks to Irene Ruengeler for providing an earlier version of this
patch.
MFC after: 1 week
2018-05-14 13:50:17 +00:00
Michael Tuexen
45d41de5e6
Fix two typos reported by N. J. Mann, which were introduced in
...
https://svnweb.freebsd.org/changeset/base/333382 by me.
MFC after: 3 days
2018-05-08 20:39:35 +00:00
Michael Tuexen
9669e724d1
When reporting ERROR or ABORT chunks, don't use more data
...
that is guaranteed to be contigous.
Thanks to Felix Weinrank for finding and reporting this bug
by fuzzing the usrsctp stack.
MFC after: 3 days
2018-05-08 18:48:51 +00:00
Michael Tuexen
46bf534caf
Don't provide a (meaningless) cmsg when proving a notification
...
in a recvmsg() call.
MFC after: 1 week
2018-01-15 21:59:20 +00:00
Michael Tuexen
ad15e1548f
Unbreak compilation when using SCTP_DETAILED_STR_STATS option.
...
MFC after: 1 week
2017-11-24 12:18:48 +00:00
Pedro F. Giffuni
51369649b0
sys: further adoption of SPDX licensing ID tags.
...
Mainly focus on files that use BSD 3-Clause license.
The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.
Special thanks to Wind River for providing access to "The Duke of
Highlander" tool: an older (2014) run over FreeBSD tree was useful as a
starting point.
2017-11-20 19:43:44 +00:00
Michael Tuexen
28a6adde1d
Allow the setting of the MTU for future paths using an SCTP socket option.
...
This functionality was missing.
MFC after: 1 week
2017-11-03 20:46:12 +00:00
Michael Tuexen
8c8e10b763
Code cleanup, not functional change.
...
This avoids taking a pointer of a packed structure which allows simpler
compilation of the userland stack.
MFC after: 1 week
2017-10-14 10:02:59 +00:00
Michael Tuexen
2c62ba7377
Protect the address workqueue timer by a mutex.
...
MFC after: 1 week
2017-09-20 21:29:54 +00:00
Michael Tuexen
fe40f49bb3
Remove code not used on any platform currently supported.
...
MFC after: 1 week
2017-09-16 21:26:06 +00:00
Michael Tuexen
5ba7f91f9d
Use memset/memcpy instead of bzero/bcopy.
...
Just use one variant instead of both. Use the memset/memcpy
ones since they cause less problems in crossplatform deployment.
MFC after: 1 week
2017-07-19 14:28:58 +00:00
Michael Tuexen
28cd0699b6
Fix the accounting and add code to detect errors in accounting.
...
Joint work with rrs@
MFC after: 1 week
2017-07-19 12:27:40 +00:00
Michael Tuexen
3017b21bb6
Improve compilation on platforms different from FreeBSD.
2017-06-23 08:34:01 +00:00
Gleb Smirnoff
3acfe1e1b0
This code was missing socket unlock and socket buffer lock, but it
...
worked since right now these two locks are the same.
2017-06-08 06:37:11 +00:00
Michael Tuexen
10e0318afa
Allow SCTP to use the hostcache.
...
This patch allows the MTU stored in the hostcache to be used as an
initial value for SCTP paths. When an ICMP PTB message is received,
store the MTU in the hostcache.
MFC after: 1 week
2017-04-29 19:20:50 +00:00
Michael Tuexen
6ebfa5ee14
Use consistently uint32_t for mtu values.
...
This does not change functionality, but this cleanup is need for further
improvements of ICMP handling.
MFC after: 1 week
2017-04-26 19:26:40 +00:00
Michael Tuexen
b7b84c0e02
Whitespace changes.
...
The toolchain for processing the sources has been updated. No functional
change.
MFC after: 3 days
2016-12-26 11:06:41 +00:00
Michael Tuexen
8b9c95f4a9
Ensure that the reported ppid and tsn are taken from the first fragment.
...
This fixes a bug where the wrong ppid was reported, if
* I-DATA was used on the first fragement was not received first
* DATA was used and different ppids where used.
Thanks to Julian Cordes for making me aware of the issue.
MFC after: 1 week
2016-12-11 13:26:35 +00:00
Michael Tuexen
49656eefc8
Cleanup the names of SSN, SID, TSN, FSN, PPID and MID.
...
This made a couple of bugs visible in handling SSN wrap-arounds
when using DATA chunks. Now bulk transfer seems to work fine...
This fixes the issue reported in
https://github.com/sctplab/usrsctp/issues/111
MFC after: 1 week
2016-12-07 19:30:59 +00:00
Michael Tuexen
5b495f17a5
Whitespace changes.
...
The tools using to generate the sources has been updated and produces
different whitespaces. Commit this seperately to avoid intermixing
these with real code changes.
MFC after: 3 days
2016-12-06 10:21:25 +00:00
Michael Tuexen
884d8c53e6
When aborting an association, send the ABORT before notifying the upper
...
layer. For the kernel this doesn't matter, for the userland stack, it does.
While there, silence a clang warning when compiling it in userland.
2016-08-24 06:22:53 +00:00
Michael Tuexen
e19497672b
Unbreak sctp_connectx().
...
MFC after: 3 days
2016-08-20 20:15:36 +00:00
Michael Tuexen
dcb436c936
Ensure that sctp_it_ctl.cur_it does not point to a free object (during
...
a small time window).
Thanks to Byron Campen for reporting the issue and
suggesting a fix.
MFC after: 3 days
2016-08-15 10:16:08 +00:00
Michael Tuexen
9c5ca6f247
Fix a locking issue found by stress testing with tsctp.
...
The inp read lock neeeds to be held when considering control->do_not_ref_stcb.
MFC after: 3 days
2016-08-08 08:20:10 +00:00
Michael Tuexen
4d58b0c3a9
Remove stream queue entry consistently from wheel.
...
While there, improve the handling of drain.
MFC after: 3 days
2016-08-07 12:51:13 +00:00
Michael Tuexen
cf46cace5c
Don't modify a structure without holding a reference count on it.
...
MFC after: 3 days
2016-08-06 15:29:46 +00:00
Michael Tuexen
d1ea5fa9c2
Fix various bugs in relation to the I-DATA chunk support
...
This is joint work with rrs.
MFC after: 3 days
2016-08-06 12:33:15 +00:00
Michael Tuexen
ab3373140d
This patch fixes two bugs related to the SCTP message recovery
...
for messages which have been put on the send queue:
* Do not report any DATA or I-DATA chunk padding.
* Correctly deal with the I-DATA chunk header instead of the DATA
chunk header when the I-DATA extension is used.
Approved by: re (kib)
MFC after: 1 week
2016-06-26 16:38:42 +00:00
Michael Tuexen
9de217ce56
Fix a bug in the handling of non-blocking SCTP 1-to-1 sockets. When using
...
this code in the userland stack, it could result in a loop. This happened on iOS.
However, I was not able to reproduce this when using the code in the kernel.
Thanks to Eugen-Andrei Gavriloaie for reporting the issue and proving detailed
information to find the root of the problem.
Approved by: re (gjb)
MFC after: 1 week
2016-06-23 19:27:29 +00:00
Michael Tuexen
55b8cd93ef
Don't consider the socket when processing an incoming ICMP/ICMP6 packet,
...
which was triggered by an SCTP packet. Whether a socket exists, is just
not relevant.
Approved by: re (kib)
MFC after: 1 week
2016-06-23 09:13:15 +00:00
Michael Tuexen
63d5b56815
Use a separate MID counter for ordered und unordered messages for each
...
outgoing stream.
Thanks to Jens Hoelscher for reporting the issue.
MFC after: 1 week
2016-06-08 17:57:42 +00:00
Michael Tuexen
5f05199c19
Fix a bug introduced by the implementation of I-DATA support.
...
There was the requirement that two structures are in sync,
which is not valid anymore. Therefore don't rely on this
in the code anymore.
Thanks to Radek Malcic for reporting the issue. He found this
when using the userland stack.
MFC after: 1 week
2016-05-13 09:11:41 +00:00
Pedro F. Giffuni
cd0a4ff6a5
netinet/sctp*: minor spelling fixes in comments.
...
No functional change.
Reviewed by: tuexen
2016-05-02 20:56:11 +00:00
Michael Tuexen
7154bf4a41
Add the UDP encaps port as a parameter to sctp_add_remote_addr().
...
This is currently only a code change without any functional
change. But this allows to set the remote encapsulation port
in a more detailed way, which will be provided in a follow-up
commit.
MFC after: 1 week
2016-04-30 14:25:00 +00:00
Michael Tuexen
3c3f9e2a46
Don't assign, just compare...
2016-04-29 20:33:20 +00:00
Michael Tuexen
fd7af143e2
Add support for handling ICMP and ICMP6 messages sent in response
...
to SCTP/UDP/IP and SCTP/UDP/IPv6 packets.
2016-04-29 20:22:01 +00:00
Randall Stewart
abb901c5d7
Complete the UDP tunneling of ICMP msgs to those protocols
...
interested in having tunneled UDP and finding out about the
ICMP (tested by Michael Tuexen with SCTP.. soon to be using
this feature).
Differential Revision: http://reviews.freebsd.org/D5875
2016-04-28 15:53:10 +00:00
Michael Tuexen
7e372b1a40
Remove a function, which is not used anymore.
2016-04-23 09:15:58 +00:00
Michael Tuexen
b1deed45e6
Address issues found by the XCode code analyzer.
2016-04-18 20:16:41 +00:00
Michael Tuexen
98d5fd976b
Put panic() calls under INVARIANTS.
2016-04-18 09:29:14 +00:00
Randall Stewart
9d18771f69
A couple of minor changes that I missed that Michael had done, most noted
...
in these is the change to non-strict ordering for incoming data (this will
make pkt-drill test 14 fail but its expected).
2016-04-07 09:34:41 +00:00
Randall Stewart
44249214d3
This is work done by Michael Tuexen and myself at the IETF. This
...
adds the new I-Data (Interleaved Data) message. This allows a user
to be able to have complete freedom from Head Of Line blocking that
was previously there due to the in-ability to send multiple large
messages without the TSN's being in sequence. The code as been
tested with Michaels various packet drill scripts as well as
inter-networking between the IETF's location in Argentina and Germany.
2016-04-07 09:10:34 +00:00
Michael Tuexen
9a8e308861
Improve compilation on windows 64-bit (for the userland stack).
...
MFC after: 1 week
2016-03-27 10:04:25 +00:00
Michael Tuexen
ed65436366
Add const to several constants. Thanks to Nicholas Nethercote for
...
providing the patch via
https://bugzilla.mozilla.org/show_bug.cgi?id=1255655
MFC after: 1 week
2016-03-23 13:28:04 +00:00
Michael Tuexen
467f0d55b4
Whitespace changes.
2016-02-16 20:33:18 +00:00
Michael Tuexen
2b1c7de4d8
Improve the teardown of the SCTP stack.
...
Obtained from: bz@
MFC after: 1 week
2016-02-16 19:36:25 +00:00
Michael Tuexen
fa89f69240
Store the timer type for logging, because the timer can be freed
...
during processing the timerout.
MFC after: 3 days
2016-01-13 14:28:12 +00:00
Michael Tuexen
c979034b18
Fix the allocation of outgoing streams:
...
* When processing a cookie, use the number of
streams announced in the INIT-ACK.
* When sending an INIT-ACK for an existing
association, use the value from the association,
not from the end-point.
MFC after: 1 week
2015-12-06 16:17:57 +00:00