2006-05-17 Allyson
      * Release version 1.8 (cvs tag: rmcast_v1_8)
      * Replaced return values for exit() to EXIT_SUCCESS and EXIT_FAILURE
      * Modified RM_leaveGroup() type from int to void
      * RM_terminate() now returns EXIT_SUCCESS
      * Some code clean up (including rmchat/rmchat.c)
      * Code fixed to avoid gcc4 warnings
      * Fixed major bug in mcastproxy
      * Modified configure.in and tgif/tgwb to update rmcast
        version to 1.8 

2006-03-30 Allyson
      * Added tgif/tgif_tgwb.sh, a script to help compiling tgwb
        from tgif source code

2006-03-15 Allyson
      * Release version 1.7 (cvs tag: rmcast_v1_7)
      * Modified mcastproxy/mcastproxy.c to properly read and use
        REUSEADDR from config file
      * Added -Wall option to CFLAGS in src/Makefile.am mcastproxy/Makefile.am
        and rmchat/Makefile.am
      * Code clean up and fixed to avoid gcc warnings
      * Modified configure.in and tgif/tgwb to update rmcast
        version to 1.7

2005-10-04 Allyson
      * Modified src/rmcast.c to properly detect network interfaces
      * Modified src/rminternals.c to use same default values as the
        config file
      * Modified configure.in and tgif/tgwb to update rmcast
        version to 1.6

2004-09-26 Allyson
      * Some small modifications on tgif/tgwb script
      * Updated tgif/*.c

2004-01-27 Allyson
      
      * Release version 1.4
      
      * config option VERSION changed to RM_VERSION
      
      * Now we use QPL license instead of GPL
      
      * Code is now Autoconfiscated (configure script created)
      * New directory structure
      * New ChangeLog
      
1.3 (cvs tag: rmcast_v1_3)
    Sep 01,2003
       Allyson
        - RELEASE VERSION 1.3
        - Updated TGWB files to conform to tgif release 4.1.43. That release
          added a chat window to TGWB.
        - Updated
          - tgif/wb.c
          - tgif/mainloop.c
          
1.2 (cvs tag: rmcast_v1_2)
    Jul 28,2003
       Allyson
        - RELEASE VERSION 1.2
        - Added
          - tools/scripts/tgwb.sh
        - Updated
          - README
          - tools/scripts/README

1.1 (cvs tag: rmcast_v1_1)
    Apr 12,2003
       Allyson
        - RELEASE VERSION 1.1
        - some code corrections and clean-up
        - updated tgif/wb.c to search for config file $HOME/.tgwb/tgwb.conf 
          before using the default values
        - modified mcastproxy to search for config file 
          $HOME/.tgwb/mcastproxy.conf
        - mcastproxy code clean-up
        - Makefile file clean-up
        - Removed
            - docs/rmcast.config.sample2
            - docs/rmcast.config.sample3
        - Updated
            - tgif/wb/c
            - tools/mcastproxy/mcastproxy.c
            - Makefile
            
1.0 (cvs tag: rmcast_v1)
    Jan 31,2003
       Allyson
        - RELEASE VERSION 1
        - some code corrections and clean-up
        - updated tgif/wb.c to properly read the config files from /etc/tgwb.conf
          or $HOME/.tgwb.conf
        - modified mcastproxy error messages
        - modified signal handler in rminternals.h. Now SIGUSR2 is used to stop
          transmissions
        - Updated
            - rminternals.c
            - doc/rmcast.config.sample3
            - tgif/wb.c
            - tools/mcastproxy/mcastproxy.c
          
1.0rc1( cvs tag: rmcast_v1rc1 )
    Nov 03,2002
       Allyson
        - RELEASE CANDIDATE 1
        - Added a new debug DSUPPRESSION to generate a log file where each line
          identifies either a retransmition (RT) or a NAK suppression (NK or
          nk). NK indicates that a NAK was suppressed, nk indicates that only a
          position of a NAK was suppressed. See rminternals.c and rmevent.c for
          further info.
        - Added new options to the config file. Now the timer parameters must be
          used as follows:
           TIMER_PARAM_A and TIMER_PARAM_B refers to NAK_SND_WAIT event
           TIMER_PARAM_C and TIMER_PARAM_D refers to RET_RCV_WAIT event
           TIMER_PARAM_E and TIMER_PARAM_F refers to RET_SND_WAIT event
        - Updated
            - Makefile
            - rmcast.c
            - rmcast.h
            - rmevent.c
            - rminternals.c
            - rminternals.h
            - doc/rmcast.config.sample3
        
0.99e
    Oct 17,2002
       Allyson
        - Added a new debug DPROCESSING_TIME to generate a log file with the
          processing times (in ms) required for each type of received packets.
          See rmcastReceivePackets in rminternals.c
        - Increased microsleep in mcastproxy
        - Updated
            - rminternals.c
            - Makefile
            - tools/mcastproxy/mcastproxy.c
0.99d
    Sep 22,2002
       Allyson
        - Modified generateTimerValue function. Now users can provide parameters
          to calculate the intervals for NAKs and retransmitions
        - Updated 
        - Updated RM_readConfigFile to adapt to the new config file
        - Modified rmcast.config.
            Option added: TIMER_PARAM_A, 
                          TIMER_PARAM_B,
                          TIMER_PARAM_C,
                          TIMER_PARAM_D
            Option modified: HOST_IDENTIFIED
            Now the must indicate the one-way delay for each host identified. 
            New options allows user to control the timer interval.
            See doc/rmcast.config.sample3 for example
        - Improved RM_getOption function. Now almost every option can be
          obtained using this function
        - Replaced functions:
            RM_getHostTimers by RM_getHostDelay
            RM_setHostTimers by RM_setHostDelay
          Now, the timer intervals can be obtained using these functions and the
          timer parameters values as follows:
            - (TIMER_PARAM_A*T,(TIMER_PARAM_A+TIMER_PARAM_B)*T)
              is the time interval for for NAKs
            - (TIMER_PARAM_C*T,(TIMER_PARAM_C+TIMER_PARAM_D)*T)
              is the time interval for for retransmitions
          Where T is the estimated one-way delay to the sender and the timer
          parameters values can be obtained using the RM_getOption function
        - Updated
            - doc/rmcast.config.sample3
            - rmcast.h
            - rmcast.c
            - rminternals.c
            - rminternals.h
            - rmevent.c
0.99c
    Sep 16,2002
       Allyson
        - Removed BUG related to timer generation in generateTimerValue function
        - Seed for random numbers generation is now created on initialization
        - Idented rmlog.awk script code
        - Inserted NOT TESTED at all, the cacheDeleteNakNode function
        - Updated
            - rmcast.c
            - rmevent.c
            - tools/scripts/rmlog.awk
            - tools/scripts/rmcastplot.bash
            - tools/mcastproxy/mcastproxy.c
0.99b
    Sep 04,2002
       Allyson
        - Replaced word USER by MEMBER
        - Replaced old define MAX_IP_STRING_SIZE by IP_STRING_SIZE
        - Cleaned up DONT_SEND_NAK_AGAIN_IMMEDIATLY references
        - Replaced mispelled function cacheDesactivateMember by
          cacheDeactivateMember
        - Updated
            - rmcast.h
            - rmcast.c
            - rmcache.c
            - rmcache.h
            - rmmsgpckt.c
            - rmstruct.h
            - rmtcp.c
            - rminternals.h
            - rminternals.c
            - Makefile
            - doc/rmcast.config.sample3 
0.99
    Sep 01,2002
       Allyson
        - Now RM_terminate is called only when the event LEV_GRP_EVENT triggers
        - Updated RM_readConfigFile to adapt to the new config file
        - Modified rmcast.config.
            Options removed: AVG_DELAY, TIMER_UPPER, TIMER_LOWER
            Option added: HOSTS_IDENTIFIED
            New option allows for host related timers, see 
              doc/rmcast.config.sample3 for example
        - Added 2 new functions to rmcast.c: RM_setHostTimer and RM_getHostTimer
        - Removed duplicated function generate_uniform
        - generateTimerValue function was modified to adapt to host related 
          timers
        - eventListInsert function was modified to adapt to host related 
          timers
        - Updated every call to evenListInsert
        - Updated
            - rmcast.c
            - rmcast.h
            - rmevent.c
            - rmevent.h
            - rminternals.c
            - rminternals.h
            - examples/rmchat/rmchat.c
        - New file:
            - docs/rmcast.config.sample3

0.98c
    Aug 28,2002
       Allyson
        - SIGTERM is now handled properly in the rmcastHandleSignals function
        - Modified RM_readConfigFile function. Now the user can choose if while 
          the config file is been read its options are displayed.
        - Small modifications in generateTimerValue and generateSample functions
        - Updated application files to adapt to the new RM_readConfigFile 
          function ( tgif/wb.c e examples/rmchat/rmchat.c )
        - Updated
            - rminternals.c
            - rmcast.c
            - rmcast.h
            - rmevent.c
            - tgif/wb.c
            - examples/rmchat/rmchat.c
0.98b
    Aug 15,2002
       Allyson
        - The function RM_readConfigFile now has a return value indicating if
          the file was read successfully
        - Updated application files to adapt to the new RM_readConfigFile 
          function ( tgif/wb.c e examples/rmchat/rmchat.c )
        - Replaced usleep() by nanosleep() in rminternals.c
        - Changed rmcast_options.microsleep type from 'int' to 'unisgned int'
          in rminternals.h
        - Updated
            rmcast.c
            rmcast.h
            rminternlas.h
            rminternals.c
            tgif/wb.c
            examples/rmchat/rmchat.c
0.98a
    Aug 11,2002
       Allyson
        - Now REFRESH messages are sent only after the member has sent the first
          data packet
        - rmchat is no longer sending a packet before prompting
        - rmchat can now use a distribution and a send rate in the send command
        - Updated
            rminternals.c
            rmcast.c
            rmevents.c
            rmevents.h
            examples/rmchat/rmchat.c
0.98
    Jul 10,2002
       Allyson & Milena
        - BUG removed: when using multiple nacks there was a non-initilized
          variable in rmcastProcessDataPacket function
        - Updated
            rminternals.c
            
0.97
    Jul 03,2002
       Allyson & Milena
        - Now we no longer need to provide max_packet_sent parameter to 
          rmcastplot.bash. The file rmcast.c was modified to write the number of
          sent packets in the log file (when log is enabled, of course)
        - Added missing RM_terminate() function call in rmchat.c
        - Updated
            rmcast.c
            tools/scripts/rmcastplot.bash
            tools/scripts/rmlog.awk
            examples/rmchat/rmchat.c

0.96 ( cvs tag: rmcast_beta2 )
    Jul 02,2002
       Allyson & Milena        
        - BUG FOUND & REMOVED: the MAX_MEMBER_CACHE_SIZE and TIMER_DISTRIBUTION
             option was not properly handled in RM_readConfigFile
        - Data or retransmission packets from user i with sn > i.last_seq_rcv
             don't need to be handled (rmcastProcessDataPacket)
        - Updated:
             rminternals.c
             rmcast.c
             rmmsgpckt.c
             examples/rmchat/rmchat.c
             tools/scripts/rmcastplot.bash
             
0.95
    Jul 01,2002
       Allyson
         - BUG REMOVED regarding infinite loop in the rmcastReceivePackets: the
              problem was caused by a missing pthread_mutex_lock in the 
              rmcastHandleSignals function
         - BUG REMOVED regarding refresh messages handling: there was an 
              incorrect variable reference in the initialization of the for loop
              in the rmcastProcessRefreshPacket function
         - BUG REMOVED regarding sending of retransmissions: wrong ifdef in the
              rmcastCacheContains function
         - Idented some files
         - Created new function cacheCountMembers to count registered members.
              This function will be used to adjust the timers when the
              distribution == EXPONENTIAL
         - Added new defines to rmstruct.h
         - Improved some comments in rmstruct.h
         - Updated
              rminternals.c
              rmevent.c
              rmstruct.h
              rmcache.h
              rmcache.c
              examples/rmchat/rmchat.c
       
0.94
    Jun 25,2002
       Allyson & Milena
         - BUG FOUND: program goes to a infinite loop when dealing with NACKs
              from other members
         - Temporary debug defined: DNAK_RCV
         - New actions defined in rmevent.c: SUPPRESSED_NAK and RET_RCV_EXPIRED
         - NAK receiving and events handle functions rewritten
         - Updated
              rminternals.c
              rmevent.c
              rmevent.h
              rmcache.c
         
0.93
    Jun 18,2002
       Allyson
         - Removed BUG regarding refresh messages (rminternals.c)
         - Removed files doc/inconsistence.HOWTO and doc/join-howto.txt
         - Removed log directory
         - Added tools/mcastproxy/Makefile
         - Updated 
              CONTENTS
              tools/mcastproxy/mcastproxy.c
              tools/mcastproxy/README
              tools/mcastproxy/mcastproxy.conf
              examples/rmchat/rmchat.c
0.92
    Jun 13,2002
       Allyson 
         - Updated tools/mcastproxy
         - Updated CONTENTS, rmmsgpckt.c
0.91
    Jun 12,2002
       Allyson
         - Included a new field in all RML(Reliable Multicast Library) packets,
           called "flags"
         - Modified files rmstruct.h, rmcast.c, rminternals.c and rmmsgpckt.c to
           add support for the new field "flags"
         - Added new application mcastproxy in the tools directory - using this
           application one can make a "unicast bridge" between 2 or more multicast
           groups. See README in tools/mcastproxy for further info
        
0.9 (cvs tag: rmcast_beta1)
    May 03,2002
       Sadoc
        - Leave group routines implemented. Now members send a
	LEAVE_GROUP_PACKET before actually leaving the group.
0.8.4
    Apr 22,2002
       Allyson
         - Updated files: README, INSTALL, doc/rmcast.config.README, 
               doc/rmcast.config.sample2, examples/rmchat/rmchat.c
0.8.3
    Apr 14,2002
       Allyson
         - Updated rmlog.awk and rminternals.c to deal with SINGLE_NACK
0.8.2
    Apr 12,2002
       Allyson
         - Some otimization on the code in rmcastReceivePackets related to 
               RET_SND_WAIT event insertion.
         - Rewritten the generateTimerValue function in rmevent.c. Now we can
               generate different timer values to each kind of event.
0.8.1
    Apr 10,2002
       Allyson, Milena & Sadoc
         - Removed some bugs related to some wrong #ifdef in the code
         - New updates in scripts to deal with SINGLE_NACK (again!)
0.8 (cvs tag: single_nack_beta2)
    Apr 08,2002
       Allyson, Milena & Sadoc
         - Updated log functions and scripts to deal with SINGLE_NACK
         - Removed the 0.7 KNOWN BUG
         - Removed references to the DEFAULT_TIMER_VALUE vector in rmevent.c
              when RANDOM_TIMERS is enabled.
         - Update rmcastProcessRefreshPacket function to work properly when
              SINGLE_NACK is enabled.
         - New options available in the doc/rmcast.config.sample2 (see that file 
             for further info):
             MAX_NAK: indicates the max number of nacks that can be sent for each
                      sn.
             MAX_MEMBER_CACHE_SIZE: indicates how many packets we will store for
                                    each member.
         - Removed references to MAX_NAK in all files. Now we are using 
             rmcast_option.max_nak instead of MAX_NAK.
         - Removed references to MAX_MEMBER_CACHE_SIZE in all files. Now we are using 
             rmcast_option.max_member_cache_size instead of MAX_MEMBER_CACHE_SIZE.
           
0.7 (just a bkp version, not functional. cvs tag: single_nack_bkp)
    Apr 03,2002
       Allyson & Milena
         - Bounded, correctly this time, the max number of nack that we can
               send for a packet when using SINGLE_NACK. This number of nacks is
               bounded by the MAX_NAK constant, defined in rmstruct.c
         - Removed some bugs related to the insertion of events when using
              SINGLE_NACK.
         - New debug defines in Makefile:
              Now if you want to debug the FULL cache content you must define
                  DCACHE_CONTENTS in addition of DEBUG_SHOW (see Makefile for
                  further info)
              Now if you want to debug the FULL message content you must define
                  DMSG_CONTENTS in addition of DEBUG_SHOW (see Makefile for
                  further info)
         - KNOWN BUG: sometimes, in a event list node,the IP string and the PID
              change their values to strange ones. This stops the sending of 
              nacks and, in consequence, the sending of data to the application. 

0.6 (cvs tag: single_nack_beta1)
    Mar 31,2002
       Allyson
         - Removed some bugs related to the SINGLE_NACK feature.
         - Added new fields to the log file to support SINGLE_NACK mask logging.
         - Updated tools/scripts/rmcastplot.bash script to deal with the new 
             fields in the log file.
         - Removed some old scripts from the CVS repository.
         - Fixed some (not all) FIXME requests in some files.
         - Improved debug messages.Now we can "barely" understand what they said
         - Implemented generation of UNIFORM random timers. (You must define 
             DRANDOM_TIMERS to enable it. See Makefile for details)
         - New options available in the doc/rmcast.config.sample2 (see that file 
             for further info):
             TIMER_LOWER: this option replace the old AVG_DELAY option. It's the
                          lower bound for the random timers
             TIMER_UPPER: the upper bound for the random timers
             TIMER_DISTRIBUTION: the distribution for the random timers. By now
                                 the only possible distribution is UNIFORM.
        
0.5 
    Mar 19,2002
       Allyson & Milena
         First try in optimizing nack sending (compile with SINGLE_NACK to 
             enable this feature. See Makefile for details)
0.2
    Mar 01,2002
       Allyson
         Included one example application (see the examples directory)
         
0.2pre7
     Feb 14,2002
        Allyson
          Included REFRESH_TIMER option in the option file
0.2pre6
     Feb 04,2002
        Allyson & Sadoc
          Several bug fixes regarding SUPPORT_FOR_NEW_USERS.
          Using new TGIF(QPL) version 4.1.41.82
          We have created a configuration file (see doc/rmcast.config.README e
            doc/rmcast.config.sample). Now the user can set the protocol
            through the options in that file.
          Now TGWB has no need to define SUPPORT_FOR_NEW_USERS (use rmcast.config
             instead)
          Now "Unicast Mode" is available
          Updated CONTENTS file
0.2pre5
     Nov 22,2001
        Allyson, Milena & Sadoc
          Started testing SUPPORT_FOR_NEW_USERS blocks.
          The protocol running without the SUPPORT_FOR_NEW_USERS is working well.
0.2pre4
     Nov 12
        Allyson, Milena & Sadoc
          We did some changes regarding RedHat 7.2 gcc compability.
          We didn't test SUPPORT_FOR_NEW_USERS routines.
0.2pre3
     Oct 30
        Allyson, Milena & Sadoc
          Finished first level of SUPPORT_FOR_NEW_USERS
          Obs: The TGWB Makefile,wb.c and mainloop.c files were update too.
0.2pre2
     Oct 22
        Sadoc & Milena
          Added some routines related to the support for new users.
          The changes can be activated defining SUPPORT_FOR_NEW_USERS constant.
          Obs: The TGWB Makefile,wb.c and mainloop.c files were update too.
          
0.2pre1 
     Oct 18
        Allyson
          code clean up 
          Update of README, AUTHORS and INSTALL files

Pre-release (0.1)
     Oct 17
        Actually this was the first release.
        It was used with Tangram2 Whiteboard (tgwb) in Tgif-4.41 by Bill Cheng. 
        Further info about Tgif can be found at:
            http://bourbon.cs.umd.edu:8001/tgif

