#       $Id: Specfile,v 1.40 2000/04/28 21:34:58 horms Exp $
Summary: heartbeat - heartbeat subsystem for High-Availability Linux
Name:   heartbeat
Version:        0.4.7bpre1
Release:        1.um.1
Copyright: GPL
URL: http://linux-ha.org/
Group: Utilities
Packager: Alan Robertson <[email protected]>
Source: http://linux-ha.org/download/heartbeat-0.4.7bpre1.tar.gz
Buildroot: /var/tmp/heartbeat-root
%description
heartbeat is a basic heartbeat subsystem for Linux-HA.
It will run scripts at initialization, and when machines go up or down.
This version will also perform IP address takeover using gratuitious ARPs.
It works correctly for a 2-node configuration, and is extensible to larger
configurations.

It implements the following kinds of heartbeats:
       - Bidirectional Serial Rings ("raw" serial ports)
       - UDP/IP braodcast (ethernet, etc)
       - Bidirectional Serial PPP/UDP Rings (using PPP)

%changelog

* Thu Apr 27 2000 Alan Robertson <[email protected]>,
    Volker Wiegand <[email protected]>, Rudy Pawul <[email protected]>,
    Mitja Sarp <[email protected]>, Jacob Rief <[email protected]>
    Guenther Thomsen <[email protected]>,
    Luis Claudio R. Gon�alves <[email protected]>,
    Marcelo Tosatti <[email protected]>
    and Horms <[email protected]>

+ Version 0.4.8  BETA series
 + Added the nice_failback feature. If the cluster is running when
       the primary starts it acts as a secondary. (Luis Claudio)
 + Made the RPM more SuSE-compatible
 + Tidied up logging so it can be to files, to syslog or both (Horms)
 + Tidied up build process (Horms)
 + Updated ldirectord to produce and install a man page and be
   compatible with the fwmark options to The Linux Virtual Server (Horms)
 + Added log rotation for ldirectord and heartbeat using logrotate
   if it is installed
 + Added Audible Alarm resource by Kirk Lawson <[email protected]>
   and myself (Horms)
 + Added init script for ldirectord so it can be run independently
   of heartbeat (Horms)
 + Added sample config file for ldirectord (Horms)
 + An empty /etc/ha.d/conf/ is now part of the rpm distribution
   as this is where ldirectord's configuration belongs (Horms)
 + Minor startup script tweaks.  Hopefully, we should be able to make core
   files should we crash in the future.  Thanks to Holger Kiehl for diagnosing
   the problem.
 + Changed the default port number to our official IANA port number (694)
 + Fixed the serial locking code so that it unlocks when it shuts down.

* Sat Dec 25 1999  Alan Robertson <[email protected]>,
    Volker Wiegand <[email protected]>, Rudy Pawul <[email protected]>,
    Mitja Sarp <[email protected]>, Jacob Rief <[email protected]>
    and Guenther Thomsen <[email protected]>

+ Version 0.4.7
 + Added the nice_failback feature. If the cluster is running when
       the primary starts it acts as a secondary. (Luis Claudio Goncalves)
 + Put in lots of code to make lost packet retransmission happen
 + Stopped trying to use the /proc/ha interface
 + Finished the error recovery in the heartbeat protocol (and got it to work)
 + Added test code for the heartbeat protocol
 + Raised the maximum length of a node name
 + Added Jacob Rief's ldirectord resource type
 + Added Stefan Salzer's <[email protected]> fix for a 'grep' in IPaddr which
       wasn't specific enough and would sometimes get IPaddr confused on
       IP addresses that prefix-matched.
 + Added Lars Marowsky-Bree's suggestion to make the code almost completely
       robust with respect to jumping the clock backwards and forwards
 + Added code from Michael Moerz <[email protected]> to keep findif from
       core dumping if /proc/route can't be read.

* Mon Nov 22 1999  Alan Robertson <[email protected]>,
    Volker Wiegand <[email protected]>, Rudy Pawul <[email protected]>,
    Mitja Sarp <[email protected]>,
    and Guenther Thomsen <[email protected]>

* Tue Nov 22 1999  Alan Robertson <[email protected]>,
    Volker Wiegand <[email protected]>, Rudy Pawul <[email protected]>,
    Mitja Sarp <[email protected]>,
    and Guenther Thomsen <[email protected]>,

+ Version 0.4.6
 + Fixed timing problem in "heartbeat restart" so it's reliable now
 + Made start/stop status compatible with SuSE expectations
 + Made resource status detection compatible with SuSE start/stop expectations
 + Fixed a bug relating to serial and ppp-udp authentication (it never worked)
 + added a little more substance to the error recovery for the HB protocol.
 + Fixed a bug for logging from shell scripts
 + Added a little logging for initial resource acquisition
 + Added #!/bin/sh to the front of shell scripts
 + Fixed Makefile, so that the build root wasn't compiled into pathnames
 + Turned on CTSRTS, enabling for flow control for serial ports.
 + Fixed a bug which kept it from working in non-English environments

* Wed Oct 13 1999  Alan Robertson <[email protected]>,
    Volker Wiegand <[email protected]>, Rudy Pawul <[email protected]>,
    Mitja Sarp <[email protected]>,
    and Guenther Thomsen <[email protected]>

+ Version 0.4.5
 + Mijta Sarp added a new feature to authenticate heartbeat packets
       using a variety of strong authentication techniques
 + Changed resource acquisition and relinquishment to occur in heartbeat,
      instead of in the start/stop script.  This means you don't *really*
      have to use the start/stop script if you don't want to.
 + Added -k option to gracefully shut down current heartbeat instance
 + Added -r option to cause currently running heartbeat to reread config files
 + Added -s option to report on operational status of "heartbeat"
 + Sped up resource acquisition on master restart.
 + Added validation of ipresources file at startup time.
 + Added code to allow the IPaddr takeover script to be given the
       interface to take over, instead of inferring it.  This was requested
       by Lars Marowsky-Bree
 + Incorporated patch from Guenther Thomsen to implement locking for
       serial ports used for heartbeats
 + Incorporated patch from Guenther Thomsen to clean up logging.
       (you can now use syslog and/or file logs)
 + Improved FreeBSD compatibility.
 + Fixed a bug where the FIFO doesn't get created correctly.
 + Fixed a couple of uninitialized variables in heartbeat and /proc/ha code
 + Fixed longstanding crash bug related to getting a SIGALRM while in malloc
       or free.
 + Implemented new memory management scheme, including memory stats

* Thu Sep 16 1999  Alan Robertson <[email protected]>,
    Volker Wiegand <[email protected]>, and Rudy Pawul <[email protected]>
+ Version 0.4.4
 + Fixed a stupid error in handling CIDR addresses in IPaddr.
 + Updated the documentation with the latest from Rudy.

* Wed Sep 15 1999  Alan Robertson <[email protected]>,
    Volker Wiegand <[email protected]>, and Rudy Pawul <[email protected]>
+ Version 0.4.3
 + Changed startup scripts to create /dev/watchdog if needed
 + Turned off loading of /proc/ha module by default.
 + Incorporated bug fix from Thomas Hepper <[email protected]> to IPaddr for
       PPP configurations
 + Put in a fix from Gregor Howey <[email protected]>
       where Gregor found that I had stripped off the ::resourceid part
       of the string in ResourceManager resulting in some bad calls later on.
 +  Made it compliant with the FHS (filesystem hierarchy standard)
 +  Fixed IP address takeover so we can take over on non-eth0 interface
 +  Fixed IP takeover code so we can specify netmasks and broadcast addrs,
       or default them at the user's option.
 +  Added code to report on message buffer usage on SIGUSR[12]
 +  Made SIGUSR1 increment debug level, and SIGUSR2 decrement it.
 +  Incorporated Rudy's latest "Getting Started" document
 +  Made it largely Debian-compliant.  Thanks to Guenther Thomsen, Thomas
       Hepper, I�aki Fern�ndez Villanueva and others.
 +  Made changes to work better with Red Hat 6.1, and SMP code.
 +  Sometimes it seems that the Master Control Process dies :-(

* Sat Aug 14 1999  Alan Robertson <[email protected]>,
    Volker Wiegand <[email protected]>, and Rudy Pawul <[email protected]>
+ Version 0.4.2
 + Implemented simple resource groups
 + Implemented application notification for groups starting/stopping
 + Eliminated restriction on floating IPs only being associated with eth0
 + Added a uniform resource model, with IP resources being only one kind.
       (Thanks to Lars Marowsky-Bree for a good suggestion)
 + Largely rewrote the IP address takeover code, making it clearer, fit
       into the uniform resource model, and removing some restrictions.
 + Preliminary "Getting Started" document by Rudy Pawul
 + Improved the /proc/ha code
 + Fixed memory leak associated with serial ports, and problem with return
       of control to the "master" node.
       (Thanks to Holger Kiehl for reporting them, and testing fixes!)

* Tue Jul 6 1999  Alan Robertson <[email protected]> and
    Volker Wiegand <[email protected]>
+ Version 0.4.1
 + Fixed major memory leak in 0.4.0 (oops!)
 + Added code to eliminate duplicate packets and log lost ones
 + Tightened up PPP/UDP startup/shutdown code
 + Made PPP/UDP peacefully coexist with "normal" udp
 + Made logs more uniform and neater
 + Fixed several other minor bugs
 + Added very preliminary kernel code for monitoring and controlling
       heartbeat via /proc/ha.  Very cool, but not really done yet.

* Wed Jun 30 1999 Alan Robertson <[email protected]>
+ Version 0.4.0
 + Changed packet format from single line positional parameter style
       to a collection of {name,value} pairs.  A vital change for the future.
 + Fixed some bugs with regard to forwarding data around rings
 + We now modify /etc/ppp/ip-up.local, so PPP-udp works out of the box
       (at least for Red Hat)
 + Includes the first version of Volker Wiegand's Hardware Installation Guide
       (it's pretty good for a first version!)

* Wed Jun 09 1999 Alan Robertson <[email protected]>
+ Version 0.3.2
 + Added UDP/PPP bidirectional serial ring heartbeat
       (PPP ensures data integrity on the serial links)
 + fixed a stupid bug which caused shutdown to give unpredictable
       results
 + added timestamps to /var/log/ha-log messages
 + fixed a couple of other minor oversights.

* Sun May 10 1999 Alan Robertson <[email protected]>
+ Version 0.3.1
 + Make ChangeLog file from RPM specfile
 + Made ipresources only install in the DOC directory as a sample

* Sun May 09 1999 Alan Robertson <[email protected]>
+ Version 0.3.0
 + Added UDP broadcast heartbeat (courtesy of Tom Vogt)
 + Significantly restructured code making it easier to add heartbeat media
 + added new directives to config file:
   + udp interface-name
   + udpport port-number
   + baud    serial-baud-rate
 + made manual daemon shutdown easier (only need to kill one)
 + moved the sample ha.cf file to the Doc directory

* Sat Mar 27 1999 Alan Robertson <[email protected]>
+ Version 0.2.0
 + Make an RPM out of it
 + Integrated IP address takeover gotten from Horms
 + Added support to tickle a watchdog timer whenever our heart beats
 + Integrated enough basic code to allow a 2-node demo to occur
 + Integrated patches from Andrew Hildebrand <[email protected]> to allow it
   to run under IRIX.
 - Known Bugs
   - Only supports 2-node clusters
   - Only supports a single IP interface per node in the cluster
   - Doesn't yet include Tom Vogt's ethernet heartbeat code
   - No documentation
   - Not very useful yet :-)
%prep
%setup
%build
make
%install
rm -rf $RPM_BUILD_ROOT
BUILD_ROOT=$RPM_BUILD_ROOT make install
pushd $RPM_BUILD_ROOT/etc/ha.d/resource.d
ln -s ../../../sbin/ldirectord .
popd
%files
%defattr(-,root,root)
%dir /etc/ha.d
/etc/ha.d/harc
/etc/ha.d/shellfuncs
/etc/ha.d/rc.d
/etc/ha.d/conf
/usr/lib/heartbeat
/etc/ha.d/resource.d
/etc/rc.d/init.d/heartbeat
/etc/logrotate.d/heartbeat
/var/run/heartbeat-fifo
%dir /var/run/ppp.d
/sbin/ldirectord
/etc/logrotate.d/ldirectord
/etc/rc.d/init.d/ldirectord
/usr/man/man8/ldirectord.8
%doc /usr/doc/heartbeat
%doc ldirectord/ldirectord.cf
%clean
rm -rf $RPM_BUILD_ROOT
rm -rf $RPM_BUILD_DIR/heartbeat-0.4.7bpre1
%post
#
#       Hack to allow ppp-udp to be notified about PPP processes starting
#
Install_PPP_hack() {
 file2hack=/etc/ppp/ip-up.local
 echo "NOTE: Modifying $file2hack"
 if
   [ ! -f $file2hack ]
 then
   echo '#!/bin/bash' > $file2hack
   chmod 755 $file2hack
 fi
 MARKER="Heartbeat"
 ed -s $file2hack <<-!EOF  2>/dev/null
H
g/ $MARKER\$/d
\$a
#       The following lines added for Linux-HA support          # $MARKER
DEVFILE=\`echo \$DEVICE | sed -e 's!^/dev/!!' -e 's!/!.!g'\`    # $MARKER
OUTFILE=/etc/ha.d/ppp.d/\$DEVFILE                               # $MARKER
(                       # $MARKER
echo "\$IPREMOTE"       # $MARKER
echo "\$IFNAME"         # $MARKER
echo "\$PPPD_PID"       # $MARKER
echo "\$IPLOCAL"                # $MARKER
) > \$OUTFILE           # $MARKER