Hi Ilya,

Thanks for the clarification.  Good to know nc in netdev CI is the
nmap version, that makes this much simpler.

For v3 I'll:

1. Replace ncat with nc (same --sctp flag, same output format).
   Add a which nc + --sctp probe so the test skips cleanly on
   systems where nc doesn't support SCTP.

2. Add wait $server_pid after each explicit kill to properly reap
   the background daemon processes (addressing sashiko's comment
   about orphaned background processes).

Will send v3 shortly.

Best regards,
Minxi

Ilya Maximets <[email protected]> 于2026年7月14日周二 08:17写道:

> On 7/14/26 2:01 PM, 侯敏熙 wrote:
> > Hi Ilya,
> >
> > Thanks for pointing this out.  I looked into this and found that
> > nc (netcat-openbsd) on Debian/Ubuntu does not have SCTP support at
> > all. The upstream OpenBSD nc only handles TCP, UDP, and
> > Unix-domain sockets, and the Debian patches don't add SCTP either.
>
> AFAICT, 'nc' in netdev CI is the nmap version of netcat, it's not
> the openbsd one.  Does nmap version support sctp?  Google seems to
> think so at least.  The test should be skipped though if sctp is
> not supported.
>
> Note: sashiko had some comments on the daemon pid handling in v2.
>
> Best regards, Ilya Maximets.
>
> >
> > I see two cleaner alternatives that already have precedent in the
> > kernel selftests:
> >
> > 1. socat: net/netfilter/nft_queue.sh already uses
> >    "socat -u SCTP-LISTEN:PORT STDOUT" for SCTP data-plane testing.
> >    Many drivers/net/ selftests already gate on require_cmd("socat").
> >
> > 2. A small C helper: similar to sctp_hello.c used by sctp_vrf.sh
> >    and conntrack_sctp_collision.sh.  The shell test would call
> >    "./sctp_test server/client IP PORT" instead of ncat.
> >
> > Which approach would you prefer for v3?
> >
> > Best regards,
> > Minxi
> >
> > 侯敏熙 <[email protected]> 于2026年7月13日周一 11:02写道:
> >
> >> Ah so many thanks for your suggestions, Please forgive me,
> >> I've always used ncat to write test cases.
> >>
> >> I will re-spin this patch.
> >>
> >> Ilya Maximets <[email protected]> 于2026年7月13日周一 10:39写道:
> >>
> >>> On 7/7/26 5:47 AM, Minxi Hou wrote:
> >>>> Register OVS_KEY_ATTR_SCTP in the flow key parser so that sctp()
> >>>> can be used in flow specifications. The ovs_key_sctp class already
> >>>> exists (with src/dst fields matching the TCP/UDP siblings) but was
> >>>> not wired into the parser, so the token was silently dropped and the
> >>>> kernel rejected the flow.
> >>>>
> >>>> Add test_sctp_connect_v4 exercising the SCTP flow key with
> >>>> port-specific matching: sctp(dst=4443) for client-to-server and
> >>>> sctp(src=4443) for server-to-client.
> >>>>
> >>>> Wait for ncat readiness with ovs_wait instead of a fixed sleep so
> >>>> the test does not race against ncat startup. Use grep -c on the
> >>>> listening message to distinguish between successive ncat instances
> >>>> that share the same stderr log. Kill the previous server before
> >>>> respawning to avoid EADDRINUSE on the SCTP port.
> >>>>
> >>>> Signed-off-by: Minxi Hou <[email protected]>
> >>>> ---
> >>>> v1 -> v2: replace sleep with ovs_wait on ncat listening output,
> >>>>           kill previous ncat server before respawning to avoid
> >>>>           port conflict (Aaron review feedback)
> >>>>
> >>>>  .../selftests/net/openvswitch/openvswitch.sh  | 102
> ++++++++++++++++++
> >>>>  .../selftests/net/openvswitch/ovs-dpctl.py    |   5 +
> >>>>  2 files changed, 107 insertions(+)
> >>>>
> >>>> diff --git a/tools/testing/selftests/net/openvswitch/openvswitch.sh
> >>> b/tools/testing/selftests/net/openvswitch/openvswitch.sh
> >>>> index 2954245129a2..9c364eeb2ec2 100755
> >>>> --- a/tools/testing/selftests/net/openvswitch/openvswitch.sh
> >>>> +++ b/tools/testing/selftests/net/openvswitch/openvswitch.sh
> >>>> @@ -32,6 +32,7 @@ tests="
> >>>>       dec_ttl                                 ttl: dec_ttl decrements
> >>> IP TTL
> >>>>       flow_set                                flow-set: Flow modify
> >>>>       action_set                              set: SET action rewrites
> >>> fields
> >>>> +     sctp_connect_v4                         sctp: SCTP flow key
> >>> matching
> >>>>       psample                                 psample: Sampling
> packets
> >>> with psample"
> >>>>
> >>>>  info() {
> >>>> @@ -443,6 +444,107 @@ test_action_set() {
> >>>>       return 0
> >>>>  }
> >>>>
> >>>> +# sctp_connect_v4 test
> >>>> +# - sctp(dst=4443) matches client-to-server INIT
> >>>> +# - sctp(src=4443) matches server-to-client INIT-ACK
> >>>> +# - remove flows and verify connection fails, reinstall and recover
> >>>> +test_sctp_connect_v4() {
> >>>> +     local t="test_sctp_connect_v4"
> >>>> +
> >>>> +     which ncat >/dev/null 2>&1 || return $ksft_skip
> >>>
> >>> Not a full review, but can we avoid ncat?  We already use nc in other
> >>> tests, using different implementations of the same thing in different
> >>> tests doesn't sound like a good idea.  On mnay systems nc and ncat
> >>> will be different implementations with different options and behavior.
> >>>
> >>> Best regards, Ilya Maximets.
> >>>
> >>
> > _______________________________________________
> > dev mailing list
> > [email protected]
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> >
>
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to