From: Richard Gobert <richardbgobert@gmail.com>
To: Kuniyuki Iwashima <kuniyu@google.com>
Cc: andrew+netdev@lunn.ch, daniel@iogearbox.net, davem@davemloft.net,
donald.hunter@gmail.com, dsahern@kernel.org, edumazet@google.com,
horms@kernel.org, idosch@nvidia.com, jacob.e.keller@intel.com,
kuba@kernel.org, linux-kernel@vger.kernel.org,
martin.lau@kernel.org, menglong8.dong@gmail.com,
netdev@vger.kernel.org, pabeni@redhat.com, petrm@nvidia.com,
razor@blackwall.org, shuah@kernel.org
Subject: Re: [PATCH net-next v5 3/5] net: vxlan: bind vxlan sockets to their local address if configured
Date: Wed, 13 Aug 2025 17:41:12 +0200 [thread overview]
Message-ID: <088b9c26-482d-49af-bd22-bc870aaae851@gmail.com> (raw)
In-Reply-To: <20250813070758.120210-1-kuniyu@google.com>
Kuniyuki Iwashima wrote:
> From: Richard Gobert <richardbgobert@gmail.com>
> Date: Tue, 12 Aug 2025 14:51:53 +0200
>> diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c
>> index 15fe9d83c724..12da9595436e 100644
>> --- a/drivers/net/vxlan/vxlan_core.c
>> +++ b/drivers/net/vxlan/vxlan_core.c
>> @@ -78,18 +78,34 @@ static inline bool vxlan_collect_metadata(struct vxlan_sock *vs)
>> }
>>
>> /* Find VXLAN socket based on network namespace, address family, UDP port,
>> - * enabled unshareable flags and socket device binding (see l3mdev with
>> - * non-default VRF).
>> + * bound address, enabled unshareable flags and socket device binding
>> + * (see l3mdev with non-default VRF).
>> */
>> static struct vxlan_sock *vxlan_find_sock(struct net *net, sa_family_t family,
>> - __be16 port, u32 flags, int ifindex)
>> + __be16 port, u32 flags, int ifindex,
>> + union vxlan_addr *saddr)
>> {
>> struct vxlan_sock *vs;
>>
>> flags &= VXLAN_F_RCV_FLAGS;
>
> VXLAN_F_LOCALBIND seems to be cleared ?
>
>>
>> hlist_for_each_entry_rcu(vs, vs_head(net, port), hlist) {
>> - if (inet_sk(vs->sock->sk)->inet_sport == port &&
>> + struct sock *sk = vs->sock->sk;
>> + struct inet_sock *inet = inet_sk(sk);
>> +
>> + if (flags & VXLAN_F_LOCALBIND) {
>
> Does selftest exercise this path ?
>
>
>> + if (family == AF_INET &&
>> + inet->inet_rcv_saddr != saddr->sin.sin_addr.s_addr)
>> + continue;
>> +#if IS_ENABLED(CONFIG_IPV6)
>> + else if (family == AF_INET6 &&
>> + ipv6_addr_cmp(&sk->sk_v6_rcv_saddr,
>> + &saddr->sin6.sin6_addr) != 0)
>> + continue;
>> +#endif
>> + }
>> +
>> + if (inet->inet_sport == port &&
>> vxlan_get_sk_family(vs) == family &&
>> vs->flags == flags &&
>> vs->sock->sk->sk_bound_dev_if == ifindex)
Nice catch. I don't think the new selftest exercises this path, but I'm
running the other vxlan selftests with the localbind option enabled by default
and ensuring that they pass.
next prev parent reply other threads:[~2025-08-13 15:41 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-12 12:51 [PATCH net-next v5 0/5] net: add local address bind support to vxlan and geneve Richard Gobert
2025-08-12 12:51 ` [PATCH net-next v5 1/5] net: udp: add freebind option to udp_sock_create Richard Gobert
2025-08-13 9:25 ` Ido Schimmel
2025-08-13 15:10 ` Richard Gobert
2025-08-12 12:51 ` [PATCH net-next v5 2/5] net: vxlan: add netlink option to bind vxlan sockets to local addresses Richard Gobert
2025-08-13 6:28 ` Kuniyuki Iwashima
2025-08-13 15:46 ` Richard Gobert
2025-08-13 16:04 ` Ido Schimmel
2025-08-13 17:55 ` Kuniyuki Iwashima
2025-08-13 9:26 ` Ido Schimmel
2025-08-12 12:51 ` [PATCH net-next v5 3/5] net: vxlan: bind vxlan sockets to their local address if configured Richard Gobert
2025-08-13 7:07 ` Kuniyuki Iwashima
2025-08-13 15:41 ` Richard Gobert [this message]
2025-08-13 9:26 ` Ido Schimmel
2025-08-13 15:18 ` Richard Gobert
2025-08-12 12:51 ` [PATCH net-next v5 4/5] net: geneve: enable binding geneve sockets to local addresses Richard Gobert
2025-08-12 12:51 ` [PATCH net-next v5 5/5] selftests/net: add vxlan localbind selftest Richard Gobert
2025-08-13 11:44 ` Ido Schimmel
2025-08-13 15:49 ` Richard Gobert
2025-08-13 14:34 ` Jakub Kicinski
2025-08-13 15:52 ` Richard Gobert
2025-08-13 9:25 ` [PATCH net-next v5 0/5] net: add local address bind support to vxlan and geneve Ido Schimmel
2025-08-13 15:29 ` Richard Gobert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=088b9c26-482d-49af-bd22-bc870aaae851@gmail.com \
--to=richardbgobert@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=jacob.e.keller@intel.com \
--cc=kuba@kernel.org \
--cc=kuniyu@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.lau@kernel.org \
--cc=menglong8.dong@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=petrm@nvidia.com \
--cc=razor@blackwall.org \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).