This file is indexed.

/etc/ha.d/resource.d/IPaddr is in heartbeat 1:3.0.5-3ubuntu2.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/sh
#
#
# Description:	wrapper of OCF RA IPaddr, based on original heartbeat RA.
#		See OCF RA IPaddr for more information.
#
# Author:	Xun Sun <xunsun@cn.ibm.com> 
# License:      GNU General Public License (GPL)
# Support:      linux-ha@lists.linux-ha.org
# Copyright:	(C) 2005 International Business Machines
#
#	This script manages IP alias IP addresses
#
#	It can add an IP alias, or remove one.
#
#	usage: $0 <ip-address> {start|stop|status|monitor}
#
#	The "start" arg adds an IP alias.
#
#	Surprisingly, the "stop" arg removes one.	:-)
#

. /etc/ha.d/resource.d//hto-mapfuncs


usage() {
    echo "usage: $0 <ip-address> $LEGAL_ACTIONS"
    exit 1
}

if [ $# != 2 ]; then
    usage
fi

# We need to split the argument into pieces that IPaddr OCF RA can
# recognize, sed is prefered over Bash specific builtin functions 
# for portability.

BASEIP=`echo $1 | sed 's%/.*%%'`
OCF_RESKEY_ip=$BASEIP; export OCF_RESKEY_ip

str=`echo $1 | sed 's%^'$BASEIP'/*%%'`
if [ ! -z "$str" ]; then
    NETMASK=`echo $str | sed 's%/.*%%'`
    OCF_RESKEY_cidr_netmask=$NETMASK; export OCF_RESKEY_cidr_netmask

    str=`echo $str | sed 's%^'$NETMASK'/*%%'`
    NIC=`echo $str | sed 's%/.*%%'`
    case $NIC in
	[0-9]*)	BROADCAST=$NIC
	    OCF_RESKEY_broadcast=$BROADCAST; export OCF_RESKEY_broadcast
	    NIC=
	    ;;
	"")	;;
	*)	BROADCAST=`echo $str | sed -e 's%^'$NIC'/*%%' -e 's%/.*%%'`
	    OCF_RESKEY_nic=$NIC; export OCF_RESKEY_nic
	    OCF_RESKEY_broadcast=$BROADCAST; export OCF_RESKEY_broadcast
	    ;;
    esac
fi

#
# Determine if this IP address is really being served, or not.
# Note that we don't distinguish if *we're* serving it locally...
#
ip_monitor() {
	PINGARGS="`pingargs $BASEIP`"
	for j in 1 2 3
	do
	  # for R1 style clusters, CTS runs this on the test monitor node
	  # so we cannot check to see if the IP address is served locally
	  # This means that the ARP spoofing is also tested
	  # But we can't tell for sure which node is serving the IP
	  if
	    /bin/ping $PINGARGS >/dev/null 2>&1
	  then
	    exit 0
	  fi
	done
	
	exit 1
}

case $2 in
  monitor)	
	ip_monitor
	;;
  *)	
	;;
esac

OCF_TYPE=IPaddr
OCF_RESKEY_lvs_support=0
OCF_RESOURCE_INSTANCE=${OCF_TYPE}_$BASEIP
export OCF_TYPE OCF_RESOURCE_INSTANCE OCF_RESKEY_lvs_support

ra_execocf $2