diff options
author | Boris Samorodov <bsam@FreeBSD.org> | 2009-08-21 08:55:41 +0000 |
---|---|---|
committer | Boris Samorodov <bsam@FreeBSD.org> | 2009-08-21 08:55:41 +0000 |
commit | a56cffe3b068c43298060b41b9539741eb35fa9e (patch) | |
tree | 0c283d208930209b9ad80c425aca7a661f830023 /sysutils/heartbeat | |
parent | 502534843192cde8bc7b9950b437d524f6802227 (diff) | |
download | ports-a56cffe3b068c43298060b41b9539741eb35fa9e.tar.gz ports-a56cffe3b068c43298060b41b9539741eb35fa9e.zip |
. current implementation of function find_interface_bsd() in [1]
heartbeat-2.1.4 used in port sysutils/heartbeat does not
work correctly if there are multiple interfaces with the
same IP address (where only one of is UP, the others are
DOWN). Fix this with files/patch-resources-OCF-IPaddr;
. bump PORTREVISION.
PR: ports/137865 [1]
Submitted by: Michael Leun <michael.leun at arcor.net> [1]
Approved by: Justin Head <ports at encarnate.com> (maintainer) [1]
Notes
Notes:
svn path=/head/; revision=240018
Diffstat (limited to 'sysutils/heartbeat')
-rw-r--r-- | sysutils/heartbeat/Makefile | 2 | ||||
-rw-r--r-- | sysutils/heartbeat/files/patch-resources-OCF-IPaddr | 67 |
2 files changed, 68 insertions, 1 deletions
diff --git a/sysutils/heartbeat/Makefile b/sysutils/heartbeat/Makefile index 4718fc08140e..df472bab491d 100644 --- a/sysutils/heartbeat/Makefile +++ b/sysutils/heartbeat/Makefile @@ -7,7 +7,7 @@ PORTNAME= heartbeat PORTVERSION= 2.1.4 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= sysutils #MASTER_SITES= http://hg.linux-ha.org/lha-2.1/archive/STABLE-2.1.4.tar.bz2 MASTER_SITES= ${MASTER_SITE_LOCAL} diff --git a/sysutils/heartbeat/files/patch-resources-OCF-IPaddr b/sysutils/heartbeat/files/patch-resources-OCF-IPaddr new file mode 100644 index 000000000000..0c64e197478e --- /dev/null +++ b/sysutils/heartbeat/files/patch-resources-OCF-IPaddr @@ -0,0 +1,67 @@ +patch attached + +Patch attached with submission follows: + +--- resources/OCF/IPaddr.orig 2009-08-06 13:08:35.000000000 +0200 ++++ resources/OCF/IPaddr 2009-08-06 13:12:35.000000000 +0200 +@@ -298,9 +298,56 @@ + return $OCF_ERR_GENERIC + } + ++# ++# Find out which alias serves the given IP address ++# The argument is an IP address, and its output ++# is an interface name (e.g., "em0"). ++# ++# parse the output of ifconfig and find the interface ++# that holds ip address $ip (multiple may exist, but ++# only one with flag UP) ++# Try to find an interface with flag UP. If we don't find ++# such an interface, try to find one with flag DOWN ++ + find_interface_bsd() { +- #$IFCONFIG $IFCONFIG_A_OPT | grep "inet.*[: ]$OCF_RESKEY_ip " +- $IFCONFIG | grep "$ipaddr" -B20 | grep "UP," | tail -n 1 | cut -d ":" -f 1 ++ ++ ipaddr="$1"; ++ ++ /sbin/ifconfig \ ++ | /usr/bin/perl -w -e ' ++ ++ my $ip = $ARGV[0]; ++ ++ if (! $ip) { ++ exit(255); ++ } ++ ++ my $if_name = ""; ++ my $if_status = 0; ++ ++ my $down_if_name = ""; ++ ++ while (<STDIN>) { ++ chomp(); ++ if ( /^(\w+):\s+flags=/ ) { ++ $if_name = $1; ++ $if_status = ( /UP/ ) ? 1 : 0; ++ } ++ if ( /^\s+inet\s+${ip}/ ) { ++ if ( $if_status ) { ++ print $if_name; ++ exit(0) ++ } else { ++ $down_if_name = $if_name; ++ } ++ } ++ } ++ ++ if ($down_if_name) { ++ print $down_if_name; ++ } ++ ++ ' $ipaddr + } + + # + + |