85 lines
3.1 KiB
Diff
85 lines
3.1 KiB
Diff
|
From 4d87bcfe5df8a1e40ee945e095ac9e7cca147ec4 Mon Sep 17 00:00:00 2001
|
||
|
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
|
||
|
Date: Wed, 29 Jun 2022 10:26:25 +0200
|
||
|
Subject: [PATCH] IPaddr2/IPsrcaddr: add/modify table parameter to be able to
|
||
|
find interface while using policy based routing
|
||
|
|
||
|
---
|
||
|
heartbeat/IPaddr2 | 12 ++++++++++++
|
||
|
heartbeat/IPsrcaddr | 5 ++++-
|
||
|
heartbeat/findif.sh | 2 +-
|
||
|
3 files changed, 17 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/heartbeat/IPaddr2 b/heartbeat/IPaddr2
|
||
|
index 97a7431a2..e8384c586 100755
|
||
|
--- a/heartbeat/IPaddr2
|
||
|
+++ b/heartbeat/IPaddr2
|
||
|
@@ -73,6 +73,7 @@ OCF_RESKEY_ip_default=""
|
||
|
OCF_RESKEY_cidr_netmask_default=""
|
||
|
OCF_RESKEY_broadcast_default=""
|
||
|
OCF_RESKEY_iflabel_default=""
|
||
|
+OCF_RESKEY_table_default=""
|
||
|
OCF_RESKEY_cidr_netmask_default=""
|
||
|
OCF_RESKEY_lvs_support_default=false
|
||
|
OCF_RESKEY_lvs_ipv6_addrlabel_default=false
|
||
|
@@ -97,6 +98,7 @@ OCF_RESKEY_network_namespace_default=""
|
||
|
: ${OCF_RESKEY_cidr_netmask=${OCF_RESKEY_cidr_netmask_default}}
|
||
|
: ${OCF_RESKEY_broadcast=${OCF_RESKEY_broadcast_default}}
|
||
|
: ${OCF_RESKEY_iflabel=${OCF_RESKEY_iflabel_default}}
|
||
|
+: ${OCF_RESKEY_table=${OCF_RESKEY_table_default}}
|
||
|
: ${OCF_RESKEY_lvs_support=${OCF_RESKEY_lvs_support_default}}
|
||
|
: ${OCF_RESKEY_lvs_ipv6_addrlabel=${OCF_RESKEY_lvs_ipv6_addrlabel_default}}
|
||
|
: ${OCF_RESKEY_lvs_ipv6_addrlabel_value=${OCF_RESKEY_lvs_ipv6_addrlabel_value_default}}
|
||
|
@@ -239,6 +241,16 @@ If a label is specified in nic name, this parameter has no effect.
|
||
|
<content type="string" default="${OCF_RESKEY_iflabel_default}"/>
|
||
|
</parameter>
|
||
|
|
||
|
+<parameter name="table">
|
||
|
+<longdesc lang="en">
|
||
|
+Table to use to lookup which interface to use for the IP.
|
||
|
+
|
||
|
+This can be used for policy based routing. See man ip-rule(8).
|
||
|
+</longdesc>
|
||
|
+<shortdesc lang="en">Table</shortdesc>
|
||
|
+<content type="string" default="${OCF_RESKEY_table_default}" />
|
||
|
+</parameter>
|
||
|
+
|
||
|
<parameter name="lvs_support">
|
||
|
<longdesc lang="en">
|
||
|
Enable support for LVS Direct Routing configurations. In case a IP
|
||
|
diff --git a/heartbeat/IPsrcaddr b/heartbeat/IPsrcaddr
|
||
|
index 1bd41a930..cf106cc34 100755
|
||
|
--- a/heartbeat/IPsrcaddr
|
||
|
+++ b/heartbeat/IPsrcaddr
|
||
|
@@ -155,13 +155,16 @@ Metric. Only needed if incorrect metric value is used.
|
||
|
|
||
|
<parameter name="table">
|
||
|
<longdesc lang="en">
|
||
|
-Table to modify. E.g. "local".
|
||
|
+Table to modify and use for interface lookup. E.g. "local".
|
||
|
|
||
|
The table has to have a route matching the "destination" parameter.
|
||
|
+
|
||
|
+This can be used for policy based routing. See man ip-rule(8).
|
||
|
</longdesc>
|
||
|
<shortdesc lang="en">Table</shortdesc>
|
||
|
<content type="string" default="${OCF_RESKEY_table_default}" />
|
||
|
</parameter>
|
||
|
+
|
||
|
</parameters>
|
||
|
|
||
|
<actions>
|
||
|
diff --git a/heartbeat/findif.sh b/heartbeat/findif.sh
|
||
|
index 66bc6d56a..1a40cc9a4 100644
|
||
|
--- a/heartbeat/findif.sh
|
||
|
+++ b/heartbeat/findif.sh
|
||
|
@@ -32,7 +32,7 @@ prefixcheck() {
|
||
|
getnetworkinfo()
|
||
|
{
|
||
|
local line netinfo
|
||
|
- ip -o -f inet route list match $OCF_RESKEY_ip table local scope host | (while read line;
|
||
|
+ ip -o -f inet route list match $OCF_RESKEY_ip table "${OCF_RESKEY_table=local}" scope host | (while read line;
|
||
|
do
|
||
|
netinfo=`echo $line | awk '{print $2}'`
|
||
|
case $netinfo in
|