@@ -53,7 +53,8 @@ static void test_basic(void)
5353 uint8_t self_public_key [CRYPTO_PUBLIC_KEY_SIZE ];
5454 uint8_t self_secret_key [CRYPTO_SECRET_KEY_SIZE ];
5555 crypto_new_keypair (self_public_key , self_secret_key );
56- TCP_Server * tcp_s = new_TCP_server (logger , USE_IPV6 , NUM_PORTS , ports , self_secret_key , nullptr );
56+ const Network * ns = system_network ();
57+ TCP_Server * tcp_s = new_TCP_server (logger , ns , USE_IPV6 , NUM_PORTS , ports , self_secret_key , nullptr );
5758 ck_assert_msg (tcp_s != nullptr , "Failed to create a TCP relay server." );
5859 ck_assert_msg (tcp_server_listen_count (tcp_s ) == NUM_PORTS ,
5960 "Failed to bind a TCP relay server to all %d attempted ports." , NUM_PORTS );
@@ -65,14 +66,14 @@ static void test_basic(void)
6566
6667 // Check all opened ports for connectivity.
6768 for (uint8_t i = 0 ; i < NUM_PORTS ; i ++ ) {
68- sock = net_socket (net_family_ipv6 , TOX_SOCK_STREAM , TOX_PROTO_TCP );
69+ sock = net_socket (ns , net_family_ipv6 , TOX_SOCK_STREAM , TOX_PROTO_TCP );
6970 localhost .port = net_htons (ports [i ]);
7071 bool ret = net_connect (logger , sock , & localhost );
7172 ck_assert_msg (ret , "Failed to connect to created TCP relay server on port %d (%d)." , ports [i ], errno );
7273
7374 // Leave open one connection for the next test.
7475 if (i + 1 < NUM_PORTS ) {
75- kill_sock (sock );
76+ kill_sock (ns , sock );
7677 }
7778 }
7879
@@ -99,21 +100,21 @@ static void test_basic(void)
99100 "encrypt_data() call failed." );
100101
101102 // Sending the handshake
102- ck_assert_msg (net_send (logger , sock , handshake , TCP_CLIENT_HANDSHAKE_SIZE - 1 ,
103+ ck_assert_msg (net_send (ns , logger , sock , handshake , TCP_CLIENT_HANDSHAKE_SIZE - 1 ,
103104 & localhost ) == TCP_CLIENT_HANDSHAKE_SIZE - 1 ,
104105 "An attempt to send the initial handshake minus last byte failed." );
105106
106107 do_TCP_server_delay (tcp_s , mono_time , 50 );
107108
108- ck_assert_msg (net_send (logger , sock , handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1 ), 1 , & localhost ) == 1 ,
109+ ck_assert_msg (net_send (ns , logger , sock , handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1 ), 1 , & localhost ) == 1 ,
109110 "The attempt to send the last byte of handshake failed." );
110111
111112 do_TCP_server_delay (tcp_s , mono_time , 50 );
112113
113114 // Receiving server response and decrypting it
114115 uint8_t response [TCP_SERVER_HANDSHAKE_SIZE ];
115116 uint8_t response_plain [TCP_HANDSHAKE_PLAIN_SIZE ];
116- ck_assert_msg (net_recv (logger , sock , response , TCP_SERVER_HANDSHAKE_SIZE , & localhost ) == TCP_SERVER_HANDSHAKE_SIZE ,
117+ ck_assert_msg (net_recv (ns , logger , sock , response , TCP_SERVER_HANDSHAKE_SIZE , & localhost ) == TCP_SERVER_HANDSHAKE_SIZE ,
117118 "Could/did not receive a server response to the initial handshake." );
118119 ret = decrypt_data (self_public_key , f_secret_key , response , response + CRYPTO_NONCE_SIZE ,
119120 TCP_SERVER_HANDSHAKE_SIZE - CRYPTO_NONCE_SIZE , response_plain );
@@ -142,7 +143,7 @@ static void test_basic(void)
142143 msg_length = sizeof (r_req ) - i ;
143144 }
144145
145- ck_assert_msg (net_send (logger , sock , r_req + i , msg_length , & localhost ) == msg_length ,
146+ ck_assert_msg (net_send (ns , logger , sock , r_req + i , msg_length , & localhost ) == msg_length ,
146147 "Failed to send request after completing the handshake." );
147148 i += msg_length ;
148149
@@ -153,7 +154,7 @@ static void test_basic(void)
153154
154155 // Receiving the second response and verifying its validity
155156 uint8_t packet_resp [4096 ];
156- int recv_data_len = net_recv (logger , sock , packet_resp , 2 + 2 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_MAC_SIZE , & localhost );
157+ int recv_data_len = net_recv (ns , logger , sock , packet_resp , 2 + 2 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_MAC_SIZE , & localhost );
157158 ck_assert_msg (recv_data_len == 2 + 2 + CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_MAC_SIZE ,
158159 "Failed to receive server response to request. %d" , recv_data_len );
159160 memcpy (& size , packet_resp , 2 );
@@ -171,7 +172,7 @@ static void test_basic(void)
171172 ck_assert_msg (pk_equal (packet_resp_plain + 2 , f_public_key ), "Server sent the wrong public key." );
172173
173174 // Closing connections.
174- kill_sock (sock );
175+ kill_sock (ns , sock );
175176 kill_TCP_server (tcp_s );
176177
177178 logger_kill (logger );
@@ -180,17 +181,19 @@ static void test_basic(void)
180181
181182struct sec_TCP_con {
182183 Socket sock ;
184+ const Network * ns ;
183185 uint8_t public_key [CRYPTO_PUBLIC_KEY_SIZE ];
184186 uint8_t recv_nonce [CRYPTO_NONCE_SIZE ];
185187 uint8_t sent_nonce [CRYPTO_NONCE_SIZE ];
186188 uint8_t shared_key [CRYPTO_SHARED_KEY_SIZE ];
187189};
188190
189- static struct sec_TCP_con * new_TCP_con (const Logger * logger , TCP_Server * tcp_s , Mono_Time * mono_time )
191+ static struct sec_TCP_con * new_TCP_con (const Logger * logger , const Network * ns , TCP_Server * tcp_s , Mono_Time * mono_time )
190192{
191193 struct sec_TCP_con * sec_c = (struct sec_TCP_con * )malloc (sizeof (struct sec_TCP_con ));
192194 ck_assert (sec_c != nullptr );
193- Socket sock = net_socket (net_family_ipv6 , TOX_SOCK_STREAM , TOX_PROTO_TCP );
195+ sec_c -> ns = ns ;
196+ Socket sock = net_socket (ns , net_family_ipv6 , TOX_SOCK_STREAM , TOX_PROTO_TCP );
194197
195198 IP_Port localhost ;
196199 localhost .ip = get_loopback ();
@@ -216,20 +219,20 @@ static struct sec_TCP_con *new_TCP_con(const Logger *logger, TCP_Server *tcp_s,
216219 ck_assert_msg (ret == TCP_CLIENT_HANDSHAKE_SIZE - (CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_NONCE_SIZE ),
217220 "Failed to encrypt the outgoing handshake." );
218221
219- ck_assert_msg (net_send (logger , sock , handshake , TCP_CLIENT_HANDSHAKE_SIZE - 1 ,
222+ ck_assert_msg (net_send (ns , logger , sock , handshake , TCP_CLIENT_HANDSHAKE_SIZE - 1 ,
220223 & localhost ) == TCP_CLIENT_HANDSHAKE_SIZE - 1 ,
221224 "Failed to send the first portion of the handshake to the TCP relay server." );
222225
223226 do_TCP_server_delay (tcp_s , mono_time , 50 );
224227
225- ck_assert_msg (net_send (logger , sock , handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1 ), 1 , & localhost ) == 1 ,
228+ ck_assert_msg (net_send (ns , logger , sock , handshake + (TCP_CLIENT_HANDSHAKE_SIZE - 1 ), 1 , & localhost ) == 1 ,
226229 "Failed to send last byte of handshake." );
227230
228231 do_TCP_server_delay (tcp_s , mono_time , 50 );
229232
230233 uint8_t response [TCP_SERVER_HANDSHAKE_SIZE ];
231234 uint8_t response_plain [TCP_HANDSHAKE_PLAIN_SIZE ];
232- ck_assert_msg (net_recv (logger , sock , response , TCP_SERVER_HANDSHAKE_SIZE , & localhost ) == TCP_SERVER_HANDSHAKE_SIZE ,
235+ ck_assert_msg (net_recv (sec_c -> ns , logger , sock , response , TCP_SERVER_HANDSHAKE_SIZE , & localhost ) == TCP_SERVER_HANDSHAKE_SIZE ,
233236 "Failed to receive server handshake response." );
234237 ret = decrypt_data (tcp_server_public_key (tcp_s ), f_secret_key , response , response + CRYPTO_NONCE_SIZE ,
235238 TCP_SERVER_HANDSHAKE_SIZE - CRYPTO_NONCE_SIZE , response_plain );
@@ -242,7 +245,7 @@ static struct sec_TCP_con *new_TCP_con(const Logger *logger, TCP_Server *tcp_s,
242245
243246static void kill_TCP_con (struct sec_TCP_con * con )
244247{
245- kill_sock (con -> sock );
248+ kill_sock (con -> ns , con -> sock );
246249 free (con );
247250}
248251
@@ -265,7 +268,7 @@ static int write_packet_TCP_test_connection(const Logger *logger, struct sec_TCP
265268 localhost .ip = get_loopback ();
266269 localhost .port = 0 ;
267270
268- ck_assert_msg (net_send (logger , con -> sock , packet , SIZEOF_VLA (packet ), & localhost ) == SIZEOF_VLA (packet ),
271+ ck_assert_msg (net_send (con -> ns , logger , con -> sock , packet , SIZEOF_VLA (packet ), & localhost ) == SIZEOF_VLA (packet ),
269272 "Failed to send a packet." );
270273 return 0 ;
271274}
@@ -276,7 +279,7 @@ static int read_packet_sec_TCP(const Logger *logger, struct sec_TCP_con *con, ui
276279 localhost .ip = get_loopback ();
277280 localhost .port = 0 ;
278281
279- int rlen = net_recv (logger , con -> sock , data , length , & localhost );
282+ int rlen = net_recv (con -> ns , logger , con -> sock , data , length , & localhost );
280283 ck_assert_msg (rlen == length , "Did not receive packet of correct length. Wanted %i, instead got %i" , length , rlen );
281284 rlen = decrypt_data_symmetric (con -> shared_key , con -> recv_nonce , data + 2 , length - 2 , data );
282285 ck_assert_msg (rlen != -1 , "Failed to decrypt a received packet from the Relay server." );
@@ -288,17 +291,18 @@ static void test_some(void)
288291{
289292 Mono_Time * mono_time = mono_time_new ();
290293 Logger * logger = logger_new ();
294+ const Network * ns = system_network ();
291295
292296 uint8_t self_public_key [CRYPTO_PUBLIC_KEY_SIZE ];
293297 uint8_t self_secret_key [CRYPTO_SECRET_KEY_SIZE ];
294298 crypto_new_keypair (self_public_key , self_secret_key );
295- TCP_Server * tcp_s = new_TCP_server (logger , USE_IPV6 , NUM_PORTS , ports , self_secret_key , nullptr );
299+ TCP_Server * tcp_s = new_TCP_server (logger , ns , USE_IPV6 , NUM_PORTS , ports , self_secret_key , nullptr );
296300 ck_assert_msg (tcp_s != nullptr , "Failed to create TCP relay server" );
297301 ck_assert_msg (tcp_server_listen_count (tcp_s ) == NUM_PORTS , "Failed to bind to all ports." );
298302
299- struct sec_TCP_con * con1 = new_TCP_con (logger , tcp_s , mono_time );
300- struct sec_TCP_con * con2 = new_TCP_con (logger , tcp_s , mono_time );
301- struct sec_TCP_con * con3 = new_TCP_con (logger , tcp_s , mono_time );
303+ struct sec_TCP_con * con1 = new_TCP_con (logger , ns , tcp_s , mono_time );
304+ struct sec_TCP_con * con2 = new_TCP_con (logger , ns , tcp_s , mono_time );
305+ struct sec_TCP_con * con3 = new_TCP_con (logger , ns , tcp_s , mono_time );
302306
303307 uint8_t requ_p [1 + CRYPTO_PUBLIC_KEY_SIZE ];
304308 requ_p [0 ] = TCP_PACKET_ROUTING_REQUEST ;
@@ -480,7 +484,8 @@ static void test_client(void)
480484 uint8_t self_public_key [CRYPTO_PUBLIC_KEY_SIZE ];
481485 uint8_t self_secret_key [CRYPTO_SECRET_KEY_SIZE ];
482486 crypto_new_keypair (self_public_key , self_secret_key );
483- TCP_Server * tcp_s = new_TCP_server (logger , USE_IPV6 , NUM_PORTS , ports , self_secret_key , nullptr );
487+ const Network * ns = system_network ();
488+ TCP_Server * tcp_s = new_TCP_server (logger , ns , USE_IPV6 , NUM_PORTS , ports , self_secret_key , nullptr );
484489 ck_assert_msg (tcp_s != nullptr , "Failed to create a TCP relay server." );
485490 ck_assert_msg (tcp_server_listen_count (tcp_s ) == NUM_PORTS , "Failed to bind the relay server to all ports." );
486491
@@ -492,7 +497,7 @@ static void test_client(void)
492497 ip_port_tcp_s .port = net_htons (ports [random_u32 () % NUM_PORTS ]);
493498 ip_port_tcp_s .ip = get_loopback ();
494499
495- TCP_Client_Connection * conn = new_TCP_connection (logger , mono_time , & ip_port_tcp_s , self_public_key , f_public_key ,
500+ TCP_Client_Connection * conn = new_TCP_connection (logger , mono_time , ns , & ip_port_tcp_s , self_public_key , f_public_key ,
496501 f_secret_key , nullptr );
497502 do_TCP_connection (logger , mono_time , conn , nullptr );
498503 c_sleep (50 );
@@ -527,7 +532,7 @@ static void test_client(void)
527532 uint8_t f2_secret_key [CRYPTO_SECRET_KEY_SIZE ];
528533 crypto_new_keypair (f2_public_key , f2_secret_key );
529534 ip_port_tcp_s .port = net_htons (ports [random_u32 () % NUM_PORTS ]);
530- TCP_Client_Connection * conn2 = new_TCP_connection (logger , mono_time , & ip_port_tcp_s , self_public_key , f2_public_key ,
535+ TCP_Client_Connection * conn2 = new_TCP_connection (logger , mono_time , ns , & ip_port_tcp_s , self_public_key , f2_public_key ,
531536 f2_secret_key , nullptr );
532537
533538 // The client should call this function (defined earlier) during the routing process.
@@ -604,6 +609,7 @@ static void test_client_invalid(void)
604609{
605610 Mono_Time * mono_time = mono_time_new ();
606611 Logger * logger = logger_new ();
612+ const Network * ns = system_network ();
607613
608614 uint8_t self_public_key [CRYPTO_PUBLIC_KEY_SIZE ];
609615 uint8_t self_secret_key [CRYPTO_SECRET_KEY_SIZE ];
@@ -616,8 +622,8 @@ static void test_client_invalid(void)
616622
617623 ip_port_tcp_s .port = net_htons (ports [random_u32 () % NUM_PORTS ]);
618624 ip_port_tcp_s .ip = get_loopback ();
619- TCP_Client_Connection * conn = new_TCP_connection (logger , mono_time , & ip_port_tcp_s , self_public_key , f_public_key ,
620- f_secret_key , nullptr );
625+ TCP_Client_Connection * conn = new_TCP_connection (logger , mono_time , ns , & ip_port_tcp_s ,
626+ self_public_key , f_public_key , f_secret_key , nullptr );
621627
622628 // Run the client's main loop but not the server.
623629 mono_time_update (mono_time );
@@ -676,22 +682,23 @@ static void test_tcp_connection(void)
676682{
677683 Mono_Time * mono_time = mono_time_new ();
678684 Logger * logger = logger_new ();
685+ const Network * ns = system_network ();
679686
680687 tcp_data_callback_called = 0 ;
681688 uint8_t self_public_key [CRYPTO_PUBLIC_KEY_SIZE ];
682689 uint8_t self_secret_key [CRYPTO_SECRET_KEY_SIZE ];
683690 crypto_new_keypair (self_public_key , self_secret_key );
684- TCP_Server * tcp_s = new_TCP_server (logger , USE_IPV6 , NUM_PORTS , ports , self_secret_key , nullptr );
691+ TCP_Server * tcp_s = new_TCP_server (logger , ns , USE_IPV6 , NUM_PORTS , ports , self_secret_key , nullptr );
685692 ck_assert_msg (pk_equal (tcp_server_public_key (tcp_s ), self_public_key ), "Wrong public key" );
686693
687694 TCP_Proxy_Info proxy_info ;
688695 proxy_info .proxy_type = TCP_PROXY_NONE ;
689696 crypto_new_keypair (self_public_key , self_secret_key );
690- TCP_Connections * tc_1 = new_tcp_connections (logger , mono_time , self_secret_key , & proxy_info );
697+ TCP_Connections * tc_1 = new_tcp_connections (logger , mono_time , ns , self_secret_key , & proxy_info );
691698 ck_assert_msg (pk_equal (tcp_connections_public_key (tc_1 ), self_public_key ), "Wrong public key" );
692699
693700 crypto_new_keypair (self_public_key , self_secret_key );
694- TCP_Connections * tc_2 = new_tcp_connections (logger , mono_time , self_secret_key , & proxy_info );
701+ TCP_Connections * tc_2 = new_tcp_connections (logger , mono_time , ns , self_secret_key , & proxy_info );
695702 ck_assert_msg (pk_equal (tcp_connections_public_key (tc_2 ), self_public_key ), "Wrong public key" );
696703
697704 IP_Port ip_port_tcp_s ;
@@ -782,24 +789,25 @@ static void test_tcp_connection2(void)
782789{
783790 Mono_Time * mono_time = mono_time_new ();
784791 Logger * logger = logger_new ();
792+ const Network * ns = system_network ();
785793
786794 tcp_oobdata_callback_called = 0 ;
787795 tcp_data_callback_called = 0 ;
788796
789797 uint8_t self_public_key [CRYPTO_PUBLIC_KEY_SIZE ];
790798 uint8_t self_secret_key [CRYPTO_SECRET_KEY_SIZE ];
791799 crypto_new_keypair (self_public_key , self_secret_key );
792- TCP_Server * tcp_s = new_TCP_server (logger , USE_IPV6 , NUM_PORTS , ports , self_secret_key , nullptr );
800+ TCP_Server * tcp_s = new_TCP_server (logger , ns , USE_IPV6 , NUM_PORTS , ports , self_secret_key , nullptr );
793801 ck_assert_msg (pk_equal (tcp_server_public_key (tcp_s ), self_public_key ), "Wrong public key" );
794802
795803 TCP_Proxy_Info proxy_info ;
796804 proxy_info .proxy_type = TCP_PROXY_NONE ;
797805 crypto_new_keypair (self_public_key , self_secret_key );
798- TCP_Connections * tc_1 = new_tcp_connections (logger , mono_time , self_secret_key , & proxy_info );
806+ TCP_Connections * tc_1 = new_tcp_connections (logger , mono_time , ns , self_secret_key , & proxy_info );
799807 ck_assert_msg (pk_equal (tcp_connections_public_key (tc_1 ), self_public_key ), "Wrong public key" );
800808
801809 crypto_new_keypair (self_public_key , self_secret_key );
802- TCP_Connections * tc_2 = new_tcp_connections (logger , mono_time , self_secret_key , & proxy_info );
810+ TCP_Connections * tc_2 = new_tcp_connections (logger , mono_time , ns , self_secret_key , & proxy_info );
803811 ck_assert_msg (pk_equal (tcp_connections_public_key (tc_2 ), self_public_key ), "Wrong public key" );
804812
805813 IP_Port ip_port_tcp_s ;
0 commit comments