There is something unclear to me, why does ipv6 address need an interface name followed?On 08/13/2017 at 05:41 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) makes get_remote_host function remove network interface
> in ipv6 addresses if there are any to support host finding;
> 2) adds is_prefixed_ipv6_link_local function to detect link local
> ipv6 address with 'kdump-' prefixed interface name.
>
> Signed-off-by: Ziyue Yang <ziyang@redhat.com>
> ---
> kdump-lib.sh | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/kdump-lib.sh b/kdump-lib.sh
> index 3f0af91..e67b28f 100755
> --- a/kdump-lib.sh
> +++ b/kdump-lib.sh
> @@ -312,6 +312,14 @@ is_ipv6_address()
> echo $1 | grep -q ":"
> }
>
> +is_prefixed_ipv6_link_local()
> +{
> + is_ipv6_address $1 && {
> + local _host_postfix=${1##*\%}
> + echo $_host_postfix | grep -q "^kdump-eth"
> + }
> +}
> +
> # get ip address or hostname from nfs/ssh config value
> get_remote_host()
> {
> @@ -323,6 +331,10 @@ get_remote_host()
> _config_val=${_config_val%:/*}
> _config_val=${_config_val#[}
> _config_val=${_config_val%]}
> + # factor out network inteface segment in local ipv6 address
> + if is_ipv6_address $_config_val; then
> + _config_val=${_config_val%\%*}
> + fi
We can see in kdump_install_net(), it uses "ip -o route get to $_server" to acquire the
interface name, is there any chance that the name got is different from that in "ssh"?
Regards,
Xunlei
> echo $_config_val
> }
>