[Bug 257286] gateway with `ping -6 -e` is ignored
Date: Mon, 19 Jul 2021 20:55:37 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257286
Bug ID: 257286
Summary: gateway with `ping -6 -e` is ignored
Product: Base System
Version: 13.0-STABLE
Hardware: Any
OS: Any
Status: New
Severity: Affects Only Me
Priority: ---
Component: kern
Assignee: bugs@FreeBSD.org
Reporter: jcaplan@blackberry.com
Created attachment 226555
--> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=226555&action=edit
proposed patch
Overview
--------
Specifying a gateway with `ping -6 -e` is ignored.
Steps to Reproduce
------------------
Two devices D1 and D2
D1:
ifconfig vmx0 inet6 3ffe::1
ifconfig vmx1 inet6 2001::1
D2:
ifconfig vmx0 inet6 3ffe::2
ifconfig vmx1 inet6 2001::2
Then on D1:
ping -6 -e 3ffe::2 -c3 2001::2
Actual Results:
---------------
The icmp6 message goes out from D1 on vmx1
Expected Results
----------------
The icmp6 message goes out from D1 on vmx0
Build Date & Hardware
---------------------
FreeBSD freebsd 13.0-RELEASE FreeBSD 13.0-RELEASE #6
releng/13.0-n244733-ea31abc261f: Sat Jun 19 06:23:53 UTC 2021
Additional Information
----------------------
See attached patch.
Control flow has changed quite a bit in ip6_output() since 12.2.
In this scenario, we have ro == NULL and hit the else block to determine the
outgoing interface based on the destination ip. When ping6 uses the
IPV6_NEXTHOP option, then opt->ip6po_nextroute.ro_nh is defined. However, when
we hit the old check later on, nh == NULL so it is ignored and we never get a
chance to check for a hard coded next hop.
Instead, when ro == NULL, need to check the option and hard code the
destination prior to calling fib6_lookup() which will assign the interface.
--
You are receiving this mail because:
You are the assignee for the bug.