From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, willemb@google.com, lorenzo@google.com,
maze@google.com, dsahern@kernel.org, yoshfuji@linux-ipv6.org,
shuah@kernel.org, linux-kselftest@vger.kernel.org,
Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH net-next 08/11] selftests: net: cmsg_so_mark: test with SO_MARK set by setsockopt
Date: Wed, 9 Feb 2022 16:36:46 -0800 [thread overview]
Message-ID: <20220210003649.3120861-9-kuba@kernel.org> (raw)
In-Reply-To: <20220210003649.3120861-1-kuba@kernel.org>
Test if setting SO_MARK with setsockopt works and if cmsg
takes precedence over it.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
tools/testing/selftests/net/cmsg_sender.c | 14 ++++++++++-
tools/testing/selftests/net/cmsg_so_mark.sh | 28 +++++++++++++--------
2 files changed, 31 insertions(+), 11 deletions(-)
diff --git a/tools/testing/selftests/net/cmsg_sender.c b/tools/testing/selftests/net/cmsg_sender.c
index edb8c427c7cb..c7586a4b0361 100644
--- a/tools/testing/selftests/net/cmsg_sender.c
+++ b/tools/testing/selftests/net/cmsg_sender.c
@@ -29,6 +29,9 @@ struct options {
bool silent_send;
const char *host;
const char *service;
+ struct {
+ unsigned int mark;
+ } sockopt;
struct {
unsigned int family;
unsigned int type;
@@ -56,6 +59,7 @@ static void __attribute__((noreturn)) cs_usage(const char *bin)
"\t\t (u = UDP (default); i = ICMP; r = RAW)\n"
"\n"
"\t\t-m val Set SO_MARK with given value\n"
+ "\t\t-M val Set SO_MARK via setsockopt\n"
"");
exit(ERN_HELP);
}
@@ -64,7 +68,7 @@ static void cs_parse_args(int argc, char *argv[])
{
char o;
- while ((o = getopt(argc, argv, "46sp:m:")) != -1) {
+ while ((o = getopt(argc, argv, "46sp:m:M:")) != -1) {
switch (o) {
case 's':
opt.silent_send = true;
@@ -91,6 +95,9 @@ static void cs_parse_args(int argc, char *argv[])
opt.mark.ena = true;
opt.mark.val = atoi(optarg);
break;
+ case 'M':
+ opt.sockopt.mark = atoi(optarg);
+ break;
}
}
@@ -175,6 +182,11 @@ int main(int argc, char *argv[])
sin6->sin6_port = htons(opt.sock.proto);
}
+ if (opt.sockopt.mark &&
+ setsockopt(fd, SOL_SOCKET, SO_MARK,
+ &opt.sockopt.mark, sizeof(opt.sockopt.mark)))
+ error(ERN_SOCKOPT, errno, "setsockopt SO_MARK");
+
iov[0].iov_base = buf;
iov[0].iov_len = sizeof(buf);
diff --git a/tools/testing/selftests/net/cmsg_so_mark.sh b/tools/testing/selftests/net/cmsg_so_mark.sh
index 925f6b9deee2..1650b8622f2f 100755
--- a/tools/testing/selftests/net/cmsg_so_mark.sh
+++ b/tools/testing/selftests/net/cmsg_so_mark.sh
@@ -43,19 +43,27 @@ check_result() {
fi
}
-for i in 4 6; do
- [ $i == 4 ] && TGT=$TGT4 || TGT=$TGT6
+for ovr in setsock cmsg both; do
+ for i in 4 6; do
+ [ $i == 4 ] && TGT=$TGT4 || TGT=$TGT6
- for p in u i r; do
- [ $p == "u" ] && prot=UDP
- [ $p == "i" ] && prot=ICMP
- [ $p == "r" ] && prot=RAW
+ for p in u i r; do
+ [ $p == "u" ] && prot=UDP
+ [ $p == "i" ] && prot=ICMP
+ [ $p == "r" ] && prot=RAW
- ip netns exec $NS ./cmsg_sender -$i -p $p -m $((MARK + 1)) $TGT 1234
- check_result $? 0 "$prot pass"
+ [ $ovr == "setsock" ] && m="-M"
+ [ $ovr == "cmsg" ] && m="-m"
+ [ $ovr == "both" ] && m="-M $MARK -m"
- ip netns exec $NS ./cmsg_sender -$i -p $p -m $MARK -s $TGT 1234
- check_result $? 1 "$prot rejection"
+ ip netns exec $NS ./cmsg_sender -$i -p $p $m $((MARK + 1)) $TGT 1234
+ check_result $? 0 "$prot $ovr - pass"
+
+ [ $ovr == "diff" ] && m="-M $((MARK + 1)) -m"
+
+ ip netns exec $NS ./cmsg_sender -$i -p $p $m $MARK -s $TGT 1234
+ check_result $? 1 "$prot $ovr - rejection"
+ done
done
done
--
2.34.1
next prev parent reply other threads:[~2022-02-10 2:02 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-10 0:36 [PATCH net-next 00/11] net: ping6: support basic socket cmsgs Jakub Kicinski
2022-02-10 0:36 ` [PATCH net-next 01/11] net: ping6: remove a pr_debug() statement Jakub Kicinski
2022-02-10 5:30 ` David Ahern
2022-02-10 0:36 ` [PATCH net-next 02/11] net: ping6: support packet timestamping Jakub Kicinski
2022-02-10 0:44 ` Maciej Żenczykowski
2022-02-10 2:17 ` Jakub Kicinski
2022-02-10 5:30 ` David Ahern
2022-02-10 0:36 ` [PATCH net-next 03/11] net: ping6: support setting socket options via cmsg Jakub Kicinski
2022-02-10 5:30 ` David Ahern
2022-02-10 0:36 ` [PATCH net-next 04/11] selftests: net: rename cmsg_so_mark Jakub Kicinski
2022-02-10 0:36 ` [PATCH net-next 05/11] selftests: net: make cmsg_so_mark ready for more options Jakub Kicinski
2022-02-10 0:36 ` [PATCH net-next 06/11] selftests: net: cmsg_sender: support icmp and raw sockets Jakub Kicinski
2022-02-10 0:36 ` [PATCH net-next 07/11] selftests: net: cmsg_so_mark: test ICMP and RAW sockets Jakub Kicinski
2022-02-10 0:36 ` Jakub Kicinski [this message]
2022-02-10 0:36 ` [PATCH net-next 09/11] selftests: net: cmsg_sender: support setting SO_TXTIME Jakub Kicinski
2022-02-10 0:36 ` [PATCH net-next 10/11] selftests: net: cmsg_sender: support Tx timestamping Jakub Kicinski
2022-02-10 0:36 ` [PATCH net-next 11/11] selftests: net: test standard socket cmsgs across UDP and ICMP sockets Jakub Kicinski
2022-02-10 15:30 ` [PATCH net-next 00/11] net: ping6: support basic socket cmsgs patchwork-bot+netdevbpf
2022-02-10 16:08 ` Willem de Bruijn
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=20220210003649.3120861-9-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=lorenzo@google.com \
--cc=maze@google.com \
--cc=netdev@vger.kernel.org \
--cc=shuah@kernel.org \
--cc=willemb@google.com \
--cc=yoshfuji@linux-ipv6.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).