[Linux-cluster] lack of IP collision check in ip.sh

Antal Ferenc Antal.Ferenc at ulx.hu
Thu Oct 15 13:53:40 UTC 2009


Hi,

/usr/share/cluster/ip.sh in rgmanager-2.0.46-1.el5 does not check
presence of the IP address on the network before it brings up the IP
address. There is a possibility when IP address remains up on nodeA and
IP resource sets the same IP address on nodeB during a failover causing
IP collision on the network.

I opened a bugzilla case about it with 526647 bugID.

I would like to know opinions about this. Have you experienced problems
regarding this?

Does it worth to fix it?

I am thinking about this change in it:

--- /usr/share/cluster/ip.sh.orig	2009-06-11 20:44:31.000000000 +0000
+++ /usr/share/cluster/ip.sh	2009-10-15 10:34:39.000000000 +0000
@@ -652,6 +652,13 @@
 			ocf_log info "Removing IPv6 address $addr from $dev"
                 fi
 		
+		if [ "$1" = "add" ]; then
+			ocf_log notice "Pinging addr ${addr%%/*} from dev $dev"
+			if ping_check inet6 ${addr%%/*} $dev; then
+				ocf_log err "IPv6 address collision ${addr%%/*}"
+				return 1
+			fi
+		fi
 		/sbin/ip -f inet6 addr $1 dev $dev $addr
 		[ $? -ne 0 ] && return 1
 		
@@ -722,6 +729,13 @@
 			ocf_log info "Removing IPv4 address $addr from $dev"
 		fi
 		
+		if [ "$1" = "add" ]; then
+			ocf_log notice "Pinging addr ${addr%%/*} from dev $dev"
+			if ping_check inet ${addr%%/*} $dev; then
+				ocf_log err "IPv4 address collision ${addr%%/*}"
+				return 1
+			fi
+		fi
 		/sbin/ip -f inet addr $1 dev $dev $addr
 		[ $? -ne 0 ] && return 1
 		


Thanks in advance, Ferenc




More information about the Linux-cluster mailing list