From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd36.google.com (mail-io1-xd36.google.com [IPv6:2607:f8b0:4864:20::d36]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id DA0A23CB37 for ; Fri, 29 Oct 2021 14:47:36 -0400 (EDT) Received: by mail-io1-xd36.google.com with SMTP id v65so13704630ioe.5 for ; Fri, 29 Oct 2021 11:47:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :content-transfer-encoding; bh=VTWwGHdz9J86/0ygYnN36u0Cyy06y6ukMyToaN/pGUY=; b=abojA32iYR4f52unfyZFgtAish5PsqEAxl3BQvaZjNEJNelgVsy6OuJWsyEmQsL1mP 3suWPTdBDDbHHNLM/cAljOH2shASfkF34A0HqsSZTTv1RE41Ol0pnANkZ0Kxz8USU0WY XY29o2KJ1St6xyWHx3BDVIYM0xxleyJRGx2R6bWDKZTwkDXruBeza5KIlucEiSj5QDo4 b3hy5UHluRYO6ND0ApTASZw8LAVPItuSnj6DrQo0JqtWRFFBHfdmTDjcxSc2qJvNhjJr jO9K3iuCYEx7VtJba7VtW9noHQlJR1l8Jd6QMS0/ucRidVCOQfhUpYaAM/TT22Bp3/YS z8eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-transfer-encoding; bh=VTWwGHdz9J86/0ygYnN36u0Cyy06y6ukMyToaN/pGUY=; b=pK/aiezCioEgQMql/x0GAZkbW6WIdA1JRtJV2BmYr97B3YjplB+Ij1lq+EDVWQys03 HVYc0S67PkczTp3//oy7xzA7KLKyLhubiBoWkvWgpk/j2mWjH0aLxUciodc5AVgwXONh UypXP7pUqenV+eoV5jHmb/VhPNUBREb6OxNA5jEr4dOVVxkkrf5DkiU4B8Q1jCLUYyjg HVnLAZjuhG3njkv4GG44zCa8yIWCAmchBgpZI9Y5Xxkgk2qMdfqwpBNYV5Fo0vJOM6+r SuP42aqHvH4Ucop3WoAy7QEsgKIOc+HOm6E+JoAfGbppD/NC13E3nkxgcFHVyX5YidsG V3xg== X-Gm-Message-State: AOAM533gxmzgemIx/WIb/O5wjNHgAd1hf6MFgPco3IVGr8WD6VqMdZ8u 69ZJyE367zzTeP3/MbAFFhKmecW+IaJaYdVkgfNTANy6 X-Google-Smtp-Source: ABdhPJyoeilHTiB8m44BL85BvUFAxTQCeGV3/sSSY+AEia8BBAHnUA6LnZO7ocu/KayQaZF46gIv5IzRcMs6LdAP+4U= X-Received: by 2002:a5d:9d46:: with SMTP id k6mr9191409iok.55.1635533256134; Fri, 29 Oct 2021 11:47:36 -0700 (PDT) MIME-Version: 1.0 References: <20211029155135.468098-1-kuba@kernel.org> <20211029155135.468098-3-kuba@kernel.org> In-Reply-To: <20211029155135.468098-3-kuba@kernel.org> From: Dave Taht Date: Fri, 29 Oct 2021 11:47:23 -0700 Message-ID: To: Cake List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Subject: [Cake] Fwd: [PATCH net 2/2] selftests: udp: test for passing SO_MARK as cmsg X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Oct 2021 18:47:36 -0000 not sure what the use case is for SO_MARK, but getting more access to cmsg in general is on my mind. ---------- Forwarded message --------- From: Jakub Kicinski Date: Fri, Oct 29, 2021 at 8:52 AM Subject: [PATCH net 2/2] selftests: udp: test for passing SO_MARK as cmsg To: , Cc: , , , Jakub Kicinski , , Before fix: | Case IPv6 rejection returned 0, expected 1 |FAIL - 1/4 cases failed With the fix: | OK Signed-off-by: Jakub Kicinski -- CC: shuah@kernel.org CC: linux-kselftest@vger.kernel.org --- tools/testing/selftests/net/.gitignore | 1 + tools/testing/selftests/net/Makefile | 2 + tools/testing/selftests/net/cmsg_so_mark.c | 67 +++++++++++++++++++++ tools/testing/selftests/net/cmsg_so_mark.sh | 61 +++++++++++++++++++ 4 files changed, 131 insertions(+) create mode 100644 tools/testing/selftests/net/cmsg_so_mark.c create mode 100755 tools/testing/selftests/net/cmsg_so_mark.sh diff --git a/tools/testing/selftests/net/.gitignore b/tools/testing/selftests/net/.gitignore index 501550501216..7581a7348e1b 100644 --- a/tools/testing/selftests/net/.gitignore +++ b/tools/testing/selftests/net/.gitignore @@ -35,3 +35,4 @@ test_unix_oob gro ioam6_parser toeplitz +cmsg_so_mark diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile index 492b273743b4..f56b652d5cc6 100644 --- a/tools/testing/selftests/net/Makefile +++ b/tools/testing/selftests/net/Makefile @@ -28,6 +28,7 @@ TEST_PROGS +=3D veth.sh TEST_PROGS +=3D ioam6.sh TEST_PROGS +=3D gro.sh TEST_PROGS +=3D gre_gso.sh +TEST_PROGS +=3D cmsg_so_mark.sh TEST_PROGS_EXTENDED :=3D in_netns.sh TEST_GEN_FILES =3D socket nettest TEST_GEN_FILES +=3D psock_fanout psock_tpacket msg_zerocopy reuseport_addr= _any @@ -44,6 +45,7 @@ TEST_GEN_FILES +=3D gro TEST_GEN_PROGS =3D reuseport_bpf reuseport_bpf_cpu reuseport_bpf_numa TEST_GEN_PROGS +=3D reuseport_dualstack reuseaddr_conflict tls TEST_GEN_FILES +=3D toeplitz +TEST_GEN_FILES +=3D cmsg_so_mark TEST_FILES :=3D settings diff --git a/tools/testing/selftests/net/cmsg_so_mark.c b/tools/testing/selftests/net/cmsg_so_mark.c new file mode 100644 index 000000000000..27f2804892a7 --- /dev/null +++ b/tools/testing/selftests/net/cmsg_so_mark.c @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +#include +#include +#include +#include +#include +#include +#include +#include + +int main(int argc, const char **argv) +{ + char cbuf[CMSG_SPACE(sizeof(__u32))]; + struct addrinfo hints, *ai; + struct cmsghdr *cmsg; + struct iovec iov[1]; + struct msghdr msg; + int mark; + int err; + int fd; + + if (argc !=3D 4) { + fprintf(stderr, "Usage: %s \n", argv[= 0]); + return 1; + } + mark =3D atoi(argv[3]); + + memset(&hints, 0, sizeof(hints)); + hints.ai_family =3D AF_UNSPEC; + hints.ai_socktype =3D SOCK_DGRAM; + + ai =3D NULL; + err =3D getaddrinfo(argv[1], argv[2], &hints, &ai); + if (err) { + fprintf(stderr, "Can't resolve address: %s\n", strerror(err= no)); + return 1; + } + + fd =3D socket(ai->ai_family, SOCK_DGRAM, IPPROTO_UDP); + if (fd < 0) { + fprintf(stderr, "Can't open socket: %s\n", strerror(errno))= ; + freeaddrinfo(ai); + return 1; + } + + iov[0].iov_base =3D "bla"; + iov[0].iov_len =3D 4; + + msg.msg_name =3D ai->ai_addr; + msg.msg_namelen =3D ai->ai_addrlen; + msg.msg_iov =3D iov; + msg.msg_iovlen =3D 1; + msg.msg_control =3D cbuf; + msg.msg_controllen =3D sizeof(cbuf); + + cmsg =3D CMSG_FIRSTHDR(&msg); + cmsg->cmsg_level =3D SOL_SOCKET; + cmsg->cmsg_type =3D SO_MARK; + cmsg->cmsg_len =3D CMSG_LEN(sizeof(__u32)); + *(__u32 *)CMSG_DATA(cmsg) =3D mark; + + err =3D sendmsg(fd, &msg, 0); + + close(fd); + freeaddrinfo(ai); + return err !=3D 4; +} diff --git a/tools/testing/selftests/net/cmsg_so_mark.sh b/tools/testing/selftests/net/cmsg_so_mark.sh new file mode 100755 index 000000000000..19c6aab8d0e9 --- /dev/null +++ b/tools/testing/selftests/net/cmsg_so_mark.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +NS=3Dns +IP4=3D172.16.0.1/24 +TGT4=3D172.16.0.2 +IP6=3D2001:db8:1::1/64 +TGT6=3D2001:db8:1::2 +MARK=3D1000 + +cleanup() +{ + ip netns del $NS +} + +trap cleanup EXIT + +# Namespaces +ip netns add $NS + +# Connectivity +ip -netns $NS link add type dummy +ip -netns $NS link set dev dummy0 up +ip -netns $NS addr add $IP4 dev dummy0 +ip -netns $NS addr add $IP6 dev dummy0 + +ip -netns $NS rule add fwmark $MARK lookup 300 +ip -6 -netns $NS rule add fwmark $MARK lookup 300 +ip -netns $NS route add prohibit any table 300 +ip -6 -netns $NS route add prohibit any table 300 + +# Test +BAD=3D0 +TOTAL=3D0 + +check_result() { + ((TOTAL++)) + if [ $1 -ne $2 ]; then + echo " Case $3 returned $1, expected $2" + ((BAD++)) + fi +} + +ip netns exec $NS ./cmsg_so_mark $TGT4 1234 $((MARK + 1)) +check_result $? 0 "IPv4 pass" +ip netns exec $NS ./cmsg_so_mark $TGT6 1234 $((MARK + 1)) +check_result $? 0 "IPv6 pass" + +ip netns exec $NS ./cmsg_so_mark $TGT4 1234 $MARK +check_result $? 1 "IPv4 rejection" +ip netns exec $NS ./cmsg_so_mark $TGT6 1234 $MARK +check_result $? 1 "IPv6 rejection" + +# Summary +if [ $BAD -ne 0 ]; then + echo "FAIL - $BAD/$TOTAL cases failed" + exit 1 +else + echo "OK" + exit 0 +fi -- 2.31.1 --=20 Fixing Starlink's Latencies: https://www.youtube.com/watch?v=3Dc9gLo6Xrwgw Dave T=C3=A4ht CEO, TekLibre, LLC