@@ -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+
131137FIXTURE_TEARDOWN (tls_basic )
132138{
133139 close (self -> fd );
@@ -199,60 +205,21 @@ FIXTURE_VARIANT_ADD(tls, 13_sm4_ccm)
199205FIXTURE_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
258225FIXTURE_TEARDOWN (tls )
@@ -1355,62 +1322,25 @@ TEST(non_established) {
13551322
13561323TEST (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