Message ID | 20230719192708.1775162-5-AVKrasnov@sberdevices.ru (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | virtio/vsock: some updates for MSG_PEEK flag | expand |
Context | Check | Description |
---|---|---|
netdev/series_format | success | Posting correctly formatted |
netdev/tree_selection | success | Guessed tree name to be net-next |
netdev/fixes_present | success | Fixes tag not required for -next series |
netdev/header_inline | success | No static functions without inline keyword in header files |
netdev/build_32bit | success | Errors and warnings before: 9 this patch: 9 |
netdev/cc_maintainers | success | CCed 3 of 3 maintainers |
netdev/build_clang | success | Errors and warnings before: 9 this patch: 9 |
netdev/verify_signedoff | success | Signed-off-by tag matches author and committer |
netdev/deprecated_api | success | None detected |
netdev/check_selftest | success | No net selftest shell script |
netdev/verify_fixes | success | No Fixes tag |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 9 this patch: 9 |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 106 lines checked |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/source_inline | success | Was 0 now: 0 |
On Wed, Jul 19, 2023 at 10:27:08PM +0300, Arseniy Krasnov wrote: >This adds MSG_PEEK test for SOCK_SEQPACKET. It works in the same way as >SOCK_STREAM test, except it also tests MSG_TRUNC flag. > >Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> >--- > tools/testing/vsock/vsock_test.c | 58 +++++++++++++++++++++++++++++--- > 1 file changed, 54 insertions(+), 4 deletions(-) > >diff --git a/tools/testing/vsock/vsock_test.c b/tools/testing/vsock/vsock_test.c >index 444a3ff0681f..2ca2cbfa9808 100644 >--- a/tools/testing/vsock/vsock_test.c >+++ b/tools/testing/vsock/vsock_test.c >@@ -257,14 +257,19 @@ static void test_stream_multiconn_server(const struct test_opts *opts) > > #define MSG_PEEK_BUF_LEN 64 > >-static void test_stream_msg_peek_client(const struct test_opts *opts) >+static void __test_msg_peek_client(const struct test_opts *opts, Let's stay with just test_msg_peek_client(), WDYT? >+ bool seqpacket) > { > unsigned char buf[MSG_PEEK_BUF_LEN]; > ssize_t send_size; > int fd; > int i; > >- fd = vsock_stream_connect(opts->peer_cid, 1234); >+ if (seqpacket) >+ fd = vsock_seqpacket_connect(opts->peer_cid, 1234); >+ else >+ fd = vsock_stream_connect(opts->peer_cid, 1234); >+ > if (fd < 0) { > perror("connect"); > exit(EXIT_FAILURE); >@@ -290,7 +295,8 @@ static void test_stream_msg_peek_client(const struct test_opts *opts) > close(fd); > } > >-static void test_stream_msg_peek_server(const struct test_opts *opts) >+static void __test_msg_peek_server(const struct test_opts *opts, Same here. The rest LGTM! Also the whole series should be ready for net-next, right? Stefano
On 25.07.2023 18:41, Stefano Garzarella wrote: > On Wed, Jul 19, 2023 at 10:27:08PM +0300, Arseniy Krasnov wrote: >> This adds MSG_PEEK test for SOCK_SEQPACKET. It works in the same way as >> SOCK_STREAM test, except it also tests MSG_TRUNC flag. >> >> Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> >> --- >> tools/testing/vsock/vsock_test.c | 58 +++++++++++++++++++++++++++++--- >> 1 file changed, 54 insertions(+), 4 deletions(-) >> >> diff --git a/tools/testing/vsock/vsock_test.c b/tools/testing/vsock/vsock_test.c >> index 444a3ff0681f..2ca2cbfa9808 100644 >> --- a/tools/testing/vsock/vsock_test.c >> +++ b/tools/testing/vsock/vsock_test.c >> @@ -257,14 +257,19 @@ static void test_stream_multiconn_server(const struct test_opts *opts) >> >> #define MSG_PEEK_BUF_LEN 64 >> >> -static void test_stream_msg_peek_client(const struct test_opts *opts) >> +static void __test_msg_peek_client(const struct test_opts *opts, > > Let's stay with just test_msg_peek_client(), WDYT? > >> + bool seqpacket) >> { >> unsigned char buf[MSG_PEEK_BUF_LEN]; >> ssize_t send_size; >> int fd; >> int i; >> >> - fd = vsock_stream_connect(opts->peer_cid, 1234); >> + if (seqpacket) >> + fd = vsock_seqpacket_connect(opts->peer_cid, 1234); >> + else >> + fd = vsock_stream_connect(opts->peer_cid, 1234); >> + >> if (fd < 0) { >> perror("connect"); >> exit(EXIT_FAILURE); >> @@ -290,7 +295,8 @@ static void test_stream_msg_peek_client(const struct test_opts *opts) >> close(fd); >> } >> >> -static void test_stream_msg_peek_server(const struct test_opts *opts) >> +static void __test_msg_peek_server(const struct test_opts *opts, > > Same here. > > The rest LGTM! Ok! I'll update. > > Also the whole series should be ready for net-next, right? Yes, I'll fix these two things and resend this as 'net-next' Thanks, Arseniy > > Stefano >
diff --git a/tools/testing/vsock/vsock_test.c b/tools/testing/vsock/vsock_test.c index 444a3ff0681f..2ca2cbfa9808 100644 --- a/tools/testing/vsock/vsock_test.c +++ b/tools/testing/vsock/vsock_test.c @@ -257,14 +257,19 @@ static void test_stream_multiconn_server(const struct test_opts *opts) #define MSG_PEEK_BUF_LEN 64 -static void test_stream_msg_peek_client(const struct test_opts *opts) +static void __test_msg_peek_client(const struct test_opts *opts, + bool seqpacket) { unsigned char buf[MSG_PEEK_BUF_LEN]; ssize_t send_size; int fd; int i; - fd = vsock_stream_connect(opts->peer_cid, 1234); + if (seqpacket) + fd = vsock_seqpacket_connect(opts->peer_cid, 1234); + else + fd = vsock_stream_connect(opts->peer_cid, 1234); + if (fd < 0) { perror("connect"); exit(EXIT_FAILURE); @@ -290,7 +295,8 @@ static void test_stream_msg_peek_client(const struct test_opts *opts) close(fd); } -static void test_stream_msg_peek_server(const struct test_opts *opts) +static void __test_msg_peek_server(const struct test_opts *opts, + bool seqpacket) { unsigned char buf_half[MSG_PEEK_BUF_LEN / 2]; unsigned char buf_normal[MSG_PEEK_BUF_LEN]; @@ -298,7 +304,11 @@ static void test_stream_msg_peek_server(const struct test_opts *opts) ssize_t res; int fd; - fd = vsock_stream_accept(VMADDR_CID_ANY, 1234, NULL); + if (seqpacket) + fd = vsock_seqpacket_accept(VMADDR_CID_ANY, 1234, NULL); + else + fd = vsock_stream_accept(VMADDR_CID_ANY, 1234, NULL); + if (fd < 0) { perror("accept"); exit(EXIT_FAILURE); @@ -340,6 +350,21 @@ static void test_stream_msg_peek_server(const struct test_opts *opts) exit(EXIT_FAILURE); } + if (seqpacket) { + /* This type of socket supports MSG_TRUNC flag, + * so check it with MSG_PEEK. We must get length + * of the message. + */ + res = recv(fd, buf_half, sizeof(buf_half), MSG_PEEK | + MSG_TRUNC); + if (res != sizeof(buf_peek)) { + fprintf(stderr, + "recv(2) + MSG_PEEK | MSG_TRUNC, exp %zu, got %zi\n", + sizeof(buf_half), res); + exit(EXIT_FAILURE); + } + } + res = recv(fd, buf_normal, sizeof(buf_normal), 0); if (res != sizeof(buf_normal)) { fprintf(stderr, "recv(2), expected %zu, got %zi\n", @@ -356,6 +381,16 @@ static void test_stream_msg_peek_server(const struct test_opts *opts) close(fd); } +static void test_stream_msg_peek_client(const struct test_opts *opts) +{ + return __test_msg_peek_client(opts, false); +} + +static void test_stream_msg_peek_server(const struct test_opts *opts) +{ + return __test_msg_peek_server(opts, false); +} + #define SOCK_BUF_SIZE (2 * 1024 * 1024) #define MAX_MSG_SIZE (32 * 1024) @@ -1125,6 +1160,16 @@ static void test_stream_virtio_skb_merge_server(const struct test_opts *opts) close(fd); } +static void test_seqpacket_msg_peek_client(const struct test_opts *opts) +{ + return __test_msg_peek_client(opts, true); +} + +static void test_seqpacket_msg_peek_server(const struct test_opts *opts) +{ + return __test_msg_peek_server(opts, true); +} + static struct test_case test_cases[] = { { .name = "SOCK_STREAM connection reset", @@ -1200,6 +1245,11 @@ static struct test_case test_cases[] = { .run_client = test_stream_virtio_skb_merge_client, .run_server = test_stream_virtio_skb_merge_server, }, + { + .name = "SOCK_SEQPACKET MSG_PEEK", + .run_client = test_seqpacket_msg_peek_client, + .run_server = test_seqpacket_msg_peek_server, + }, {}, };
This adds MSG_PEEK test for SOCK_SEQPACKET. It works in the same way as SOCK_STREAM test, except it also tests MSG_TRUNC flag. Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> --- tools/testing/vsock/vsock_test.c | 58 +++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 4 deletions(-)