diff options
author | Jakub Kicinski <jakub.kicinski@netronome.com> | 2019-07-19 13:29:23 -0400 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2019-07-22 10:04:17 -0400 |
commit | cf32526c8842781e32d6652a1e01e83b20490948 (patch) | |
tree | 32a727376bb49d4d48b354a46bbd10848b05d9a7 /tools | |
parent | 95fa145479fbc0a0c1fd3274ceb42ec03c042a4a (diff) |
selftests/tls: add a test for ULP but no keys
Make sure we test the TLS_BASE/TLS_BASE case both with data
and the tear down/clean up path.
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/testing/selftests/net/tls.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tools/testing/selftests/net/tls.c b/tools/testing/selftests/net/tls.c index 090fff9dbc48..194826fee4f7 100644 --- a/tools/testing/selftests/net/tls.c +++ b/tools/testing/selftests/net/tls.c | |||
@@ -25,6 +25,80 @@ | |||
25 | #define TLS_PAYLOAD_MAX_LEN 16384 | 25 | #define TLS_PAYLOAD_MAX_LEN 16384 |
26 | #define SOL_TLS 282 | 26 | #define SOL_TLS 282 |
27 | 27 | ||
28 | #ifndef ENOTSUPP | ||
29 | #define ENOTSUPP 524 | ||
30 | #endif | ||
31 | |||
32 | FIXTURE(tls_basic) | ||
33 | { | ||
34 | int fd, cfd; | ||
35 | bool notls; | ||
36 | }; | ||
37 | |||
38 | FIXTURE_SETUP(tls_basic) | ||
39 | { | ||
40 | struct sockaddr_in addr; | ||
41 | socklen_t len; | ||
42 | int sfd, ret; | ||
43 | |||
44 | self->notls = false; | ||
45 | len = sizeof(addr); | ||
46 | |||
47 | addr.sin_family = AF_INET; | ||
48 | addr.sin_addr.s_addr = htonl(INADDR_ANY); | ||
49 | addr.sin_port = 0; | ||
50 | |||
51 | self->fd = socket(AF_INET, SOCK_STREAM, 0); | ||
52 | sfd = socket(AF_INET, SOCK_STREAM, 0); | ||
53 | |||
54 | ret = bind(sfd, &addr, sizeof(addr)); | ||
55 | ASSERT_EQ(ret, 0); | ||
56 | ret = listen(sfd, 10); | ||
57 | ASSERT_EQ(ret, 0); | ||
58 | |||
59 | ret = getsockname(sfd, &addr, &len); | ||
60 | ASSERT_EQ(ret, 0); | ||
61 | |||
62 | ret = connect(self->fd, &addr, sizeof(addr)); | ||
63 | ASSERT_EQ(ret, 0); | ||
64 | |||
65 | self->cfd = accept(sfd, &addr, &len); | ||
66 | ASSERT_GE(self->cfd, 0); | ||
67 | |||
68 | close(sfd); | ||
69 | |||
70 | ret = setsockopt(self->fd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls")); | ||
71 | if (ret != 0) { | ||
72 | ASSERT_EQ(errno, ENOTSUPP); | ||
73 | self->notls = true; | ||
74 | printf("Failure setting TCP_ULP, testing without tls\n"); | ||
75 | return; | ||
76 | } | ||
77 | |||
78 | ret = setsockopt(self->cfd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls")); | ||
79 | ASSERT_EQ(ret, 0); | ||
80 | } | ||
81 | |||
82 | FIXTURE_TEARDOWN(tls_basic) | ||
83 | { | ||
84 | close(self->fd); | ||
85 | close(self->cfd); | ||
86 | } | ||
87 | |||
88 | /* Send some data through with ULP but no keys */ | ||
89 | TEST_F(tls_basic, base_base) | ||
90 | { | ||
91 | char const *test_str = "test_read"; | ||
92 | int send_len = 10; | ||
93 | char buf[10]; | ||
94 | |||
95 | ASSERT_EQ(strlen(test_str) + 1, send_len); | ||
96 | |||
97 | EXPECT_EQ(send(self->fd, test_str, send_len, 0), send_len); | ||
98 | EXPECT_NE(recv(self->cfd, buf, send_len, 0), -1); | ||
99 | EXPECT_EQ(memcmp(buf, test_str, send_len), 0); | ||
100 | }; | ||
101 | |||
28 | FIXTURE(tls) | 102 | FIXTURE(tls) |
29 | { | 103 | { |
30 | int fd, cfd; | 104 | int fd, cfd; |