On 08/24/2017 at 02:00 PM, Ziyue Yang wrote:
When dumping to ssh via local ipv6 address, the ssh parameter
in kdump.conf is supposed to have the form like
ssh user@fe80::cc1:8bff:fe90:b95f%eth0
where "%eth0" is an existing network interface supporting ipv6.
The get_remote_host function in kdump-lib.sh currently
doesn't remove the network interface in the link local ipv6
addresses, causing the ip command in kdump_install_net
function to fail, leading to a "Bad kdump location" message.
This commit
1) adds a helper function is_ipv6_link_local to find out
whether a host is a link local ipv6 address;
2) makes get_remote_host function remove network interface
in link local ipv6 addresses if there are any to support
host finding for link local ipv6 addresses.
Signed-off-by: Ziyue Yang <ziyang(a)redhat.com>
---
kdump-lib.sh | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/kdump-lib.sh b/kdump-lib.sh
index 3f0af91..e67efda 100755
--- a/kdump-lib.sh
+++ b/kdump-lib.sh
@@ -312,6 +312,13 @@ is_ipv6_address()
echo $1 | grep -q ":"
}
+is_ipv6_link_local()
+{
+ is_ipv6_address $1 && {
+ echo $1 | grep -q "^fe80::"
+ }
It suffices to use:
echo $1 | grep -q "^fe80::"
+}
+
# get ip address or hostname from nfs/ssh config value
get_remote_host()
{
@@ -323,6 +330,10 @@ get_remote_host()
_config_val=${_config_val%:/*}
_config_val=${_config_val#[}
_config_val=${_config_val%]}
+ # factor out network inteface segment in link local ipv6 address
s/inteface/interface
+ if is_ipv6_link_local $_config_val; then
+ _config_val=${_config_val%\%*}
+ fi
echo $_config_val
}