srm2.0 Change History
srm2.0:
Put release date here
- [LL] Thu Apr 19 15:09:43 PDT 2001
- Changed so code will compile with gcc 2.96, which ships with Red Hat 7.
- [LL] Fri Apr 13 15:00:00 PDT 2001
- Incorporated into mash-code tree.
- Changed to enable Tcl API by default.
- Fixed conf directories. These directories used to be consolidated in
one /common/conf directory in the CVS repository. This setup somehow
broke. The directories have been reconsolidated into the /conf
directory in the CVS repository.
- [LL] Fri Jan 26 16:28:08 PST 2001
- Updated copyright/license headers.
- [LL] Thu Dec 7 15:57:19 PST 2000
- Changes to get rid of compiler warning messages with gcc on Linux and
FreeBSD.
- [SR]
Thu May 6 10:49:49 EDT 1999
- Added include file and to
compile under RedHat 5.2.
- Fixed traffic class IDs in allocate. Now is protocol
message type.
- Renamed hfsc/time.h to hfsc/hfsc_time.h to avoid confusion
with standard C/C++ include files.
- [SR]
Tue May 4 14:16:56 EDT 1999
- Added HFSC support. See files in srm2.0/hfsc/ directory.
- This is disabled by default. To use it, run configure with the
--enable-hfsc-scheduler flag.
- Debugging still underway....watch out! :-)
- [SR]
Fri Jan 8 13:38:21 EST 1999
- Added copyright info.
- Removed obsolete doc files.
The new doc files for the API's etc. live in the www-mash module.
- [YC]
Mon Dec 21 17:40:16 PST 1998
- Fixed UMR errors reported by purify
- [SR]
Thu Dec 17 12:41:01 EST 1998
- Added request_missing function to the
SRMv2_Source object to implement application-triggered
recovery.
- [YC]
Mon Dec 14 18:15:20 PST 1998
- Fixed a bug in the local dispatch loop where the sender's signature
was being incorrectly updated when the sender sent out a repair
reply (SRMv2_REXMIT)
- Fixed the local recovery code so that the recipient of a unicast
repair reply multicasts out an SRMv2_REXMIT packet instead of an
SRMv2_DATA packet.
- [YC]
Mon Dec 14 16:34:33 PST 1998
- Added missing #ifdef SRMv2_LOC_REC around some of the local recovery
code.
- Moved the "send copy of unicast reply" code out of the while loop in
SRMv2_Session::handle_data()
- Fixed bug in send_adu where packets were being malformed when the
delay_until_packet_full_ flag was set
- REXMIT ADUs always seemed to have a fraghdr. Added a check before the
call to send_adu to ensure that the frag flag is set only if it really
is a fragment.
- Added code to log all packets to /tmp on disk. You need to uncomment
the #define SRM_LOG_ALL_PACKETS at the top of session-srmv2.cc to
compile this code in
- [YC]
Fri Dec 11 15:33:44 PST 1998
- Changed all the debugging printfs to calls to the srm_trace macro
This macro is a nop in NDEBUG mode and maps to printf in debug mode
depending on the debugging flags that you turn on thru a call to
srm_trace_flags. Very similar to the MASH MTrace macro.
- Changed the expand_dbufs() function to take a seqno parameter and
expand the dbufs array until it's at least large enough to accomodate
seqno.
- [YC]
Thu Dec 10 14:24:12 PST 1998
- Added debugging API functions srm_set_loss_probability and
srm_get_loss_probability. These functions are nops in non-debugging
mode.
- Got rid of the simflag methods. A loss probability of 0.0 is
the same as no simulated loss.
- [YC]
Thu Dec 10 09:25:28 PST 1998
- Fixed return value from void to int for srm_reset_session
- Updated the tcl and otcl API to include the latest changes to the C API
- [SR]
Thu Dec 10 10:35:32 EST 1998
- SRMv2_Session::reset() now returns the status of
network open.
- srm_create_session now returns NULL when
the network open fails.
- [SR]
Wed Dec 9 18:56:04 EST 1998
- pb->copy was invoking the base BufferPool that does
not build a cmnhdr. Instead correct SRMv2_BufferPool is
invoked in copy(). Hence, "bad version" and "bogus types"
errors have been fixed.
- Changed session constructor now takes 2 ports -- send and recv.
This may potentially be useful for RMX. Also, unicast addresses work
as expected. If you don't care for different send and receive ports,
please use sport = rport.
- [YC]
Tue Dec 8 20:46:17 PST 1998
- Changed the srm_adu_info structure to use the ntp64 struct instead of
two int fields. I had made a mistake in assuming the two fields in the
64-bit structure were seconds and microseconds. It appears that a NTP
timestamp is a 64-bit representation of time in units of
(seconds * 2^32)
- [SR]
Mon Dec 7 15:01:53 GMT 1998
- Fixed bug in unicast step in 2-step local recovery. To activate
2-step recovery, use "--enable-local-recovery" with configure.
WARNING: Receivers without the 2-step recovery code will not function
correctly with senders using local recovery!
- Added separate protocol version number (3) for
2-step local recovery because of the above adverse interaction.
- Added parsing lines for "--enable-local-recovery"
to configure.in in libsrm. Rebuilt configure.
- [SR]
Sat Dec 5 19:25:14 GMT 1998
- Fixed bug in recv code that was causing garbage data to be returned
to the application. Fix involved sending a copy of the packet buffer to
the SRM reassembly code, rather than the original packet buffer itself.
This is required since ADU stacking causes packet contents to be
modified in the parse function.
- Unicast reply, followed by local multicast (2-step local recovery seems
to be broken.) I've commented it out now, so it's in global recovery mode.
Need to add flag to choose between global/2-step local recovery. Next task...
- Fixed htonl and ntohl bugs that caught my attention. There are probably
several more lurking. Need to test between dissimilar architectures.
- Fixed c-example-app in example.cc to reflect Yatin's recent API changes.
- [YC]
Thu Dec 3 11:32:43 PST 1998
- More API changes/additions:
- Added an optional srm_adu_info* parameter to srm_send, srm_read_adu_proc,
and srm_recv_proc. This structure lets you set the atype and
timestamp headers in the ADU packet. Set this argument to NULL if you
don't care. I haven't yet added this parameter to the Tcl/OTcl interfaces.
This parameter is used by MBv2 to set the ADU type to the MBCmd type,
and the timestamp to the time when the cmd was created
- Changed the srm_get_source_id function to return int* instead of a
string representation. The function simply returns a const pointer
to the int[4] representation of the source id.
- Added functions srm_srcid2str and srm_str2srcid to convert between the
int[4] and string representations. The string representation has the
format %08x%08x%08x%08x
- Added API call srm_is_local_source
- [SR]
Thu Dec 3 13:44:04 GMT 1998
- Separated Session_SRMv2::parse_header which was about 3 screenfuls
into separate functions for different packet types.
- Cleaned up code to minimize compiler warnings.
- [YC]
Tue Nov 24 11:19:02 PST 1998
- Replaced the Tcl API functions for srm_set_callbacks/srm_get_callbacks
to a single function srm_callbacks
- [YC]
Mon Nov 23 13:50:32 PST 1998
- Updated SRMv2 API to not include the seqno as part of the call to
srm_send, and instead have the library allocate a new seqno and return
it from the call to srm_send
- Added a C API function
int srm_delay_until_full_packet(srm_session_t s, int flag) that
you can use to request buffering until a full packet is ready to be sent
out. Added the corresponding Tcl and OTcl API functions. This function
returns the original value of the flag before the call to this function.
There is also a function
srm_get_delay_until_full_packet(srm_session_t s) to retrieve the
current value of the flag without changing its state. In the Tcl and OTcl
APIs, the srm_delay_until_full_packet function without any arguments
is used as a wrapper for srm_get_delay_until_full_packet
- Added stacking to the call to send_adu and the corresponding parse_header
function to allow stacking of multiple ADUs within a single packet
- The SRMv2_Request::send_reply function always sets the
delay_until_full_packet flag before sending out any ADUs
- [YC]
Mon Nov 23 13:29:48 PST 1998
- Fixed bugs in example app. The example wasn't actually testing ADUs
inside internal nodes :) This works now.
- [YC]
Fri Nov 20 17:04:09 PST 1998
- Added a C API function
void srm_reset_session(srm_session_t s, unsigned int addr,
unsigned int port, unsigned int ttl); and the corresponding Tcl API
function.
- Added an OTcl API for libsrm. This API should work with mash
(but does not require mash; any otcl shell augmented with libsrm will do)
This is a first cut based on Ketal Patel's original otcl wrappers
- [SR]
Fri Nov 20 18:48:26 GMT 1998
- Updated comments on SRMv2 headers.
- [YC]
Fri Nov 20 12:44:27 PST 1998
- Added app_info parameter to SRM sources.
- srm_create_source no longer takes the srcname parameter
- There are 2 new C API functions:
- void srm_set_app_info(srm_source_t s, const unsigned char *info,
int info_len);
- void srm_get_app_info(srm_source_t s, const unsigned char **infop,
int *info_lenp);
and one new Tcl API function srm_app_info
- srm_app_info $src $info
- set info [srm_app_info $src]
- The srm_source_update C callback function now takes 3 arguments instead
of 2:
void srm_source_update(srm_source_t s, const unsigned char *info,
int info_len);. The Tcl callback function remains the same.
- Fixed bugs in net/transmitter.cc that Steve McCanne had caught in the
mash code.
- Added C API functions:
- void srm_set_session_bandwidth(srm_session_t sess, int bps);
- int srm_get_session_bandwidth(srm_session_t sess);
and a Tcl API function srm_session_bandwidth
- srm_session_bandwidth $sess $bps
- set bps [srm_session_bandwidth $sess]
- [YC]
Thu Nov 19 14:08:18 PST 1998
- Added support for multiple local sources in SRM. This is useful
in, for example, an RMX or an archive playback system. The default local
source-id now contains a count index, so multiple local sources don't
get the same default srcid.
- Updated the example app to test multiple local sources. The example
now creates two local sources, each with its own copy of the file directory
that they multicast to the rest of the participants.
- [YC]
Wed Nov 18 14:32:19 PST 1998
- Changed the nodes_ array in SRMv2_NameSpace to a hash table
- Added support for ADUs in internal nodes of the SNAP tree
- This involved changing the notion of signatures: the signature
of any node now is a combination of an MD5 hash of the signatures
of all children nodes (0 for leaves), the last ADU seqno, and the
number of bytes in the last ADU
- Fixed bug in SRMv2_ReqQueue::intersection()
- Fixed bug in SRMv2_Request::send_reply()
- Updated the example app to send out all files in all sub-directories
under the directory specified on the command line. This tests the
support for ADUs in internal nodes
- [YC]
Wed Nov 18 14:29:08 PST 1998
- Created a CHANGES.html for srm2.0. Remember to add comments to this file
whenever you modify the srm2.0 tree