Skip to content

Commit a125f91

Browse files
committed
selftests: tls: add helper for creating sock pairs
We have the same code 3 times, about to add a fourth copy. Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 9dbe33c commit a125f91

File tree

1 file changed

+29
-99
lines changed
  • tools/testing/selftests/net

1 file changed

+29
-99
lines changed

tools/testing/selftests/net/tls.c

Lines changed: 29 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -78,26 +78,21 @@ static void memrnd(void *s, size_t n)
7878
*byte++ = rand();
7979
}
8080

81-
FIXTURE(tls_basic)
82-
{
83-
int fd, cfd;
84-
bool notls;
85-
};
86-
87-
FIXTURE_SETUP(tls_basic)
81+
static void ulp_sock_pair(struct __test_metadata *_metadata,
82+
int *fd, int *cfd, bool *notls)
8883
{
8984
struct sockaddr_in addr;
9085
socklen_t len;
9186
int sfd, ret;
9287

93-
self->notls = false;
88+
*notls = false;
9489
len = sizeof(addr);
9590

9691
addr.sin_family = AF_INET;
9792
addr.sin_addr.s_addr = htonl(INADDR_ANY);
9893
addr.sin_port = 0;
9994

100-
self->fd = socket(AF_INET, SOCK_STREAM, 0);
95+
*fd = socket(AF_INET, SOCK_STREAM, 0);
10196
sfd = socket(AF_INET, SOCK_STREAM, 0);
10297

10398
ret = bind(sfd, &addr, sizeof(addr));
@@ -108,26 +103,37 @@ FIXTURE_SETUP(tls_basic)
108103
ret = getsockname(sfd, &addr, &len);
109104
ASSERT_EQ(ret, 0);
110105

111-
ret = connect(self->fd, &addr, sizeof(addr));
106+
ret = connect(*fd, &addr, sizeof(addr));
112107
ASSERT_EQ(ret, 0);
113108

114-
self->cfd = accept(sfd, &addr, &len);
115-
ASSERT_GE(self->cfd, 0);
109+
*cfd = accept(sfd, &addr, &len);
110+
ASSERT_GE(*cfd, 0);
116111

117112
close(sfd);
118113

119-
ret = setsockopt(self->fd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls"));
114+
ret = setsockopt(*fd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls"));
120115
if (ret != 0) {
121116
ASSERT_EQ(errno, ENOENT);
122-
self->notls = true;
117+
*notls = true;
123118
printf("Failure setting TCP_ULP, testing without tls\n");
124119
return;
125120
}
126121

127-
ret = setsockopt(self->cfd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls"));
122+
ret = setsockopt(*cfd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls"));
128123
ASSERT_EQ(ret, 0);
129124
}
130125

126+
FIXTURE(tls_basic)
127+
{
128+
int fd, cfd;
129+
bool notls;
130+
};
131+
132+
FIXTURE_SETUP(tls_basic)
133+
{
134+
ulp_sock_pair(_metadata, &self->fd, &self->cfd, &self->notls);
135+
}
136+
131137
FIXTURE_TEARDOWN(tls_basic)
132138
{
133139
close(self->fd);
@@ -199,60 +205,21 @@ FIXTURE_VARIANT_ADD(tls, 13_sm4_ccm)
199205
FIXTURE_SETUP(tls)
200206
{
201207
struct tls_crypto_info_keys tls12;
202-
struct sockaddr_in addr;
203-
socklen_t len;
204-
int sfd, ret;
205-
206-
self->notls = false;
207-
len = sizeof(addr);
208+
int ret;
208209

209210
tls_crypto_info_init(variant->tls_version, variant->cipher_type,
210211
&tls12);
211212

212-
addr.sin_family = AF_INET;
213-
addr.sin_addr.s_addr = htonl(INADDR_ANY);
214-
addr.sin_port = 0;
213+
ulp_sock_pair(_metadata, &self->fd, &self->cfd, &self->notls);
215214

216-
self->fd = socket(AF_INET, SOCK_STREAM, 0);
217-
sfd = socket(AF_INET, SOCK_STREAM, 0);
218-
219-
ret = bind(sfd, &addr, sizeof(addr));
220-
ASSERT_EQ(ret, 0);
221-
ret = listen(sfd, 10);
222-
ASSERT_EQ(ret, 0);
215+
if (self->notls)
216+
return;
223217

224-
ret = getsockname(sfd, &addr, &len);
218+
ret = setsockopt(self->fd, SOL_TLS, TLS_TX, &tls12, tls12.len);
225219
ASSERT_EQ(ret, 0);
226220

227-
ret = connect(self->fd, &addr, sizeof(addr));
221+
ret = setsockopt(self->cfd, SOL_TLS, TLS_RX, &tls12, tls12.len);
228222
ASSERT_EQ(ret, 0);
229-
230-
ret = setsockopt(self->fd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls"));
231-
if (ret != 0) {
232-
self->notls = true;
233-
printf("Failure setting TCP_ULP, testing without tls\n");
234-
}
235-
236-
if (!self->notls) {
237-
ret = setsockopt(self->fd, SOL_TLS, TLS_TX, &tls12,
238-
tls12.len);
239-
ASSERT_EQ(ret, 0);
240-
}
241-
242-
self->cfd = accept(sfd, &addr, &len);
243-
ASSERT_GE(self->cfd, 0);
244-
245-
if (!self->notls) {
246-
ret = setsockopt(self->cfd, IPPROTO_TCP, TCP_ULP, "tls",
247-
sizeof("tls"));
248-
ASSERT_EQ(ret, 0);
249-
250-
ret = setsockopt(self->cfd, SOL_TLS, TLS_RX, &tls12,
251-
tls12.len);
252-
ASSERT_EQ(ret, 0);
253-
}
254-
255-
close(sfd);
256223
}
257224

258225
FIXTURE_TEARDOWN(tls)
@@ -1355,62 +1322,25 @@ TEST(non_established) {
13551322

13561323
TEST(keysizes) {
13571324
struct tls12_crypto_info_aes_gcm_256 tls12;
1358-
struct sockaddr_in addr;
1359-
int sfd, ret, fd, cfd;
1360-
socklen_t len;
1325+
int ret, fd, cfd;
13611326
bool notls;
13621327

1363-
notls = false;
1364-
len = sizeof(addr);
1365-
13661328
memset(&tls12, 0, sizeof(tls12));
13671329
tls12.info.version = TLS_1_2_VERSION;
13681330
tls12.info.cipher_type = TLS_CIPHER_AES_GCM_256;
13691331

1370-
addr.sin_family = AF_INET;
1371-
addr.sin_addr.s_addr = htonl(INADDR_ANY);
1372-
addr.sin_port = 0;
1373-
1374-
fd = socket(AF_INET, SOCK_STREAM, 0);
1375-
sfd = socket(AF_INET, SOCK_STREAM, 0);
1376-
1377-
ret = bind(sfd, &addr, sizeof(addr));
1378-
ASSERT_EQ(ret, 0);
1379-
ret = listen(sfd, 10);
1380-
ASSERT_EQ(ret, 0);
1381-
1382-
ret = getsockname(sfd, &addr, &len);
1383-
ASSERT_EQ(ret, 0);
1384-
1385-
ret = connect(fd, &addr, sizeof(addr));
1386-
ASSERT_EQ(ret, 0);
1387-
1388-
ret = setsockopt(fd, IPPROTO_TCP, TCP_ULP, "tls", sizeof("tls"));
1389-
if (ret != 0) {
1390-
notls = true;
1391-
printf("Failure setting TCP_ULP, testing without tls\n");
1392-
}
1332+
ulp_sock_pair(_metadata, &fd, &cfd, &notls);
13931333

13941334
if (!notls) {
13951335
ret = setsockopt(fd, SOL_TLS, TLS_TX, &tls12,
13961336
sizeof(tls12));
13971337
EXPECT_EQ(ret, 0);
1398-
}
1399-
1400-
cfd = accept(sfd, &addr, &len);
1401-
ASSERT_GE(cfd, 0);
1402-
1403-
if (!notls) {
1404-
ret = setsockopt(cfd, IPPROTO_TCP, TCP_ULP, "tls",
1405-
sizeof("tls"));
1406-
EXPECT_EQ(ret, 0);
14071338

14081339
ret = setsockopt(cfd, SOL_TLS, TLS_RX, &tls12,
14091340
sizeof(tls12));
14101341
EXPECT_EQ(ret, 0);
14111342
}
14121343

1413-
close(sfd);
14141344
close(fd);
14151345
close(cfd);
14161346
}

0 commit comments

Comments
 (0)