diff options
author | Zhenlei Huang <zlei@FreeBSD.org> | 2025-08-08 10:17:51 +0000 |
---|---|---|
committer | Zhenlei Huang <zlei@FreeBSD.org> | 2025-08-08 10:17:51 +0000 |
commit | f4744b8acb932fbb3e48b71d31b7cd585566b668 (patch) | |
tree | b4a6666551ff2a64a0ec6937b9253b6d6359dc1a /cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs | |
parent | 04d0dc4c0c65592a21225cff43f25e0a0da64eb9 (diff) |
Given IPPROTO_IPV4, IPPROTO_IPV6 and IPPROTO_ETHERIP have different
protocol numbers, then it is perfect valid to tunnel IPv4, IPv6 and
Ethernet traffic over IPv[46] by the same interface. Since gif(4) has
already utilized the inbound csum_data field to carry address family,
also teach if_bridge(4) to do that, rather than checking if a gif(4)
interface is member of a if_bridge(4) interface.
Without this fix, tunnel IPv[46] over IPv[46] will not work when the
gif(4) interface is member of a if_bridge(4) interface, aka the EtherIP
setup, as the address family passed from gif_output() will be overwritten
with the wrong one AF_LINK by gif_transmit(), and end up with incorrectly
encapsulated packets.
PR: 227450
Reviewed by: kp
Tested by: meta
Fixes: 8a0308722372 gif(4): Assert that gif_output() isn't called for EtherIP
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D51682
Diffstat (limited to 'cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs')
0 files changed, 0 insertions, 0 deletions