%define version 1.2.5 %define rel 1 %define name heartbeat # compatability macros %{!?lib: %global lib lib} %{!?mklibname: %global mklibname(ds) %lib%{1}%{?2:%{2}}%{?3:_%{3}}%{-s:-static}%{-d:-devel}} %{!?mkrel:%define mkrel(c:) %{-c:0.%{-c*}.}%{!?_with_unstable:%(perl -e '$_="%{1}";m/(.\*)(\\d+)$/;$rel=${2}-1;re;print "$1$rel";').%{?subrel:%subrel}%{!?subrel:1}.%{?distversion:%distversion}%{?!distversion:%(echo $[%{mdkversion}/10])}}%{?_with_unstable:%{1}}%{?distsuffix:%distsuffix}%{?!distsuffix:mdk}} %if %mdkversion <= 1000 %define __libtoolize /bin/true %endif %define heartmajor 0 %define libheart %mklibname heartbeat %heartmajor %define stonithmajor 0 %define libstonith %mklibname heartbeat-stonith %stonithmajor %define pilsmajor 0 %define libpils %mklibname heartbeat-pils %pilsmajor Summary: Heartbeat - heartbeat subsystem for High-Availability Linux Name: %{name} Version: %{version} Release: %mkrel %rel License: GPL URL: http://linux-ha.org/ Group: System/Servers Source0: http://linux-ha.org/download/%{name}-%{version}.tar.gz Source1: haresources Source2: ha.cf Source3: authkeys Source4: www.cf Source5: http://linux-ha.org/download/%{name}-%{version}.sums.asc #Patch0: ldirectord-init.patch #Patch1: heartbeat-time.patch #Patch2: heartbeat-init.patch Patch3: heartbeat-1.0.4-ldirectory-usage.patch Requires: sysklogd # http://qa.mandriva.com/show_bug.cgi?id=23050 Requires: heartbeat-pils = %{version}-%{release} BuildRequires: e2fsprogs-devel BuildRequires: glib-devel BuildRequires: libdb-devel BuildRequires: libxml-devel BuildRequires: libxml2-devel BuildRequires: lynx BuildRequires: net2-devel >= 1.1.2.1-1mdk BuildRequires: net-snmp BuildRequires: net-snmp-devel BuildRequires: openssh-clients BuildRequires: openssl-devel BuildRequires: pcre-devel BuildRequires: pkgconfig Requires(pre): rpm-helper Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-%{release}-buildroot %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) %package -n %{libheart} Summary: Development files from heartbeat Group: System/Libraries Provides: lib%{name} = %{version}-%{release} %description -n %{libheart} Library need by heartbeat 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) %package -n %{libheart}-devel Summary: Development files from heartbeat Group: Development/Other Provides: lib%{name}-devel = %{version}-%{release} Requires: %{libheart} = %{version} %description -n %{libheart}-devel Development files from heartbeat 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) %package ldirectord Summary: Monitor daemon for maintaining high availability resources Group: System/Servers Requires: perl perl-libwww-perl perl-Net_SSLeay ipvsadm Requires(pre): rpm-helper %description ldirectord ldirectord is a stand-alone daemon to monitor services of real for virtual services provided by The Linux Virtual Server (http://www.linuxvirtualserver.org/). It is simple to install and works with the heartbeat code (http://www.linux-ha.org/). %package stonith Summary: Provides an interface to Shoot The Other Node In The Head Group: System/Servers Requires: telnet %description stonith The STONITH module (a.k.a. STOMITH) provides an extensible interface for remotely powering down a node in the cluster. The idea is quite simple: When the software running on one machine wants to make sure another machine in the cluster is not using a resource, pull the plug on the other machine. It's simple and reliable, albeit admittedly brutal. %package -n %{libstonith} Summary: Library from heartbeat Group: System/Libraries Provides: libstonith = %{version}-%{release} Provides: libhearbeat-stonith = %{version}-%{release} %description -n %libstonith The STONITH module (a.k.a. STOMITH) provides an extensible interface for remotely powering down a node in the cluster. The idea is quite simple: When the software running on one machine wants to make sure another machine in the cluster is not using a resource, pull the plug on the other machine. It's simple and reliable, albeit admittedly brutal. %package -n %{libstonith}-devel Summary: Development files from heartbeat Group: Development/Other Provides: libstonith-devel = %{version}-%{release} Provides: libhearbeat-stonith-devel = %{version}-%{release} Requires: %{libstonith} = %{version} %description -n %{libstonith}-devel The STONITH module (a.k.a. STOMITH) provides an extensible interface for remotely powering down a node in the cluster. The idea is quite simple: When the software running on one machine wants to make sure another machine in the cluster is not using a resource, pull the plug on the other machine. It's simple and reliable, albeit admittedly brutal. %package pils Summary: Provides a general plugin and interface loading library Group: System/Servers %description pils PILS is an generalized and portable open source Plugin and Interface Loading System. PILS was developed as part of the Open Cluster Framework reference implementation, and is designed to be directly usable by a wide variety of other applications. PILS manages both plugins (loadable objects), and the interfaces these plugins implement. PILS is designed to support any number of plugins implementing any number of interfaces. %package -n %{libpils} Summary: Provides a general plugin and interface loading library Group: System/Libraries Provides: libpils = %{version}-%{release} Provides: libheartbeat-pils = %{version}-%{release} %description -n %{libpils} PILS is an generalized and portable open source Plugin and Interface Loading System. PILS was developed as part of the Open Cluster Framework reference implementation, and is designed to be directly usable by a wide variety of other applications. PILS manages both plugins (loadable objects), and the interfaces these plugins implement. PILS is designed to support any number of plugins implementing any number of interfaces. %package -n %{libpils}-devel Summary: Provides a general plugin and interface loading library Group: Development/Other Requires: %{libpils} = %{version} Provides: libpils-devel = %{version}-%{release} Provides: libheartbeat-pils-devel = %{version}-%{release} %description -n %{libpils}-devel PILS is an generalized and portable open source Plugin and Interface Loading System. PILS was developed as part of the Open Cluster Framework reference implementation, and is designed to be directly usable by a wide variety of other applications. PILS manages both plugins (loadable objects), and the interfaces these plugins implement. PILS is designed to support any number of plugins implementing any number of interfaces. %prep %setup -q #%patch0 -p0 -b .orig #%patch1 -p1 -b .orig #%patch2 -p0 -b .orig %patch3 -p1 -b .ldirectory-usage %build export LIBS="-L%{_libdir}" %configure2_5x --localstatedir=/var --with-initdir=%{_initrddir} %serverbuild export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -DUSE_VENDOR_CF_PATH=1" %make %install rm -Rf %{buildroot} %makeinstall_std %multiarch_includes %{buildroot}%{_includedir}/pils/plugin.h %multiarch_includes %{buildroot}%{_includedir}/heartbeat/heartbeat.h install -d %{buildroot}%{_sysconfdir}/ha.d/ppp.d install -m644 %{SOURCE1} %{buildroot}%{_sysconfdir}/ha.d install -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/ha.d install -m600 %{SOURCE3} %{buildroot}%{_sysconfdir}/ha.d install -m644 %{SOURCE4} %{buildroot}%{_sysconfdir}/ha.d/conf cd %{buildroot}%{_sysconfdir}/ha.d/resource.d ln -s %{_sbindir}/ldirectord ldirectord cd - TEMPL=%{buildroot}%_localstatedir/heartbeat/fillup-templates install -d $TEMPL install -m0644 rc.config.heartbeat $TEMPL install -m0644 ldirectord/ldirectord.cf %{buildroot}%{_sysconfdir}/ha.d/conf perl -pi -e "s,$RPM_BUILD_DIR/%{name}-%{version},,g" %{buildroot}%{_libdir}/libstonith.la rm -f %{buildroot}%{_libdir}/*.so %pre if grep -q '^haclient:' etc/group >/dev/null ; then : else GROUPOPT="-g 60" if usr/sbin/groupadd $GROUPOPT haclient 2>/dev/null then : else usr/sbin/groupadd haclient fi fi %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 . w !EOF } if [ ! -x /etc/ppp/ip-up.heart ] then Install_PPP_hack fi # Run heartbeat on startup %_post_service heartbeat %preun Uninstall_PPP_hack() { file2hack=/etc/ppp/ip-up.local echo "NOTE: Restoring $file2hack" MARKER="Heartbeat" ed -s $file2hack <<-!EOF 2>/dev/null H g/ $MARKER\$/d w !EOF } if [ $1 = 0 ]; then %_preun_service heartbeat if [ ! -x /etc/ppp/ip-up.heart ]; then Uninstall_PPP_hack fi fi %post ldirectord %_post_service ldirectord %preun ldirectord %_preun_service ldirectord %post -n %{libheart} -p /sbin/ldconfig %postun -n %{libheart} -p /sbin/ldconfig %post -n %{libpils} -p /sbin/ldconfig %postun -n %{libpils} -p /sbin/ldconfig %post -n %{libstonith} -p /sbin/ldconfig %postun -n %{libstonith} -p /sbin/ldconfig %clean rm -rf %{buildroot} %files %defattr(-,root,root) %doc README doc/AUTHORS doc/COPYING doc/ChangeLog %doc doc/*.html doc/*.txt %dir %{_sysconfdir}/ha.d %config(noreplace) %{_sysconfdir}/ha.d/README.config %attr(0600,root,root) %config(noreplace) %{_sysconfdir}/ha.d/authkeys %config(noreplace) %{_sysconfdir}/ha.d/ha.cf %config(noreplace) %{_sysconfdir}/ha.d/harc %config(noreplace) %{_sysconfdir}/ha.d/haresources %config(noreplace) %{_sysconfdir}/ha.d/shellfuncs %dir %{_sysconfdir}/ha.d/rc.d %config(noreplace) %{_sysconfdir}/ha.d/rc.d/ask_resources %config(noreplace) %{_sysconfdir}/ha.d/rc.d/ip-request %config(noreplace) %{_sysconfdir}/ha.d/rc.d/ip-request-resp %config(noreplace) %{_sysconfdir}/ha.d/rc.d/status %config(noreplace) %{_sysconfdir}/ha.d/rc.d/hb_takeover %dir %{_sysconfdir}/ha.d/ppp.d/ %dir %{_sysconfdir}/ha.d/conf/ %config(noreplace) %{_sysconfdir}/ha.d/conf/* #%dir %{_sysconfdir}/ha.d/cts #%config(noreplace) %{_sysconfdir}/ha.d/cts/* %dir %{_sysconfdir}/ha.d/resource.d/ %config(noreplace) %{_sysconfdir}/ha.d/resource.d/* %config(noreplace) %{_sysconfdir}/logrotate.d/heartbeat %attr(0755,root,root) %config(noreplace) %{_initrddir}/heartbeat %{_bindir}/cl_status %{_mandir}/man1/cl_status.1* %{_mandir}/man1/hb_standby.1* %{_mandir}/man1/hb_takeover.1* %dir %{_libdir}/heartbeat %{_libdir}/heartbeat/BasicSanityCheck %{_libdir}/heartbeat/api_test %{_libdir}/heartbeat/apphbd %{_libdir}/heartbeat/apphbtest %{_libdir}/heartbeat/ccm %{_libdir}/heartbeat/cts %{_libdir}/heartbeat/ccm_testclient %{_libdir}/heartbeat/findif #%{_libdir}/heartbeat/get_hw_addr %{_libdir}/heartbeat/ha_config %{_libdir}/heartbeat/hb_standby %{_libdir}/heartbeat/heartbeat %{_libdir}/heartbeat/ipctest %{_libdir}/heartbeat/ipfail %{_libdir}/heartbeat/IPv6addr %{_libdir}/heartbeat/mach_down %{_libdir}/heartbeat/req_resource %{_libdir}/heartbeat/send_arp %{_libdir}/heartbeat/ResourceManager %{_libdir}/heartbeat/clmtest %{_libdir}/heartbeat/hb_takeover %{_libdir}/heartbeat/TestHeartbeatComm #%{_libdir}/heartbeat/checkpointd #%{_libdir}/heartbeat/ckpttest %{_libdir}/heartbeat/ipctransientclient %{_libdir}/heartbeat/ipctransientserver %{_libdir}/heartbeat/recoverymgrd %dir %{_libdir}/heartbeat/plugins %dir %{_libdir}/heartbeat/plugins/* %{_libdir}/heartbeat/plugins/*/*.so %{_mandir}/man8/apphbd* %{_mandir}/man8/heartbeat* %dir %{_localstatedir}/heartbeat %dir %{_localstatedir}/heartbeat/fillup-templates %{_localstatedir}/heartbeat/fillup-templates/* %files -n %libheart %defattr(-,root,root) %doc README doc/AUTHORS doc/COPYING doc/ChangeLog %{_libdir}/libhbclient.so.* %{_libdir}/libapphb.so.* %{_libdir}/libccmclient.so.* %{_libdir}/librecoverymgr.so.* #%{_libdir}/libckpt.so.* %{_libdir}/libclm.so.* %files -n %libheart-devel %defattr(-,root,root) %doc README doc/AUTHORS doc/COPYING doc/ChangeLog %{_libdir}/libapphb.a %{_libdir}/libapphb.la %{_libdir}/libccmclient.a %{_libdir}/libccmclient.la %{_libdir}/librecoverymgr.a %{_libdir}/librecoverymgr.la #%{_libdir}/libckpt.a #%{_libdir}/libckpt.la %{_libdir}/libhbclient.a %{_libdir}/libhbclient.la %{_libdir}/libplumb.a %{_libdir}/libplumb.la %{_libdir}/libclm.a %{_libdir}/libclm.la %{_libdir}/heartbeat/plugins/*/*.a %{_libdir}/heartbeat/plugins/*/*.la #%{_includedir}/*.h %dir %{_includedir}/heartbeat %{_includedir}/heartbeat/*.h %{multiarch_includedir}/heartbeat/heartbeat.h %dir %{_includedir}/ocf %{_includedir}/ocf/*.h %dir %{_includedir}/clplumbing %{_includedir}/clplumbing/*.h %{_includedir}/saf %files ldirectord %defattr(-,root,root) %doc README doc/AUTHORS doc/COPYING doc/ChangeLog %doc ldirectord/ldirectord.cf ldirectord/README %config(noreplace) %{_sysconfdir}/ha.d/conf/ldirectord.cf %config(noreplace) %{_sysconfdir}/logrotate.d/ldirectord %attr(0755,root,root) %config(noreplace) %{_initrddir}/ldirectord %{_sbindir}/ldirectord %{_sbindir}/supervise-ldirectord-config %{_mandir}/man8/ldirectord* %{_mandir}/man8/supervise-ldirectord-config* %files stonith %defattr(-,root,root) %doc README doc/AUTHORS doc/COPYING doc/ChangeLog %{_sbindir}/stonith %{_sbindir}/meatclient %dir %{_libdir}/stonith %dir %{_libdir}/stonith/plugins %dir %{_libdir}/stonith/plugins/stonith %{_libdir}/stonith/plugins/stonith/*.py %{_libdir}/stonith/plugins/stonith/*.so %{_mandir}/man8/stonith* %{_mandir}/man8/meatclient* %files -n %libstonith %defattr(-,root,root) %doc README doc/AUTHORS doc/COPYING doc/ChangeLog %{_libdir}/libstonith.so.* %files -n %libstonith-devel %defattr(-,root,root) %doc README doc/AUTHORS doc/COPYING doc/ChangeLog %{_libdir}/libstonith.a %{_libdir}/libstonith.la %{_libdir}/stonith/plugins/stonith/*.a %{_libdir}/stonith/plugins/stonith/*.la %dir %{_includedir}/stonith %{_includedir}/stonith/*.h %files pils %defattr(-,root,root) %dir %{_libdir}/pils %dir %{_libdir}/pils/plugins %dir %{_libdir}/pils/plugins/InterfaceMgr %{_libdir}/pils/plugins/InterfaceMgr/*.so %files -n %libpils %defattr(-,root,root) %doc README doc/AUTHORS doc/COPYING doc/ChangeLog %{_libdir}/libpils.so.* %{_libdir}/libplumb.so.* %files -n %libpils-devel %defattr(-,root,root) %doc README doc/AUTHORS doc/COPYING doc/ChangeLog %dir %{_includedir}/pils %{_includedir}/pils/*.h %{multiarch_includedir}/pils/plugin.h %{_libdir}/libpils.a %{_libdir}/libpils.la %{_libdir}/pils/plugins/InterfaceMgr/*.a %{_libdir}/pils/plugins/InterfaceMgr/*.la %changelog * Mon Aug 14 2006 Andreas Hasenack <andreas@mandriva.cOM 1.2.5-1mlcs4 - updated to version 1.2.5, fixing security vulnerabilities: - remote Denial of Service attack (#195068, CVE-2006-3121) - local Denial of Service attack (#194444, CVE-2006-3815) - remote Denial of Service attack (CVE-2006-3121) - added signed checksum file * Thu Aug 03 2006 Andreas Hasenack <andreas@mandriva.com> 1.2.4-4mlcs4 - revert previous fix and use an improved one * Thu Aug 03 2006 Andreas Hasenack <andreas@mandriva.com> 1.2.4-3mlcs4 - fixed x86_64 build (patch by Oden) * Mon Jun 12 2006 Andreas Hasenack <andreas@mandriva.com> 1.2.4-2mlcs4 - make the main package require heartbeat-pils or else the daemon won't even start (#23050) * Fri Mar 24 2006 Leonardo Chiquitto <chiquitto@mandriva.com> 1.2.4-1mlcs4 - update to 1.2.4 and rebuild for cs4 - remove patches 4 and 5, applied upstream on 1.2.4 * Sat Aug 13 2005 Olivier Blin <oblin@mandriva.com> 1.2.3-5mdk - multiarch support * Fri Aug 12 2005 Olivier Blin <oblin@mandriva.com> 1.2.3-4mdk - fix wrong operator in BuildRequires (thanks to Gwenole) - remove Requires on release - fix prereq * Fri Aug 12 2005 Olivier Blin <oblin@mandriva.com> 1.2.3-3mdk - from Vincent Danen: security update for CAN-2005-2231 - fix BuildRequires - Patch5: gcc4 fixes * Wed Dec 15 2004 Buchan Milne <bgmilne@linux-mandrake.com> 1.2.3-2mdk - fix build on 10.0 and older - ditro-specific release tag * Fri Nov 12 2004 Per Ãyvind Karlsen <peroyvind@linux-mandrake.com> 1.2.3-1mdk - 1.2.3 * Sun Aug 01 2004 Oden Eriksson <oeriksson@mandrakesoft.com> 1.2.2-2mdk - fix deps - misc spec file fixes * Mon May 31 2004 Per Ãyvind Karlsen <peroyvind@linux-mandrake.com> 1.2.2-1mdk - 1.2.2 - use libtoolize again - cosmetics * Fri May 07 2004 Erwan Velu <erwan@mandrakesoft.com> 1.2.1-1mdk - 1.2.1 - Adding missing files * Mon Mar 01 2004 Michael Scherer <misc@mandrake.org> 1.2.0-2mdk - DEP * Thu Feb 26 2004 Buchan Milne <bgmilne@linux-mandrake.com> 1.2.0-1mdk - 1.2.0 * Tue Jan 20 2004 Frederic Lepied <flepied@mandrakesoft.com> 1.0.4-2mdk - removed unpackaged files - fixed usage string for ldirectory init script * Tue Nov 18 2003 Buchan Milne <bgmilne@linux-mandrake.com> 1.0.4-1mdk - 1.0.4 - Fix build on old releases (provide mklibname macros) * Tue Jul 15 2003 Olivier Thauvin <thauvin@aerov.jussieu.fr> 1.0.2-2mdk - Buildrequires (Michael Scherer <scherer.michael@free.fr>) * Mon May 05 2003 Olivier Thauvin <thauvin@aerov.jussieu.fr> 1.0.2-1mdk - 1.0.2 - rebuild for rpm 4.2 - split lib and use %%mklibname - some cleanup - ... * Tue Oct 09 2001 Philippe Libat <philippe@mandrakesoft.com> 0.4.9-1mdk - new version 0.4.9 - split package * Mon Oct 08 2001 Stefan van der Eijk <stefan@eijk.nu> 0.4.8-5mdk - BuildRequires: db3-devel - Copyright --> License * Fri Mar 30 2001 Philippe Libat <philippe@mandrakesoft.com> 0.4.8-4mdk - use post_service and preun_service macros - use serverbuild macro * Tue Sep 12 2000 Philippe Libat <philippe@mandrakesoft.com> 0.4.8-3mdk - patch ldirectord init script * Thu Aug 31 2000 Philippe Libat <philippe@mandrakesoft.com> 0.4.8-2mdk - add www.cf config - add %%{_sysconfdir} %%{_var} * Wed Aug 30 2000 Philippe Libat <philippe@mandrakesoft.com> 0.4.8-1mdk - update version 0.4.8 - replace %%{_mandir} %%{_docdir} %%{_initrddir} * Tue Jul 4 2000 Nicolas Planel <nicolas@mandrakesoft.com> - Spec file was generated for Linux-Mandrake distribution. * Sat Dec 25 1999 Alan Robertson <alanr@henge.com>, Volker Wiegand <wiegand@suse.de>, Rudy Pawul <rpawul@iso-ne.com>, Mitja Sarp <mitja@lysator.liu.se>, Jacob Rief <jacob.rief@tis.at> and Guenther Thomsen <thomsen@cs.tu-berlin.de> + Version 0.4.7 + 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 <salt@cin.de> 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 <mike@cubit.at> to keep findif from core dumping if /proc/route can't be read. * Mon Nov 22 1999 Alan Robertson <alanr@henge.com>, Volker Wiegand <wiegand@suse.de>, Rudy Pawul <rpawul@iso-ne.com>, Mitja Sarp <mitja@lysator.liu.se>, and Guenther Thomsen <thomsen@cs.tu-berlin.de> * Tue Nov 22 1999 Alan Robertson <alanr@henge.com>, Volker Wiegand <wiegand@suse.de>, Rudy Pawul <rpawul@iso-ne.com>, Mitja Sarp <mitja@lysator.liu.se>, and Guenther Thomsen <thomsen@cs.tu-berlin.de>, + 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 <alanr@henge.com>, Volker Wiegand <wiegand@suse.de>, Rudy Pawul <rpawul@iso-ne.com>, Mitja Sarp <mitja@lysator.liu.se>, and Guenther Thomsen <thomsen@cs.tu-berlin.de> + 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 <alanr@henge.com>, Volker Wiegand <wiegand@suse.de>, and Rudy Pawul <rpawul@iso-ne.com> + 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 <alanr@henge.com>, Volker Wiegand <wiegand@suse.de>, and Rudy Pawul <rpawul@iso-ne.com> + 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 <th@ant.han.de> to IPaddr for PPP configurations + Put in a fix from Gregor Howey <ghowey@bremer-nachrichten.de> 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 <alanr@henge.com>, Volker Wiegand <wiegand@suse.de>, and Rudy Pawul <rpawul@iso-ne.com> + 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 <alanr@henge.com> and Volker Wiegand <Volker.Wiegand@SuSE.de> + 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 <alanr@henge.com> + 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 <alanr@henge.com> + 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 <alanr@henge.com> + 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 <alanr@henge.com> + 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 <alanr@henge.com> + 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 <andrew@pdi.com> 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 :-)