Netdev List
 help / color / mirror / Atom feed
From: Alessio Faina <alessio.faina@canonical.com>
To: Andrea Mayer <andrea.mayer@uniroma2.it>
Cc: davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
	pabeni@redhat.com, horms@kernel.org, shuah@kernel.org,
	netdev@vger.kernel.org, linux-kselftest@vger.kernel.org,
	linux-kernel@vger.kernel.org, hangbin.liu@linux.dev,
	stefano.salsano@uniroma2.it
Subject: Re: [PATCH net] selftest/net: skip srv6_end_d[t/x][4/6]_*_test.sh if iproute2 too old
Date: Fri, 28 Aug 2026 18:04:41 +0200	[thread overview]
Message-ID: <apGxmfjQs247lHX-@cicciput> (raw)
In-Reply-To: <20260828042357.1d6e802448752a8fdff5a485@uniroma2.it>

On Fri, Aug 28, 2026 at 04:23:57AM +0200, Andrea Mayer wrote:
> On Thu, 27 Aug 2026 11:56:09 +0200
> Alessio Faina <alessio.faina@canonical.com> wrote:
> 
> > [snip]
> > 
> > For the DX tests I was doing a local test but it's not in the original
> > kernel, sorry, I must have confused 2 tasks with one, so disregard the
> > DX4 and DX6 tests, they are not relevant to this issue; if we manage to
> > agree on a solution for the DT4 and DT6 tests, I will discard those
> > modification in a subsequent patch.
> 
> Ok, so this is about the dt4 and dt6 tests only.
> 
> > About the DT4 and DT6 tests, I thought to use the same method as the failure
> > was practically the same as End.DT46.
> > This is the version I'm currently using 
> > ip utility, iproute2-ss200127 (should be 5.5.0 if I'm not mistaken)
> > and I can confirm 
> > [SEG6_LOCAL_ACTION_END_DT4]		= "End.DT4"
> > [SEG6_LOCAL_ACTION_END_DT6]		= "End.DT6",
> > is available.
> > 
> > What do you suggest would be the right way forward to check what is
> > going on?
> 
> These tests need the vrftable attribute. The help does not list it
> before v5.14.0, while ip parses it from v5.11.0, so a help check skips
> tests that would run on v5.11.0, v5.12.0 and v5.13.0.
> One possible way could be to try the route add in a throwaway netns and
> skip the selftest if that fails. test_encap_lookup_supp_or_ksft_skip() in
> srv6_encap_lookup_l3vpn_test.sh could provide the general idea, but here
> the netns also needs the vrf device and the strict mode the test sets up.
> 
> That's more code than a help check, but it skips when the route really
> cannot be installed. There is a trade-off to consider, and comments or
> other ideas are very welcome.
> 
> Ciao,
> Andrea

Hi andrea,

I tried multiple methods:
the first approach is yours, but I can see the following error with any iproute2 
version I'm using (I tried 5.5 to 5.18): when running 
"ip -netns ${rtdst_name}" command, it always returns 

RTNETLINK answers: File exists
2

I tried the following approach as well,

 	# set the decap route for decapsulating packets which arrive from
 	# the rtdst router and destined to the hsdst host.
-	ip -netns ${rtdst_name} -6 route add ${vpn_sid}/128 table ${LOCALSID_TABLE_ID} \
-		encap seg6local action End.DT4 vrftable ${tid} dev vrf-${tid}
+	if ! ip -netns ${rtdst_name} -6 route add ${vpn_sid}/128 table ${LOCALSID_TABLE_ID} \
+			encap seg6local action End.DT4 vrftable ${tid} dev vrf-${tid} 2>/dev/null; then
+		echo "SKIP: SRv6 End.DT4 vrftable not supported in iproute2"
+		cleanup
+		exit "${ksft_skip}"
+	fi

where the test is checked at vrftable creation time, and it would
cleanup and exit as expected from standard tests.

But obviously this gets the same RTNETLINK answer as an error.

Then another approach came to my mind, and it seems to be quite reliable.
Practically checking if the ip command contains the string "vrftable"
using the "strings" command, and if not, skip the test.

Something like this:

+test_iproute2_vrftable_supp_or_ksft_skip()
+{
+	if ! strings $(command -v ip) | grep -q "vrftable"; then
+		echo "SKIP: SRv6 End.DT4 vrftable not supported in iproute2"
+		exit "${ksft_skip}"
+	fi
+}
+

What do you think about it?

Kind regards,

    -Alessio Faina

      reply	other threads:[~2026-08-28 16:04 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-24  9:15 [PATCH net] selftest/net: skip srv6_end_d[t/x][4/6]_*_test.sh if iproute2 too old Alessio Faina
2026-08-25  8:39 ` Hangbin Liu
2026-08-25  8:45   ` Hangbin Liu
2026-08-25 22:01 ` Andrea Mayer
2026-08-26 11:49   ` Alessio Faina
2026-08-27  1:07     ` Andrea Mayer
2026-08-27  9:56       ` Alessio Faina
2026-08-28  2:23         ` Andrea Mayer
2026-08-28 16:04           ` Alessio Faina [this message]

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=apGxmfjQs247lHX-@cicciput \
    --to=alessio.faina@canonical.com \
    --cc=andrea.mayer@uniroma2.it \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hangbin.liu@linux.dev \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=shuah@kernel.org \
    --cc=stefano.salsano@uniroma2.it \
    /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