[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-ha-dev
Subject:    [Linux-ha-dev] [PATCH 1 of 1] Medium: IPaddr2: optionally flush
From:       Florian Haas <florian.haas () linbit ! com>
Date:       2010-09-30 16:22:17
Message-ID: 149dda4775a9928a5cc4.1285863737 () gluehwein ! linbit
[Download RAW message or body]

# HG changeset patch
# User Florian Haas <florian.haas@linbit.com>
# Date 1285854769 -7200
# Node ID 149dda4775a9928a5cc4ac5ebf501982822ba474
# Parent  a401cc017298e50ec34b8d0f8b47ca15ed39bfbf
Medium: IPaddr2: optionally flush kernel routing table on interface stop

diff -r a401cc017298 -r 149dda4775a9 heartbeat/IPaddr2
--- a/heartbeat/IPaddr2	Thu Sep 30 02:48:54 2010 +0200
+++ b/heartbeat/IPaddr2	Thu Sep 30 15:52:49 2010 +0200
@@ -231,8 +231,26 @@
 <content type="string" default="ffffffffffff"/>
 </parameter>
 
+<parameter name="flush_route">
+<longdesc lang="en">
+Flush the routing table on stop. This is for
+applications which use the cluster IP address
+and which run on the same physical host that the
+IP address lives on. The Linux kernel may force that
+application to take a shortcut to the local loopback
+interface, instead of the interface the address
+is really bound to. Under those circumstances, an
+application may, somewhat unexpectedly, continue
+to use connections for some time even after the
+IP address is deconfigured. Set this parameter in
+order to immediately disable said shortcut when the
+IP address goes away.
+</longdesc>
+<shortdesc lang="en">Flush kernel routing table on stop</shortdesc>
+<content type="boolean" default="false"/>
+</parameter>
+
 </parameters>
-
 <actions>
 <action name="start"   timeout="20s" />
 <action name="stop"    timeout="20s" />
@@ -396,9 +414,19 @@
 
 	CMD="$IP2UTIL -f inet addr delete $ipaddr/$netmask dev $iface"
 
-	ocf_log info "$CMD"
-	$CMD ||
-		return $OCF_ERR_GENERIC
+	ocf_run $CMD || return $OCF_ERR_GENERIC
+
+	if ocf_is_true $OCF_RESKEY_flush_route; then
+		local flush_semaphore
+		flush_semaphore=/proc/sys/net/ipv4/route/flush
+		if [ -e $flush_semaphore ]; then
+			ocf_log info "Flushing kernel routing table"
+			echo 1 > $flush_semaphore
+		else
+			ocf_log warn "Configured to flush kernel routing table on stop, but \
$flush_semaphore is not available" +		fi
+	fi
+
 	return $OCF_SUCCESS
 }
 


_______________________________________________________
Linux-HA-Dev: Linux-HA-Dev@lists.linux-ha.org
http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev
Home Page: http://linux-ha.org/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic