HomeFreeBSD

routing: Allow using IPv6 next-hops for IPv4 routes (RFC 5549).

Description

routing: Allow using IPv6 next-hops for IPv4 routes (RFC 5549).

Implement kernel support for RFC 5549/8950.

  • Relax control plane restrictions and allow specifying IPv6 gateways for IPv4 routes. This behavior is controlled by the net.route.rib_route_ipv6_nexthop sysctl (on by default).
  • Always pass final destination in ro->ro_dst in ip_forward().
  • Use ro->ro_dst to exract packet family inside if_output() routines. Consistently use RO_GET_FAMILY() macro to handle ro=NULL case.
  • Pass extracted family to nd6_resolve() to get the LLE with proper encap. It leverages recent lltable changes committed in c541bd368f86.

Presence of the functionality can be checked using ipv4_rfc5549_support feature(3).
Example usage:

route add -net 192.0.0.0/24 -inet6 fe80::5054:ff:fe14:e319%vtnet0

Differential Revision: https://reviews.freebsd.org/D30398

(cherry picked from commit 62e1a437f3285e785d9b35a476d36a469a90028d)

Details

Provenance
zleiAuthored on Aug 22 2021, 10:28 PM
melifaroCommitted on Sep 7 2021, 9:25 PM
Differential Revision
D30398: Route IPv4 packets via IPv6 next-hops
Parents
rGe86f5d4fcba8: routing: Disallow zero nexthop weights in nexthop groups.
Branches
Unknown
Tags
Unknown