From 4d87bcfe5df8a1e40ee945e095ac9e7cca147ec4 Mon Sep 17 00:00:00 2001 From: Oyvind Albrigtsen 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. + + +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). + +Table + + + 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. -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). Table + 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