Bug 257286 - gateway with `ping -6 -e` is ignored
Summary: gateway with `ping -6 -e` is ignored
Status: Open
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 13.0-STABLE
Hardware: Any Any
: --- Affects Some People
Assignee: freebsd-net (Nobody)
URL:
Keywords: easy, regression
: 257287 (view as bug list)
Depends on:
Blocks:
 
Reported: 2021-07-19 20:55 UTC by jcaplan
Modified: 2021-07-20 15:43 UTC (History)
3 users (show)

See Also:
koobs: mfc-stable13?
koobs: mfc-stable12-
koobs: mfc-stable11-


Attachments
proposed patch (662 bytes, patch)
2021-07-19 20:55 UTC, jcaplan
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description jcaplan 2021-07-19 20:55:37 UTC
Created attachment 226555 [details]
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.
Comment 1 Mark Linimon freebsd_committer freebsd_triage 2021-07-19 21:13:28 UTC
*** Bug 257287 has been marked as a duplicate of this bug. ***