From: Ido Schimmel <idosch@nvidia.com>
To: David 'equinox' Lamparter <equinox@diac24.net>
Cc: netdev@vger.kernel.org, davem@davemloft.net, kuba@kernel.org,
pabeni@redhat.com, edumazet@google.com, horms@kernel.org,
dsahern@kernel.org, petrm@nvidia.com, willemb@google.com,
daniel@iogearbox.net, fw@strlen.de, ishaangandhi@gmail.com,
rbonica@juniper.net, tom@herbertland.com
Subject: Re: [PATCH net-next v2 1/3] ipv4: icmp: Add RFC 5837 support
Date: Sat, 8 Nov 2025 18:01:26 +0200 [thread overview]
Message-ID: <aQ9pVt1mvU96p-R-@shredder> (raw)
In-Reply-To: <aQ4tamfiDiC1TomU@eidolon.nox.tf>
On Fri, Nov 07, 2025 at 06:33:30PM +0100, David 'equinox' Lamparter wrote:
> On Mon, Oct 27, 2025 at 10:22:30AM +0200, Ido Schimmel wrote:
> > +/* ICMP Extension Object Classes */
> > +#define ICMP_EXT_OBJ_CLASS_IIO 2 /* RFC 5837 */
> > +
> > +/* Interface Information Object - RFC 5837 */
> > +enum {
> > + ICMP_EXT_CTYPE_IIO_ROLE_IIF,
> > +};
>
> ...
>
> > +static __be32 icmp_ext_iio_addr4_find(const struct net_device *dev)
> > +{
> > + struct in_device *in_dev;
> > + struct in_ifaddr *ifa;
> > +
> > + in_dev = __in_dev_get_rcu(dev);
> > + if (!in_dev)
> > + return 0;
> > +
> > + /* It is unclear from RFC 5837 which IP address should be chosen, but
> > + * it makes sense to choose a global unicast address.
> > + */
> > + in_dev_for_each_ifa_rcu(ifa, in_dev) {
> > + if (READ_ONCE(ifa->ifa_flags) & IFA_F_SECONDARY)
> > + continue;
> > + if (ifa->ifa_scope != RT_SCOPE_UNIVERSE ||
> > + ipv4_is_multicast(ifa->ifa_address))
> > + continue;
> > + return ifa->ifa_address;
>
> For 5837, this should be an address identifying the interface. This
> sets up a rather tricky situation if there's a /32 configured on the
> interface in the context of unnumbered operation. Arguably, in that
> case class 5 (node info) should be used rather than class 2 (interface
> info). Class 5 also allows sticking an IPv6 address in an ICMPv4 reply.
This patchset does not add support for class 5 objects and the above
code is strictly about choosing an address for the "IP Address
Sub-Object" in a class 2 object. Support for class 5 objects can be
added in a different patchset. An administrator can then choose to
include both objects in ICMP error messages.
The kernel does not avoid using a /32 as the source IP of ICMP error
messages, so I don't see a reason to avoid using such an address in the
"IP Address Sub-Object".
>
> I would argue the logic here should be an order of preference:
>
> 1. any global non-/32 address on the interface, in a class 2 object
> 2. any global /32 on the interface, in a class 5 object
> 3. any global IPv6 on the interface, in a class 5 object
> 4. any global address from any interface in the VRF, preferring
> loopback, in a class 5 object (addrsel logic, really)
>
> [class 5 is draft-ietf-intarea-extended-icmp-nodeid]
>
> + analog for IPv6
>
> (cf. my other mail in the thread)
>
> Cheers,
>
>
> -equi
next prev parent reply other threads:[~2025-11-08 16:01 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-27 8:22 [PATCH net-next v2 0/3] icmp: Add RFC 5837 support Ido Schimmel
2025-10-27 8:22 ` [PATCH net-next v2 1/3] ipv4: " Ido Schimmel
2025-10-27 8:35 ` Eric Dumazet
2025-11-07 17:33 ` David 'equinox' Lamparter
2025-11-08 16:01 ` Ido Schimmel [this message]
2025-10-27 8:22 ` [PATCH net-next v2 2/3] ipv6: " Ido Schimmel
2025-10-27 8:39 ` Eric Dumazet
2025-10-27 8:22 ` [PATCH net-next v2 3/3] selftests: traceroute: Add ICMP extensions tests Ido Schimmel
2025-10-29 1:04 ` [PATCH net-next v2 0/3] icmp: Add RFC 5837 support Jakub Kicinski
2025-10-29 9:54 ` Ido Schimmel
2025-10-30 1:31 ` Jakub Kicinski
2025-11-07 17:20 ` David 'equinox' Lamparter
2025-11-08 15:39 ` Ido Schimmel
2025-10-30 1:38 ` Justin Iurman
2025-10-30 1:50 ` patchwork-bot+netdevbpf
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=aQ9pVt1mvU96p-R-@shredder \
--to=idosch@nvidia.com \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=equinox@diac24.net \
--cc=fw@strlen.de \
--cc=horms@kernel.org \
--cc=ishaangandhi@gmail.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=petrm@nvidia.com \
--cc=rbonica@juniper.net \
--cc=tom@herbertland.com \
--cc=willemb@google.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.