1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-23 04:23:08 +00:00

- Add a proper resource for starting/stopping rc.d script.

- Improve detection of interfaces.

PR:		124238
Submitted by:	Piotr Rybicki <meritus@innervision.pl>
Approved by:	maintainer
This commit is contained in:
Stefan Walter 2009-01-27 10:52:18 +00:00
parent f6d0ec6f9f
commit d5768e8244
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=226961
7 changed files with 206 additions and 164 deletions

View File

@ -7,7 +7,7 @@
PORTNAME= heartbeat
PORTVERSION= 1.2.5
PORTREVISION= 5
PORTREVISION= 6
CATEGORIES= sysutils
MASTER_SITES= http://linux-ha.org/download/

View File

@ -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 <sys/time.h>
+
+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 <sys/cdefs.h>
+
+__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_ */

View File

@ -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" ;;

View File

@ -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 $?
+

View File

@ -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

View File

@ -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`

View File

@ -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