Gleb Smirnoff
8f134647ca
Switch the entire IPv4 stack to keep the IP packet header
...
in network byte order. Any host byte order processing is
done in local variables and host byte order values are
never[1] written to a packet.
After this change a packet processed by the stack isn't
modified at all[2] except for TTL.
After this change a network stack hacker doesn't need to
scratch his head trying to figure out what is the byte order
at the given place in the stack.
[1] One exception still remains. The raw sockets convert host
byte order before pass a packet to an application. Probably
this would remain for ages for compatibility.
[2] The ip_input() still subtructs header len from ip->ip_len,
but this is planned to be fixed soon.
Reviewed by: luigi, Maxim Dounin <mdounin mdounin.ru>
Tested by: ray, Olivier Cochard-Labbe <olivier cochard.me>
2012-10-22 21:09:03 +00:00
Michael Tuexen
5e20b91dbe
Changes which improve compilation if neither INET nor INET6 is defined.
...
MFC after: 3 days
2012-07-15 20:16:17 +00:00
Michael Tuexen
e0e00a4d0f
#ifdef INET and INET6 consistently. This also fixes a bug, where
...
it was done wrong.
MFC after: 3 days
2012-07-15 11:04:49 +00:00
Michael Tuexen
b1754ad17b
Pass the src and dst address of a received packet explicitly around.
...
MFC after: 3 days
2012-06-28 16:01:08 +00:00
Michael Tuexen
39803b8c58
Whitespace cleanup.
...
MFC after: 3 days
2012-06-25 17:15:09 +00:00
Michael Tuexen
9f4ab62e92
Remove redundant #ifdef. Reported by gnn@.
...
MFC after: 3 days
2012-06-21 12:51:24 +00:00
Michael Tuexen
807aad636f
Use consistent text at the begining of the files.
...
MFC after: 3 days
2012-05-23 11:26:28 +00:00
Michael Tuexen
4b1f78e1af
Provide the error code in SCTP_PEER_ADDR_CHANGE notifications as
...
specified in RFC 6458.
MFC after: 3 days
2012-05-13 17:36:04 +00:00
Michael Tuexen
410a3b1ef0
Use ECONNABORTED in cases where the ABORT was sent to the peer.
...
MFC after: 3 days
2012-05-13 16:56:16 +00:00
Michael Tuexen
a2b42326b5
Provide in the association change notification the received ABORT chunk
...
if case of SCTP_COMM_LOST or SCTP_CANT_STR_ASSOC as required by RFC 6458.
MFC after: 3 days
2012-05-12 20:11:35 +00:00
Michael Tuexen
8c501e516b
Address clang warnings.
...
MFC after: 3 days
2012-05-06 14:50:54 +00:00
Michael Tuexen
3f826ed2f3
Remove debug code.
...
MFC after: 3 days
2012-05-06 11:37:41 +00:00
Michael Tuexen
9935403ae1
Add support for SCTP_SEND_FAILED_EVENT as required by RFC 6458.
...
MFC after: 3 days
2012-05-06 11:02:53 +00:00
Michael Tuexen
f6faece611
Do error checking for the SCTP_RESET_STREAMS, SCTP_RESET_ASSOC,
...
and SCTP_ADD_STREAMS socket options as specified by RFC 6525.
MFC after: 3 days
2012-05-05 14:06:15 +00:00
Michael Tuexen
cdedb5425c
Add support for the SCTP_ENABLE_STREAM_RESET socket option to
...
getsockopt(). This improves the support of RFC 6525.
MFC after: 3 days
2012-05-04 17:18:02 +00:00
Michael Tuexen
88d935dad7
Add support for SCTP_STREAM_CHANGE_EVENT, SCTP_ASSOC_RESET_EVENT as
...
required by RFC 6525. This also fixes SCTP_STREAM_RESET_EVENT.
MFC after: 3 days
2012-05-04 15:49:08 +00:00
Michael Tuexen
5fc8d746ee
Add support for missing gauth_number_of_chunks field. This Bug was
...
found by Irene Ruengeler.
MFC after: 1 week
2012-04-30 08:44:21 +00:00
Michael Tuexen
ed72abc07d
Whitespace changes.
...
MFC after: 3 days
2012-04-28 16:32:49 +00:00
Michael Tuexen
90eba9b693
Whitespace changes.
...
MFC after: 3 days
2012-04-19 15:30:15 +00:00
Michael Tuexen
17b611fb21
Remove duplicate condition in if statement.
...
Obtained from: brucec@
MFC after: 3 days
2012-04-06 09:03:02 +00:00
Randall Stewart
c4e848b770
Make stream our stream reset implementation
...
compliant to RFC6525.
MFC after: 1 month
2012-03-29 13:36:53 +00:00
Michael Tuexen
dea47f3999
Clean up, no functional change.
...
MFC after: 3 days.
2012-03-15 14:22:05 +00:00
Michael Tuexen
310a027788
Remove two clang warnings.
...
MFC after: 1 month.
2012-02-18 16:06:15 +00:00
Michael Tuexen
8de4bcc1f7
Fix two bugs, which result in a panic when calling getsockopt()
...
using SCTP_RECVINFO or SCTP_NXTINFO.
Reported by Clement Lecigne and forwarded to us by zi@.
MFC after: 3 days.
2012-01-14 09:10:20 +00:00
Michael Tuexen
60990c0c06
Address issues found by clang. While there, fix also some style
...
issues.
MFC after: 3 months.
2011-12-27 10:16:24 +00:00
Michael Tuexen
7215cc1b74
Fix unused parameter warnings.
...
While there, fix some whitespace issues.
MFC after: 3 months.
2011-12-17 19:21:40 +00:00
Michael Tuexen
972478a4c0
Fix a bug reported by Irene Ruengeler which resulted in not sending
...
out HEARTBEATs when requested by the user. The HEARTBEATs were only
queued, but not actually sent out.
MFC after: 2 months.
2011-12-10 10:52:54 +00:00
Michael Tuexen
c9c5805975
Add support for the SCTP_REMOTE_UDP_ENCAPS_PORT socket option.
...
Retire the the now unused sctp_udp_tunneling_for_client_enable
sysctl variable.
MFC after: 3 months.
2011-11-20 15:00:45 +00:00
Michael Tuexen
7906f59a29
Use the most significant 6 bits of the dscp instead of the least
...
significant ones.
This has changed in the latest version of the socket API ID and
provides backwards compatibility and gets it in syn with the
usage of the IP_TOS socket option.
MFC after: 3 days.
2011-10-11 13:24:37 +00:00
Michael Tuexen
80c79bbe7a
Fix the enabling/disabling of Heartbeats and path MTU
...
discovery when using the SCTP_PEER_ADDR_PARAMS socket option.
Approved by: re
MFC after: 1 month.
2011-09-17 08:50:29 +00:00
Michael Tuexen
92776dfd5a
Make sure that SCTP rejects broadcast, multicast and wildcard addresses
...
as remote addresses.
Approved by: re
MFC after: 1 month.
2011-09-15 08:49:54 +00:00
Michael Tuexen
c55b70cef6
Ensure that 1-to-1 style SCTP sockets can only be connected once.
...
Allow implicit setup also for 1-to-1 style sockets as described
in the latest version of the socket API ID.
Approved by: re
MFC after: 1 month
2011-09-14 19:10:13 +00:00
Michael Tuexen
58bdb69150
Fix the handling of the flowlabel and DSCP value in the SCTP_PEER_ADDR_PARAMS
...
socket option.
Honor the net.inet6.ip6.auto_flowlabel sysctl setting.
Approved by: re (bz)
MFC after: 1 month.
2011-09-14 08:15:21 +00:00
Michael Tuexen
3900c0936f
Fix the handling of [gs]etsockopt() unconnected 1-to-1 style sockets.
...
While there:
* Fix a locking issue in setsockopt() of SCTP_CMT_ON_OFF.
* Fix a bug in setsockopt() of SCTP_DEFAULT_PRINFO, where the pr_value
was ignored.
Approved by: re@
MFC after: 2 months.
2011-08-16 21:04:18 +00:00
Michael Tuexen
b10f2dc889
Add support for the spp_dscp field in the SCTP_PEER_ADDR_PARAMS
...
socket option. Backwards compatibility is provided by still
supporting the spp_ipv4_tos field.
Approved by: re@
MFC after: 2 months.
2011-08-14 20:55:32 +00:00
Michael Tuexen
ca85e9482a
The result of a joint work between rrs@ and myself at the IETF:
...
* Decouple the path supervision using a separate HB timer per path.
* Add support for potentially failed state.
* Bring back RTO.min to 1 second.
* Accept packets on IP-addresses already announced via an ASCONF
* While there: do some cleanups.
Approved by: re@
MFC after: 2 months.
2011-08-03 20:21:00 +00:00
Michael Tuexen
b845acda75
Add the missing sca_keylength field to the sctp_authkey structure,
...
which is used the the SCTP_AUTH_KEY socket option.
MFC after: 1 month.
2011-06-30 16:56:55 +00:00
Michael Tuexen
6037f89c81
Add SCTP_DEFAULT_PRINFO socket option.
...
Fix the SCTP_DEFAULT_SNDINFO socket option: Don't clear the
PR SCTP policy when setting sinfo_flags.
MFC after: 1 month.
2011-06-16 21:12:36 +00:00
Michael Tuexen
e2e7c62edc
Add support for the newly added SCTP API.
...
In particular add support for:
* SCTP_SNDINFO, SCTP_PRINFO, SCTP_AUTHINFO, SCTP_DSTADDRV4, and
SCTP_DSTADDRV6 cmsgs.
* SCTP_NXTINFO and SCTP_RCVINFO cmgs.
* SCTP_EVENT, SCTP_RECVRCVINFO, SCTP_RECVNXTINFO and SCTP_DEFAULT_SNDINFO
socket option.
* Special association ids (SCTP_FUTURE_ASSOC, ...)
* sctp_recvv() and sctp_sendv() functions.
MFC after: 1 month.
2011-06-15 23:50:27 +00:00
Michael Tuexen
4f36da915f
Copy out the mtu when calling getsockopt() with SCTP_GET_PEER_ADDR_INFO.
...
MFC after: 1 week.
2011-05-17 15:57:31 +00:00
Michael Tuexen
689e6a5fa3
Fix a locking issue showing up on Mac OS X when subscribing to
...
authentication events. DTLS/SCTP renegotiations trigger the bug.
MFC after: 2 weeks.
2011-05-08 09:11:59 +00:00
Michael Tuexen
c3d72c80d3
Implement Resource Pooling V2 and an MPTCP like congestion
...
control.
Based on a patch received from Martin Becke.
MFC after: 2 weeks.
2011-05-04 21:27:05 +00:00
Michael Tuexen
e6194c2ed4
Improve compilation of SCTP code without INET support.
...
Some bugs where fixed while doing this:
* ASCONF-ACK messages might use wrong port number when using
IPv6.
* Checking for additional addresses takes the correct address
into account and also does not do more comparisons than
necessary.
This patch is based on one received from bz@ who was
sponsored by The FreeBSD Foundation and iXsystems.
MFC after: 1 week
2011-04-30 11:18:16 +00:00
Randall Stewart
48b6c64938
Adds a new Congestion Control that helps reduce
...
the RTT that a flow will build up in buffers in
transit. It is a slight modification to RFC2581
but is more friendly i.e. less aggressive.
MFC after: 3 months
2011-03-01 00:37:46 +00:00
Randall Stewart
299108c5a2
Improvements to CC modules:
...
1) Add four new points that allow you to get more information
to cc algo's
2) Fix the case where user changes module on a existing TCB, in
such a case, the initialization module needs to be called on all nets.
3) Move htcp_cc structure to a union that other modules can use.
4) Add 5th point for get/set socket options for cc_module specific options
MFC after: 2 months
2011-02-26 15:23:46 +00:00
Michael Tuexen
0191fb6de2
* Fix several bugs where the scaled versions of srtt and rttvar
...
where used incorrectly.
* Use appropriate variable names for RTO instead of RTT.
MFC after: 3 months.
2011-02-24 22:58:15 +00:00
Randall Stewart
5d40cf5d23
1) Typo correction in comments and one spacing change.
...
2) Mass update to all copyrights.
MFC after: 3 Months
2011-02-05 12:12:51 +00:00
Michael Tuexen
252f7f93b0
Fix several bugs in the stream schedulers.
...
From Robin Seggelmann.
MFC after: 3 months.
2011-02-03 20:44:49 +00:00
Randall Stewart
ae26e0a472
Fix the per CPU stats so that:
...
1) They don't use the giant "MAX_CPU" define and instead
are allocated dynamically based on mp_ncpus
2) Will zero with the netstat -z -s -p sctp
3) Will be properly handled by both the sctp_init and finish
(the multi-net stuff was incorrectly bzero'ing in sctp_init
the wrong size.. the bzero is now moved to the right places).
And of course the free is put in at the very end.
MFC after: 3 Months
2011-02-03 11:52:22 +00:00
Michael Tuexen
507c72969d
Make SCTP_MAX_BURST compliant with the latest version of
...
the socket API ID. This is not compatible with the API
in stable/8.
2011-01-26 19:55:54 +00:00