From d5768e8244dca2d9f0e2db0f23d2d7b1288feeb1 Mon Sep 17 00:00:00 2001 From: Stefan Walter Date: Tue, 27 Jan 2009 10:52:18 +0000 Subject: [PATCH] - Add a proper resource for starting/stopping rc.d script. - Improve detection of interfaces. PR: 124238 Submitted by: Piotr Rybicki Approved by: maintainer --- sysutils/heartbeat/Makefile | 2 +- .../extrapatch-lib-clplumbing-resource.h | 154 ------------------ sysutils/heartbeat/files/patch-configure | 20 +++ .../patch-heartbeat-resource.d-BSDService.in | 95 +++++++++++ .../patch-heartbeat-resource.d-Makefile.in | 37 +++++ .../patch-heartbeat_resource.d_IPaddr.in | 61 ++++++- sysutils/heartbeat/pkg-plist | 1 + 7 files changed, 206 insertions(+), 164 deletions(-) delete mode 100644 sysutils/heartbeat/files/extrapatch-lib-clplumbing-resource.h create mode 100644 sysutils/heartbeat/files/patch-configure create mode 100644 sysutils/heartbeat/files/patch-heartbeat-resource.d-BSDService.in create mode 100644 sysutils/heartbeat/files/patch-heartbeat-resource.d-Makefile.in diff --git a/sysutils/heartbeat/Makefile b/sysutils/heartbeat/Makefile index fb170cb970db..1e5241fd5c06 100644 --- a/sysutils/heartbeat/Makefile +++ b/sysutils/heartbeat/Makefile @@ -7,7 +7,7 @@ PORTNAME= heartbeat PORTVERSION= 1.2.5 -PORTREVISION= 5 +PORTREVISION= 6 CATEGORIES= sysutils MASTER_SITES= http://linux-ha.org/download/ diff --git a/sysutils/heartbeat/files/extrapatch-lib-clplumbing-resource.h b/sysutils/heartbeat/files/extrapatch-lib-clplumbing-resource.h deleted file mode 100644 index d8b56c469276..000000000000 --- a/sysutils/heartbeat/files/extrapatch-lib-clplumbing-resource.h +++ /dev/null @@ -1,154 +0,0 @@ ---- lib/clplumbing/resource.h.orig Tue Apr 18 23:30:49 2006 -+++ lib/clplumbing/resource.h Tue Apr 18 23:28:06 2006 -@@ -0,0 +1,151 @@ -+/* -+ * Copyright (c) 1982, 1986, 1993 -+ * The Regents of the University of California. All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by the University of -+ * California, Berkeley and its contributors. -+ * 4. Neither the name of the University nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * @(#)resource.h 8.4 (Berkeley) 1/9/95 -+ * $FreeBSD: /tmp/pcvs/ports/sysutils/heartbeat/files/Attic/extrapatch-lib-clplumbing-resource.h,v 1.1 2006-04-18 21:53:58 ehaupt Exp $ -+ */ -+ -+#ifndef _SYS_RESOURCE_H_ -+#define _SYS_RESOURCE_H_ -+ -+/* -+ * Process priority specifications to get/setpriority. -+ */ -+#define PRIO_MIN -20 -+#define PRIO_MAX 20 -+ -+#define PRIO_PROCESS 0 -+#define PRIO_PGRP 1 -+#define PRIO_USER 2 -+ -+/* -+ * Resource utilization information. -+ */ -+ -+#define RUSAGE_SELF 0 -+#define RUSAGE_CHILDREN -1 -+ -+#include -+ -+struct rusage { -+ struct timeval ru_utime; /* user time used */ -+ struct timeval ru_stime; /* system time used */ -+ long ru_maxrss; /* max resident set size */ -+#define ru_first ru_ixrss -+ long ru_ixrss; /* integral shared memory size */ -+ long ru_idrss; /* integral unshared data " */ -+ long ru_isrss; /* integral unshared stack " */ -+ long ru_minflt; /* page reclaims */ -+ long ru_majflt; /* page faults */ -+ long ru_nswap; /* swaps */ -+ long ru_inblock; /* block input operations */ -+ long ru_oublock; /* block output operations */ -+ long ru_msgsnd; /* messages sent */ -+ long ru_msgrcv; /* messages received */ -+ long ru_nsignals; /* signals received */ -+ long ru_nvcsw; /* voluntary context switches */ -+ long ru_nivcsw; /* involuntary " */ -+#define ru_last ru_nivcsw -+}; -+ -+/* -+ * Resource limits -+ */ -+#define RLIMIT_CPU 0 /* cpu time in milliseconds */ -+#define RLIMIT_FSIZE 1 /* maximum file size */ -+#define RLIMIT_DATA 2 /* data size */ -+#define RLIMIT_STACK 3 /* stack size */ -+#define RLIMIT_CORE 4 /* core file size */ -+#define RLIMIT_RSS 5 /* resident set size */ -+#define RLIMIT_MEMLOCK 6 /* locked-in-memory address space */ -+#define RLIMIT_NPROC 7 /* number of processes */ -+#define RLIMIT_NOFILE 8 /* number of open files */ -+#define RLIMIT_SBSIZE 9 /* maximum size of all socket buffers */ -+#define RLIMIT_VMEM 10 /* virtual process size (inclusive of mmap) */ -+ -+#define RLIM_NLIMITS 11 /* number of resource limits */ -+ -+#define RLIM_INFINITY ((rlim_t)(((u_quad_t)1 << 63) - 1)) -+ -+ -+/* -+ * Resource limit string identifiers -+ */ -+ -+#ifdef _RLIMIT_IDENT -+static char *rlimit_ident[] = { -+ "cpu", -+ "fsize", -+ "data", -+ "stack", -+ "core", -+ "rss", -+ "memlock", -+ "nproc", -+ "nofile", -+ "sbsize", -+ "vmem", -+}; -+#endif -+ -+struct orlimit { -+ int32_t rlim_cur; /* current (soft) limit */ -+ int32_t rlim_max; /* maximum value for rlim_cur */ -+}; -+ -+struct rlimit { -+ rlim_t rlim_cur; /* current (soft) limit */ -+ rlim_t rlim_max; /* maximum value for rlim_cur */ -+}; -+ -+/* Load average structure. */ -+struct loadavg { -+ fixpt_t ldavg[3]; -+ long fscale; -+}; -+ -+#ifdef _KERNEL -+extern struct loadavg averunnable; -+ -+#else -+#include -+ -+__BEGIN_DECLS -+int getpriority __P((int, int)); -+int getrlimit __P((int, struct rlimit *)); -+int getrusage __P((int, struct rusage *)); -+int setpriority __P((int, int, int)); -+int setrlimit __P((int, const struct rlimit *)); -+__END_DECLS -+ -+#endif /* _KERNEL */ -+#endif /* !_SYS_RESOURCE_H_ */ diff --git a/sysutils/heartbeat/files/patch-configure b/sysutils/heartbeat/files/patch-configure new file mode 100644 index 000000000000..647237f31ff3 --- /dev/null +++ b/sysutils/heartbeat/files/patch-configure @@ -0,0 +1,20 @@ +--- configure.orig 2009-01-20 22:45:46.000000000 +0100 ++++ configure 2009-01-20 22:48:19.000000000 +0100 +@@ -36536,6 +36536,9 @@ + + + ++ac_config_files+="heartbeat/resource.d/BSDService" ++ ++ + cat >confcache <<\_ACEOF + # This file is a shell script that caches the results of configure + # tests run on this system so they can be shared between configure +@@ -37283,6 +37286,7 @@ + "heartbeat/resource.d/Makefile" ) CONFIG_FILES="$CONFIG_FILES heartbeat/resource.d/Makefile" ;; + "heartbeat/resource.d/apache" ) CONFIG_FILES="$CONFIG_FILES heartbeat/resource.d/apache" ;; + "heartbeat/resource.d/AudibleAlarm" ) CONFIG_FILES="$CONFIG_FILES heartbeat/resource.d/AudibleAlarm" ;; ++ "heartbeat/resource.d/BSDService" ) CONFIG_FILES="$CONFIG_FILES heartbeat/resource.d/BSDService" ;; + "heartbeat/resource.d/Delay" ) CONFIG_FILES="$CONFIG_FILES heartbeat/resource.d/Delay" ;; + "heartbeat/resource.d/db2" ) CONFIG_FILES="$CONFIG_FILES heartbeat/resource.d/db2" ;; + "heartbeat/resource.d/Filesystem" ) CONFIG_FILES="$CONFIG_FILES heartbeat/resource.d/Filesystem" ;; diff --git a/sysutils/heartbeat/files/patch-heartbeat-resource.d-BSDService.in b/sysutils/heartbeat/files/patch-heartbeat-resource.d-BSDService.in new file mode 100644 index 000000000000..84c2b5b29652 --- /dev/null +++ b/sysutils/heartbeat/files/patch-heartbeat-resource.d-BSDService.in @@ -0,0 +1,95 @@ +--- heartbeat/resource.d/BSDService.in.orig 2009-01-16 21:21:34.000000000 +0100 ++++ heartbeat/resource.d/BSDService.in 2009-01-16 21:21:11.000000000 +0100 +@@ -0,0 +1,92 @@ ++#!/bin/sh ++# ++# Created by Piotr Rybicki (meritus@innervision.pl) for BSD community ++# ++# This script can be used do start/stop FreeBSD's ++# /usr/local/etc/rc.d/* services. ++# ++# One MUST NOT enable service (in /etc/rc.conf ++# there cannot be SERVICE_enable"YES" line) ++# Although other params for service are welcomed ++# ++# Service is started by 'onestart' parameter internally ++# ++# usage: $0 {start|stop|status} ++# ++# An example usage in /usr/local/etc/ha.d/haresources: ++# node1 10.0.0.170 BSDService::mysql-server ++# ++usage() { ++ cat <<-! ++usage: $0 SERVICE {start|stop|status}"; ++! ++ exit 1 ++} ++ ++. /usr/local/etc/ha.d/shellfuncs ++RCD=/usr/local/etc/rc.d ++#VARLIB=/var/lib/heartbeat ++#VLFILE=$VARLIB/rsctmp/Delay ++ ++BSDService_Status() { ++ if [ ! -f $RCD/$1 ] ++ then ++ echo "There is no $RCD/$1 script!. Fatal" ++ fi ++ ++ $RCD/$1 onestatus 2>&1 1>/dev/null ++ ++ if [ $? -eq 0 ] ++ then ++ if [ $2 = 'verbose' ] ++ then ++ echo "Service $1 is running OK" ++ fi ++ return 0 ++ else ++ if [ $2 = 'verbose' ] ++ then ++ echo "Service $1 is NOT running" ++ fi ++ return 1 ++ fi ++} ++ ++BSDService_Start() { ++ BSDService_Status $1 noverbose ++ if [ $? -eq 0 ] ++ then ++ echo "Service $1 already running" ++ return 0 ++ else ++ $RCD/$1 onestart ++ return $? ++ fi ++} ++ ++BSDService_Stop() { ++ BSDService_Status $1 noverbose ++ if [ $? -eq 0 ] ++ then ++ $RCD/$1 onestop ++ return $? ++ else ++ echo "Service $1 already stopped" ++ return 0 ++ fi ++} ++ ++if [ $# -ne 2 ] ++then ++ usage; exit 1; ++fi ++ ++case $2 in ++ start) BSDService_Start $1 ;; ++ stop) BSDService_Stop $1 ;; ++ status) BSDService_Status $1 verbose ;; ++ *) usage ++ exit 1;; ++esac ++exit $? ++ diff --git a/sysutils/heartbeat/files/patch-heartbeat-resource.d-Makefile.in b/sysutils/heartbeat/files/patch-heartbeat-resource.d-Makefile.in new file mode 100644 index 000000000000..dd9c06993157 --- /dev/null +++ b/sysutils/heartbeat/files/patch-heartbeat-resource.d-Makefile.in @@ -0,0 +1,37 @@ +--- heartbeat/resource.d/Makefile.in.orig 2009-01-16 22:05:29.000000000 +0100 ++++ heartbeat/resource.d/Makefile.in 2009-01-16 22:07:37.000000000 +0100 +@@ -47,7 +47,7 @@ + $(srcdir)/Makefile.in $(srcdir)/OCF.in $(srcdir)/Raid1.in \ + $(srcdir)/SendArp.in $(srcdir)/ServeRAID.in $(srcdir)/WAS.in \ + $(srcdir)/WinPopup.in $(srcdir)/Xinetd.in $(srcdir)/apache.in \ +- $(srcdir)/db2.in $(srcdir)/portblock.in ++ $(srcdir)/db2.in $(srcdir)/portblock.in $(srcdir)/BSDService.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + am__aclocal_m4_deps = $(top_srcdir)/configure.in + am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +@@ -58,7 +58,7 @@ + CONFIG_CLEAN_FILES = apache AudibleAlarm Delay db2 Filesystem ICP \ + IPaddr IPaddr2 IPsrcaddr LinuxSCSI LVM LVSSyncDaemonSwap \ + MailTo OCF portblock Raid1 ServeRAID SendArp WAS WinPopup \ +- Xinetd ++ Xinetd BSDService + am__installdirs = "$(DESTDIR)$(halibdir)" "$(DESTDIR)$(harddir)" + halibPROGRAMS_INSTALL = $(INSTALL_PROGRAM) + PROGRAMS = $(halib_PROGRAMS) +@@ -357,6 +357,7 @@ + hard_SCRIPTS = \ + apache \ + AudibleAlarm \ ++ BSDService \ + db2 \ + Delay \ + Filesystem \ +@@ -414,6 +415,8 @@ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + AudibleAlarm: $(top_builddir)/config.status $(srcdir)/AudibleAlarm.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ++BSDService: $(top_builddir)/config.status $(srcdir)/BSDService.in ++ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + Delay: $(top_builddir)/config.status $(srcdir)/Delay.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + db2: $(top_builddir)/config.status $(srcdir)/db2.in diff --git a/sysutils/heartbeat/files/patch-heartbeat_resource.d_IPaddr.in b/sysutils/heartbeat/files/patch-heartbeat_resource.d_IPaddr.in index d747b52952bc..a9a8336451dd 100644 --- a/sysutils/heartbeat/files/patch-heartbeat_resource.d_IPaddr.in +++ b/sysutils/heartbeat/files/patch-heartbeat_resource.d_IPaddr.in @@ -1,11 +1,54 @@ ---- heartbeat/resource.d/IPaddr.in.orig 2008-10-16 19:49:31.000000000 +0200 -+++ heartbeat/resource.d/IPaddr.in 2008-10-16 19:51:23.000000000 +0200 -@@ -105,7 +105,7 @@ +--- heartbeat/resource.d/IPaddr.in.orig 2009-01-16 21:01:12.000000000 +0100 ++++ heartbeat/resource.d/IPaddr.in 2009-01-16 21:13:44.000000000 +0100 +@@ -79,6 +79,23 @@ + return 1 + } - case $SYSTYPE in - *BSD) -- $IFCONFIG | grep "$ipaddr" -B4 | grep "UP," | cut -d ":" -f 1 -+ $IFCONFIG | grep "$ipaddr " -B20 | grep "UP," | tail -n 1 | cut -d ":" -f 1 - return 0;; ++find_interface_bsd() { ++ ++ ipaddr="$1"; ++ ++ for ifname in `$IFCONFIG -l` ++ do ++# echo "IFNAME:$ifname" ++ $IFCONFIG $ifname | grep "inet.*[: ]$ipaddr " >/dev/null 2>&1 ++ if [ $? -eq 0 ] ++ then ++ echo $ifname ++ return 0 ++ fi ++ done ++ return 1 ++} ++ + # + # Find out which alias serves the given IP address + # The argument is an IP address, and its output +@@ -131,6 +148,9 @@ + SunOS) + IF=`find_interface_solaris $BASEIP` + ;; ++ BSD) ++ IF=`find_interface_bsd $BASEIP` ++ ;; *) - : "comparing $ipaddr to $addr (from ifconfig)" + IF=`find_interface_generic $BASEIP` + ;; +@@ -253,6 +273,7 @@ + ;; + + *BSD) ++ echo "ipaddr: $ipaddr, iface: $iface, ifinfo: $ifinfo" + CMD="$IFCONFIG $iface inet $ipaddr netmask 255.255.255.255 alias" + ;; + *) +@@ -461,6 +482,9 @@ + SunOS) + j=1 + ;; ++ *BSD) ++ j=1 ++ ;; + *) + j=0 + TRYADRCNT=`ls "${NICBASE}:"* | wc -l | tr -d ' ' 2>/dev/null` diff --git a/sysutils/heartbeat/pkg-plist b/sysutils/heartbeat/pkg-plist index 74f617f4014e..00262b73b677 100644 --- a/sysutils/heartbeat/pkg-plist +++ b/sysutils/heartbeat/pkg-plist @@ -7,6 +7,7 @@ etc/ha.d/rc.d/ip-request etc/ha.d/rc.d/ip-request-resp etc/ha.d/rc.d/status etc/ha.d/resource.d/AudibleAlarm +etc/ha.d/resource.d/BSDService etc/ha.d/resource.d/Delay etc/ha.d/resource.d/Filesystem etc/ha.d/resource.d/ICP