Re: git: 50fa27e795ea - main - netinet6: fix interface handling for loopback traffic

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Sun, 10 Jul 2022 13:32:52 UTC
On Sun, 10 Jul 2022, Alexander V. Chernikov wrote:

> The branch main has been updated by melifaro:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=50fa27e795eaae97dae87ac4532799f7aea87e9f
>
> commit 50fa27e795eaae97dae87ac4532799f7aea87e9f
> Author:     Alexander V. Chernikov <melifaro@FreeBSD.org>
> AuthorDate: 2022-07-10 12:27:23 +0000
> Commit:     Alexander V. Chernikov <melifaro@FreeBSD.org>
> CommitDate: 2022-07-10 12:47:47 +0000
>
>    netinet6: fix interface handling for loopback traffic
>
>    Currently, processing of IPv6 local traffic is partially broken:
>     link-local connection fails and global unicast connect() takes
>     3 seconds to complete.
>    This happens due to the combination of multiple factors.
>    IPv6 code passes original interface "origifp" when passing
>    traffic via loopack to retain the scope that is mandatory for the
>    correct hadling of link-local traffic. First problem is that the logic
>    of passing source interface is not working correcly for TCP connections,
>    resulting in passing "origifp" on the first 2 connection attempts and
>    lo0 on the subsequent ones. Second problem is that source address
>    validation logic skips its checks iff the source interface is loopback,
>    which doesn't cover "origifp" case.
>    More detailed description is available at https://reviews.freebsd.org/D35732
>
>    Fix the first problem by untangling&simplifying ifp/origifp logic.
>    Fix the second problem by switching source address validation check to
>    using M_LOOP mbuf flag instead of interface type.
>
>    PR:             265089
>    Reviewed by:    ae, bz(previous version)

I did not review, I had only commented on D35117.


>    Differential Revision:  https://reviews.freebsd.org/D35732
>    MFC after:      2 weeks
> ---
> sys/netinet6/ip6_input.c              |  2 +-
> sys/netinet6/ip6_output.c             | 61 ++++++++++++++++++-----------------
> tests/sys/netinet6/test_ip6_output.py |  4 +--
> 3 files changed, 35 insertions(+), 32 deletions(-)

-- 
Bjoern A. Zeeb                                                     r15:7