From 094d70fac7c91a2d4fa26601007f25c9d46b058e Mon Sep 17 00:00:00 2001 From: rrs Date: Mon, 15 Jan 2007 15:12:10 +0000 Subject: - Macroizes the V6ONLY flag check. - Added a short time wait (not used yet) constant - Corrected the type of the crc32c table (it was unsigned long and really is a uint32_t - Got rid of the user of MHeaders until they are truely needed by lower layers. - Fixed an initialization problem in the readq structure (ordering was off). - Found yet another collision bug when the random number generator returns two numbers on one side (during a collision) that are the same. Also added some tracking of cookies that will go away when we know that we have the last collision bug gone. - Fixed an init bug for book_size_scale, that was causing Early FR code to run when it should not. - Fixed a flight size tracking bug that was associated with Early FR but due to above bug also effected all FR's - Fixed it so Max Burst also will apply to Fast Retransmit. - Fixed a bug in the temporary logging code that allowed a static log array overflow - hashinit_flags is now used. - Two last mcopym's were converted to the macro sctp_m_copym that has always been used by all other places - macro sctp_m_copym was converted to upper case. - We now validate sinfo_flags on input (we did not before). - Fixed a bug that prevented a user from sending data and immediately shuting down with one send operation. - Moved to use hashdestroy instead of free() in our macros. - Fixed an init problem in our timed_wait vtag where we did not fully initialize our time-wait blocks. - Timer stops were re-positioned. - A pcb cleanup method was added, however this probably will not be used in BSD.. unless we make module loadable protocols - I think this fixes the mysterious timer bug.. it was a ordering of locks problem in the way we did timers. It now conforms to the timeout(9) manual (except for the _drain part, we had to do this a different way due to locks). - Fixed error return code so we get either CONNREUSED or CONNRESET depending on where one is in progression - Purged an unused clone macro. - Fixed a read erro code issue where we were NOT getting the proper error when the connection was reset. - Purged an unused clone macro. - Fixed a read erro code issue where we were NOT getting the proper error when the connection was reset. Approved by: gnn --- sys/netinet/sctp_indata.h | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'sys/netinet/sctp_indata.h') diff --git a/sys/netinet/sctp_indata.h b/sys/netinet/sctp_indata.h index 9de4694..0dc0ae4 100644 --- a/sys/netinet/sctp_indata.h +++ b/sys/netinet/sctp_indata.h @@ -54,24 +54,28 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, #define sctp_build_readq_entry_mac(_ctl, in_it, a, net, tsn, ppid, context, stream_no, stream_seq, flags, dm) do { \ if (_ctl) { \ - (_ctl)->sinfo_context = a; \ - (_ctl)->stcb = (in_it); \ - (_ctl)->sinfo_assoc_id = sctp_get_associd((in_it)); \ - (_ctl)->port_from = (in_it)->rport; \ + atomic_add_int(&((net)->ref_count), 1); \ (_ctl)->sinfo_stream = stream_no; \ (_ctl)->sinfo_ssn = stream_seq; \ (_ctl)->sinfo_flags = (flags << 8); \ (_ctl)->sinfo_ppid = ppid; \ + (_ctl)->sinfo_context = a; \ (_ctl)->sinfo_timetolive = 0; \ (_ctl)->sinfo_tsn = tsn; \ (_ctl)->sinfo_cumtsn = tsn; \ - (_ctl)->whoFrom = net; \ + (_ctl)->sinfo_assoc_id = sctp_get_associd((in_it)); \ (_ctl)->length = 0; \ - atomic_add_int(&((net)->ref_count), 1); \ + (_ctl)->held_length = 0; \ + (_ctl)->whoFrom = net; \ (_ctl)->data = dm; \ (_ctl)->tail_mbuf = NULL; \ + (_ctl)->stcb = (in_it); \ + (_ctl)->port_from = (in_it)->rport; \ + (_ctl)->spec_flags = 0; \ (_ctl)->do_not_ref_stcb = 0; \ (_ctl)->end_added = 0; \ + (_ctl)->pdapi_aborted = 0; \ + (_ctl)->resv = 0; \ } \ } while (0) -- cgit v1.1